From 6f58f4303613821b4e9179275eb7f0687d4ffce5 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 17:14:31 +0800 Subject: [PATCH 01/44] Both way to test the getter interface working correctly --- packages/ws-client/package.json | 7 +++---- packages/ws-client/tests/event.test.js | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 59c67b94..40311830 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -13,12 +13,11 @@ "scripts": { "test": "ava --verbose", "prepare": "npm run test", - "test:evt": "DEBUG=jsonql-ws-* ava --verbose ./tests/event.test.js", + "test:evt": "ava --verbose ./tests/event.test.js", "test:node": "DEBUG=jsonql-ws-* ava --verbose ./tests/test-node.test.js", "test:opt": "DEBUG=jsonql-ws-* ava --verbose ./tests/options.test.js", "contract": "node ./node_modules/jsonql-contract/cmd.js configFile ./tests/fixtures/contract-config.js", - "contract:auth": "node ./node_modules/jsonql-contract/cmd.js configFile ./tests/fixtures/contract-config-auth.js", - "test:evt": "DEBUG=jsonql-ws-* ava ./tests/event.test.js" + "contract:auth": "node ./node_modules/jsonql-contract/cmd.js configFile ./tests/fixtures/contract-config-auth.js" }, "keywords": [ "jsonql", @@ -50,7 +49,7 @@ "node": ">=8" }, "dependencies": { - "jsonql-constants": "^1.8.7", + "jsonql-constants": "^1.8.8", "jsonql-errors": "^1.1.3", "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", diff --git a/packages/ws-client/tests/event.test.js b/packages/ws-client/tests/event.test.js index 0b409e73..688d9567 100644 --- a/packages/ws-client/tests/event.test.js +++ b/packages/ws-client/tests/event.test.js @@ -41,7 +41,7 @@ test.cb(`Test the object getter to return a function to create a new on interfac const getter = function() { return function(value, callback) { - console.log(value, callback) + // console.log(value, callback) if (typeof callback === 'function') { callback(value) } @@ -52,8 +52,27 @@ test.cb(`Test the object getter to return a function to create a new on interfac obj = objDefineProps(obj, 'on', setter, getter) obj.on('yes', function cb(value) { - t.is('yes', value) + t.is('yes', value, 'yes is the value') t.end() }) +}) + +test(`Test another way to pass parameters to the getter then try to get a value back`, t => { + + const setter = function(value) { + console.log(value) + } + + const getter = function() { + return function(...args) { + return args.reduce((a, b) => a + b, 0) + } + } + + let obj = {} + obj = objDefineProps(obj, 'add', setter, getter) + + const result = obj.add(1,2) + t.is(3, result, '1+2=3') }) -- Gitee From f8b224254cd5822d43483ce60f42143a721b18ee Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 21:17:22 +0800 Subject: [PATCH 02/44] setup the new callback api --- packages/ws-client/package.json | 2 +- .../ws-client/src/core/setup-callback-api.js | 6 ++ packages/ws-client/src/core/setup-resolver.js | 35 ++--------- packages/ws-client/src/core/setup-send.js | 63 +++++++++++++++++++ 4 files changed, 74 insertions(+), 32 deletions(-) create mode 100644 packages/ws-client/src/core/setup-callback-api.js create mode 100644 packages/ws-client/src/core/setup-send.js diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 40311830..771a1041 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.1.3", + "version": "1.1.4", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", diff --git a/packages/ws-client/src/core/setup-callback-api.js b/packages/ws-client/src/core/setup-callback-api.js new file mode 100644 index 00000000..d1a8465a --- /dev/null +++ b/packages/ws-client/src/core/setup-callback-api.js @@ -0,0 +1,6 @@ +// @TODO using the obj.on syntax to do the same thing + +export function setupCallbackApi() { + + +} diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index f3f895e5..ef43ffc1 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -1,4 +1,5 @@ // break up the original setup resolver method here +import { JsonqlValidationError, finalCatch } from 'jsonql-errors' import { ERROR_TYPE, DATA_KEY, @@ -20,11 +21,13 @@ import { } from '../options/constants' import { validateAsync } from 'jsonql-params-validator' import { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module' -import { actionCall } from './action-call' + import { respondHandler } from './respond-handler' import { getDebug, isFunc } from '../utils' const debugFn = getDebug('setup-resolver') +import { setupSend } from './setup-send' + /** * The first one in the chain * @return {array} @@ -93,36 +96,6 @@ const setupOnError = (fn, ee, namespace, resolverName, params) => [ params ] -// pairing with the server vesrion SEND_MSG_PROP_NAME -// last of the chain so only return the resolver (fn) -const setupSend = (fn, ee, namespace, resolverName, params) => ( - objDefineProps(fn, SEND_MSG_PROP_NAME, function(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]) - ee.$call( - createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), - [JsonqlValidationError(resolverName, result[ERROR_KEY])] - ) - } else { - // there is no return only an action call - actionCall(ee, namespace, resolverName, messagePayload) - } - }) - .catch(err => { - debugFn(`error after validateAsync`, err) - ee.$call( - createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), - [JsonqlValidationError(resolverName, err)] - ) - }) - }) -) /** * Add extra property to the resolver diff --git a/packages/ws-client/src/core/setup-send.js b/packages/ws-client/src/core/setup-send.js new file mode 100644 index 00000000..5627cc06 --- /dev/null +++ b/packages/ws-client/src/core/setup-send.js @@ -0,0 +1,63 @@ +import { JsonqlValidationError, finalCatch } from 'jsonql-errors' +import { + ERROR_TYPE, + DATA_KEY, + ERROR_KEY, + ON_ERROR_PROP_NAME, + ON_MESSAGE_PROP_NAME, + ON_RESULT_PROP_NAME, + SEND_MSG_PROP_NAME, + LOGIN_EVENT_NAME, + ON_READY_PROP_NAME, + LOGOUT_EVENT_NAME +} from 'jsonql-constants' +import { + EMIT_EVT, + NOT_ALLOW_OP, + UNKNOWN_RESULT, + MY_NAMESPACE, + EXPECT_FUNC_ERR +} from '../options/constants' +import { validateAsync } from 'jsonql-params-validator' +import { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module' +import { actionCall } from './action-call' + +import { getDebug, isFunc } 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) => ( + objDefineProps(fn, SEND_MSG_PROP_NAME, function sendSetter(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]) + ee.$call( + createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + [new JsonqlValidationError(resolverName, result[ERROR_KEY])] + ) + } else { + // return it just for the catch to work - if any + return actionCall(ee, namespace, resolverName, messagePayload) + } + }) + .catch(err => { + debugFn(`error after validateAsync`, err) + ee.$call( + createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + [new JsonqlValidationError(resolverName, err)] + ) + }) + }, function sendGetter() { // add in 1.1.4 + return function sendGetterAction(...args) { + return validateAsync(args, params.params, true) + .then(_args => actionCall(ee, namespace, resolverName, _args)) + .catch(finalCatch) + } + }) +) -- Gitee From eb7f451921011a344faa8d264ec4c5780983eed9 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 21:21:11 +0800 Subject: [PATCH 03/44] jsonql-ws-client to 1.1.4 --- packages/ws-client/src/core/setup-resolver.js | 8 +++----- packages/ws-client/src/core/setup-send.js | 14 +------------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index ef43ffc1..c389379c 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -7,7 +7,6 @@ import { ON_ERROR_PROP_NAME, ON_MESSAGE_PROP_NAME, ON_RESULT_PROP_NAME, - SEND_MSG_PROP_NAME, LOGIN_EVENT_NAME, ON_READY_PROP_NAME, LOGOUT_EVENT_NAME @@ -16,10 +15,9 @@ import { EMIT_EVT, NOT_ALLOW_OP, UNKNOWN_RESULT, - MY_NAMESPACE, - EXPECT_FUNC_ERR + MY_NAMESPACE } from '../options/constants' -import { validateAsync } from 'jsonql-params-validator' + import { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module' import { respondHandler } from './respond-handler' @@ -96,7 +94,6 @@ const setupOnError = (fn, ee, namespace, resolverName, params) => [ params ] - /** * Add extra property to the resolver * @param {string} namespace where this belongs @@ -104,6 +101,7 @@ const setupOnError = (fn, ee, namespace, resolverName, params) => [ * @param {object} params from contract * @param {function} fn resolver function * @param {object} ee EventEmitter + * @TODO need a new parameter here * @return {function} resolver */ export function setupResolver(namespace, resolverName, params, fn, ee) { diff --git a/packages/ws-client/src/core/setup-send.js b/packages/ws-client/src/core/setup-send.js index 5627cc06..e006170c 100644 --- a/packages/ws-client/src/core/setup-send.js +++ b/packages/ws-client/src/core/setup-send.js @@ -4,20 +4,8 @@ import { DATA_KEY, ERROR_KEY, ON_ERROR_PROP_NAME, - ON_MESSAGE_PROP_NAME, - ON_RESULT_PROP_NAME, - SEND_MSG_PROP_NAME, - LOGIN_EVENT_NAME, - ON_READY_PROP_NAME, - LOGOUT_EVENT_NAME + SEND_MSG_PROP_NAME } from 'jsonql-constants' -import { - EMIT_EVT, - NOT_ALLOW_OP, - UNKNOWN_RESULT, - MY_NAMESPACE, - EXPECT_FUNC_ERR -} from '../options/constants' import { validateAsync } from 'jsonql-params-validator' import { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module' import { actionCall } from './action-call' -- Gitee From 95a43613702770dc9e06592a695dcd6958341142 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 21:26:06 +0800 Subject: [PATCH 04/44] The new send interface is working --- .../@jsonql/ws/dist/jsonql-ws-client.cjs.js | 7808 ++++++++++++++++- .../ws/dist/jsonql-ws-client.cjs.js.map | 2 +- .../@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 6 +- .../@jsonql/ws/tests/ws-client-basic.test.js | 10 +- 5 files changed, 7815 insertions(+), 13 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 67093144..f48f98fd 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,7808 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",SOCKET_IO=JS_WS_SOCKET_IO_NAME,MISSING_PROP_ERR="Missing property in contract!",EXPECT_FUNC_ERR="Expect a function!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace";function isNull(e){return null===e}var 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("")}function isUndefined(e){return void 0===e}var boolTag="[object Boolean]";function isBoolean(e){return!0===e||!1===e||isObjectLike(e)&&baseGetTag(e)==boolTag}var 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}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$1="[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$1]=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(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function keys(e){return isArrayLike(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);++l0){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))},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)},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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)}}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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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=function(e){return checkIsArray(e)?e:[e]},inArray=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(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(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 constructConfigFn(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 constructConfigFn.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),isKeyInObject$1=isKeyInObject,inArray$1=function(e,r){return!!e.filter((function(e){return e===r})).length},toArray$1=function(e){return isArray(e)?e:[e]},isKeyInObject$2=function(e,r){var t=Object.keys(e);return inArray$1(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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$1(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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(e,r);return!1===n&&void 0!==o?e:(Object.defineProperty(e,r,{value:t,writable:n}),e)}function checkIsContract(e){return isPlainObject(e)&&(isKeyInObject$2(e,QUERY_NAME)||isKeyInObject$2(e,MUTATION_NAME)||isKeyInObject$2(e,SOCKET_NAME))}function extractSocketPart(e){return!!isKeyInObject$2(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 formatPayload=function(e){var r;return(r={})[QUERY_ARG_NAME]=e,r};function getNameFromPayload(e){return Object.keys(e)[0]}function createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract,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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$5=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$5("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$5("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$5("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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 isKeyInObject$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)},debugFn$6=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$6("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$6("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$6("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$6("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$6("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$6("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$6("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$6("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$6("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$6("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$7=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +'use strict'; + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var debug$2 = _interopDefault(require('debug')); +require('fs'); +require('path'); +var WebSocket = _interopDefault(require('ws')); + +var global$1 = (typeof global !== "undefined" ? global : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}); + +/** + * This is a custom error to throw when server throw a 406 + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ +var Jsonql406Error = /*@__PURE__*/(function (Error) { + function Jsonql406Error() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + // We can't access the static name from an instance + // but we can do it like this + this.className = Jsonql406Error.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, Jsonql406Error); + } + } + + if ( Error ) Jsonql406Error.__proto__ = Error; + Jsonql406Error.prototype = Object.create( Error && Error.prototype ); + Jsonql406Error.prototype.constructor = Jsonql406Error; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 406; + }; + + staticAccessors.name.get = function () { + return 'Jsonql406Error'; + }; + + Object.defineProperties( Jsonql406Error, staticAccessors ); + + return Jsonql406Error; +}(Error)); + +/** + * This is a custom error to throw when server throw a 500 + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ +var Jsonql500Error = /*@__PURE__*/(function (Error) { + function Jsonql500Error() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = Jsonql500Error.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, Jsonql500Error); + } + } + + if ( Error ) Jsonql500Error.__proto__ = Error; + Jsonql500Error.prototype = Object.create( Error && Error.prototype ); + Jsonql500Error.prototype.constructor = Jsonql500Error; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 500; + }; + + staticAccessors.name.get = function () { + return 'Jsonql500Error'; + }; + + Object.defineProperties( Jsonql500Error, staticAccessors ); + + return Jsonql500Error; +}(Error)); + +/** + * This is a custom error to throw when pass credential but fail + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ +var JsonqlAuthorisationError = /*@__PURE__*/(function (Error) { + function JsonqlAuthorisationError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlAuthorisationError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlAuthorisationError); + } + } + + if ( Error ) JsonqlAuthorisationError.__proto__ = Error; + JsonqlAuthorisationError.prototype = Object.create( Error && Error.prototype ); + JsonqlAuthorisationError.prototype.constructor = JsonqlAuthorisationError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 401; + }; + + staticAccessors.name.get = function () { + return 'JsonqlAuthorisationError'; + }; + + Object.defineProperties( JsonqlAuthorisationError, staticAccessors ); + + return JsonqlAuthorisationError; +}(Error)); + +/** + * This is a custom error when not supply the credential and try to get contract + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ +var JsonqlContractAuthError = /*@__PURE__*/(function (Error) { + function JsonqlContractAuthError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlContractAuthError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlContractAuthError); + } + } + + if ( Error ) JsonqlContractAuthError.__proto__ = Error; + JsonqlContractAuthError.prototype = Object.create( Error && Error.prototype ); + JsonqlContractAuthError.prototype.constructor = JsonqlContractAuthError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 401; + }; + + staticAccessors.name.get = function () { + return 'JsonqlContractAuthError'; + }; + + Object.defineProperties( JsonqlContractAuthError, staticAccessors ); + + return JsonqlContractAuthError; +}(Error)); + +/** + * This is a custom error to throw when the resolver throw error and capture inside the middleware + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ +var JsonqlResolverAppError = /*@__PURE__*/(function (Error) { + function JsonqlResolverAppError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlResolverAppError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlResolverAppError); + } + } + + if ( Error ) JsonqlResolverAppError.__proto__ = Error; + JsonqlResolverAppError.prototype = Object.create( Error && Error.prototype ); + JsonqlResolverAppError.prototype.constructor = JsonqlResolverAppError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 500; + }; + + staticAccessors.name.get = function () { + return 'JsonqlResolverAppError'; + }; + + Object.defineProperties( JsonqlResolverAppError, staticAccessors ); + + return JsonqlResolverAppError; +}(Error)); + +/** + * some time it's hard to tell where the error is throw from + * because client server throw the same, therefore this util fn + * to add a property to the error object to tell if it's throw + * from client or server + * + */ + +var isBrowser = function () { + try { + if (window || document) { + return true; + } + } catch(e) {} + return false; +}; + +var isNode = function () { + try { + if (!isBrowser() && global$1) { + return true; + } + } catch(e) {} + return false; +}; + +function whereAmI() { + if (isBrowser()) { + return 'browser' + } + if (isNode()) { + return 'node' + } + return 'unknown' +} + +// The base Error of all + +var JsonqlBaseError = /*@__PURE__*/(function (Error) { + function JsonqlBaseError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + } + + if ( Error ) JsonqlBaseError.__proto__ = Error; + JsonqlBaseError.prototype = Object.create( Error && Error.prototype ); + JsonqlBaseError.prototype.constructor = JsonqlBaseError; + + JsonqlBaseError.where = function where () { + return whereAmI() + }; + + return JsonqlBaseError; +}(Error)); + +/** + * This is a custom error to throw when could not find the resolver + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ +var JsonqlResolverNotFoundError = /*@__PURE__*/(function (JsonqlBaseError) { + function JsonqlResolverNotFoundError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + JsonqlBaseError.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlResolverNotFoundError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlResolverNotFoundError); + } + } + + if ( JsonqlBaseError ) JsonqlResolverNotFoundError.__proto__ = JsonqlBaseError; + JsonqlResolverNotFoundError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); + JsonqlResolverNotFoundError.prototype.constructor = JsonqlResolverNotFoundError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 404; + }; + + staticAccessors.name.get = function () { + return 'JsonqlResolverNotFoundError'; + }; + + Object.defineProperties( JsonqlResolverNotFoundError, staticAccessors ); + + return JsonqlResolverNotFoundError; +}(JsonqlBaseError)); + +// this get throw from within the checkOptions when run through the enum failed +var JsonqlEnumError = /*@__PURE__*/(function (Error) { + function JsonqlEnumError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlEnumError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlEnumError); + } + } + + if ( Error ) JsonqlEnumError.__proto__ = Error; + JsonqlEnumError.prototype = Object.create( Error && Error.prototype ); + JsonqlEnumError.prototype.constructor = JsonqlEnumError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlEnumError'; + }; + + Object.defineProperties( JsonqlEnumError, staticAccessors ); + + return JsonqlEnumError; +}(Error)); + +// this will throw from inside the checkOptions +var JsonqlTypeError = /*@__PURE__*/(function (Error) { + function JsonqlTypeError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlTypeError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlTypeError); + } + } + + if ( Error ) JsonqlTypeError.__proto__ = Error; + JsonqlTypeError.prototype = Object.create( Error && Error.prototype ); + JsonqlTypeError.prototype.constructor = JsonqlTypeError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlTypeError'; + }; + + Object.defineProperties( JsonqlTypeError, staticAccessors ); + + return JsonqlTypeError; +}(Error)); + +// allow supply a custom checker function +// if that failed then we throw this error +var JsonqlCheckerError = /*@__PURE__*/(function (Error) { + function JsonqlCheckerError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlCheckerError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlCheckerError); + } + } + + if ( Error ) JsonqlCheckerError.__proto__ = Error; + JsonqlCheckerError.prototype = Object.create( Error && Error.prototype ); + JsonqlCheckerError.prototype.constructor = JsonqlCheckerError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlCheckerError'; + }; + + Object.defineProperties( JsonqlCheckerError, staticAccessors ); + + return JsonqlCheckerError; +}(Error)); + +// custom validation error class +// when validaton failed +var JsonqlValidationError$1 = /*@__PURE__*/(function (JsonqlBaseError) { + function JsonqlValidationError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + JsonqlBaseError.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlValidationError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlValidationError); + } + } + + if ( JsonqlBaseError ) JsonqlValidationError.__proto__ = JsonqlBaseError; + JsonqlValidationError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); + JsonqlValidationError.prototype.constructor = JsonqlValidationError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlValidationError'; + }; + + Object.defineProperties( JsonqlValidationError, staticAccessors ); + + return JsonqlValidationError; +}(JsonqlBaseError)); + +// the core stuff to id if it's calling with jsonql +var DATA_KEY = 'data'; +var ERROR_KEY = 'error'; + +var JSONQL_PATH = 'jsonql'; + +// export const INDEX = 'index'; use INDEX_KEY instead +var DEFAULT_TYPE = 'any'; + +// @TODO remove this is not in use +// export const CLIENT_CONFIG_FILE = '.clients.json'; +// export const CONTRACT_CONFIG_FILE = 'jsonql-contract-config.js'; +// type of resolvers +var QUERY_NAME = 'query'; +var MUTATION_NAME = 'mutation'; +var SOCKET_NAME = 'socket'; +var QUERY_ARG_NAME = 'args'; +// for contract-cli +var KEY_WORD = 'continue'; + +var TYPE_KEY = 'type'; +var OPTIONAL_KEY = 'optional'; +var ENUM_KEY = 'enumv'; // need to change this because enum is a reserved word +var ARGS_KEY = 'args'; +var CHECKER_KEY = 'checker'; +var ALIAS_KEY = 'alias'; +var LOGIN_NAME = 'login'; +var ISSUER_NAME = LOGIN_NAME; // legacy issue need to replace them later +var LOGOUT_NAME = 'logout'; + +var OR_SEPERATOR = '|'; + +var STRING_TYPE = 'string'; +var BOOLEAN_TYPE = 'boolean'; +var ARRAY_TYPE = 'array'; +var OBJECT_TYPE = 'object'; + +var NUMBER_TYPE = 'number'; +var ARRAY_TYPE_LFT = 'array.<'; +var ARRAY_TYPE_RGT = '>'; + +var NO_ERROR_MSG = 'No message'; +var NO_STATUS_CODE = -1; +var LOGIN_EVENT_NAME = '__login__'; +var LOGOUT_EVENT_NAME = '__logout__'; + +// for ws servers +var WS_REPLY_TYPE = '__reply__'; +var WS_EVT_NAME = '__event__'; +var WS_DATA_NAME = '__data__'; +var EMIT_REPLY_TYPE = 'emit'; +var ACKNOWLEDGE_REPLY_TYPE = 'acknowledge'; +var ERROR_TYPE = 'error'; + +var NSP_SET = 'nspSet'; +var PUBLIC_NAMESPACE = 'publicNamespace'; + +var JS_WS_SOCKET_IO_NAME = 'socket.io'; +var JS_WS_NAME = 'ws'; + +// for ws client +var ON_MESSAGE_PROP_NAME = 'onMessage'; +var ON_RESULT_PROP_NAME = 'onResult'; +var ON_ERROR_PROP_NAME = 'onError'; +var ON_READY_PROP_NAME = 'onReady'; +var ON_LOGIN_PROP_NAME = 'onLogin'; // new @1.8.6 + +var SEND_MSG_PROP_NAME = 'send'; +var NOT_LOGIN_ERR_MSG = 'NOT LOGIN'; +var TOKEN_PARAM_NAME = 'token'; + +/** + * This is a custom error to throw whenever a error happen inside the jsonql + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ +var JsonqlError = /*@__PURE__*/(function (JsonqlBaseError) { + function JsonqlError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + JsonqlBaseError.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlError); + // this.detail = this.stack; + } + } + + if ( JsonqlBaseError ) JsonqlError.__proto__ = JsonqlBaseError; + JsonqlError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); + JsonqlError.prototype.constructor = JsonqlError; + + var staticAccessors = { name: { configurable: true },statusCode: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlError'; + }; + + staticAccessors.statusCode.get = function () { + return NO_STATUS_CODE; + }; + + Object.defineProperties( JsonqlError, staticAccessors ); + + return JsonqlError; +}(JsonqlBaseError)); + +// this is from an example from Koa team to use for internal middleware ctx.throw +// but after the test the res.body part is unable to extract the required data +// I keep this one here for future reference + +var JsonqlServerError = /*@__PURE__*/(function (Error) { + function JsonqlServerError(statusCode, message) { + Error.call(this, message); + this.statusCode = statusCode; + this.className = JsonqlServerError.name; + } + + if ( Error ) JsonqlServerError.__proto__ = Error; + JsonqlServerError.prototype = Object.create( Error && Error.prototype ); + JsonqlServerError.prototype.constructor = JsonqlServerError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlServerError'; + }; + + Object.defineProperties( JsonqlServerError, staticAccessors ); + + return JsonqlServerError; +}(Error)); + +/** + * this will put into generator call at the very end and catch + * the error throw from inside then throw again + * this is necessary because we split calls inside and the throw + * will not reach the actual client unless we do it this way + * @param {object} e Error + * @return {void} just throw + */ +function finalCatch(e) { + // this is a hack to get around the validateAsync not actually throw error + // instead it just rejected it with the array of failed parameters + if (Array.isArray(e)) { + // if we want the message then I will have to create yet another function + // to wrap this function to provide the name prop + throw new JsonqlValidationError$1('', e) + } + var msg = e.message || NO_ERROR_MSG; + var detail = e.detail || e; + switch (true) { + case e instanceof Jsonql406Error: + throw new Jsonql406Error(msg, detail) + case e instanceof Jsonql500Error: + throw new Jsonql500Error(msg, detail) + case e instanceof JsonqlAuthorisationError: + throw new JsonqlAuthorisationError(msg, detail) + case e instanceof JsonqlContractAuthError: + throw new JsonqlContractAuthError(msg, detail) + case e instanceof JsonqlResolverAppError: + throw new JsonqlResolverAppError(msg, detail) + case e instanceof JsonqlResolverNotFoundError: + throw new JsonqlResolverNotFoundError(msg, detail) + case e instanceof JsonqlEnumError: + throw new JsonqlEnumError(msg, detail) + case e instanceof JsonqlTypeError: + throw new JsonqlTypeError(msg, detail) + case e instanceof JsonqlCheckerError: + throw new JsonqlCheckerError(msg, detail) + case e instanceof JsonqlValidationError$1: + throw new JsonqlValidationError$1(msg, detail) + case e instanceof JsonqlServerError: + throw new JsonqlServerError(msg, detail) + default: + throw new JsonqlError(msg, detail) + } +} + +// constants + +var SOCKET_IO = JS_WS_SOCKET_IO_NAME; + +var MISSING_PROP_ERR = 'Missing property in contract!'; + +var EXPECT_FUNC_ERR = "Expect a function!"; + +var EMIT_EVT = EMIT_REPLY_TYPE; + +var UNKNOWN_RESULT = 'UKNNOWN RESULT!'; + +var MY_NAMESPACE = 'myNamespace'; + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global$1 == 'object' && global$1 && global$1.Object === Object && global$1; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +/** Used for built-in method references. */ +var objectProto$1 = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString$1 = objectProto$1.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString$1.call(value); +} + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag$1 = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag$1 && symToStringTag$1 in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto$2 = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty$1 = objectProto$2.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty$1.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ +function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; +} + +/** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ +function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); +} + +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); +} + +/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ +function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; +} + +/** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ +function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; +} + +/** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function asciiToArray(string) { + return string.split(''); +} + +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsZWJ = '\\u200d'; + +/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ +var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + +/** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ +function hasUnicode(string) { + return reHasUnicode.test(string); +} + +/** Used to compose unicode character classes. */ +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'; + +/** Used to compose unicode capture groups. */ +var 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'; + +/** Used to compose unicode regexes. */ +var 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('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function unicodeToArray(string) { + return string.match(reUnicode) || []; +} + +/** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); +} + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** + * Removes leading and trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trim(' abc '); + * // => 'abc' + * + * _.trim('-_-abc-_-', '_-'); + * // => 'abc' + * + * _.map([' foo ', ' bar '], _.trim); + * // => ['foo', 'bar'] + */ +function trim(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrim, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + chrSymbols = stringToArray(chars), + start = charsStartIndex(strSymbols, chrSymbols), + end = charsEndIndex(strSymbols, chrSymbols) + 1; + + return castSlice(strSymbols, start, end).join(''); +} + +// bunch of generic helpers + +/** + * DIY in Array + * @param {array} arr to check from + * @param {*} value to check against + * @return {boolean} true on found + */ +var inArray = function (arr, value) { return !!arr.filter(function (a) { return a === value; }).length; }; + +// quick and dirty to turn non array to array +var toArray = function (arg) { return isArray(arg) ? arg : [arg]; }; + + +/** + * @param {object} obj for search + * @param {string} key target + * @return {boolean} true on success + */ +var isKeyInObject = function(obj, key) { + var keys = Object.keys(obj); + return inArray(keys, key) +}; + +/** + * create a event name + * @param {string[]} args + * @return {string} event name for use + */ +var createEvt = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return args.join('_'); +}; + +/** + * using just the map reduce to chain multiple functions together + * @param {function} mainFn the init function + * @param {array} moreFns as many as you want to take the last value and return a new one + * @return {function} accept value for the mainFn + */ +var chainFns = function (mainFn) { + var moreFns = [], len = arguments.length - 1; + while ( len-- > 0 ) moreFns[ len ] = arguments[ len + 1 ]; + + return ( + function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return ( + moreFns.reduce(function (value, nextFn) { return ( + // change here to check if the return value is array then we spread it + Reflect.apply(nextFn, null, toArray(value)) + ); }, Reflect.apply(mainFn, null, args)) + ); + } +); +}; + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** Used for built-in method references. */ +var funcProto$1 = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString$1 = funcProto$1.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString$1.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto$2 = Function.prototype, + objectProto$3 = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString$2 = funcProto$2.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty$2 = objectProto$3.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString$2.call(hasOwnProperty$2).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/* Built-in method references that are verified to be native. */ +var Map$1 = getNative(root, 'Map'); + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto$4 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$3 = objectProto$4.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty$3.call(data, key) ? data[key] : undefined; +} + +/** Used for built-in method references. */ +var objectProto$5 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$4 = objectProto$5.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key); +} + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED$1 = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value; + return this; +} + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map$1 || ListCache), + 'string': new Hash + }; +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map$1 || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +/** Used for built-in method references. */ +var objectProto$6 = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$6; + + return value === proto; +} + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} + +/** Used for built-in method references. */ +var objectProto$7 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$5 = objectProto$7.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto$7.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty$5.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +/** Detect free variable `exports`. */ +var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; + +/** Built-in value references. */ +var Buffer$1 = moduleExports$1 ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer$1 ? Buffer$1.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +/** `Object#toString` result references. */ +var 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]'; + +var 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]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +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] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +/** Detect free variable `exports`. */ +var freeExports$2 = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule$2 = freeExports$2 && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports$2 && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule$2 && freeModule$2.require && freeModule$2.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +/** Used for built-in method references. */ +var objectProto$8 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$6 = objectProto$8.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty$6.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; +} + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER$1 = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER$1 : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** Used for built-in method references. */ +var objectProto$9 = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$7 = objectProto$9.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty$7.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +/** Used for built-in method references. */ +var objectProto$a = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$8 = objectProto$a.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) { + result.push(key); + } + } + return result; +} + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); +} + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); +} + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); +}); + +/** + * this is essentially the same as the injectToFn + * but this will not allow overwrite and set the setter and getter + * @param {object} obj to get injected + * @param {string} name of the property + * @param {function} setter for set + * @param {function} [getter=null] for get default return null fn + * @return {object} the injected obj + */ +function objDefineProps(obj, name, setter, getter) { + if ( getter === void 0 ) getter = null; + + if (Object.getOwnPropertyDescriptor(obj, name) === undefined) { + Object.defineProperty(obj, name, { + set: setter, + get: getter === null ? function() { return null; } : getter + }); + } + return obj +} + +/** + * After the user login we will use this Object.define add a new property + * to the resolver with the decoded user data + * @param {function} resolver target resolver + * @param {string} name the name of the object to get inject also for checking + * @param {object} data to inject into the function static interface + * @param {boolean} [overwrite=false] if we want to overwrite the existing data + * @return {function} added property resolver + */ +function injectToFn(resolver, name, data, overwrite) { + if ( overwrite === void 0 ) overwrite = false; + + var check = Object.getOwnPropertyDescriptor(resolver, name); + if (overwrite === false && check !== undefined) { + // console.info(`NOT INJECTED`) + return resolver; + } + /* this will throw error! + if (overwrite === true && check !== undefined) { + delete resolver[name] // delete this property + } + */ + // console.info(`INJECTED`) + Object.defineProperty(resolver, name, { + value: data, + writable: overwrite // if its set to true then we should able to overwrite it + }); + + return resolver; +} + +// split the contract into the node side and the generic side +/** + * Check if the json is a contract file or not + * @param {object} contract json object + * @return {boolean} true + */ +function checkIsContract(contract) { + return isPlainObject(contract) + && ( + isKeyInObject(contract, QUERY_NAME) + || isKeyInObject(contract, MUTATION_NAME) + || isKeyInObject(contract, SOCKET_NAME) + ) +} + +/** + * Ported from jsonql-params-validator but different + * if we don't find the socket part then return false + * @param {object} contract the contract object + * @return {object|boolean} false on failed + */ +function extractSocketPart(contract) { + if (isKeyInObject(contract, 'socket')) { + return contract.socket; + } + return false; +} + +/** + * @BUG we should check the socket part instead of expect the downstream to read the menu! + * We only need this when the enableAuth is true otherwise there is only one namespace + * @param {object} contract the socket part of the contract file + * @param {boolean} [fallback=false] this is a fall back option for old code + * @return {object} 1. remap the contract using the namespace --> resolvers + * 2. the size of the object (1 all private, 2 mixed public with private) + * 3. which namespace is public + */ +function groupByNamespace(contract, fallback) { + if ( fallback === void 0 ) fallback = false; + + var socket = extractSocketPart(contract); + if (socket === false) { + if (fallback) { + return contract; // just return the whole contract + } + throw new JsonqlError("socket not found in contract!") + } + var nspSet = {}; + var size = 0; + var publicNamespace; + for (var resolverName in socket) { + var params = socket[resolverName]; + var namespace = params.namespace; + if (namespace) { + if (!nspSet[namespace]) { + ++size; + nspSet[namespace] = {}; + } + nspSet[namespace][resolverName] = params; + if (!publicNamespace) { + if (params.public) { + publicNamespace = namespace; + } + } + } + } + return { size: size, nspSet: nspSet, publicNamespace: publicNamespace } +} + +/** + * @NOTE ported from jsonql-ws-client + * Got to make sure the connection order otherwise + * it will hang + * @param {object} nspSet contract + * @param {string} publicNamespace like the name said + * @return {array} namespaces in order + */ +function getNamespaceInOrder(nspSet, publicNamespace) { + var names = []; // need to make sure the order! + for (var namespace in nspSet) { + if (namespace === publicNamespace) { + names[1] = namespace; + } else { + names[0] = namespace; + } + } + return names; +} + +/** `Object#toString` result references. */ +var stringTag$1 = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag$1); +} + +// ported from jsonql-params-validator + +/** + * @param {*} args arguments to send + *@return {object} formatted payload + */ +var formatPayload = function (args) { + var obj; + + return ( + ( obj = {}, obj[QUERY_ARG_NAME] = args, obj ) +); +}; + +/** + * Get name from the payload (ported back from jsonql-koa) + * @param {*} payload to extract from + * @return {string} name + */ +function getNameFromPayload(payload) { + return Object.keys(payload)[0] +} + +/** + * @param {string} resolverName name of function + * @param {array} [args=[]] from the ...args + * @param {boolean} [jsonp = false] add v1.3.0 to koa + * @return {object} formatted argument + */ +function createQuery(resolverName, args, jsonp) { + var obj; + + if ( args === void 0 ) args = []; + if ( jsonp === void 0 ) jsonp = false; + if (isString(resolverName) && isArray(args)) { + var payload = formatPayload(args); + if (jsonp === true) { + return payload; + } + return ( obj = {}, obj[resolverName] = payload, obj ) + } + throw new JsonqlValidationError$1("[createQuery] expect resolverName to be string and args to be array!", { resolverName: resolverName, args: args }) +} + +/** + * string version of the createQuery + * @return {string} + */ +function createQueryStr(resolverName, args, jsonp) { + if ( args === void 0 ) args = []; + if ( jsonp === void 0 ) jsonp = false; + + return JSON.stringify(createQuery(resolverName, args, jsonp)) +} + +// exportfor ES modules + +// alias +var isContract = checkIsContract; + +/** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ +function isNull(value) { + return value === null; +} + +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +/** `Object#toString` result references. */ +var boolTag$1 = '[object Boolean]'; + +/** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ +function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag$1); +} + +/** `Object#toString` result references. */ +var numberTag$1 = '[object Number]'; + +/** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ +function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag$1); +} + +/** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ +function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; +} + +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +/** Used for built-in method references. */ +var objectProto$b = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$9 = objectProto$b.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty$9.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED$2 = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED$2); + return this; +} + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$1 = 1, + COMPARE_UNORDERED_FLAG$1 = 2; + +/** `Object#toString` result references. */ +var boolTag$2 = '[object Boolean]', + dateTag$1 = '[object Date]', + errorTag$1 = '[object Error]', + mapTag$1 = '[object Map]', + numberTag$2 = '[object Number]', + regexpTag$1 = '[object RegExp]', + setTag$1 = '[object Set]', + stringTag$2 = '[object String]', + symbolTag$1 = '[object Symbol]'; + +var arrayBufferTag$1 = '[object ArrayBuffer]', + dataViewTag$1 = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto$1 = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag$1: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag$1: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag$2: + case dateTag$1: + case numberTag$2: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag$1: + return object.name == other.name && object.message == other.message; + + case regexpTag$1: + case stringTag$2: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag$1: + var convert = mapToArray; + + case setTag$1: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG$1; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag$1: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +/** Used for built-in method references. */ +var objectProto$c = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable$1.call(object, symbol); + }); +}; + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$2 = 1; + +/** Used for built-in method references. */ +var objectProto$d = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$a = objectProto$d.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty$a.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +/* Built-in method references that are verified to be native. */ +var Promise$1 = getNative(root, 'Promise'); + +/* Built-in method references that are verified to be native. */ +var Set$1 = getNative(root, 'Set'); + +/* Built-in method references that are verified to be native. */ +var WeakMap$1 = getNative(root, 'WeakMap'); + +/** `Object#toString` result references. */ +var mapTag$2 = '[object Map]', + objectTag$2 = '[object Object]', + promiseTag = '[object Promise]', + setTag$2 = '[object Set]', + weakMapTag$1 = '[object WeakMap]'; + +var dataViewTag$2 = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map$1), + promiseCtorString = toSource(Promise$1), + setCtorString = toSource(Set$1), + weakMapCtorString = toSource(WeakMap$1); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$2) || + (Map$1 && getTag(new Map$1) != mapTag$2) || + (Promise$1 && getTag(Promise$1.resolve()) != promiseTag) || + (Set$1 && getTag(new Set$1) != setTag$2) || + (WeakMap$1 && getTag(new WeakMap$1) != weakMapTag$1)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag$2 ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag$2; + case mapCtorString: return mapTag$2; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag$2; + case weakMapCtorString: return weakMapTag$1; + } + } + return result; + }; +} + +var getTag$1 = getTag; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$3 = 1; + +/** `Object#toString` result references. */ +var argsTag$2 = '[object Arguments]', + arrayTag$1 = '[object Array]', + objectTag$3 = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto$e = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty$b = objectProto$e.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag$1 : getTag$1(object), + othTag = othIsArr ? arrayTag$1 : getTag$1(other); + + objTag = objTag == argsTag$2 ? objectTag$3 : objTag; + othTag = othTag == argsTag$2 ? objectTag$3 : othTag; + + var objIsObj = objTag == objectTag$3, + othIsObj = othTag == objectTag$3, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) { + var objIsWrapped = objIsObj && hasOwnProperty$b.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty$b.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$4 = 1, + COMPARE_UNORDERED_FLAG$2 = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = MapCache; + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +/** Used as references for various `Number` constants. */ +var INFINITY$1 = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result; +} + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG$5 = 1, + COMPARE_UNORDERED_FLAG$3 = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3); + }; +} + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +/** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ +function mapValues(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; +} + +/** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ +function mapKeys(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; +} + +/** Error message constants. */ +var FUNC_ERROR_TEXT$1 = 'Expected a function'; + +/** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ +function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT$1); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; +} + +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; +} + +/** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ +function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; +} + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols$1 = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols$1 ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +/** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ +function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = baseIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); +} + +/** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ +function omitBy(object, predicate) { + return pickBy(object, negate(baseIteratee(predicate))); +} + +/** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ +function isEqual(value, other) { + return baseIsEqual(value, other); +} + +/** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ +function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; +} + +/** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ +function findKey(object, predicate) { + return baseFindKey(object, baseIteratee(predicate), baseForOwn); +} + +/** + * Check several parameter that there is something in the param + * @param {*} param input + * @return {boolean} + */ + +function notEmpty (a) { + if (isArray(a)) { + return true; + } + return a !== undefined && a !== null && trim(a) !== ''; +} + +// validator numbers +/** + * @2015-05-04 found a problem if the value is a number like string + * it will pass, so add a check if it's string before we pass to next + * @param {number} value expected value + * @return {boolean} true if OK + */ +var checkIsNumber = function(value) { + return isString(value) ? false : !isNaN( parseFloat(value) ) +}; + +// validate string type +/** + * @param {string} value expected value + * @return {boolean} true if OK + */ +var checkIsString = function(value) { + return (trim(value) !== '') ? isString(value) : false; +}; + +// check for boolean +/** + * @param {boolean} value expected + * @return {boolean} true if OK + */ +var checkIsBoolean = function(value) { + return isBoolean(value); +}; + +// validate any thing only check if there is something +/** + * @param {*} value the value + * @param {boolean} [checkNull=true] strict check if there is null value + * @return {boolean} true is OK + */ +var checkIsAny = function(value, checkNull) { + if ( checkNull === void 0 ) checkNull = true; + + if (!isUndefined(value) && value !== '' && trim(value) !== '') { + if (checkNull === false || (checkNull === true && !isNull(value))) { + return true; + } + } + return false; +}; + +// Good practice rule - No magic number + +var 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)"; +var PARAMS_NOT_ARRAY_ERR = "params is not an array! Did something gone wrong when you generate the contract.json?"; +var EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!'; +// @TODO the jsdoc return array. and we should also allow array syntax +var DEFAULT_TYPE$1 = DEFAULT_TYPE; +var ARRAY_TYPE_LFT$1 = ARRAY_TYPE_LFT; +var ARRAY_TYPE_RGT$1 = ARRAY_TYPE_RGT; + +var TYPE_KEY$1 = TYPE_KEY; +var OPTIONAL_KEY$1 = OPTIONAL_KEY; +var ENUM_KEY$1 = ENUM_KEY; +var ARGS_KEY$1 = ARGS_KEY; +var CHECKER_KEY$1 = CHECKER_KEY; +var ALIAS_KEY$1 = ALIAS_KEY; + +var ARRAY_TYPE$1 = ARRAY_TYPE; +var OBJECT_TYPE$1 = OBJECT_TYPE; +var STRING_TYPE$1 = STRING_TYPE; +var BOOLEAN_TYPE$1 = BOOLEAN_TYPE; +var NUMBER_TYPE$1 = NUMBER_TYPE; +var KEY_WORD$1 = KEY_WORD; +var OR_SEPERATOR$1 = OR_SEPERATOR; + +// not actually in use +// export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES; + +// primitive types + +/** + * this is a wrapper method to call different one based on their type + * @param {string} type to check + * @return {function} a function to handle the type + */ +var combineFn = function(type) { + switch (type) { + case NUMBER_TYPE$1: + return checkIsNumber; + case STRING_TYPE$1: + return checkIsString; + case BOOLEAN_TYPE$1: + return checkIsBoolean; + default: + return checkIsAny; + } +}; + +// validate array type + +/** + * @param {array} value expected + * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well + * @return {boolean} true if OK + */ +var checkIsArray = function(value, type) { + if ( type === void 0 ) type=''; + + if (isArray(value)) { + if (type === '' || trim(type)==='') { + return true; + } + // we test it in reverse + // @TODO if the type is an array (OR) then what? + // we need to take into account this could be an array + var c = value.filter(function (v) { return !combineFn(type)(v); }); + return !(c.length > 0) + } + return false; +}; + +/** + * check if it matches the array. pattern + * @param {string} type + * @return {boolean|array} false means NO, always return array + */ +var isArrayLike$1 = function(type) { + // @TODO could that have something like array<> instead of array.<>? missing the dot? + // because type script is Array without the dot + if (type.indexOf(ARRAY_TYPE_LFT$1) > -1 && type.indexOf(ARRAY_TYPE_RGT$1) > -1) { + var _type = type.replace(ARRAY_TYPE_LFT$1, '').replace(ARRAY_TYPE_RGT$1, ''); + if (_type.indexOf(OR_SEPERATOR$1)) { + return _type.split(OR_SEPERATOR$1) + } + return [_type] + } + return false; +}; + +/** + * we might encounter something like array. then we need to take it apart + * @param {object} p the prepared object for processing + * @param {string|array} type the type came from + * @return {boolean} for the filter to operate on + */ +var arrayTypeHandler = function(p, type) { + var arg = p.arg; + // need a special case to handle the OR type + // we need to test the args instead of the type(s) + if (type.length > 1) { + return !arg.filter(function (v) { return ( + !(type.length > type.filter(function (t) { return !combineFn(t)(v); }).length) + ); }).length; + } + // type is array so this will be or! + return type.length > type.filter(function (t) { return !checkIsArray(arg, t); }).length; +}; + +// validate object type +/** + * @TODO if provide with the keys then we need to check if the key:value type as well + * @param {object} value expected + * @param {array} [keys=null] if it has the keys array to compare as well + * @return {boolean} true if OK + */ +var checkIsObject = function(value, keys) { + if ( keys === void 0 ) keys=null; + + if (isPlainObject(value)) { + if (!keys) { + return true; + } + if (checkIsArray(keys)) { + // please note we DON'T care if some is optional + // plese refer to the contract.json for the keys + return !keys.filter(function (key) { + var _value = value[key.name]; + return !(key.type.length > key.type.filter(function (type) { + var tmp; + if (!isUndefined(_value)) { + if ((tmp = isArrayLike$1(type)) !== false) { + return !arrayTypeHandler({arg: _value}, tmp) + // return tmp.filter(t => !checkIsArray(_value, t)).length; + // @TODO there might be an object within an object with keys as well :S + } + return !combineFn(type)(_value) + } + return true; + }).length) + }).length; + } + } + return false; +}; + +/** + * fold this into it's own function to handler different object type + * @param {object} p the prepared object for process + * @return {boolean} + */ +var objectTypeHandler = function(p) { + var arg = p.arg; + var param = p.param; + var _args = [arg]; + if (Array.isArray(param.keys) && param.keys.length) { + _args.push(param.keys); + } + // just simple check + return checkIsObject.apply(null, _args) +}; + +/** + * just a simple util for helping to debug + * @param {array} args arguments + * @return {void} + */ +function log() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + if (window && window.console) { + Reflect.apply(console.log, console, args); + } + } catch(e) {} +} + +// move the index.js code here that make more sense to find where things are +// import debug from 'debug' +// const debugFn = debug('jsonql-params-validator:validator') +// also export this for use in other places + +/** + * We need to handle those optional parameter without a default value + * @param {object} params from contract.json + * @return {boolean} for filter operation false is actually OK + */ +var optionalHandler = function( params ) { + var arg = params.arg; + var param = params.param; + if (notEmpty(arg)) { + // debug('call optional handler', arg, params); + // loop through the type in param + return !(param.type.length > param.type.filter(function (type) { return validateHandler(type, params); } + ).length) + } + return false; +}; + +/** + * actually picking the validator + * @param {*} type for checking + * @param {*} value for checking + * @return {boolean} true on OK + */ +var validateHandler = function(type, value) { + var tmp; + switch (true) { + case type === OBJECT_TYPE$1: + // debugFn('call OBJECT_TYPE') + return !objectTypeHandler(value) + case type === ARRAY_TYPE$1: + // debugFn('call ARRAY_TYPE') + return !checkIsArray(value.arg) + // @TODO when the type is not present, it always fall through here + // so we need to find a way to actually pre-check the type first + // AKA check the contract.json map before running here + case (tmp = isArrayLike$1(type)) !== false: + // debugFn('call ARRAY_LIKE: %O', value) + return !arrayTypeHandler(value, tmp) + default: + return !combineFn(type)(value.arg) + } +}; + +/** + * it get too longer to fit in one line so break it out from the fn below + * @param {*} arg value + * @param {object} param config + * @return {*} value or apply default value + */ +var getOptionalValue = function(arg, param) { + if (!isUndefined(arg)) { + return arg; + } + return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null) +}; + +/** + * padding the arguments with defaultValue if the arguments did not provide the value + * this will be the name export + * @param {array} args normalized arguments + * @param {array} params from contract.json + * @return {array} merge the two together + */ +var normalizeArgs = function(args, params) { + // first we should check if this call require a validation at all + // there will be situation where the function doesn't need args and params + if (!checkIsArray(params)) { + // debugFn('params value', params) + throw new JsonqlError(PARAMS_NOT_ARRAY_ERR) + } + if (params.length === 0) { + return []; + } + if (!checkIsArray(args)) { + throw new JsonqlError(ARGS_NOT_ARRAY_ERR) + } + // debugFn(args, params); + // fall through switch + switch(true) { + case args.length == params.length: // standard + log(1); + return args.map(function (arg, i) { return ( + { + arg: arg, + index: i, + param: params[i] + } + ); }) + case params[0].variable === true: // using spread syntax + log(2); + var type = params[0].type; + return args.map(function (arg, i) { return ( + { + arg: arg, + index: i, // keep the index for reference + param: params[i] || { type: type, name: '_' } + } + ); }) + // with optional defaultValue parameters + case args.length < params.length: + log(3); + return params.map(function (param, i) { return ( + { + param: param, + index: i, + arg: getOptionalValue(args[i], param), + optional: param.optional || false + } + ); }) + // this one pass more than it should have anything after the args.length will be cast as any type + case args.length > params.length: + log(4); + var ctn = params.length; + // this happens when we have those array. type + var _type = [ DEFAULT_TYPE$1 ]; + // we only looking at the first one, this might be a @BUG + /* + if ((tmp = isArrayLike(params[0].type[0])) !== false) { + _type = tmp; + } */ + // if we use the params as guide then the rest will get throw out + // which is not what we want, instead, anything without the param + // will get a any type and optional flag + return args.map(function (arg, i) { + var optional = i >= ctn ? true : !!params[i].optional; + var param = params[i] || { type: _type, name: ("_" + i) }; + return { + arg: optional ? getOptionalValue(arg, param) : arg, + index: i, + param: param, + optional: optional + } + }) + // @TODO find out if there is more cases not cover + default: // this should never happen + log(5); + // debugFn('args', args) + // debugFn('params', params) + // this is unknown therefore we just throw it! + throw new JsonqlError(EXCEPTION_CASE_ERR, { args: args, params: params }) + } +}; + +// what we want is after the validaton we also get the normalized result +// which is with the optional property if the argument didn't provide it +/** + * process the array of params back to their arguments + * @param {array} result the params result + * @return {array} arguments + */ +var processReturn = function (result) { return result.map(function (r) { return r.arg; }); }; + +/** + * validator main interface + * @param {array} args the arguments pass to the method call + * @param {array} params from the contract for that method + * @param {boolean} [withResul=false] if true then this will return the normalize result as well + * @return {array} empty array on success, or failed parameter and reasons + */ +var validateSync = function(args, params, withResult) { + var obj; + + if ( withResult === void 0 ) withResult = false; + var cleanArgs = normalizeArgs(args, params); + var checkResult = cleanArgs.filter(function (p) { + // v1.4.4 this fixed the problem, the root level optional is from the last fn + if (p.optional === true || p.param.optional === true) { + return optionalHandler(p) + } + // because array of types means OR so if one pass means pass + return !(p.param.type.length > p.param.type.filter( + function (type) { return validateHandler(type, p); } + ).length) + }); + // using the same convention we been using all this time + return !withResult ? checkResult : ( obj = {}, obj[ERROR_KEY] = checkResult, obj[DATA_KEY] = processReturn(cleanArgs), obj ) +}; + +/** + * A wrapper method that return promise + * @param {array} args arguments + * @param {array} params from contract.json + * @param {boolean} [withResul=false] if true then this will return the normalize result as well + * @return {object} promise.then or catch + */ +var validateAsync = function(args, params, withResult) { + if ( withResult === void 0 ) withResult = false; + + return new Promise(function (resolver, rejecter) { + var result = validateSync(args, params, withResult); + if (withResult) { + return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY]) + : resolver(result[DATA_KEY]) + } + // the different is just in the then or catch phrase + return result.length ? rejecter(result) : resolver([]) + }) +}; + +/** + * @param {array} arr Array for check + * @param {*} value target + * @return {boolean} true on successs + */ +var isInArray = function(arr, value) { + return !!arr.filter(function (a) { return a === value; }).length; +}; + +var isKeyInObject$1 = function(obj, key) { + var keys = Object.keys(obj); + return isInArray(keys, key) +}; + +// just not to make my head hurt +var isEmpty = function (value) { return !notEmpty(value); }; + +/** + * Map the alias to their key then grab their value over + * @param {object} config the user supplied config + * @param {object} appProps the default option map + * @return {object} the config keys replaced with the appProps key by the ALIAS + */ +function mapAliasConfigKeys(config, appProps) { + // need to do two steps + // 1. take key with alias key + var aliasMap = omitBy(appProps, function (value, k) { return !value[ALIAS_KEY$1]; } ); + if (isEqual(aliasMap, {})) { + return config; + } + return mapKeys(config, function (v, key) { return findKey(aliasMap, function (o) { return o.alias === key; }) || key; }) +} + +/** + * We only want to run the valdiation against the config (user supplied) value + * but keep the defaultOptions untouch + * @param {object} config configuraton supplied by user + * @param {object} appProps the default options map + * @return {object} the pristine values that will add back to the final output + */ +function preservePristineValues(config, appProps) { + // @BUG this will filter out those that is alias key + // we need to first map the alias keys back to their full key + var _config = mapAliasConfigKeys(config, appProps); + // take the default value out + var pristineValues = mapValues( + omitBy(appProps, function (value, key) { return isKeyInObject$1(_config, key); }), + function (value) { return value.args; } + ); + // for testing the value + var checkAgainstAppProps = omitBy(appProps, function (value, key) { return !isKeyInObject$1(_config, key); }); + // output + return { + pristineValues: pristineValues, + checkAgainstAppProps: checkAgainstAppProps, + config: _config // passing this correct values back + } +} + +/** + * This will take the value that is ONLY need to check + * @param {object} config that one + * @param {object} props map for creating checking + * @return {object} put that arg into the args + */ +function processConfigAction(config, props) { + // debugFn('processConfigAction', props) + // v.1.2.0 add checking if its mark optional and the value is empty then pass + return mapValues(props, function (value, key) { + var obj, obj$1; + + return ( + isUndefined(config[key]) || (value[OPTIONAL_KEY$1] === true && isEmpty(config[key])) + ? merge({}, value, ( obj = {}, obj[KEY_WORD$1] = true, obj )) + : ( obj$1 = {}, obj$1[ARGS_KEY$1] = config[key], obj$1[TYPE_KEY$1] = value[TYPE_KEY$1], obj$1[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1] || false, obj$1[ENUM_KEY$1] = value[ENUM_KEY$1] || false, obj$1[CHECKER_KEY$1] = value[CHECKER_KEY$1] || false, obj$1 ) + ); + } + ) +} + +/** + * Quick transform + * @TODO we should only validate those that is pass from the config + * and pass through those values that is from the defaultOptions + * @param {object} opts that one + * @param {object} appProps mutation configuration options + * @return {object} put that arg into the args + */ +function prepareArgsForValidation(opts, appProps) { + var ref = preservePristineValues(opts, appProps); + var config = ref.config; + var pristineValues = ref.pristineValues; + var checkAgainstAppProps = ref.checkAgainstAppProps; + // output + return [ + processConfigAction(config, checkAgainstAppProps), + pristineValues + ] +} + +// breaking the whole thing up to see what cause the multiple calls issue + +// import debug from 'debug'; +// const debugFn = debug('jsonql-params-validator:options:validation') + +/** + * just make sure it returns an array to use + * @param {*} arg input + * @return {array} output + */ +var toArray$1 = function (arg) { return checkIsArray(arg) ? arg : [arg]; }; + +/** + * DIY in array + * @param {array} arr to check against + * @param {*} value to check + * @return {boolean} true on OK + */ +var inArray$1 = function (arr, value) { return ( + !!arr.filter(function (v) { return v === value; }).length +); }; + +/** + * break out to make the code easier to read + * @param {object} value to process + * @param {function} cb the validateSync + * @return {array} empty on success + */ +function validateHandler$1(value, cb) { + var obj; + + // cb is the validateSync methods + var args = [ + [ value[ARGS_KEY$1] ], + [( obj = {}, obj[TYPE_KEY$1] = toArray$1(value[TYPE_KEY$1]), obj[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1], obj )] + ]; + // debugFn('validateHandler', args) + return Reflect.apply(cb, null, args) +} + +/** + * Check against the enum value if it's provided + * @param {*} value to check + * @param {*} enumv to check against if it's not false + * @return {boolean} true on OK + */ +var enumHandler = function (value, enumv) { + if (checkIsArray(enumv)) { + return inArray$1(enumv, value) + } + return true; +}; + +/** + * Allow passing a function to check the value + * There might be a problem here if the function is incorrect + * and that will makes it hard to debug what is going on inside + * @TODO there could be a few feature add to this one under different circumstance + * @param {*} value to check + * @param {function} checker for checking + */ +var checkerHandler = function (value, checker) { + try { + return isFunction(checker) ? checker.apply(null, [value]) : false; + } catch (e) { + return false; + } +}; + +/** + * Taken out from the runValidaton this only validate the required values + * @param {array} args from the config2argsAction + * @param {function} cb validateSync + * @return {array} of configuration values + */ +function runValidationAction(cb) { + return function (value, key) { + // debugFn('runValidationAction', key, value) + if (value[KEY_WORD$1]) { + return value[ARGS_KEY$1] + } + var check = validateHandler$1(value, cb); + if (check.length) { + log('runValidationAction', key, value); + throw new JsonqlTypeError(key, check) + } + if (value[ENUM_KEY$1] !== false && !enumHandler(value[ARGS_KEY$1], value[ENUM_KEY$1])) { + log(ENUM_KEY$1, value[ENUM_KEY$1]); + throw new JsonqlEnumError(key) + } + if (value[CHECKER_KEY$1] !== false && !checkerHandler(value[ARGS_KEY$1], value[CHECKER_KEY$1])) { + log(CHECKER_KEY$1, value[CHECKER_KEY$1]); + throw new JsonqlCheckerError(key) + } + return value[ARGS_KEY$1] + } +} + +/** + * @param {object} args from the config2argsAction + * @param {function} cb validateSync + * @return {object} of configuration values + */ +function runValidation(args, cb) { + var argsForValidate = args[0]; + var pristineValues = args[1]; + // turn the thing into an array and see what happen here + // debugFn('_args', argsForValidate) + var result = mapValues(argsForValidate, runValidationAction(cb)); + return merge(result, pristineValues) +} + +/// this is port back from the client to share across all projects + +// import debug from 'debug' +// const debugFn = debug('jsonql-params-validator:check-options-async') + +/** + * Quick transform + * @param {object} config that one + * @param {object} appProps mutation configuration options + * @return {object} put that arg into the args + */ +var configToArgs = function (config, appProps) { + return Promise.resolve( + prepareArgsForValidation(config, appProps) + ) +}; + +/** + * @param {object} config user provide configuration option + * @param {object} appProps mutation configuration options + * @param {object} constProps the immutable configuration options + * @param {function} cb the validateSync method + * @return {object} Promise resolve merge config object + */ +function checkOptionsAsync(config, appProps, constProps, cb) { + if ( config === void 0 ) config = {}; + + return configToArgs(config, appProps) + .then(function (args1) { + // debugFn('args', args1) + return runValidation(args1, cb) + }) + // next if every thing good then pass to final merging + .then(function (args2) { return merge({}, args2, constProps); }) +} + +// create function to construct the config entry so we don't need to keep building object +// import debug from 'debug'; +// const debugFn = debug('jsonql-params-validator:construct-config'); +/** + * @param {*} args value + * @param {string} type for value + * @param {boolean} [optional=false] + * @param {boolean|array} [enumv=false] + * @param {boolean|function} [checker=false] + * @return {object} config entry + */ +function constructConfigFn(args, type, optional, enumv, checker, alias) { + if ( optional === void 0 ) optional=false; + if ( enumv === void 0 ) enumv=false; + if ( checker === void 0 ) checker=false; + if ( alias === void 0 ) alias=false; + + var base = {}; + base[ARGS_KEY] = args; + base[TYPE_KEY] = type; + if (optional === true) { + base[OPTIONAL_KEY] = true; + } + if (checkIsArray(enumv)) { + base[ENUM_KEY] = enumv; + } + if (isFunction(checker)) { + base[CHECKER_KEY] = checker; + } + if (isString(alias)) { + base[ALIAS_KEY] = alias; + } + return base; +} + +// export also create wrapper methods + +// import debug from 'debug'; +// const debugFn = debug('jsonql-params-validator:options:index'); + +/** + * This has a different interface + * @param {*} value to supply + * @param {string|array} type for checking + * @param {object} params to map against the config check + * @param {array} params.enumv NOT enum + * @param {boolean} params.optional false then nothing + * @param {function} params.checker need more work on this one later + * @param {string} params.alias mostly for cmd + */ +var createConfig = function (value, type, params) { + if ( params === void 0 ) params = {}; + + // Note the enumv not ENUM + // const { enumv, optional, checker, alias } = params; + // let args = [value, type, optional, enumv, checker, alias]; + var o = params[OPTIONAL_KEY]; + var e = params[ENUM_KEY]; + var c = params[CHECKER_KEY]; + var a = params[ALIAS_KEY]; + return constructConfigFn.apply(null, [value, type, o, e, c, a]) +}; + +/** + * We recreate the method here to avoid the circlar import + * @param {object} config user supply configuration + * @param {object} appProps mutation options + * @param {object} [constantProps={}] optional: immutation options + * @return {object} all checked configuration + */ +var checkConfigAsync = function(validateSync) { + return function(config, appProps, constantProps) { + if ( constantProps === void 0 ) constantProps= {}; + + return checkOptionsAsync(config, appProps, constantProps, validateSync) + } +}; + +// export +var isString$1 = checkIsString; +var validateAsync$1 = validateAsync; + +var createConfig$1 = createConfig; + +var checkConfigAsync$1 = checkConfigAsync(validateSync); +var isKeyInObject$2 = isKeyInObject$1; + +var 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 + */ +var getDebug = function (name) { + try { + if (window.debug) { // the global browser object + return window.debug(BASE_NAME).extend(name) + } + } catch(e) { + // ignore this + } + try { + if (global$1.debug) { + return global$1.debug(BASE_NAME).extend(name) + } + } catch(e) { + // ignore this + } + // just a stock one + return function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + console.info.apply(null, [BASE_NAME, name].concat(args)); + } +}; +try { + if (window && window.localStorage && window.DEBUG) { + localStorage.setItem('DEBUG', (BASE_NAME + "*")); + } +} catch(e) {} + +var NB_EVENT_SERVICE_PRIVATE_STORE = new WeakMap(); +var NB_EVENT_SERVICE_PRIVATE_LAZY = new WeakMap(); + +/** + * generate a 32bit hash based on the function.toString() + * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery + * @param {string} s the converted to string function + * @return {string} the hashed function string + */ +function hashCode(s) { + return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0) +} + +// making all the functionality on it's own +// import { WatchClass } from './watch' + +var SuspendClass = function SuspendClass() { + // suspend, release and queue + this.__suspend__ = null; + this.queueStore = new Set(); + /* + this.watch('suspend', function(value, prop, oldValue) { + this.logger(`${prop} set from ${oldValue} to ${value}`) + // it means it set the suspend = true then release it + if (oldValue === true && value === false) { + // we want this happen after the return happens + setTimeout(() => { + this.release() + }, 1) + } + return value; // we need to return the value to store it + }) + */ +}; + +var prototypeAccessors = { $suspend: { configurable: true },$queues: { configurable: true } }; + +/** + * setter to set the suspend and check if it's boolean value + * @param {boolean} value to trigger + */ +prototypeAccessors.$suspend.set = function (value) { + var this$1 = this; + + if (typeof value === 'boolean') { + var lastValue = this.__suspend__; + this.__suspend__ = value; + this.logger('($suspend)', ("Change from " + lastValue + " --> " + value)); + if (lastValue === true && value === false) { + setTimeout(function () { + this$1.release(); + }, 1); + } + } else { + throw new Error("$suspend only accept Boolean value!") + } +}; + +/** + * queuing call up when it's in suspend mode + * @param {any} value + * @return {Boolean} true when added or false when it's not + */ +SuspendClass.prototype.$queue = function $queue () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (this.__suspend__ === true) { + this.logger('($queue)', 'added to $queue', args); + // there shouldn't be any duplicate ... + this.queueStore.add(args); + } + return this.__suspend__; +}; + +/** + * a getter to get all the store queue + * @return {array} Set turn into Array before return + */ +prototypeAccessors.$queues.get = function () { + var size = this.queueStore.size; + this.logger('($queues)', ("size: " + size)); + if (size > 0) { + return Array.from(this.queueStore) + } + return [] +}; + +/** + * Release the queue + * @return {int} size if any + */ +SuspendClass.prototype.release = function release () { + var this$1 = this; + + var size = this.queueStore.size; + this.logger('(release)', ("Release was called " + size)); + if (size > 0) { + var queue = Array.from(this.queueStore); + this.queueStore.clear(); + this.logger('queue', queue); + queue.forEach(function (args) { + this$1.logger(args); + Reflect.apply(this$1.$trigger, this$1, args); + }); + this.logger(("Release size " + (this.queueStore.size))); + } +}; + +Object.defineProperties( SuspendClass.prototype, prototypeAccessors ); + +// break up the main file because its getting way too long + +var NbEventServiceBase = /*@__PURE__*/(function (SuspendClass) { + function NbEventServiceBase(config) { + if ( config === void 0 ) config = {}; + + SuspendClass.call(this); + if (config.logger && typeof config.logger === 'function') { + this.logger = config.logger; + } + this.keep = config.keep; + // for the $done setter + this.result = config.keep ? [] : null; + // we need to init the store first otherwise it could be a lot of checking later + this.normalStore = new Map(); + this.lazyStore = new Map(); + } + + if ( SuspendClass ) NbEventServiceBase.__proto__ = SuspendClass; + NbEventServiceBase.prototype = Object.create( SuspendClass && SuspendClass.prototype ); + NbEventServiceBase.prototype.constructor = NbEventServiceBase; + + var prototypeAccessors = { normalStore: { configurable: true },lazyStore: { configurable: true } }; + + /** + * validate the event name(s) + * @param {string[]} evt event name + * @return {boolean} true when OK + */ + NbEventServiceBase.prototype.validateEvt = function validateEvt () { + var this$1 = this; + var evt = [], len = arguments.length; + while ( len-- ) evt[ len ] = arguments[ len ]; + + evt.forEach(function (e) { + if (typeof e !== 'string') { + this$1.logger('(validateEvt)', e); + throw new Error("event name must be string type!") + } + }); + return true; + }; + + /** + * Simple quick check on the two main parameters + * @param {string} evt event name + * @param {function} callback function to call + * @return {boolean} true when OK + */ + NbEventServiceBase.prototype.validate = function validate (evt, callback) { + if (this.validateEvt(evt)) { + if (typeof callback === 'function') { + return true; + } + } + throw new Error("callback required to be function type!") + }; + + /** + * Check if this type is correct or not added in V1.5.0 + * @param {string} type for checking + * @return {boolean} true on OK + */ + NbEventServiceBase.prototype.validateType = function validateType (type) { + var types = ['on', 'only', 'once', 'onlyOnce']; + return !!types.filter(function (t) { return type === t; }).length; + }; + + /** + * Run the callback + * @param {function} callback function to execute + * @param {array} payload for callback + * @param {object} ctx context or null + * @return {void} the result store in $done + */ + NbEventServiceBase.prototype.run = function run (callback, payload, ctx) { + this.logger('(run)', callback, payload, ctx); + this.$done = Reflect.apply(callback, ctx, this.toArray(payload)); + }; + + /** + * Take the content out and remove it from store id by the name + * @param {string} evt event name + * @param {string} [storeName = lazyStore] name of store + * @return {object|boolean} content or false on not found + */ + NbEventServiceBase.prototype.takeFromStore = function takeFromStore (evt, storeName) { + if ( storeName === void 0 ) storeName = 'lazyStore'; + + var store = this[storeName]; // it could be empty at this point + if (store) { + this.logger('(takeFromStore)', storeName, store); + if (store.has(evt)) { + var content = store.get(evt); + this.logger('(takeFromStore)', ("has " + evt), content); + store.delete(evt); + return content; + } + return false; + } + throw new Error((storeName + " is not supported!")) + }; + + /** + * The add to store step is similar so make it generic for resuse + * @param {object} store which store to use + * @param {string} evt event name + * @param {spread} args because the lazy store and normal store store different things + * @return {array} store and the size of the store + */ + NbEventServiceBase.prototype.addToStore = function addToStore (store, evt) { + var args = [], len = arguments.length - 2; + while ( len-- > 0 ) args[ len ] = arguments[ len + 2 ]; + + var fnSet; + if (store.has(evt)) { + this.logger('(addToStore)', (evt + " existed")); + fnSet = store.get(evt); + } else { + this.logger('(addToStore)', ("create new Set for " + evt)); + // this is new + fnSet = new Set(); + } + // lazy only store 2 items - this is not the case in V1.6.0 anymore + // we need to check the first parameter is string or not + if (args.length > 2) { + if (Array.isArray(args[0])) { // lazy store + // check if this type of this event already register in the lazy store + var t = args[2]; + if (!this.checkTypeInLazyStore(evt, t)) { + fnSet.add(args); + } + } else { + if (!this.checkContentExist(args, fnSet)) { + this.logger('(addToStore)', "insert new", args); + fnSet.add(args); + } + } + } else { // add straight to lazy store + fnSet.add(args); + } + store.set(evt, fnSet); + return [store, fnSet.size] + }; + + /** + * @param {array} args for compare + * @param {object} fnSet A Set to search from + * @return {boolean} true on exist + */ + NbEventServiceBase.prototype.checkContentExist = function checkContentExist (args, fnSet) { + var list = Array.from(fnSet); + return !!list.filter(function (l) { + var hash = l[0]; + if (hash === args[0]) { + return true; + } + return false; + }).length; + }; + + /** + * get the existing type to make sure no mix type add to the same store + * @param {string} evtName event name + * @param {string} type the type to check + * @return {boolean} true you can add, false then you can't add this type + */ + NbEventServiceBase.prototype.checkTypeInStore = function checkTypeInStore (evtName, type) { + this.validateEvt(evtName, type); + var all = this.$get(evtName, true); + if (all === false) { + // pristine it means you can add + return true; + } + // it should only have ONE type in ONE event store + return !all.filter(function (list) { + var t = list[3]; + return type !== t; + }).length; + }; + + /** + * This is checking just the lazy store because the structure is different + * therefore we need to use a new method to check it + */ + NbEventServiceBase.prototype.checkTypeInLazyStore = function checkTypeInLazyStore (evtName, type) { + this.validateEvt(evtName, type); + var store = this.lazyStore.get(evtName); + this.logger('(checkTypeInLazyStore)', store); + if (store) { + return !!Array + .from(store) + .filter(function (l) { + var t = l[2]; + return t !== type; + }).length + } + return false; + }; + + /** + * wrapper to re-use the addToStore, + * V1.3.0 add extra check to see if this type can add to this evt + * @param {string} evt event name + * @param {string} type on or once + * @param {function} callback function + * @param {object} context the context the function execute in or null + * @return {number} size of the store + */ + NbEventServiceBase.prototype.addToNormalStore = function addToNormalStore (evt, type, callback, context) { + if ( context === void 0 ) context = null; + + this.logger('(addToNormalStore)', evt, type, 'try to add to normal store'); + // @TODO we need to check the existing store for the type first! + if (this.checkTypeInStore(evt, type)) { + this.logger('(addToNormalStore)', (type + " can add to " + evt + " normal store")); + var key = this.hashFnToKey(callback); + var args = [this.normalStore, evt, key, callback, context, type]; + var ref = Reflect.apply(this.addToStore, this, args); + var _store = ref[0]; + var size = ref[1]; + this.normalStore = _store; + return size; + } + return false; + }; + + /** + * Add to lazy store this get calls when the callback is not register yet + * so we only get a payload object or even nothing + * @param {string} evt event name + * @param {array} payload of arguments or empty if there is none + * @param {object} [context=null] the context the callback execute in + * @param {string} [type=false] register a type so no other type can add to this evt + * @return {number} size of the store + */ + NbEventServiceBase.prototype.addToLazyStore = function addToLazyStore (evt, payload, context, type) { + if ( payload === void 0 ) payload = []; + if ( context === void 0 ) context = null; + if ( type === void 0 ) type = false; + + // this is add in V1.6.0 + // when there is type then we will need to check if this already added in lazy store + // and no other type can add to this lazy store + var args = [this.lazyStore, evt, this.toArray(payload), context]; + if (type) { + args.push(type); + } + var ref = Reflect.apply(this.addToStore, this, args); + var _store = ref[0]; + var size = ref[1]; + this.lazyStore = _store; + return size; + }; + + /** + * make sure we store the argument correctly + * @param {*} arg could be array + * @return {array} make sured + */ + NbEventServiceBase.prototype.toArray = function toArray (arg) { + return Array.isArray(arg) ? arg : [arg]; + }; + + /** + * setter to store the Set in private + * @param {object} obj a Set + */ + prototypeAccessors.normalStore.set = function (obj) { + NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj); + }; + + /** + * @return {object} Set object + */ + prototypeAccessors.normalStore.get = function () { + return NB_EVENT_SERVICE_PRIVATE_STORE.get(this) + }; + + /** + * setter to store the Set in lazy store + * @param {object} obj a Set + */ + prototypeAccessors.lazyStore.set = function (obj) { + NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj); + }; + + /** + * @return {object} the lazy store Set + */ + prototypeAccessors.lazyStore.get = function () { + return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this) + }; + + /** + * generate a hashKey to identify the function call + * The build-in store some how could store the same values! + * @param {function} fn the converted to string function + * @return {string} hashKey + */ + NbEventServiceBase.prototype.hashFnToKey = function hashFnToKey (fn) { + return hashCode(fn.toString()) + ''; + }; + + Object.defineProperties( NbEventServiceBase.prototype, prototypeAccessors ); + + return NbEventServiceBase; +}(SuspendClass)); + +// The top level +// export +var EventService = /*@__PURE__*/(function (NbStoreService) { + function EventService(config) { + if ( config === void 0 ) config = {}; + + NbStoreService.call(this, config); + } + + if ( NbStoreService ) EventService.__proto__ = NbStoreService; + EventService.prototype = Object.create( NbStoreService && NbStoreService.prototype ); + EventService.prototype.constructor = EventService; + + var prototypeAccessors = { $done: { configurable: true } }; + + /** + * logger function for overwrite + */ + EventService.prototype.logger = function logger () {}; + + ////////////////////////// + // PUBLIC METHODS // + ////////////////////////// + + /** + * Register your evt handler, note we don't check the type here, + * we expect you to be sensible and know what you are doing. + * @param {string} evt name of event + * @param {function} callback bind method --> if it's array or not + * @param {object} [context=null] to execute this call in + * @return {number} the size of the store + */ + EventService.prototype.$on = function $on (evt , callback , context) { + var this$1 = this; + if ( context === void 0 ) context = null; + + var type = 'on'; + this.validate(evt, callback); + // first need to check if this evt is in lazy store + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register first then call later + if (lazyStoreContent === false) { + this.logger('($on)', (evt + " callback is not in lazy store")); + // @TODO we need to check if there was other listener to this + // event and are they the same type then we could solve that + // register the different type to the same event name + + return this.addToNormalStore(evt, type, callback, context) + } + this.logger('($on)', (evt + " found in lazy store")); + // this is when they call $trigger before register this callback + var size = 0; + lazyStoreContent.forEach(function (content) { + var payload = content[0]; + var ctx = content[1]; + var t = content[2]; + if (t && t !== type) { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this$1.logger("($on)", ("call run on " + evt)); + this$1.run(callback, payload, context || ctx); + size += this$1.addToNormalStore(evt, type, callback, context || ctx); + }); + return size; + }; + + /** + * once only registered it once, there is no overwrite option here + * @NOTE change in v1.3.0 $once can add multiple listeners + * but once the event fired, it will remove this event (see $only) + * @param {string} evt name + * @param {function} callback to execute + * @param {object} [context=null] the handler execute in + * @return {boolean} result + */ + EventService.prototype.$once = function $once (evt , callback , context) { + if ( context === void 0 ) context = null; + + this.validate(evt, callback); + var type = 'once'; + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register before call $trigger + var nStore = this.normalStore; + if (lazyStoreContent === false) { + this.logger('($once)', (evt + " not in the lazy store")); + // v1.3.0 $once now allow to add multiple listeners + return this.addToNormalStore(evt, type, callback, context) + } else { + // now this is the tricky bit + // there is a potential bug here that cause by the developer + // if they call $trigger first, the lazy won't know it's a once call + // so if in the middle they register any call with the same evt name + // then this $once call will be fucked - add this to the documentation + this.logger('($once)', lazyStoreContent); + var list = Array.from(lazyStoreContent); + // should never have more than 1 + var ref = list[0]; + var payload = ref[0]; + var ctx = ref[1]; + var t = ref[2]; + if (t && t !== type) { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this.logger('($once)', ("call run for " + evt)); + this.run(callback, payload, context || ctx); + // remove this evt from store + this.$off(evt); + } + }; + + /** + * This one event can only bind one callbackback + * @param {string} evt event name + * @param {function} callback event handler + * @param {object} [context=null] the context the event handler execute in + * @return {boolean} true bind for first time, false already existed + */ + EventService.prototype.$only = function $only (evt, callback, context) { + var this$1 = this; + if ( context === void 0 ) context = null; + + this.validate(evt, callback); + var type = 'only'; + var added = false; + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register before call $trigger + var nStore = this.normalStore; + if (!nStore.has(evt)) { + this.logger("($only)", (evt + " add to store")); + added = this.addToNormalStore(evt, type, callback, context); + } + if (lazyStoreContent !== false) { + // there are data store in lazy store + this.logger('($only)', (evt + " found data in lazy store to execute")); + var list = Array.from(lazyStoreContent); + // $only allow to trigger this multiple time on the single handler + list.forEach( function (l) { + var payload = l[0]; + var ctx = l[1]; + var t = l[2]; + if (t && t !== type) { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this$1.logger("($only)", ("call run for " + evt)); + this$1.run(callback, payload, context || ctx); + }); + } + return added; + }; + + /** + * $only + $once this is because I found a very subtile bug when we pass a + * resolver, rejecter - and it never fire because that's OLD added in v1.4.0 + * @param {string} evt event name + * @param {function} callback to call later + * @param {object} [context=null] exeucte context + * @return {void} + */ + EventService.prototype.$onlyOnce = function $onlyOnce (evt, callback, context) { + if ( context === void 0 ) context = null; + + this.validate(evt, callback); + var type = 'onlyOnce'; + var added = false; + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register before call $trigger + var nStore = this.normalStore; + if (!nStore.has(evt)) { + this.logger("($onlyOnce)", (evt + " add to store")); + added = this.addToNormalStore(evt, type, callback, context); + } + if (lazyStoreContent !== false) { + // there are data store in lazy store + this.logger('($onlyOnce)', lazyStoreContent); + var list = Array.from(lazyStoreContent); + // should never have more than 1 + var ref = list[0]; + var payload = ref[0]; + var ctx = ref[1]; + var t = ref[2]; + if (t && t !== 'onlyOnce') { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this.logger("($onlyOnce)", ("call run for " + evt)); + this.run(callback, payload, context || ctx); + // remove this evt from store + this.$off(evt); + } + return added; + }; + + /** + * This is a shorthand of $off + $on added in V1.5.0 + * @param {string} evt event name + * @param {function} callback to exeucte + * @param {object} [context = null] or pass a string as type + * @param {string} [type=on] what type of method to replace + * @return {} + */ + EventService.prototype.$replace = function $replace (evt, callback, context, type) { + if ( context === void 0 ) context = null; + if ( type === void 0 ) type = 'on'; + + if (this.validateType(type)) { + this.$off(evt); + var method = this['$' + type]; + this.logger("($replace)", evt, callback); + return Reflect.apply(method, this, [evt, callback, context]) + } + throw new Error((type + " is not supported!")) + }; + + /** + * trigger the event + * @param {string} evt name NOT allow array anymore! + * @param {mixed} [payload = []] pass to fn + * @param {object|string} [context = null] overwrite what stored + * @param {string} [type=false] if pass this then we need to add type to store too + * @return {number} if it has been execute how many times + */ + EventService.prototype.$trigger = function $trigger (evt , payload , context, type) { + if ( payload === void 0 ) payload = []; + if ( context === void 0 ) context = null; + if ( type === void 0 ) type = false; + + this.validateEvt(evt); + var found = 0; + // first check the normal store + var nStore = this.normalStore; + this.logger('($trigger)', 'normalStore', nStore); + if (nStore.has(evt)) { + // @1.8.0 to add the suspend queue + var added = this.$queue(evt, payload, context, type); + this.logger('($trigger)', evt, 'found; add to queue: ', added); + if (added === true) { + this.logger('($trigger)', evt, 'not executed. Exit now.'); + return false; // not executed + } + var nSet = Array.from(nStore.get(evt)); + var ctn = nSet.length; + var hasOnce = false; + for (var i=0; i < ctn; ++i) { + ++found; + // this.logger('found', found) + var ref = nSet[i]; + var _ = ref[0]; + var callback = ref[1]; + var ctx = ref[2]; + var type$1 = ref[3]; + this.logger("($trigger)", ("call run for " + evt)); + this.run(callback, payload, context || ctx); + if (type$1 === 'once' || type$1 === 'onlyOnce') { + hasOnce = true; + } + } + if (hasOnce) { + nStore.delete(evt); + } + return found; + } + // now this is not register yet + this.addToLazyStore(evt, payload, context, type); + return found; + }; + + /** + * this is an alias to the $trigger + * @NOTE breaking change in V1.6.0 we swap the parameter around + * @param {string} evt event name + * @param {*} params pass to the callback + * @param {string} type of call + * @param {object} context what context callback execute in + * @return {*} from $trigger + */ + EventService.prototype.$call = function $call (evt, params, type, context) { + if ( type === void 0 ) type = false; + if ( context === void 0 ) context = null; + + var args = [evt, params, context, type]; + return Reflect.apply(this.$trigger, this, args) + }; + + /** + * remove the evt from all the stores + * @param {string} evt name + * @return {boolean} true actually delete something + */ + EventService.prototype.$off = function $off (evt) { + var this$1 = this; + + this.validateEvt(evt); + var stores = [ this.lazyStore, this.normalStore ]; + var found = false; + stores.forEach(function (store) { + if (store.has(evt)) { + found = true; + this$1.logger('($off)', evt); + store.delete(evt); + } + }); + return found; + }; + + /** + * return all the listener from the event + * @param {string} evtName event name + * @param {boolean} [full=false] if true then return the entire content + * @return {array|boolean} listerner(s) or false when not found + */ + EventService.prototype.$get = function $get (evt, full) { + if ( full === void 0 ) full = false; + + this.validateEvt(evt); + var store = this.normalStore; + if (store.has(evt)) { + return Array + .from(store.get(evt)) + .map( function (l) { + if (full) { + return l; + } + var key = l[0]; + var callback = l[1]; + return callback; + }) + } + return false; + }; + + /** + * store the return result from the run + * @param {*} value whatever return from callback + */ + prototypeAccessors.$done.set = function (value) { + this.logger('($done)', 'value: ', value); + if (this.keep) { + this.result.push(value); + } else { + this.result = value; + } + }; + + /** + * @TODO is there any real use with the keep prop? + * getter for $done + * @return {*} whatever last store result + */ + prototypeAccessors.$done.get = function () { + if (this.keep) { + this.logger('(get $done)', this.result); + return this.result[this.result.length - 1] + } + return this.result; + }; + + Object.defineProperties( EventService.prototype, prototypeAccessors ); + + return EventService; +}(NbEventServiceBase)); + +// default + +// create a clone version so we know which one we actually is using +var JsonqlWsEvt = /*@__PURE__*/(function (NBEventService) { + function JsonqlWsEvt() { + // this ee will always come with the logger + // because we should take the ee from the configuration + NBEventService.call(this, { + logger: getDebug('nb-event-service') + }); + } + + if ( NBEventService ) JsonqlWsEvt.__proto__ = NBEventService; + JsonqlWsEvt.prototype = Object.create( NBEventService && NBEventService.prototype ); + JsonqlWsEvt.prototype.constructor = JsonqlWsEvt; + + var prototypeAccessors = { name: { configurable: true } }; + + prototypeAccessors.name.get = function () { + return 'jsonql-ws-client' + }; + + Object.defineProperties( JsonqlWsEvt.prototype, prototypeAccessors ); + + return JsonqlWsEvt; +}(EventService)); + +// mapping the resolver to their respective nsp +var debug = getDebug('process-contract'); + +/** + * Just make sure the object contain what we are looking for + * @param {object} opts configuration from checkOptions + * @return {object} the target content + */ +var getResolverList = function (contract) { + var result = extractSocketPart(contract); + if (result !== false) { + return result + } + throw new JsonqlResolverNotFoundError(MISSING_PROP_ERR) +}; + +/** + * process the contract first + * @param {object} opts configuration + * @return {object} sorted list + */ +function processContract(opts) { + var obj, obj$1; + + var contract = opts.contract; + var enableAuth = opts.enableAuth; + if (enableAuth) { + return groupByNamespace(contract) + } + return ( obj$1 = {}, obj$1[NSP_SET] = ( obj = {}, obj[JSONQL_PATH] = getResolverList(contract), obj ), obj$1[PUBLIC_NAMESPACE] = JSONQL_PATH, obj$1 ) +} + +// group all the small functions here +// import { getDebug } from './get-debug'; +// const debug = getDebug('helpers') + +// we shouldn't do this anymore +var fixWss = function (url, serverType) { + // ws only allow ws:// path + if (serverType === JS_WS_NAME) { + return url.replace('http://', 'ws://') + } + return url; +}; + +/** + * get a stock host name from browser + */ +var getHostName = function () { + try { + return [window.location.protocol, window.location.host].join('//') + } catch(e) { + throw new JsonqlValidationError(e) + } +}; + +/** + * Unbind the event + * @param {object} ee EventEmitter + * @param {string} namespace + * @return {void} + */ +var clearMainEmitEvt = function (ee, namespace) { + var nsps = toArray(namespace); + nsps.forEach(function (n) { + ee.$off(createEvt(n, EMIT_REPLY_TYPE)); + }); +}; + +/** + * Simple check if the prop is function + * @param {*} prop input + * @return {boolean} true on success + */ +var isFunc = function (prop) { + if (typeof prop === 'function') { + return true; + } + console.error(EXPECT_FUNC_ERR); +}; + +// breaking it up further to share between methods +var debugFn = getDebug('respondHandler'); +/** + * break out to use in different places to handle the return from server + * @param {object} data from server + * @param {function} resolver NOT from promise + * @param {function} rejecter NOT from promise + * @return {void} nothing + */ +function respondHandler(data, resolver, rejecter) { + if (isKeyInObject(data, ERROR_KEY)) { + debugFn('-- rejecter called --', data[ERROR_KEY]); + rejecter(data[ERROR_KEY]); + } else if (isKeyInObject(data, DATA_KEY)) { + debugFn('-- resolver called --', data[DATA_KEY]); + resolver(data[DATA_KEY]); + } else { + debugFn('-- UNKNOWN_RESULT --', data); + rejecter({message: UNKNOWN_RESULT, error: data}); + } +} + +// the actual trigger call method +var debugFn$1 = getDebug("action-call"); + +/** + * just wrapper + * @param {object} ee EventEmitter + * @param {string} namespace where this belongs + * @param {string} resolverName resolver + * @param {array} args arguments + * @return {void} nothing + */ +function actionCall(ee, namespace, resolverName, args) { + if ( args === void 0 ) args = []; + + var eventName = createEvt(namespace, EMIT_REPLY_TYPE); + debugFn$1(("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 + // then we need to listen to the event callback here as well + return new Promise(function (resolver, rejecter) { + ee.$on( + createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), + function actionCallResultHandler(result) { + debugFn$1("got the first result", result); + respondHandler(result, resolver, rejecter); + } + ); + }) +} + +var debugFn$2 = getDebug('setup-send'); + +// pairing with the server vesrion SEND_MSG_PROP_NAME +// last of the chain so only return the resolver (fn) +var setupSend = function (fn, ee, namespace, resolverName, params) { return ( + objDefineProps(fn, SEND_MSG_PROP_NAME, function sendSetter(messagePayload) { + debugFn$2('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$1(toArray(messagePayload), params.params, true) + .then(function (result) { + // here is the different we don't throw error instead we trigger onError + if (result[ERROR_KEY] && result[ERROR_KEY].length) { + debugFn$2("got ERROR_KEY", result[ERROR_KEY]); + ee.$call( + createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + [new JsonqlValidationError$1(resolverName, result[ERROR_KEY])] + ); + } else { + // return it just for the catch to work - if any + return actionCall(ee, namespace, resolverName, messagePayload) + } + }) + .catch(function (err) { + debugFn$2("error after validateAsync", err); + ee.$call( + createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + [new JsonqlValidationError$1(resolverName, err)] + ); + }); + }, function sendGetter() { // add in 1.1.4 + return function sendGetterAction() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return validateAsync$1(args, params.params, true) + .then(function (_args) { return actionCall(ee, namespace, resolverName, _args); }) + .catch(finalCatch) + } + }) +); }; + +// break up the original setup resolver method here +var debugFn$3 = getDebug('setup-resolver'); + +/** + * The first one in the chain + * @return {array} + */ +var setupNamespace = function (fn, ee, namespace, resolverName, params) { return [ + injectToFn(fn, MY_NAMESPACE, namespace), + ee, + namespace, + resolverName, + params +]; }; + +// onResult handler +var setupOnResult = function (fn, ee, namespace, resolverName, params) { return [ + objDefineProps(fn, ON_RESULT_PROP_NAME, function(resultCallback) { + if (isFunc(resultCallback)) { + ee.$on( + createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), + function resultHandler(result) { + respondHandler(result, resultCallback, function (error) { + ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error); + }); + } + ); + } + }), + ee, + namespace, + resolverName, + params +]; }; + +// we do need to add the send prop back because it's the only way to deal with +// bi-directional data stream +var setupOnMessage = function (fn, ee, namespace, resolverName, params) { return [ + objDefineProps(fn, ON_MESSAGE_PROP_NAME, function(messageCallback) { + // we expect this to be a function + if (isFunc(messageCallback)) { + // did that add to the callback + var onMessageCallback = function (args) { + respondHandler(args, messageCallback, function (error) { + ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error); + }); + }; + // register the handler for this message event + ee.$only(createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME), onMessageCallback); + } + }), + ee, + namespace, + resolverName, + params +]; }; + +// add an ON_ERROR_PROP_NAME handler +var setupOnError = function (fn, ee, namespace, resolverName, params) { return [ + objDefineProps(fn, ON_ERROR_PROP_NAME, function(resolverErrorHandler) { + if (isFunc(resolverErrorHandler)) { + // please note ON_ERROR_PROP_NAME can add multiple listners + ee.$only(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), resolverErrorHandler); + } + }), + ee, + namespace, + resolverName, + params +]; }; + +/** + * Add extra property to the resolver + * @param {string} namespace where this belongs + * @param {string} resolverName name as event name + * @param {object} params from contract + * @param {function} fn resolver function + * @param {object} ee EventEmitter + * @TODO need a new parameter here + * @return {function} resolver + */ +function setupResolver(namespace, resolverName, params, fn, ee) { + // also need to setup a getter to get back the namespace of this resolver + var args = [fn, ee, namespace, resolverName, params]; + var exe = chainFns(setupNamespace, setupOnResult, setupOnMessage, setupOnError, setupSend); + // debug(exe) + return Reflect.apply(exe, null, args) +} + +// put all the resolver related methods here to make it more clear +var debugFn$4 = getDebug('resolver-methods'); + +/** + * create the actual function to send message to server + * @param {object} ee EventEmitter instance + * @param {string} namespace this resolver end point + * @param {string} resolverName name of resolver as event name + * @param {object} params from contract + * @return {function} resolver + */ +function createResolver(ee, namespace, resolverName, params) { + // note we pass the new withResult=true option + return function() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return validateAsync$1(args, params.params, true) + .then(function (_args) { return actionCall(ee, namespace, resolverName, _args); }) + .catch(finalCatch) + } +} + +/** + * The problem is the namespace can have more than one + * and we only have on onError message + * @param {object} obj the client itself + * @param {object} ee Event Emitter + * @param {object} nspSet namespace keys + * @return {object} obj with onError prop + */ +function createNamespaceErrorHandler(obj, ee, nspSet) { + // using the onError as name + // @TODO we should follow the convention earlier + // make this a setter for the obj itself + return objDefineProps(obj, ON_ERROR_PROP_NAME, function(namespaceErrorHandler) { + if (isFunc(namespaceErrorHandler)) { + // please note ON_ERROR_PROP_NAME can add multiple listners + for (var namespace in nspSet) { + // this one is very tricky, we need to make sure the trigger is calling + // with the namespace as well as the error + ee.$on(createEvt(namespace, ON_ERROR_PROP_NAME), namespaceErrorHandler); + } + } + }) +} + +/** + * This event will fire when the socket.io.on('connection') and ws.onopen + * @param {object} obj the client itself + * @param {object} ee Event Emitter + * @param {object} nspSet namespace keys + * @return {object} obj with onReady prop + */ +function createOnReadyhandler(obj, ee, nspSet) { + return objDefineProps(obj, ON_READY_PROP_NAME, function(onReadyCallback) { + if (isFunc(onReadyCallback)) { + // reduce it down to just one flat level + ee.$on(ON_READY_PROP_NAME, onReadyCallback); + } + }) +} + +/** + * This event will fire when the socket.io.on('connection') and ws.onopen + * Plus this will check if it's the private namespace that fired the event + * @param {object} obj the client itself + * @param {object} ee Event Emitter + * @param {object} opts configuration + * @return {object} obj with onLogin prop + */ +function createOnLoginhandler(obj, ee, opts) { + if (opts.enableAuth) { + return objDefineProps(obj, ON_LOGIN_PROP_NAME, function(onLoginCallback) { + if (isFunc(onLoginCallback)) { + // only one callback can registered with it, TBC + ee.$only(ON_LOGIN_PROP_NAME, onLoginCallback); + } + }) + } + // just skip it + return obj +} + +/** + * Create auth related methods + * @param {object} obj the client itself + * @param {object} ee Event Emitter + * @param {object} opts configuration + * @return {object} obj with auth methods if any + */ +function createAuthMethods(obj, ee, opts) { + if (opts.enableAuth) { + // create an additonal login handler + // we require the token + obj[opts.loginHandlerName] = function (token) { + debugFn$4(opts.loginHandlerName, token); + if (token && isString$1(token)) { + return ee.$trigger(LOGIN_EVENT_NAME, [token]) + } + throw new JsonqlValidationError$1(opts.loginHandlerName) + }; + // logout event handler + obj[opts.logoutHandlerName] = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + ee.$trigger(LOGOUT_EVENT_NAME, args); + }; + } + return obj; +} + +// resolvers generator +var debugFn$5 = getDebug('generator'); + +/** + * step one get the obj map with the namespace + * @param {object} opts configuration + * @param {object} nspMap resolvers index by their namespace + * @param {object} ee EventEmitter + * @return {promise} resolve the obj mapped, and start the chain + */ +function getMappedObj(opts, nspMap, ee) { + var obj = {}; + var nspSet = nspMap.nspSet; + for (var namespace in nspSet) { + var list = nspSet[namespace]; + for (var resolverName in list) { + var params = list[resolverName]; + var fn = createResolver(ee, namespace, resolverName, params); + obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee); + } + } + // move this two method down to helpers + obj.devHelpers = { + // this is a helper method for the developer to know the namespace inside + getNsp: function () { return Object.keys(nspSet); }, + // simple get version trick + getVer: function () { return opts.version || 'NOT SET'; } + }; + // resolve the obj to start the chain + return Promise.resolve(obj) +} + +/** + * prepare the methods + * @param {object} opts configuration + * @param {object} nspMap resolvers index by their namespace + * @param {object} ee EventEmitter + * @return {object} of resolvers + * @public + */ +function generator(opts, nspMap, ee) { + var nspSet = nspMap.nspSet; + return getMappedObj(opts, nspMap, ee) + // add error handler + .then(function (obj1) { return createNamespaceErrorHandler(obj1, ee, nspSet); }) + // add onReady handler + .then(function (obj2) { return createOnReadyhandler(obj2, ee); }) + // add onLogin handler -- this is optional + .then(function (obj3) { return createOnLoginhandler(obj3, ee, opts); }) + // Auth related methods -- this is optional + .then(function (obj4) { return createAuthMethods(obj4, ee, opts); }) +} + +var obj; + +var defaultOptions = { + loginHandlerName: createConfig$1(ISSUER_NAME, [STRING_TYPE]), + logoutHandlerName: createConfig$1(LOGOUT_NAME, [STRING_TYPE]), + // we will use this for determine the socket.io client type as well + useJwt: createConfig$1(true, [BOOLEAN_TYPE, STRING_TYPE]), + hostname: createConfig$1(false, [STRING_TYPE]), + namespace: createConfig$1(JSONQL_PATH, [STRING_TYPE]), + wsOptions: createConfig$1({}, [OBJECT_TYPE]), + // make this null as default don't set this here, only set in the down stream + // serverType: createConfig(null, [STRING_TYPE], {[ENUM_KEY]: AVAILABLE_SERVERS}), + // we require the contract already generated and pass here + contract: createConfig$1({}, [OBJECT_TYPE], ( obj = {}, obj[CHECKER_KEY] = isContract, obj )), + enableAuth: createConfig$1(false, [BOOLEAN_TYPE]), + token: createConfig$1(false, [STRING_TYPE]) +}; + +// create options +var debug$1 = getDebug('check-options'); +// constant props +var defaultConstProps = { + eventEmitter: null, + // we unify the two different client into one now + // only expect different parameter + nspClient: null, + nspAuthClient: null, + // contructed path + wssPath: '' +}; + +/** + * check the configuration + * @param {object} config user supplied configuration + * @param {object} constProps developer supplied configuration + * @return {object} after checked + */ +function checkOptions(config, constProps) { + return checkConfigAsync$1(config, defaultOptions, Object.assign(defaultConstProps, constProps)) + .then(function (opts) { + if (!opts.hostname) { + opts.hostname = getHostName(); + } + // @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$1('CONFIGURATION OPTIONS', opts); + return opts; + }) +} + +// the top level API + +/** + * The main interface which will generate the socket clients and map all events + * @param {object} socketClientResolver this is the one method export by various clients + * @param {object} [constProps={}] add this to supply the constProps from the downstream client + * @return {object} the wsClient instance with all the available API + */ +function wsClient(socketClientResolver, constProps) { + if ( constProps === void 0 ) constProps = {}; + + // we need to inject property to this client later + // therefore we need to do it this way + return function (opts) { + var eventEmitter = opts.eventEmitter; + return checkOptions(opts, constProps) + .then(function (opts) { return ({ + opts: opts, + nspMap: processContract(opts), + ee: eventEmitter || new JsonqlWsEvt() + }); }) + .then( + function (ref) { + var opts = ref.opts; + var nspMap = ref.nspMap; + var ee = ref.ee; + + return socketClientResolver(opts, nspMap, ee); + } + ) + .then( + function (ref) { + var opts = ref.opts; + var nspMap = ref.nspMap; + var ee = ref.ee; + + return generator(opts, nspMap, ee); + } + ) + .catch(function (err) { + console.error("jsonql-ws-client init error", err); + }) + } +} + +// where all the base options are +// constant props +var constProps = { + version: 'version: 0.6.0 module: cjs', // will get replace + serverType: JS_WS_NAME +}; + +// pass the different type of ws to generate the client +/** + * WebSocket is strict about the path, therefore we need to make sure before it goes in + * @param {string} url input url + * @return {string} url with correct path name + */ +var fixWss$1 = function (url) { + var uri = url.toLowerCase(); + if (uri.indexOf('http') > -1) { + if (uri.indexOf('https') > -1) { + return uri.replace('https', 'wss') + } + return uri.replace('http', 'ws') + } + return uri; +}; + +/** + * The bug was in the wsOptions where ws doesn't need it but socket.io do + * therefore the object was pass as second parameter! + * @param {object} WebSocket the client or node version of ws + * @param {boolean} auth if it's auth then 3 param or just one + */ +function createWsClient(WebSocket, auth) { + if ( auth === void 0 ) auth = false; + + if (auth === false) { + return function createWsClientHandler(url) { + return new WebSocket(fixWss$1(url)) + } + } + + /** + * Create a client with auth token + * @param {string} url start with ws:// @TODO check this? + * @param {string} token the jwt token + * @return {object} ws instance + */ + return function createWsAuthClientHandler(url, token) { + var ws_url = fixWss$1(url); + // console.log('what happen here?', url, ws_url, token) + var uri = token && typeof token === 'string' ? (ws_url + "?" + TOKEN_PARAM_NAME + "=" + token) : ws_url; + try { + return new WebSocket(uri) + } catch(e) { + console.error('WebSocket Connection Error', e); + return false; + } + } +} + +// since both the ws and io version are +// pre-defined in the client-generator +// and this one will have the same parameters +// and the callback is identical + +/** + * wrapper method to create a nsp without login + * @param {string|boolean} namespace namespace url could be false + * @param {object} opts configuration + * @return {object} ws client instance + */ +function createNspClient(namespace, opts) { + var hostname = opts.hostname; + var wssPath = opts.wssPath; + var wsOptions = opts.wsOptions; + var nspClient = opts.nspClient; + var url = namespace ? [hostname, namespace].join('/') : wssPath; + return nspClient(url, wsOptions) +} + +/** + * wrapper method to create a nsp with token auth + * @param {string} namespace namespace url + * @param {object} opts configuration + * @return {object} ws client instance + */ +function createNspAuthClient(namespace, opts) { + var hostname = opts.hostname; + var wssPath = opts.wssPath; + var token = opts.token; + var wsOptions = opts.wsOptions; + var nspAuthClient = opts.nspAuthClient; + var url = namespace ? [hostname, namespace].join('/') : wssPath; + if (token && typeof token !== 'string') { + throw new Error(("Expect token to be string, but got " + token)) + } + return nspAuthClient(url, token, wsOptions) +} + +// this use by client-event-handler +/** + * trigger errors on all the namespace onError handler + * @param {object} ee Event Emitter + * @param {array} namespaces nsps string + * @param {string} message optional + * @return {void} + */ +function triggerNamespacesOnError(ee, namespaces, message) { + namespaces.forEach( function (namespace) { + ee.$call(createEvt(namespace, ON_ERROR_PROP_NAME), [{ message: message, namespace: namespace }]); + }); +} + +// This is share between different clients so we export it +var debugFn$6 = getDebug('client-event-handler'); + +/** + * A fake ee handler + * @param {string} namespace nsp + * @param {object} ee EventEmitter + * @return {void} + */ +var notLoginWsHandler = function (namespace, ee) { + ee.$only( + createEvt(namespace, EMIT_EVT), + function notLoginHandlerCallback(resolverName, args) { + debugFn$6('noLoginHandler hijack the ws call', namespace, resolverName, args); + var error = { + message: NOT_LOGIN_ERR_MSG + }; + // It should just throw error here and should not call the result + // because that's channel for handling normal event not the fake one + ee.$call(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), [error]); + // also trigger the result handler, but wrap inside the error key + ee.$call(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [{ error: error }]); + } + ); +}; + +/** + * get the private namespace + * @param {array} namespaces array + * @return {*} string on success + */ +var getPrivateNamespace = function (namespaces) { return ( + namespaces.length > 1 ? namespaces[0] : false +); }; + +/** + * centralize all the comm in one place + * @param {object} opts configuration + * @param {array} namespaces namespace(s) + * @param {object} ee Event Emitter instance + * @param {function} bindWsHandler binding the ee to ws --> this is the core bit + * @param {array} namespaces array of namespace available + * @param {object} nsps namespaced nsp + * @return {void} nothing + */ +function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, nsps) { + // @1.1.3 add isPrivate prop to id which namespace is the private nsp + // then we can use this prop to determine if we need to fire the ON_LOGIN_PROP_NAME event + var privateNamespace = getPrivateNamespace(namespaces); + var isPrivate = false; + // loop + // @BUG for io this has to be in order the one with auth need to get call first + // The order of login is very import we need to run a waterfall here to make sure + // one is execute then the other + namespaces.forEach(function (namespace) { + isPrivate = privateNamespace === namespace; + if (nsps[namespace]) { + debugFn$6('call bindWsHandler', isPrivate, namespace); + var args = [namespace, nsps[namespace], ee, isPrivate]; + if (opts.serverType === SOCKET_IO) { + var nspSet = nspMap.nspSet; + args.push(nspSet[namespace]); + args.push(opts); + } + Reflect.apply(bindWsHandler, null, args); + } else { + // a dummy placeholder + notLoginWsHandler(namespace, ee); + } + }); + // this will be available regardless enableAuth + // because the server can log the client out + ee.$on(LOGOUT_EVENT_NAME, function logoutEvtHandler() { + debugFn$6('LOGOUT_EVENT_NAME'); + // disconnect(nsps, opts.serverType) + // we need to issue error to all the namespace onError handler + triggerNamespacesOnError(ee, namespaces, LOGOUT_EVENT_NAME); + // rebind all of the handler to the fake one + namespaces.forEach( function (namespace) { + clearMainEmitEvt(ee, namespace); + // clear out the nsp + nsps[namespace] = false; + // add a NOT LOGIN error if call + notLoginWsHandler(namespace, ee); + }); + }); +} + +// take the ws reply data for use + +var keys$1 = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ]; + +/** + * @param {object} payload should be string when reply but could be transformed + * @return {boolean} true is OK + */ +var isWsReply = function (payload) { + var data = payload.data; + if (data) { + var result = keys$1.filter(function (key) { return isKeyInObject$2(data, key); }); + return (result.length === keys$1.length) ? data : false; + } + return false; +}; + +/** + * @param {object} payload This is the entire ws Event Object + * @return {object} false on failed + */ +var extractWsPayload = function (payload) { + var data = payload.data; + var json = isString$1(data) ? JSON.parse(data) : data; + // debugFn('extractWsPayload', json) + var fdata; + if ((fdata = isWsReply(json)) !== false) { + return { + resolverName: fdata[WS_EVT_NAME], + data: fdata[WS_DATA_NAME], + type: fdata[WS_REPLY_TYPE] + }; + } + throw new JsonqlError('payload can not be decoded', payload) +}; + +// the WebSocket main handler + +var debugFn$7 = getDebug('ws-main-handler'); + +var ON_MESSAGE_PROP_NAME$1 = ON_MESSAGE_PROP_NAME; +var ON_RESULT_PROP_NAME$1 = ON_RESULT_PROP_NAME; +var EMIT_EVT$1 = EMIT_EVT; + +/** + * under extremely circumstances we might not even have a resolverName, then + * we issue a global error for the developer to catch it + * @param {object} ee event emitter + * @param {string} namespace nsp + * @param {string} resolverName resolver + * @param {object} json decoded payload or error object + */ +var errorTypeHandler = function (ee, namespace, resolverName, json) { + var evt = [namespace]; + if (resolverName) { + debugFn$7(("a global error on " + namespace)); + evt.push(resolverName); + } + evt.push(ON_ERROR_PROP_NAME); + var evtName = Reflect.apply(createEvt, null, evt); + // test if there is a data field + var payload = json.data || json; + ee.$trigger(evtName, [payload]); +}; + +/** + * Binding the even to socket normally + * @param {string} namespace + * @param {object} ws the nsp + * @param {object} ee EventEmitter + * @param {boolean} isPrivate to id if this namespace is private or not + * @return {object} promise resolve after the onopen event + */ +function wsMainHandler(namespace, ws, ee, isPrivate) { + // connection open + ws.onopen = function onOpenCallback() { + debugFn$7('ws.onopen listened'); + // we just call the onReady + ee.$call(ON_READY_PROP_NAME, namespace); + // need an extra parameter here to id the private nsp + if (isPrivate) { + console.log(("isPrivate and fire the ON_LOGIN_PROP_NAME " + ON_LOGIN_PROP_NAME)); + ee.$call(ON_LOGIN_PROP_NAME, namespace); + } + // add listener only after the open is called + ee.$only( + createEvt(namespace, EMIT_EVT$1), + function wsMainOnEvtHandler(resolverName, args) { + debugFn$7('calling server', resolverName, args); + ws.send( + createQueryStr(resolverName, args) + ); + } + ); + }; + + // reply + // If we change it to the event callback style + // then the payload will just be the payload and fucks up the extractWsPayload call @TODO + ws.onmessage = function onMessageCallback(payload) { + // console.log(`on.message`, typeof payload, payload) + try { + var json = extractWsPayload(payload); + var resolverName = json.resolverName; + var type = json.type; + debugFn$7('Hear from server', type, json); + switch (type) { + case EMIT_REPLY_TYPE: + var e1 = createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME$1); + var r = ee.$trigger(e1, [json]); + debugFn$7("EMIT_REPLY_TYPE", e1, r); + break; + case ACKNOWLEDGE_REPLY_TYPE: + var e2 = createEvt(namespace, resolverName, ON_RESULT_PROP_NAME$1); + var x = ee.$trigger(e2, [json]); + debugFn$7("ACKNOWLEDGE_REPLY_TYPE", e2, json); + break; + case ERROR_TYPE: + // this is handled error and we won't throw it + // we need to extract the error from json + debugFn$7("ERROR_TYPE"); + errorTypeHandler(ee, namespace, resolverName, json); + break; + // @TODO there should be an error type instead of roll into the other two types? TBC + default: + // if this happen then we should throw it and halt the operation all together + debugFn$7('Unhandled event!', json); + errorTypeHandler(ee, namespace, resolverName, json); + // let error = {error: {'message': 'Unhandled event!', type}}; + // ee.$trigger(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [error]) + } + } catch(e) { + console.error("ws.onmessage error", e); + errorTypeHandler(ee, namespace, false, e); + } + }; + // when the server close the connection + ws.onclose = function onCloseCallback() { + debugFn$7('ws.onclose callback'); + // @TODO what to do with this + // ee.$trigger(LOGOUT_EVENT_NAME, [namespace]) + }; + // listen to the LOGOUT_EVENT_NAME + ee.$on(LOGOUT_EVENT_NAME, function closeEvtHandler() { + try { + debugFn$7('terminate ws connection'); + ws.terminate(); + } catch(e) { + console.error('ws.terminate error', e); + } + }); +} + +// actually binding the event client to the socket client + +var debugFn$8 = getDebug('ws-create-client'); + +/* +import { + createNspClient, + createNspAuthClient +} from '../../tests/fixtures/create-login-clients' +*/ +/** + * Because the nsps can be throw away so it doesn't matter the scope + * this will get reuse again + * @param {object} opts configuration + * @param {object} nspMap from contract + * @param {string|null} token whether we have the token at run time + * @return {object} nsps namespace with namespace as key + */ +var createNsps = function(opts, nspMap, token) { + var nspSet = nspMap.nspSet; + var publicNamespace = nspMap.publicNamespace; + var login = false; + var namespaces = []; + var nsps = {}; + // first we need to binding all the events handler + if (opts.enableAuth && opts.useJwt) { + login = true; // just saying we need to listen to login event + namespaces = getNamespaceInOrder(nspSet, publicNamespace); + nsps = namespaces.map(function (namespace, i) { + var obj, obj$1, obj$2; + + if (i === 0) { + if (token) { + opts.token = token; + // console.log('create createNspAuthClient at run time', opts) + return ( obj = {}, obj[namespace] = createNspAuthClient(namespace, opts), obj ) + } + return ( obj$1 = {}, obj$1[namespace] = false, obj$1 ) + } + return ( obj$2 = {}, obj$2[namespace] = createNspClient(namespace, opts), obj$2 ) + }).reduce(function (first, next) { return Object.assign(first, next); }, {}); + } else { + var namespace = getNameFromPayload(nspSet); + namespaces.push(namespace); + // standard without login + // the stock version should not have a namespace + nsps[namespace] = createNspClient(false, opts); + } + // return + return { nsps: nsps, namespaces: namespaces, login: login } +}; + +/** + * create a ws client + * @param {object} opts configuration + * @param {object} nspMap namespace with resolvers + * @param {object} ee EventEmitter to pass through + * @return {object} what comes in what goes out + */ +function createClient(opts, nspMap, ee) { + // arguments that don't change + var args = [opts, nspMap, ee, wsMainHandler]; + // now create the nsps + var token = opts.token; + var ref = createNsps(opts, nspMap, token); + var nsps = ref.nsps; + var namespaces = ref.namespaces; + var login = ref.login; + // binding the listeners - and it will listen to LOGOUT event + // to unbind itself, and the above call will bind it again + Reflect.apply(clientEventHandler, null, args.concat([namespaces, nsps])); + // setup listener + if (login) { + ee.$only(LOGIN_EVENT_NAME, function loginEventHandler(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 + // disconnect(nsps, JS_WS_NAME) + + // @TODO should we trigger error on this one? + // triggerNamespacesOnError(ee, namespaces, LOGIN_EVENT_NAME) + clearMainEmitEvt(ee, namespaces); + // console.log('LOGIN_EVENT_NAME', token) + var newNsps = createNsps(opts, nspMap, tokenLater); + // rebind it + Reflect.apply( + clientEventHandler, + null, + args.concat([newNsps.namespaces, newNsps.nsps]) + ); + }); + } + // return what input + return { opts: opts, nspMap: nspMap, ee: ee } +} + +// share method to create the wsClientResolver + +/** + * combine the create client resolver + * @param {object} ws the different WebSocket module + * @return {function} the wsClientResolver + */ +function createClientResolver(ws) { + var client = createWsClient(ws); + var authClient = createWsClient(ws, true); + /** + * wsClientResolver + * @param {object} opts configuration + * @param {object} nspMap from the contract + * @param {object} ee instance of the eventEmitter + * @return {object} passing the same 3 input out with additional in the opts + */ + return function(opts, nspMap, ee) { + opts.nspClient = client; + opts.nspAuthClient = authClient; + + // console.log(`contract`, opts.contract) + + return createClient(opts, nspMap, ee) + } +} + +// this will be the news style interface that will pass to the jsonql-ws-client + +/** + * @param {object} opts configuration + * @param {object} nspMap from the contract + * @param {object} ee instance of the eventEmitter + * @return {object} passing the same 3 input out with additional in the opts + */ +var wsClientResolver = createClientResolver(WebSocket); + +global$1.debug = debug$2; + +// export back the function and that's it +var node = wsClient(wsClientResolver, constProps); + +module.exports = node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map index 9f5509fa..cea8d4d6 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"jsonql-ws-client.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"jsonql-ws-client.cjs.js","sources":["../node_modules/rollup-plugin-node-globals/src/global.js","../node_modules/jsonql-errors/src/500-error.js","../node_modules/jsonql-errors/src/error-base.js","../node_modules/jsonql-errors/src/enum-error.js","../node_modules/jsonql-errors/src/type-error.js","../node_modules/jsonql-errors/src/checker-error.js","../node_modules/jsonql-errors/src/validation-error.js","../node_modules/jsonql-errors/src/server-error.js","../node_modules/jsonql-ws-client/src/options/constants.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/_baseSlice.js","../node_modules/lodash-es/_baseFindIndex.js","../node_modules/lodash-es/_baseIsNaN.js","../node_modules/lodash-es/_strictIndexOf.js","../node_modules/lodash-es/_asciiToArray.js","../node_modules/lodash-es/_hasUnicode.js","../node_modules/lodash-es/_unicodeToArray.js","../node_modules/jsonql-utils/src/generic.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_safeGet.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_shortOut.js","../node_modules/jsonql-utils/src/contract.js","../node_modules/jsonql-utils/src/params-api.js","../node_modules/jsonql-utils/module.js","../node_modules/lodash-es/isNull.js","../node_modules/lodash-es/isUndefined.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/lodash-es/_baseHasIn.js","../node_modules/lodash-es/_baseProperty.js","../node_modules/lodash-es/negate.js","../node_modules/lodash-es/_baseFindKey.js","../node_modules/jsonql-params-validator/src/not-empty.js","../node_modules/jsonql-params-validator/src/number.js","../node_modules/jsonql-params-validator/src/string.js","../node_modules/jsonql-params-validator/src/boolean.js","../node_modules/jsonql-params-validator/src/any.js","../node_modules/jsonql-params-validator/src/constants.js","../node_modules/jsonql-params-validator/src/combine.js","../node_modules/jsonql-params-validator/src/array.js","../node_modules/jsonql-params-validator/src/object.js","../node_modules/jsonql-params-validator/src/log.js","../node_modules/jsonql-params-validator/src/validator.js","../node_modules/jsonql-params-validator/src/is-in-array.js","../node_modules/jsonql-params-validator/src/options/run-validation.js","../node_modules/jsonql-params-validator/src/options/check-options-async.js","../node_modules/jsonql-params-validator/src/options/construct-config.js","../node_modules/jsonql-params-validator/src/options/index.js","../node_modules/jsonql-params-validator/index.js","../node_modules/nb-event-service/src/hash-code.js","../node_modules/nb-event-service/src/suspend.js","../node_modules/nb-event-service/src/store-service.js","../node_modules/nb-event-service/src/event-service.js","../node_modules/nb-event-service/index.js","../node_modules/jsonql-ws-client/src/utils/process-contract.js","../node_modules/jsonql-ws-client/src/utils/helpers.js","../node_modules/jsonql-ws-client/src/core/respond-handler.js","../node_modules/jsonql-ws-client/src/core/action-call.js","../node_modules/jsonql-ws-client/src/core/setup-resolver.js","../node_modules/jsonql-ws-client/src/core/resolver-methods.js","../node_modules/jsonql-ws-client/src/core/generator.js","../node_modules/jsonql-ws-client/src/options/index.js","../node_modules/jsonql-ws-client/src/api.js","../src/options/index.js","../src/core/create-ws-client.js","../node_modules/jsonql-ws-client/src/share/create-nsp-client.js","../node_modules/jsonql-ws-client/src/share/trigger-namespaces-on-error.js","../node_modules/jsonql-ws-client/src/share/client-event-handler.js","../src/core/extract-ws-payload.js","../src/core/ws-main-handler.js","../src/core/create-client.js","../src/core/create-client-resolver.js","../src/node-ws-client-resolver.js"],"sourcesContent":["export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","/**\n * This is a custom error to throw when server throw a 500\n * This help us to capture the right error, due to the call happens in sequence\n * @param {string} message to tell what happen\n * @param {mixed} extra things we want to add, 500?\n */\nexport default class Jsonql500Error extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = Jsonql500Error.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Jsonql500Error);\n }\n }\n\n static get statusCode() {\n return 500;\n }\n\n static get name() {\n return 'Jsonql500Error';\n }\n\n}\n","// The base Error of all\nimport whereAmI from './where-am-i'\n\nexport default class JsonqlBaseError extends Error {\n constructor(...args) {\n super(...args)\n }\n\n static where() {\n return whereAmI()\n }\n \n}\n","// this get throw from within the checkOptions when run through the enum failed\nexport default class JsonqlEnumError extends Error {\n constructor(...args) {\n super(...args);\n \n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlEnumError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlEnumError);\n }\n }\n\n static get name() {\n return 'JsonqlEnumError';\n }\n}\n","// this will throw from inside the checkOptions\nexport default class JsonqlTypeError extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlTypeError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlTypeError);\n }\n }\n\n static get name() {\n return 'JsonqlTypeError';\n }\n}\n","// allow supply a custom checker function\n// if that failed then we throw this error\nexport default class JsonqlCheckerError extends Error {\n constructor(...args) {\n super(...args);\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlCheckerError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlCheckerError);\n }\n }\n\n static get name() {\n return 'JsonqlCheckerError';\n }\n}\n","// custom validation error class\nimport JsonqlBaseError from './error-base'\n// when validaton failed\nexport default class JsonqlValidationError extends JsonqlBaseError {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlValidationError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlValidationError);\n }\n }\n\n static get name() {\n return 'JsonqlValidationError';\n }\n}\n","// this is from an example from Koa team to use for internal middleware ctx.throw\n// but after the test the res.body part is unable to extract the required data\n// I keep this one here for future reference\n\nexport default class JsonqlServerError extends Error {\n\n constructor(statusCode, message) {\n super(message);\n this.statusCode = statusCode;\n this.className = JsonqlServerError.name;\n }\n\n static get name() {\n return 'JsonqlServerError';\n }\n}\n","// constants\n\nimport {\n EMIT_REPLY_TYPE,\n JS_WS_SOCKET_IO_NAME,\n JS_WS_NAME,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME\n} from 'jsonql-constants'\n\nconst SOCKET_IO = JS_WS_SOCKET_IO_NAME;\nconst WS = JS_WS_NAME;\n\nconst AVAILABLE_SERVERS = [SOCKET_IO, WS]\n\nconst SOCKET_NOT_DEFINE_ERR = 'socket is not define in the contract file!';\n\nconst SERVER_NOT_SUPPORT_ERR = 'is not supported server name!';\n\nconst MISSING_PROP_ERR = 'Missing property in contract!';\n\nconst UNKNOWN_CLIENT_ERR = 'Unknown client type!';\n\nconst EXPECT_FUNC_ERR = `Expect a function!`\n\nconst EMIT_EVT = EMIT_REPLY_TYPE;\n\nconst NAMESPACE_KEY = 'namespaceMap';\n\nconst UNKNOWN_RESULT = 'UKNNOWN RESULT!';\n\nconst NOT_ALLOW_OP = 'This operation is not allow!';\n\nconst MY_NAMESPACE = 'myNamespace'\n\nexport {\n SOCKET_IO,\n WS,\n AVAILABLE_SERVERS,\n SOCKET_NOT_DEFINE_ERR,\n SERVER_NOT_SUPPORT_ERR,\n MISSING_PROP_ERR,\n UNKNOWN_CLIENT_ERR,\n EMIT_EVT,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n NAMESPACE_KEY,\n UNKNOWN_RESULT,\n NOT_ALLOW_OP,\n MY_NAMESPACE,\n EXPECT_FUNC_ERR\n}\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","// bunch of generic helpers\n\nimport isArray from 'lodash-es/isArray'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport trim from 'lodash-es/trim'\n\n/**\n * DIY in Array\n * @param {array} arr to check from\n * @param {*} value to check against\n * @return {boolean} true on found\n */\nexport const inArray = (arr, value) => !!arr.filter(a => a === value).length;\n\n// quick and dirty to turn non array to array\nexport const toArray = (arg) => isArray(arg) ? arg : [arg];\n\n/**\n * parse string to json or just return the original value if error happened\n * @param {*} n input\n * @return {*} json object on success\n */\nconst parse = function(n) {\n try {\n return JSON.parse(n)\n } catch(e) {\n return n;\n }\n}\n\n\n/**\n * @param {object} obj for search\n * @param {string} key target\n * @return {boolean} true on success\n */\nexport const isKeyInObject = function(obj, key) {\n const keys = Object.keys(obj)\n return inArray(keys, key)\n}\n\n/**\n * create a event name\n * @param {string[]} args\n * @return {string} event name for use\n */\nexport const createEvt = (...args) => args.join('_')\n\n/**\n * @param {boolean} sec return in second or not\n * @return {number} timestamp\n */\nexport const timestamp = (sec = false) => {\n let time = Date.now()\n return sec ? Math.floor( time / 1000 ) : time;\n}\n\n/**\n * construct a url with query parameters\n * @param {string} url to append\n * @param {object} params to append to url\n * @return {string} url with appended params\n */\nexport const urlParams = (url, params) => {\n let parts = [];\n for (let key in params) {\n parts.push( [key, params[key]].join('=') )\n }\n return [url, parts.join('&')].join('?')\n}\n\n/**\n * construct a url with cache burster\n * @param {string} url to append to\n * @return {object} _cb key timestamp\n */\nexport const cacheBurstUrl = url => urlParams(url, cacheBurst())\n\n/**\n * @return {object} _cb as key with timestamp\n */\nexport const cacheBurst = () => ({ _cb: timestamp() })\n\n/**\n * From underscore.string library\n * @BUG there is a bug here with the non-standard name start with _\n * @param {string} str string\n * @return {string} dasherize string\n */\nexport const dasherize = str => (\n trim(str)\n .replace(/([A-Z])/g, '-$1')\n .replace(/[-_\\s]+/g, '-')\n .toLowerCase()\n)\n\n/**\n * simple util method to get the value\n * @param {string} name of the key\n * @param {object} obj to take value from\n * @return {*} the object value id by name or undefined\n */\nexport const getConfigValue = (name, obj) => (\n obj && isPlainObject(obj) ? ( (name in obj) ? obj[name] : undefined ) : undefined\n)\n\n/**\n * small util to make sure the return value is valid JSON object\n * @param {*} n input\n * @return {object} correct JSON object\n */\nexport const toJson = (n) => {\n if (typeof n === 'string') {\n return parse(n)\n }\n return JSON.parse(JSON.stringify(n))\n}\n\n/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nexport const isNotEmpty = function(param) {\n return param !== undefined && param !== false && param !== null && trim(param) !== '';\n}\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","// split the contract into the node side and the generic side\nimport { isKeyInObject } from './generic'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport {\n QUERY_NAME,\n MUTATION_NAME,\n SOCKET_NAME,\n QUERY_ARG_NAME,\n PAYLOAD_PARAM_NAME,\n CONDITION_PARAM_NAME\n} from 'jsonql-constants'\nimport { JsonqlError, JsonqlResolverNotFoundError } from 'jsonql-errors'\n/**\n * Check if the json is a contract file or not\n * @param {object} contract json object\n * @return {boolean} true\n */\nexport function checkIsContract(contract) {\n return isPlainObject(contract)\n && (\n isKeyInObject(contract, QUERY_NAME)\n || isKeyInObject(contract, MUTATION_NAME)\n || isKeyInObject(contract, SOCKET_NAME)\n )\n}\n\n/**\n * Ported from jsonql-params-validator but different\n * if we don't find the socket part then return false\n * @param {object} contract the contract object\n * @return {object|boolean} false on failed\n */\nexport function extractSocketPart(contract) {\n if (isKeyInObject(contract, 'socket')) {\n return contract.socket;\n }\n return false;\n}\n\n/**\n * @BUG we should check the socket part instead of expect the downstream to read the menu!\n * We only need this when the enableAuth is true otherwise there is only one namespace\n * @param {object} contract the socket part of the contract file\n * @param {boolean} [fallback=false] this is a fall back option for old code\n * @return {object} 1. remap the contract using the namespace --> resolvers\n * 2. the size of the object (1 all private, 2 mixed public with private)\n * 3. which namespace is public\n */\nexport function groupByNamespace(contract, fallback = false) {\n let socket = extractSocketPart(contract)\n if (socket === false) {\n if (fallback) {\n return contract; // just return the whole contract\n }\n throw new JsonqlError(`socket not found in contract!`)\n }\n let nspSet = {};\n let size = 0;\n let publicNamespace;\n for (let resolverName in socket) {\n let params = socket[resolverName];\n let { namespace } = params;\n if (namespace) {\n if (!nspSet[namespace]) {\n ++size;\n nspSet[namespace] = {};\n }\n nspSet[namespace][resolverName] = params;\n if (!publicNamespace) {\n if (params.public) {\n publicNamespace = namespace;\n }\n }\n }\n }\n return { size, nspSet, publicNamespace }\n}\n\n/**\n * @NOTE ported from jsonql-ws-client\n * Got to make sure the connection order otherwise\n * it will hang\n * @param {object} nspSet contract\n * @param {string} publicNamespace like the name said\n * @return {array} namespaces in order\n */\nexport function getNamespaceInOrder(nspSet, publicNamespace) {\n let names = []; // need to make sure the order!\n for (let namespace in nspSet) {\n if (namespace === publicNamespace) {\n names[1] = namespace;\n } else {\n names[0] = namespace;\n }\n }\n return names;\n}\n\n\n/**\n * Extract the args from the payload\n * @param {object} payload to work with\n * @param {string} type of call\n * @return {array} args\n */\nexport function extractArgsFromPayload(payload, type) {\n switch (type) {\n case QUERY_NAME:\n return payload[QUERY_ARG_NAME];\n case MUTATION_NAME:\n return [\n payload[PAYLOAD_PARAM_NAME],\n payload[CONDITION_PARAM_NAME]\n ];\n default:\n throw new JsonqlError(`Unknown ${type} to extract argument from!`)\n }\n}\n\n/**\n * Like what the name said\n * @param {object} contract the contract json\n * @param {string} type query|mutation\n * @param {string} name of the function\n * @return {object} the params part of the contract\n */\nexport function extractParamsFromContract(contract, type, name) {\n try {\n const result = contract[type][name];\n // debug('extractParamsFromContract', result)\n if (!result) {\n // debug(name, type, contract)\n throw new JsonqlResolverNotFoundError(name, type)\n }\n return result;\n } catch(e) {\n throw new JsonqlResolverNotFoundError(name, e)\n }\n}\n","// ported from jsonql-params-validator\n// craete several helper function to construct / extract the payload\n// and make sure they are all the same\nimport {\n PAYLOAD_PARAM_NAME,\n CONDITION_PARAM_NAME,\n RESOLVER_PARAM_NAME,\n QUERY_ARG_NAME\n} from 'jsonql-constants'\nimport { JsonqlValidationError } from 'jsonql-errors'\n\nimport isArray from 'lodash-es/isArray'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport isString from 'lodash-es/isString'\n\n/**\n * make sure it's an object (it was call formatPayload but it doesn't make sense)\n * @param {*} payload the object comes in could be string based\n * @return {object} the transformed payload\n */\nexport const toPayload = payload => isString(payload) ? JSON.parse(payload) : payload;\n\n/**\n * @param {*} args arguments to send\n *@return {object} formatted payload\n */\nexport const formatPayload = (args) => (\n { [QUERY_ARG_NAME]: args }\n)\n\n/**\n * Get name from the payload (ported back from jsonql-koa)\n * @param {*} payload to extract from\n * @return {string} name\n */\nexport function getNameFromPayload(payload) {\n return Object.keys(payload)[0]\n}\n\n/**\n * @param {string} resolverName name of function\n * @param {array} [args=[]] from the ...args\n * @param {boolean} [jsonp = false] add v1.3.0 to koa\n * @return {object} formatted argument\n */\nexport function createQuery(resolverName, args = [], jsonp = false) {\n if (isString(resolverName) && isArray(args)) {\n let payload = formatPayload(args)\n if (jsonp === true) {\n return payload;\n }\n return { [resolverName]: payload }\n }\n throw new JsonqlValidationError(`[createQuery] expect resolverName to be string and args to be array!`, { resolverName, args })\n}\n\n/**\n * string version of the createQuery\n * @return {string}\n */\nexport function createQueryStr(resolverName, args = [], jsonp = false) {\n return JSON.stringify(createQuery(resolverName, args, jsonp))\n}\n\n/**\n * @param {string} resolverName name of function\n * @param {*} payload to send\n * @param {object} [condition={}] for what\n * @param {boolean} [jsonp = false] add v1.3.0 to koa\n * @return {object} formatted argument\n */\nexport function createMutation(resolverName, payload, condition = {}, jsonp = false) {\n const _payload = {\n [PAYLOAD_PARAM_NAME]: payload,\n [CONDITION_PARAM_NAME]: condition\n }\n if (jsonp === true) {\n return _payload;\n }\n if (isString(resolverName)) {\n return { [resolverName]: _payload }\n }\n throw new JsonqlValidationError(`[createMutation] expect resolverName to be string!`, { resolverName, payload, condition })\n}\n\n/**\n * string version of createMutation\n * @return {string}\n */\nexport function createMutationStr(resolverName, payload, condition = {}, jsonp = false) {\n return JSON.stringify(createMutation(resolverName, payload, condition, jsonp))\n}\n\n/**\n * Further break down from method below for use else where\n * @param {string} resolverName name of fn\n * @param {object} payload payload\n * @return {object|boolean} false on failed\n */\nexport function getQueryFromArgs(resolverName, payload) {\n if (resolverName && isPlainObject(payload)) {\n const args = payload[resolverName]\n if (args[QUERY_ARG_NAME]) {\n return {\n [RESOLVER_PARAM_NAME]: resolverName,\n [QUERY_ARG_NAME]: args[QUERY_ARG_NAME]\n }\n }\n }\n return false;\n}\n\n/**\n * Share function so no repeat\n * @param {object} payload the payload from client\n * @param {function} processor the last get result method\n * @return {*} result processed result\n */\nfunction processPayload(payload, processor) {\n const p = toPayload(payload)\n const resolverName = getNameFromPayload(p)\n return Reflect.apply(processor, null, [resolverName, p])\n}\n\n/**\n * extra the payload back\n * @param {*} payload from http call\n * @return {object} resolverName and args\n */\nexport function getQueryFromPayload(payload) {\n const result = processPayload(payload, getQueryFromArgs)\n if (result !== false) {\n return result;\n }\n throw new JsonqlValidationError('[getQueryArgs] Payload is malformed!', payload)\n}\n\n/**\n * Further break down from method below for use else where\n * @param {string} resolverName name of fn\n * @param {object} payload payload\n * @return {object|boolean} false on failed\n */\nexport function getMutationFromArgs(resolverName, payload) {\n if (resolverName && isPlainObject(payload)) {\n const args = payload[resolverName]\n if (args) {\n return {\n [RESOLVER_PARAM_NAME]: resolverName,\n [PAYLOAD_PARAM_NAME]: args[PAYLOAD_PARAM_NAME],\n [CONDITION_PARAM_NAME]: args[CONDITION_PARAM_NAME]\n }\n }\n }\n return false;\n}\n\n/**\n * @param {object} payload\n * @return {object} resolverName, payload, conditon\n */\nexport function getMutationFromPayload(payload) {\n const result = processPayload(payload, getMutationFromArgs)\n\n if (result !== false) {\n return result;\n }\n throw new JsonqlValidationError('[getMutationArgs] Payload is malformed!', payload)\n}\n","// exportfor ES modules\n// ported from jsonql-params-validator\nimport { chainFns } from './src/chain-fns'\nimport { chainPromises } from './src/chain-promises'\nimport { injectToFn, objDefineProps } from './src/obj-define-props'\nimport {\n checkIsContract,\n extractSocketPart,\n groupByNamespace,\n getNamespaceInOrder,\n extractArgsFromPayload,\n extractParamsFromContract\n} from './src/contract'\nimport {\n inArray,\n toArray,\n isKeyInObject,\n createEvt,\n timestamp,\n urlParams,\n cacheBurst,\n cacheBurstUrl,\n dasherize,\n getConfigValue,\n isNotEmpty,\n toJson\n} from './src/generic'\nimport {\n toPayload,\n formatPayload,\n createQuery,\n createQueryStr,\n createMutation,\n createMutationStr,\n getQueryFromArgs,\n getQueryFromPayload,\n getMutationFromArgs,\n getMutationFromPayload,\n getNameFromPayload\n} from './src/params-api'\nimport {\n getCallMethod,\n packResult,\n packError,\n resultHandler,\n isJsonqlErrorObj\n} from './src/results'\n\n// alias\nconst isContract = checkIsContract;\nconst VERSION = '__VERSION__'\n// exports\nexport {\n getCallMethod,\n packResult,\n packError,\n resultHandler,\n isJsonqlErrorObj,\n // chain-fns\n chainFns,\n chainPromises,\n // contract\n extractArgsFromPayload,\n extractParamsFromContract,\n checkIsContract,\n extractSocketPart,\n groupByNamespace,\n getNamespaceInOrder,\n isContract, // alias\n // generic\n inArray,\n toArray,\n isKeyInObject,\n dasherize,\n createEvt,\n timestamp,\n urlParams,\n cacheBurst,\n cacheBurstUrl,\n getConfigValue,\n isNotEmpty,\n toJson,\n // params-api\n toPayload,\n formatPayload,\n createQuery,\n createQueryStr,\n createMutation,\n createMutationStr,\n getQueryFromArgs,\n getQueryFromPayload,\n getMutationFromArgs,\n getMutationFromPayload,\n getNameFromPayload,\n // objectDefineProp\n injectToFn,\n objDefineProps,\n VERSION\n}\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n","/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n}\n\nexport default baseFindKey;\n","/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nimport { trim, isArray } from './lodash'\n\nexport default a => {\n if (isArray(a)) {\n return true;\n }\n return a !== undefined && a !== null && trim(a) !== '';\n}\n","// validator numbers\n// import { NUMBER_TYPES } from './constants';\nimport { isNaN, isString } from './lodash'\n/**\n * @2015-05-04 found a problem if the value is a number like string\n * it will pass, so add a check if it's string before we pass to next\n * @param {number} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsNumber = function(value) {\n return isString(value) ? false : !isNaN( parseFloat(value) )\n}\n\nexport default checkIsNumber\n","// validate string type\nimport { isString, trim } from './lodash'\n/**\n * @param {string} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsString = function(value) {\n return (trim(value) !== '') ? isString(value) : false;\n}\n\nexport default checkIsString;\n","// check for boolean\nimport { isBoolean } from './lodash'\n/**\n * @param {boolean} value expected\n * @return {boolean} true if OK\n */\nconst checkIsBoolean = function(value) {\n return isBoolean(value);\n};\n\nexport default checkIsBoolean\n","// validate any thing only check if there is something\n\nimport { isNull, trim, isUndefined } from './lodash'\n/**\n * @param {*} value the value\n * @param {boolean} [checkNull=true] strict check if there is null value\n * @return {boolean} true is OK\n */\nconst checkIsAny = function(value, checkNull = true) {\n if (!isUndefined(value) && value !== '' && trim(value) !== '') {\n if (checkNull === false || (checkNull === true && !isNull(value))) {\n return true;\n }\n }\n return false;\n};\n\nexport default checkIsAny\n","// Good practice rule - No magic number\n\nexport const 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)`;\nexport const PARAMS_NOT_ARRAY_ERR = `params is not an array! Did something gone wrong when you generate the contract.json?`;\nexport const EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!';\nexport const UNUSUAL_CASE_ERR = 'This is an unusual situation where the arguments are more than the params, but not mark as spread';\n\n// re-export\nimport * as JSONQL_CONSTANTS from 'jsonql-constants';\n// @TODO the jsdoc return array. and we should also allow array syntax\nexport const DEFAULT_TYPE = JSONQL_CONSTANTS.DEFAULT_TYPE;\nexport const ARRAY_TYPE_LFT = JSONQL_CONSTANTS.ARRAY_TYPE_LFT;\nexport const ARRAY_TYPE_RGT = JSONQL_CONSTANTS.ARRAY_TYPE_RGT;\n\nexport const TYPE_KEY = JSONQL_CONSTANTS.TYPE_KEY;\nexport const OPTIONAL_KEY = JSONQL_CONSTANTS.OPTIONAL_KEY;\nexport const ENUM_KEY = JSONQL_CONSTANTS.ENUM_KEY;\nexport const ARGS_KEY = JSONQL_CONSTANTS.ARGS_KEY;\nexport const CHECKER_KEY = JSONQL_CONSTANTS.CHECKER_KEY;\nexport const ALIAS_KEY = JSONQL_CONSTANTS.ALIAS_KEY;\n\nexport const ARRAY_TYPE = JSONQL_CONSTANTS.ARRAY_TYPE;\nexport const OBJECT_TYPE = JSONQL_CONSTANTS.OBJECT_TYPE;\nexport const STRING_TYPE = JSONQL_CONSTANTS.STRING_TYPE;\nexport const BOOLEAN_TYPE = JSONQL_CONSTANTS.BOOLEAN_TYPE;\nexport const NUMBER_TYPE = JSONQL_CONSTANTS.NUMBER_TYPE;\nexport const KEY_WORD = JSONQL_CONSTANTS.KEY_WORD;\nexport const OR_SEPERATOR = JSONQL_CONSTANTS.OR_SEPERATOR;\n\n// not actually in use\n// export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES;\n","// primitive types\nimport checkIsNumber from './number'\nimport checkIsString from './string'\nimport checkIsBoolean from './boolean'\nimport checkIsAny from './any'\nimport { NUMBER_TYPE, STRING_TYPE, BOOLEAN_TYPE } from './constants'\n\n/**\n * this is a wrapper method to call different one based on their type\n * @param {string} type to check\n * @return {function} a function to handle the type\n */\nconst combineFn = function(type) {\n switch (type) {\n case NUMBER_TYPE:\n return checkIsNumber;\n case STRING_TYPE:\n return checkIsString;\n case BOOLEAN_TYPE:\n return checkIsBoolean;\n default:\n return checkIsAny;\n }\n}\n\nexport default combineFn\n","// validate array type\nimport { isArray, trim } from './lodash'\nimport combineFn from './combine'\nimport {\n ARRAY_TYPE_LFT,\n ARRAY_TYPE_RGT,\n OR_SEPERATOR\n} from './constants'\n\n/**\n * @param {array} value expected\n * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well\n * @return {boolean} true if OK\n */\nexport const checkIsArray = function(value, type='') {\n if (isArray(value)) {\n if (type === '' || trim(type)==='') {\n return true;\n }\n // we test it in reverse\n // @TODO if the type is an array (OR) then what?\n // we need to take into account this could be an array\n const c = value.filter(v => !combineFn(type)(v))\n return !(c.length > 0)\n }\n return false;\n}\n\n/**\n * check if it matches the array. pattern\n * @param {string} type\n * @return {boolean|array} false means NO, always return array\n */\nexport const isArrayLike = function(type) {\n // @TODO could that have something like array<> instead of array.<>? missing the dot?\n // because type script is Array without the dot\n if (type.indexOf(ARRAY_TYPE_LFT) > -1 && type.indexOf(ARRAY_TYPE_RGT) > -1) {\n const _type = type.replace(ARRAY_TYPE_LFT, '').replace(ARRAY_TYPE_RGT, '')\n if (_type.indexOf(OR_SEPERATOR)) {\n return _type.split(OR_SEPERATOR)\n }\n return [_type]\n }\n return false;\n}\n\n/**\n * we might encounter something like array. then we need to take it apart\n * @param {object} p the prepared object for processing\n * @param {string|array} type the type came from \n * @return {boolean} for the filter to operate on\n */\nexport const arrayTypeHandler = function(p, type) {\n const { arg } = p;\n // need a special case to handle the OR type\n // we need to test the args instead of the type(s)\n if (type.length > 1) {\n return !arg.filter(v => (\n !(type.length > type.filter(t => !combineFn(t)(v)).length)\n )).length;\n }\n // type is array so this will be or!\n return type.length > type.filter(t => !checkIsArray(arg, t)).length;\n}\n","// validate object type\nimport { isPlainObject, isUndefined, filter } from './lodash'\nimport combineFn from './combine'\nimport { checkIsArray, isArrayLike, arrayTypeHandler } from './array'\n/**\n * @TODO if provide with the keys then we need to check if the key:value type as well\n * @param {object} value expected\n * @param {array} [keys=null] if it has the keys array to compare as well\n * @return {boolean} true if OK\n */\nexport const checkIsObject = function(value, keys=null) {\n if (isPlainObject(value)) {\n if (!keys) {\n return true;\n }\n if (checkIsArray(keys)) {\n // please note we DON'T care if some is optional\n // plese refer to the contract.json for the keys\n return !keys.filter(key => {\n let _value = value[key.name];\n return !(key.type.length > key.type.filter(type => {\n let tmp;\n if (!isUndefined(_value)) {\n if ((tmp = isArrayLike(type)) !== false) {\n return !arrayTypeHandler({arg: _value}, tmp)\n // return tmp.filter(t => !checkIsArray(_value, t)).length;\n // @TODO there might be an object within an object with keys as well :S\n }\n return !combineFn(type)(_value)\n }\n return true;\n }).length)\n }).length;\n }\n }\n return false;\n}\n\n/**\n * fold this into it's own function to handler different object type\n * @param {object} p the prepared object for process\n * @return {boolean}\n */\nexport const objectTypeHandler = function(p) {\n const { arg, param } = p;\n let _args = [arg];\n if (Array.isArray(param.keys) && param.keys.length) {\n _args.push(param.keys)\n }\n // just simple check\n return checkIsObject.apply(null, _args)\n}\n","/**\n * just a simple util for helping to debug\n * @param {array} args arguments\n * @return {void}\n */\nexport default function log(...args) {\n try {\n if (window && window.console) {\n Reflect.apply(console.log, console, args)\n }\n } catch(e) {}\n}\n","// move the index.js code here that make more sense to find where things are\nimport { isUndefined } from './lodash'\nimport {\n checkIsArray,\n isArrayLike,\n arrayTypeHandler,\n objectTypeHandler,\n checkIsObject,\n combineFn,\n notEmpty\n} from './index'\nimport {\n DEFAULT_TYPE,\n ARRAY_TYPE,\n OBJECT_TYPE,\n ARGS_NOT_ARRAY_ERR,\n PARAMS_NOT_ARRAY_ERR,\n EXCEPTION_CASE_ERR,\n UNUSUAL_CASE_ERR\n} from './constants'\nimport { DATA_KEY, ERROR_KEY } from 'jsonql-constants'\nimport { JsonqlError } from 'jsonql-errors'\nimport log from './log'\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:validator')\n// also export this for use in other places\n\n/**\n * We need to handle those optional parameter without a default value\n * @param {object} params from contract.json\n * @return {boolean} for filter operation false is actually OK\n */\nconst optionalHandler = function( params ) {\n const { arg, param } = params;\n if (notEmpty(arg)) {\n // debug('call optional handler', arg, params);\n // loop through the type in param\n return !(param.type.length > param.type.filter(type =>\n validateHandler(type, params)\n ).length)\n }\n return false;\n}\n\n/**\n * actually picking the validator\n * @param {*} type for checking\n * @param {*} value for checking\n * @return {boolean} true on OK\n */\nconst validateHandler = function(type, value) {\n let tmp;\n switch (true) {\n case type === OBJECT_TYPE:\n // debugFn('call OBJECT_TYPE')\n return !objectTypeHandler(value)\n case type === ARRAY_TYPE:\n // debugFn('call ARRAY_TYPE')\n return !checkIsArray(value.arg)\n // @TODO when the type is not present, it always fall through here\n // so we need to find a way to actually pre-check the type first\n // AKA check the contract.json map before running here\n case (tmp = isArrayLike(type)) !== false:\n // debugFn('call ARRAY_LIKE: %O', value)\n return !arrayTypeHandler(value, tmp)\n default:\n return !combineFn(type)(value.arg)\n }\n}\n\n/**\n * it get too longer to fit in one line so break it out from the fn below\n * @param {*} arg value\n * @param {object} param config\n * @return {*} value or apply default value\n */\nconst getOptionalValue = function(arg, param) {\n if (!isUndefined(arg)) {\n return arg;\n }\n return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null)\n}\n\n/**\n * padding the arguments with defaultValue if the arguments did not provide the value\n * this will be the name export\n * @param {array} args normalized arguments\n * @param {array} params from contract.json\n * @return {array} merge the two together\n */\nexport const normalizeArgs = function(args, params) {\n // first we should check if this call require a validation at all\n // there will be situation where the function doesn't need args and params\n if (!checkIsArray(params)) {\n // debugFn('params value', params)\n throw new JsonqlError(PARAMS_NOT_ARRAY_ERR)\n }\n if (params.length === 0) {\n return [];\n }\n if (!checkIsArray(args)) {\n throw new JsonqlError(ARGS_NOT_ARRAY_ERR)\n }\n // debugFn(args, params);\n // fall through switch\n switch(true) {\n case args.length == params.length: // standard\n log(1)\n return args.map((arg, i) => (\n {\n arg,\n index: i,\n param: params[i]\n }\n ))\n case params[0].variable === true: // using spread syntax\n log(2)\n const type = params[0].type;\n return args.map((arg, i) => (\n {\n arg,\n index: i, // keep the index for reference\n param: params[i] || { type, name: '_' }\n }\n ))\n // with optional defaultValue parameters\n case args.length < params.length:\n log(3)\n return params.map((param, i) => (\n {\n param,\n index: i,\n arg: getOptionalValue(args[i], param),\n optional: param.optional || false\n }\n ))\n // this one pass more than it should have anything after the args.length will be cast as any type\n case args.length > params.length:\n log(4)\n let ctn = params.length;\n // this happens when we have those array. type\n let _type = [ DEFAULT_TYPE ]\n // we only looking at the first one, this might be a @BUG\n /*\n if ((tmp = isArrayLike(params[0].type[0])) !== false) {\n _type = tmp;\n } */\n // if we use the params as guide then the rest will get throw out\n // which is not what we want, instead, anything without the param\n // will get a any type and optional flag\n return args.map((arg, i) => {\n let optional = i >= ctn ? true : !!params[i].optional\n let param = params[i] || { type: _type, name: `_${i}` }\n return {\n arg: optional ? getOptionalValue(arg, param) : arg,\n index: i,\n param,\n optional\n }\n })\n // @TODO find out if there is more cases not cover\n default: // this should never happen\n log(5)\n // debugFn('args', args)\n // debugFn('params', params)\n // this is unknown therefore we just throw it!\n throw new JsonqlError(EXCEPTION_CASE_ERR, { args, params })\n }\n}\n\n// what we want is after the validaton we also get the normalized result\n// which is with the optional property if the argument didn't provide it\n/**\n * process the array of params back to their arguments\n * @param {array} result the params result\n * @return {array} arguments\n */\nconst processReturn = result => result.map(r => r.arg)\n\n/**\n * validator main interface\n * @param {array} args the arguments pass to the method call\n * @param {array} params from the contract for that method\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {array} empty array on success, or failed parameter and reasons\n */\nexport const validateSync = function(args, params, withResult = false) {\n let cleanArgs = normalizeArgs(args, params)\n let checkResult = cleanArgs.filter(p => {\n // v1.4.4 this fixed the problem, the root level optional is from the last fn\n if (p.optional === true || p.param.optional === true) {\n return optionalHandler(p)\n }\n // because array of types means OR so if one pass means pass\n return !(p.param.type.length > p.param.type.filter(\n type => validateHandler(type, p)\n ).length)\n })\n // using the same convention we been using all this time\n return !withResult ? checkResult : {\n [ERROR_KEY]: checkResult,\n [DATA_KEY]: processReturn(cleanArgs)\n }\n}\n\n/**\n * A wrapper method that return promise\n * @param {array} args arguments\n * @param {array} params from contract.json\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {object} promise.then or catch\n */\nexport const validateAsync = function(args, params, withResult = false) {\n return new Promise((resolver, rejecter) => {\n const result = validateSync(args, params, withResult)\n if (withResult) {\n return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY])\n : resolver(result[DATA_KEY])\n }\n // the different is just in the then or catch phrase\n return result.length ? rejecter(result) : resolver([])\n })\n}\n","/**\n * @param {array} arr Array for check\n * @param {*} value target\n * @return {boolean} true on successs\n */\nconst isInArray = function(arr, value) {\n return !!arr.filter(a => a === value).length;\n}\n\nexport default isInArray\n","// breaking the whole thing up to see what cause the multiple calls issue\n\nimport { isFunction, merge, mapValues } from '../lodash'\nimport {\n JsonqlEnumError,\n JsonqlTypeError,\n JsonqlCheckerError\n} from 'jsonql-errors'\nimport log from '../log'\nimport {\n TYPE_KEY,\n OPTIONAL_KEY,\n ENUM_KEY,\n ARGS_KEY,\n CHECKER_KEY,\n KEY_WORD\n} from '../constants'\nimport { checkIsArray } from '../array'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:validation')\n\n/**\n * just make sure it returns an array to use\n * @param {*} arg input\n * @return {array} output\n */\nconst toArray = arg => checkIsArray(arg) ? arg : [arg]\n\n/**\n * DIY in array\n * @param {array} arr to check against\n * @param {*} value to check\n * @return {boolean} true on OK\n */\nconst inArray = (arr, value) => (\n !!arr.filter(v => v === value).length\n)\n\n/**\n * break out to make the code easier to read\n * @param {object} value to process\n * @param {function} cb the validateSync\n * @return {array} empty on success\n */\nfunction validateHandler(value, cb) {\n // cb is the validateSync methods\n let args = [\n [ value[ARGS_KEY] ],\n [{\n [TYPE_KEY]: toArray(value[TYPE_KEY]),\n [OPTIONAL_KEY]: value[OPTIONAL_KEY]\n }]\n ]\n // debugFn('validateHandler', args)\n return Reflect.apply(cb, null, args)\n}\n\n/**\n * Check against the enum value if it's provided\n * @param {*} value to check\n * @param {*} enumv to check against if it's not false\n * @return {boolean} true on OK\n */\nconst enumHandler = (value, enumv) => {\n if (checkIsArray(enumv)) {\n return inArray(enumv, value)\n }\n return true;\n}\n\n/**\n * Allow passing a function to check the value\n * There might be a problem here if the function is incorrect\n * and that will makes it hard to debug what is going on inside\n * @TODO there could be a few feature add to this one under different circumstance\n * @param {*} value to check\n * @param {function} checker for checking\n */\nconst checkerHandler = (value, checker) => {\n try {\n return isFunction(checker) ? checker.apply(null, [value]) : false;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Taken out from the runValidaton this only validate the required values\n * @param {array} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {array} of configuration values\n */\nfunction runValidationAction(cb) {\n return (value, key) => {\n // debugFn('runValidationAction', key, value)\n if (value[KEY_WORD]) {\n return value[ARGS_KEY]\n }\n const check = validateHandler(value, cb)\n if (check.length) {\n log('runValidationAction', key, value)\n throw new JsonqlTypeError(key, check)\n }\n if (value[ENUM_KEY] !== false && !enumHandler(value[ARGS_KEY], value[ENUM_KEY])) {\n log(ENUM_KEY, value[ENUM_KEY])\n throw new JsonqlEnumError(key)\n }\n if (value[CHECKER_KEY] !== false && !checkerHandler(value[ARGS_KEY], value[CHECKER_KEY])) {\n log(CHECKER_KEY, value[CHECKER_KEY])\n throw new JsonqlCheckerError(key)\n }\n return value[ARGS_KEY]\n }\n}\n\n/**\n * @param {object} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {object} of configuration values\n */\nexport default function runValidation(args, cb) {\n const [ argsForValidate, pristineValues ] = args;\n // turn the thing into an array and see what happen here\n // debugFn('_args', argsForValidate)\n const result = mapValues(argsForValidate, runValidationAction(cb))\n return merge(result, pristineValues)\n}\n","/// this is port back from the client to share across all projects\nimport { merge } from '../lodash'\nimport { prepareArgsForValidation } from './prepare-args-for-validation'\nimport runValidation from './run-validation'\n\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:check-options-async')\n\n/**\n * Quick transform\n * @param {object} config that one\n * @param {object} appProps mutation configuration options\n * @return {object} put that arg into the args\n */\nconst configToArgs = (config, appProps) => {\n return Promise.resolve(\n prepareArgsForValidation(config, appProps)\n )\n}\n\n/**\n * @param {object} config user provide configuration option\n * @param {object} appProps mutation configuration options\n * @param {object} constProps the immutable configuration options\n * @param {function} cb the validateSync method\n * @return {object} Promise resolve merge config object\n */\nexport default function(config = {}, appProps, constProps, cb) {\n return configToArgs(config, appProps)\n .then(args1 => {\n // debugFn('args', args1)\n return runValidation(args1, cb)\n })\n // next if every thing good then pass to final merging\n .then(args2 => merge({}, args2, constProps))\n}\n","// create function to construct the config entry so we don't need to keep building object\nimport { isFunction, isString } from '../lodash'\nimport {\n ARGS_KEY,\n TYPE_KEY,\n CHECKER_KEY,\n ENUM_KEY,\n OPTIONAL_KEY,\n ALIAS_KEY\n} from 'jsonql-constants'\n\nimport { checkIsArray } from '../array'\nimport checkIsBoolean from '../boolean'\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:construct-config');\n/**\n * @param {*} args value\n * @param {string} type for value\n * @param {boolean} [optional=false]\n * @param {boolean|array} [enumv=false]\n * @param {boolean|function} [checker=false]\n * @return {object} config entry\n */\nexport default function(args, type, optional=false, enumv=false, checker=false, alias=false) {\n let base = {\n [ARGS_KEY]: args,\n [TYPE_KEY]: type\n };\n if (optional === true) {\n base[OPTIONAL_KEY] = true;\n }\n if (checkIsArray(enumv)) {\n base[ENUM_KEY] = enumv;\n }\n if (isFunction(checker)) {\n base[CHECKER_KEY] = checker;\n }\n if (isString(alias)) {\n base[ALIAS_KEY] = alias;\n }\n return base;\n}\n","// export also create wrapper methods\nimport checkOptionsAsync from './check-options-async'\nimport checkOptionsSync from './check-options-sync'\nimport constructConfigFn from './construct-config'\nimport {\n ENUM_KEY,\n CHECKER_KEY,\n ALIAS_KEY,\n OPTIONAL_KEY\n} from 'jsonql-constants'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:index');\n\n/**\n * This has a different interface\n * @param {*} value to supply\n * @param {string|array} type for checking\n * @param {object} params to map against the config check\n * @param {array} params.enumv NOT enum\n * @param {boolean} params.optional false then nothing\n * @param {function} params.checker need more work on this one later\n * @param {string} params.alias mostly for cmd\n */\nconst createConfig = (value, type, params = {}) => {\n // Note the enumv not ENUM\n // const { enumv, optional, checker, alias } = params;\n // let args = [value, type, optional, enumv, checker, alias];\n const {\n [OPTIONAL_KEY]: o,\n [ENUM_KEY]: e,\n [CHECKER_KEY]: c,\n [ALIAS_KEY]: a\n } = params;\n return constructConfigFn.apply(null, [value, type, o, e, c, a])\n}\n\n// for testing purpose\nconst JSONQL_PARAMS_VALIDATOR_INFO = '__PLACEHOLDER__';\n\n/**\n * We recreate the method here to avoid the circlar import\n * @param {object} config user supply configuration\n * @param {object} appProps mutation options\n * @param {object} [constantProps={}] optional: immutation options\n * @return {object} all checked configuration\n */\nconst checkConfigAsync = function(validateSync) {\n return function(config, appProps, constantProps= {}) {\n return checkOptionsAsync(config, appProps, constantProps, validateSync)\n }\n}\n\n// copy of above but it's sync\nconst checkConfig = function(validateSync) {\n return function(config, appProps, constantProps = {}) {\n return checkOptionsSync(config, appProps, constantProps, validateSync)\n }\n}\n\n// re-export\nexport {\n createConfig,\n constructConfigFn,\n checkConfigAsync,\n checkConfig,\n JSONQL_PARAMS_VALIDATOR_INFO\n}\n","// export\nimport {\n checkIsObject,\n notEmpty,\n checkIsAny,\n checkIsString,\n checkIsBoolean,\n checkIsNumber,\n checkIsArray\n} from './src'\n// PIA syntax\nexport const isObject = checkIsObject;\nexport const isAny = checkIsAny;\nexport const isString = checkIsString;\nexport const isBoolean = checkIsBoolean;\nexport const isNumber = checkIsNumber;\nexport const isArray = checkIsArray;\nexport const isNotEmpty = notEmpty;\n\nimport * as validator from './src/validator'\n\nexport const normalizeArgs = validator.normalizeArgs;\nexport const validateSync = validator.validateSync;\nexport const validateAsync = validator.validateAsync;\n\n// configuration checking\n\nimport * as jsonqlOptions from './src/options'\n\nexport const JSONQL_PARAMS_VALIDATOR_INFO = jsonqlOptions.JSONQL_PARAMS_VALIDATOR_INFO;\n\nexport const createConfig = jsonqlOptions.createConfig;\nexport const constructConfig = jsonqlOptions.constructConfigFn;\n\nexport const checkConfigAsync = jsonqlOptions.checkConfigAsync(validator.validateSync)\nexport const checkConfig = jsonqlOptions.checkConfig(validator.validateSync)\n\n// export the two extra functions\nimport isInArray from './src/is-in-array'\nimport isKeyInObjectFn from './src/is-key-in-object'\n\nexport const inArray = isInArray;\nexport const isKeyInObject = isKeyInObjectFn;\n","/**\n * generate a 32bit hash based on the function.toString()\n * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery\n * @param {string} s the converted to string function\n * @return {string} the hashed function string\n */\nexport default function hashCode(s) {\n\treturn s.split(\"\").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0)\n}\n","// making all the functionality on it's own\n// import { WatchClass } from './watch'\n\nexport default class SuspendClass {\n\n constructor() {\n // suspend, release and queue\n this.__suspend__ = null;\n this.queueStore = new Set()\n /*\n this.watch('suspend', function(value, prop, oldValue) {\n this.logger(`${prop} set from ${oldValue} to ${value}`)\n // it means it set the suspend = true then release it\n if (oldValue === true && value === false) {\n // we want this happen after the return happens\n setTimeout(() => {\n this.release()\n }, 1)\n }\n return value; // we need to return the value to store it\n })\n */\n }\n\n /**\n * setter to set the suspend and check if it's boolean value\n * @param {boolean} value to trigger\n */\n set $suspend(value) {\n if (typeof value === 'boolean') {\n const lastValue = this.__suspend__;\n this.__suspend__ = value;\n this.logger('($suspend)', `Change from ${lastValue} --> ${value}`)\n if (lastValue === true && value === false) {\n setTimeout(() => {\n this.release()\n }, 1)\n }\n } else {\n throw new Error(`$suspend only accept Boolean value!`)\n }\n }\n\n /**\n * queuing call up when it's in suspend mode\n * @param {any} value\n * @return {Boolean} true when added or false when it's not\n */\n $queue(...args) {\n if (this.__suspend__ === true) {\n this.logger('($queue)', 'added to $queue', args)\n // there shouldn't be any duplicate ...\n this.queueStore.add(args)\n }\n return this.__suspend__;\n }\n\n /**\n * a getter to get all the store queue\n * @return {array} Set turn into Array before return\n */\n get $queues() {\n let size = this.queueStore.size;\n this.logger('($queues)', `size: ${size}`)\n if (size > 0) {\n return Array.from(this.queueStore)\n }\n return []\n }\n\n /**\n * Release the queue\n * @return {int} size if any\n */\n release() {\n let size = this.queueStore.size\n this.logger('(release)', `Release was called ${size}`)\n if (size > 0) {\n const queue = Array.from(this.queueStore)\n this.queueStore.clear()\n this.logger('queue', queue)\n queue.forEach(args => {\n this.logger(args)\n Reflect.apply(this.$trigger, this, args)\n })\n this.logger(`Release size ${this.queueStore.size}`)\n }\n }\n}\n","// break up the main file because its getting way too long\nimport {\n NB_EVENT_SERVICE_PRIVATE_STORE,\n NB_EVENT_SERVICE_PRIVATE_LAZY\n} from './store'\nimport genHaskKey from './hash-code'\nimport SuspendClass from './suspend'\n\nexport default class NbEventServiceBase extends SuspendClass {\n\n constructor(config = {}) {\n super()\n if (config.logger && typeof config.logger === 'function') {\n this.logger = config.logger;\n }\n this.keep = config.keep;\n // for the $done setter\n this.result = config.keep ? [] : null;\n // we need to init the store first otherwise it could be a lot of checking later\n this.normalStore = new Map()\n this.lazyStore = new Map()\n }\n\n /**\n * validate the event name(s)\n * @param {string[]} evt event name\n * @return {boolean} true when OK\n */\n validateEvt(...evt) {\n evt.forEach(e => {\n if (typeof e !== 'string') {\n this.logger('(validateEvt)', e)\n throw new Error(`event name must be string type!`)\n }\n })\n return true;\n }\n\n /**\n * Simple quick check on the two main parameters\n * @param {string} evt event name\n * @param {function} callback function to call\n * @return {boolean} true when OK\n */\n validate(evt, callback) {\n if (this.validateEvt(evt)) {\n if (typeof callback === 'function') {\n return true;\n }\n }\n throw new Error(`callback required to be function type!`)\n }\n\n /**\n * Check if this type is correct or not added in V1.5.0\n * @param {string} type for checking\n * @return {boolean} true on OK\n */\n validateType(type) {\n const types = ['on', 'only', 'once', 'onlyOnce']\n return !!types.filter(t => type === t).length;\n }\n\n /**\n * Run the callback\n * @param {function} callback function to execute\n * @param {array} payload for callback\n * @param {object} ctx context or null\n * @return {void} the result store in $done\n */\n run(callback, payload, ctx) {\n this.logger('(run)', callback, payload, ctx)\n this.$done = Reflect.apply(callback, ctx, this.toArray(payload))\n }\n\n /**\n * Take the content out and remove it from store id by the name\n * @param {string} evt event name\n * @param {string} [storeName = lazyStore] name of store\n * @return {object|boolean} content or false on not found\n */\n takeFromStore(evt, storeName = 'lazyStore') {\n let store = this[storeName]; // it could be empty at this point\n if (store) {\n this.logger('(takeFromStore)', storeName, store)\n if (store.has(evt)) {\n let content = store.get(evt)\n this.logger('(takeFromStore)', `has ${evt}`, content)\n store.delete(evt)\n return content;\n }\n return false;\n }\n throw new Error(`${storeName} is not supported!`)\n }\n\n /**\n * The add to store step is similar so make it generic for resuse\n * @param {object} store which store to use\n * @param {string} evt event name\n * @param {spread} args because the lazy store and normal store store different things\n * @return {array} store and the size of the store\n */\n addToStore(store, evt, ...args) {\n let fnSet;\n if (store.has(evt)) {\n this.logger('(addToStore)', `${evt} existed`)\n fnSet = store.get(evt)\n } else {\n this.logger('(addToStore)', `create new Set for ${evt}`)\n // this is new\n fnSet = new Set()\n }\n // lazy only store 2 items - this is not the case in V1.6.0 anymore\n // we need to check the first parameter is string or not\n if (args.length > 2) {\n if (Array.isArray(args[0])) { // lazy store\n // check if this type of this event already register in the lazy store\n let [,,t] = args;\n if (!this.checkTypeInLazyStore(evt, t)) {\n fnSet.add(args)\n }\n } else {\n if (!this.checkContentExist(args, fnSet)) {\n this.logger('(addToStore)', `insert new`, args)\n fnSet.add(args)\n }\n }\n } else { // add straight to lazy store\n fnSet.add(args)\n }\n store.set(evt, fnSet)\n return [store, fnSet.size]\n }\n\n /**\n * @param {array} args for compare\n * @param {object} fnSet A Set to search from\n * @return {boolean} true on exist\n */\n checkContentExist(args, fnSet) {\n let list = Array.from(fnSet)\n return !!list.filter(l => {\n let [hash,] = l;\n if (hash === args[0]) {\n return true;\n }\n return false;\n }).length;\n }\n\n /**\n * get the existing type to make sure no mix type add to the same store\n * @param {string} evtName event name\n * @param {string} type the type to check\n * @return {boolean} true you can add, false then you can't add this type\n */\n checkTypeInStore(evtName, type) {\n this.validateEvt(evtName, type)\n let all = this.$get(evtName, true)\n if (all === false) {\n // pristine it means you can add\n return true;\n }\n // it should only have ONE type in ONE event store\n return !all.filter(list => {\n let [ ,,,t ] = list;\n return type !== t;\n }).length;\n }\n\n /**\n * This is checking just the lazy store because the structure is different\n * therefore we need to use a new method to check it\n */\n checkTypeInLazyStore(evtName, type) {\n this.validateEvt(evtName, type)\n let store = this.lazyStore.get(evtName)\n this.logger('(checkTypeInLazyStore)', store)\n if (store) {\n return !!Array\n .from(store)\n .filter(l => {\n let [,,t] = l;\n return t !== type;\n }).length\n }\n return false;\n }\n\n /**\n * wrapper to re-use the addToStore,\n * V1.3.0 add extra check to see if this type can add to this evt\n * @param {string} evt event name\n * @param {string} type on or once\n * @param {function} callback function\n * @param {object} context the context the function execute in or null\n * @return {number} size of the store\n */\n addToNormalStore(evt, type, callback, context = null) {\n this.logger('(addToNormalStore)', evt, type, 'try to add to normal store')\n // @TODO we need to check the existing store for the type first!\n if (this.checkTypeInStore(evt, type)) {\n this.logger('(addToNormalStore)', `${type} can add to ${evt} normal store`)\n let key = this.hashFnToKey(callback)\n let args = [this.normalStore, evt, key, callback, context, type]\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.normalStore = _store;\n return size;\n }\n return false;\n }\n\n /**\n * Add to lazy store this get calls when the callback is not register yet\n * so we only get a payload object or even nothing\n * @param {string} evt event name\n * @param {array} payload of arguments or empty if there is none\n * @param {object} [context=null] the context the callback execute in\n * @param {string} [type=false] register a type so no other type can add to this evt\n * @return {number} size of the store\n */\n addToLazyStore(evt, payload = [], context = null, type = false) {\n // this is add in V1.6.0\n // when there is type then we will need to check if this already added in lazy store\n // and no other type can add to this lazy store\n let args = [this.lazyStore, evt, this.toArray(payload), context]\n if (type) {\n args.push(type)\n }\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.lazyStore = _store;\n return size;\n }\n\n /**\n * make sure we store the argument correctly\n * @param {*} arg could be array\n * @return {array} make sured\n */\n toArray(arg) {\n return Array.isArray(arg) ? arg : [arg];\n }\n\n /**\n * setter to store the Set in private\n * @param {object} obj a Set\n */\n set normalStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj)\n }\n\n /**\n * @return {object} Set object\n */\n get normalStore() {\n return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)\n }\n\n /**\n * setter to store the Set in lazy store\n * @param {object} obj a Set\n */\n set lazyStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj)\n }\n\n /**\n * @return {object} the lazy store Set\n */\n get lazyStore() {\n return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)\n }\n\n /**\n * generate a hashKey to identify the function call\n * The build-in store some how could store the same values!\n * @param {function} fn the converted to string function\n * @return {string} hashKey\n */\n hashFnToKey(fn) {\n return genHaskKey(fn.toString()) + '';\n }\n}\n","// The top level\nimport NbStoreService from './store-service'\n// export\nexport default class EventService extends NbStoreService {\n /**\n * class constructor\n */\n constructor(config = {}) {\n super(config)\n }\n\n /**\n * logger function for overwrite\n */\n logger() {}\n\n //////////////////////////\n // PUBLIC METHODS //\n //////////////////////////\n\n /**\n * Register your evt handler, note we don't check the type here,\n * we expect you to be sensible and know what you are doing.\n * @param {string} evt name of event\n * @param {function} callback bind method --> if it's array or not\n * @param {object} [context=null] to execute this call in\n * @return {number} the size of the store\n */\n $on(evt , callback , context = null) {\n const type = 'on';\n this.validate(evt, callback)\n // first need to check if this evt is in lazy store\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register first then call later\n if (lazyStoreContent === false) {\n this.logger('($on)', `${evt} callback is not in lazy store`)\n // @TODO we need to check if there was other listener to this\n // event and are they the same type then we could solve that\n // register the different type to the same event name\n\n return this.addToNormalStore(evt, type, callback, context)\n }\n this.logger('($on)', `${evt} found in lazy store`)\n // this is when they call $trigger before register this callback\n let size = 0;\n lazyStoreContent.forEach(content => {\n let [ payload, ctx, t ] = content;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($on)`, `call run on ${evt}`)\n this.run(callback, payload, context || ctx)\n size += this.addToNormalStore(evt, type, callback, context || ctx)\n })\n return size;\n }\n\n /**\n * once only registered it once, there is no overwrite option here\n * @NOTE change in v1.3.0 $once can add multiple listeners\n * but once the event fired, it will remove this event (see $only)\n * @param {string} evt name\n * @param {function} callback to execute\n * @param {object} [context=null] the handler execute in\n * @return {boolean} result\n */\n $once(evt , callback , context = null) {\n this.validate(evt, callback)\n const type = 'once';\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (lazyStoreContent === false) {\n this.logger('($once)', `${evt} not in the lazy store`)\n // v1.3.0 $once now allow to add multiple listeners\n return this.addToNormalStore(evt, type, callback, context)\n } else {\n // now this is the tricky bit\n // there is a potential bug here that cause by the developer\n // if they call $trigger first, the lazy won't know it's a once call\n // so if in the middle they register any call with the same evt name\n // then this $once call will be fucked - add this to the documentation\n this.logger('($once)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger('($once)', `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n }\n\n /**\n * This one event can only bind one callbackback\n * @param {string} evt event name\n * @param {function} callback event handler\n * @param {object} [context=null] the context the event handler execute in\n * @return {boolean} true bind for first time, false already existed\n */\n $only(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'only';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($only)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($only)', `${evt} found data in lazy store to execute`)\n const list = Array.from(lazyStoreContent)\n // $only allow to trigger this multiple time on the single handler\n list.forEach( l => {\n const [ payload, ctx, t ] = l;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($only)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n })\n }\n return added;\n }\n\n /**\n * $only + $once this is because I found a very subtile bug when we pass a\n * resolver, rejecter - and it never fire because that's OLD added in v1.4.0\n * @param {string} evt event name\n * @param {function} callback to call later\n * @param {object} [context=null] exeucte context\n * @return {void}\n */\n $onlyOnce(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'onlyOnce';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($onlyOnce)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($onlyOnce)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== 'onlyOnce') {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($onlyOnce)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n return added;\n }\n\n /**\n * This is a shorthand of $off + $on added in V1.5.0\n * @param {string} evt event name\n * @param {function} callback to exeucte\n * @param {object} [context = null] or pass a string as type\n * @param {string} [type=on] what type of method to replace\n * @return {}\n */\n $replace(evt, callback, context = null, type = 'on') {\n if (this.validateType(type)) {\n this.$off(evt)\n let method = this['$' + type]\n this.logger(`($replace)`, evt, callback)\n return Reflect.apply(method, this, [evt, callback, context])\n }\n throw new Error(`${type} is not supported!`)\n }\n\n /**\n * trigger the event\n * @param {string} evt name NOT allow array anymore!\n * @param {mixed} [payload = []] pass to fn\n * @param {object|string} [context = null] overwrite what stored\n * @param {string} [type=false] if pass this then we need to add type to store too\n * @return {number} if it has been execute how many times\n */\n $trigger(evt , payload = [] , context = null, type = false) {\n this.validateEvt(evt)\n let found = 0;\n // first check the normal store\n let nStore = this.normalStore;\n this.logger('($trigger)', 'normalStore', nStore)\n if (nStore.has(evt)) {\n // @1.8.0 to add the suspend queue\n let added = this.$queue(evt, payload, context, type)\n this.logger('($trigger)', evt, 'found; add to queue: ', added)\n if (added === true) {\n this.logger('($trigger)', evt, 'not executed. Exit now.')\n return false; // not executed\n }\n let nSet = Array.from(nStore.get(evt))\n let ctn = nSet.length;\n let hasOnce = false;\n let hasOnly = false;\n for (let i=0; i < ctn; ++i) {\n ++found;\n // this.logger('found', found)\n let [ _, callback, ctx, type ] = nSet[i]\n this.logger(`($trigger)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n if (type === 'once' || type === 'onlyOnce') {\n hasOnce = true;\n }\n }\n if (hasOnce) {\n nStore.delete(evt)\n }\n return found;\n }\n // now this is not register yet\n this.addToLazyStore(evt, payload, context, type)\n return found;\n }\n\n /**\n * this is an alias to the $trigger\n * @NOTE breaking change in V1.6.0 we swap the parameter around\n * @param {string} evt event name\n * @param {*} params pass to the callback\n * @param {string} type of call\n * @param {object} context what context callback execute in\n * @return {*} from $trigger\n */\n $call(evt, params, type = false, context = null) {\n let args = [evt, params, context, type]\n return Reflect.apply(this.$trigger, this, args)\n }\n\n /**\n * remove the evt from all the stores\n * @param {string} evt name\n * @return {boolean} true actually delete something\n */\n $off(evt) {\n this.validateEvt(evt)\n let stores = [ this.lazyStore, this.normalStore ]\n let found = false;\n stores.forEach(store => {\n if (store.has(evt)) {\n found = true;\n this.logger('($off)', evt)\n store.delete(evt)\n }\n })\n return found;\n }\n\n /**\n * return all the listener from the event\n * @param {string} evtName event name\n * @param {boolean} [full=false] if true then return the entire content\n * @return {array|boolean} listerner(s) or false when not found\n */\n $get(evt, full = false) {\n this.validateEvt(evt)\n let store = this.normalStore;\n if (store.has(evt)) {\n return Array\n .from(store.get(evt))\n .map( l => {\n if (full) {\n return l;\n }\n let [key, callback, ] = l;\n return callback;\n })\n }\n return false;\n }\n\n /**\n * store the return result from the run\n * @param {*} value whatever return from callback\n */\n set $done(value) {\n this.logger('($done)', 'value: ', value)\n if (this.keep) {\n this.result.push(value)\n } else {\n this.result = value;\n }\n }\n\n /**\n * @TODO is there any real use with the keep prop?\n * getter for $done\n * @return {*} whatever last store result\n */\n get $done() {\n if (this.keep) {\n this.logger('(get $done)', this.result)\n return this.result[this.result.length - 1]\n }\n return this.result;\n }\n\n\n}\n","// default\nimport NBEventService from './src/event-service'\n\nexport default NBEventService\n","// mapping the resolver to their respective nsp\nimport { JSONQL_PATH, NSP_SET, PUBLIC_NAMESPACE } from 'jsonql-constants'\nimport { groupByNamespace, extractSocketPart } from 'jsonql-utils/module'\nimport { JsonqlResolverNotFoundError } from 'jsonql-errors'\n\nimport { MISSING_PROP_ERR } from '../options/constants'\n\nimport getDebug from './get-debug'\nconst debug = getDebug('process-contract')\n\n/**\n * Just make sure the object contain what we are looking for\n * @param {object} opts configuration from checkOptions\n * @return {object} the target content\n */\nconst getResolverList = contract => {\n const result = extractSocketPart(contract)\n if (result !== false) {\n return result\n }\n throw new JsonqlResolverNotFoundError(MISSING_PROP_ERR)\n}\n\n/**\n * process the contract first\n * @param {object} opts configuration\n * @return {object} sorted list\n */\nexport default function processContract(opts) {\n const { contract, enableAuth } = opts;\n if (enableAuth) {\n return groupByNamespace(contract)\n }\n return {\n [NSP_SET]: { [JSONQL_PATH]: getResolverList(contract) },\n [PUBLIC_NAMESPACE]: JSONQL_PATH\n }\n}\n","// group all the small functions here\nimport { JS_WS_SOCKET_IO_NAME, JS_WS_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants'\nimport { EXPECT_FUNC_ERR } from '../options/constants'\nimport { toArray, createEvt } from 'jsonql-utils/module'\n// import { getDebug } from './get-debug';\n// const debug = getDebug('helpers')\n\n// we shouldn't do this anymore\nexport const fixWss = (url, serverType) => {\n // ws only allow ws:// path\n if (serverType === JS_WS_NAME) {\n return url.replace('http://', 'ws://')\n }\n return url;\n}\n\n/**\n * get a stock host name from browser\n */\nexport const getHostName = () => {\n try {\n return [window.location.protocol, window.location.host].join('//')\n } catch(e) {\n throw new JsonqlValidationError(e)\n }\n}\n\n/**\n * Unbind the event\n * @param {object} ee EventEmitter\n * @param {string} namespace\n * @return {void}\n */\nexport const clearMainEmitEvt = (ee, namespace) => {\n let nsps = toArray(namespace)\n nsps.forEach(n => {\n ee.$off(createEvt(n, EMIT_REPLY_TYPE))\n })\n}\n\n/**\n * @param {object} nsps namespace as key\n * @param {string} type of server\n */\nexport const disconnect = (nsps, type = JS_WS_SOCKET_IO_NAME) => {\n try {\n // @TODO need to figure out a better way here?\n const method = type === JS_WS_SOCKET_IO_NAME ? 'disconnect' : 'terminate';\n for (let namespace in nsps) {\n let nsp = nsps[namespace]\n if (nsp && nsp[method]) {\n Reflect.apply(nsp[method], null, [])\n }\n }\n } catch(e) {\n // socket.io throw a this.destroy of undefined?\n console.error('Disconnect call failed', e)\n }\n}\n\n/**\n * Simple check if the prop is function\n * @param {*} prop input\n * @return {boolean} true on success\n */\nexport const isFunc = prop => {\n if (typeof prop === 'function') {\n return true;\n }\n console.error(EXPECT_FUNC_ERR)\n}\n","// breaking it up further to share between methods\nimport { DATA_KEY, ERROR_KEY } from 'jsonql-constants'\nimport { UNKNOWN_RESULT } from '../options/constants'\nimport { isKeyInObject } from 'jsonql-utils/module'\nimport { getDebug } from '../utils'\nconst debugFn = getDebug('respondHandler')\n/**\n * break out to use in different places to handle the return from server\n * @param {object} data from server\n * @param {function} resolver NOT from promise\n * @param {function} rejecter NOT from promise\n * @return {void} nothing\n */\nexport function respondHandler(data, resolver, rejecter) {\n if (isKeyInObject(data, ERROR_KEY)) {\n debugFn('-- rejecter called --', data[ERROR_KEY])\n rejecter(data[ERROR_KEY])\n } else if (isKeyInObject(data, DATA_KEY)) {\n debugFn('-- resolver called --', data[DATA_KEY])\n resolver(data[DATA_KEY])\n } else {\n debugFn('-- UNKNOWN_RESULT --', data)\n rejecter({message: UNKNOWN_RESULT, error: data})\n }\n}\n","// the actual trigger call method\nimport { ON_RESULT_PROP_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants'\nimport { createEvt, toArray } from 'jsonql-utils/module'\nimport { respondHandler } from './respond-handler'\nimport { getDebug } from '../utils'\nconst debugFn = getDebug(`action-call`)\n\n/**\n * just wrapper\n * @param {object} ee EventEmitter\n * @param {string} namespace where this belongs\n * @param {string} resolverName resolver\n * @param {array} args arguments\n * @return {void} nothing\n */\nexport function actionCall(ee, namespace, resolverName, args = []) {\n const eventName = createEvt(namespace, EMIT_REPLY_TYPE)\n debugFn(`actionCall: ${eventName} --> ${resolverName}`, args)\n ee.$trigger(eventName, [resolverName, toArray(args)])\n // once we trigger there is nothing return from the resolve\n // @TODO if we need the next then call to have the result back\n // then we need to listen to the event callback here as well\n return new Promise((resolver, rejecter) => {\n ee.$on(\n createEvt(namespace, resolverName, ON_RESULT_PROP_NAME),\n function actionCallResultHandler(result) {\n debugFn(`got the first result`, result)\n respondHandler(result, resolver, rejecter)\n }\n )\n })\n}\n","// break up the original setup resolver method here\nimport { JsonqlValidationError, finalCatch } from 'jsonql-errors'\nimport {\n ERROR_TYPE,\n DATA_KEY,\n ERROR_KEY,\n ON_ERROR_PROP_NAME,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n LOGIN_EVENT_NAME,\n ON_READY_PROP_NAME,\n LOGOUT_EVENT_NAME\n} from 'jsonql-constants'\nimport {\n EMIT_EVT,\n NOT_ALLOW_OP,\n UNKNOWN_RESULT,\n MY_NAMESPACE\n} from '../options/constants'\n\nimport { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module'\n\nimport { respondHandler } from './respond-handler'\nimport { getDebug, isFunc } from '../utils'\nconst debugFn = getDebug('setup-resolver')\n\nimport { setupSend } from './setup-send'\n\n/**\n * The first one in the chain\n * @return {array}\n */\nconst setupNamespace = (fn, ee, namespace, resolverName, params) => [\n injectToFn(fn, MY_NAMESPACE, namespace),\n ee,\n namespace,\n resolverName,\n params\n]\n\n// onResult handler\nconst setupOnResult = (fn, ee, namespace, resolverName, params) => [\n objDefineProps(fn, ON_RESULT_PROP_NAME, function(resultCallback) {\n if (isFunc(resultCallback)) {\n ee.$on(\n createEvt(namespace, resolverName, ON_RESULT_PROP_NAME),\n function resultHandler(result) {\n respondHandler(result, resultCallback, (error) => {\n ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error)\n })\n }\n )\n }\n }),\n ee,\n namespace,\n resolverName,\n params\n]\n\n// we do need to add the send prop back because it's the only way to deal with\n// bi-directional data stream\nconst setupOnMessage = (fn, ee, namespace, resolverName, params) => [\n objDefineProps(fn, ON_MESSAGE_PROP_NAME, function(messageCallback) {\n // we expect this to be a function\n if (isFunc(messageCallback)) {\n // did that add to the callback\n let onMessageCallback = (args) => {\n respondHandler(args, messageCallback, (error) => {\n ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error)\n })\n }\n // register the handler for this message event\n ee.$only(createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME), onMessageCallback)\n }\n }),\n ee,\n namespace,\n resolverName,\n params\n]\n\n// add an ON_ERROR_PROP_NAME handler\nconst setupOnError = (fn, ee, namespace, resolverName, params) => [\n objDefineProps(fn, ON_ERROR_PROP_NAME, function(resolverErrorHandler) {\n if (isFunc(resolverErrorHandler)) {\n // please note ON_ERROR_PROP_NAME can add multiple listners\n ee.$only(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), resolverErrorHandler)\n }\n }),\n ee,\n namespace,\n resolverName,\n params\n]\n\n/**\n * Add extra property to the resolver\n * @param {string} namespace where this belongs\n * @param {string} resolverName name as event name\n * @param {object} params from contract\n * @param {function} fn resolver function\n * @param {object} ee EventEmitter\n * @TODO need a new parameter here\n * @return {function} resolver\n */\nexport function setupResolver(namespace, resolverName, params, fn, ee) {\n // also need to setup a getter to get back the namespace of this resolver\n const args = [fn, ee, namespace, resolverName, params]\n const exe = chainFns(setupNamespace, setupOnResult, setupOnMessage, setupOnError, setupSend)\n // debug(exe)\n return Reflect.apply(exe, null, args)\n}\n","// put all the resolver related methods here to make it more clear\n\n// this will be a mini client server architect\n// The reason is when the enableAuth setup - the private route\n// might not be validated, but we need the callable point is ready\n// therefore this part will always take the contract and generate\n// callable api for the developer to setup their front end\n// the only thing is - when they call they might get an error or\n// NOT_LOGIN_IN and they can react to this error accordingly\nimport {\n JsonqlResolverNotFoundError,\n JsonqlValidationError,\n JsonqlError,\n finalCatch\n} from 'jsonql-errors'\nimport {\n validateAsync,\n isKeyInObject,\n isString\n} from 'jsonql-params-validator'\nimport {\n ERROR_TYPE,\n DATA_KEY,\n ERROR_KEY,\n ON_ERROR_PROP_NAME,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n ON_LOGIN_PROP_NAME,\n SEND_MSG_PROP_NAME,\n LOGIN_EVENT_NAME,\n ON_READY_PROP_NAME,\n LOGOUT_EVENT_NAME\n} from 'jsonql-constants'\nimport {\n EMIT_EVT,\n NOT_ALLOW_OP,\n UNKNOWN_RESULT,\n MY_NAMESPACE,\n EXPECT_FUNC_ERR\n} from '../options/constants'\nimport { actionCall } from './action-call'\nimport {\n getDebug,\n createEvt,\n toArray,\n injectToFn,\n objDefineProps,\n isFunc\n} from '../utils'\nconst debugFn = getDebug('resolver-methods')\n\n/**\n * create the actual function to send message to server\n * @param {object} ee EventEmitter instance\n * @param {string} namespace this resolver end point\n * @param {string} resolverName name of resolver as event name\n * @param {object} params from contract\n * @return {function} resolver\n */\nexport function createResolver(ee, namespace, resolverName, params) {\n // note we pass the new withResult=true option\n return function(...args) {\n return validateAsync(args, params.params, true)\n .then(_args => actionCall(ee, namespace, resolverName, _args))\n .catch(finalCatch)\n }\n}\n\n/**\n * The problem is the namespace can have more than one\n * and we only have on onError message\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} nspSet namespace keys\n * @return {object} obj with onError prop\n */\nexport function createNamespaceErrorHandler(obj, ee, nspSet) {\n // using the onError as name\n // @TODO we should follow the convention earlier\n // make this a setter for the obj itself\n return objDefineProps(obj, ON_ERROR_PROP_NAME, function(namespaceErrorHandler) {\n if (isFunc(namespaceErrorHandler)) {\n // please note ON_ERROR_PROP_NAME can add multiple listners\n for (let namespace in nspSet) {\n // this one is very tricky, we need to make sure the trigger is calling\n // with the namespace as well as the error\n ee.$on(createEvt(namespace, ON_ERROR_PROP_NAME), namespaceErrorHandler)\n }\n }\n })\n}\n\n/**\n * This event will fire when the socket.io.on('connection') and ws.onopen\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} nspSet namespace keys\n * @return {object} obj with onReady prop\n */\nexport function createOnReadyhandler(obj, ee, nspSet) {\n return objDefineProps(obj, ON_READY_PROP_NAME, function(onReadyCallback) {\n if (isFunc(onReadyCallback)) {\n // reduce it down to just one flat level\n ee.$on(ON_READY_PROP_NAME, onReadyCallback)\n }\n })\n}\n\n/**\n * This event will fire when the socket.io.on('connection') and ws.onopen\n * Plus this will check if it's the private namespace that fired the event\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} opts configuration\n * @return {object} obj with onLogin prop\n */\nexport function createOnLoginhandler(obj, ee, opts) {\n if (opts.enableAuth) {\n return objDefineProps(obj, ON_LOGIN_PROP_NAME, function(onLoginCallback) {\n if (isFunc(onLoginCallback)) {\n // only one callback can registered with it, TBC\n ee.$only(ON_LOGIN_PROP_NAME, onLoginCallback)\n }\n })\n }\n // just skip it\n return obj\n}\n\n/**\n * Create auth related methods\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} opts configuration\n * @return {object} obj with auth methods if any\n */\nexport function createAuthMethods(obj, ee, opts) {\n if (opts.enableAuth) {\n // create an additonal login handler\n // we require the token\n obj[opts.loginHandlerName] = (token) => {\n debugFn(opts.loginHandlerName, token)\n if (token && isString(token)) {\n return ee.$trigger(LOGIN_EVENT_NAME, [token])\n }\n throw new JsonqlValidationError(opts.loginHandlerName)\n }\n // logout event handler\n obj[opts.logoutHandlerName] = (...args) => {\n ee.$trigger(LOGOUT_EVENT_NAME, args)\n }\n }\n return obj;\n}\n","// resolvers generator\n// we change the interface to return promise from v1.0.3\n// this way we make sure the obj return is correct and timely\nimport { setupResolver } from './setup-resolver'\nimport {\n createResolver,\n createNamespaceErrorHandler,\n createOnReadyhandler,\n createOnLoginhandler,\n createAuthMethods\n} from './resolver-methods'\nimport { getDebug } from '../utils'\nconst debugFn = getDebug('generator')\n\n/**\n * step one get the obj map with the namespace\n * @param {object} opts configuration\n * @param {object} nspMap resolvers index by their namespace\n * @param {object} ee EventEmitter\n * @return {promise} resolve the obj mapped, and start the chain\n */\nfunction getMappedObj(opts, nspMap, ee) {\n let obj = {};\n const { nspSet } = nspMap;\n for (let namespace in nspSet) {\n let list = nspSet[namespace]\n for (let resolverName in list) {\n let params = list[resolverName]\n let fn = createResolver(ee, namespace, resolverName, params)\n obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee)\n }\n }\n // move this two method down to helpers\n obj.devHelpers = {\n // this is a helper method for the developer to know the namespace inside\n getNsp: () => Object.keys(nspSet),\n // simple get version trick\n getVer: () => opts.version || 'NOT SET'\n }\n // resolve the obj to start the chain\n return Promise.resolve(obj)\n}\n\n/**\n * prepare the methods\n * @param {object} opts configuration\n * @param {object} nspMap resolvers index by their namespace\n * @param {object} ee EventEmitter\n * @return {object} of resolvers\n * @public\n */\nexport function generator(opts, nspMap, ee) {\n const { nspSet } = nspMap\n return getMappedObj(opts, nspMap, ee)\n // add error handler\n .then(obj1 => createNamespaceErrorHandler(obj1, ee, nspSet))\n // add onReady handler\n .then(obj2 => createOnReadyhandler(obj2, ee, nspSet))\n // add onLogin handler -- this is optional\n .then(obj3 => createOnLoginhandler(obj3, ee, opts))\n // Auth related methods -- this is optional\n .then(obj4 => createAuthMethods(obj4, ee, opts))\n}\n","// create options\nimport { checkConfigAsync, isNotEmpty } from 'jsonql-params-validator'\n// import { JsonqlValidationError, JsonqlCheckerError } from 'jsonql-errors'\n// this should be remove - we have to make it generic\nimport { defaultOptions } from './defaults'\nimport { fixWss, getHostName, getDebug } from '../utils'\nconst debug = getDebug('check-options')\n// constant props\nconst defaultConstProps = {\n eventEmitter: null,\n // we unify the two different client into one now\n // only expect different parameter\n nspClient: null,\n nspAuthClient: null,\n // contructed path\n wssPath: ''\n}\n\n/**\n * check the configuration\n * @param {object} config user supplied configuration\n * @param {object} constProps developer supplied configuration\n * @return {object} after checked\n */\nexport default function checkOptions(config, constProps) {\n return checkConfigAsync(config, defaultOptions, Object.assign(defaultConstProps, constProps))\n .then(opts => {\n if (!opts.hostname) {\n opts.hostname = getHostName()\n }\n // @TODO the contract now will supply the namespace information\n // and we need to use that to group the namespace call\n opts.wssPath = fixWss([opts.hostname, opts.namespace].join('/'), opts.serverType)\n debug('CONFIGURATION OPTIONS', opts)\n return opts;\n })\n}\n","// the top level API\n// The goal is to create a generic method that will able to handle\n// any kind of clients\n// import { injectToFn } from 'jsonql-utils'\nimport { generator } from './core'\nimport checkOptions from './options'\nimport { ee, processContract } from './utils'\n\n/**\n * The main interface which will generate the socket clients and map all events\n * @param {object} socketClientResolver this is the one method export by various clients\n * @param {object} [constProps={}] add this to supply the constProps from the downstream client\n * @return {object} the wsClient instance with all the available API\n */\nexport default function wsClient(socketClientResolver, constProps = {}) {\n // we need to inject property to this client later\n // therefore we need to do it this way\n return (opts) => {\n const { eventEmitter } = opts;\n return checkOptions(opts, constProps)\n .then(opts => ({\n opts,\n nspMap: processContract(opts),\n ee: eventEmitter || new ee()\n }))\n .then(\n ({opts, nspMap, ee}) => socketClientResolver(opts, nspMap, ee)\n )\n .then(\n ({opts, nspMap, ee}) => generator(opts, nspMap, ee)\n )\n .catch(err => {\n console.error(`jsonql-ws-client init error`, err)\n })\n }\n}\n","// where all the base options are\n// create options\nimport { JS_WS_NAME } from 'jsonql-constants'\n// constant props\nconst constProps = {\n version: '__PLACEHOLDER__', // will get replace\n serverType: JS_WS_NAME\n}\n\nexport { constProps }\n","// pass the different type of ws to generate the client\nimport { TOKEN_PARAM_NAME } from 'jsonql-constants'\n/**\n * WebSocket is strict about the path, therefore we need to make sure before it goes in\n * @param {string} url input url\n * @return {string} url with correct path name\n */\nconst fixWss = url => {\n const uri = url.toLowerCase()\n if (uri.indexOf('http') > -1) {\n if (uri.indexOf('https') > -1) {\n return uri.replace('https', 'wss')\n }\n return uri.replace('http', 'ws')\n }\n return uri;\n}\n\n/**\n * The bug was in the wsOptions where ws doesn't need it but socket.io do\n * therefore the object was pass as second parameter!\n * @param {object} WebSocket the client or node version of ws\n * @param {boolean} auth if it's auth then 3 param or just one\n */\nexport function createWsClient(WebSocket, auth = false) {\n if (auth === false) {\n return function createWsClientHandler(url) {\n return new WebSocket(fixWss(url))\n }\n }\n\n /**\n * Create a client with auth token\n * @param {string} url start with ws:// @TODO check this?\n * @param {string} token the jwt token\n * @return {object} ws instance\n */\n return function createWsAuthClientHandler(url, token) {\n const ws_url = fixWss(url)\n // console.log('what happen here?', url, ws_url, token)\n const uri = token && typeof token === 'string' ? `${ws_url}?${TOKEN_PARAM_NAME}=${token}` : ws_url;\n try {\n return new WebSocket(uri)\n } catch(e) {\n console.error('WebSocket Connection Error', e)\n return false;\n }\n }\n}\n","// since both the ws and io version are\n// pre-defined in the client-generator\n// and this one will have the same parameters\n// and the callback is identical\n\n/**\n * wrapper method to create a nsp without login\n * @param {string|boolean} namespace namespace url could be false\n * @param {object} opts configuration\n * @return {object} ws client instance\n */\nfunction createNspClient(namespace, opts) {\n const { hostname, wssPath, wsOptions, nspClient } = opts;\n const url = namespace ? [hostname, namespace].join('/') : wssPath;\n return nspClient(url, wsOptions)\n}\n\n/**\n * wrapper method to create a nsp with token auth\n * @param {string} namespace namespace url\n * @param {object} opts configuration\n * @return {object} ws client instance\n */\nfunction createNspAuthClient(namespace, opts) {\n const { hostname, wssPath, token, wsOptions, nspAuthClient } = opts;\n const url = namespace ? [hostname, namespace].join('/') : wssPath;\n if (token && typeof token !== 'string') {\n throw new Error(`Expect token to be string, but got ${token}`)\n }\n return nspAuthClient(url, token, wsOptions)\n}\n\nexport {\n createNspClient,\n createNspAuthClient\n}\n","// this use by client-event-handler\nimport { ON_ERROR_PROP_NAME } from 'jsonql-constants'\nimport { createEvt } from 'jsonql-utils'\n/**\n * trigger errors on all the namespace onError handler\n * @param {object} ee Event Emitter\n * @param {array} namespaces nsps string\n * @param {string} message optional\n * @return {void}\n */\nexport function triggerNamespacesOnError(ee, namespaces, message) {\n namespaces.forEach( namespace => {\n ee.$call(createEvt(namespace, ON_ERROR_PROP_NAME), [{ message, namespace }])\n })\n}\n","// This is share between different clients so we export it\n\n\n// @TODO port what is in the ws-main-handler\n// because all the client side call are via the ee\n// and that makes it re-usable between different client setup\nimport {\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n EMIT_EVT,\n SOCKET_IO,\n WS\n} from '../options/constants'\nimport {\n LOGIN_EVENT_NAME,\n LOGOUT_EVENT_NAME,\n NOT_LOGIN_ERR_MSG,\n ON_ERROR_PROP_NAME\n} from 'jsonql-constants'\n\nimport { getDebug, createEvt, clearMainEmitEvt } from '../utils'\nimport { triggerNamespacesOnError } from './trigger-namespaces-on-error'\nconst debugFn = getDebug('client-event-handler')\n\n/**\n * A fake ee handler\n * @param {string} namespace nsp\n * @param {object} ee EventEmitter\n * @return {void}\n */\nconst notLoginWsHandler = (namespace, ee) => {\n ee.$only(\n createEvt(namespace, EMIT_EVT),\n function notLoginHandlerCallback(resolverName, args) {\n debugFn('noLoginHandler hijack the ws call', namespace, resolverName, args)\n let error = {\n message: NOT_LOGIN_ERR_MSG\n }\n // It should just throw error here and should not call the result\n // because that's channel for handling normal event not the fake one\n ee.$call(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), [error])\n // also trigger the result handler, but wrap inside the error key\n ee.$call(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [{ error }])\n }\n )\n}\n\n/**\n * get the private namespace\n * @param {array} namespaces array\n * @return {*} string on success\n */\nconst getPrivateNamespace = (namespaces) => (\n namespaces.length > 1 ? namespaces[0] : false\n)\n\n/**\n * centralize all the comm in one place\n * @param {object} opts configuration\n * @param {array} namespaces namespace(s)\n * @param {object} ee Event Emitter instance\n * @param {function} bindWsHandler binding the ee to ws --> this is the core bit\n * @param {array} namespaces array of namespace available\n * @param {object} nsps namespaced nsp\n * @return {void} nothing\n */\nexport function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, nsps) {\n // @1.1.3 add isPrivate prop to id which namespace is the private nsp\n // then we can use this prop to determine if we need to fire the ON_LOGIN_PROP_NAME event\n const privateNamespace = getPrivateNamespace(namespaces)\n let isPrivate = false;\n // loop\n // @BUG for io this has to be in order the one with auth need to get call first\n // The order of login is very import we need to run a waterfall here to make sure\n // one is execute then the other\n namespaces.forEach(namespace => {\n isPrivate = privateNamespace === namespace;\n if (nsps[namespace]) {\n debugFn('call bindWsHandler', isPrivate, namespace)\n let args = [namespace, nsps[namespace], ee, isPrivate]\n if (opts.serverType === SOCKET_IO) {\n let { nspSet } = nspMap;\n args.push(nspSet[namespace])\n args.push(opts)\n }\n Reflect.apply(bindWsHandler, null, args)\n } else {\n // a dummy placeholder\n notLoginWsHandler(namespace, ee)\n }\n })\n // this will be available regardless enableAuth\n // because the server can log the client out\n ee.$on(LOGOUT_EVENT_NAME, function logoutEvtHandler() {\n debugFn('LOGOUT_EVENT_NAME')\n // disconnect(nsps, opts.serverType)\n // we need to issue error to all the namespace onError handler\n triggerNamespacesOnError(ee, namespaces, LOGOUT_EVENT_NAME)\n // rebind all of the handler to the fake one\n namespaces.forEach( namespace => {\n clearMainEmitEvt(ee, namespace)\n // clear out the nsp\n nsps[namespace] = false;\n // add a NOT LOGIN error if call\n notLoginWsHandler(namespace, ee)\n })\n })\n}\n","// take the ws reply data for use\nimport { WS_EVT_NAME, WS_DATA_NAME, WS_REPLY_TYPE } from 'jsonql-constants'\nimport { isString, isKeyInObject } from 'jsonql-params-validator'\nimport { JsonqlError, clientErrorsHandler } from 'jsonql-errors'\n\nconst keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ]\n\n/**\n * @param {object} payload should be string when reply but could be transformed\n * @return {boolean} true is OK\n */\nconst isWsReply = payload => {\n const { data } = payload;\n if (data) {\n let result = keys.filter(key => isKeyInObject(data, key))\n return (result.length === keys.length) ? data : false;\n }\n return false;\n}\n\n/**\n * @param {object} payload This is the entire ws Event Object\n * @return {object} false on failed\n */\nconst extractWsPayload = payload => {\n const { data } = payload;\n let json = isString(data) ? JSON.parse(data) : data;\n // debugFn('extractWsPayload', json)\n let fdata;\n if ((fdata = isWsReply(json)) !== false) {\n return {\n resolverName: fdata[WS_EVT_NAME],\n data: fdata[WS_DATA_NAME],\n type: fdata[WS_REPLY_TYPE]\n };\n }\n throw new JsonqlError('payload can not be decoded', payload)\n}\n// export it\nexport default extractWsPayload\n","// the WebSocket main handler\nimport { constants, getDebug } from 'jsonql-ws-client/share'\nimport {\n ON_ERROR_PROP_NAME,\n LOGIN_EVENT_NAME,\n LOGOUT_EVENT_NAME,\n ACKNOWLEDGE_REPLY_TYPE,\n EMIT_REPLY_TYPE,\n ERROR_TYPE,\n ON_READY_PROP_NAME,\n ON_LOGIN_PROP_NAME\n} from 'jsonql-constants'\nimport { createQueryStr, createEvt } from 'jsonql-utils/module'\nimport extractWsPayload from './extract-ws-payload'\n\nconst debugFn = getDebug('ws-main-handler')\n\nconst {\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n EMIT_EVT\n} = constants\n\n/**\n * under extremely circumstances we might not even have a resolverName, then\n * we issue a global error for the developer to catch it\n * @param {object} ee event emitter\n * @param {string} namespace nsp\n * @param {string} resolverName resolver\n * @param {object} json decoded payload or error object\n */\nconst errorTypeHandler = (ee, namespace, resolverName, json) => {\n let evt = [namespace]\n if (resolverName) {\n debugFn(`a global error on ${namespace}`)\n evt.push(resolverName)\n }\n evt.push(ON_ERROR_PROP_NAME)\n let evtName = Reflect.apply(createEvt, null, evt)\n // test if there is a data field\n let payload = json.data || json;\n ee.$trigger(evtName, [payload])\n}\n\n/**\n * Binding the even to socket normally\n * @param {string} namespace\n * @param {object} ws the nsp\n * @param {object} ee EventEmitter\n * @param {boolean} isPrivate to id if this namespace is private or not\n * @return {object} promise resolve after the onopen event\n */\nexport function wsMainHandler(namespace, ws, ee, isPrivate) {\n // connection open\n ws.onopen = function onOpenCallback() {\n debugFn('ws.onopen listened')\n // we just call the onReady\n ee.$call(ON_READY_PROP_NAME, namespace)\n // need an extra parameter here to id the private nsp\n if (isPrivate) {\n console.log(`isPrivate and fire the ON_LOGIN_PROP_NAME ${ON_LOGIN_PROP_NAME}`)\n ee.$call(ON_LOGIN_PROP_NAME, namespace)\n }\n // add listener only after the open is called\n ee.$only(\n createEvt(namespace, EMIT_EVT),\n function wsMainOnEvtHandler(resolverName, args) {\n debugFn('calling server', resolverName, args)\n ws.send(\n createQueryStr(resolverName, args)\n )\n }\n )\n }\n\n // reply\n // If we change it to the event callback style\n // then the payload will just be the payload and fucks up the extractWsPayload call @TODO\n ws.onmessage = function onMessageCallback(payload) {\n // console.log(`on.message`, typeof payload, payload)\n try {\n const json = extractWsPayload(payload)\n const { resolverName, type } = json;\n debugFn('Hear from server', type, json)\n switch (type) {\n case EMIT_REPLY_TYPE:\n let e1 = createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME)\n let r = ee.$trigger(e1, [json])\n debugFn(`EMIT_REPLY_TYPE`, e1, r)\n break;\n case ACKNOWLEDGE_REPLY_TYPE:\n let e2 = createEvt(namespace, resolverName, ON_RESULT_PROP_NAME)\n let x = ee.$trigger(e2, [json])\n debugFn(`ACKNOWLEDGE_REPLY_TYPE`, e2, json)\n break;\n case ERROR_TYPE:\n // this is handled error and we won't throw it\n // we need to extract the error from json\n debugFn(`ERROR_TYPE`)\n errorTypeHandler(ee, namespace, resolverName, json)\n break;\n // @TODO there should be an error type instead of roll into the other two types? TBC\n default:\n // if this happen then we should throw it and halt the operation all together\n debugFn('Unhandled event!', json)\n errorTypeHandler(ee, namespace, resolverName, json)\n // let error = {error: {'message': 'Unhandled event!', type}};\n // ee.$trigger(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [error])\n }\n } catch(e) {\n console.error(`ws.onmessage error`, e)\n errorTypeHandler(ee, namespace, false, e)\n }\n }\n // when the server close the connection\n ws.onclose = function onCloseCallback() {\n debugFn('ws.onclose callback')\n // @TODO what to do with this\n // ee.$trigger(LOGOUT_EVENT_NAME, [namespace])\n }\n // listen to the LOGOUT_EVENT_NAME\n ee.$on(LOGOUT_EVENT_NAME, function closeEvtHandler() {\n try {\n debugFn('terminate ws connection')\n ws.terminate()\n } catch(e) {\n console.error('ws.terminate error', e)\n }\n })\n}\n","// actually binding the event client to the socket client\nimport { getNameFromPayload, getNamespaceInOrder } from 'jsonql-utils/module'\nimport { LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME, JS_WS_NAME } from 'jsonql-constants'\nimport {\n createNspClient,\n createNspAuthClient,\n clientEventHandler,\n triggerNamespacesOnError,\n clearMainEmitEvt,\n disconnect,\n getDebug\n} from 'jsonql-ws-client/share'\nimport { wsMainHandler } from './ws-main-handler'\n\nconst debugFn = getDebug('ws-create-client')\n\n/*\nimport {\n createNspClient,\n createNspAuthClient\n} from '../../tests/fixtures/create-login-clients'\n*/\n/**\n * Because the nsps can be throw away so it doesn't matter the scope\n * this will get reuse again\n * @param {object} opts configuration\n * @param {object} nspMap from contract\n * @param {string|null} token whether we have the token at run time\n * @return {object} nsps namespace with namespace as key\n */\nconst createNsps = function(opts, nspMap, token) {\n let { nspSet, publicNamespace } = nspMap;\n let login = false;\n let namespaces = [];\n let nsps = {};\n // first we need to binding all the events handler\n if (opts.enableAuth && opts.useJwt) {\n login = true; // just saying we need to listen to login event\n namespaces = getNamespaceInOrder(nspSet, publicNamespace)\n nsps = namespaces.map((namespace, i) => {\n if (i === 0) {\n if (token) {\n opts.token = token;\n // console.log('create createNspAuthClient at run time', opts)\n return {[namespace]: createNspAuthClient(namespace, opts)}\n }\n return {[namespace]: false}\n }\n return {[namespace]: createNspClient(namespace, opts)}\n }).reduce((first, next) => Object.assign(first, next), {})\n } else {\n let namespace = getNameFromPayload(nspSet)\n namespaces.push(namespace)\n // standard without login\n // the stock version should not have a namespace\n nsps[namespace] = createNspClient(false, opts)\n }\n // return\n return { nsps, namespaces, login }\n}\n\n/**\n * create a ws client\n * @param {object} opts configuration\n * @param {object} nspMap namespace with resolvers\n * @param {object} ee EventEmitter to pass through\n * @return {object} what comes in what goes out\n */\nexport function createClient(opts, nspMap, ee) {\n // arguments that don't change\n const args = [opts, nspMap, ee, wsMainHandler]\n // now create the nsps\n const { token } = opts;\n const { nsps, namespaces, login } = createNsps(opts, nspMap, token)\n // binding the listeners - and it will listen to LOGOUT event\n // to unbind itself, and the above call will bind it again\n Reflect.apply(clientEventHandler, null, args.concat([namespaces, nsps]))\n // setup listener\n if (login) {\n ee.$only(LOGIN_EVENT_NAME, function loginEventHandler(tokenLater) {\n // @BUG this keep causing an \"Disconnect call failed TypeError: Cannot read property 'readyState' of null\"\n // I think that is because it's not login then it can not be disconnect\n // how do we track this state globally\n // disconnect(nsps, JS_WS_NAME)\n\n // @TODO should we trigger error on this one?\n // triggerNamespacesOnError(ee, namespaces, LOGIN_EVENT_NAME)\n clearMainEmitEvt(ee, namespaces)\n // console.log('LOGIN_EVENT_NAME', token)\n const newNsps = createNsps(opts, nspMap, tokenLater)\n // rebind it\n Reflect.apply(\n clientEventHandler,\n null,\n args.concat([newNsps.namespaces, newNsps.nsps])\n )\n })\n }\n // return what input\n return { opts, nspMap, ee }\n}\n","// share method to create the wsClientResolver\n\nimport { createWsClient } from './create-ws-client'\nimport { createClient } from './create-client'\n\n/**\n * combine the create client resolver\n * @param {object} ws the different WebSocket module\n * @return {function} the wsClientResolver\n */\nexport default function createClientResolver(ws) {\n const client = createWsClient(ws)\n const authClient = createWsClient(ws, true)\n /**\n * wsClientResolver\n * @param {object} opts configuration\n * @param {object} nspMap from the contract\n * @param {object} ee instance of the eventEmitter\n * @return {object} passing the same 3 input out with additional in the opts\n */\n return function(opts, nspMap, ee) {\n opts.nspClient = client;\n opts.nspAuthClient = authClient;\n\n // console.log(`contract`, opts.contract)\n\n return createClient(opts, nspMap, ee)\n }\n}\n","// this will be the news style interface that will pass to the jsonql-ws-client\n// then return a function for accepting an opts to generate the final\n// client api\nimport WebSocket from 'ws'\nimport createClientResolver from './core/create-client-resolver'\n\n/**\n * @param {object} opts configuration\n * @param {object} nspMap from the contract\n * @param {object} ee instance of the eventEmitter\n * @return {object} passing the same 3 input out with additional in the opts\n */\nexport default createClientResolver(WebSocket)\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;ACAA;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 6feb18cd..43798541 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="data",n="error",o="jsonql",a="query",i="mutation",u="socket",c="type",s="optional",f="enumv",l="args",p="checker",h="alias",v="No message",d="__login__",g="__logout__",y="emit",b="acknowledge",_="error",m="nspSet",w="publicNamespace",j="onResult",O="onError",S="onReady",E="onLogin",k="token",$="socket.io",T=y,A="UKNNOWN RESULT!";var P="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},N="object"==typeof P&&P&&P.Object===Object&&P,z="object"==typeof self&&self&&self.Object===Object&&self,x=N||z||Function("return this")(),q=x.Symbol;function C(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--&&et(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function yt(t){return void 0===t}var bt="[object Boolean]";var _t="[object Number]";function mt(t){return function(t){return"number"==typeof t||B(t)&&V(t)==_t}(t)&&t!=+t}var wt="[object String]";function jt(t){return"string"==typeof t||!R(t)&&B(t)&&V(t)==wt}function Ot(t,e){return function(r){return t(e(r))}}var St=Ot(Object.getPrototypeOf,Object),Et="[object Object]",kt=Function.prototype,$t=Object.prototype,Tt=kt.toString,At=$t.hasOwnProperty,Pt=Tt.call(Object);function Nt(t){if(!B(t)||V(t)!=Et)return!1;var e=St(t);if(null===e)return!0;var r=At.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Tt.call(r)==Pt}var zt,xt=function(t,e,r){for(var n=-1,o=Object(t),a=r(t),i=a.length;i--;){var u=a[zt?i:++n];if(!1===e(o[u],u,o))break}return t};var qt="[object Arguments]";function Ct(t){return B(t)&&V(t)==qt}var Rt=Object.prototype,Mt=Rt.hasOwnProperty,Ft=Rt.propertyIsEnumerable,Lt=Ct(function(){return arguments}())?Ct:function(t){return B(t)&&Mt.call(t,"callee")&&!Ft.call(t,"callee")};var Wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Jt=Wt&&"object"==typeof module&&module&&!module.nodeType&&module,It=Jt&&Jt.exports===Wt?x.Buffer:void 0,Ut=(It?It.isBuffer:void 0)||function(){return!1},Dt=9007199254740991,Vt=/^(?:0|[1-9]\d*)$/;function Bt(t,e){var r=typeof t;return!!(e=null==e?Dt:e)&&("number"==r||"symbol"!=r&&Vt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Ht}var Gt={};Gt["[object Float32Array]"]=Gt["[object Float64Array]"]=Gt["[object Int8Array]"]=Gt["[object Int16Array]"]=Gt["[object Int32Array]"]=Gt["[object Uint8Array]"]=Gt["[object Uint8ClampedArray]"]=Gt["[object Uint16Array]"]=Gt["[object Uint32Array]"]=!0,Gt["[object Arguments]"]=Gt["[object Array]"]=Gt["[object ArrayBuffer]"]=Gt["[object Boolean]"]=Gt["[object DataView]"]=Gt["[object Date]"]=Gt["[object Error]"]=Gt["[object Function]"]=Gt["[object Map]"]=Gt["[object Number]"]=Gt["[object Object]"]=Gt["[object RegExp]"]=Gt["[object Set]"]=Gt["[object String]"]=Gt["[object WeakMap]"]=!1;var Kt,Qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xt=Qt&&"object"==typeof module&&module&&!module.nodeType&&module,Zt=Xt&&Xt.exports===Qt&&N.process,te=function(){try{var t=Xt&&Xt.require&&Xt.require("util").types;return t||Zt&&Zt.binding&&Zt.binding("util")}catch(t){}}(),ee=te&&te.isTypedArray,re=ee?(Kt=ee,function(t){return Kt(t)}):function(t){return B(t)&&Yt(t.length)&&!!Gt[V(t)]},ne=Object.prototype.hasOwnProperty;function oe(t,e){var r=R(t),n=!r&&Lt(t),o=!r&&!n&&Ut(t),a=!r&&!n&&!o&&re(t),i=r||n||o||a,u=i?function(t,e){for(var r=-1,n=Array(t);++r-1},we.prototype.set=function(t,e){var r=this.__data__,n=_e(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var je,Oe=x["__core-js_shared__"],Se=(je=/[^.]+$/.exec(Oe&&Oe.keys&&Oe.keys.IE_PROTO||""))?"Symbol(src)_1."+je:"";var Ee=Function.prototype.toString;function ke(t){if(null!=t){try{return Ee.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var $e=/^\[object .+?Constructor\]$/,Te=Function.prototype,Ae=Object.prototype,Pe=Te.toString,Ne=Ae.hasOwnProperty,ze=RegExp("^"+Pe.call(Ne).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function xe(t){return!(!se(t)||function(t){return!!Se&&Se in t}(t))&&(ve(t)?ze:$e).test(ke(t))}function qe(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return xe(r)?r:void 0}var Ce=qe(x,"Map"),Re=qe(Object,"create");var Me="__lodash_hash_undefined__",Fe=Object.prototype.hasOwnProperty;var Le=Object.prototype.hasOwnProperty;var We="__lodash_hash_undefined__";function Je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=a.get(t);if(s&&a.get(e))return s==e;var f=-1,l=!0,p=r&Ke?new He:void 0;for(a.set(t,e),a.set(e,t);++f0){if(++e>=Fn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Mn);function In(t,e){return Jn(function(t,e,r){return e=Rn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Rn(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Un.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!se(r))return!1;var n=typeof e;return!!("number"==n?de(r)&&Bt(e,r.length):"string"==n&&e in r)&&be(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},lo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},po=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!so(e)(t)})).length)})).length:e.length>e.filter((function(t){return!fo(r,t)})).length},ho=function(t,e){if(void 0===e&&(e=null),Nt(t)){if(!e)return!0;if(fo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!yt(r)||(!1!==(e=lo(t))?!po({arg:r},e):!so(t)(r))})).length)})).length}return!1},vo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),ho.apply(null,n)},go=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),yo=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),bo=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),mo=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),wo=function(){try{if(window||document)return!0}catch(t){}return!1},jo=function(){try{if(!wo()&&P)return!0}catch(t){}return!1};var Oo=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return wo()?"browser":jo()?"node":"unknown"},e}(Error),So=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,Error.captureStackTrace&&Error.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}(Oo),Eo=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),ko=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),$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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),To=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,Error.captureStackTrace&&Error.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}(Oo),Ao=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,Error.captureStackTrace&&Error.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}(Oo),Po=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 No(t){if(Array.isArray(t))throw new To("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof go:throw new go(e,r);case t instanceof yo:throw new yo(e,r);case t instanceof bo:throw new bo(e,r);case t instanceof _o:throw new _o(e,r);case t instanceof mo:throw new mo(e,r);case t instanceof So:throw new So(e,r);case t instanceof Eo:throw new Eo(e,r);case t instanceof ko:throw new ko(e,r);case t instanceof $o:throw new $o(e,r);case t instanceof To:throw new To(e,r);case t instanceof Po:throw new Po(e,r);default:throw new Ao(e,r)}}function zo(){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!vo(e);case"array"===t:return!fo(e.arg);case!1!==(r=lo(t)):return!po(e,r);default:return!so(t)(e.arg)}},qo=function(t,e){return yt(t)?!0!==e.optional||yt(e.defaultvalue)?null:e.defaultvalue:t},Co=function(t,e,o){var a;void 0===o&&(o=!1);var i=function(t,e){if(!fo(e))throw new Ao("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!fo(t))throw new Ao("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 zo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:zo(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:zo(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?qo(t,i):t,index:r,param:i,optional:a}}));default:throw zo(5),new Ao("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),u=i.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Qn(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 o?((a={})[n]=u,a[r]=i.map((function(t){return t.arg})),a):u},Ro=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Mo=function(t){return!Qn(t)};function Fo(t,e){var r=Kn(e,(function(t,e){return!t[uo]}));return Ir(r,{})?t:function(t,e){var r={};return e=dn(e),ye(t,(function(t,n,o){yn(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,dn((function(t){return t.alias===e})),ye)||e}))}function Lo(t,e){return Vn(e,(function(e,r){var n,o;return yt(t[r])||!0===e[no]&&Mo(t[r])?Dn({},e,((n={})[co]=!0,n)):((o={})[ao]=t[r],o[ro]=e[ro],o[no]=e[no]||!1,o[oo]=e[oo]||!1,o[io]=e[io]||!1,o)}))}function Wo(t,e){var r=function(t,e){var r=Fo(t,e);return{pristineValues:Vn(Kn(e,(function(t,e){return Ro(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Kn(e,(function(t,e){return!Ro(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Lo(n,r.checkAgainstAppProps),o]}var Jo=function(t){return fo(t)?t:[t]};var Io=function(t,e){return!fo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Uo=function(t,e){try{return!!ve(e)&&e.apply(null,[t])}catch(t){return!1}};function Do(t){return function(e,r){if(e[co])return e[ao];var n=function(t,e){var r,n=[[t[ao]],[(r={},r[ro]=Jo(t[ro]),r[no]=t[no],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw zo("runValidationAction",r,e),new ko(r,n);if(!1!==e[oo]&&!Io(e[ao],e[oo]))throw zo(oo,e[oo]),new Eo(r);if(!1!==e[io]&&!Uo(e[ao],e[io]))throw zo(io,e[io]),new $o(r);return e[ao]}}var Vo=function(t,e){return Promise.resolve(Wo(t,e))};function Bo(t,e,r,n){return void 0===t&&(t={}),Vo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=Vn(r,Do(e));return Dn(o,n)}(t,n)})).then((function(t){return Dn({},t,r)}))}function Ho(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[l]=t,i[c]=e,!0===r&&(i[s]=!0),fo(n)&&(i[f]=n),ve(o)&&(i[p]=o),jt(a)&&(i[h]=a),i}var Yo=Zn,Go=function(t,e,o){return void 0===o&&(o=!1),new Promise((function(a,i){var u=Co(t,e,o);return o?u[n].length?i(u[n]):a(u[r]):u.length?i(u):a([])}))},Ko=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],a=r[p],i=r[h];return Ho.apply(null,[t,e,n,o,a,i])},Qo=function(t){return function(e,r,n){return void 0===n&&(n={}),Bo(e,r,n,t)}}(Co),Xo=Ro,Zo=function(t){return R(t)?t:[t]},ta=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ea=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},ra=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,Zo(t))}),Reflect.apply(t,null,r))}};function na(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 oa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function aa(t){return!!ta(t,"socket")&&t.socket}var ia=function(t){var e;return(e={}).args=t,e};function ua(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),jt(t)&&R(e)){var o=ia(e);return!0===r?o:((n={})[t]=o,n)}throw new To("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var ca=function(t){return Nt(t)&&(ta(t,a)||ta(t,i)||ta(t,u))},sa="jsonql-ws-client",fa=function(t){try{if(window.debug)return window.debug(sa).extend(t)}catch(t){}try{if(P.debug)return P.debug(sa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[sa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",sa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:fa("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,s=!1,f=0;f0;)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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(fa("process-contract"),function(t){var e=aa(t);if(!1!==e)return e;throw new So("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=aa(t);if(!1===r){if(e)return t;throw new Ao("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={})[m]=((e={})[o]=ga(n),e),r[w]=o,r)}var ba=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)}},ma=function(t,e){Zo(e).forEach((function(e){t.$off(ea(e,y))}))},wa=function(t){if("function"==typeof t)return!0;console.error("Expect a function!")},ja=fa("respondHandler");function Oa(t,e,o){ta(t,n)?(ja("-- rejecter called --",t[n]),o(t[n])):ta(t,r)?(ja("-- resolver called --",t[r]),e(t[r])):(ja("-- UNKNOWN_RESULT --",t),o({message:A,error:t}))}var Sa=fa("action-call");function Ea(t,e,r,n){void 0===n&&(n=[]);var o=ea(e,y);return Sa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Zo(n)]),new Promise((function(n,o){t.$on(ea(e,r,j),(function(t){Sa("got the first result",t),Oa(t,n,o)}))}))}var ka=fa("setup-resolver"),$a=function(t,e,r,n,o){return[oa(t,"myNamespace",r),e,r,n,o]},Ta=function(t,e,r,n,o){return[na(t,j,(function(t){wa(t)&&e.$on(ea(r,n,j),(function(o){Oa(o,t,(function(t){e.$trigger(ea(r,n,O),t)}))}))})),e,r,n,o]},Aa=function(t,e,r,n,o){return[na(t,"onMessage",(function(t){if(wa(t)){e.$only(ea(r,n,"onMessage"),(function(o){Oa(o,t,(function(t){e.$trigger(ea(r,n,O),t)}))}))}})),e,r,n,o]},Pa=function(t,e,r,n,o){return[na(t,O,(function(t){wa(t)&&e.$only(ea(r,n,O),t)})),e,r,n,o]},Na=function(t,e,r,o,a){return na(t,"send",(function(t){ka("got payload for",t),Go(Zo(t),a.params,!0).then((function(a){a[n]&&a[n].length?(ka("got ERROR_KEY",a[n]),e.$call(ea(r,o,O),[JsonqlValidationError(o,a[n])])):Ea(e,r,o,t)})).catch((function(t){ka("error after validateAsync",t),e.$call(ea(r,o,O),[JsonqlValidationError(o,t)])}))}))};function za(t,e,r,n,o){var a=[n,o,t,e,r],i=ra($a,Ta,Aa,Pa,Na);return Reflect.apply(i,null,a)}var xa=fa("resolver-methods");function qa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return Go(o,n.params,!0).then((function(n){return Ea(t,e,r,n)})).catch(No)}}var Ca;fa("generator");function Ra(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],s=qa(r,a,u,c);n[u]=za(a,u,c,s,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return na(t,O,(function(t){if(wa(t))for(var n in r)e.$on(ea(n,O),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return na(t,S,(function(t){wa(t)&&e.$on(S,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?na(t,E,(function(t){wa(t)&&e.$only(E,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(xa(r.loginHandlerName,t),t&&Yo(t))return e.$trigger(d,[t]);throw new To(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(g,t)}),t}(e,r,t)}))}var Ma={loginHandlerName:Ko("login",["string"]),logoutHandlerName:Ko("logout",["string"]),useJwt:Ko(!0,["boolean","string"]),hostname:Ko(!1,["string"]),namespace:Ko(o,["string"]),wsOptions:Ko({},["object"]),contract:Ko({},["object"],(Ca={},Ca[p]=ca,Ca)),enableAuth:Ko(!1,["boolean"]),token:Ko(!1,["string"])},Fa=fa("check-options"),La={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Wa={version:"version: 0.5.0 module: umd",serverType:"ws"},Ja=null;"undefined"!=typeof WebSocket?Ja=WebSocket:"undefined"!=typeof MozWebSocket?Ja=MozWebSocket:void 0!==P?Ja=P.WebSocket||P.MozWebSocket:"undefined"!=typeof window?Ja=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ja=self.WebSocket||self.MozWebSocket);var Ia=Ja,Ua=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 Da(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ua(e))}:function(e,r){var n=Ua(e),o=r&&"string"==typeof r?n+"?"+k+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Va(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ba=fa("client-event-handler"),Ha=function(t,e){e.$only(ea(t,T),(function(r,n){Ba("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(ea(t,r,O),[o]),e.$call(ea(t,r,j),[{error:o}])}))},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]){Ba("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===$){var s=e.nspSet;c.push(s[o]),c.push(t)}Reflect.apply(n,null,c)}else Ha(o,r)})),r.$on(g,(function(){Ba("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(ea(e,O),[{message:r,namespace:e}])}))}(r,o,g),o.forEach((function(t){ma(r,t),a[t]=!1,Ha(t,r)}))}))}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 Xo(e,t)})).length===Ka.length&&e)}(Yo(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new Ao("payload can not be decoded",t)},Xa=fa("ws-main-handler"),Za="onMessage",ti=j,ei=T,ri=function(t,e,r,n){var o=[e];r&&(Xa("a global error on "+e),o.push(r)),o.push(O);var a=Reflect.apply(ea,null,o),i=n.data||n;t.$trigger(a,[i])};function ni(t,e,r,n){e.onopen=function(){Xa("ws.onopen listened"),r.$call(S,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+E),r.$call(E,t)),r.$only(ea(t,ei),(function(t,r){Xa("calling server",t,r),e.send(ua(t,r))}))},e.onmessage=function(e){try{var n=Qa(e),o=n.resolverName,a=n.type;switch(Xa("Hear from server",a,n),a){case y:var i=ea(t,o,Za),u=r.$trigger(i,[n]);Xa("EMIT_REPLY_TYPE",i,u);break;case b:var c=ea(t,o,ti);r.$trigger(c,[n]);Xa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case _:Xa("ERROR_TYPE"),ri(r,t,o,n);break;default:Xa("Unhandled event!",n),ri(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ri(r,t,!1,e)}},e.onclose=function(){Xa("ws.onclose callback")},r.$on(g,(function(){try{Xa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}fa("ws-create-client");var oi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=Va(e,t),i)})).reduce((function(t,e){return Object.assign(t,e)}),{});else{var s=(n=o,Object.keys(n)[0]);u.push(s),c[s]=Va(!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 function(t,e){return Qo(t,Ma,Object.assign(La,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Fa("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ra(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Da(t),r=Da(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ni],o=t.token,a=oi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ga,null,n.concat([u,i])),c&&r.$only(d,(function(o){ma(r,u);var a=oi(t,e,o);Reflect.apply(Ga,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ia),Wa)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Vt(t,e){return t===e||t!=t&&e!=e}function Ht(t,e){for(var r=t.length;r--;)if(Vt(t[r][0],e))return r;return-1}var Yt=Array.prototype.splice;function Gt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Gt.prototype.set=function(t,e){var r=this.__data__,n=Ht(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Qt="[object AsyncFunction]",Xt="[object Function]",Zt="[object GeneratorFunction]",te="[object Proxy]";function ee(t){if(!Kt(t))return!1;var e=it(t);return e==Xt||e==Zt||e==Qt||e==te}var re,ne=K["__core-js_shared__"],oe=(re=/[^.]+$/.exec(ne&&ne.keys&&ne.keys.IE_PROTO||""))?"Symbol(src)_1."+re:"";var ae=Function.prototype.toString;function ie(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ue=/^\[object .+?Constructor\]$/,ce=Function.prototype,fe=Object.prototype,se=ce.toString,le=fe.hasOwnProperty,pe=RegExp("^"+se.call(le).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function he(t){return!(!Kt(t)||(e=t,oe&&oe in e))&&(ee(t)?pe:ue).test(ie(t));var e}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return he(r)?r:void 0}var de=ve(K,"Map"),ge=ve(Object,"create");var ye="__lodash_hash_undefined__",be=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var me="__lodash_hash_undefined__";function we(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=He}function Ge(t){return null!=t&&Ye(t.length)&&!ee(t)}var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qe=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,Xe=Qe&&Qe.exports===Ke?K.Buffer:void 0,Ze=(Xe?Xe.isBuffer:void 0)||function(){return!1},tr={};tr["[object Float32Array]"]=tr["[object Float64Array]"]=tr["[object Int8Array]"]=tr["[object Int16Array]"]=tr["[object Int32Array]"]=tr["[object Uint8Array]"]=tr["[object Uint8ClampedArray]"]=tr["[object Uint16Array]"]=tr["[object Uint32Array]"]=!0,tr["[object Arguments]"]=tr["[object Array]"]=tr["[object ArrayBuffer]"]=tr["[object Boolean]"]=tr["[object DataView]"]=tr["[object Date]"]=tr["[object Error]"]=tr["[object Function]"]=tr["[object Map]"]=tr["[object Number]"]=tr["[object Object]"]=tr["[object RegExp]"]=tr["[object Set]"]=tr["[object String]"]=tr["[object WeakMap]"]=!1;var er,rr="object"==typeof exports&&exports&&!exports.nodeType&&exports,nr=rr&&"object"==typeof module&&module&&!module.nodeType&&module,or=nr&&nr.exports===rr&&Y.process,ar=function(){try{var t=nr&&nr.require&&nr.require("util").types;return t||or&&or.binding&&or.binding("util")}catch(t){}}(),ir=ar&&ar.isTypedArray,ur=ir?(er=ir,function(t){return er(t)}):function(t){return ft(t)&&Ye(t.length)&&!!tr[it(t)]};function cr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var fr=Object.prototype.hasOwnProperty;function sr(t,e,r){var n=t[e];fr.call(t,e)&&Vt(n,r)&&(void 0!==r||e in t)||$e(t,e,r)}var lr=9007199254740991,pr=/^(?:0|[1-9]\d*)$/;function hr(t,e){var r=typeof t;return!!(e=null==e?lr:e)&&("number"==r||"symbol"!=r&&pr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=kr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Er);function Pr(t,e){return Ar(function(t,e,r){return e=Sr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Sr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Nr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Kt(r))return!1;var n=typeof e;return!!("number"==n?Ge(r)&&hr(e,r.length):"string"==n&&e in r)&&Vt(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&Zr?new Kr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Fo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Lo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ro(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Mo(r,t)})).length},Wo=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Ir(r)||(!1!==(e=Fo(t))?!Lo({arg:r},e):!Ro(t)(r))})).length)})).length}return!1},Io=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Wo.apply(null,n)};function Jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Uo=function(t,e){var r;switch(!0){case"object"===t:return!Io(e);case"array"===t:return!Mo(e.arg);case!1!==(r=Fo(t)):return!Lo(e,r);default:return!Ro(t)(e.arg)}},Do=function(t,e){return Ir(t)?!0!==e.optional||Ir(e.defaultvalue)?null:e.defaultvalue:t},Bo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Mo(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(!Mo(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 Jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Jo(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:Jo(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?Do(t,i):t,index:r,param:i,optional:a}}));default:throw Jo(5),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!!So(e)&&!(r.type.length>r.type.filter((function(e){return Uo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Uo(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Vo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ho=function(t){return!So(t)};function Yo(t,e){var r=Oo(e,(function(t,e){return!t[qo]}));return Bn(r,{})?t:function(t,e){var r={};return e=yo(e),Yr(t,(function(t,n,o){$e(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,yo((function(t){return t.alias===e})),Yr)||e}))}function Go(t,e){return bo(e,(function(e,r){var n,o;return Ir(t[r])||!0===e[Po]&&Ho(t[r])?zr({},e,((n={})[Co]=!0,n)):((o={})[zo]=t[r],o[Ao]=e[Ao],o[Po]=e[Po]||!1,o[No]=e[No]||!1,o[xo]=e[xo]||!1,o)}))}function Ko(t,e){var r=function(t,e){var r=Yo(t,e);return{pristineValues:bo(Oo(e,(function(t,e){return Vo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Oo(e,(function(t,e){return!Vo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Go(n,r.checkAgainstAppProps),o]}var Qo=function(t){return Mo(t)?t:[t]};var Xo=function(t,e){return!Mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Zo=function(t,e){try{return!!ee(e)&&e.apply(null,[t])}catch(t){return!1}};function ta(t){return function(e,r){if(e[Co])return e[zo];var n=function(t,e){var r,n=[[t[zo]],[(r={},r[Ao]=Qo(t[Ao]),r[Po]=t[Po],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Jo("runValidationAction",r,e),new h(r,n);if(!1!==e[No]&&!Xo(e[zo],e[No]))throw Jo(No,e[No]),new p(r);if(!1!==e[xo]&&!Zo(e[zo],e[xo]))throw Jo(xo,e[xo]),new v(r);return e[zo]}}var ea=function(t,e){return Promise.resolve(Ko(t,e))};function ra(t,e,r,n){return void 0===t&&(t={}),ea(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=bo(r,ta(e));return zr(o,n)}(t,n)})).then((function(t){return zr({},t,r)}))}function na(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Mo(n)&&(i[S]=n),ee(o)&&(i[k]=o),Mr(a)&&(i[$]=a),i}var oa=ko,aa=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Bo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ia=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return na.apply(null,[t,e,n,o,a,i])},ua=function(t){return function(e,r,n){return void 0===n&&(n={}),ra(e,r,n,t)}}(Bo),ca=Vo,fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Cr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Cr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=function(t){if("function"==typeof t)return!0;console.error("Expect a function!")},ja=sa("respondHandler");function Oa(t,e,r){Ut(t,y)?(ja("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(ja("-- resolver called --",t[g]),e(t[g])):(ja("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Sa=sa("action-call");function Ea(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Sa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Sa("got the first result",t),Oa(t,n,o)}))}))}var ka=sa("setup-send"),$a=function(t,e,r,n,o){return xr(t,"send",(function(t){ka("got payload for",t),aa(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Ea(e,r,n,t);ka("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){ka("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return aa(t,o.params,!0).then((function(t){return Ea(e,r,n,t)})).catch(U)}}))},Ta=(sa("setup-resolver"),function(t,e,r,n,o){return[qr(t,"myNamespace",r),e,r,n,o]}),Aa=function(t,e,r,n,o){return[xr(t,R,(function(t){wa(t)&&e.$on(Dt(r,n,R),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Pa=function(t,e,r,n,o){return[xr(t,"onMessage",(function(t){if(wa(t)){e.$only(Dt(r,n,"onMessage"),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Na=function(t,e,r,n,o){return[xr(t,M,(function(t){wa(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function za(t,e,r,n,o){var a=[n,o,t,e,r],i=Bt(Ta,Aa,Pa,Na,$a);return Reflect.apply(i,null,a)}var xa=sa("resolver-methods");function qa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return aa(o,n.params,!0).then((function(n){return Ea(t,e,r,n)})).catch(U)}}var Ca;sa("generator");function Ra(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=qa(r,a,u,c);n[u]=za(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return xr(t,M,(function(t){if(wa(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return xr(t,F,(function(t){wa(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?xr(t,L,(function(t){wa(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(xa(r.loginHandlerName,t),t&&oa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ma={loginHandlerName:ia("login",["string"]),logoutHandlerName:ia("logout",["string"]),useJwt:ia(!0,["boolean","string"]),hostname:ia(!1,["string"]),namespace:ia(b,["string"]),wsOptions:ia({},["object"]),contract:ia({},["object"],(Ca={},Ca[k]=Wr,Ca)),enableAuth:ia(!1,["boolean"]),token:ia(!1,["string"])},Fa=sa("check-options"),La={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Wa={version:"version: 0.5.0 module: umd",serverType:"ws"},Ia=null;"undefined"!=typeof WebSocket?Ia=WebSocket:"undefined"!=typeof MozWebSocket?Ia=MozWebSocket:void 0!==u?Ia=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Ia=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ia=self.WebSocket||self.MozWebSocket);var Ja=Ia,Ua=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 Da(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ua(e))}:function(e,r){var n=Ua(e),o=r&&"string"==typeof r?n+"?"+W+"="+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 Va=sa("client-event-handler"),Ha=function(t,e){e.$only(Dt(t,B),(function(r,n){Va("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},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]){Va("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Ha(o,r)})),r.$on(P,(function(){Va("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Ha(t,r)}))}))}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 ca(e,t)})).length===Ka.length&&e)}(oa(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=sa("ws-main-handler"),Za="onMessage",ti=R,ei=B,ri=function(t,e,r,n){var o=[e];r&&(Xa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ni(t,e,r,n){e.onopen=function(){Xa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ei),(function(t,r){Xa("calling server",t,r),e.send(Lr(t,r))}))},e.onmessage=function(e){try{var n=Qa(e),o=n.resolverName,a=n.type;switch(Xa("Hear from server",a,n),a){case N:var i=Dt(t,o,Za),u=r.$trigger(i,[n]);Xa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,ti);r.$trigger(c,[n]);Xa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Xa("ERROR_TYPE"),ri(r,t,o,n);break;default:Xa("Unhandled event!",n),ri(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ri(r,t,!1,e)}},e.onclose=function(){Xa("ws.onclose callback")},r.$on(P,(function(){try{Xa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var oi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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){return void 0===e&&(e={}),function(r){var n=r.eventEmitter;return function(t,e){return ua(t,Ma,Object.assign(La,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Fa("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ra(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Da(t),r=Da(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ni],o=t.token,a=oi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ga,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=oi(t,e,o);Reflect.apply(Ga,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ja),Wa)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index aade9804..dc9c779f 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -1,6 +1,6 @@ { "name": "@jsonql/ws", - "version": "0.5.0", + "version": "0.6.0", "description": "WS (WebSocket) jsonql client module for browser / node", "main": "dist/jsonql-ws.cjs.js", "browser": "dist/jsonql-ws.umd.js", @@ -37,12 +37,12 @@ "license": "ISC", "homepage": "jsonql.org", "dependencies": { - "jsonql-constants": "^1.8.7", + "jsonql-constants": "^1.8.8", "jsonql-errors": "^1.1.3", "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.7.8", - "jsonql-ws-client": "^1.1.3", + "jsonql-ws-client": "^1.1.4", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/@jsonql/ws/tests/ws-client-basic.test.js b/packages/@jsonql/ws/tests/ws-client-basic.test.js index 92122024..e751cc96 100644 --- a/packages/@jsonql/ws/tests/ws-client-basic.test.js +++ b/packages/@jsonql/ws/tests/ws-client-basic.test.js @@ -34,13 +34,7 @@ test.after(t => { test.cb('It should able to connect to the ws server', t => { t.plan(2) let client = t.context.client - - debug(client) - let ver = client.devHelpers.getVer() - - debug('version', ver) - t.truthy(ver) client.simple(100) @@ -79,7 +73,9 @@ test.cb('It should able to send message back while its talking to the server', t debug(c) if (c === 3) { debug(c) - client.continuous.send = 'terminate' + // client.continuous.send = 'terminate' + // use the new interface + client.continuous.send('terminate') t.pass() t.end() } -- Gitee From 2fc5ee79c58b809dc801ab26a36abd64b1408237 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 21:26:34 +0800 Subject: [PATCH 05/44] @jsonql/ws to 0.6.0 --- .../@jsonql/ws/dist/jsonql-ws-client.cjs.js | 7808 +---------------- .../ws/dist/jsonql-ws-client.cjs.js.map | 2 +- .../@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- 3 files changed, 3 insertions(+), 7809 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index f48f98fd..69b3277a 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,7808 +1,2 @@ -'use strict'; - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var debug$2 = _interopDefault(require('debug')); -require('fs'); -require('path'); -var WebSocket = _interopDefault(require('ws')); - -var global$1 = (typeof global !== "undefined" ? global : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}); - -/** - * This is a custom error to throw when server throw a 406 - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ -var Jsonql406Error = /*@__PURE__*/(function (Error) { - function Jsonql406Error() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - // We can't access the static name from an instance - // but we can do it like this - this.className = Jsonql406Error.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, Jsonql406Error); - } - } - - if ( Error ) Jsonql406Error.__proto__ = Error; - Jsonql406Error.prototype = Object.create( Error && Error.prototype ); - Jsonql406Error.prototype.constructor = Jsonql406Error; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 406; - }; - - staticAccessors.name.get = function () { - return 'Jsonql406Error'; - }; - - Object.defineProperties( Jsonql406Error, staticAccessors ); - - return Jsonql406Error; -}(Error)); - -/** - * This is a custom error to throw when server throw a 500 - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ -var Jsonql500Error = /*@__PURE__*/(function (Error) { - function Jsonql500Error() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = Jsonql500Error.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, Jsonql500Error); - } - } - - if ( Error ) Jsonql500Error.__proto__ = Error; - Jsonql500Error.prototype = Object.create( Error && Error.prototype ); - Jsonql500Error.prototype.constructor = Jsonql500Error; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 500; - }; - - staticAccessors.name.get = function () { - return 'Jsonql500Error'; - }; - - Object.defineProperties( Jsonql500Error, staticAccessors ); - - return Jsonql500Error; -}(Error)); - -/** - * This is a custom error to throw when pass credential but fail - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ -var JsonqlAuthorisationError = /*@__PURE__*/(function (Error) { - function JsonqlAuthorisationError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlAuthorisationError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlAuthorisationError); - } - } - - if ( Error ) JsonqlAuthorisationError.__proto__ = Error; - JsonqlAuthorisationError.prototype = Object.create( Error && Error.prototype ); - JsonqlAuthorisationError.prototype.constructor = JsonqlAuthorisationError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 401; - }; - - staticAccessors.name.get = function () { - return 'JsonqlAuthorisationError'; - }; - - Object.defineProperties( JsonqlAuthorisationError, staticAccessors ); - - return JsonqlAuthorisationError; -}(Error)); - -/** - * This is a custom error when not supply the credential and try to get contract - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ -var JsonqlContractAuthError = /*@__PURE__*/(function (Error) { - function JsonqlContractAuthError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlContractAuthError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlContractAuthError); - } - } - - if ( Error ) JsonqlContractAuthError.__proto__ = Error; - JsonqlContractAuthError.prototype = Object.create( Error && Error.prototype ); - JsonqlContractAuthError.prototype.constructor = JsonqlContractAuthError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 401; - }; - - staticAccessors.name.get = function () { - return 'JsonqlContractAuthError'; - }; - - Object.defineProperties( JsonqlContractAuthError, staticAccessors ); - - return JsonqlContractAuthError; -}(Error)); - -/** - * This is a custom error to throw when the resolver throw error and capture inside the middleware - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ -var JsonqlResolverAppError = /*@__PURE__*/(function (Error) { - function JsonqlResolverAppError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlResolverAppError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlResolverAppError); - } - } - - if ( Error ) JsonqlResolverAppError.__proto__ = Error; - JsonqlResolverAppError.prototype = Object.create( Error && Error.prototype ); - JsonqlResolverAppError.prototype.constructor = JsonqlResolverAppError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 500; - }; - - staticAccessors.name.get = function () { - return 'JsonqlResolverAppError'; - }; - - Object.defineProperties( JsonqlResolverAppError, staticAccessors ); - - return JsonqlResolverAppError; -}(Error)); - -/** - * some time it's hard to tell where the error is throw from - * because client server throw the same, therefore this util fn - * to add a property to the error object to tell if it's throw - * from client or server - * - */ - -var isBrowser = function () { - try { - if (window || document) { - return true; - } - } catch(e) {} - return false; -}; - -var isNode = function () { - try { - if (!isBrowser() && global$1) { - return true; - } - } catch(e) {} - return false; -}; - -function whereAmI() { - if (isBrowser()) { - return 'browser' - } - if (isNode()) { - return 'node' - } - return 'unknown' -} - -// The base Error of all - -var JsonqlBaseError = /*@__PURE__*/(function (Error) { - function JsonqlBaseError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - } - - if ( Error ) JsonqlBaseError.__proto__ = Error; - JsonqlBaseError.prototype = Object.create( Error && Error.prototype ); - JsonqlBaseError.prototype.constructor = JsonqlBaseError; - - JsonqlBaseError.where = function where () { - return whereAmI() - }; - - return JsonqlBaseError; -}(Error)); - -/** - * This is a custom error to throw when could not find the resolver - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ -var JsonqlResolverNotFoundError = /*@__PURE__*/(function (JsonqlBaseError) { - function JsonqlResolverNotFoundError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - JsonqlBaseError.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlResolverNotFoundError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlResolverNotFoundError); - } - } - - if ( JsonqlBaseError ) JsonqlResolverNotFoundError.__proto__ = JsonqlBaseError; - JsonqlResolverNotFoundError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); - JsonqlResolverNotFoundError.prototype.constructor = JsonqlResolverNotFoundError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 404; - }; - - staticAccessors.name.get = function () { - return 'JsonqlResolverNotFoundError'; - }; - - Object.defineProperties( JsonqlResolverNotFoundError, staticAccessors ); - - return JsonqlResolverNotFoundError; -}(JsonqlBaseError)); - -// this get throw from within the checkOptions when run through the enum failed -var JsonqlEnumError = /*@__PURE__*/(function (Error) { - function JsonqlEnumError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlEnumError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlEnumError); - } - } - - if ( Error ) JsonqlEnumError.__proto__ = Error; - JsonqlEnumError.prototype = Object.create( Error && Error.prototype ); - JsonqlEnumError.prototype.constructor = JsonqlEnumError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlEnumError'; - }; - - Object.defineProperties( JsonqlEnumError, staticAccessors ); - - return JsonqlEnumError; -}(Error)); - -// this will throw from inside the checkOptions -var JsonqlTypeError = /*@__PURE__*/(function (Error) { - function JsonqlTypeError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlTypeError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlTypeError); - } - } - - if ( Error ) JsonqlTypeError.__proto__ = Error; - JsonqlTypeError.prototype = Object.create( Error && Error.prototype ); - JsonqlTypeError.prototype.constructor = JsonqlTypeError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlTypeError'; - }; - - Object.defineProperties( JsonqlTypeError, staticAccessors ); - - return JsonqlTypeError; -}(Error)); - -// allow supply a custom checker function -// if that failed then we throw this error -var JsonqlCheckerError = /*@__PURE__*/(function (Error) { - function JsonqlCheckerError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlCheckerError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlCheckerError); - } - } - - if ( Error ) JsonqlCheckerError.__proto__ = Error; - JsonqlCheckerError.prototype = Object.create( Error && Error.prototype ); - JsonqlCheckerError.prototype.constructor = JsonqlCheckerError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlCheckerError'; - }; - - Object.defineProperties( JsonqlCheckerError, staticAccessors ); - - return JsonqlCheckerError; -}(Error)); - -// custom validation error class -// when validaton failed -var JsonqlValidationError$1 = /*@__PURE__*/(function (JsonqlBaseError) { - function JsonqlValidationError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - JsonqlBaseError.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlValidationError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlValidationError); - } - } - - if ( JsonqlBaseError ) JsonqlValidationError.__proto__ = JsonqlBaseError; - JsonqlValidationError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); - JsonqlValidationError.prototype.constructor = JsonqlValidationError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlValidationError'; - }; - - Object.defineProperties( JsonqlValidationError, staticAccessors ); - - return JsonqlValidationError; -}(JsonqlBaseError)); - -// the core stuff to id if it's calling with jsonql -var DATA_KEY = 'data'; -var ERROR_KEY = 'error'; - -var JSONQL_PATH = 'jsonql'; - -// export const INDEX = 'index'; use INDEX_KEY instead -var DEFAULT_TYPE = 'any'; - -// @TODO remove this is not in use -// export const CLIENT_CONFIG_FILE = '.clients.json'; -// export const CONTRACT_CONFIG_FILE = 'jsonql-contract-config.js'; -// type of resolvers -var QUERY_NAME = 'query'; -var MUTATION_NAME = 'mutation'; -var SOCKET_NAME = 'socket'; -var QUERY_ARG_NAME = 'args'; -// for contract-cli -var KEY_WORD = 'continue'; - -var TYPE_KEY = 'type'; -var OPTIONAL_KEY = 'optional'; -var ENUM_KEY = 'enumv'; // need to change this because enum is a reserved word -var ARGS_KEY = 'args'; -var CHECKER_KEY = 'checker'; -var ALIAS_KEY = 'alias'; -var LOGIN_NAME = 'login'; -var ISSUER_NAME = LOGIN_NAME; // legacy issue need to replace them later -var LOGOUT_NAME = 'logout'; - -var OR_SEPERATOR = '|'; - -var STRING_TYPE = 'string'; -var BOOLEAN_TYPE = 'boolean'; -var ARRAY_TYPE = 'array'; -var OBJECT_TYPE = 'object'; - -var NUMBER_TYPE = 'number'; -var ARRAY_TYPE_LFT = 'array.<'; -var ARRAY_TYPE_RGT = '>'; - -var NO_ERROR_MSG = 'No message'; -var NO_STATUS_CODE = -1; -var LOGIN_EVENT_NAME = '__login__'; -var LOGOUT_EVENT_NAME = '__logout__'; - -// for ws servers -var WS_REPLY_TYPE = '__reply__'; -var WS_EVT_NAME = '__event__'; -var WS_DATA_NAME = '__data__'; -var EMIT_REPLY_TYPE = 'emit'; -var ACKNOWLEDGE_REPLY_TYPE = 'acknowledge'; -var ERROR_TYPE = 'error'; - -var NSP_SET = 'nspSet'; -var PUBLIC_NAMESPACE = 'publicNamespace'; - -var JS_WS_SOCKET_IO_NAME = 'socket.io'; -var JS_WS_NAME = 'ws'; - -// for ws client -var ON_MESSAGE_PROP_NAME = 'onMessage'; -var ON_RESULT_PROP_NAME = 'onResult'; -var ON_ERROR_PROP_NAME = 'onError'; -var ON_READY_PROP_NAME = 'onReady'; -var ON_LOGIN_PROP_NAME = 'onLogin'; // new @1.8.6 - -var SEND_MSG_PROP_NAME = 'send'; -var NOT_LOGIN_ERR_MSG = 'NOT LOGIN'; -var TOKEN_PARAM_NAME = 'token'; - -/** - * This is a custom error to throw whenever a error happen inside the jsonql - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ -var JsonqlError = /*@__PURE__*/(function (JsonqlBaseError) { - function JsonqlError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - JsonqlBaseError.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlError); - // this.detail = this.stack; - } - } - - if ( JsonqlBaseError ) JsonqlError.__proto__ = JsonqlBaseError; - JsonqlError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); - JsonqlError.prototype.constructor = JsonqlError; - - var staticAccessors = { name: { configurable: true },statusCode: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlError'; - }; - - staticAccessors.statusCode.get = function () { - return NO_STATUS_CODE; - }; - - Object.defineProperties( JsonqlError, staticAccessors ); - - return JsonqlError; -}(JsonqlBaseError)); - -// this is from an example from Koa team to use for internal middleware ctx.throw -// but after the test the res.body part is unable to extract the required data -// I keep this one here for future reference - -var JsonqlServerError = /*@__PURE__*/(function (Error) { - function JsonqlServerError(statusCode, message) { - Error.call(this, message); - this.statusCode = statusCode; - this.className = JsonqlServerError.name; - } - - if ( Error ) JsonqlServerError.__proto__ = Error; - JsonqlServerError.prototype = Object.create( Error && Error.prototype ); - JsonqlServerError.prototype.constructor = JsonqlServerError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlServerError'; - }; - - Object.defineProperties( JsonqlServerError, staticAccessors ); - - return JsonqlServerError; -}(Error)); - -/** - * this will put into generator call at the very end and catch - * the error throw from inside then throw again - * this is necessary because we split calls inside and the throw - * will not reach the actual client unless we do it this way - * @param {object} e Error - * @return {void} just throw - */ -function finalCatch(e) { - // this is a hack to get around the validateAsync not actually throw error - // instead it just rejected it with the array of failed parameters - if (Array.isArray(e)) { - // if we want the message then I will have to create yet another function - // to wrap this function to provide the name prop - throw new JsonqlValidationError$1('', e) - } - var msg = e.message || NO_ERROR_MSG; - var detail = e.detail || e; - switch (true) { - case e instanceof Jsonql406Error: - throw new Jsonql406Error(msg, detail) - case e instanceof Jsonql500Error: - throw new Jsonql500Error(msg, detail) - case e instanceof JsonqlAuthorisationError: - throw new JsonqlAuthorisationError(msg, detail) - case e instanceof JsonqlContractAuthError: - throw new JsonqlContractAuthError(msg, detail) - case e instanceof JsonqlResolverAppError: - throw new JsonqlResolverAppError(msg, detail) - case e instanceof JsonqlResolverNotFoundError: - throw new JsonqlResolverNotFoundError(msg, detail) - case e instanceof JsonqlEnumError: - throw new JsonqlEnumError(msg, detail) - case e instanceof JsonqlTypeError: - throw new JsonqlTypeError(msg, detail) - case e instanceof JsonqlCheckerError: - throw new JsonqlCheckerError(msg, detail) - case e instanceof JsonqlValidationError$1: - throw new JsonqlValidationError$1(msg, detail) - case e instanceof JsonqlServerError: - throw new JsonqlServerError(msg, detail) - default: - throw new JsonqlError(msg, detail) - } -} - -// constants - -var SOCKET_IO = JS_WS_SOCKET_IO_NAME; - -var MISSING_PROP_ERR = 'Missing property in contract!'; - -var EXPECT_FUNC_ERR = "Expect a function!"; - -var EMIT_EVT = EMIT_REPLY_TYPE; - -var UNKNOWN_RESULT = 'UKNNOWN RESULT!'; - -var MY_NAMESPACE = 'myNamespace'; - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global$1 == 'object' && global$1 && global$1.Object === Object && global$1; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -/** Built-in value references. */ -var Symbol = root.Symbol; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; -} - -/** Used for built-in method references. */ -var objectProto$1 = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString$1 = objectProto$1.toString; - -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString$1.call(value); -} - -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag$1 = Symbol ? Symbol.toStringTag : undefined; - -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag$1 && symToStringTag$1 in Object(value)) - ? getRawTag(value) - : objectToString(value); -} - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -/** Built-in value references. */ -var getPrototype = overArg(Object.getPrototypeOf, Object); - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto$2 = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty$1 = objectProto$2.hasOwnProperty; - -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); - -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty$1.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; -} - -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); -} - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ -function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; -} - -/** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ -function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); -} - -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} - -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); -} - -/** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ -function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -/** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ -function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -/** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function asciiToArray(string) { - return string.split(''); -} - -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsZWJ = '\\u200d'; - -/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - -/** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ -function hasUnicode(string) { - return reHasUnicode.test(string); -} - -/** Used to compose unicode character classes. */ -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'; - -/** Used to compose unicode capture groups. */ -var 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'; - -/** Used to compose unicode regexes. */ -var 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('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function unicodeToArray(string) { - return string.match(reUnicode) || []; -} - -/** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); -} - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} - -/** Used to match leading and trailing whitespace. */ -var reTrim = /^\s+|\s+$/g; - -/** - * Removes leading and trailing whitespace or specified characters from `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to trim. - * @param {string} [chars=whitespace] The characters to trim. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the trimmed string. - * @example - * - * _.trim(' abc '); - * // => 'abc' - * - * _.trim('-_-abc-_-', '_-'); - * // => 'abc' - * - * _.map([' foo ', ' bar '], _.trim); - * // => ['foo', 'bar'] - */ -function trim(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined)) { - return string.replace(reTrim, ''); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), - chrSymbols = stringToArray(chars), - start = charsStartIndex(strSymbols, chrSymbols), - end = charsEndIndex(strSymbols, chrSymbols) + 1; - - return castSlice(strSymbols, start, end).join(''); -} - -// bunch of generic helpers - -/** - * DIY in Array - * @param {array} arr to check from - * @param {*} value to check against - * @return {boolean} true on found - */ -var inArray = function (arr, value) { return !!arr.filter(function (a) { return a === value; }).length; }; - -// quick and dirty to turn non array to array -var toArray = function (arg) { return isArray(arg) ? arg : [arg]; }; - - -/** - * @param {object} obj for search - * @param {string} key target - * @return {boolean} true on success - */ -var isKeyInObject = function(obj, key) { - var keys = Object.keys(obj); - return inArray(keys, key) -}; - -/** - * create a event name - * @param {string[]} args - * @return {string} event name for use - */ -var createEvt = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return args.join('_'); -}; - -/** - * using just the map reduce to chain multiple functions together - * @param {function} mainFn the init function - * @param {array} moreFns as many as you want to take the last value and return a new one - * @return {function} accept value for the mainFn - */ -var chainFns = function (mainFn) { - var moreFns = [], len = arguments.length - 1; - while ( len-- > 0 ) moreFns[ len ] = arguments[ len + 1 ]; - - return ( - function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return ( - moreFns.reduce(function (value, nextFn) { return ( - // change here to check if the return value is array then we spread it - Reflect.apply(nextFn, null, toArray(value)) - ); }, Reflect.apply(mainFn, null, args)) - ); - } -); -}; - -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; - -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; - this.size = 0; -} - -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; -} - -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} - -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} - -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} - -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -/** Used for built-in method references. */ -var funcProto$1 = Function.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString$1 = funcProto$1.toString; - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString$1.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Used for built-in method references. */ -var funcProto$2 = Function.prototype, - objectProto$3 = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString$2 = funcProto$2.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty$2 = objectProto$3.hasOwnProperty; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString$2.call(hasOwnProperty$2).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} - -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -/* Built-in method references that are verified to be native. */ -var Map$1 = getNative(root, 'Map'); - -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; -} - -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used for built-in method references. */ -var objectProto$4 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$3 = objectProto$4.hasOwnProperty; - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty$3.call(data, key) ? data[key] : undefined; -} - -/** Used for built-in method references. */ -var objectProto$5 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$4 = objectProto$5.hasOwnProperty; - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key); -} - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED$1 = '__lodash_hash_undefined__'; - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value; - return this; -} - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map$1 || ListCache), - 'string': new Hash - }; -} - -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map$1 || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; -} - -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; -} - -// Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; - -var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} -}()); - -/** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } -} - -/** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } -} - -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} - -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; - -/** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; -} - -/** Built-in value references. */ -var Uint8Array = root.Uint8Array; - -/** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ -function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; -} - -/** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} - -/** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ -function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; -} - -/** Built-in value references. */ -var objectCreate = Object.create; - -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ -var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; -}()); - -/** Used for built-in method references. */ -var objectProto$6 = Object.prototype; - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$6; - - return value === proto; -} - -/** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; -} - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; - -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; -} - -/** Used for built-in method references. */ -var objectProto$7 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$5 = objectProto$7.hasOwnProperty; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto$7.propertyIsEnumerable; - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty$5.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); -}; - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -/** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; -} - -/** Detect free variable `exports`. */ -var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; - -/** Built-in value references. */ -var Buffer$1 = moduleExports$1 ? root.Buffer : undefined; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer$1 ? Buffer$1.isBuffer : undefined; - -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse; - -/** `Object#toString` result references. */ -var 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]'; - -var 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]'; - -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -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] = false; - -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; -} - -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} - -/** Detect free variable `exports`. */ -var freeExports$2 = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule$2 = freeExports$2 && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2; - -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports$2 && freeGlobal.process; - -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule$2 && freeModule$2.require && freeModule$2.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); - -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - -/** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; -} - -/** Used for built-in method references. */ -var objectProto$8 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$6 = objectProto$8.hasOwnProperty; - -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty$6.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } -} - -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ -function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; -} - -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER$1 = 9007199254740991; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER$1 : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); -} - -/** Used for built-in method references. */ -var objectProto$9 = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$7 = objectProto$9.hasOwnProperty; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty$7.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; -} - -/** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; -} - -/** Used for built-in method references. */ -var objectProto$a = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$8 = objectProto$a.hasOwnProperty; - -/** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) { - result.push(key); - } - } - return result; -} - -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); -} - -/** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ -function toPlainObject(value) { - return copyObject(value, keysIn(value)); -} - -/** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); -} - -/** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); -} - -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} - -/** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ -function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); -} - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ -function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; -} - -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant(value) { - return function() { - return value; - }; -} - -/** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); -}; - -/** Used to detect hot functions by number of calls within a span of milliseconds. */ -var HOT_COUNT = 800, - HOT_SPAN = 16; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeNow = Date.now; - -/** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ -function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; -} - -/** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var setToString = shortOut(baseSetToString); - -/** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ -function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); -} - -/** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; -} - -/** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ -function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); -} - -/** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ -var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); -}); - -/** - * this is essentially the same as the injectToFn - * but this will not allow overwrite and set the setter and getter - * @param {object} obj to get injected - * @param {string} name of the property - * @param {function} setter for set - * @param {function} [getter=null] for get default return null fn - * @return {object} the injected obj - */ -function objDefineProps(obj, name, setter, getter) { - if ( getter === void 0 ) getter = null; - - if (Object.getOwnPropertyDescriptor(obj, name) === undefined) { - Object.defineProperty(obj, name, { - set: setter, - get: getter === null ? function() { return null; } : getter - }); - } - return obj -} - -/** - * After the user login we will use this Object.define add a new property - * to the resolver with the decoded user data - * @param {function} resolver target resolver - * @param {string} name the name of the object to get inject also for checking - * @param {object} data to inject into the function static interface - * @param {boolean} [overwrite=false] if we want to overwrite the existing data - * @return {function} added property resolver - */ -function injectToFn(resolver, name, data, overwrite) { - if ( overwrite === void 0 ) overwrite = false; - - var check = Object.getOwnPropertyDescriptor(resolver, name); - if (overwrite === false && check !== undefined) { - // console.info(`NOT INJECTED`) - return resolver; - } - /* this will throw error! - if (overwrite === true && check !== undefined) { - delete resolver[name] // delete this property - } - */ - // console.info(`INJECTED`) - Object.defineProperty(resolver, name, { - value: data, - writable: overwrite // if its set to true then we should able to overwrite it - }); - - return resolver; -} - -// split the contract into the node side and the generic side -/** - * Check if the json is a contract file or not - * @param {object} contract json object - * @return {boolean} true - */ -function checkIsContract(contract) { - return isPlainObject(contract) - && ( - isKeyInObject(contract, QUERY_NAME) - || isKeyInObject(contract, MUTATION_NAME) - || isKeyInObject(contract, SOCKET_NAME) - ) -} - -/** - * Ported from jsonql-params-validator but different - * if we don't find the socket part then return false - * @param {object} contract the contract object - * @return {object|boolean} false on failed - */ -function extractSocketPart(contract) { - if (isKeyInObject(contract, 'socket')) { - return contract.socket; - } - return false; -} - -/** - * @BUG we should check the socket part instead of expect the downstream to read the menu! - * We only need this when the enableAuth is true otherwise there is only one namespace - * @param {object} contract the socket part of the contract file - * @param {boolean} [fallback=false] this is a fall back option for old code - * @return {object} 1. remap the contract using the namespace --> resolvers - * 2. the size of the object (1 all private, 2 mixed public with private) - * 3. which namespace is public - */ -function groupByNamespace(contract, fallback) { - if ( fallback === void 0 ) fallback = false; - - var socket = extractSocketPart(contract); - if (socket === false) { - if (fallback) { - return contract; // just return the whole contract - } - throw new JsonqlError("socket not found in contract!") - } - var nspSet = {}; - var size = 0; - var publicNamespace; - for (var resolverName in socket) { - var params = socket[resolverName]; - var namespace = params.namespace; - if (namespace) { - if (!nspSet[namespace]) { - ++size; - nspSet[namespace] = {}; - } - nspSet[namespace][resolverName] = params; - if (!publicNamespace) { - if (params.public) { - publicNamespace = namespace; - } - } - } - } - return { size: size, nspSet: nspSet, publicNamespace: publicNamespace } -} - -/** - * @NOTE ported from jsonql-ws-client - * Got to make sure the connection order otherwise - * it will hang - * @param {object} nspSet contract - * @param {string} publicNamespace like the name said - * @return {array} namespaces in order - */ -function getNamespaceInOrder(nspSet, publicNamespace) { - var names = []; // need to make sure the order! - for (var namespace in nspSet) { - if (namespace === publicNamespace) { - names[1] = namespace; - } else { - names[0] = namespace; - } - } - return names; -} - -/** `Object#toString` result references. */ -var stringTag$1 = '[object String]'; - -/** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ -function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag$1); -} - -// ported from jsonql-params-validator - -/** - * @param {*} args arguments to send - *@return {object} formatted payload - */ -var formatPayload = function (args) { - var obj; - - return ( - ( obj = {}, obj[QUERY_ARG_NAME] = args, obj ) -); -}; - -/** - * Get name from the payload (ported back from jsonql-koa) - * @param {*} payload to extract from - * @return {string} name - */ -function getNameFromPayload(payload) { - return Object.keys(payload)[0] -} - -/** - * @param {string} resolverName name of function - * @param {array} [args=[]] from the ...args - * @param {boolean} [jsonp = false] add v1.3.0 to koa - * @return {object} formatted argument - */ -function createQuery(resolverName, args, jsonp) { - var obj; - - if ( args === void 0 ) args = []; - if ( jsonp === void 0 ) jsonp = false; - if (isString(resolverName) && isArray(args)) { - var payload = formatPayload(args); - if (jsonp === true) { - return payload; - } - return ( obj = {}, obj[resolverName] = payload, obj ) - } - throw new JsonqlValidationError$1("[createQuery] expect resolverName to be string and args to be array!", { resolverName: resolverName, args: args }) -} - -/** - * string version of the createQuery - * @return {string} - */ -function createQueryStr(resolverName, args, jsonp) { - if ( args === void 0 ) args = []; - if ( jsonp === void 0 ) jsonp = false; - - return JSON.stringify(createQuery(resolverName, args, jsonp)) -} - -// exportfor ES modules - -// alias -var isContract = checkIsContract; - -/** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ -function isNull(value) { - return value === null; -} - -/** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ -function isUndefined(value) { - return value === undefined; -} - -/** `Object#toString` result references. */ -var boolTag$1 = '[object Boolean]'; - -/** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ -function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag$1); -} - -/** `Object#toString` result references. */ -var numberTag$1 = '[object Number]'; - -/** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ -function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag$1); -} - -/** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ -function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; -} - -/** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; -} - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); - -/** Used for built-in method references. */ -var objectProto$b = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$9 = objectProto$b.hasOwnProperty; - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty$9.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} - -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); -} - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED$2 = '__lodash_hash_undefined__'; - -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED$2); - return this; -} - -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} - -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } -} - -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; - -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; -} - -/** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); -} - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; -} - -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; -} - -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$1 = 1, - COMPARE_UNORDERED_FLAG$1 = 2; - -/** `Object#toString` result references. */ -var boolTag$2 = '[object Boolean]', - dateTag$1 = '[object Date]', - errorTag$1 = '[object Error]', - mapTag$1 = '[object Map]', - numberTag$2 = '[object Number]', - regexpTag$1 = '[object RegExp]', - setTag$1 = '[object Set]', - stringTag$2 = '[object String]', - symbolTag$1 = '[object Symbol]'; - -var arrayBufferTag$1 = '[object ArrayBuffer]', - dataViewTag$1 = '[object DataView]'; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto$1 = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : undefined; - -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag$1: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag$1: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag$2: - case dateTag$1: - case numberTag$2: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag$1: - return object.name == other.name && object.message == other.message; - - case regexpTag$1: - case stringTag$2: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag$1: - var convert = mapToArray; - - case setTag$1: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG$1; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag$1: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; -} - -/** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ -function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; -} - -/** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ -function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); -} - -/** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ -function stubArray() { - return []; -} - -/** Used for built-in method references. */ -var objectProto$c = Object.prototype; - -/** Built-in value references. */ -var propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable$1.call(object, symbol); - }); -}; - -/** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); -} - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$2 = 1; - -/** Used for built-in method references. */ -var objectProto$d = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$a = objectProto$d.hasOwnProperty; - -/** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty$a.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; -} - -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'); - -/* Built-in method references that are verified to be native. */ -var Promise$1 = getNative(root, 'Promise'); - -/* Built-in method references that are verified to be native. */ -var Set$1 = getNative(root, 'Set'); - -/* Built-in method references that are verified to be native. */ -var WeakMap$1 = getNative(root, 'WeakMap'); - -/** `Object#toString` result references. */ -var mapTag$2 = '[object Map]', - objectTag$2 = '[object Object]', - promiseTag = '[object Promise]', - setTag$2 = '[object Set]', - weakMapTag$1 = '[object WeakMap]'; - -var dataViewTag$2 = '[object DataView]'; - -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map$1), - promiseCtorString = toSource(Promise$1), - setCtorString = toSource(Set$1), - weakMapCtorString = toSource(WeakMap$1); - -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; - -// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$2) || - (Map$1 && getTag(new Map$1) != mapTag$2) || - (Promise$1 && getTag(Promise$1.resolve()) != promiseTag) || - (Set$1 && getTag(new Set$1) != setTag$2) || - (WeakMap$1 && getTag(new WeakMap$1) != weakMapTag$1)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag$2 ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag$2; - case mapCtorString: return mapTag$2; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag$2; - case weakMapCtorString: return weakMapTag$1; - } - } - return result; - }; -} - -var getTag$1 = getTag; - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$3 = 1; - -/** `Object#toString` result references. */ -var argsTag$2 = '[object Arguments]', - arrayTag$1 = '[object Array]', - objectTag$3 = '[object Object]'; - -/** Used for built-in method references. */ -var objectProto$e = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty$b = objectProto$e.hasOwnProperty; - -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag$1 : getTag$1(object), - othTag = othIsArr ? arrayTag$1 : getTag$1(other); - - objTag = objTag == argsTag$2 ? objectTag$3 : objTag; - othTag = othTag == argsTag$2 ? objectTag$3 : othTag; - - var objIsObj = objTag == objectTag$3, - othIsObj = othTag == objectTag$3, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) { - var objIsWrapped = objIsObj && hasOwnProperty$b.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty$b.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); -} - -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); -} - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$4 = 1, - COMPARE_UNORDERED_FLAG$2 = 2; - -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) - : result - )) { - return false; - } - } - } - return true; -} - -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject(value); -} - -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; -} - -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} - -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; -} - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} - -// Expose `MapCache`. -memoize.Cache = MapCache; - -/** Used as the maximum memoize cache size. */ -var MAX_MEMOIZE_SIZE = 500; - -/** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ -function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; -} - -/** Used to match property names within property paths. */ -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); -} - -/** Used as references for various `Number` constants. */ -var INFINITY$1 = 1 / 0; - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result; -} - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); -} - -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); -} - -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); -} - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG$5 = 1, - COMPARE_UNORDERED_FLAG$3 = 2; - -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3); - }; -} - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; -} - -/** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ -function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); -} - -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); -} - -/** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ -function mapValues(object, iteratee) { - var result = {}; - iteratee = baseIteratee(iteratee); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; -} - -/** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ -function mapKeys(object, iteratee) { - var result = {}; - iteratee = baseIteratee(iteratee); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, iteratee(value, key, object), value); - }); - return result; -} - -/** Error message constants. */ -var FUNC_ERROR_TEXT$1 = 'Expected a function'; - -/** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ -function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT$1); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; -} - -/** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; -} - -/** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ -function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; -} - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols$1 = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbolsIn = !nativeGetSymbols$1 ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; -}; - -/** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); -} - -/** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ -function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = baseIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); -} - -/** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ -function omitBy(object, predicate) { - return pickBy(object, negate(baseIteratee(predicate))); -} - -/** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ -function isEqual(value, other) { - return baseIsEqual(value, other); -} - -/** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ -function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; -} - -/** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ -function findKey(object, predicate) { - return baseFindKey(object, baseIteratee(predicate), baseForOwn); -} - -/** - * Check several parameter that there is something in the param - * @param {*} param input - * @return {boolean} - */ - -function notEmpty (a) { - if (isArray(a)) { - return true; - } - return a !== undefined && a !== null && trim(a) !== ''; -} - -// validator numbers -/** - * @2015-05-04 found a problem if the value is a number like string - * it will pass, so add a check if it's string before we pass to next - * @param {number} value expected value - * @return {boolean} true if OK - */ -var checkIsNumber = function(value) { - return isString(value) ? false : !isNaN( parseFloat(value) ) -}; - -// validate string type -/** - * @param {string} value expected value - * @return {boolean} true if OK - */ -var checkIsString = function(value) { - return (trim(value) !== '') ? isString(value) : false; -}; - -// check for boolean -/** - * @param {boolean} value expected - * @return {boolean} true if OK - */ -var checkIsBoolean = function(value) { - return isBoolean(value); -}; - -// validate any thing only check if there is something -/** - * @param {*} value the value - * @param {boolean} [checkNull=true] strict check if there is null value - * @return {boolean} true is OK - */ -var checkIsAny = function(value, checkNull) { - if ( checkNull === void 0 ) checkNull = true; - - if (!isUndefined(value) && value !== '' && trim(value) !== '') { - if (checkNull === false || (checkNull === true && !isNull(value))) { - return true; - } - } - return false; -}; - -// Good practice rule - No magic number - -var 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)"; -var PARAMS_NOT_ARRAY_ERR = "params is not an array! Did something gone wrong when you generate the contract.json?"; -var EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!'; -// @TODO the jsdoc return array. and we should also allow array syntax -var DEFAULT_TYPE$1 = DEFAULT_TYPE; -var ARRAY_TYPE_LFT$1 = ARRAY_TYPE_LFT; -var ARRAY_TYPE_RGT$1 = ARRAY_TYPE_RGT; - -var TYPE_KEY$1 = TYPE_KEY; -var OPTIONAL_KEY$1 = OPTIONAL_KEY; -var ENUM_KEY$1 = ENUM_KEY; -var ARGS_KEY$1 = ARGS_KEY; -var CHECKER_KEY$1 = CHECKER_KEY; -var ALIAS_KEY$1 = ALIAS_KEY; - -var ARRAY_TYPE$1 = ARRAY_TYPE; -var OBJECT_TYPE$1 = OBJECT_TYPE; -var STRING_TYPE$1 = STRING_TYPE; -var BOOLEAN_TYPE$1 = BOOLEAN_TYPE; -var NUMBER_TYPE$1 = NUMBER_TYPE; -var KEY_WORD$1 = KEY_WORD; -var OR_SEPERATOR$1 = OR_SEPERATOR; - -// not actually in use -// export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES; - -// primitive types - -/** - * this is a wrapper method to call different one based on their type - * @param {string} type to check - * @return {function} a function to handle the type - */ -var combineFn = function(type) { - switch (type) { - case NUMBER_TYPE$1: - return checkIsNumber; - case STRING_TYPE$1: - return checkIsString; - case BOOLEAN_TYPE$1: - return checkIsBoolean; - default: - return checkIsAny; - } -}; - -// validate array type - -/** - * @param {array} value expected - * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well - * @return {boolean} true if OK - */ -var checkIsArray = function(value, type) { - if ( type === void 0 ) type=''; - - if (isArray(value)) { - if (type === '' || trim(type)==='') { - return true; - } - // we test it in reverse - // @TODO if the type is an array (OR) then what? - // we need to take into account this could be an array - var c = value.filter(function (v) { return !combineFn(type)(v); }); - return !(c.length > 0) - } - return false; -}; - -/** - * check if it matches the array. pattern - * @param {string} type - * @return {boolean|array} false means NO, always return array - */ -var isArrayLike$1 = function(type) { - // @TODO could that have something like array<> instead of array.<>? missing the dot? - // because type script is Array without the dot - if (type.indexOf(ARRAY_TYPE_LFT$1) > -1 && type.indexOf(ARRAY_TYPE_RGT$1) > -1) { - var _type = type.replace(ARRAY_TYPE_LFT$1, '').replace(ARRAY_TYPE_RGT$1, ''); - if (_type.indexOf(OR_SEPERATOR$1)) { - return _type.split(OR_SEPERATOR$1) - } - return [_type] - } - return false; -}; - -/** - * we might encounter something like array. then we need to take it apart - * @param {object} p the prepared object for processing - * @param {string|array} type the type came from - * @return {boolean} for the filter to operate on - */ -var arrayTypeHandler = function(p, type) { - var arg = p.arg; - // need a special case to handle the OR type - // we need to test the args instead of the type(s) - if (type.length > 1) { - return !arg.filter(function (v) { return ( - !(type.length > type.filter(function (t) { return !combineFn(t)(v); }).length) - ); }).length; - } - // type is array so this will be or! - return type.length > type.filter(function (t) { return !checkIsArray(arg, t); }).length; -}; - -// validate object type -/** - * @TODO if provide with the keys then we need to check if the key:value type as well - * @param {object} value expected - * @param {array} [keys=null] if it has the keys array to compare as well - * @return {boolean} true if OK - */ -var checkIsObject = function(value, keys) { - if ( keys === void 0 ) keys=null; - - if (isPlainObject(value)) { - if (!keys) { - return true; - } - if (checkIsArray(keys)) { - // please note we DON'T care if some is optional - // plese refer to the contract.json for the keys - return !keys.filter(function (key) { - var _value = value[key.name]; - return !(key.type.length > key.type.filter(function (type) { - var tmp; - if (!isUndefined(_value)) { - if ((tmp = isArrayLike$1(type)) !== false) { - return !arrayTypeHandler({arg: _value}, tmp) - // return tmp.filter(t => !checkIsArray(_value, t)).length; - // @TODO there might be an object within an object with keys as well :S - } - return !combineFn(type)(_value) - } - return true; - }).length) - }).length; - } - } - return false; -}; - -/** - * fold this into it's own function to handler different object type - * @param {object} p the prepared object for process - * @return {boolean} - */ -var objectTypeHandler = function(p) { - var arg = p.arg; - var param = p.param; - var _args = [arg]; - if (Array.isArray(param.keys) && param.keys.length) { - _args.push(param.keys); - } - // just simple check - return checkIsObject.apply(null, _args) -}; - -/** - * just a simple util for helping to debug - * @param {array} args arguments - * @return {void} - */ -function log() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - try { - if (window && window.console) { - Reflect.apply(console.log, console, args); - } - } catch(e) {} -} - -// move the index.js code here that make more sense to find where things are -// import debug from 'debug' -// const debugFn = debug('jsonql-params-validator:validator') -// also export this for use in other places - -/** - * We need to handle those optional parameter without a default value - * @param {object} params from contract.json - * @return {boolean} for filter operation false is actually OK - */ -var optionalHandler = function( params ) { - var arg = params.arg; - var param = params.param; - if (notEmpty(arg)) { - // debug('call optional handler', arg, params); - // loop through the type in param - return !(param.type.length > param.type.filter(function (type) { return validateHandler(type, params); } - ).length) - } - return false; -}; - -/** - * actually picking the validator - * @param {*} type for checking - * @param {*} value for checking - * @return {boolean} true on OK - */ -var validateHandler = function(type, value) { - var tmp; - switch (true) { - case type === OBJECT_TYPE$1: - // debugFn('call OBJECT_TYPE') - return !objectTypeHandler(value) - case type === ARRAY_TYPE$1: - // debugFn('call ARRAY_TYPE') - return !checkIsArray(value.arg) - // @TODO when the type is not present, it always fall through here - // so we need to find a way to actually pre-check the type first - // AKA check the contract.json map before running here - case (tmp = isArrayLike$1(type)) !== false: - // debugFn('call ARRAY_LIKE: %O', value) - return !arrayTypeHandler(value, tmp) - default: - return !combineFn(type)(value.arg) - } -}; - -/** - * it get too longer to fit in one line so break it out from the fn below - * @param {*} arg value - * @param {object} param config - * @return {*} value or apply default value - */ -var getOptionalValue = function(arg, param) { - if (!isUndefined(arg)) { - return arg; - } - return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null) -}; - -/** - * padding the arguments with defaultValue if the arguments did not provide the value - * this will be the name export - * @param {array} args normalized arguments - * @param {array} params from contract.json - * @return {array} merge the two together - */ -var normalizeArgs = function(args, params) { - // first we should check if this call require a validation at all - // there will be situation where the function doesn't need args and params - if (!checkIsArray(params)) { - // debugFn('params value', params) - throw new JsonqlError(PARAMS_NOT_ARRAY_ERR) - } - if (params.length === 0) { - return []; - } - if (!checkIsArray(args)) { - throw new JsonqlError(ARGS_NOT_ARRAY_ERR) - } - // debugFn(args, params); - // fall through switch - switch(true) { - case args.length == params.length: // standard - log(1); - return args.map(function (arg, i) { return ( - { - arg: arg, - index: i, - param: params[i] - } - ); }) - case params[0].variable === true: // using spread syntax - log(2); - var type = params[0].type; - return args.map(function (arg, i) { return ( - { - arg: arg, - index: i, // keep the index for reference - param: params[i] || { type: type, name: '_' } - } - ); }) - // with optional defaultValue parameters - case args.length < params.length: - log(3); - return params.map(function (param, i) { return ( - { - param: param, - index: i, - arg: getOptionalValue(args[i], param), - optional: param.optional || false - } - ); }) - // this one pass more than it should have anything after the args.length will be cast as any type - case args.length > params.length: - log(4); - var ctn = params.length; - // this happens when we have those array. type - var _type = [ DEFAULT_TYPE$1 ]; - // we only looking at the first one, this might be a @BUG - /* - if ((tmp = isArrayLike(params[0].type[0])) !== false) { - _type = tmp; - } */ - // if we use the params as guide then the rest will get throw out - // which is not what we want, instead, anything without the param - // will get a any type and optional flag - return args.map(function (arg, i) { - var optional = i >= ctn ? true : !!params[i].optional; - var param = params[i] || { type: _type, name: ("_" + i) }; - return { - arg: optional ? getOptionalValue(arg, param) : arg, - index: i, - param: param, - optional: optional - } - }) - // @TODO find out if there is more cases not cover - default: // this should never happen - log(5); - // debugFn('args', args) - // debugFn('params', params) - // this is unknown therefore we just throw it! - throw new JsonqlError(EXCEPTION_CASE_ERR, { args: args, params: params }) - } -}; - -// what we want is after the validaton we also get the normalized result -// which is with the optional property if the argument didn't provide it -/** - * process the array of params back to their arguments - * @param {array} result the params result - * @return {array} arguments - */ -var processReturn = function (result) { return result.map(function (r) { return r.arg; }); }; - -/** - * validator main interface - * @param {array} args the arguments pass to the method call - * @param {array} params from the contract for that method - * @param {boolean} [withResul=false] if true then this will return the normalize result as well - * @return {array} empty array on success, or failed parameter and reasons - */ -var validateSync = function(args, params, withResult) { - var obj; - - if ( withResult === void 0 ) withResult = false; - var cleanArgs = normalizeArgs(args, params); - var checkResult = cleanArgs.filter(function (p) { - // v1.4.4 this fixed the problem, the root level optional is from the last fn - if (p.optional === true || p.param.optional === true) { - return optionalHandler(p) - } - // because array of types means OR so if one pass means pass - return !(p.param.type.length > p.param.type.filter( - function (type) { return validateHandler(type, p); } - ).length) - }); - // using the same convention we been using all this time - return !withResult ? checkResult : ( obj = {}, obj[ERROR_KEY] = checkResult, obj[DATA_KEY] = processReturn(cleanArgs), obj ) -}; - -/** - * A wrapper method that return promise - * @param {array} args arguments - * @param {array} params from contract.json - * @param {boolean} [withResul=false] if true then this will return the normalize result as well - * @return {object} promise.then or catch - */ -var validateAsync = function(args, params, withResult) { - if ( withResult === void 0 ) withResult = false; - - return new Promise(function (resolver, rejecter) { - var result = validateSync(args, params, withResult); - if (withResult) { - return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY]) - : resolver(result[DATA_KEY]) - } - // the different is just in the then or catch phrase - return result.length ? rejecter(result) : resolver([]) - }) -}; - -/** - * @param {array} arr Array for check - * @param {*} value target - * @return {boolean} true on successs - */ -var isInArray = function(arr, value) { - return !!arr.filter(function (a) { return a === value; }).length; -}; - -var isKeyInObject$1 = function(obj, key) { - var keys = Object.keys(obj); - return isInArray(keys, key) -}; - -// just not to make my head hurt -var isEmpty = function (value) { return !notEmpty(value); }; - -/** - * Map the alias to their key then grab their value over - * @param {object} config the user supplied config - * @param {object} appProps the default option map - * @return {object} the config keys replaced with the appProps key by the ALIAS - */ -function mapAliasConfigKeys(config, appProps) { - // need to do two steps - // 1. take key with alias key - var aliasMap = omitBy(appProps, function (value, k) { return !value[ALIAS_KEY$1]; } ); - if (isEqual(aliasMap, {})) { - return config; - } - return mapKeys(config, function (v, key) { return findKey(aliasMap, function (o) { return o.alias === key; }) || key; }) -} - -/** - * We only want to run the valdiation against the config (user supplied) value - * but keep the defaultOptions untouch - * @param {object} config configuraton supplied by user - * @param {object} appProps the default options map - * @return {object} the pristine values that will add back to the final output - */ -function preservePristineValues(config, appProps) { - // @BUG this will filter out those that is alias key - // we need to first map the alias keys back to their full key - var _config = mapAliasConfigKeys(config, appProps); - // take the default value out - var pristineValues = mapValues( - omitBy(appProps, function (value, key) { return isKeyInObject$1(_config, key); }), - function (value) { return value.args; } - ); - // for testing the value - var checkAgainstAppProps = omitBy(appProps, function (value, key) { return !isKeyInObject$1(_config, key); }); - // output - return { - pristineValues: pristineValues, - checkAgainstAppProps: checkAgainstAppProps, - config: _config // passing this correct values back - } -} - -/** - * This will take the value that is ONLY need to check - * @param {object} config that one - * @param {object} props map for creating checking - * @return {object} put that arg into the args - */ -function processConfigAction(config, props) { - // debugFn('processConfigAction', props) - // v.1.2.0 add checking if its mark optional and the value is empty then pass - return mapValues(props, function (value, key) { - var obj, obj$1; - - return ( - isUndefined(config[key]) || (value[OPTIONAL_KEY$1] === true && isEmpty(config[key])) - ? merge({}, value, ( obj = {}, obj[KEY_WORD$1] = true, obj )) - : ( obj$1 = {}, obj$1[ARGS_KEY$1] = config[key], obj$1[TYPE_KEY$1] = value[TYPE_KEY$1], obj$1[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1] || false, obj$1[ENUM_KEY$1] = value[ENUM_KEY$1] || false, obj$1[CHECKER_KEY$1] = value[CHECKER_KEY$1] || false, obj$1 ) - ); - } - ) -} - -/** - * Quick transform - * @TODO we should only validate those that is pass from the config - * and pass through those values that is from the defaultOptions - * @param {object} opts that one - * @param {object} appProps mutation configuration options - * @return {object} put that arg into the args - */ -function prepareArgsForValidation(opts, appProps) { - var ref = preservePristineValues(opts, appProps); - var config = ref.config; - var pristineValues = ref.pristineValues; - var checkAgainstAppProps = ref.checkAgainstAppProps; - // output - return [ - processConfigAction(config, checkAgainstAppProps), - pristineValues - ] -} - -// breaking the whole thing up to see what cause the multiple calls issue - -// import debug from 'debug'; -// const debugFn = debug('jsonql-params-validator:options:validation') - -/** - * just make sure it returns an array to use - * @param {*} arg input - * @return {array} output - */ -var toArray$1 = function (arg) { return checkIsArray(arg) ? arg : [arg]; }; - -/** - * DIY in array - * @param {array} arr to check against - * @param {*} value to check - * @return {boolean} true on OK - */ -var inArray$1 = function (arr, value) { return ( - !!arr.filter(function (v) { return v === value; }).length -); }; - -/** - * break out to make the code easier to read - * @param {object} value to process - * @param {function} cb the validateSync - * @return {array} empty on success - */ -function validateHandler$1(value, cb) { - var obj; - - // cb is the validateSync methods - var args = [ - [ value[ARGS_KEY$1] ], - [( obj = {}, obj[TYPE_KEY$1] = toArray$1(value[TYPE_KEY$1]), obj[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1], obj )] - ]; - // debugFn('validateHandler', args) - return Reflect.apply(cb, null, args) -} - -/** - * Check against the enum value if it's provided - * @param {*} value to check - * @param {*} enumv to check against if it's not false - * @return {boolean} true on OK - */ -var enumHandler = function (value, enumv) { - if (checkIsArray(enumv)) { - return inArray$1(enumv, value) - } - return true; -}; - -/** - * Allow passing a function to check the value - * There might be a problem here if the function is incorrect - * and that will makes it hard to debug what is going on inside - * @TODO there could be a few feature add to this one under different circumstance - * @param {*} value to check - * @param {function} checker for checking - */ -var checkerHandler = function (value, checker) { - try { - return isFunction(checker) ? checker.apply(null, [value]) : false; - } catch (e) { - return false; - } -}; - -/** - * Taken out from the runValidaton this only validate the required values - * @param {array} args from the config2argsAction - * @param {function} cb validateSync - * @return {array} of configuration values - */ -function runValidationAction(cb) { - return function (value, key) { - // debugFn('runValidationAction', key, value) - if (value[KEY_WORD$1]) { - return value[ARGS_KEY$1] - } - var check = validateHandler$1(value, cb); - if (check.length) { - log('runValidationAction', key, value); - throw new JsonqlTypeError(key, check) - } - if (value[ENUM_KEY$1] !== false && !enumHandler(value[ARGS_KEY$1], value[ENUM_KEY$1])) { - log(ENUM_KEY$1, value[ENUM_KEY$1]); - throw new JsonqlEnumError(key) - } - if (value[CHECKER_KEY$1] !== false && !checkerHandler(value[ARGS_KEY$1], value[CHECKER_KEY$1])) { - log(CHECKER_KEY$1, value[CHECKER_KEY$1]); - throw new JsonqlCheckerError(key) - } - return value[ARGS_KEY$1] - } -} - -/** - * @param {object} args from the config2argsAction - * @param {function} cb validateSync - * @return {object} of configuration values - */ -function runValidation(args, cb) { - var argsForValidate = args[0]; - var pristineValues = args[1]; - // turn the thing into an array and see what happen here - // debugFn('_args', argsForValidate) - var result = mapValues(argsForValidate, runValidationAction(cb)); - return merge(result, pristineValues) -} - -/// this is port back from the client to share across all projects - -// import debug from 'debug' -// const debugFn = debug('jsonql-params-validator:check-options-async') - -/** - * Quick transform - * @param {object} config that one - * @param {object} appProps mutation configuration options - * @return {object} put that arg into the args - */ -var configToArgs = function (config, appProps) { - return Promise.resolve( - prepareArgsForValidation(config, appProps) - ) -}; - -/** - * @param {object} config user provide configuration option - * @param {object} appProps mutation configuration options - * @param {object} constProps the immutable configuration options - * @param {function} cb the validateSync method - * @return {object} Promise resolve merge config object - */ -function checkOptionsAsync(config, appProps, constProps, cb) { - if ( config === void 0 ) config = {}; - - return configToArgs(config, appProps) - .then(function (args1) { - // debugFn('args', args1) - return runValidation(args1, cb) - }) - // next if every thing good then pass to final merging - .then(function (args2) { return merge({}, args2, constProps); }) -} - -// create function to construct the config entry so we don't need to keep building object -// import debug from 'debug'; -// const debugFn = debug('jsonql-params-validator:construct-config'); -/** - * @param {*} args value - * @param {string} type for value - * @param {boolean} [optional=false] - * @param {boolean|array} [enumv=false] - * @param {boolean|function} [checker=false] - * @return {object} config entry - */ -function constructConfigFn(args, type, optional, enumv, checker, alias) { - if ( optional === void 0 ) optional=false; - if ( enumv === void 0 ) enumv=false; - if ( checker === void 0 ) checker=false; - if ( alias === void 0 ) alias=false; - - var base = {}; - base[ARGS_KEY] = args; - base[TYPE_KEY] = type; - if (optional === true) { - base[OPTIONAL_KEY] = true; - } - if (checkIsArray(enumv)) { - base[ENUM_KEY] = enumv; - } - if (isFunction(checker)) { - base[CHECKER_KEY] = checker; - } - if (isString(alias)) { - base[ALIAS_KEY] = alias; - } - return base; -} - -// export also create wrapper methods - -// import debug from 'debug'; -// const debugFn = debug('jsonql-params-validator:options:index'); - -/** - * This has a different interface - * @param {*} value to supply - * @param {string|array} type for checking - * @param {object} params to map against the config check - * @param {array} params.enumv NOT enum - * @param {boolean} params.optional false then nothing - * @param {function} params.checker need more work on this one later - * @param {string} params.alias mostly for cmd - */ -var createConfig = function (value, type, params) { - if ( params === void 0 ) params = {}; - - // Note the enumv not ENUM - // const { enumv, optional, checker, alias } = params; - // let args = [value, type, optional, enumv, checker, alias]; - var o = params[OPTIONAL_KEY]; - var e = params[ENUM_KEY]; - var c = params[CHECKER_KEY]; - var a = params[ALIAS_KEY]; - return constructConfigFn.apply(null, [value, type, o, e, c, a]) -}; - -/** - * We recreate the method here to avoid the circlar import - * @param {object} config user supply configuration - * @param {object} appProps mutation options - * @param {object} [constantProps={}] optional: immutation options - * @return {object} all checked configuration - */ -var checkConfigAsync = function(validateSync) { - return function(config, appProps, constantProps) { - if ( constantProps === void 0 ) constantProps= {}; - - return checkOptionsAsync(config, appProps, constantProps, validateSync) - } -}; - -// export -var isString$1 = checkIsString; -var validateAsync$1 = validateAsync; - -var createConfig$1 = createConfig; - -var checkConfigAsync$1 = checkConfigAsync(validateSync); -var isKeyInObject$2 = isKeyInObject$1; - -var 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 - */ -var getDebug = function (name) { - try { - if (window.debug) { // the global browser object - return window.debug(BASE_NAME).extend(name) - } - } catch(e) { - // ignore this - } - try { - if (global$1.debug) { - return global$1.debug(BASE_NAME).extend(name) - } - } catch(e) { - // ignore this - } - // just a stock one - return function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - console.info.apply(null, [BASE_NAME, name].concat(args)); - } -}; -try { - if (window && window.localStorage && window.DEBUG) { - localStorage.setItem('DEBUG', (BASE_NAME + "*")); - } -} catch(e) {} - -var NB_EVENT_SERVICE_PRIVATE_STORE = new WeakMap(); -var NB_EVENT_SERVICE_PRIVATE_LAZY = new WeakMap(); - -/** - * generate a 32bit hash based on the function.toString() - * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery - * @param {string} s the converted to string function - * @return {string} the hashed function string - */ -function hashCode(s) { - return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0) -} - -// making all the functionality on it's own -// import { WatchClass } from './watch' - -var SuspendClass = function SuspendClass() { - // suspend, release and queue - this.__suspend__ = null; - this.queueStore = new Set(); - /* - this.watch('suspend', function(value, prop, oldValue) { - this.logger(`${prop} set from ${oldValue} to ${value}`) - // it means it set the suspend = true then release it - if (oldValue === true && value === false) { - // we want this happen after the return happens - setTimeout(() => { - this.release() - }, 1) - } - return value; // we need to return the value to store it - }) - */ -}; - -var prototypeAccessors = { $suspend: { configurable: true },$queues: { configurable: true } }; - -/** - * setter to set the suspend and check if it's boolean value - * @param {boolean} value to trigger - */ -prototypeAccessors.$suspend.set = function (value) { - var this$1 = this; - - if (typeof value === 'boolean') { - var lastValue = this.__suspend__; - this.__suspend__ = value; - this.logger('($suspend)', ("Change from " + lastValue + " --> " + value)); - if (lastValue === true && value === false) { - setTimeout(function () { - this$1.release(); - }, 1); - } - } else { - throw new Error("$suspend only accept Boolean value!") - } -}; - -/** - * queuing call up when it's in suspend mode - * @param {any} value - * @return {Boolean} true when added or false when it's not - */ -SuspendClass.prototype.$queue = function $queue () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (this.__suspend__ === true) { - this.logger('($queue)', 'added to $queue', args); - // there shouldn't be any duplicate ... - this.queueStore.add(args); - } - return this.__suspend__; -}; - -/** - * a getter to get all the store queue - * @return {array} Set turn into Array before return - */ -prototypeAccessors.$queues.get = function () { - var size = this.queueStore.size; - this.logger('($queues)', ("size: " + size)); - if (size > 0) { - return Array.from(this.queueStore) - } - return [] -}; - -/** - * Release the queue - * @return {int} size if any - */ -SuspendClass.prototype.release = function release () { - var this$1 = this; - - var size = this.queueStore.size; - this.logger('(release)', ("Release was called " + size)); - if (size > 0) { - var queue = Array.from(this.queueStore); - this.queueStore.clear(); - this.logger('queue', queue); - queue.forEach(function (args) { - this$1.logger(args); - Reflect.apply(this$1.$trigger, this$1, args); - }); - this.logger(("Release size " + (this.queueStore.size))); - } -}; - -Object.defineProperties( SuspendClass.prototype, prototypeAccessors ); - -// break up the main file because its getting way too long - -var NbEventServiceBase = /*@__PURE__*/(function (SuspendClass) { - function NbEventServiceBase(config) { - if ( config === void 0 ) config = {}; - - SuspendClass.call(this); - if (config.logger && typeof config.logger === 'function') { - this.logger = config.logger; - } - this.keep = config.keep; - // for the $done setter - this.result = config.keep ? [] : null; - // we need to init the store first otherwise it could be a lot of checking later - this.normalStore = new Map(); - this.lazyStore = new Map(); - } - - if ( SuspendClass ) NbEventServiceBase.__proto__ = SuspendClass; - NbEventServiceBase.prototype = Object.create( SuspendClass && SuspendClass.prototype ); - NbEventServiceBase.prototype.constructor = NbEventServiceBase; - - var prototypeAccessors = { normalStore: { configurable: true },lazyStore: { configurable: true } }; - - /** - * validate the event name(s) - * @param {string[]} evt event name - * @return {boolean} true when OK - */ - NbEventServiceBase.prototype.validateEvt = function validateEvt () { - var this$1 = this; - var evt = [], len = arguments.length; - while ( len-- ) evt[ len ] = arguments[ len ]; - - evt.forEach(function (e) { - if (typeof e !== 'string') { - this$1.logger('(validateEvt)', e); - throw new Error("event name must be string type!") - } - }); - return true; - }; - - /** - * Simple quick check on the two main parameters - * @param {string} evt event name - * @param {function} callback function to call - * @return {boolean} true when OK - */ - NbEventServiceBase.prototype.validate = function validate (evt, callback) { - if (this.validateEvt(evt)) { - if (typeof callback === 'function') { - return true; - } - } - throw new Error("callback required to be function type!") - }; - - /** - * Check if this type is correct or not added in V1.5.0 - * @param {string} type for checking - * @return {boolean} true on OK - */ - NbEventServiceBase.prototype.validateType = function validateType (type) { - var types = ['on', 'only', 'once', 'onlyOnce']; - return !!types.filter(function (t) { return type === t; }).length; - }; - - /** - * Run the callback - * @param {function} callback function to execute - * @param {array} payload for callback - * @param {object} ctx context or null - * @return {void} the result store in $done - */ - NbEventServiceBase.prototype.run = function run (callback, payload, ctx) { - this.logger('(run)', callback, payload, ctx); - this.$done = Reflect.apply(callback, ctx, this.toArray(payload)); - }; - - /** - * Take the content out and remove it from store id by the name - * @param {string} evt event name - * @param {string} [storeName = lazyStore] name of store - * @return {object|boolean} content or false on not found - */ - NbEventServiceBase.prototype.takeFromStore = function takeFromStore (evt, storeName) { - if ( storeName === void 0 ) storeName = 'lazyStore'; - - var store = this[storeName]; // it could be empty at this point - if (store) { - this.logger('(takeFromStore)', storeName, store); - if (store.has(evt)) { - var content = store.get(evt); - this.logger('(takeFromStore)', ("has " + evt), content); - store.delete(evt); - return content; - } - return false; - } - throw new Error((storeName + " is not supported!")) - }; - - /** - * The add to store step is similar so make it generic for resuse - * @param {object} store which store to use - * @param {string} evt event name - * @param {spread} args because the lazy store and normal store store different things - * @return {array} store and the size of the store - */ - NbEventServiceBase.prototype.addToStore = function addToStore (store, evt) { - var args = [], len = arguments.length - 2; - while ( len-- > 0 ) args[ len ] = arguments[ len + 2 ]; - - var fnSet; - if (store.has(evt)) { - this.logger('(addToStore)', (evt + " existed")); - fnSet = store.get(evt); - } else { - this.logger('(addToStore)', ("create new Set for " + evt)); - // this is new - fnSet = new Set(); - } - // lazy only store 2 items - this is not the case in V1.6.0 anymore - // we need to check the first parameter is string or not - if (args.length > 2) { - if (Array.isArray(args[0])) { // lazy store - // check if this type of this event already register in the lazy store - var t = args[2]; - if (!this.checkTypeInLazyStore(evt, t)) { - fnSet.add(args); - } - } else { - if (!this.checkContentExist(args, fnSet)) { - this.logger('(addToStore)', "insert new", args); - fnSet.add(args); - } - } - } else { // add straight to lazy store - fnSet.add(args); - } - store.set(evt, fnSet); - return [store, fnSet.size] - }; - - /** - * @param {array} args for compare - * @param {object} fnSet A Set to search from - * @return {boolean} true on exist - */ - NbEventServiceBase.prototype.checkContentExist = function checkContentExist (args, fnSet) { - var list = Array.from(fnSet); - return !!list.filter(function (l) { - var hash = l[0]; - if (hash === args[0]) { - return true; - } - return false; - }).length; - }; - - /** - * get the existing type to make sure no mix type add to the same store - * @param {string} evtName event name - * @param {string} type the type to check - * @return {boolean} true you can add, false then you can't add this type - */ - NbEventServiceBase.prototype.checkTypeInStore = function checkTypeInStore (evtName, type) { - this.validateEvt(evtName, type); - var all = this.$get(evtName, true); - if (all === false) { - // pristine it means you can add - return true; - } - // it should only have ONE type in ONE event store - return !all.filter(function (list) { - var t = list[3]; - return type !== t; - }).length; - }; - - /** - * This is checking just the lazy store because the structure is different - * therefore we need to use a new method to check it - */ - NbEventServiceBase.prototype.checkTypeInLazyStore = function checkTypeInLazyStore (evtName, type) { - this.validateEvt(evtName, type); - var store = this.lazyStore.get(evtName); - this.logger('(checkTypeInLazyStore)', store); - if (store) { - return !!Array - .from(store) - .filter(function (l) { - var t = l[2]; - return t !== type; - }).length - } - return false; - }; - - /** - * wrapper to re-use the addToStore, - * V1.3.0 add extra check to see if this type can add to this evt - * @param {string} evt event name - * @param {string} type on or once - * @param {function} callback function - * @param {object} context the context the function execute in or null - * @return {number} size of the store - */ - NbEventServiceBase.prototype.addToNormalStore = function addToNormalStore (evt, type, callback, context) { - if ( context === void 0 ) context = null; - - this.logger('(addToNormalStore)', evt, type, 'try to add to normal store'); - // @TODO we need to check the existing store for the type first! - if (this.checkTypeInStore(evt, type)) { - this.logger('(addToNormalStore)', (type + " can add to " + evt + " normal store")); - var key = this.hashFnToKey(callback); - var args = [this.normalStore, evt, key, callback, context, type]; - var ref = Reflect.apply(this.addToStore, this, args); - var _store = ref[0]; - var size = ref[1]; - this.normalStore = _store; - return size; - } - return false; - }; - - /** - * Add to lazy store this get calls when the callback is not register yet - * so we only get a payload object or even nothing - * @param {string} evt event name - * @param {array} payload of arguments or empty if there is none - * @param {object} [context=null] the context the callback execute in - * @param {string} [type=false] register a type so no other type can add to this evt - * @return {number} size of the store - */ - NbEventServiceBase.prototype.addToLazyStore = function addToLazyStore (evt, payload, context, type) { - if ( payload === void 0 ) payload = []; - if ( context === void 0 ) context = null; - if ( type === void 0 ) type = false; - - // this is add in V1.6.0 - // when there is type then we will need to check if this already added in lazy store - // and no other type can add to this lazy store - var args = [this.lazyStore, evt, this.toArray(payload), context]; - if (type) { - args.push(type); - } - var ref = Reflect.apply(this.addToStore, this, args); - var _store = ref[0]; - var size = ref[1]; - this.lazyStore = _store; - return size; - }; - - /** - * make sure we store the argument correctly - * @param {*} arg could be array - * @return {array} make sured - */ - NbEventServiceBase.prototype.toArray = function toArray (arg) { - return Array.isArray(arg) ? arg : [arg]; - }; - - /** - * setter to store the Set in private - * @param {object} obj a Set - */ - prototypeAccessors.normalStore.set = function (obj) { - NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj); - }; - - /** - * @return {object} Set object - */ - prototypeAccessors.normalStore.get = function () { - return NB_EVENT_SERVICE_PRIVATE_STORE.get(this) - }; - - /** - * setter to store the Set in lazy store - * @param {object} obj a Set - */ - prototypeAccessors.lazyStore.set = function (obj) { - NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj); - }; - - /** - * @return {object} the lazy store Set - */ - prototypeAccessors.lazyStore.get = function () { - return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this) - }; - - /** - * generate a hashKey to identify the function call - * The build-in store some how could store the same values! - * @param {function} fn the converted to string function - * @return {string} hashKey - */ - NbEventServiceBase.prototype.hashFnToKey = function hashFnToKey (fn) { - return hashCode(fn.toString()) + ''; - }; - - Object.defineProperties( NbEventServiceBase.prototype, prototypeAccessors ); - - return NbEventServiceBase; -}(SuspendClass)); - -// The top level -// export -var EventService = /*@__PURE__*/(function (NbStoreService) { - function EventService(config) { - if ( config === void 0 ) config = {}; - - NbStoreService.call(this, config); - } - - if ( NbStoreService ) EventService.__proto__ = NbStoreService; - EventService.prototype = Object.create( NbStoreService && NbStoreService.prototype ); - EventService.prototype.constructor = EventService; - - var prototypeAccessors = { $done: { configurable: true } }; - - /** - * logger function for overwrite - */ - EventService.prototype.logger = function logger () {}; - - ////////////////////////// - // PUBLIC METHODS // - ////////////////////////// - - /** - * Register your evt handler, note we don't check the type here, - * we expect you to be sensible and know what you are doing. - * @param {string} evt name of event - * @param {function} callback bind method --> if it's array or not - * @param {object} [context=null] to execute this call in - * @return {number} the size of the store - */ - EventService.prototype.$on = function $on (evt , callback , context) { - var this$1 = this; - if ( context === void 0 ) context = null; - - var type = 'on'; - this.validate(evt, callback); - // first need to check if this evt is in lazy store - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register first then call later - if (lazyStoreContent === false) { - this.logger('($on)', (evt + " callback is not in lazy store")); - // @TODO we need to check if there was other listener to this - // event and are they the same type then we could solve that - // register the different type to the same event name - - return this.addToNormalStore(evt, type, callback, context) - } - this.logger('($on)', (evt + " found in lazy store")); - // this is when they call $trigger before register this callback - var size = 0; - lazyStoreContent.forEach(function (content) { - var payload = content[0]; - var ctx = content[1]; - var t = content[2]; - if (t && t !== type) { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this$1.logger("($on)", ("call run on " + evt)); - this$1.run(callback, payload, context || ctx); - size += this$1.addToNormalStore(evt, type, callback, context || ctx); - }); - return size; - }; - - /** - * once only registered it once, there is no overwrite option here - * @NOTE change in v1.3.0 $once can add multiple listeners - * but once the event fired, it will remove this event (see $only) - * @param {string} evt name - * @param {function} callback to execute - * @param {object} [context=null] the handler execute in - * @return {boolean} result - */ - EventService.prototype.$once = function $once (evt , callback , context) { - if ( context === void 0 ) context = null; - - this.validate(evt, callback); - var type = 'once'; - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register before call $trigger - var nStore = this.normalStore; - if (lazyStoreContent === false) { - this.logger('($once)', (evt + " not in the lazy store")); - // v1.3.0 $once now allow to add multiple listeners - return this.addToNormalStore(evt, type, callback, context) - } else { - // now this is the tricky bit - // there is a potential bug here that cause by the developer - // if they call $trigger first, the lazy won't know it's a once call - // so if in the middle they register any call with the same evt name - // then this $once call will be fucked - add this to the documentation - this.logger('($once)', lazyStoreContent); - var list = Array.from(lazyStoreContent); - // should never have more than 1 - var ref = list[0]; - var payload = ref[0]; - var ctx = ref[1]; - var t = ref[2]; - if (t && t !== type) { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this.logger('($once)', ("call run for " + evt)); - this.run(callback, payload, context || ctx); - // remove this evt from store - this.$off(evt); - } - }; - - /** - * This one event can only bind one callbackback - * @param {string} evt event name - * @param {function} callback event handler - * @param {object} [context=null] the context the event handler execute in - * @return {boolean} true bind for first time, false already existed - */ - EventService.prototype.$only = function $only (evt, callback, context) { - var this$1 = this; - if ( context === void 0 ) context = null; - - this.validate(evt, callback); - var type = 'only'; - var added = false; - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register before call $trigger - var nStore = this.normalStore; - if (!nStore.has(evt)) { - this.logger("($only)", (evt + " add to store")); - added = this.addToNormalStore(evt, type, callback, context); - } - if (lazyStoreContent !== false) { - // there are data store in lazy store - this.logger('($only)', (evt + " found data in lazy store to execute")); - var list = Array.from(lazyStoreContent); - // $only allow to trigger this multiple time on the single handler - list.forEach( function (l) { - var payload = l[0]; - var ctx = l[1]; - var t = l[2]; - if (t && t !== type) { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this$1.logger("($only)", ("call run for " + evt)); - this$1.run(callback, payload, context || ctx); - }); - } - return added; - }; - - /** - * $only + $once this is because I found a very subtile bug when we pass a - * resolver, rejecter - and it never fire because that's OLD added in v1.4.0 - * @param {string} evt event name - * @param {function} callback to call later - * @param {object} [context=null] exeucte context - * @return {void} - */ - EventService.prototype.$onlyOnce = function $onlyOnce (evt, callback, context) { - if ( context === void 0 ) context = null; - - this.validate(evt, callback); - var type = 'onlyOnce'; - var added = false; - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register before call $trigger - var nStore = this.normalStore; - if (!nStore.has(evt)) { - this.logger("($onlyOnce)", (evt + " add to store")); - added = this.addToNormalStore(evt, type, callback, context); - } - if (lazyStoreContent !== false) { - // there are data store in lazy store - this.logger('($onlyOnce)', lazyStoreContent); - var list = Array.from(lazyStoreContent); - // should never have more than 1 - var ref = list[0]; - var payload = ref[0]; - var ctx = ref[1]; - var t = ref[2]; - if (t && t !== 'onlyOnce') { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this.logger("($onlyOnce)", ("call run for " + evt)); - this.run(callback, payload, context || ctx); - // remove this evt from store - this.$off(evt); - } - return added; - }; - - /** - * This is a shorthand of $off + $on added in V1.5.0 - * @param {string} evt event name - * @param {function} callback to exeucte - * @param {object} [context = null] or pass a string as type - * @param {string} [type=on] what type of method to replace - * @return {} - */ - EventService.prototype.$replace = function $replace (evt, callback, context, type) { - if ( context === void 0 ) context = null; - if ( type === void 0 ) type = 'on'; - - if (this.validateType(type)) { - this.$off(evt); - var method = this['$' + type]; - this.logger("($replace)", evt, callback); - return Reflect.apply(method, this, [evt, callback, context]) - } - throw new Error((type + " is not supported!")) - }; - - /** - * trigger the event - * @param {string} evt name NOT allow array anymore! - * @param {mixed} [payload = []] pass to fn - * @param {object|string} [context = null] overwrite what stored - * @param {string} [type=false] if pass this then we need to add type to store too - * @return {number} if it has been execute how many times - */ - EventService.prototype.$trigger = function $trigger (evt , payload , context, type) { - if ( payload === void 0 ) payload = []; - if ( context === void 0 ) context = null; - if ( type === void 0 ) type = false; - - this.validateEvt(evt); - var found = 0; - // first check the normal store - var nStore = this.normalStore; - this.logger('($trigger)', 'normalStore', nStore); - if (nStore.has(evt)) { - // @1.8.0 to add the suspend queue - var added = this.$queue(evt, payload, context, type); - this.logger('($trigger)', evt, 'found; add to queue: ', added); - if (added === true) { - this.logger('($trigger)', evt, 'not executed. Exit now.'); - return false; // not executed - } - var nSet = Array.from(nStore.get(evt)); - var ctn = nSet.length; - var hasOnce = false; - for (var i=0; i < ctn; ++i) { - ++found; - // this.logger('found', found) - var ref = nSet[i]; - var _ = ref[0]; - var callback = ref[1]; - var ctx = ref[2]; - var type$1 = ref[3]; - this.logger("($trigger)", ("call run for " + evt)); - this.run(callback, payload, context || ctx); - if (type$1 === 'once' || type$1 === 'onlyOnce') { - hasOnce = true; - } - } - if (hasOnce) { - nStore.delete(evt); - } - return found; - } - // now this is not register yet - this.addToLazyStore(evt, payload, context, type); - return found; - }; - - /** - * this is an alias to the $trigger - * @NOTE breaking change in V1.6.0 we swap the parameter around - * @param {string} evt event name - * @param {*} params pass to the callback - * @param {string} type of call - * @param {object} context what context callback execute in - * @return {*} from $trigger - */ - EventService.prototype.$call = function $call (evt, params, type, context) { - if ( type === void 0 ) type = false; - if ( context === void 0 ) context = null; - - var args = [evt, params, context, type]; - return Reflect.apply(this.$trigger, this, args) - }; - - /** - * remove the evt from all the stores - * @param {string} evt name - * @return {boolean} true actually delete something - */ - EventService.prototype.$off = function $off (evt) { - var this$1 = this; - - this.validateEvt(evt); - var stores = [ this.lazyStore, this.normalStore ]; - var found = false; - stores.forEach(function (store) { - if (store.has(evt)) { - found = true; - this$1.logger('($off)', evt); - store.delete(evt); - } - }); - return found; - }; - - /** - * return all the listener from the event - * @param {string} evtName event name - * @param {boolean} [full=false] if true then return the entire content - * @return {array|boolean} listerner(s) or false when not found - */ - EventService.prototype.$get = function $get (evt, full) { - if ( full === void 0 ) full = false; - - this.validateEvt(evt); - var store = this.normalStore; - if (store.has(evt)) { - return Array - .from(store.get(evt)) - .map( function (l) { - if (full) { - return l; - } - var key = l[0]; - var callback = l[1]; - return callback; - }) - } - return false; - }; - - /** - * store the return result from the run - * @param {*} value whatever return from callback - */ - prototypeAccessors.$done.set = function (value) { - this.logger('($done)', 'value: ', value); - if (this.keep) { - this.result.push(value); - } else { - this.result = value; - } - }; - - /** - * @TODO is there any real use with the keep prop? - * getter for $done - * @return {*} whatever last store result - */ - prototypeAccessors.$done.get = function () { - if (this.keep) { - this.logger('(get $done)', this.result); - return this.result[this.result.length - 1] - } - return this.result; - }; - - Object.defineProperties( EventService.prototype, prototypeAccessors ); - - return EventService; -}(NbEventServiceBase)); - -// default - -// create a clone version so we know which one we actually is using -var JsonqlWsEvt = /*@__PURE__*/(function (NBEventService) { - function JsonqlWsEvt() { - // this ee will always come with the logger - // because we should take the ee from the configuration - NBEventService.call(this, { - logger: getDebug('nb-event-service') - }); - } - - if ( NBEventService ) JsonqlWsEvt.__proto__ = NBEventService; - JsonqlWsEvt.prototype = Object.create( NBEventService && NBEventService.prototype ); - JsonqlWsEvt.prototype.constructor = JsonqlWsEvt; - - var prototypeAccessors = { name: { configurable: true } }; - - prototypeAccessors.name.get = function () { - return 'jsonql-ws-client' - }; - - Object.defineProperties( JsonqlWsEvt.prototype, prototypeAccessors ); - - return JsonqlWsEvt; -}(EventService)); - -// mapping the resolver to their respective nsp -var debug = getDebug('process-contract'); - -/** - * Just make sure the object contain what we are looking for - * @param {object} opts configuration from checkOptions - * @return {object} the target content - */ -var getResolverList = function (contract) { - var result = extractSocketPart(contract); - if (result !== false) { - return result - } - throw new JsonqlResolverNotFoundError(MISSING_PROP_ERR) -}; - -/** - * process the contract first - * @param {object} opts configuration - * @return {object} sorted list - */ -function processContract(opts) { - var obj, obj$1; - - var contract = opts.contract; - var enableAuth = opts.enableAuth; - if (enableAuth) { - return groupByNamespace(contract) - } - return ( obj$1 = {}, obj$1[NSP_SET] = ( obj = {}, obj[JSONQL_PATH] = getResolverList(contract), obj ), obj$1[PUBLIC_NAMESPACE] = JSONQL_PATH, obj$1 ) -} - -// group all the small functions here -// import { getDebug } from './get-debug'; -// const debug = getDebug('helpers') - -// we shouldn't do this anymore -var fixWss = function (url, serverType) { - // ws only allow ws:// path - if (serverType === JS_WS_NAME) { - return url.replace('http://', 'ws://') - } - return url; -}; - -/** - * get a stock host name from browser - */ -var getHostName = function () { - try { - return [window.location.protocol, window.location.host].join('//') - } catch(e) { - throw new JsonqlValidationError(e) - } -}; - -/** - * Unbind the event - * @param {object} ee EventEmitter - * @param {string} namespace - * @return {void} - */ -var clearMainEmitEvt = function (ee, namespace) { - var nsps = toArray(namespace); - nsps.forEach(function (n) { - ee.$off(createEvt(n, EMIT_REPLY_TYPE)); - }); -}; - -/** - * Simple check if the prop is function - * @param {*} prop input - * @return {boolean} true on success - */ -var isFunc = function (prop) { - if (typeof prop === 'function') { - return true; - } - console.error(EXPECT_FUNC_ERR); -}; - -// breaking it up further to share between methods -var debugFn = getDebug('respondHandler'); -/** - * break out to use in different places to handle the return from server - * @param {object} data from server - * @param {function} resolver NOT from promise - * @param {function} rejecter NOT from promise - * @return {void} nothing - */ -function respondHandler(data, resolver, rejecter) { - if (isKeyInObject(data, ERROR_KEY)) { - debugFn('-- rejecter called --', data[ERROR_KEY]); - rejecter(data[ERROR_KEY]); - } else if (isKeyInObject(data, DATA_KEY)) { - debugFn('-- resolver called --', data[DATA_KEY]); - resolver(data[DATA_KEY]); - } else { - debugFn('-- UNKNOWN_RESULT --', data); - rejecter({message: UNKNOWN_RESULT, error: data}); - } -} - -// the actual trigger call method -var debugFn$1 = getDebug("action-call"); - -/** - * just wrapper - * @param {object} ee EventEmitter - * @param {string} namespace where this belongs - * @param {string} resolverName resolver - * @param {array} args arguments - * @return {void} nothing - */ -function actionCall(ee, namespace, resolverName, args) { - if ( args === void 0 ) args = []; - - var eventName = createEvt(namespace, EMIT_REPLY_TYPE); - debugFn$1(("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 - // then we need to listen to the event callback here as well - return new Promise(function (resolver, rejecter) { - ee.$on( - createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), - function actionCallResultHandler(result) { - debugFn$1("got the first result", result); - respondHandler(result, resolver, rejecter); - } - ); - }) -} - -var debugFn$2 = getDebug('setup-send'); - -// pairing with the server vesrion SEND_MSG_PROP_NAME -// last of the chain so only return the resolver (fn) -var setupSend = function (fn, ee, namespace, resolverName, params) { return ( - objDefineProps(fn, SEND_MSG_PROP_NAME, function sendSetter(messagePayload) { - debugFn$2('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$1(toArray(messagePayload), params.params, true) - .then(function (result) { - // here is the different we don't throw error instead we trigger onError - if (result[ERROR_KEY] && result[ERROR_KEY].length) { - debugFn$2("got ERROR_KEY", result[ERROR_KEY]); - ee.$call( - createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), - [new JsonqlValidationError$1(resolverName, result[ERROR_KEY])] - ); - } else { - // return it just for the catch to work - if any - return actionCall(ee, namespace, resolverName, messagePayload) - } - }) - .catch(function (err) { - debugFn$2("error after validateAsync", err); - ee.$call( - createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), - [new JsonqlValidationError$1(resolverName, err)] - ); - }); - }, function sendGetter() { // add in 1.1.4 - return function sendGetterAction() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return validateAsync$1(args, params.params, true) - .then(function (_args) { return actionCall(ee, namespace, resolverName, _args); }) - .catch(finalCatch) - } - }) -); }; - -// break up the original setup resolver method here -var debugFn$3 = getDebug('setup-resolver'); - -/** - * The first one in the chain - * @return {array} - */ -var setupNamespace = function (fn, ee, namespace, resolverName, params) { return [ - injectToFn(fn, MY_NAMESPACE, namespace), - ee, - namespace, - resolverName, - params -]; }; - -// onResult handler -var setupOnResult = function (fn, ee, namespace, resolverName, params) { return [ - objDefineProps(fn, ON_RESULT_PROP_NAME, function(resultCallback) { - if (isFunc(resultCallback)) { - ee.$on( - createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), - function resultHandler(result) { - respondHandler(result, resultCallback, function (error) { - ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error); - }); - } - ); - } - }), - ee, - namespace, - resolverName, - params -]; }; - -// we do need to add the send prop back because it's the only way to deal with -// bi-directional data stream -var setupOnMessage = function (fn, ee, namespace, resolverName, params) { return [ - objDefineProps(fn, ON_MESSAGE_PROP_NAME, function(messageCallback) { - // we expect this to be a function - if (isFunc(messageCallback)) { - // did that add to the callback - var onMessageCallback = function (args) { - respondHandler(args, messageCallback, function (error) { - ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error); - }); - }; - // register the handler for this message event - ee.$only(createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME), onMessageCallback); - } - }), - ee, - namespace, - resolverName, - params -]; }; - -// add an ON_ERROR_PROP_NAME handler -var setupOnError = function (fn, ee, namespace, resolverName, params) { return [ - objDefineProps(fn, ON_ERROR_PROP_NAME, function(resolverErrorHandler) { - if (isFunc(resolverErrorHandler)) { - // please note ON_ERROR_PROP_NAME can add multiple listners - ee.$only(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), resolverErrorHandler); - } - }), - ee, - namespace, - resolverName, - params -]; }; - -/** - * Add extra property to the resolver - * @param {string} namespace where this belongs - * @param {string} resolverName name as event name - * @param {object} params from contract - * @param {function} fn resolver function - * @param {object} ee EventEmitter - * @TODO need a new parameter here - * @return {function} resolver - */ -function setupResolver(namespace, resolverName, params, fn, ee) { - // also need to setup a getter to get back the namespace of this resolver - var args = [fn, ee, namespace, resolverName, params]; - var exe = chainFns(setupNamespace, setupOnResult, setupOnMessage, setupOnError, setupSend); - // debug(exe) - return Reflect.apply(exe, null, args) -} - -// put all the resolver related methods here to make it more clear -var debugFn$4 = getDebug('resolver-methods'); - -/** - * create the actual function to send message to server - * @param {object} ee EventEmitter instance - * @param {string} namespace this resolver end point - * @param {string} resolverName name of resolver as event name - * @param {object} params from contract - * @return {function} resolver - */ -function createResolver(ee, namespace, resolverName, params) { - // note we pass the new withResult=true option - return function() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return validateAsync$1(args, params.params, true) - .then(function (_args) { return actionCall(ee, namespace, resolverName, _args); }) - .catch(finalCatch) - } -} - -/** - * The problem is the namespace can have more than one - * and we only have on onError message - * @param {object} obj the client itself - * @param {object} ee Event Emitter - * @param {object} nspSet namespace keys - * @return {object} obj with onError prop - */ -function createNamespaceErrorHandler(obj, ee, nspSet) { - // using the onError as name - // @TODO we should follow the convention earlier - // make this a setter for the obj itself - return objDefineProps(obj, ON_ERROR_PROP_NAME, function(namespaceErrorHandler) { - if (isFunc(namespaceErrorHandler)) { - // please note ON_ERROR_PROP_NAME can add multiple listners - for (var namespace in nspSet) { - // this one is very tricky, we need to make sure the trigger is calling - // with the namespace as well as the error - ee.$on(createEvt(namespace, ON_ERROR_PROP_NAME), namespaceErrorHandler); - } - } - }) -} - -/** - * This event will fire when the socket.io.on('connection') and ws.onopen - * @param {object} obj the client itself - * @param {object} ee Event Emitter - * @param {object} nspSet namespace keys - * @return {object} obj with onReady prop - */ -function createOnReadyhandler(obj, ee, nspSet) { - return objDefineProps(obj, ON_READY_PROP_NAME, function(onReadyCallback) { - if (isFunc(onReadyCallback)) { - // reduce it down to just one flat level - ee.$on(ON_READY_PROP_NAME, onReadyCallback); - } - }) -} - -/** - * This event will fire when the socket.io.on('connection') and ws.onopen - * Plus this will check if it's the private namespace that fired the event - * @param {object} obj the client itself - * @param {object} ee Event Emitter - * @param {object} opts configuration - * @return {object} obj with onLogin prop - */ -function createOnLoginhandler(obj, ee, opts) { - if (opts.enableAuth) { - return objDefineProps(obj, ON_LOGIN_PROP_NAME, function(onLoginCallback) { - if (isFunc(onLoginCallback)) { - // only one callback can registered with it, TBC - ee.$only(ON_LOGIN_PROP_NAME, onLoginCallback); - } - }) - } - // just skip it - return obj -} - -/** - * Create auth related methods - * @param {object} obj the client itself - * @param {object} ee Event Emitter - * @param {object} opts configuration - * @return {object} obj with auth methods if any - */ -function createAuthMethods(obj, ee, opts) { - if (opts.enableAuth) { - // create an additonal login handler - // we require the token - obj[opts.loginHandlerName] = function (token) { - debugFn$4(opts.loginHandlerName, token); - if (token && isString$1(token)) { - return ee.$trigger(LOGIN_EVENT_NAME, [token]) - } - throw new JsonqlValidationError$1(opts.loginHandlerName) - }; - // logout event handler - obj[opts.logoutHandlerName] = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - ee.$trigger(LOGOUT_EVENT_NAME, args); - }; - } - return obj; -} - -// resolvers generator -var debugFn$5 = getDebug('generator'); - -/** - * step one get the obj map with the namespace - * @param {object} opts configuration - * @param {object} nspMap resolvers index by their namespace - * @param {object} ee EventEmitter - * @return {promise} resolve the obj mapped, and start the chain - */ -function getMappedObj(opts, nspMap, ee) { - var obj = {}; - var nspSet = nspMap.nspSet; - for (var namespace in nspSet) { - var list = nspSet[namespace]; - for (var resolverName in list) { - var params = list[resolverName]; - var fn = createResolver(ee, namespace, resolverName, params); - obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee); - } - } - // move this two method down to helpers - obj.devHelpers = { - // this is a helper method for the developer to know the namespace inside - getNsp: function () { return Object.keys(nspSet); }, - // simple get version trick - getVer: function () { return opts.version || 'NOT SET'; } - }; - // resolve the obj to start the chain - return Promise.resolve(obj) -} - -/** - * prepare the methods - * @param {object} opts configuration - * @param {object} nspMap resolvers index by their namespace - * @param {object} ee EventEmitter - * @return {object} of resolvers - * @public - */ -function generator(opts, nspMap, ee) { - var nspSet = nspMap.nspSet; - return getMappedObj(opts, nspMap, ee) - // add error handler - .then(function (obj1) { return createNamespaceErrorHandler(obj1, ee, nspSet); }) - // add onReady handler - .then(function (obj2) { return createOnReadyhandler(obj2, ee); }) - // add onLogin handler -- this is optional - .then(function (obj3) { return createOnLoginhandler(obj3, ee, opts); }) - // Auth related methods -- this is optional - .then(function (obj4) { return createAuthMethods(obj4, ee, opts); }) -} - -var obj; - -var defaultOptions = { - loginHandlerName: createConfig$1(ISSUER_NAME, [STRING_TYPE]), - logoutHandlerName: createConfig$1(LOGOUT_NAME, [STRING_TYPE]), - // we will use this for determine the socket.io client type as well - useJwt: createConfig$1(true, [BOOLEAN_TYPE, STRING_TYPE]), - hostname: createConfig$1(false, [STRING_TYPE]), - namespace: createConfig$1(JSONQL_PATH, [STRING_TYPE]), - wsOptions: createConfig$1({}, [OBJECT_TYPE]), - // make this null as default don't set this here, only set in the down stream - // serverType: createConfig(null, [STRING_TYPE], {[ENUM_KEY]: AVAILABLE_SERVERS}), - // we require the contract already generated and pass here - contract: createConfig$1({}, [OBJECT_TYPE], ( obj = {}, obj[CHECKER_KEY] = isContract, obj )), - enableAuth: createConfig$1(false, [BOOLEAN_TYPE]), - token: createConfig$1(false, [STRING_TYPE]) -}; - -// create options -var debug$1 = getDebug('check-options'); -// constant props -var defaultConstProps = { - eventEmitter: null, - // we unify the two different client into one now - // only expect different parameter - nspClient: null, - nspAuthClient: null, - // contructed path - wssPath: '' -}; - -/** - * check the configuration - * @param {object} config user supplied configuration - * @param {object} constProps developer supplied configuration - * @return {object} after checked - */ -function checkOptions(config, constProps) { - return checkConfigAsync$1(config, defaultOptions, Object.assign(defaultConstProps, constProps)) - .then(function (opts) { - if (!opts.hostname) { - opts.hostname = getHostName(); - } - // @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$1('CONFIGURATION OPTIONS', opts); - return opts; - }) -} - -// the top level API - -/** - * The main interface which will generate the socket clients and map all events - * @param {object} socketClientResolver this is the one method export by various clients - * @param {object} [constProps={}] add this to supply the constProps from the downstream client - * @return {object} the wsClient instance with all the available API - */ -function wsClient(socketClientResolver, constProps) { - if ( constProps === void 0 ) constProps = {}; - - // we need to inject property to this client later - // therefore we need to do it this way - return function (opts) { - var eventEmitter = opts.eventEmitter; - return checkOptions(opts, constProps) - .then(function (opts) { return ({ - opts: opts, - nspMap: processContract(opts), - ee: eventEmitter || new JsonqlWsEvt() - }); }) - .then( - function (ref) { - var opts = ref.opts; - var nspMap = ref.nspMap; - var ee = ref.ee; - - return socketClientResolver(opts, nspMap, ee); - } - ) - .then( - function (ref) { - var opts = ref.opts; - var nspMap = ref.nspMap; - var ee = ref.ee; - - return generator(opts, nspMap, ee); - } - ) - .catch(function (err) { - console.error("jsonql-ws-client init error", err); - }) - } -} - -// where all the base options are -// constant props -var constProps = { - version: 'version: 0.6.0 module: cjs', // will get replace - serverType: JS_WS_NAME -}; - -// pass the different type of ws to generate the client -/** - * WebSocket is strict about the path, therefore we need to make sure before it goes in - * @param {string} url input url - * @return {string} url with correct path name - */ -var fixWss$1 = function (url) { - var uri = url.toLowerCase(); - if (uri.indexOf('http') > -1) { - if (uri.indexOf('https') > -1) { - return uri.replace('https', 'wss') - } - return uri.replace('http', 'ws') - } - return uri; -}; - -/** - * The bug was in the wsOptions where ws doesn't need it but socket.io do - * therefore the object was pass as second parameter! - * @param {object} WebSocket the client or node version of ws - * @param {boolean} auth if it's auth then 3 param or just one - */ -function createWsClient(WebSocket, auth) { - if ( auth === void 0 ) auth = false; - - if (auth === false) { - return function createWsClientHandler(url) { - return new WebSocket(fixWss$1(url)) - } - } - - /** - * Create a client with auth token - * @param {string} url start with ws:// @TODO check this? - * @param {string} token the jwt token - * @return {object} ws instance - */ - return function createWsAuthClientHandler(url, token) { - var ws_url = fixWss$1(url); - // console.log('what happen here?', url, ws_url, token) - var uri = token && typeof token === 'string' ? (ws_url + "?" + TOKEN_PARAM_NAME + "=" + token) : ws_url; - try { - return new WebSocket(uri) - } catch(e) { - console.error('WebSocket Connection Error', e); - return false; - } - } -} - -// since both the ws and io version are -// pre-defined in the client-generator -// and this one will have the same parameters -// and the callback is identical - -/** - * wrapper method to create a nsp without login - * @param {string|boolean} namespace namespace url could be false - * @param {object} opts configuration - * @return {object} ws client instance - */ -function createNspClient(namespace, opts) { - var hostname = opts.hostname; - var wssPath = opts.wssPath; - var wsOptions = opts.wsOptions; - var nspClient = opts.nspClient; - var url = namespace ? [hostname, namespace].join('/') : wssPath; - return nspClient(url, wsOptions) -} - -/** - * wrapper method to create a nsp with token auth - * @param {string} namespace namespace url - * @param {object} opts configuration - * @return {object} ws client instance - */ -function createNspAuthClient(namespace, opts) { - var hostname = opts.hostname; - var wssPath = opts.wssPath; - var token = opts.token; - var wsOptions = opts.wsOptions; - var nspAuthClient = opts.nspAuthClient; - var url = namespace ? [hostname, namespace].join('/') : wssPath; - if (token && typeof token !== 'string') { - throw new Error(("Expect token to be string, but got " + token)) - } - return nspAuthClient(url, token, wsOptions) -} - -// this use by client-event-handler -/** - * trigger errors on all the namespace onError handler - * @param {object} ee Event Emitter - * @param {array} namespaces nsps string - * @param {string} message optional - * @return {void} - */ -function triggerNamespacesOnError(ee, namespaces, message) { - namespaces.forEach( function (namespace) { - ee.$call(createEvt(namespace, ON_ERROR_PROP_NAME), [{ message: message, namespace: namespace }]); - }); -} - -// This is share between different clients so we export it -var debugFn$6 = getDebug('client-event-handler'); - -/** - * A fake ee handler - * @param {string} namespace nsp - * @param {object} ee EventEmitter - * @return {void} - */ -var notLoginWsHandler = function (namespace, ee) { - ee.$only( - createEvt(namespace, EMIT_EVT), - function notLoginHandlerCallback(resolverName, args) { - debugFn$6('noLoginHandler hijack the ws call', namespace, resolverName, args); - var error = { - message: NOT_LOGIN_ERR_MSG - }; - // It should just throw error here and should not call the result - // because that's channel for handling normal event not the fake one - ee.$call(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), [error]); - // also trigger the result handler, but wrap inside the error key - ee.$call(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [{ error: error }]); - } - ); -}; - -/** - * get the private namespace - * @param {array} namespaces array - * @return {*} string on success - */ -var getPrivateNamespace = function (namespaces) { return ( - namespaces.length > 1 ? namespaces[0] : false -); }; - -/** - * centralize all the comm in one place - * @param {object} opts configuration - * @param {array} namespaces namespace(s) - * @param {object} ee Event Emitter instance - * @param {function} bindWsHandler binding the ee to ws --> this is the core bit - * @param {array} namespaces array of namespace available - * @param {object} nsps namespaced nsp - * @return {void} nothing - */ -function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, nsps) { - // @1.1.3 add isPrivate prop to id which namespace is the private nsp - // then we can use this prop to determine if we need to fire the ON_LOGIN_PROP_NAME event - var privateNamespace = getPrivateNamespace(namespaces); - var isPrivate = false; - // loop - // @BUG for io this has to be in order the one with auth need to get call first - // The order of login is very import we need to run a waterfall here to make sure - // one is execute then the other - namespaces.forEach(function (namespace) { - isPrivate = privateNamespace === namespace; - if (nsps[namespace]) { - debugFn$6('call bindWsHandler', isPrivate, namespace); - var args = [namespace, nsps[namespace], ee, isPrivate]; - if (opts.serverType === SOCKET_IO) { - var nspSet = nspMap.nspSet; - args.push(nspSet[namespace]); - args.push(opts); - } - Reflect.apply(bindWsHandler, null, args); - } else { - // a dummy placeholder - notLoginWsHandler(namespace, ee); - } - }); - // this will be available regardless enableAuth - // because the server can log the client out - ee.$on(LOGOUT_EVENT_NAME, function logoutEvtHandler() { - debugFn$6('LOGOUT_EVENT_NAME'); - // disconnect(nsps, opts.serverType) - // we need to issue error to all the namespace onError handler - triggerNamespacesOnError(ee, namespaces, LOGOUT_EVENT_NAME); - // rebind all of the handler to the fake one - namespaces.forEach( function (namespace) { - clearMainEmitEvt(ee, namespace); - // clear out the nsp - nsps[namespace] = false; - // add a NOT LOGIN error if call - notLoginWsHandler(namespace, ee); - }); - }); -} - -// take the ws reply data for use - -var keys$1 = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ]; - -/** - * @param {object} payload should be string when reply but could be transformed - * @return {boolean} true is OK - */ -var isWsReply = function (payload) { - var data = payload.data; - if (data) { - var result = keys$1.filter(function (key) { return isKeyInObject$2(data, key); }); - return (result.length === keys$1.length) ? data : false; - } - return false; -}; - -/** - * @param {object} payload This is the entire ws Event Object - * @return {object} false on failed - */ -var extractWsPayload = function (payload) { - var data = payload.data; - var json = isString$1(data) ? JSON.parse(data) : data; - // debugFn('extractWsPayload', json) - var fdata; - if ((fdata = isWsReply(json)) !== false) { - return { - resolverName: fdata[WS_EVT_NAME], - data: fdata[WS_DATA_NAME], - type: fdata[WS_REPLY_TYPE] - }; - } - throw new JsonqlError('payload can not be decoded', payload) -}; - -// the WebSocket main handler - -var debugFn$7 = getDebug('ws-main-handler'); - -var ON_MESSAGE_PROP_NAME$1 = ON_MESSAGE_PROP_NAME; -var ON_RESULT_PROP_NAME$1 = ON_RESULT_PROP_NAME; -var EMIT_EVT$1 = EMIT_EVT; - -/** - * under extremely circumstances we might not even have a resolverName, then - * we issue a global error for the developer to catch it - * @param {object} ee event emitter - * @param {string} namespace nsp - * @param {string} resolverName resolver - * @param {object} json decoded payload or error object - */ -var errorTypeHandler = function (ee, namespace, resolverName, json) { - var evt = [namespace]; - if (resolverName) { - debugFn$7(("a global error on " + namespace)); - evt.push(resolverName); - } - evt.push(ON_ERROR_PROP_NAME); - var evtName = Reflect.apply(createEvt, null, evt); - // test if there is a data field - var payload = json.data || json; - ee.$trigger(evtName, [payload]); -}; - -/** - * Binding the even to socket normally - * @param {string} namespace - * @param {object} ws the nsp - * @param {object} ee EventEmitter - * @param {boolean} isPrivate to id if this namespace is private or not - * @return {object} promise resolve after the onopen event - */ -function wsMainHandler(namespace, ws, ee, isPrivate) { - // connection open - ws.onopen = function onOpenCallback() { - debugFn$7('ws.onopen listened'); - // we just call the onReady - ee.$call(ON_READY_PROP_NAME, namespace); - // need an extra parameter here to id the private nsp - if (isPrivate) { - console.log(("isPrivate and fire the ON_LOGIN_PROP_NAME " + ON_LOGIN_PROP_NAME)); - ee.$call(ON_LOGIN_PROP_NAME, namespace); - } - // add listener only after the open is called - ee.$only( - createEvt(namespace, EMIT_EVT$1), - function wsMainOnEvtHandler(resolverName, args) { - debugFn$7('calling server', resolverName, args); - ws.send( - createQueryStr(resolverName, args) - ); - } - ); - }; - - // reply - // If we change it to the event callback style - // then the payload will just be the payload and fucks up the extractWsPayload call @TODO - ws.onmessage = function onMessageCallback(payload) { - // console.log(`on.message`, typeof payload, payload) - try { - var json = extractWsPayload(payload); - var resolverName = json.resolverName; - var type = json.type; - debugFn$7('Hear from server', type, json); - switch (type) { - case EMIT_REPLY_TYPE: - var e1 = createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME$1); - var r = ee.$trigger(e1, [json]); - debugFn$7("EMIT_REPLY_TYPE", e1, r); - break; - case ACKNOWLEDGE_REPLY_TYPE: - var e2 = createEvt(namespace, resolverName, ON_RESULT_PROP_NAME$1); - var x = ee.$trigger(e2, [json]); - debugFn$7("ACKNOWLEDGE_REPLY_TYPE", e2, json); - break; - case ERROR_TYPE: - // this is handled error and we won't throw it - // we need to extract the error from json - debugFn$7("ERROR_TYPE"); - errorTypeHandler(ee, namespace, resolverName, json); - break; - // @TODO there should be an error type instead of roll into the other two types? TBC - default: - // if this happen then we should throw it and halt the operation all together - debugFn$7('Unhandled event!', json); - errorTypeHandler(ee, namespace, resolverName, json); - // let error = {error: {'message': 'Unhandled event!', type}}; - // ee.$trigger(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [error]) - } - } catch(e) { - console.error("ws.onmessage error", e); - errorTypeHandler(ee, namespace, false, e); - } - }; - // when the server close the connection - ws.onclose = function onCloseCallback() { - debugFn$7('ws.onclose callback'); - // @TODO what to do with this - // ee.$trigger(LOGOUT_EVENT_NAME, [namespace]) - }; - // listen to the LOGOUT_EVENT_NAME - ee.$on(LOGOUT_EVENT_NAME, function closeEvtHandler() { - try { - debugFn$7('terminate ws connection'); - ws.terminate(); - } catch(e) { - console.error('ws.terminate error', e); - } - }); -} - -// actually binding the event client to the socket client - -var debugFn$8 = getDebug('ws-create-client'); - -/* -import { - createNspClient, - createNspAuthClient -} from '../../tests/fixtures/create-login-clients' -*/ -/** - * Because the nsps can be throw away so it doesn't matter the scope - * this will get reuse again - * @param {object} opts configuration - * @param {object} nspMap from contract - * @param {string|null} token whether we have the token at run time - * @return {object} nsps namespace with namespace as key - */ -var createNsps = function(opts, nspMap, token) { - var nspSet = nspMap.nspSet; - var publicNamespace = nspMap.publicNamespace; - var login = false; - var namespaces = []; - var nsps = {}; - // first we need to binding all the events handler - if (opts.enableAuth && opts.useJwt) { - login = true; // just saying we need to listen to login event - namespaces = getNamespaceInOrder(nspSet, publicNamespace); - nsps = namespaces.map(function (namespace, i) { - var obj, obj$1, obj$2; - - if (i === 0) { - if (token) { - opts.token = token; - // console.log('create createNspAuthClient at run time', opts) - return ( obj = {}, obj[namespace] = createNspAuthClient(namespace, opts), obj ) - } - return ( obj$1 = {}, obj$1[namespace] = false, obj$1 ) - } - return ( obj$2 = {}, obj$2[namespace] = createNspClient(namespace, opts), obj$2 ) - }).reduce(function (first, next) { return Object.assign(first, next); }, {}); - } else { - var namespace = getNameFromPayload(nspSet); - namespaces.push(namespace); - // standard without login - // the stock version should not have a namespace - nsps[namespace] = createNspClient(false, opts); - } - // return - return { nsps: nsps, namespaces: namespaces, login: login } -}; - -/** - * create a ws client - * @param {object} opts configuration - * @param {object} nspMap namespace with resolvers - * @param {object} ee EventEmitter to pass through - * @return {object} what comes in what goes out - */ -function createClient(opts, nspMap, ee) { - // arguments that don't change - var args = [opts, nspMap, ee, wsMainHandler]; - // now create the nsps - var token = opts.token; - var ref = createNsps(opts, nspMap, token); - var nsps = ref.nsps; - var namespaces = ref.namespaces; - var login = ref.login; - // binding the listeners - and it will listen to LOGOUT event - // to unbind itself, and the above call will bind it again - Reflect.apply(clientEventHandler, null, args.concat([namespaces, nsps])); - // setup listener - if (login) { - ee.$only(LOGIN_EVENT_NAME, function loginEventHandler(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 - // disconnect(nsps, JS_WS_NAME) - - // @TODO should we trigger error on this one? - // triggerNamespacesOnError(ee, namespaces, LOGIN_EVENT_NAME) - clearMainEmitEvt(ee, namespaces); - // console.log('LOGIN_EVENT_NAME', token) - var newNsps = createNsps(opts, nspMap, tokenLater); - // rebind it - Reflect.apply( - clientEventHandler, - null, - args.concat([newNsps.namespaces, newNsps.nsps]) - ); - }); - } - // return what input - return { opts: opts, nspMap: nspMap, ee: ee } -} - -// share method to create the wsClientResolver - -/** - * combine the create client resolver - * @param {object} ws the different WebSocket module - * @return {function} the wsClientResolver - */ -function createClientResolver(ws) { - var client = createWsClient(ws); - var authClient = createWsClient(ws, true); - /** - * wsClientResolver - * @param {object} opts configuration - * @param {object} nspMap from the contract - * @param {object} ee instance of the eventEmitter - * @return {object} passing the same 3 input out with additional in the opts - */ - return function(opts, nspMap, ee) { - opts.nspClient = client; - opts.nspAuthClient = authClient; - - // console.log(`contract`, opts.contract) - - return createClient(opts, nspMap, ee) - } -} - -// this will be the news style interface that will pass to the jsonql-ws-client - -/** - * @param {object} opts configuration - * @param {object} nspMap from the contract - * @param {object} ee instance of the eventEmitter - * @return {object} passing the same 3 input out with additional in the opts - */ -var wsClientResolver = createClientResolver(WebSocket); - -global$1.debug = debug$2; - -// export back the function and that's it -var node = wsClient(wsClientResolver, constProps); - -module.exports = node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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!",EXPECT_FUNC_ERR="Expect a function!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",isArray=Array.isArray,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]},isKeyInObject=function(e,r){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject$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 isKeyInObject$1(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject$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 constructConfigFn(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 constructConfigFn.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),isKeyInObject$2=isKeyInObject$1,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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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 isKeyInObject$2(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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map index cea8d4d6..9f5509fa 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"jsonql-ws-client.cjs.js","sources":["../node_modules/rollup-plugin-node-globals/src/global.js","../node_modules/jsonql-errors/src/500-error.js","../node_modules/jsonql-errors/src/error-base.js","../node_modules/jsonql-errors/src/enum-error.js","../node_modules/jsonql-errors/src/type-error.js","../node_modules/jsonql-errors/src/checker-error.js","../node_modules/jsonql-errors/src/validation-error.js","../node_modules/jsonql-errors/src/server-error.js","../node_modules/jsonql-ws-client/src/options/constants.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/_baseSlice.js","../node_modules/lodash-es/_baseFindIndex.js","../node_modules/lodash-es/_baseIsNaN.js","../node_modules/lodash-es/_strictIndexOf.js","../node_modules/lodash-es/_asciiToArray.js","../node_modules/lodash-es/_hasUnicode.js","../node_modules/lodash-es/_unicodeToArray.js","../node_modules/jsonql-utils/src/generic.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_safeGet.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_shortOut.js","../node_modules/jsonql-utils/src/contract.js","../node_modules/jsonql-utils/src/params-api.js","../node_modules/jsonql-utils/module.js","../node_modules/lodash-es/isNull.js","../node_modules/lodash-es/isUndefined.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/lodash-es/_baseHasIn.js","../node_modules/lodash-es/_baseProperty.js","../node_modules/lodash-es/negate.js","../node_modules/lodash-es/_baseFindKey.js","../node_modules/jsonql-params-validator/src/not-empty.js","../node_modules/jsonql-params-validator/src/number.js","../node_modules/jsonql-params-validator/src/string.js","../node_modules/jsonql-params-validator/src/boolean.js","../node_modules/jsonql-params-validator/src/any.js","../node_modules/jsonql-params-validator/src/constants.js","../node_modules/jsonql-params-validator/src/combine.js","../node_modules/jsonql-params-validator/src/array.js","../node_modules/jsonql-params-validator/src/object.js","../node_modules/jsonql-params-validator/src/log.js","../node_modules/jsonql-params-validator/src/validator.js","../node_modules/jsonql-params-validator/src/is-in-array.js","../node_modules/jsonql-params-validator/src/options/run-validation.js","../node_modules/jsonql-params-validator/src/options/check-options-async.js","../node_modules/jsonql-params-validator/src/options/construct-config.js","../node_modules/jsonql-params-validator/src/options/index.js","../node_modules/jsonql-params-validator/index.js","../node_modules/nb-event-service/src/hash-code.js","../node_modules/nb-event-service/src/suspend.js","../node_modules/nb-event-service/src/store-service.js","../node_modules/nb-event-service/src/event-service.js","../node_modules/nb-event-service/index.js","../node_modules/jsonql-ws-client/src/utils/process-contract.js","../node_modules/jsonql-ws-client/src/utils/helpers.js","../node_modules/jsonql-ws-client/src/core/respond-handler.js","../node_modules/jsonql-ws-client/src/core/action-call.js","../node_modules/jsonql-ws-client/src/core/setup-resolver.js","../node_modules/jsonql-ws-client/src/core/resolver-methods.js","../node_modules/jsonql-ws-client/src/core/generator.js","../node_modules/jsonql-ws-client/src/options/index.js","../node_modules/jsonql-ws-client/src/api.js","../src/options/index.js","../src/core/create-ws-client.js","../node_modules/jsonql-ws-client/src/share/create-nsp-client.js","../node_modules/jsonql-ws-client/src/share/trigger-namespaces-on-error.js","../node_modules/jsonql-ws-client/src/share/client-event-handler.js","../src/core/extract-ws-payload.js","../src/core/ws-main-handler.js","../src/core/create-client.js","../src/core/create-client-resolver.js","../src/node-ws-client-resolver.js"],"sourcesContent":["export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","/**\n * This is a custom error to throw when server throw a 500\n * This help us to capture the right error, due to the call happens in sequence\n * @param {string} message to tell what happen\n * @param {mixed} extra things we want to add, 500?\n */\nexport default class Jsonql500Error extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = Jsonql500Error.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Jsonql500Error);\n }\n }\n\n static get statusCode() {\n return 500;\n }\n\n static get name() {\n return 'Jsonql500Error';\n }\n\n}\n","// The base Error of all\nimport whereAmI from './where-am-i'\n\nexport default class JsonqlBaseError extends Error {\n constructor(...args) {\n super(...args)\n }\n\n static where() {\n return whereAmI()\n }\n \n}\n","// this get throw from within the checkOptions when run through the enum failed\nexport default class JsonqlEnumError extends Error {\n constructor(...args) {\n super(...args);\n \n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlEnumError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlEnumError);\n }\n }\n\n static get name() {\n return 'JsonqlEnumError';\n }\n}\n","// this will throw from inside the checkOptions\nexport default class JsonqlTypeError extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlTypeError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlTypeError);\n }\n }\n\n static get name() {\n return 'JsonqlTypeError';\n }\n}\n","// allow supply a custom checker function\n// if that failed then we throw this error\nexport default class JsonqlCheckerError extends Error {\n constructor(...args) {\n super(...args);\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlCheckerError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlCheckerError);\n }\n }\n\n static get name() {\n return 'JsonqlCheckerError';\n }\n}\n","// custom validation error class\nimport JsonqlBaseError from './error-base'\n// when validaton failed\nexport default class JsonqlValidationError extends JsonqlBaseError {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlValidationError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlValidationError);\n }\n }\n\n static get name() {\n return 'JsonqlValidationError';\n }\n}\n","// this is from an example from Koa team to use for internal middleware ctx.throw\n// but after the test the res.body part is unable to extract the required data\n// I keep this one here for future reference\n\nexport default class JsonqlServerError extends Error {\n\n constructor(statusCode, message) {\n super(message);\n this.statusCode = statusCode;\n this.className = JsonqlServerError.name;\n }\n\n static get name() {\n return 'JsonqlServerError';\n }\n}\n","// constants\n\nimport {\n EMIT_REPLY_TYPE,\n JS_WS_SOCKET_IO_NAME,\n JS_WS_NAME,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME\n} from 'jsonql-constants'\n\nconst SOCKET_IO = JS_WS_SOCKET_IO_NAME;\nconst WS = JS_WS_NAME;\n\nconst AVAILABLE_SERVERS = [SOCKET_IO, WS]\n\nconst SOCKET_NOT_DEFINE_ERR = 'socket is not define in the contract file!';\n\nconst SERVER_NOT_SUPPORT_ERR = 'is not supported server name!';\n\nconst MISSING_PROP_ERR = 'Missing property in contract!';\n\nconst UNKNOWN_CLIENT_ERR = 'Unknown client type!';\n\nconst EXPECT_FUNC_ERR = `Expect a function!`\n\nconst EMIT_EVT = EMIT_REPLY_TYPE;\n\nconst NAMESPACE_KEY = 'namespaceMap';\n\nconst UNKNOWN_RESULT = 'UKNNOWN RESULT!';\n\nconst NOT_ALLOW_OP = 'This operation is not allow!';\n\nconst MY_NAMESPACE = 'myNamespace'\n\nexport {\n SOCKET_IO,\n WS,\n AVAILABLE_SERVERS,\n SOCKET_NOT_DEFINE_ERR,\n SERVER_NOT_SUPPORT_ERR,\n MISSING_PROP_ERR,\n UNKNOWN_CLIENT_ERR,\n EMIT_EVT,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n NAMESPACE_KEY,\n UNKNOWN_RESULT,\n NOT_ALLOW_OP,\n MY_NAMESPACE,\n EXPECT_FUNC_ERR\n}\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","// bunch of generic helpers\n\nimport isArray from 'lodash-es/isArray'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport trim from 'lodash-es/trim'\n\n/**\n * DIY in Array\n * @param {array} arr to check from\n * @param {*} value to check against\n * @return {boolean} true on found\n */\nexport const inArray = (arr, value) => !!arr.filter(a => a === value).length;\n\n// quick and dirty to turn non array to array\nexport const toArray = (arg) => isArray(arg) ? arg : [arg];\n\n/**\n * parse string to json or just return the original value if error happened\n * @param {*} n input\n * @return {*} json object on success\n */\nconst parse = function(n) {\n try {\n return JSON.parse(n)\n } catch(e) {\n return n;\n }\n}\n\n\n/**\n * @param {object} obj for search\n * @param {string} key target\n * @return {boolean} true on success\n */\nexport const isKeyInObject = function(obj, key) {\n const keys = Object.keys(obj)\n return inArray(keys, key)\n}\n\n/**\n * create a event name\n * @param {string[]} args\n * @return {string} event name for use\n */\nexport const createEvt = (...args) => args.join('_')\n\n/**\n * @param {boolean} sec return in second or not\n * @return {number} timestamp\n */\nexport const timestamp = (sec = false) => {\n let time = Date.now()\n return sec ? Math.floor( time / 1000 ) : time;\n}\n\n/**\n * construct a url with query parameters\n * @param {string} url to append\n * @param {object} params to append to url\n * @return {string} url with appended params\n */\nexport const urlParams = (url, params) => {\n let parts = [];\n for (let key in params) {\n parts.push( [key, params[key]].join('=') )\n }\n return [url, parts.join('&')].join('?')\n}\n\n/**\n * construct a url with cache burster\n * @param {string} url to append to\n * @return {object} _cb key timestamp\n */\nexport const cacheBurstUrl = url => urlParams(url, cacheBurst())\n\n/**\n * @return {object} _cb as key with timestamp\n */\nexport const cacheBurst = () => ({ _cb: timestamp() })\n\n/**\n * From underscore.string library\n * @BUG there is a bug here with the non-standard name start with _\n * @param {string} str string\n * @return {string} dasherize string\n */\nexport const dasherize = str => (\n trim(str)\n .replace(/([A-Z])/g, '-$1')\n .replace(/[-_\\s]+/g, '-')\n .toLowerCase()\n)\n\n/**\n * simple util method to get the value\n * @param {string} name of the key\n * @param {object} obj to take value from\n * @return {*} the object value id by name or undefined\n */\nexport const getConfigValue = (name, obj) => (\n obj && isPlainObject(obj) ? ( (name in obj) ? obj[name] : undefined ) : undefined\n)\n\n/**\n * small util to make sure the return value is valid JSON object\n * @param {*} n input\n * @return {object} correct JSON object\n */\nexport const toJson = (n) => {\n if (typeof n === 'string') {\n return parse(n)\n }\n return JSON.parse(JSON.stringify(n))\n}\n\n/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nexport const isNotEmpty = function(param) {\n return param !== undefined && param !== false && param !== null && trim(param) !== '';\n}\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","// split the contract into the node side and the generic side\nimport { isKeyInObject } from './generic'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport {\n QUERY_NAME,\n MUTATION_NAME,\n SOCKET_NAME,\n QUERY_ARG_NAME,\n PAYLOAD_PARAM_NAME,\n CONDITION_PARAM_NAME\n} from 'jsonql-constants'\nimport { JsonqlError, JsonqlResolverNotFoundError } from 'jsonql-errors'\n/**\n * Check if the json is a contract file or not\n * @param {object} contract json object\n * @return {boolean} true\n */\nexport function checkIsContract(contract) {\n return isPlainObject(contract)\n && (\n isKeyInObject(contract, QUERY_NAME)\n || isKeyInObject(contract, MUTATION_NAME)\n || isKeyInObject(contract, SOCKET_NAME)\n )\n}\n\n/**\n * Ported from jsonql-params-validator but different\n * if we don't find the socket part then return false\n * @param {object} contract the contract object\n * @return {object|boolean} false on failed\n */\nexport function extractSocketPart(contract) {\n if (isKeyInObject(contract, 'socket')) {\n return contract.socket;\n }\n return false;\n}\n\n/**\n * @BUG we should check the socket part instead of expect the downstream to read the menu!\n * We only need this when the enableAuth is true otherwise there is only one namespace\n * @param {object} contract the socket part of the contract file\n * @param {boolean} [fallback=false] this is a fall back option for old code\n * @return {object} 1. remap the contract using the namespace --> resolvers\n * 2. the size of the object (1 all private, 2 mixed public with private)\n * 3. which namespace is public\n */\nexport function groupByNamespace(contract, fallback = false) {\n let socket = extractSocketPart(contract)\n if (socket === false) {\n if (fallback) {\n return contract; // just return the whole contract\n }\n throw new JsonqlError(`socket not found in contract!`)\n }\n let nspSet = {};\n let size = 0;\n let publicNamespace;\n for (let resolverName in socket) {\n let params = socket[resolverName];\n let { namespace } = params;\n if (namespace) {\n if (!nspSet[namespace]) {\n ++size;\n nspSet[namespace] = {};\n }\n nspSet[namespace][resolverName] = params;\n if (!publicNamespace) {\n if (params.public) {\n publicNamespace = namespace;\n }\n }\n }\n }\n return { size, nspSet, publicNamespace }\n}\n\n/**\n * @NOTE ported from jsonql-ws-client\n * Got to make sure the connection order otherwise\n * it will hang\n * @param {object} nspSet contract\n * @param {string} publicNamespace like the name said\n * @return {array} namespaces in order\n */\nexport function getNamespaceInOrder(nspSet, publicNamespace) {\n let names = []; // need to make sure the order!\n for (let namespace in nspSet) {\n if (namespace === publicNamespace) {\n names[1] = namespace;\n } else {\n names[0] = namespace;\n }\n }\n return names;\n}\n\n\n/**\n * Extract the args from the payload\n * @param {object} payload to work with\n * @param {string} type of call\n * @return {array} args\n */\nexport function extractArgsFromPayload(payload, type) {\n switch (type) {\n case QUERY_NAME:\n return payload[QUERY_ARG_NAME];\n case MUTATION_NAME:\n return [\n payload[PAYLOAD_PARAM_NAME],\n payload[CONDITION_PARAM_NAME]\n ];\n default:\n throw new JsonqlError(`Unknown ${type} to extract argument from!`)\n }\n}\n\n/**\n * Like what the name said\n * @param {object} contract the contract json\n * @param {string} type query|mutation\n * @param {string} name of the function\n * @return {object} the params part of the contract\n */\nexport function extractParamsFromContract(contract, type, name) {\n try {\n const result = contract[type][name];\n // debug('extractParamsFromContract', result)\n if (!result) {\n // debug(name, type, contract)\n throw new JsonqlResolverNotFoundError(name, type)\n }\n return result;\n } catch(e) {\n throw new JsonqlResolverNotFoundError(name, e)\n }\n}\n","// ported from jsonql-params-validator\n// craete several helper function to construct / extract the payload\n// and make sure they are all the same\nimport {\n PAYLOAD_PARAM_NAME,\n CONDITION_PARAM_NAME,\n RESOLVER_PARAM_NAME,\n QUERY_ARG_NAME\n} from 'jsonql-constants'\nimport { JsonqlValidationError } from 'jsonql-errors'\n\nimport isArray from 'lodash-es/isArray'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport isString from 'lodash-es/isString'\n\n/**\n * make sure it's an object (it was call formatPayload but it doesn't make sense)\n * @param {*} payload the object comes in could be string based\n * @return {object} the transformed payload\n */\nexport const toPayload = payload => isString(payload) ? JSON.parse(payload) : payload;\n\n/**\n * @param {*} args arguments to send\n *@return {object} formatted payload\n */\nexport const formatPayload = (args) => (\n { [QUERY_ARG_NAME]: args }\n)\n\n/**\n * Get name from the payload (ported back from jsonql-koa)\n * @param {*} payload to extract from\n * @return {string} name\n */\nexport function getNameFromPayload(payload) {\n return Object.keys(payload)[0]\n}\n\n/**\n * @param {string} resolverName name of function\n * @param {array} [args=[]] from the ...args\n * @param {boolean} [jsonp = false] add v1.3.0 to koa\n * @return {object} formatted argument\n */\nexport function createQuery(resolverName, args = [], jsonp = false) {\n if (isString(resolverName) && isArray(args)) {\n let payload = formatPayload(args)\n if (jsonp === true) {\n return payload;\n }\n return { [resolverName]: payload }\n }\n throw new JsonqlValidationError(`[createQuery] expect resolverName to be string and args to be array!`, { resolverName, args })\n}\n\n/**\n * string version of the createQuery\n * @return {string}\n */\nexport function createQueryStr(resolverName, args = [], jsonp = false) {\n return JSON.stringify(createQuery(resolverName, args, jsonp))\n}\n\n/**\n * @param {string} resolverName name of function\n * @param {*} payload to send\n * @param {object} [condition={}] for what\n * @param {boolean} [jsonp = false] add v1.3.0 to koa\n * @return {object} formatted argument\n */\nexport function createMutation(resolverName, payload, condition = {}, jsonp = false) {\n const _payload = {\n [PAYLOAD_PARAM_NAME]: payload,\n [CONDITION_PARAM_NAME]: condition\n }\n if (jsonp === true) {\n return _payload;\n }\n if (isString(resolverName)) {\n return { [resolverName]: _payload }\n }\n throw new JsonqlValidationError(`[createMutation] expect resolverName to be string!`, { resolverName, payload, condition })\n}\n\n/**\n * string version of createMutation\n * @return {string}\n */\nexport function createMutationStr(resolverName, payload, condition = {}, jsonp = false) {\n return JSON.stringify(createMutation(resolverName, payload, condition, jsonp))\n}\n\n/**\n * Further break down from method below for use else where\n * @param {string} resolverName name of fn\n * @param {object} payload payload\n * @return {object|boolean} false on failed\n */\nexport function getQueryFromArgs(resolverName, payload) {\n if (resolverName && isPlainObject(payload)) {\n const args = payload[resolverName]\n if (args[QUERY_ARG_NAME]) {\n return {\n [RESOLVER_PARAM_NAME]: resolverName,\n [QUERY_ARG_NAME]: args[QUERY_ARG_NAME]\n }\n }\n }\n return false;\n}\n\n/**\n * Share function so no repeat\n * @param {object} payload the payload from client\n * @param {function} processor the last get result method\n * @return {*} result processed result\n */\nfunction processPayload(payload, processor) {\n const p = toPayload(payload)\n const resolverName = getNameFromPayload(p)\n return Reflect.apply(processor, null, [resolverName, p])\n}\n\n/**\n * extra the payload back\n * @param {*} payload from http call\n * @return {object} resolverName and args\n */\nexport function getQueryFromPayload(payload) {\n const result = processPayload(payload, getQueryFromArgs)\n if (result !== false) {\n return result;\n }\n throw new JsonqlValidationError('[getQueryArgs] Payload is malformed!', payload)\n}\n\n/**\n * Further break down from method below for use else where\n * @param {string} resolverName name of fn\n * @param {object} payload payload\n * @return {object|boolean} false on failed\n */\nexport function getMutationFromArgs(resolverName, payload) {\n if (resolverName && isPlainObject(payload)) {\n const args = payload[resolverName]\n if (args) {\n return {\n [RESOLVER_PARAM_NAME]: resolverName,\n [PAYLOAD_PARAM_NAME]: args[PAYLOAD_PARAM_NAME],\n [CONDITION_PARAM_NAME]: args[CONDITION_PARAM_NAME]\n }\n }\n }\n return false;\n}\n\n/**\n * @param {object} payload\n * @return {object} resolverName, payload, conditon\n */\nexport function getMutationFromPayload(payload) {\n const result = processPayload(payload, getMutationFromArgs)\n\n if (result !== false) {\n return result;\n }\n throw new JsonqlValidationError('[getMutationArgs] Payload is malformed!', payload)\n}\n","// exportfor ES modules\n// ported from jsonql-params-validator\nimport { chainFns } from './src/chain-fns'\nimport { chainPromises } from './src/chain-promises'\nimport { injectToFn, objDefineProps } from './src/obj-define-props'\nimport {\n checkIsContract,\n extractSocketPart,\n groupByNamespace,\n getNamespaceInOrder,\n extractArgsFromPayload,\n extractParamsFromContract\n} from './src/contract'\nimport {\n inArray,\n toArray,\n isKeyInObject,\n createEvt,\n timestamp,\n urlParams,\n cacheBurst,\n cacheBurstUrl,\n dasherize,\n getConfigValue,\n isNotEmpty,\n toJson\n} from './src/generic'\nimport {\n toPayload,\n formatPayload,\n createQuery,\n createQueryStr,\n createMutation,\n createMutationStr,\n getQueryFromArgs,\n getQueryFromPayload,\n getMutationFromArgs,\n getMutationFromPayload,\n getNameFromPayload\n} from './src/params-api'\nimport {\n getCallMethod,\n packResult,\n packError,\n resultHandler,\n isJsonqlErrorObj\n} from './src/results'\n\n// alias\nconst isContract = checkIsContract;\nconst VERSION = '__VERSION__'\n// exports\nexport {\n getCallMethod,\n packResult,\n packError,\n resultHandler,\n isJsonqlErrorObj,\n // chain-fns\n chainFns,\n chainPromises,\n // contract\n extractArgsFromPayload,\n extractParamsFromContract,\n checkIsContract,\n extractSocketPart,\n groupByNamespace,\n getNamespaceInOrder,\n isContract, // alias\n // generic\n inArray,\n toArray,\n isKeyInObject,\n dasherize,\n createEvt,\n timestamp,\n urlParams,\n cacheBurst,\n cacheBurstUrl,\n getConfigValue,\n isNotEmpty,\n toJson,\n // params-api\n toPayload,\n formatPayload,\n createQuery,\n createQueryStr,\n createMutation,\n createMutationStr,\n getQueryFromArgs,\n getQueryFromPayload,\n getMutationFromArgs,\n getMutationFromPayload,\n getNameFromPayload,\n // objectDefineProp\n injectToFn,\n objDefineProps,\n VERSION\n}\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n","/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n}\n\nexport default baseFindKey;\n","/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nimport { trim, isArray } from './lodash'\n\nexport default a => {\n if (isArray(a)) {\n return true;\n }\n return a !== undefined && a !== null && trim(a) !== '';\n}\n","// validator numbers\n// import { NUMBER_TYPES } from './constants';\nimport { isNaN, isString } from './lodash'\n/**\n * @2015-05-04 found a problem if the value is a number like string\n * it will pass, so add a check if it's string before we pass to next\n * @param {number} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsNumber = function(value) {\n return isString(value) ? false : !isNaN( parseFloat(value) )\n}\n\nexport default checkIsNumber\n","// validate string type\nimport { isString, trim } from './lodash'\n/**\n * @param {string} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsString = function(value) {\n return (trim(value) !== '') ? isString(value) : false;\n}\n\nexport default checkIsString;\n","// check for boolean\nimport { isBoolean } from './lodash'\n/**\n * @param {boolean} value expected\n * @return {boolean} true if OK\n */\nconst checkIsBoolean = function(value) {\n return isBoolean(value);\n};\n\nexport default checkIsBoolean\n","// validate any thing only check if there is something\n\nimport { isNull, trim, isUndefined } from './lodash'\n/**\n * @param {*} value the value\n * @param {boolean} [checkNull=true] strict check if there is null value\n * @return {boolean} true is OK\n */\nconst checkIsAny = function(value, checkNull = true) {\n if (!isUndefined(value) && value !== '' && trim(value) !== '') {\n if (checkNull === false || (checkNull === true && !isNull(value))) {\n return true;\n }\n }\n return false;\n};\n\nexport default checkIsAny\n","// Good practice rule - No magic number\n\nexport const 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)`;\nexport const PARAMS_NOT_ARRAY_ERR = `params is not an array! Did something gone wrong when you generate the contract.json?`;\nexport const EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!';\nexport const UNUSUAL_CASE_ERR = 'This is an unusual situation where the arguments are more than the params, but not mark as spread';\n\n// re-export\nimport * as JSONQL_CONSTANTS from 'jsonql-constants';\n// @TODO the jsdoc return array. and we should also allow array syntax\nexport const DEFAULT_TYPE = JSONQL_CONSTANTS.DEFAULT_TYPE;\nexport const ARRAY_TYPE_LFT = JSONQL_CONSTANTS.ARRAY_TYPE_LFT;\nexport const ARRAY_TYPE_RGT = JSONQL_CONSTANTS.ARRAY_TYPE_RGT;\n\nexport const TYPE_KEY = JSONQL_CONSTANTS.TYPE_KEY;\nexport const OPTIONAL_KEY = JSONQL_CONSTANTS.OPTIONAL_KEY;\nexport const ENUM_KEY = JSONQL_CONSTANTS.ENUM_KEY;\nexport const ARGS_KEY = JSONQL_CONSTANTS.ARGS_KEY;\nexport const CHECKER_KEY = JSONQL_CONSTANTS.CHECKER_KEY;\nexport const ALIAS_KEY = JSONQL_CONSTANTS.ALIAS_KEY;\n\nexport const ARRAY_TYPE = JSONQL_CONSTANTS.ARRAY_TYPE;\nexport const OBJECT_TYPE = JSONQL_CONSTANTS.OBJECT_TYPE;\nexport const STRING_TYPE = JSONQL_CONSTANTS.STRING_TYPE;\nexport const BOOLEAN_TYPE = JSONQL_CONSTANTS.BOOLEAN_TYPE;\nexport const NUMBER_TYPE = JSONQL_CONSTANTS.NUMBER_TYPE;\nexport const KEY_WORD = JSONQL_CONSTANTS.KEY_WORD;\nexport const OR_SEPERATOR = JSONQL_CONSTANTS.OR_SEPERATOR;\n\n// not actually in use\n// export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES;\n","// primitive types\nimport checkIsNumber from './number'\nimport checkIsString from './string'\nimport checkIsBoolean from './boolean'\nimport checkIsAny from './any'\nimport { NUMBER_TYPE, STRING_TYPE, BOOLEAN_TYPE } from './constants'\n\n/**\n * this is a wrapper method to call different one based on their type\n * @param {string} type to check\n * @return {function} a function to handle the type\n */\nconst combineFn = function(type) {\n switch (type) {\n case NUMBER_TYPE:\n return checkIsNumber;\n case STRING_TYPE:\n return checkIsString;\n case BOOLEAN_TYPE:\n return checkIsBoolean;\n default:\n return checkIsAny;\n }\n}\n\nexport default combineFn\n","// validate array type\nimport { isArray, trim } from './lodash'\nimport combineFn from './combine'\nimport {\n ARRAY_TYPE_LFT,\n ARRAY_TYPE_RGT,\n OR_SEPERATOR\n} from './constants'\n\n/**\n * @param {array} value expected\n * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well\n * @return {boolean} true if OK\n */\nexport const checkIsArray = function(value, type='') {\n if (isArray(value)) {\n if (type === '' || trim(type)==='') {\n return true;\n }\n // we test it in reverse\n // @TODO if the type is an array (OR) then what?\n // we need to take into account this could be an array\n const c = value.filter(v => !combineFn(type)(v))\n return !(c.length > 0)\n }\n return false;\n}\n\n/**\n * check if it matches the array. pattern\n * @param {string} type\n * @return {boolean|array} false means NO, always return array\n */\nexport const isArrayLike = function(type) {\n // @TODO could that have something like array<> instead of array.<>? missing the dot?\n // because type script is Array without the dot\n if (type.indexOf(ARRAY_TYPE_LFT) > -1 && type.indexOf(ARRAY_TYPE_RGT) > -1) {\n const _type = type.replace(ARRAY_TYPE_LFT, '').replace(ARRAY_TYPE_RGT, '')\n if (_type.indexOf(OR_SEPERATOR)) {\n return _type.split(OR_SEPERATOR)\n }\n return [_type]\n }\n return false;\n}\n\n/**\n * we might encounter something like array. then we need to take it apart\n * @param {object} p the prepared object for processing\n * @param {string|array} type the type came from \n * @return {boolean} for the filter to operate on\n */\nexport const arrayTypeHandler = function(p, type) {\n const { arg } = p;\n // need a special case to handle the OR type\n // we need to test the args instead of the type(s)\n if (type.length > 1) {\n return !arg.filter(v => (\n !(type.length > type.filter(t => !combineFn(t)(v)).length)\n )).length;\n }\n // type is array so this will be or!\n return type.length > type.filter(t => !checkIsArray(arg, t)).length;\n}\n","// validate object type\nimport { isPlainObject, isUndefined, filter } from './lodash'\nimport combineFn from './combine'\nimport { checkIsArray, isArrayLike, arrayTypeHandler } from './array'\n/**\n * @TODO if provide with the keys then we need to check if the key:value type as well\n * @param {object} value expected\n * @param {array} [keys=null] if it has the keys array to compare as well\n * @return {boolean} true if OK\n */\nexport const checkIsObject = function(value, keys=null) {\n if (isPlainObject(value)) {\n if (!keys) {\n return true;\n }\n if (checkIsArray(keys)) {\n // please note we DON'T care if some is optional\n // plese refer to the contract.json for the keys\n return !keys.filter(key => {\n let _value = value[key.name];\n return !(key.type.length > key.type.filter(type => {\n let tmp;\n if (!isUndefined(_value)) {\n if ((tmp = isArrayLike(type)) !== false) {\n return !arrayTypeHandler({arg: _value}, tmp)\n // return tmp.filter(t => !checkIsArray(_value, t)).length;\n // @TODO there might be an object within an object with keys as well :S\n }\n return !combineFn(type)(_value)\n }\n return true;\n }).length)\n }).length;\n }\n }\n return false;\n}\n\n/**\n * fold this into it's own function to handler different object type\n * @param {object} p the prepared object for process\n * @return {boolean}\n */\nexport const objectTypeHandler = function(p) {\n const { arg, param } = p;\n let _args = [arg];\n if (Array.isArray(param.keys) && param.keys.length) {\n _args.push(param.keys)\n }\n // just simple check\n return checkIsObject.apply(null, _args)\n}\n","/**\n * just a simple util for helping to debug\n * @param {array} args arguments\n * @return {void}\n */\nexport default function log(...args) {\n try {\n if (window && window.console) {\n Reflect.apply(console.log, console, args)\n }\n } catch(e) {}\n}\n","// move the index.js code here that make more sense to find where things are\nimport { isUndefined } from './lodash'\nimport {\n checkIsArray,\n isArrayLike,\n arrayTypeHandler,\n objectTypeHandler,\n checkIsObject,\n combineFn,\n notEmpty\n} from './index'\nimport {\n DEFAULT_TYPE,\n ARRAY_TYPE,\n OBJECT_TYPE,\n ARGS_NOT_ARRAY_ERR,\n PARAMS_NOT_ARRAY_ERR,\n EXCEPTION_CASE_ERR,\n UNUSUAL_CASE_ERR\n} from './constants'\nimport { DATA_KEY, ERROR_KEY } from 'jsonql-constants'\nimport { JsonqlError } from 'jsonql-errors'\nimport log from './log'\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:validator')\n// also export this for use in other places\n\n/**\n * We need to handle those optional parameter without a default value\n * @param {object} params from contract.json\n * @return {boolean} for filter operation false is actually OK\n */\nconst optionalHandler = function( params ) {\n const { arg, param } = params;\n if (notEmpty(arg)) {\n // debug('call optional handler', arg, params);\n // loop through the type in param\n return !(param.type.length > param.type.filter(type =>\n validateHandler(type, params)\n ).length)\n }\n return false;\n}\n\n/**\n * actually picking the validator\n * @param {*} type for checking\n * @param {*} value for checking\n * @return {boolean} true on OK\n */\nconst validateHandler = function(type, value) {\n let tmp;\n switch (true) {\n case type === OBJECT_TYPE:\n // debugFn('call OBJECT_TYPE')\n return !objectTypeHandler(value)\n case type === ARRAY_TYPE:\n // debugFn('call ARRAY_TYPE')\n return !checkIsArray(value.arg)\n // @TODO when the type is not present, it always fall through here\n // so we need to find a way to actually pre-check the type first\n // AKA check the contract.json map before running here\n case (tmp = isArrayLike(type)) !== false:\n // debugFn('call ARRAY_LIKE: %O', value)\n return !arrayTypeHandler(value, tmp)\n default:\n return !combineFn(type)(value.arg)\n }\n}\n\n/**\n * it get too longer to fit in one line so break it out from the fn below\n * @param {*} arg value\n * @param {object} param config\n * @return {*} value or apply default value\n */\nconst getOptionalValue = function(arg, param) {\n if (!isUndefined(arg)) {\n return arg;\n }\n return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null)\n}\n\n/**\n * padding the arguments with defaultValue if the arguments did not provide the value\n * this will be the name export\n * @param {array} args normalized arguments\n * @param {array} params from contract.json\n * @return {array} merge the two together\n */\nexport const normalizeArgs = function(args, params) {\n // first we should check if this call require a validation at all\n // there will be situation where the function doesn't need args and params\n if (!checkIsArray(params)) {\n // debugFn('params value', params)\n throw new JsonqlError(PARAMS_NOT_ARRAY_ERR)\n }\n if (params.length === 0) {\n return [];\n }\n if (!checkIsArray(args)) {\n throw new JsonqlError(ARGS_NOT_ARRAY_ERR)\n }\n // debugFn(args, params);\n // fall through switch\n switch(true) {\n case args.length == params.length: // standard\n log(1)\n return args.map((arg, i) => (\n {\n arg,\n index: i,\n param: params[i]\n }\n ))\n case params[0].variable === true: // using spread syntax\n log(2)\n const type = params[0].type;\n return args.map((arg, i) => (\n {\n arg,\n index: i, // keep the index for reference\n param: params[i] || { type, name: '_' }\n }\n ))\n // with optional defaultValue parameters\n case args.length < params.length:\n log(3)\n return params.map((param, i) => (\n {\n param,\n index: i,\n arg: getOptionalValue(args[i], param),\n optional: param.optional || false\n }\n ))\n // this one pass more than it should have anything after the args.length will be cast as any type\n case args.length > params.length:\n log(4)\n let ctn = params.length;\n // this happens when we have those array. type\n let _type = [ DEFAULT_TYPE ]\n // we only looking at the first one, this might be a @BUG\n /*\n if ((tmp = isArrayLike(params[0].type[0])) !== false) {\n _type = tmp;\n } */\n // if we use the params as guide then the rest will get throw out\n // which is not what we want, instead, anything without the param\n // will get a any type and optional flag\n return args.map((arg, i) => {\n let optional = i >= ctn ? true : !!params[i].optional\n let param = params[i] || { type: _type, name: `_${i}` }\n return {\n arg: optional ? getOptionalValue(arg, param) : arg,\n index: i,\n param,\n optional\n }\n })\n // @TODO find out if there is more cases not cover\n default: // this should never happen\n log(5)\n // debugFn('args', args)\n // debugFn('params', params)\n // this is unknown therefore we just throw it!\n throw new JsonqlError(EXCEPTION_CASE_ERR, { args, params })\n }\n}\n\n// what we want is after the validaton we also get the normalized result\n// which is with the optional property if the argument didn't provide it\n/**\n * process the array of params back to their arguments\n * @param {array} result the params result\n * @return {array} arguments\n */\nconst processReturn = result => result.map(r => r.arg)\n\n/**\n * validator main interface\n * @param {array} args the arguments pass to the method call\n * @param {array} params from the contract for that method\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {array} empty array on success, or failed parameter and reasons\n */\nexport const validateSync = function(args, params, withResult = false) {\n let cleanArgs = normalizeArgs(args, params)\n let checkResult = cleanArgs.filter(p => {\n // v1.4.4 this fixed the problem, the root level optional is from the last fn\n if (p.optional === true || p.param.optional === true) {\n return optionalHandler(p)\n }\n // because array of types means OR so if one pass means pass\n return !(p.param.type.length > p.param.type.filter(\n type => validateHandler(type, p)\n ).length)\n })\n // using the same convention we been using all this time\n return !withResult ? checkResult : {\n [ERROR_KEY]: checkResult,\n [DATA_KEY]: processReturn(cleanArgs)\n }\n}\n\n/**\n * A wrapper method that return promise\n * @param {array} args arguments\n * @param {array} params from contract.json\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {object} promise.then or catch\n */\nexport const validateAsync = function(args, params, withResult = false) {\n return new Promise((resolver, rejecter) => {\n const result = validateSync(args, params, withResult)\n if (withResult) {\n return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY])\n : resolver(result[DATA_KEY])\n }\n // the different is just in the then or catch phrase\n return result.length ? rejecter(result) : resolver([])\n })\n}\n","/**\n * @param {array} arr Array for check\n * @param {*} value target\n * @return {boolean} true on successs\n */\nconst isInArray = function(arr, value) {\n return !!arr.filter(a => a === value).length;\n}\n\nexport default isInArray\n","// breaking the whole thing up to see what cause the multiple calls issue\n\nimport { isFunction, merge, mapValues } from '../lodash'\nimport {\n JsonqlEnumError,\n JsonqlTypeError,\n JsonqlCheckerError\n} from 'jsonql-errors'\nimport log from '../log'\nimport {\n TYPE_KEY,\n OPTIONAL_KEY,\n ENUM_KEY,\n ARGS_KEY,\n CHECKER_KEY,\n KEY_WORD\n} from '../constants'\nimport { checkIsArray } from '../array'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:validation')\n\n/**\n * just make sure it returns an array to use\n * @param {*} arg input\n * @return {array} output\n */\nconst toArray = arg => checkIsArray(arg) ? arg : [arg]\n\n/**\n * DIY in array\n * @param {array} arr to check against\n * @param {*} value to check\n * @return {boolean} true on OK\n */\nconst inArray = (arr, value) => (\n !!arr.filter(v => v === value).length\n)\n\n/**\n * break out to make the code easier to read\n * @param {object} value to process\n * @param {function} cb the validateSync\n * @return {array} empty on success\n */\nfunction validateHandler(value, cb) {\n // cb is the validateSync methods\n let args = [\n [ value[ARGS_KEY] ],\n [{\n [TYPE_KEY]: toArray(value[TYPE_KEY]),\n [OPTIONAL_KEY]: value[OPTIONAL_KEY]\n }]\n ]\n // debugFn('validateHandler', args)\n return Reflect.apply(cb, null, args)\n}\n\n/**\n * Check against the enum value if it's provided\n * @param {*} value to check\n * @param {*} enumv to check against if it's not false\n * @return {boolean} true on OK\n */\nconst enumHandler = (value, enumv) => {\n if (checkIsArray(enumv)) {\n return inArray(enumv, value)\n }\n return true;\n}\n\n/**\n * Allow passing a function to check the value\n * There might be a problem here if the function is incorrect\n * and that will makes it hard to debug what is going on inside\n * @TODO there could be a few feature add to this one under different circumstance\n * @param {*} value to check\n * @param {function} checker for checking\n */\nconst checkerHandler = (value, checker) => {\n try {\n return isFunction(checker) ? checker.apply(null, [value]) : false;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Taken out from the runValidaton this only validate the required values\n * @param {array} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {array} of configuration values\n */\nfunction runValidationAction(cb) {\n return (value, key) => {\n // debugFn('runValidationAction', key, value)\n if (value[KEY_WORD]) {\n return value[ARGS_KEY]\n }\n const check = validateHandler(value, cb)\n if (check.length) {\n log('runValidationAction', key, value)\n throw new JsonqlTypeError(key, check)\n }\n if (value[ENUM_KEY] !== false && !enumHandler(value[ARGS_KEY], value[ENUM_KEY])) {\n log(ENUM_KEY, value[ENUM_KEY])\n throw new JsonqlEnumError(key)\n }\n if (value[CHECKER_KEY] !== false && !checkerHandler(value[ARGS_KEY], value[CHECKER_KEY])) {\n log(CHECKER_KEY, value[CHECKER_KEY])\n throw new JsonqlCheckerError(key)\n }\n return value[ARGS_KEY]\n }\n}\n\n/**\n * @param {object} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {object} of configuration values\n */\nexport default function runValidation(args, cb) {\n const [ argsForValidate, pristineValues ] = args;\n // turn the thing into an array and see what happen here\n // debugFn('_args', argsForValidate)\n const result = mapValues(argsForValidate, runValidationAction(cb))\n return merge(result, pristineValues)\n}\n","/// this is port back from the client to share across all projects\nimport { merge } from '../lodash'\nimport { prepareArgsForValidation } from './prepare-args-for-validation'\nimport runValidation from './run-validation'\n\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:check-options-async')\n\n/**\n * Quick transform\n * @param {object} config that one\n * @param {object} appProps mutation configuration options\n * @return {object} put that arg into the args\n */\nconst configToArgs = (config, appProps) => {\n return Promise.resolve(\n prepareArgsForValidation(config, appProps)\n )\n}\n\n/**\n * @param {object} config user provide configuration option\n * @param {object} appProps mutation configuration options\n * @param {object} constProps the immutable configuration options\n * @param {function} cb the validateSync method\n * @return {object} Promise resolve merge config object\n */\nexport default function(config = {}, appProps, constProps, cb) {\n return configToArgs(config, appProps)\n .then(args1 => {\n // debugFn('args', args1)\n return runValidation(args1, cb)\n })\n // next if every thing good then pass to final merging\n .then(args2 => merge({}, args2, constProps))\n}\n","// create function to construct the config entry so we don't need to keep building object\nimport { isFunction, isString } from '../lodash'\nimport {\n ARGS_KEY,\n TYPE_KEY,\n CHECKER_KEY,\n ENUM_KEY,\n OPTIONAL_KEY,\n ALIAS_KEY\n} from 'jsonql-constants'\n\nimport { checkIsArray } from '../array'\nimport checkIsBoolean from '../boolean'\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:construct-config');\n/**\n * @param {*} args value\n * @param {string} type for value\n * @param {boolean} [optional=false]\n * @param {boolean|array} [enumv=false]\n * @param {boolean|function} [checker=false]\n * @return {object} config entry\n */\nexport default function(args, type, optional=false, enumv=false, checker=false, alias=false) {\n let base = {\n [ARGS_KEY]: args,\n [TYPE_KEY]: type\n };\n if (optional === true) {\n base[OPTIONAL_KEY] = true;\n }\n if (checkIsArray(enumv)) {\n base[ENUM_KEY] = enumv;\n }\n if (isFunction(checker)) {\n base[CHECKER_KEY] = checker;\n }\n if (isString(alias)) {\n base[ALIAS_KEY] = alias;\n }\n return base;\n}\n","// export also create wrapper methods\nimport checkOptionsAsync from './check-options-async'\nimport checkOptionsSync from './check-options-sync'\nimport constructConfigFn from './construct-config'\nimport {\n ENUM_KEY,\n CHECKER_KEY,\n ALIAS_KEY,\n OPTIONAL_KEY\n} from 'jsonql-constants'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:index');\n\n/**\n * This has a different interface\n * @param {*} value to supply\n * @param {string|array} type for checking\n * @param {object} params to map against the config check\n * @param {array} params.enumv NOT enum\n * @param {boolean} params.optional false then nothing\n * @param {function} params.checker need more work on this one later\n * @param {string} params.alias mostly for cmd\n */\nconst createConfig = (value, type, params = {}) => {\n // Note the enumv not ENUM\n // const { enumv, optional, checker, alias } = params;\n // let args = [value, type, optional, enumv, checker, alias];\n const {\n [OPTIONAL_KEY]: o,\n [ENUM_KEY]: e,\n [CHECKER_KEY]: c,\n [ALIAS_KEY]: a\n } = params;\n return constructConfigFn.apply(null, [value, type, o, e, c, a])\n}\n\n// for testing purpose\nconst JSONQL_PARAMS_VALIDATOR_INFO = '__PLACEHOLDER__';\n\n/**\n * We recreate the method here to avoid the circlar import\n * @param {object} config user supply configuration\n * @param {object} appProps mutation options\n * @param {object} [constantProps={}] optional: immutation options\n * @return {object} all checked configuration\n */\nconst checkConfigAsync = function(validateSync) {\n return function(config, appProps, constantProps= {}) {\n return checkOptionsAsync(config, appProps, constantProps, validateSync)\n }\n}\n\n// copy of above but it's sync\nconst checkConfig = function(validateSync) {\n return function(config, appProps, constantProps = {}) {\n return checkOptionsSync(config, appProps, constantProps, validateSync)\n }\n}\n\n// re-export\nexport {\n createConfig,\n constructConfigFn,\n checkConfigAsync,\n checkConfig,\n JSONQL_PARAMS_VALIDATOR_INFO\n}\n","// export\nimport {\n checkIsObject,\n notEmpty,\n checkIsAny,\n checkIsString,\n checkIsBoolean,\n checkIsNumber,\n checkIsArray\n} from './src'\n// PIA syntax\nexport const isObject = checkIsObject;\nexport const isAny = checkIsAny;\nexport const isString = checkIsString;\nexport const isBoolean = checkIsBoolean;\nexport const isNumber = checkIsNumber;\nexport const isArray = checkIsArray;\nexport const isNotEmpty = notEmpty;\n\nimport * as validator from './src/validator'\n\nexport const normalizeArgs = validator.normalizeArgs;\nexport const validateSync = validator.validateSync;\nexport const validateAsync = validator.validateAsync;\n\n// configuration checking\n\nimport * as jsonqlOptions from './src/options'\n\nexport const JSONQL_PARAMS_VALIDATOR_INFO = jsonqlOptions.JSONQL_PARAMS_VALIDATOR_INFO;\n\nexport const createConfig = jsonqlOptions.createConfig;\nexport const constructConfig = jsonqlOptions.constructConfigFn;\n\nexport const checkConfigAsync = jsonqlOptions.checkConfigAsync(validator.validateSync)\nexport const checkConfig = jsonqlOptions.checkConfig(validator.validateSync)\n\n// export the two extra functions\nimport isInArray from './src/is-in-array'\nimport isKeyInObjectFn from './src/is-key-in-object'\n\nexport const inArray = isInArray;\nexport const isKeyInObject = isKeyInObjectFn;\n","/**\n * generate a 32bit hash based on the function.toString()\n * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery\n * @param {string} s the converted to string function\n * @return {string} the hashed function string\n */\nexport default function hashCode(s) {\n\treturn s.split(\"\").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0)\n}\n","// making all the functionality on it's own\n// import { WatchClass } from './watch'\n\nexport default class SuspendClass {\n\n constructor() {\n // suspend, release and queue\n this.__suspend__ = null;\n this.queueStore = new Set()\n /*\n this.watch('suspend', function(value, prop, oldValue) {\n this.logger(`${prop} set from ${oldValue} to ${value}`)\n // it means it set the suspend = true then release it\n if (oldValue === true && value === false) {\n // we want this happen after the return happens\n setTimeout(() => {\n this.release()\n }, 1)\n }\n return value; // we need to return the value to store it\n })\n */\n }\n\n /**\n * setter to set the suspend and check if it's boolean value\n * @param {boolean} value to trigger\n */\n set $suspend(value) {\n if (typeof value === 'boolean') {\n const lastValue = this.__suspend__;\n this.__suspend__ = value;\n this.logger('($suspend)', `Change from ${lastValue} --> ${value}`)\n if (lastValue === true && value === false) {\n setTimeout(() => {\n this.release()\n }, 1)\n }\n } else {\n throw new Error(`$suspend only accept Boolean value!`)\n }\n }\n\n /**\n * queuing call up when it's in suspend mode\n * @param {any} value\n * @return {Boolean} true when added or false when it's not\n */\n $queue(...args) {\n if (this.__suspend__ === true) {\n this.logger('($queue)', 'added to $queue', args)\n // there shouldn't be any duplicate ...\n this.queueStore.add(args)\n }\n return this.__suspend__;\n }\n\n /**\n * a getter to get all the store queue\n * @return {array} Set turn into Array before return\n */\n get $queues() {\n let size = this.queueStore.size;\n this.logger('($queues)', `size: ${size}`)\n if (size > 0) {\n return Array.from(this.queueStore)\n }\n return []\n }\n\n /**\n * Release the queue\n * @return {int} size if any\n */\n release() {\n let size = this.queueStore.size\n this.logger('(release)', `Release was called ${size}`)\n if (size > 0) {\n const queue = Array.from(this.queueStore)\n this.queueStore.clear()\n this.logger('queue', queue)\n queue.forEach(args => {\n this.logger(args)\n Reflect.apply(this.$trigger, this, args)\n })\n this.logger(`Release size ${this.queueStore.size}`)\n }\n }\n}\n","// break up the main file because its getting way too long\nimport {\n NB_EVENT_SERVICE_PRIVATE_STORE,\n NB_EVENT_SERVICE_PRIVATE_LAZY\n} from './store'\nimport genHaskKey from './hash-code'\nimport SuspendClass from './suspend'\n\nexport default class NbEventServiceBase extends SuspendClass {\n\n constructor(config = {}) {\n super()\n if (config.logger && typeof config.logger === 'function') {\n this.logger = config.logger;\n }\n this.keep = config.keep;\n // for the $done setter\n this.result = config.keep ? [] : null;\n // we need to init the store first otherwise it could be a lot of checking later\n this.normalStore = new Map()\n this.lazyStore = new Map()\n }\n\n /**\n * validate the event name(s)\n * @param {string[]} evt event name\n * @return {boolean} true when OK\n */\n validateEvt(...evt) {\n evt.forEach(e => {\n if (typeof e !== 'string') {\n this.logger('(validateEvt)', e)\n throw new Error(`event name must be string type!`)\n }\n })\n return true;\n }\n\n /**\n * Simple quick check on the two main parameters\n * @param {string} evt event name\n * @param {function} callback function to call\n * @return {boolean} true when OK\n */\n validate(evt, callback) {\n if (this.validateEvt(evt)) {\n if (typeof callback === 'function') {\n return true;\n }\n }\n throw new Error(`callback required to be function type!`)\n }\n\n /**\n * Check if this type is correct or not added in V1.5.0\n * @param {string} type for checking\n * @return {boolean} true on OK\n */\n validateType(type) {\n const types = ['on', 'only', 'once', 'onlyOnce']\n return !!types.filter(t => type === t).length;\n }\n\n /**\n * Run the callback\n * @param {function} callback function to execute\n * @param {array} payload for callback\n * @param {object} ctx context or null\n * @return {void} the result store in $done\n */\n run(callback, payload, ctx) {\n this.logger('(run)', callback, payload, ctx)\n this.$done = Reflect.apply(callback, ctx, this.toArray(payload))\n }\n\n /**\n * Take the content out and remove it from store id by the name\n * @param {string} evt event name\n * @param {string} [storeName = lazyStore] name of store\n * @return {object|boolean} content or false on not found\n */\n takeFromStore(evt, storeName = 'lazyStore') {\n let store = this[storeName]; // it could be empty at this point\n if (store) {\n this.logger('(takeFromStore)', storeName, store)\n if (store.has(evt)) {\n let content = store.get(evt)\n this.logger('(takeFromStore)', `has ${evt}`, content)\n store.delete(evt)\n return content;\n }\n return false;\n }\n throw new Error(`${storeName} is not supported!`)\n }\n\n /**\n * The add to store step is similar so make it generic for resuse\n * @param {object} store which store to use\n * @param {string} evt event name\n * @param {spread} args because the lazy store and normal store store different things\n * @return {array} store and the size of the store\n */\n addToStore(store, evt, ...args) {\n let fnSet;\n if (store.has(evt)) {\n this.logger('(addToStore)', `${evt} existed`)\n fnSet = store.get(evt)\n } else {\n this.logger('(addToStore)', `create new Set for ${evt}`)\n // this is new\n fnSet = new Set()\n }\n // lazy only store 2 items - this is not the case in V1.6.0 anymore\n // we need to check the first parameter is string or not\n if (args.length > 2) {\n if (Array.isArray(args[0])) { // lazy store\n // check if this type of this event already register in the lazy store\n let [,,t] = args;\n if (!this.checkTypeInLazyStore(evt, t)) {\n fnSet.add(args)\n }\n } else {\n if (!this.checkContentExist(args, fnSet)) {\n this.logger('(addToStore)', `insert new`, args)\n fnSet.add(args)\n }\n }\n } else { // add straight to lazy store\n fnSet.add(args)\n }\n store.set(evt, fnSet)\n return [store, fnSet.size]\n }\n\n /**\n * @param {array} args for compare\n * @param {object} fnSet A Set to search from\n * @return {boolean} true on exist\n */\n checkContentExist(args, fnSet) {\n let list = Array.from(fnSet)\n return !!list.filter(l => {\n let [hash,] = l;\n if (hash === args[0]) {\n return true;\n }\n return false;\n }).length;\n }\n\n /**\n * get the existing type to make sure no mix type add to the same store\n * @param {string} evtName event name\n * @param {string} type the type to check\n * @return {boolean} true you can add, false then you can't add this type\n */\n checkTypeInStore(evtName, type) {\n this.validateEvt(evtName, type)\n let all = this.$get(evtName, true)\n if (all === false) {\n // pristine it means you can add\n return true;\n }\n // it should only have ONE type in ONE event store\n return !all.filter(list => {\n let [ ,,,t ] = list;\n return type !== t;\n }).length;\n }\n\n /**\n * This is checking just the lazy store because the structure is different\n * therefore we need to use a new method to check it\n */\n checkTypeInLazyStore(evtName, type) {\n this.validateEvt(evtName, type)\n let store = this.lazyStore.get(evtName)\n this.logger('(checkTypeInLazyStore)', store)\n if (store) {\n return !!Array\n .from(store)\n .filter(l => {\n let [,,t] = l;\n return t !== type;\n }).length\n }\n return false;\n }\n\n /**\n * wrapper to re-use the addToStore,\n * V1.3.0 add extra check to see if this type can add to this evt\n * @param {string} evt event name\n * @param {string} type on or once\n * @param {function} callback function\n * @param {object} context the context the function execute in or null\n * @return {number} size of the store\n */\n addToNormalStore(evt, type, callback, context = null) {\n this.logger('(addToNormalStore)', evt, type, 'try to add to normal store')\n // @TODO we need to check the existing store for the type first!\n if (this.checkTypeInStore(evt, type)) {\n this.logger('(addToNormalStore)', `${type} can add to ${evt} normal store`)\n let key = this.hashFnToKey(callback)\n let args = [this.normalStore, evt, key, callback, context, type]\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.normalStore = _store;\n return size;\n }\n return false;\n }\n\n /**\n * Add to lazy store this get calls when the callback is not register yet\n * so we only get a payload object or even nothing\n * @param {string} evt event name\n * @param {array} payload of arguments or empty if there is none\n * @param {object} [context=null] the context the callback execute in\n * @param {string} [type=false] register a type so no other type can add to this evt\n * @return {number} size of the store\n */\n addToLazyStore(evt, payload = [], context = null, type = false) {\n // this is add in V1.6.0\n // when there is type then we will need to check if this already added in lazy store\n // and no other type can add to this lazy store\n let args = [this.lazyStore, evt, this.toArray(payload), context]\n if (type) {\n args.push(type)\n }\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.lazyStore = _store;\n return size;\n }\n\n /**\n * make sure we store the argument correctly\n * @param {*} arg could be array\n * @return {array} make sured\n */\n toArray(arg) {\n return Array.isArray(arg) ? arg : [arg];\n }\n\n /**\n * setter to store the Set in private\n * @param {object} obj a Set\n */\n set normalStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj)\n }\n\n /**\n * @return {object} Set object\n */\n get normalStore() {\n return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)\n }\n\n /**\n * setter to store the Set in lazy store\n * @param {object} obj a Set\n */\n set lazyStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj)\n }\n\n /**\n * @return {object} the lazy store Set\n */\n get lazyStore() {\n return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)\n }\n\n /**\n * generate a hashKey to identify the function call\n * The build-in store some how could store the same values!\n * @param {function} fn the converted to string function\n * @return {string} hashKey\n */\n hashFnToKey(fn) {\n return genHaskKey(fn.toString()) + '';\n }\n}\n","// The top level\nimport NbStoreService from './store-service'\n// export\nexport default class EventService extends NbStoreService {\n /**\n * class constructor\n */\n constructor(config = {}) {\n super(config)\n }\n\n /**\n * logger function for overwrite\n */\n logger() {}\n\n //////////////////////////\n // PUBLIC METHODS //\n //////////////////////////\n\n /**\n * Register your evt handler, note we don't check the type here,\n * we expect you to be sensible and know what you are doing.\n * @param {string} evt name of event\n * @param {function} callback bind method --> if it's array or not\n * @param {object} [context=null] to execute this call in\n * @return {number} the size of the store\n */\n $on(evt , callback , context = null) {\n const type = 'on';\n this.validate(evt, callback)\n // first need to check if this evt is in lazy store\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register first then call later\n if (lazyStoreContent === false) {\n this.logger('($on)', `${evt} callback is not in lazy store`)\n // @TODO we need to check if there was other listener to this\n // event and are they the same type then we could solve that\n // register the different type to the same event name\n\n return this.addToNormalStore(evt, type, callback, context)\n }\n this.logger('($on)', `${evt} found in lazy store`)\n // this is when they call $trigger before register this callback\n let size = 0;\n lazyStoreContent.forEach(content => {\n let [ payload, ctx, t ] = content;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($on)`, `call run on ${evt}`)\n this.run(callback, payload, context || ctx)\n size += this.addToNormalStore(evt, type, callback, context || ctx)\n })\n return size;\n }\n\n /**\n * once only registered it once, there is no overwrite option here\n * @NOTE change in v1.3.0 $once can add multiple listeners\n * but once the event fired, it will remove this event (see $only)\n * @param {string} evt name\n * @param {function} callback to execute\n * @param {object} [context=null] the handler execute in\n * @return {boolean} result\n */\n $once(evt , callback , context = null) {\n this.validate(evt, callback)\n const type = 'once';\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (lazyStoreContent === false) {\n this.logger('($once)', `${evt} not in the lazy store`)\n // v1.3.0 $once now allow to add multiple listeners\n return this.addToNormalStore(evt, type, callback, context)\n } else {\n // now this is the tricky bit\n // there is a potential bug here that cause by the developer\n // if they call $trigger first, the lazy won't know it's a once call\n // so if in the middle they register any call with the same evt name\n // then this $once call will be fucked - add this to the documentation\n this.logger('($once)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger('($once)', `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n }\n\n /**\n * This one event can only bind one callbackback\n * @param {string} evt event name\n * @param {function} callback event handler\n * @param {object} [context=null] the context the event handler execute in\n * @return {boolean} true bind for first time, false already existed\n */\n $only(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'only';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($only)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($only)', `${evt} found data in lazy store to execute`)\n const list = Array.from(lazyStoreContent)\n // $only allow to trigger this multiple time on the single handler\n list.forEach( l => {\n const [ payload, ctx, t ] = l;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($only)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n })\n }\n return added;\n }\n\n /**\n * $only + $once this is because I found a very subtile bug when we pass a\n * resolver, rejecter - and it never fire because that's OLD added in v1.4.0\n * @param {string} evt event name\n * @param {function} callback to call later\n * @param {object} [context=null] exeucte context\n * @return {void}\n */\n $onlyOnce(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'onlyOnce';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($onlyOnce)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($onlyOnce)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== 'onlyOnce') {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($onlyOnce)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n return added;\n }\n\n /**\n * This is a shorthand of $off + $on added in V1.5.0\n * @param {string} evt event name\n * @param {function} callback to exeucte\n * @param {object} [context = null] or pass a string as type\n * @param {string} [type=on] what type of method to replace\n * @return {}\n */\n $replace(evt, callback, context = null, type = 'on') {\n if (this.validateType(type)) {\n this.$off(evt)\n let method = this['$' + type]\n this.logger(`($replace)`, evt, callback)\n return Reflect.apply(method, this, [evt, callback, context])\n }\n throw new Error(`${type} is not supported!`)\n }\n\n /**\n * trigger the event\n * @param {string} evt name NOT allow array anymore!\n * @param {mixed} [payload = []] pass to fn\n * @param {object|string} [context = null] overwrite what stored\n * @param {string} [type=false] if pass this then we need to add type to store too\n * @return {number} if it has been execute how many times\n */\n $trigger(evt , payload = [] , context = null, type = false) {\n this.validateEvt(evt)\n let found = 0;\n // first check the normal store\n let nStore = this.normalStore;\n this.logger('($trigger)', 'normalStore', nStore)\n if (nStore.has(evt)) {\n // @1.8.0 to add the suspend queue\n let added = this.$queue(evt, payload, context, type)\n this.logger('($trigger)', evt, 'found; add to queue: ', added)\n if (added === true) {\n this.logger('($trigger)', evt, 'not executed. Exit now.')\n return false; // not executed\n }\n let nSet = Array.from(nStore.get(evt))\n let ctn = nSet.length;\n let hasOnce = false;\n let hasOnly = false;\n for (let i=0; i < ctn; ++i) {\n ++found;\n // this.logger('found', found)\n let [ _, callback, ctx, type ] = nSet[i]\n this.logger(`($trigger)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n if (type === 'once' || type === 'onlyOnce') {\n hasOnce = true;\n }\n }\n if (hasOnce) {\n nStore.delete(evt)\n }\n return found;\n }\n // now this is not register yet\n this.addToLazyStore(evt, payload, context, type)\n return found;\n }\n\n /**\n * this is an alias to the $trigger\n * @NOTE breaking change in V1.6.0 we swap the parameter around\n * @param {string} evt event name\n * @param {*} params pass to the callback\n * @param {string} type of call\n * @param {object} context what context callback execute in\n * @return {*} from $trigger\n */\n $call(evt, params, type = false, context = null) {\n let args = [evt, params, context, type]\n return Reflect.apply(this.$trigger, this, args)\n }\n\n /**\n * remove the evt from all the stores\n * @param {string} evt name\n * @return {boolean} true actually delete something\n */\n $off(evt) {\n this.validateEvt(evt)\n let stores = [ this.lazyStore, this.normalStore ]\n let found = false;\n stores.forEach(store => {\n if (store.has(evt)) {\n found = true;\n this.logger('($off)', evt)\n store.delete(evt)\n }\n })\n return found;\n }\n\n /**\n * return all the listener from the event\n * @param {string} evtName event name\n * @param {boolean} [full=false] if true then return the entire content\n * @return {array|boolean} listerner(s) or false when not found\n */\n $get(evt, full = false) {\n this.validateEvt(evt)\n let store = this.normalStore;\n if (store.has(evt)) {\n return Array\n .from(store.get(evt))\n .map( l => {\n if (full) {\n return l;\n }\n let [key, callback, ] = l;\n return callback;\n })\n }\n return false;\n }\n\n /**\n * store the return result from the run\n * @param {*} value whatever return from callback\n */\n set $done(value) {\n this.logger('($done)', 'value: ', value)\n if (this.keep) {\n this.result.push(value)\n } else {\n this.result = value;\n }\n }\n\n /**\n * @TODO is there any real use with the keep prop?\n * getter for $done\n * @return {*} whatever last store result\n */\n get $done() {\n if (this.keep) {\n this.logger('(get $done)', this.result)\n return this.result[this.result.length - 1]\n }\n return this.result;\n }\n\n\n}\n","// default\nimport NBEventService from './src/event-service'\n\nexport default NBEventService\n","// mapping the resolver to their respective nsp\nimport { JSONQL_PATH, NSP_SET, PUBLIC_NAMESPACE } from 'jsonql-constants'\nimport { groupByNamespace, extractSocketPart } from 'jsonql-utils/module'\nimport { JsonqlResolverNotFoundError } from 'jsonql-errors'\n\nimport { MISSING_PROP_ERR } from '../options/constants'\n\nimport getDebug from './get-debug'\nconst debug = getDebug('process-contract')\n\n/**\n * Just make sure the object contain what we are looking for\n * @param {object} opts configuration from checkOptions\n * @return {object} the target content\n */\nconst getResolverList = contract => {\n const result = extractSocketPart(contract)\n if (result !== false) {\n return result\n }\n throw new JsonqlResolverNotFoundError(MISSING_PROP_ERR)\n}\n\n/**\n * process the contract first\n * @param {object} opts configuration\n * @return {object} sorted list\n */\nexport default function processContract(opts) {\n const { contract, enableAuth } = opts;\n if (enableAuth) {\n return groupByNamespace(contract)\n }\n return {\n [NSP_SET]: { [JSONQL_PATH]: getResolverList(contract) },\n [PUBLIC_NAMESPACE]: JSONQL_PATH\n }\n}\n","// group all the small functions here\nimport { JS_WS_SOCKET_IO_NAME, JS_WS_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants'\nimport { EXPECT_FUNC_ERR } from '../options/constants'\nimport { toArray, createEvt } from 'jsonql-utils/module'\n// import { getDebug } from './get-debug';\n// const debug = getDebug('helpers')\n\n// we shouldn't do this anymore\nexport const fixWss = (url, serverType) => {\n // ws only allow ws:// path\n if (serverType === JS_WS_NAME) {\n return url.replace('http://', 'ws://')\n }\n return url;\n}\n\n/**\n * get a stock host name from browser\n */\nexport const getHostName = () => {\n try {\n return [window.location.protocol, window.location.host].join('//')\n } catch(e) {\n throw new JsonqlValidationError(e)\n }\n}\n\n/**\n * Unbind the event\n * @param {object} ee EventEmitter\n * @param {string} namespace\n * @return {void}\n */\nexport const clearMainEmitEvt = (ee, namespace) => {\n let nsps = toArray(namespace)\n nsps.forEach(n => {\n ee.$off(createEvt(n, EMIT_REPLY_TYPE))\n })\n}\n\n/**\n * @param {object} nsps namespace as key\n * @param {string} type of server\n */\nexport const disconnect = (nsps, type = JS_WS_SOCKET_IO_NAME) => {\n try {\n // @TODO need to figure out a better way here?\n const method = type === JS_WS_SOCKET_IO_NAME ? 'disconnect' : 'terminate';\n for (let namespace in nsps) {\n let nsp = nsps[namespace]\n if (nsp && nsp[method]) {\n Reflect.apply(nsp[method], null, [])\n }\n }\n } catch(e) {\n // socket.io throw a this.destroy of undefined?\n console.error('Disconnect call failed', e)\n }\n}\n\n/**\n * Simple check if the prop is function\n * @param {*} prop input\n * @return {boolean} true on success\n */\nexport const isFunc = prop => {\n if (typeof prop === 'function') {\n return true;\n }\n console.error(EXPECT_FUNC_ERR)\n}\n","// breaking it up further to share between methods\nimport { DATA_KEY, ERROR_KEY } from 'jsonql-constants'\nimport { UNKNOWN_RESULT } from '../options/constants'\nimport { isKeyInObject } from 'jsonql-utils/module'\nimport { getDebug } from '../utils'\nconst debugFn = getDebug('respondHandler')\n/**\n * break out to use in different places to handle the return from server\n * @param {object} data from server\n * @param {function} resolver NOT from promise\n * @param {function} rejecter NOT from promise\n * @return {void} nothing\n */\nexport function respondHandler(data, resolver, rejecter) {\n if (isKeyInObject(data, ERROR_KEY)) {\n debugFn('-- rejecter called --', data[ERROR_KEY])\n rejecter(data[ERROR_KEY])\n } else if (isKeyInObject(data, DATA_KEY)) {\n debugFn('-- resolver called --', data[DATA_KEY])\n resolver(data[DATA_KEY])\n } else {\n debugFn('-- UNKNOWN_RESULT --', data)\n rejecter({message: UNKNOWN_RESULT, error: data})\n }\n}\n","// the actual trigger call method\nimport { ON_RESULT_PROP_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants'\nimport { createEvt, toArray } from 'jsonql-utils/module'\nimport { respondHandler } from './respond-handler'\nimport { getDebug } from '../utils'\nconst debugFn = getDebug(`action-call`)\n\n/**\n * just wrapper\n * @param {object} ee EventEmitter\n * @param {string} namespace where this belongs\n * @param {string} resolverName resolver\n * @param {array} args arguments\n * @return {void} nothing\n */\nexport function actionCall(ee, namespace, resolverName, args = []) {\n const eventName = createEvt(namespace, EMIT_REPLY_TYPE)\n debugFn(`actionCall: ${eventName} --> ${resolverName}`, args)\n ee.$trigger(eventName, [resolverName, toArray(args)])\n // once we trigger there is nothing return from the resolve\n // @TODO if we need the next then call to have the result back\n // then we need to listen to the event callback here as well\n return new Promise((resolver, rejecter) => {\n ee.$on(\n createEvt(namespace, resolverName, ON_RESULT_PROP_NAME),\n function actionCallResultHandler(result) {\n debugFn(`got the first result`, result)\n respondHandler(result, resolver, rejecter)\n }\n )\n })\n}\n","// break up the original setup resolver method here\nimport { JsonqlValidationError, finalCatch } from 'jsonql-errors'\nimport {\n ERROR_TYPE,\n DATA_KEY,\n ERROR_KEY,\n ON_ERROR_PROP_NAME,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n LOGIN_EVENT_NAME,\n ON_READY_PROP_NAME,\n LOGOUT_EVENT_NAME\n} from 'jsonql-constants'\nimport {\n EMIT_EVT,\n NOT_ALLOW_OP,\n UNKNOWN_RESULT,\n MY_NAMESPACE\n} from '../options/constants'\n\nimport { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module'\n\nimport { respondHandler } from './respond-handler'\nimport { getDebug, isFunc } from '../utils'\nconst debugFn = getDebug('setup-resolver')\n\nimport { setupSend } from './setup-send'\n\n/**\n * The first one in the chain\n * @return {array}\n */\nconst setupNamespace = (fn, ee, namespace, resolverName, params) => [\n injectToFn(fn, MY_NAMESPACE, namespace),\n ee,\n namespace,\n resolverName,\n params\n]\n\n// onResult handler\nconst setupOnResult = (fn, ee, namespace, resolverName, params) => [\n objDefineProps(fn, ON_RESULT_PROP_NAME, function(resultCallback) {\n if (isFunc(resultCallback)) {\n ee.$on(\n createEvt(namespace, resolverName, ON_RESULT_PROP_NAME),\n function resultHandler(result) {\n respondHandler(result, resultCallback, (error) => {\n ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error)\n })\n }\n )\n }\n }),\n ee,\n namespace,\n resolverName,\n params\n]\n\n// we do need to add the send prop back because it's the only way to deal with\n// bi-directional data stream\nconst setupOnMessage = (fn, ee, namespace, resolverName, params) => [\n objDefineProps(fn, ON_MESSAGE_PROP_NAME, function(messageCallback) {\n // we expect this to be a function\n if (isFunc(messageCallback)) {\n // did that add to the callback\n let onMessageCallback = (args) => {\n respondHandler(args, messageCallback, (error) => {\n ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error)\n })\n }\n // register the handler for this message event\n ee.$only(createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME), onMessageCallback)\n }\n }),\n ee,\n namespace,\n resolverName,\n params\n]\n\n// add an ON_ERROR_PROP_NAME handler\nconst setupOnError = (fn, ee, namespace, resolverName, params) => [\n objDefineProps(fn, ON_ERROR_PROP_NAME, function(resolverErrorHandler) {\n if (isFunc(resolverErrorHandler)) {\n // please note ON_ERROR_PROP_NAME can add multiple listners\n ee.$only(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), resolverErrorHandler)\n }\n }),\n ee,\n namespace,\n resolverName,\n params\n]\n\n/**\n * Add extra property to the resolver\n * @param {string} namespace where this belongs\n * @param {string} resolverName name as event name\n * @param {object} params from contract\n * @param {function} fn resolver function\n * @param {object} ee EventEmitter\n * @TODO need a new parameter here\n * @return {function} resolver\n */\nexport function setupResolver(namespace, resolverName, params, fn, ee) {\n // also need to setup a getter to get back the namespace of this resolver\n const args = [fn, ee, namespace, resolverName, params]\n const exe = chainFns(setupNamespace, setupOnResult, setupOnMessage, setupOnError, setupSend)\n // debug(exe)\n return Reflect.apply(exe, null, args)\n}\n","// put all the resolver related methods here to make it more clear\n\n// this will be a mini client server architect\n// The reason is when the enableAuth setup - the private route\n// might not be validated, but we need the callable point is ready\n// therefore this part will always take the contract and generate\n// callable api for the developer to setup their front end\n// the only thing is - when they call they might get an error or\n// NOT_LOGIN_IN and they can react to this error accordingly\nimport {\n JsonqlResolverNotFoundError,\n JsonqlValidationError,\n JsonqlError,\n finalCatch\n} from 'jsonql-errors'\nimport {\n validateAsync,\n isKeyInObject,\n isString\n} from 'jsonql-params-validator'\nimport {\n ERROR_TYPE,\n DATA_KEY,\n ERROR_KEY,\n ON_ERROR_PROP_NAME,\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n ON_LOGIN_PROP_NAME,\n SEND_MSG_PROP_NAME,\n LOGIN_EVENT_NAME,\n ON_READY_PROP_NAME,\n LOGOUT_EVENT_NAME\n} from 'jsonql-constants'\nimport {\n EMIT_EVT,\n NOT_ALLOW_OP,\n UNKNOWN_RESULT,\n MY_NAMESPACE,\n EXPECT_FUNC_ERR\n} from '../options/constants'\nimport { actionCall } from './action-call'\nimport {\n getDebug,\n createEvt,\n toArray,\n injectToFn,\n objDefineProps,\n isFunc\n} from '../utils'\nconst debugFn = getDebug('resolver-methods')\n\n/**\n * create the actual function to send message to server\n * @param {object} ee EventEmitter instance\n * @param {string} namespace this resolver end point\n * @param {string} resolverName name of resolver as event name\n * @param {object} params from contract\n * @return {function} resolver\n */\nexport function createResolver(ee, namespace, resolverName, params) {\n // note we pass the new withResult=true option\n return function(...args) {\n return validateAsync(args, params.params, true)\n .then(_args => actionCall(ee, namespace, resolverName, _args))\n .catch(finalCatch)\n }\n}\n\n/**\n * The problem is the namespace can have more than one\n * and we only have on onError message\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} nspSet namespace keys\n * @return {object} obj with onError prop\n */\nexport function createNamespaceErrorHandler(obj, ee, nspSet) {\n // using the onError as name\n // @TODO we should follow the convention earlier\n // make this a setter for the obj itself\n return objDefineProps(obj, ON_ERROR_PROP_NAME, function(namespaceErrorHandler) {\n if (isFunc(namespaceErrorHandler)) {\n // please note ON_ERROR_PROP_NAME can add multiple listners\n for (let namespace in nspSet) {\n // this one is very tricky, we need to make sure the trigger is calling\n // with the namespace as well as the error\n ee.$on(createEvt(namespace, ON_ERROR_PROP_NAME), namespaceErrorHandler)\n }\n }\n })\n}\n\n/**\n * This event will fire when the socket.io.on('connection') and ws.onopen\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} nspSet namespace keys\n * @return {object} obj with onReady prop\n */\nexport function createOnReadyhandler(obj, ee, nspSet) {\n return objDefineProps(obj, ON_READY_PROP_NAME, function(onReadyCallback) {\n if (isFunc(onReadyCallback)) {\n // reduce it down to just one flat level\n ee.$on(ON_READY_PROP_NAME, onReadyCallback)\n }\n })\n}\n\n/**\n * This event will fire when the socket.io.on('connection') and ws.onopen\n * Plus this will check if it's the private namespace that fired the event\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} opts configuration\n * @return {object} obj with onLogin prop\n */\nexport function createOnLoginhandler(obj, ee, opts) {\n if (opts.enableAuth) {\n return objDefineProps(obj, ON_LOGIN_PROP_NAME, function(onLoginCallback) {\n if (isFunc(onLoginCallback)) {\n // only one callback can registered with it, TBC\n ee.$only(ON_LOGIN_PROP_NAME, onLoginCallback)\n }\n })\n }\n // just skip it\n return obj\n}\n\n/**\n * Create auth related methods\n * @param {object} obj the client itself\n * @param {object} ee Event Emitter\n * @param {object} opts configuration\n * @return {object} obj with auth methods if any\n */\nexport function createAuthMethods(obj, ee, opts) {\n if (opts.enableAuth) {\n // create an additonal login handler\n // we require the token\n obj[opts.loginHandlerName] = (token) => {\n debugFn(opts.loginHandlerName, token)\n if (token && isString(token)) {\n return ee.$trigger(LOGIN_EVENT_NAME, [token])\n }\n throw new JsonqlValidationError(opts.loginHandlerName)\n }\n // logout event handler\n obj[opts.logoutHandlerName] = (...args) => {\n ee.$trigger(LOGOUT_EVENT_NAME, args)\n }\n }\n return obj;\n}\n","// resolvers generator\n// we change the interface to return promise from v1.0.3\n// this way we make sure the obj return is correct and timely\nimport { setupResolver } from './setup-resolver'\nimport {\n createResolver,\n createNamespaceErrorHandler,\n createOnReadyhandler,\n createOnLoginhandler,\n createAuthMethods\n} from './resolver-methods'\nimport { getDebug } from '../utils'\nconst debugFn = getDebug('generator')\n\n/**\n * step one get the obj map with the namespace\n * @param {object} opts configuration\n * @param {object} nspMap resolvers index by their namespace\n * @param {object} ee EventEmitter\n * @return {promise} resolve the obj mapped, and start the chain\n */\nfunction getMappedObj(opts, nspMap, ee) {\n let obj = {};\n const { nspSet } = nspMap;\n for (let namespace in nspSet) {\n let list = nspSet[namespace]\n for (let resolverName in list) {\n let params = list[resolverName]\n let fn = createResolver(ee, namespace, resolverName, params)\n obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee)\n }\n }\n // move this two method down to helpers\n obj.devHelpers = {\n // this is a helper method for the developer to know the namespace inside\n getNsp: () => Object.keys(nspSet),\n // simple get version trick\n getVer: () => opts.version || 'NOT SET'\n }\n // resolve the obj to start the chain\n return Promise.resolve(obj)\n}\n\n/**\n * prepare the methods\n * @param {object} opts configuration\n * @param {object} nspMap resolvers index by their namespace\n * @param {object} ee EventEmitter\n * @return {object} of resolvers\n * @public\n */\nexport function generator(opts, nspMap, ee) {\n const { nspSet } = nspMap\n return getMappedObj(opts, nspMap, ee)\n // add error handler\n .then(obj1 => createNamespaceErrorHandler(obj1, ee, nspSet))\n // add onReady handler\n .then(obj2 => createOnReadyhandler(obj2, ee, nspSet))\n // add onLogin handler -- this is optional\n .then(obj3 => createOnLoginhandler(obj3, ee, opts))\n // Auth related methods -- this is optional\n .then(obj4 => createAuthMethods(obj4, ee, opts))\n}\n","// create options\nimport { checkConfigAsync, isNotEmpty } from 'jsonql-params-validator'\n// import { JsonqlValidationError, JsonqlCheckerError } from 'jsonql-errors'\n// this should be remove - we have to make it generic\nimport { defaultOptions } from './defaults'\nimport { fixWss, getHostName, getDebug } from '../utils'\nconst debug = getDebug('check-options')\n// constant props\nconst defaultConstProps = {\n eventEmitter: null,\n // we unify the two different client into one now\n // only expect different parameter\n nspClient: null,\n nspAuthClient: null,\n // contructed path\n wssPath: ''\n}\n\n/**\n * check the configuration\n * @param {object} config user supplied configuration\n * @param {object} constProps developer supplied configuration\n * @return {object} after checked\n */\nexport default function checkOptions(config, constProps) {\n return checkConfigAsync(config, defaultOptions, Object.assign(defaultConstProps, constProps))\n .then(opts => {\n if (!opts.hostname) {\n opts.hostname = getHostName()\n }\n // @TODO the contract now will supply the namespace information\n // and we need to use that to group the namespace call\n opts.wssPath = fixWss([opts.hostname, opts.namespace].join('/'), opts.serverType)\n debug('CONFIGURATION OPTIONS', opts)\n return opts;\n })\n}\n","// the top level API\n// The goal is to create a generic method that will able to handle\n// any kind of clients\n// import { injectToFn } from 'jsonql-utils'\nimport { generator } from './core'\nimport checkOptions from './options'\nimport { ee, processContract } from './utils'\n\n/**\n * The main interface which will generate the socket clients and map all events\n * @param {object} socketClientResolver this is the one method export by various clients\n * @param {object} [constProps={}] add this to supply the constProps from the downstream client\n * @return {object} the wsClient instance with all the available API\n */\nexport default function wsClient(socketClientResolver, constProps = {}) {\n // we need to inject property to this client later\n // therefore we need to do it this way\n return (opts) => {\n const { eventEmitter } = opts;\n return checkOptions(opts, constProps)\n .then(opts => ({\n opts,\n nspMap: processContract(opts),\n ee: eventEmitter || new ee()\n }))\n .then(\n ({opts, nspMap, ee}) => socketClientResolver(opts, nspMap, ee)\n )\n .then(\n ({opts, nspMap, ee}) => generator(opts, nspMap, ee)\n )\n .catch(err => {\n console.error(`jsonql-ws-client init error`, err)\n })\n }\n}\n","// where all the base options are\n// create options\nimport { JS_WS_NAME } from 'jsonql-constants'\n// constant props\nconst constProps = {\n version: '__PLACEHOLDER__', // will get replace\n serverType: JS_WS_NAME\n}\n\nexport { constProps }\n","// pass the different type of ws to generate the client\nimport { TOKEN_PARAM_NAME } from 'jsonql-constants'\n/**\n * WebSocket is strict about the path, therefore we need to make sure before it goes in\n * @param {string} url input url\n * @return {string} url with correct path name\n */\nconst fixWss = url => {\n const uri = url.toLowerCase()\n if (uri.indexOf('http') > -1) {\n if (uri.indexOf('https') > -1) {\n return uri.replace('https', 'wss')\n }\n return uri.replace('http', 'ws')\n }\n return uri;\n}\n\n/**\n * The bug was in the wsOptions where ws doesn't need it but socket.io do\n * therefore the object was pass as second parameter!\n * @param {object} WebSocket the client or node version of ws\n * @param {boolean} auth if it's auth then 3 param or just one\n */\nexport function createWsClient(WebSocket, auth = false) {\n if (auth === false) {\n return function createWsClientHandler(url) {\n return new WebSocket(fixWss(url))\n }\n }\n\n /**\n * Create a client with auth token\n * @param {string} url start with ws:// @TODO check this?\n * @param {string} token the jwt token\n * @return {object} ws instance\n */\n return function createWsAuthClientHandler(url, token) {\n const ws_url = fixWss(url)\n // console.log('what happen here?', url, ws_url, token)\n const uri = token && typeof token === 'string' ? `${ws_url}?${TOKEN_PARAM_NAME}=${token}` : ws_url;\n try {\n return new WebSocket(uri)\n } catch(e) {\n console.error('WebSocket Connection Error', e)\n return false;\n }\n }\n}\n","// since both the ws and io version are\n// pre-defined in the client-generator\n// and this one will have the same parameters\n// and the callback is identical\n\n/**\n * wrapper method to create a nsp without login\n * @param {string|boolean} namespace namespace url could be false\n * @param {object} opts configuration\n * @return {object} ws client instance\n */\nfunction createNspClient(namespace, opts) {\n const { hostname, wssPath, wsOptions, nspClient } = opts;\n const url = namespace ? [hostname, namespace].join('/') : wssPath;\n return nspClient(url, wsOptions)\n}\n\n/**\n * wrapper method to create a nsp with token auth\n * @param {string} namespace namespace url\n * @param {object} opts configuration\n * @return {object} ws client instance\n */\nfunction createNspAuthClient(namespace, opts) {\n const { hostname, wssPath, token, wsOptions, nspAuthClient } = opts;\n const url = namespace ? [hostname, namespace].join('/') : wssPath;\n if (token && typeof token !== 'string') {\n throw new Error(`Expect token to be string, but got ${token}`)\n }\n return nspAuthClient(url, token, wsOptions)\n}\n\nexport {\n createNspClient,\n createNspAuthClient\n}\n","// this use by client-event-handler\nimport { ON_ERROR_PROP_NAME } from 'jsonql-constants'\nimport { createEvt } from 'jsonql-utils'\n/**\n * trigger errors on all the namespace onError handler\n * @param {object} ee Event Emitter\n * @param {array} namespaces nsps string\n * @param {string} message optional\n * @return {void}\n */\nexport function triggerNamespacesOnError(ee, namespaces, message) {\n namespaces.forEach( namespace => {\n ee.$call(createEvt(namespace, ON_ERROR_PROP_NAME), [{ message, namespace }])\n })\n}\n","// This is share between different clients so we export it\n\n\n// @TODO port what is in the ws-main-handler\n// because all the client side call are via the ee\n// and that makes it re-usable between different client setup\nimport {\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n EMIT_EVT,\n SOCKET_IO,\n WS\n} from '../options/constants'\nimport {\n LOGIN_EVENT_NAME,\n LOGOUT_EVENT_NAME,\n NOT_LOGIN_ERR_MSG,\n ON_ERROR_PROP_NAME\n} from 'jsonql-constants'\n\nimport { getDebug, createEvt, clearMainEmitEvt } from '../utils'\nimport { triggerNamespacesOnError } from './trigger-namespaces-on-error'\nconst debugFn = getDebug('client-event-handler')\n\n/**\n * A fake ee handler\n * @param {string} namespace nsp\n * @param {object} ee EventEmitter\n * @return {void}\n */\nconst notLoginWsHandler = (namespace, ee) => {\n ee.$only(\n createEvt(namespace, EMIT_EVT),\n function notLoginHandlerCallback(resolverName, args) {\n debugFn('noLoginHandler hijack the ws call', namespace, resolverName, args)\n let error = {\n message: NOT_LOGIN_ERR_MSG\n }\n // It should just throw error here and should not call the result\n // because that's channel for handling normal event not the fake one\n ee.$call(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), [error])\n // also trigger the result handler, but wrap inside the error key\n ee.$call(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [{ error }])\n }\n )\n}\n\n/**\n * get the private namespace\n * @param {array} namespaces array\n * @return {*} string on success\n */\nconst getPrivateNamespace = (namespaces) => (\n namespaces.length > 1 ? namespaces[0] : false\n)\n\n/**\n * centralize all the comm in one place\n * @param {object} opts configuration\n * @param {array} namespaces namespace(s)\n * @param {object} ee Event Emitter instance\n * @param {function} bindWsHandler binding the ee to ws --> this is the core bit\n * @param {array} namespaces array of namespace available\n * @param {object} nsps namespaced nsp\n * @return {void} nothing\n */\nexport function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, nsps) {\n // @1.1.3 add isPrivate prop to id which namespace is the private nsp\n // then we can use this prop to determine if we need to fire the ON_LOGIN_PROP_NAME event\n const privateNamespace = getPrivateNamespace(namespaces)\n let isPrivate = false;\n // loop\n // @BUG for io this has to be in order the one with auth need to get call first\n // The order of login is very import we need to run a waterfall here to make sure\n // one is execute then the other\n namespaces.forEach(namespace => {\n isPrivate = privateNamespace === namespace;\n if (nsps[namespace]) {\n debugFn('call bindWsHandler', isPrivate, namespace)\n let args = [namespace, nsps[namespace], ee, isPrivate]\n if (opts.serverType === SOCKET_IO) {\n let { nspSet } = nspMap;\n args.push(nspSet[namespace])\n args.push(opts)\n }\n Reflect.apply(bindWsHandler, null, args)\n } else {\n // a dummy placeholder\n notLoginWsHandler(namespace, ee)\n }\n })\n // this will be available regardless enableAuth\n // because the server can log the client out\n ee.$on(LOGOUT_EVENT_NAME, function logoutEvtHandler() {\n debugFn('LOGOUT_EVENT_NAME')\n // disconnect(nsps, opts.serverType)\n // we need to issue error to all the namespace onError handler\n triggerNamespacesOnError(ee, namespaces, LOGOUT_EVENT_NAME)\n // rebind all of the handler to the fake one\n namespaces.forEach( namespace => {\n clearMainEmitEvt(ee, namespace)\n // clear out the nsp\n nsps[namespace] = false;\n // add a NOT LOGIN error if call\n notLoginWsHandler(namespace, ee)\n })\n })\n}\n","// take the ws reply data for use\nimport { WS_EVT_NAME, WS_DATA_NAME, WS_REPLY_TYPE } from 'jsonql-constants'\nimport { isString, isKeyInObject } from 'jsonql-params-validator'\nimport { JsonqlError, clientErrorsHandler } from 'jsonql-errors'\n\nconst keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ]\n\n/**\n * @param {object} payload should be string when reply but could be transformed\n * @return {boolean} true is OK\n */\nconst isWsReply = payload => {\n const { data } = payload;\n if (data) {\n let result = keys.filter(key => isKeyInObject(data, key))\n return (result.length === keys.length) ? data : false;\n }\n return false;\n}\n\n/**\n * @param {object} payload This is the entire ws Event Object\n * @return {object} false on failed\n */\nconst extractWsPayload = payload => {\n const { data } = payload;\n let json = isString(data) ? JSON.parse(data) : data;\n // debugFn('extractWsPayload', json)\n let fdata;\n if ((fdata = isWsReply(json)) !== false) {\n return {\n resolverName: fdata[WS_EVT_NAME],\n data: fdata[WS_DATA_NAME],\n type: fdata[WS_REPLY_TYPE]\n };\n }\n throw new JsonqlError('payload can not be decoded', payload)\n}\n// export it\nexport default extractWsPayload\n","// the WebSocket main handler\nimport { constants, getDebug } from 'jsonql-ws-client/share'\nimport {\n ON_ERROR_PROP_NAME,\n LOGIN_EVENT_NAME,\n LOGOUT_EVENT_NAME,\n ACKNOWLEDGE_REPLY_TYPE,\n EMIT_REPLY_TYPE,\n ERROR_TYPE,\n ON_READY_PROP_NAME,\n ON_LOGIN_PROP_NAME\n} from 'jsonql-constants'\nimport { createQueryStr, createEvt } from 'jsonql-utils/module'\nimport extractWsPayload from './extract-ws-payload'\n\nconst debugFn = getDebug('ws-main-handler')\n\nconst {\n ON_MESSAGE_PROP_NAME,\n ON_RESULT_PROP_NAME,\n EMIT_EVT\n} = constants\n\n/**\n * under extremely circumstances we might not even have a resolverName, then\n * we issue a global error for the developer to catch it\n * @param {object} ee event emitter\n * @param {string} namespace nsp\n * @param {string} resolverName resolver\n * @param {object} json decoded payload or error object\n */\nconst errorTypeHandler = (ee, namespace, resolverName, json) => {\n let evt = [namespace]\n if (resolverName) {\n debugFn(`a global error on ${namespace}`)\n evt.push(resolverName)\n }\n evt.push(ON_ERROR_PROP_NAME)\n let evtName = Reflect.apply(createEvt, null, evt)\n // test if there is a data field\n let payload = json.data || json;\n ee.$trigger(evtName, [payload])\n}\n\n/**\n * Binding the even to socket normally\n * @param {string} namespace\n * @param {object} ws the nsp\n * @param {object} ee EventEmitter\n * @param {boolean} isPrivate to id if this namespace is private or not\n * @return {object} promise resolve after the onopen event\n */\nexport function wsMainHandler(namespace, ws, ee, isPrivate) {\n // connection open\n ws.onopen = function onOpenCallback() {\n debugFn('ws.onopen listened')\n // we just call the onReady\n ee.$call(ON_READY_PROP_NAME, namespace)\n // need an extra parameter here to id the private nsp\n if (isPrivate) {\n console.log(`isPrivate and fire the ON_LOGIN_PROP_NAME ${ON_LOGIN_PROP_NAME}`)\n ee.$call(ON_LOGIN_PROP_NAME, namespace)\n }\n // add listener only after the open is called\n ee.$only(\n createEvt(namespace, EMIT_EVT),\n function wsMainOnEvtHandler(resolverName, args) {\n debugFn('calling server', resolverName, args)\n ws.send(\n createQueryStr(resolverName, args)\n )\n }\n )\n }\n\n // reply\n // If we change it to the event callback style\n // then the payload will just be the payload and fucks up the extractWsPayload call @TODO\n ws.onmessage = function onMessageCallback(payload) {\n // console.log(`on.message`, typeof payload, payload)\n try {\n const json = extractWsPayload(payload)\n const { resolverName, type } = json;\n debugFn('Hear from server', type, json)\n switch (type) {\n case EMIT_REPLY_TYPE:\n let e1 = createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME)\n let r = ee.$trigger(e1, [json])\n debugFn(`EMIT_REPLY_TYPE`, e1, r)\n break;\n case ACKNOWLEDGE_REPLY_TYPE:\n let e2 = createEvt(namespace, resolverName, ON_RESULT_PROP_NAME)\n let x = ee.$trigger(e2, [json])\n debugFn(`ACKNOWLEDGE_REPLY_TYPE`, e2, json)\n break;\n case ERROR_TYPE:\n // this is handled error and we won't throw it\n // we need to extract the error from json\n debugFn(`ERROR_TYPE`)\n errorTypeHandler(ee, namespace, resolverName, json)\n break;\n // @TODO there should be an error type instead of roll into the other two types? TBC\n default:\n // if this happen then we should throw it and halt the operation all together\n debugFn('Unhandled event!', json)\n errorTypeHandler(ee, namespace, resolverName, json)\n // let error = {error: {'message': 'Unhandled event!', type}};\n // ee.$trigger(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [error])\n }\n } catch(e) {\n console.error(`ws.onmessage error`, e)\n errorTypeHandler(ee, namespace, false, e)\n }\n }\n // when the server close the connection\n ws.onclose = function onCloseCallback() {\n debugFn('ws.onclose callback')\n // @TODO what to do with this\n // ee.$trigger(LOGOUT_EVENT_NAME, [namespace])\n }\n // listen to the LOGOUT_EVENT_NAME\n ee.$on(LOGOUT_EVENT_NAME, function closeEvtHandler() {\n try {\n debugFn('terminate ws connection')\n ws.terminate()\n } catch(e) {\n console.error('ws.terminate error', e)\n }\n })\n}\n","// actually binding the event client to the socket client\nimport { getNameFromPayload, getNamespaceInOrder } from 'jsonql-utils/module'\nimport { LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME, JS_WS_NAME } from 'jsonql-constants'\nimport {\n createNspClient,\n createNspAuthClient,\n clientEventHandler,\n triggerNamespacesOnError,\n clearMainEmitEvt,\n disconnect,\n getDebug\n} from 'jsonql-ws-client/share'\nimport { wsMainHandler } from './ws-main-handler'\n\nconst debugFn = getDebug('ws-create-client')\n\n/*\nimport {\n createNspClient,\n createNspAuthClient\n} from '../../tests/fixtures/create-login-clients'\n*/\n/**\n * Because the nsps can be throw away so it doesn't matter the scope\n * this will get reuse again\n * @param {object} opts configuration\n * @param {object} nspMap from contract\n * @param {string|null} token whether we have the token at run time\n * @return {object} nsps namespace with namespace as key\n */\nconst createNsps = function(opts, nspMap, token) {\n let { nspSet, publicNamespace } = nspMap;\n let login = false;\n let namespaces = [];\n let nsps = {};\n // first we need to binding all the events handler\n if (opts.enableAuth && opts.useJwt) {\n login = true; // just saying we need to listen to login event\n namespaces = getNamespaceInOrder(nspSet, publicNamespace)\n nsps = namespaces.map((namespace, i) => {\n if (i === 0) {\n if (token) {\n opts.token = token;\n // console.log('create createNspAuthClient at run time', opts)\n return {[namespace]: createNspAuthClient(namespace, opts)}\n }\n return {[namespace]: false}\n }\n return {[namespace]: createNspClient(namespace, opts)}\n }).reduce((first, next) => Object.assign(first, next), {})\n } else {\n let namespace = getNameFromPayload(nspSet)\n namespaces.push(namespace)\n // standard without login\n // the stock version should not have a namespace\n nsps[namespace] = createNspClient(false, opts)\n }\n // return\n return { nsps, namespaces, login }\n}\n\n/**\n * create a ws client\n * @param {object} opts configuration\n * @param {object} nspMap namespace with resolvers\n * @param {object} ee EventEmitter to pass through\n * @return {object} what comes in what goes out\n */\nexport function createClient(opts, nspMap, ee) {\n // arguments that don't change\n const args = [opts, nspMap, ee, wsMainHandler]\n // now create the nsps\n const { token } = opts;\n const { nsps, namespaces, login } = createNsps(opts, nspMap, token)\n // binding the listeners - and it will listen to LOGOUT event\n // to unbind itself, and the above call will bind it again\n Reflect.apply(clientEventHandler, null, args.concat([namespaces, nsps]))\n // setup listener\n if (login) {\n ee.$only(LOGIN_EVENT_NAME, function loginEventHandler(tokenLater) {\n // @BUG this keep causing an \"Disconnect call failed TypeError: Cannot read property 'readyState' of null\"\n // I think that is because it's not login then it can not be disconnect\n // how do we track this state globally\n // disconnect(nsps, JS_WS_NAME)\n\n // @TODO should we trigger error on this one?\n // triggerNamespacesOnError(ee, namespaces, LOGIN_EVENT_NAME)\n clearMainEmitEvt(ee, namespaces)\n // console.log('LOGIN_EVENT_NAME', token)\n const newNsps = createNsps(opts, nspMap, tokenLater)\n // rebind it\n Reflect.apply(\n clientEventHandler,\n null,\n args.concat([newNsps.namespaces, newNsps.nsps])\n )\n })\n }\n // return what input\n return { opts, nspMap, ee }\n}\n","// share method to create the wsClientResolver\n\nimport { createWsClient } from './create-ws-client'\nimport { createClient } from './create-client'\n\n/**\n * combine the create client resolver\n * @param {object} ws the different WebSocket module\n * @return {function} the wsClientResolver\n */\nexport default function createClientResolver(ws) {\n const client = createWsClient(ws)\n const authClient = createWsClient(ws, true)\n /**\n * wsClientResolver\n * @param {object} opts configuration\n * @param {object} nspMap from the contract\n * @param {object} ee instance of the eventEmitter\n * @return {object} passing the same 3 input out with additional in the opts\n */\n return function(opts, nspMap, ee) {\n opts.nspClient = client;\n opts.nspAuthClient = authClient;\n\n // console.log(`contract`, opts.contract)\n\n return createClient(opts, nspMap, ee)\n }\n}\n","// this will be the news style interface that will pass to the jsonql-ws-client\n// then return a function for accepting an opts to generate the final\n// client api\nimport WebSocket from 'ws'\nimport createClientResolver from './core/create-client-resolver'\n\n/**\n * @param {object} opts configuration\n * @param {object} nspMap from the contract\n * @param {object} ee instance of the eventEmitter\n * @return {object} passing the same 3 input out with additional in the opts\n */\nexport default createClientResolver(WebSocket)\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;ACAA;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"jsonql-ws-client.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 43798541..6bdaa4d0 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Vt(t,e){return t===e||t!=t&&e!=e}function Ht(t,e){for(var r=t.length;r--;)if(Vt(t[r][0],e))return r;return-1}var Yt=Array.prototype.splice;function Gt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Gt.prototype.set=function(t,e){var r=this.__data__,n=Ht(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Qt="[object AsyncFunction]",Xt="[object Function]",Zt="[object GeneratorFunction]",te="[object Proxy]";function ee(t){if(!Kt(t))return!1;var e=it(t);return e==Xt||e==Zt||e==Qt||e==te}var re,ne=K["__core-js_shared__"],oe=(re=/[^.]+$/.exec(ne&&ne.keys&&ne.keys.IE_PROTO||""))?"Symbol(src)_1."+re:"";var ae=Function.prototype.toString;function ie(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ue=/^\[object .+?Constructor\]$/,ce=Function.prototype,fe=Object.prototype,se=ce.toString,le=fe.hasOwnProperty,pe=RegExp("^"+se.call(le).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function he(t){return!(!Kt(t)||(e=t,oe&&oe in e))&&(ee(t)?pe:ue).test(ie(t));var e}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return he(r)?r:void 0}var de=ve(K,"Map"),ge=ve(Object,"create");var ye="__lodash_hash_undefined__",be=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var me="__lodash_hash_undefined__";function we(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=He}function Ge(t){return null!=t&&Ye(t.length)&&!ee(t)}var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qe=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,Xe=Qe&&Qe.exports===Ke?K.Buffer:void 0,Ze=(Xe?Xe.isBuffer:void 0)||function(){return!1},tr={};tr["[object Float32Array]"]=tr["[object Float64Array]"]=tr["[object Int8Array]"]=tr["[object Int16Array]"]=tr["[object Int32Array]"]=tr["[object Uint8Array]"]=tr["[object Uint8ClampedArray]"]=tr["[object Uint16Array]"]=tr["[object Uint32Array]"]=!0,tr["[object Arguments]"]=tr["[object Array]"]=tr["[object ArrayBuffer]"]=tr["[object Boolean]"]=tr["[object DataView]"]=tr["[object Date]"]=tr["[object Error]"]=tr["[object Function]"]=tr["[object Map]"]=tr["[object Number]"]=tr["[object Object]"]=tr["[object RegExp]"]=tr["[object Set]"]=tr["[object String]"]=tr["[object WeakMap]"]=!1;var er,rr="object"==typeof exports&&exports&&!exports.nodeType&&exports,nr=rr&&"object"==typeof module&&module&&!module.nodeType&&module,or=nr&&nr.exports===rr&&Y.process,ar=function(){try{var t=nr&&nr.require&&nr.require("util").types;return t||or&&or.binding&&or.binding("util")}catch(t){}}(),ir=ar&&ar.isTypedArray,ur=ir?(er=ir,function(t){return er(t)}):function(t){return ft(t)&&Ye(t.length)&&!!tr[it(t)]};function cr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var fr=Object.prototype.hasOwnProperty;function sr(t,e,r){var n=t[e];fr.call(t,e)&&Vt(n,r)&&(void 0!==r||e in t)||$e(t,e,r)}var lr=9007199254740991,pr=/^(?:0|[1-9]\d*)$/;function hr(t,e){var r=typeof t;return!!(e=null==e?lr:e)&&("number"==r||"symbol"!=r&&pr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=kr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Er);function Pr(t,e){return Ar(function(t,e,r){return e=Sr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Sr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Nr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Kt(r))return!1;var n=typeof e;return!!("number"==n?Ge(r)&&hr(e,r.length):"string"==n&&e in r)&&Vt(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&Zr?new Kr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Fo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Lo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ro(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Mo(r,t)})).length},Wo=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Ir(r)||(!1!==(e=Fo(t))?!Lo({arg:r},e):!Ro(t)(r))})).length)})).length}return!1},Io=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Wo.apply(null,n)};function Jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Uo=function(t,e){var r;switch(!0){case"object"===t:return!Io(e);case"array"===t:return!Mo(e.arg);case!1!==(r=Fo(t)):return!Lo(e,r);default:return!Ro(t)(e.arg)}},Do=function(t,e){return Ir(t)?!0!==e.optional||Ir(e.defaultvalue)?null:e.defaultvalue:t},Bo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Mo(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(!Mo(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 Jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Jo(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:Jo(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?Do(t,i):t,index:r,param:i,optional:a}}));default:throw Jo(5),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!!So(e)&&!(r.type.length>r.type.filter((function(e){return Uo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Uo(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Vo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ho=function(t){return!So(t)};function Yo(t,e){var r=Oo(e,(function(t,e){return!t[qo]}));return Bn(r,{})?t:function(t,e){var r={};return e=yo(e),Yr(t,(function(t,n,o){$e(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,yo((function(t){return t.alias===e})),Yr)||e}))}function Go(t,e){return bo(e,(function(e,r){var n,o;return Ir(t[r])||!0===e[Po]&&Ho(t[r])?zr({},e,((n={})[Co]=!0,n)):((o={})[zo]=t[r],o[Ao]=e[Ao],o[Po]=e[Po]||!1,o[No]=e[No]||!1,o[xo]=e[xo]||!1,o)}))}function Ko(t,e){var r=function(t,e){var r=Yo(t,e);return{pristineValues:bo(Oo(e,(function(t,e){return Vo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Oo(e,(function(t,e){return!Vo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Go(n,r.checkAgainstAppProps),o]}var Qo=function(t){return Mo(t)?t:[t]};var Xo=function(t,e){return!Mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Zo=function(t,e){try{return!!ee(e)&&e.apply(null,[t])}catch(t){return!1}};function ta(t){return function(e,r){if(e[Co])return e[zo];var n=function(t,e){var r,n=[[t[zo]],[(r={},r[Ao]=Qo(t[Ao]),r[Po]=t[Po],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Jo("runValidationAction",r,e),new h(r,n);if(!1!==e[No]&&!Xo(e[zo],e[No]))throw Jo(No,e[No]),new p(r);if(!1!==e[xo]&&!Zo(e[zo],e[xo]))throw Jo(xo,e[xo]),new v(r);return e[zo]}}var ea=function(t,e){return Promise.resolve(Ko(t,e))};function ra(t,e,r,n){return void 0===t&&(t={}),ea(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=bo(r,ta(e));return zr(o,n)}(t,n)})).then((function(t){return zr({},t,r)}))}function na(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Mo(n)&&(i[S]=n),ee(o)&&(i[k]=o),Mr(a)&&(i[$]=a),i}var oa=ko,aa=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Bo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ia=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return na.apply(null,[t,e,n,o,a,i])},ua=function(t){return function(e,r,n){return void 0===n&&(n={}),ra(e,r,n,t)}}(Bo),ca=Vo,fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Cr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Cr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=function(t){if("function"==typeof t)return!0;console.error("Expect a function!")},ja=sa("respondHandler");function Oa(t,e,r){Ut(t,y)?(ja("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(ja("-- resolver called --",t[g]),e(t[g])):(ja("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Sa=sa("action-call");function Ea(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Sa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Sa("got the first result",t),Oa(t,n,o)}))}))}var ka=sa("setup-send"),$a=function(t,e,r,n,o){return xr(t,"send",(function(t){ka("got payload for",t),aa(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Ea(e,r,n,t);ka("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){ka("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return aa(t,o.params,!0).then((function(t){return Ea(e,r,n,t)})).catch(U)}}))},Ta=(sa("setup-resolver"),function(t,e,r,n,o){return[qr(t,"myNamespace",r),e,r,n,o]}),Aa=function(t,e,r,n,o){return[xr(t,R,(function(t){wa(t)&&e.$on(Dt(r,n,R),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Pa=function(t,e,r,n,o){return[xr(t,"onMessage",(function(t){if(wa(t)){e.$only(Dt(r,n,"onMessage"),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Na=function(t,e,r,n,o){return[xr(t,M,(function(t){wa(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function za(t,e,r,n,o){var a=[n,o,t,e,r],i=Bt(Ta,Aa,Pa,Na,$a);return Reflect.apply(i,null,a)}var xa=sa("resolver-methods");function qa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return aa(o,n.params,!0).then((function(n){return Ea(t,e,r,n)})).catch(U)}}var Ca;sa("generator");function Ra(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=qa(r,a,u,c);n[u]=za(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return xr(t,M,(function(t){if(wa(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return xr(t,F,(function(t){wa(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?xr(t,L,(function(t){wa(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(xa(r.loginHandlerName,t),t&&oa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ma={loginHandlerName:ia("login",["string"]),logoutHandlerName:ia("logout",["string"]),useJwt:ia(!0,["boolean","string"]),hostname:ia(!1,["string"]),namespace:ia(b,["string"]),wsOptions:ia({},["object"]),contract:ia({},["object"],(Ca={},Ca[k]=Wr,Ca)),enableAuth:ia(!1,["boolean"]),token:ia(!1,["string"])},Fa=sa("check-options"),La={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Wa={version:"version: 0.5.0 module: umd",serverType:"ws"},Ia=null;"undefined"!=typeof WebSocket?Ia=WebSocket:"undefined"!=typeof MozWebSocket?Ia=MozWebSocket:void 0!==u?Ia=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Ia=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ia=self.WebSocket||self.MozWebSocket);var Ja=Ia,Ua=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 Da(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ua(e))}:function(e,r){var n=Ua(e),o=r&&"string"==typeof r?n+"?"+W+"="+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 Va=sa("client-event-handler"),Ha=function(t,e){e.$only(Dt(t,B),(function(r,n){Va("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},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]){Va("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Ha(o,r)})),r.$on(P,(function(){Va("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Ha(t,r)}))}))}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 ca(e,t)})).length===Ka.length&&e)}(oa(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=sa("ws-main-handler"),Za="onMessage",ti=R,ei=B,ri=function(t,e,r,n){var o=[e];r&&(Xa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ni(t,e,r,n){e.onopen=function(){Xa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ei),(function(t,r){Xa("calling server",t,r),e.send(Lr(t,r))}))},e.onmessage=function(e){try{var n=Qa(e),o=n.resolverName,a=n.type;switch(Xa("Hear from server",a,n),a){case N:var i=Dt(t,o,Za),u=r.$trigger(i,[n]);Xa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,ti);r.$trigger(c,[n]);Xa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Xa("ERROR_TYPE"),ri(r,t,o,n);break;default:Xa("Unhandled event!",n),ri(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ri(r,t,!1,e)}},e.onclose=function(){Xa("ws.onclose callback")},r.$on(P,(function(){try{Xa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var oi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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){return void 0===e&&(e={}),function(r){var n=r.eventEmitter;return function(t,e){return ua(t,Ma,Object.assign(La,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Fa("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ra(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Da(t),r=Da(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ni],o=t.token,a=oi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ga,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=oi(t,e,o);Reflect.apply(Ga,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ja),Wa)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Vt(t,e){return t===e||t!=t&&e!=e}function Ht(t,e){for(var r=t.length;r--;)if(Vt(t[r][0],e))return r;return-1}var Yt=Array.prototype.splice;function Gt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Gt.prototype.set=function(t,e){var r=this.__data__,n=Ht(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Qt="[object AsyncFunction]",Xt="[object Function]",Zt="[object GeneratorFunction]",te="[object Proxy]";function ee(t){if(!Kt(t))return!1;var e=it(t);return e==Xt||e==Zt||e==Qt||e==te}var re,ne=K["__core-js_shared__"],oe=(re=/[^.]+$/.exec(ne&&ne.keys&&ne.keys.IE_PROTO||""))?"Symbol(src)_1."+re:"";var ae=Function.prototype.toString;function ie(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ue=/^\[object .+?Constructor\]$/,ce=Function.prototype,fe=Object.prototype,se=ce.toString,le=fe.hasOwnProperty,pe=RegExp("^"+se.call(le).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function he(t){return!(!Kt(t)||(e=t,oe&&oe in e))&&(ee(t)?pe:ue).test(ie(t));var e}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return he(r)?r:void 0}var de=ve(K,"Map"),ge=ve(Object,"create");var ye="__lodash_hash_undefined__",be=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var me="__lodash_hash_undefined__";function we(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=He}function Ge(t){return null!=t&&Ye(t.length)&&!ee(t)}var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qe=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,Xe=Qe&&Qe.exports===Ke?K.Buffer:void 0,Ze=(Xe?Xe.isBuffer:void 0)||function(){return!1},tr={};tr["[object Float32Array]"]=tr["[object Float64Array]"]=tr["[object Int8Array]"]=tr["[object Int16Array]"]=tr["[object Int32Array]"]=tr["[object Uint8Array]"]=tr["[object Uint8ClampedArray]"]=tr["[object Uint16Array]"]=tr["[object Uint32Array]"]=!0,tr["[object Arguments]"]=tr["[object Array]"]=tr["[object ArrayBuffer]"]=tr["[object Boolean]"]=tr["[object DataView]"]=tr["[object Date]"]=tr["[object Error]"]=tr["[object Function]"]=tr["[object Map]"]=tr["[object Number]"]=tr["[object Object]"]=tr["[object RegExp]"]=tr["[object Set]"]=tr["[object String]"]=tr["[object WeakMap]"]=!1;var er,rr="object"==typeof exports&&exports&&!exports.nodeType&&exports,nr=rr&&"object"==typeof module&&module&&!module.nodeType&&module,or=nr&&nr.exports===rr&&Y.process,ar=function(){try{var t=nr&&nr.require&&nr.require("util").types;return t||or&&or.binding&&or.binding("util")}catch(t){}}(),ir=ar&&ar.isTypedArray,ur=ir?(er=ir,function(t){return er(t)}):function(t){return ft(t)&&Ye(t.length)&&!!tr[it(t)]};function cr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var fr=Object.prototype.hasOwnProperty;function sr(t,e,r){var n=t[e];fr.call(t,e)&&Vt(n,r)&&(void 0!==r||e in t)||$e(t,e,r)}var lr=9007199254740991,pr=/^(?:0|[1-9]\d*)$/;function hr(t,e){var r=typeof t;return!!(e=null==e?lr:e)&&("number"==r||"symbol"!=r&&pr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=kr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Er);function Pr(t,e){return Ar(function(t,e,r){return e=Sr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Sr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Nr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Kt(r))return!1;var n=typeof e;return!!("number"==n?Ge(r)&&hr(e,r.length):"string"==n&&e in r)&&Vt(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&Zr?new Kr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Fo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Lo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ro(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Mo(r,t)})).length},Wo=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Ir(r)||(!1!==(e=Fo(t))?!Lo({arg:r},e):!Ro(t)(r))})).length)})).length}return!1},Io=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Wo.apply(null,n)};function Jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Uo=function(t,e){var r;switch(!0){case"object"===t:return!Io(e);case"array"===t:return!Mo(e.arg);case!1!==(r=Fo(t)):return!Lo(e,r);default:return!Ro(t)(e.arg)}},Do=function(t,e){return Ir(t)?!0!==e.optional||Ir(e.defaultvalue)?null:e.defaultvalue:t},Bo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Mo(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(!Mo(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 Jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Jo(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:Jo(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?Do(t,i):t,index:r,param:i,optional:a}}));default:throw Jo(5),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!!So(e)&&!(r.type.length>r.type.filter((function(e){return Uo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Uo(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Vo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ho=function(t){return!So(t)};function Yo(t,e){var r=Oo(e,(function(t,e){return!t[qo]}));return Bn(r,{})?t:function(t,e){var r={};return e=yo(e),Yr(t,(function(t,n,o){$e(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,yo((function(t){return t.alias===e})),Yr)||e}))}function Go(t,e){return bo(e,(function(e,r){var n,o;return Ir(t[r])||!0===e[Po]&&Ho(t[r])?zr({},e,((n={})[Co]=!0,n)):((o={})[zo]=t[r],o[Ao]=e[Ao],o[Po]=e[Po]||!1,o[No]=e[No]||!1,o[xo]=e[xo]||!1,o)}))}function Ko(t,e){var r=function(t,e){var r=Yo(t,e);return{pristineValues:bo(Oo(e,(function(t,e){return Vo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Oo(e,(function(t,e){return!Vo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Go(n,r.checkAgainstAppProps),o]}var Qo=function(t){return Mo(t)?t:[t]};var Xo=function(t,e){return!Mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Zo=function(t,e){try{return!!ee(e)&&e.apply(null,[t])}catch(t){return!1}};function ta(t){return function(e,r){if(e[Co])return e[zo];var n=function(t,e){var r,n=[[t[zo]],[(r={},r[Ao]=Qo(t[Ao]),r[Po]=t[Po],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Jo("runValidationAction",r,e),new h(r,n);if(!1!==e[No]&&!Xo(e[zo],e[No]))throw Jo(No,e[No]),new p(r);if(!1!==e[xo]&&!Zo(e[zo],e[xo]))throw Jo(xo,e[xo]),new v(r);return e[zo]}}var ea=function(t,e){return Promise.resolve(Ko(t,e))};function ra(t,e,r,n){return void 0===t&&(t={}),ea(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=bo(r,ta(e));return zr(o,n)}(t,n)})).then((function(t){return zr({},t,r)}))}function na(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Mo(n)&&(i[S]=n),ee(o)&&(i[k]=o),Mr(a)&&(i[$]=a),i}var oa=ko,aa=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Bo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ia=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return na.apply(null,[t,e,n,o,a,i])},ua=function(t){return function(e,r,n){return void 0===n&&(n={}),ra(e,r,n,t)}}(Bo),ca=Vo,fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Cr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Cr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=function(t){if("function"==typeof t)return!0;console.error("Expect a function!")},ja=sa("respondHandler");function Oa(t,e,r){Ut(t,y)?(ja("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(ja("-- resolver called --",t[g]),e(t[g])):(ja("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Sa=sa("action-call");function Ea(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Sa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Sa("got the first result",t),Oa(t,n,o)}))}))}var ka=sa("setup-send"),$a=function(t,e,r,n,o){return xr(t,"send",(function(t){ka("got payload for",t),aa(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Ea(e,r,n,t);ka("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){ka("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return aa(t,o.params,!0).then((function(t){return Ea(e,r,n,t)})).catch(U)}}))},Ta=(sa("setup-resolver"),function(t,e,r,n,o){return[qr(t,"myNamespace",r),e,r,n,o]}),Aa=function(t,e,r,n,o){return[xr(t,R,(function(t){wa(t)&&e.$on(Dt(r,n,R),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Pa=function(t,e,r,n,o){return[xr(t,"onMessage",(function(t){if(wa(t)){e.$only(Dt(r,n,"onMessage"),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Na=function(t,e,r,n,o){return[xr(t,M,(function(t){wa(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function za(t,e,r,n,o){var a=[n,o,t,e,r],i=Bt(Ta,Aa,Pa,Na,$a);return Reflect.apply(i,null,a)}var xa=sa("resolver-methods");function qa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return aa(o,n.params,!0).then((function(n){return Ea(t,e,r,n)})).catch(U)}}var Ca;sa("generator");function Ra(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=qa(r,a,u,c);n[u]=za(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return xr(t,M,(function(t){if(wa(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return xr(t,F,(function(t){wa(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?xr(t,L,(function(t){wa(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(xa(r.loginHandlerName,t),t&&oa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ma={loginHandlerName:ia("login",["string"]),logoutHandlerName:ia("logout",["string"]),useJwt:ia(!0,["boolean","string"]),hostname:ia(!1,["string"]),namespace:ia(b,["string"]),wsOptions:ia({},["object"]),contract:ia({},["object"],(Ca={},Ca[k]=Wr,Ca)),enableAuth:ia(!1,["boolean"]),token:ia(!1,["string"])},Fa=sa("check-options"),La={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Wa={version:"version: 0.6.0 module: umd",serverType:"ws"},Ia=null;"undefined"!=typeof WebSocket?Ia=WebSocket:"undefined"!=typeof MozWebSocket?Ia=MozWebSocket:void 0!==u?Ia=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Ia=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ia=self.WebSocket||self.MozWebSocket);var Ja=Ia,Ua=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 Da(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ua(e))}:function(e,r){var n=Ua(e),o=r&&"string"==typeof r?n+"?"+W+"="+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 Va=sa("client-event-handler"),Ha=function(t,e){e.$only(Dt(t,B),(function(r,n){Va("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},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]){Va("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Ha(o,r)})),r.$on(P,(function(){Va("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Ha(t,r)}))}))}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 ca(e,t)})).length===Ka.length&&e)}(oa(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=sa("ws-main-handler"),Za="onMessage",ti=R,ei=B,ri=function(t,e,r,n){var o=[e];r&&(Xa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ni(t,e,r,n){e.onopen=function(){Xa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ei),(function(t,r){Xa("calling server",t,r),e.send(Lr(t,r))}))},e.onmessage=function(e){try{var n=Qa(e),o=n.resolverName,a=n.type;switch(Xa("Hear from server",a,n),a){case N:var i=Dt(t,o,Za),u=r.$trigger(i,[n]);Xa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,ti);r.$trigger(c,[n]);Xa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Xa("ERROR_TYPE"),ri(r,t,o,n);break;default:Xa("Unhandled event!",n),ri(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ri(r,t,!1,e)}},e.onclose=function(){Xa("ws.onclose callback")},r.$on(P,(function(){try{Xa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var oi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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){return void 0===e&&(e={}),function(r){var n=r.eventEmitter;return function(t,e){return ua(t,Ma,Object.assign(La,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Fa("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ra(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Da(t),r=Da(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ni],o=t.token,a=oi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ga,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=oi(t,e,o);Reflect.apply(Ga,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ja),Wa)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map -- Gitee From 6035feb3e322bb07d0e0c9d6808e349ede7be5d1 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 22:24:24 +0800 Subject: [PATCH 06/44] change the isKeyInObject to isObjectHasKey because the parameter order make more sense --- packages/@jsonql/client/package.json | 10 +--------- packages/@jsonql/http-client/src/jsonql-utils.js | 14 +++++++------- packages/@jsonql/http-client/tests/fn.test.js | 10 +++++----- packages/@jsonql/koa/src/contracts/helpers.js | 6 +++--- .../@jsonql/koa/src/options/process-jwt-keys.js | 4 ++-- packages/@jsonql/koa/src/utils/index.js | 4 ++-- .../@jsonql/socketio/src/io/io-main-handler.js | 2 +- packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- packages/@jsonql/ws/old/ws/extract-ws-payload.js | 4 ++-- packages/@jsonql/ws/src/core/extract-ws-payload.js | 4 ++-- packages/contract-cli/src/generator/helpers.js | 2 +- packages/errors/dist/jsonql-errors.cjs.js | 2 +- packages/errors/src/client-errors-handler.js | 4 ++-- packages/errors/tests/main.test.js | 6 +++--- packages/http-client/package.json | 6 ++++-- packages/http-client/src/jsonql-utils.js | 14 +++++++------- packages/http-client/src/utils.js | 11 +++++++++-- packages/http-client/tests/fn.test.js | 10 +++++----- .../koa/previous/cjs-src/contract-middleware.js | 6 +++--- .../cjs-src/lib/config-check/process-jwt-keys.js | 4 ++-- packages/koa/src/contracts/helpers.js | 6 +++--- packages/koa/src/options/process-jwt-keys.js | 4 ++-- packages/koa/src/utils/index.js | 4 ++-- packages/node-client/src/utils.js | 4 ++-- packages/utils/README.md | 2 +- packages/utils/browser.js | 2 +- packages/utils/index.js | 4 ++-- packages/utils/main.js | 2 +- packages/utils/module.js | 8 +++++--- packages/utils/package.json | 2 +- packages/utils/src/contract.js | 10 +++++----- packages/utils/src/generic.js | 14 +++++++++++++- packages/utils/src/node-middleware.js | 2 +- packages/utils/src/results.js | 8 ++++---- packages/utils/tests/construct.test.js | 10 +++++----- .../validator/dist/jsonql-params-validator.cjs.js | 2 +- .../validator/dist/jsonql-params-validator.umd.js | 2 +- packages/validator/index.js | 4 ++-- packages/validator/src/is-key-in-object.js | 4 ++-- .../src/options/prepare-args-for-validation.js | 6 +++--- packages/ws-base/src/client/generator.js | 6 +++--- packages/ws-base/src/client/node/main.cjs.js | 10 +++++----- packages/ws-base/src/server/share/helpers.js | 4 ++-- packages/ws-client/src/core/resolver-methods.js | 2 +- packages/ws-client/src/core/respond-handler.js | 6 +++--- .../ws-client/tests/fixtures/beta/src/generator.js | 6 +++--- .../tests/fixtures/beta/src/io/io-main-handler.js | 2 +- .../tests/fixtures/beta/src/node/main.cjs.js | 10 +++++----- .../fixtures/beta/src/ws/extract-ws-payload.js | 4 ++-- packages/ws-server/src/share/helpers.js | 4 ++-- 50 files changed, 147 insertions(+), 132 deletions(-) diff --git a/packages/@jsonql/client/package.json b/packages/@jsonql/client/package.json index 3adfaad0..0807de53 100644 --- a/packages/@jsonql/client/package.json +++ b/packages/@jsonql/client/package.json @@ -49,15 +49,7 @@ }, "license": "MIT", "dependencies": { - "flyio": "^0.6.14", - "jsonql-constants": "^1.8.3", - "jsonql-errors": "^1.1.3", - "jsonql-jwt": "^1.3.2", - "jsonql-params-validator": "^1.4.11", - "jsonql-utils": "^0.6.10", - "lodash-es": "^4.17.15", - "nb-event-service": "^1.8.3", - "store": "^2.0.12" + }, "devDependencies": { "@jsonql/koa": "^0.2.6", diff --git a/packages/@jsonql/http-client/src/jsonql-utils.js b/packages/@jsonql/http-client/src/jsonql-utils.js index ed715d81..a6189da4 100644 --- a/packages/@jsonql/http-client/src/jsonql-utils.js +++ b/packages/@jsonql/http-client/src/jsonql-utils.js @@ -743,7 +743,7 @@ var inArray = function (arr, value) { return !!arr.filter(function (a) { return * @param {string} key target * @return {boolean} true on success */ -var isKeyInObject = function(obj, key) { +var isObjectHasKey = function(obj, key) { var keys = Object.keys(obj); return inArray(keys, key) }; @@ -1035,9 +1035,9 @@ var JsonqlError = /*@__PURE__*/(function (JsonqlBaseError) { function checkIsContract(contract) { return isPlainObject(contract) && ( - isKeyInObject(contract, QUERY_NAME) - || isKeyInObject(contract, MUTATION_NAME) - || isKeyInObject(contract, SOCKET_NAME) + isObjectHasKey(contract, QUERY_NAME) + || isObjectHasKey(contract, MUTATION_NAME) + || isObjectHasKey(contract, SOCKET_NAME) ) } @@ -1048,7 +1048,7 @@ function checkIsContract(contract) { * @return {object|boolean} false on failed */ function extractSocketPart(contract) { - if (isKeyInObject(contract, 'socket')) { + if (isObjectHasKey(contract, 'socket')) { return contract.socket; } return false; @@ -1355,7 +1355,7 @@ var packError = function(detail, className, statusCode, message) { * @return {object} strip the data part out, or if the error is presented */ var resultHandler = function (result) { return ( - (isKeyInObject(result, DATA_KEY) && !isKeyInObject(result, ERROR_KEY)) ? result[DATA_KEY] : result + (isObjectHasKey(result, DATA_KEY) && !isObjectHasKey(result, ERROR_KEY)) ? result[DATA_KEY] : result ); }; // exportfor ES modules @@ -1364,4 +1364,4 @@ var resultHandler = function (result) { return ( var isContract = checkIsContract; var VERSION = '0.6.9'; -export { VERSION, cacheBurst, cacheBurstUrl, chainFns, chainPromises, checkIsContract, createEvt, createMutation, createMutationStr, createQuery, createQueryStr, dasherize, extractArgsFromPayload, extractParamsFromContract, extractSocketPart, formatPayload, getCallMethod, getConfigValue, getMutationFromArgs, getMutationFromPayload, getNameFromPayload, getQueryFromArgs, getQueryFromPayload, groupByNamespace, inArray, injectToFn, isContract, isKeyInObject, isNotEmpty, objDefineProps, packError, packResult, resultHandler, timestamp, toPayload, urlParams }; +export { VERSION, cacheBurst, cacheBurstUrl, chainFns, chainPromises, checkIsContract, createEvt, createMutation, createMutationStr, createQuery, createQueryStr, dasherize, extractArgsFromPayload, extractParamsFromContract, extractSocketPart, formatPayload, getCallMethod, getConfigValue, getMutationFromArgs, getMutationFromPayload, getNameFromPayload, getQueryFromArgs, getQueryFromPayload, groupByNamespace, inArray, injectToFn, isContract, isObjectHasKey, isNotEmpty, objDefineProps, packError, packResult, resultHandler, timestamp, toPayload, urlParams }; diff --git a/packages/@jsonql/http-client/tests/fn.test.js b/packages/@jsonql/http-client/tests/fn.test.js index 3bcebfc2..c142e515 100644 --- a/packages/@jsonql/http-client/tests/fn.test.js +++ b/packages/@jsonql/http-client/tests/fn.test.js @@ -1,14 +1,14 @@ const test = require('ava') -const { isKeyInObject } = require('jsonql-params-validator') +const { isObjectHasKey } = require('jsonql-params-validator') -test('It should have isKeyInObject exported', t => { +test('It should have isObjectHasKey exported', t => { const obj = {query: false, mutation: null, auth: true} - t.true(isKeyInObject(obj, 'query')) - t.true(isKeyInObject(obj, 'mutation')) + t.true(isObjectHasKey(obj, 'query')) + t.true(isObjectHasKey(obj, 'mutation')) - t.false(isKeyInObject(obj, 'socket')) + t.false(isObjectHasKey(obj, 'socket')) }) diff --git a/packages/@jsonql/koa/src/contracts/helpers.js b/packages/@jsonql/koa/src/contracts/helpers.js index 48d9badd..f05ffe5b 100644 --- a/packages/@jsonql/koa/src/contracts/helpers.js +++ b/packages/@jsonql/koa/src/contracts/helpers.js @@ -3,7 +3,7 @@ import { trim } from 'lodash' import { SHOW_CONTRACT_DESC_PARAM } from 'jsonql-constants' import { - isKeyInObject, + isObjectHasKey, getDebug, handleOutput, packResult, @@ -24,9 +24,9 @@ export const removeDesc = (showDesc, contract) => { let c = contract; for (let type in c) { for (let fn in c[type]) { - if (isKeyInObject(c[type][fn], 'description')) { + if (isObjectHasKey(c[type][fn], 'description')) { delete c[type][fn].description; - if (c[type][fn].returns && isKeyInObject(c[type][fn].returns, 'description')) { + if (c[type][fn].returns && isObjectHasKey(c[type][fn].returns, 'description')) { delete c[type][fn].returns.description; } } diff --git a/packages/@jsonql/koa/src/options/process-jwt-keys.js b/packages/@jsonql/koa/src/options/process-jwt-keys.js index ead53011..c8face10 100644 --- a/packages/@jsonql/koa/src/options/process-jwt-keys.js +++ b/packages/@jsonql/koa/src/options/process-jwt-keys.js @@ -7,7 +7,7 @@ import _ from 'lodash' import fsx from 'fs-extra' import { jwtProcessKey } from './options' -import { isKeyInObject } from '../utils' +import { isObjectHasKey } from '../utils' import { isString } from 'jsonql-params-validator' /** @@ -38,7 +38,7 @@ const getKeysFromCache = (ctx, config) => { * @return {mixed} boolean on failed or object on success */ const getCreatedKeys = (ctx, config) => { - if (isKeyInObject(config, jwtProcessKey) && config[jwtProcessKey].then) { + if (isObjectHasKey(config, jwtProcessKey) && config[jwtProcessKey].then) { const { setter } = ctx.state.jsonql; return config[jwtProcessKey] .then( result => _.extend( config, _.mapValues(result, value => fsx.readFileSync(value) ) ) ) diff --git a/packages/@jsonql/koa/src/utils/index.js b/packages/@jsonql/koa/src/utils/index.js index 23ab4017..de575455 100644 --- a/packages/@jsonql/koa/src/utils/index.js +++ b/packages/@jsonql/koa/src/utils/index.js @@ -5,7 +5,7 @@ import { isObject, isArray } from 'jsonql-params-validator' import { getDebug } from './utils' import { - isKeyInObject, + isObjectHasKey, chainFns, inArray, headerParser, @@ -44,7 +44,7 @@ export { isObject, isArray, - isKeyInObject, + isObjectHasKey, chainFns, inArray, headerParser, diff --git a/packages/@jsonql/socketio/src/io/io-main-handler.js b/packages/@jsonql/socketio/src/io/io-main-handler.js index 34116892..2ea6f1a7 100644 --- a/packages/@jsonql/socketio/src/io/io-main-handler.js +++ b/packages/@jsonql/socketio/src/io/io-main-handler.js @@ -11,7 +11,7 @@ import { DATA_KEY, ON_READY_PROP_NAME } from 'jsonql-constants' -import { isKeyInObject } from 'jsonql-params-validator' +import { isObjectHasKey } from 'jsonql-params-validator' import { getDebug, createEvt, formatPayload } from '../utils' const debugFn = getDebug('io-main-handler') diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 69b3277a..de019b4f 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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!",EXPECT_FUNC_ERR="Expect a function!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",isArray=Array.isArray,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]},isKeyInObject=function(e,r){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject$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 isKeyInObject$1(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject$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 constructConfigFn(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 constructConfigFn.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),isKeyInObject$2=isKeyInObject$1,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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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 isKeyInObject$2(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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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!",EXPECT_FUNC_ERR="Expect a function!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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 constructConfigFn(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 constructConfigFn.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),isObjectHasKey$2=isObjectHasKey$1,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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$2(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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/old/ws/extract-ws-payload.js b/packages/@jsonql/ws/old/ws/extract-ws-payload.js index 1a8412ba..df05a6ea 100644 --- a/packages/@jsonql/ws/old/ws/extract-ws-payload.js +++ b/packages/@jsonql/ws/old/ws/extract-ws-payload.js @@ -1,6 +1,6 @@ // take the ws reply data for use import { WS_EVT_NAME, WS_DATA_NAME, WS_REPLY_TYPE } from 'jsonql-constants' -import { isString, isKeyInObject } from 'jsonql-params-validator' +import { isString, isObjectHasKey } from 'jsonql-params-validator' import { JsonqlError, clientErrorsHandler } from 'jsonql-errors' import getDebug from '../utils/get-debug' @@ -15,7 +15,7 @@ const keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ] const isWsReply = payload => { const { data } = payload; if (data) { - let result = keys.filter(key => isKeyInObject(data, key)) + let result = keys.filter(key => isObjectHasKey(data, key)) return (result.length === keys.length) ? data : false; } return false; diff --git a/packages/@jsonql/ws/src/core/extract-ws-payload.js b/packages/@jsonql/ws/src/core/extract-ws-payload.js index e223ed47..bad045c9 100644 --- a/packages/@jsonql/ws/src/core/extract-ws-payload.js +++ b/packages/@jsonql/ws/src/core/extract-ws-payload.js @@ -1,6 +1,6 @@ // take the ws reply data for use import { WS_EVT_NAME, WS_DATA_NAME, WS_REPLY_TYPE } from 'jsonql-constants' -import { isString, isKeyInObject } from 'jsonql-params-validator' +import { isString, isObjectHasKey } from 'jsonql-params-validator' import { JsonqlError, clientErrorsHandler } from 'jsonql-errors' const keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ] @@ -12,7 +12,7 @@ const keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ] const isWsReply = payload => { const { data } = payload; if (data) { - let result = keys.filter(key => isKeyInObject(data, key)) + let result = keys.filter(key => isObjectHasKey(data, key)) return (result.length === keys.length) ? data : false; } return false; diff --git a/packages/contract-cli/src/generator/helpers.js b/packages/contract-cli/src/generator/helpers.js index a65bf0ce..02f9b6ea 100644 --- a/packages/contract-cli/src/generator/helpers.js +++ b/packages/contract-cli/src/generator/helpers.js @@ -2,7 +2,7 @@ const fsx = require('fs-extra') const { merge, extend, camelCase } = require('lodash') const { isObject } = require('jsonql-params-validator') -const { isKeyInObject, isContract } = require('jsonql-utils') +const { isObjectHasKey, isContract } = require('jsonql-utils') const { RESOLVER_TYPES, AUTH_TYPE, diff --git a/packages/errors/dist/jsonql-errors.cjs.js b/packages/errors/dist/jsonql-errors.cjs.js index 93be29ec..adcfd7b2 100644 --- a/packages/errors/dist/jsonql-errors.cjs.js +++ b/packages/errors/dist/jsonql-errors.cjs.js @@ -1,2 +1,2 @@ -"use strict";function getErrorByStatus(r,o){switch(void 0===o&&(o=!1),r){case 401:return o?"JsonqlContractAuthError":"JsonqlAuthorisationError";case 403:return"JsonqlForbiddenError";case 404:return"JsonqlResolverNotFoundError";case 406:return"Jsonql406Error";case 500:return"Jsonql500Error";default:return"JsonqlError"}}Object.defineProperty(exports,"__esModule",{value:!0});var Jsonql406Error=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 406},e.name.get=function(){return"Jsonql406Error"},Object.defineProperties(o,e),o}(Error),Jsonql500Error=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"Jsonql500Error"},Object.defineProperties(o,e),o}(Error),JsonqlAuthorisationError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(o,e),o}(Error),JsonqlContractAuthError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(o,e),o}(Error),JsonqlResolverAppError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(o,e),o}(Error),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},isBrowser=function(){try{if(window||document)return!0}catch(r){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(r){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(r){function o(){for(var o=[],e=arguments.length;e--;)o[e]=arguments[e];r.apply(this,o)}return r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o,o.where=function(){return whereAmI()},o}(Error),JsonqlResolverNotFoundError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,Error.captureStackTrace&&Error.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 404},e.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(o,e),o}(JsonqlBaseError),JsonqlEnumError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(o,e),o}(Error),JsonqlTypeError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(o,e),o}(Error),JsonqlCheckerError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(o,e),o}(Error),JsonqlValidationError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,Error.captureStackTrace&&Error.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(o,e),o}(JsonqlBaseError),NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,JsonqlError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,Error.captureStackTrace&&Error.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(o,e),o}(JsonqlBaseError),JsonqlServerError=function(r){function o(e,t){r.call(this,t),this.statusCode=e,this.className=o.name}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlServerError"},Object.defineProperties(o,e),o}(Error),errors=Object.freeze({Jsonql406Error:Jsonql406Error,Jsonql500Error:Jsonql500Error,JsonqlAuthorisationError:JsonqlAuthorisationError,JsonqlContractAuthError:JsonqlContractAuthError,JsonqlResolverAppError:JsonqlResolverAppError,JsonqlResolverNotFoundError:JsonqlResolverNotFoundError,JsonqlEnumError:JsonqlEnumError,JsonqlTypeError:JsonqlTypeError,JsonqlCheckerError:JsonqlCheckerError,JsonqlValidationError:JsonqlValidationError,JsonqlError:JsonqlError,JsonqlServerError:JsonqlServerError}),JsonqlError$1=JsonqlError,isKeyInObject=function(r,o){return!!Object.keys(r).filter(function(r){return o===r}).length};function clientErrorsHandler(r){if(isKeyInObject(r,"error")){var o=r.error,e=o.className,t=o.name,n=e||t,s=o.message||NO_ERROR_MSG,a=o.detail||o;if(n&&errors[n])throw new errors[e](s,a);throw new JsonqlError$1(s,a)}return r}var UNKNOWN_ERROR="unknown";function mapErrToName(r,o){return r.filter(function(r){return o instanceof r}).map(function(r){return r.name})}function getErrorNameByInstance(r,o){var e=mapErrToName(r,o);return e.length?e[0]:UNKNOWN_ERROR}function getErrorNameByInstanceWithDefault(r,o){var e=getErrorNameByInstance(r,o);return e===UNKNOWN_ERROR?"JsonqlError":e}function finalCatch(r){if(Array.isArray(r))throw new JsonqlValidationError("",r);var o=r.message||NO_ERROR_MSG,e=r.detail||r;switch(!0){case r instanceof Jsonql406Error:throw new Jsonql406Error(o,e);case r instanceof Jsonql500Error:throw new Jsonql500Error(o,e);case r instanceof JsonqlAuthorisationError:throw new JsonqlAuthorisationError(o,e);case r instanceof JsonqlContractAuthError:throw new JsonqlContractAuthError(o,e);case r instanceof JsonqlResolverAppError:throw new JsonqlResolverAppError(o,e);case r instanceof JsonqlResolverNotFoundError:throw new JsonqlResolverNotFoundError(o,e);case r instanceof JsonqlEnumError:throw new JsonqlEnumError(o,e);case r instanceof JsonqlTypeError:throw new JsonqlTypeError(o,e);case r instanceof JsonqlCheckerError:throw new JsonqlCheckerError(o,e);case r instanceof JsonqlValidationError:throw new JsonqlValidationError(o,e);case r instanceof JsonqlServerError:throw new JsonqlServerError(o,e);default:throw new JsonqlError(o,e)}}var JSONQL_ERRORS_INFO="version: 1.1.3 module: cjs";exports.JSONQL_ERRORS_INFO=JSONQL_ERRORS_INFO,exports.Jsonql406Error=Jsonql406Error,exports.Jsonql500Error=Jsonql500Error,exports.JsonqlAuthorisationError=JsonqlAuthorisationError,exports.JsonqlCheckerError=JsonqlCheckerError,exports.JsonqlContractAuthError=JsonqlContractAuthError,exports.JsonqlEnumError=JsonqlEnumError,exports.JsonqlError=JsonqlError,exports.JsonqlResolverAppError=JsonqlResolverAppError,exports.JsonqlResolverNotFoundError=JsonqlResolverNotFoundError,exports.JsonqlServerError=JsonqlServerError,exports.JsonqlTypeError=JsonqlTypeError,exports.JsonqlValidationError=JsonqlValidationError,exports.UNKNOWN_ERROR=UNKNOWN_ERROR,exports.clientErrorsHandler=clientErrorsHandler,exports.finalCatch=finalCatch,exports.getErrorByStatus=getErrorByStatus,exports.getErrorNameByInstance=getErrorNameByInstance,exports.getErrorNameByInstanceWithDefault=getErrorNameByInstanceWithDefault; +"use strict";function getErrorByStatus(r,o){switch(void 0===o&&(o=!1),r){case 401:return o?"JsonqlContractAuthError":"JsonqlAuthorisationError";case 403:return"JsonqlForbiddenError";case 404:return"JsonqlResolverNotFoundError";case 406:return"Jsonql406Error";case 500:return"Jsonql500Error";default:return"JsonqlError"}}Object.defineProperty(exports,"__esModule",{value:!0});var Jsonql406Error=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 406},e.name.get=function(){return"Jsonql406Error"},Object.defineProperties(o,e),o}(Error),Jsonql500Error=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"Jsonql500Error"},Object.defineProperties(o,e),o}(Error),JsonqlAuthorisationError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(o,e),o}(Error),JsonqlContractAuthError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(o,e),o}(Error),JsonqlResolverAppError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(o,e),o}(Error),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},isBrowser=function(){try{if(window||document)return!0}catch(r){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(r){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(r){function o(){for(var o=[],e=arguments.length;e--;)o[e]=arguments[e];r.apply(this,o)}return r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o,o.where=function(){return whereAmI()},o}(Error),JsonqlResolverNotFoundError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,Error.captureStackTrace&&Error.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 404},e.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(o,e),o}(JsonqlBaseError),JsonqlEnumError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(o,e),o}(Error),JsonqlTypeError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(o,e),o}(Error),JsonqlCheckerError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,r.captureStackTrace&&r.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(o,e),o}(Error),JsonqlValidationError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,Error.captureStackTrace&&Error.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(o,e),o}(JsonqlBaseError),NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,JsonqlError=function(r){function o(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];r.apply(this,e),this.message=e[0],this.detail=e[1],this.className=o.name,Error.captureStackTrace&&Error.captureStackTrace(this,o)}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(o,e),o}(JsonqlBaseError),JsonqlServerError=function(r){function o(e,t){r.call(this,t),this.statusCode=e,this.className=o.name}r&&(o.__proto__=r),o.prototype=Object.create(r&&r.prototype),o.prototype.constructor=o;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlServerError"},Object.defineProperties(o,e),o}(Error),errors=Object.freeze({Jsonql406Error:Jsonql406Error,Jsonql500Error:Jsonql500Error,JsonqlAuthorisationError:JsonqlAuthorisationError,JsonqlContractAuthError:JsonqlContractAuthError,JsonqlResolverAppError:JsonqlResolverAppError,JsonqlResolverNotFoundError:JsonqlResolverNotFoundError,JsonqlEnumError:JsonqlEnumError,JsonqlTypeError:JsonqlTypeError,JsonqlCheckerError:JsonqlCheckerError,JsonqlValidationError:JsonqlValidationError,JsonqlError:JsonqlError,JsonqlServerError:JsonqlServerError}),JsonqlError$1=JsonqlError,isObjectHasKey=function(r,o){return!!Object.keys(r).filter(function(r){return o===r}).length};function clientErrorsHandler(r){if(isObjectHasKey(r,"error")){var o=r.error,e=o.className,t=o.name,n=e||t,s=o.message||NO_ERROR_MSG,a=o.detail||o;if(n&&errors[n])throw new errors[e](s,a);throw new JsonqlError$1(s,a)}return r}var UNKNOWN_ERROR="unknown";function mapErrToName(r,o){return r.filter(function(r){return o instanceof r}).map(function(r){return r.name})}function getErrorNameByInstance(r,o){var e=mapErrToName(r,o);return e.length?e[0]:UNKNOWN_ERROR}function getErrorNameByInstanceWithDefault(r,o){var e=getErrorNameByInstance(r,o);return e===UNKNOWN_ERROR?"JsonqlError":e}function finalCatch(r){if(Array.isArray(r))throw new JsonqlValidationError("",r);var o=r.message||NO_ERROR_MSG,e=r.detail||r;switch(!0){case r instanceof Jsonql406Error:throw new Jsonql406Error(o,e);case r instanceof Jsonql500Error:throw new Jsonql500Error(o,e);case r instanceof JsonqlAuthorisationError:throw new JsonqlAuthorisationError(o,e);case r instanceof JsonqlContractAuthError:throw new JsonqlContractAuthError(o,e);case r instanceof JsonqlResolverAppError:throw new JsonqlResolverAppError(o,e);case r instanceof JsonqlResolverNotFoundError:throw new JsonqlResolverNotFoundError(o,e);case r instanceof JsonqlEnumError:throw new JsonqlEnumError(o,e);case r instanceof JsonqlTypeError:throw new JsonqlTypeError(o,e);case r instanceof JsonqlCheckerError:throw new JsonqlCheckerError(o,e);case r instanceof JsonqlValidationError:throw new JsonqlValidationError(o,e);case r instanceof JsonqlServerError:throw new JsonqlServerError(o,e);default:throw new JsonqlError(o,e)}}var JSONQL_ERRORS_INFO="version: 1.1.3 module: cjs";exports.JSONQL_ERRORS_INFO=JSONQL_ERRORS_INFO,exports.Jsonql406Error=Jsonql406Error,exports.Jsonql500Error=Jsonql500Error,exports.JsonqlAuthorisationError=JsonqlAuthorisationError,exports.JsonqlCheckerError=JsonqlCheckerError,exports.JsonqlContractAuthError=JsonqlContractAuthError,exports.JsonqlEnumError=JsonqlEnumError,exports.JsonqlError=JsonqlError,exports.JsonqlResolverAppError=JsonqlResolverAppError,exports.JsonqlResolverNotFoundError=JsonqlResolverNotFoundError,exports.JsonqlServerError=JsonqlServerError,exports.JsonqlTypeError=JsonqlTypeError,exports.JsonqlValidationError=JsonqlValidationError,exports.UNKNOWN_ERROR=UNKNOWN_ERROR,exports.clientErrorsHandler=clientErrorsHandler,exports.finalCatch=finalCatch,exports.getErrorByStatus=getErrorByStatus,exports.getErrorNameByInstance=getErrorNameByInstance,exports.getErrorNameByInstanceWithDefault=getErrorNameByInstanceWithDefault; //# sourceMappingURL=jsonql-errors.cjs.js.map diff --git a/packages/errors/src/client-errors-handler.js b/packages/errors/src/client-errors-handler.js index d8025689..f157fdd9 100644 --- a/packages/errors/src/client-errors-handler.js +++ b/packages/errors/src/client-errors-handler.js @@ -11,7 +11,7 @@ const { JsonqlError } = errors; * @param {string} key we want to check if its exist or not * @return {boolean} true on found */ -const isKeyInObject = (obj, key) => { +const isObjectHasKey = (obj, key) => { const keys = Object.keys(obj) return !!keys.filter(k => key === k).length; } @@ -22,7 +22,7 @@ const isKeyInObject = (obj, key) => { * @return {object} this will just throw error */ export default function clientErrorsHandler(result) { - if (isKeyInObject(result, 'error')) { + if (isObjectHasKey(result, 'error')) { const { error } = result; const { className, name } = error; const errorName = className || name; diff --git a/packages/errors/tests/main.test.js b/packages/errors/tests/main.test.js index bb81a672..0d2a3484 100644 --- a/packages/errors/tests/main.test.js +++ b/packages/errors/tests/main.test.js @@ -10,15 +10,15 @@ const resolver = require('./fixtures/resolver') const debug = require('debug')('jsonql-errors:test:main') const justThrow = require('./helpers/throw-some-error') -const isKeyInObject = (obj, key) => { +const isObjectHasKey = (obj, key) => { const keys = Object.keys(obj); return !!keys.filter(k => key === k).length; } -test('Just need to test this isKeyInObject function', t => { +test('Just need to test this isObjectHasKey function', t => { let obj = {error: false}; - t.is(true, isKeyInObject(obj, 'error')); + t.is(true, isObjectHasKey(obj, 'error')); }) diff --git a/packages/http-client/package.json b/packages/http-client/package.json index b19ed596..90de4ca7 100755 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-client", - "version": "1.3.2", + "version": "1.3.3", "description": "jsonql http browser client using Fly.js", "main": "dist/jsonql-client.umd.js", "module": "index.js", @@ -10,7 +10,9 @@ "src", "dist", "index.js", - "static.js" + "static.js", + "module.js", + "sync.js" ], "scripts": { "test": "npm run build && npm run test:browser", diff --git a/packages/http-client/src/jsonql-utils.js b/packages/http-client/src/jsonql-utils.js index ed715d81..a6189da4 100644 --- a/packages/http-client/src/jsonql-utils.js +++ b/packages/http-client/src/jsonql-utils.js @@ -743,7 +743,7 @@ var inArray = function (arr, value) { return !!arr.filter(function (a) { return * @param {string} key target * @return {boolean} true on success */ -var isKeyInObject = function(obj, key) { +var isObjectHasKey = function(obj, key) { var keys = Object.keys(obj); return inArray(keys, key) }; @@ -1035,9 +1035,9 @@ var JsonqlError = /*@__PURE__*/(function (JsonqlBaseError) { function checkIsContract(contract) { return isPlainObject(contract) && ( - isKeyInObject(contract, QUERY_NAME) - || isKeyInObject(contract, MUTATION_NAME) - || isKeyInObject(contract, SOCKET_NAME) + isObjectHasKey(contract, QUERY_NAME) + || isObjectHasKey(contract, MUTATION_NAME) + || isObjectHasKey(contract, SOCKET_NAME) ) } @@ -1048,7 +1048,7 @@ function checkIsContract(contract) { * @return {object|boolean} false on failed */ function extractSocketPart(contract) { - if (isKeyInObject(contract, 'socket')) { + if (isObjectHasKey(contract, 'socket')) { return contract.socket; } return false; @@ -1355,7 +1355,7 @@ var packError = function(detail, className, statusCode, message) { * @return {object} strip the data part out, or if the error is presented */ var resultHandler = function (result) { return ( - (isKeyInObject(result, DATA_KEY) && !isKeyInObject(result, ERROR_KEY)) ? result[DATA_KEY] : result + (isObjectHasKey(result, DATA_KEY) && !isObjectHasKey(result, ERROR_KEY)) ? result[DATA_KEY] : result ); }; // exportfor ES modules @@ -1364,4 +1364,4 @@ var resultHandler = function (result) { return ( var isContract = checkIsContract; var VERSION = '0.6.9'; -export { VERSION, cacheBurst, cacheBurstUrl, chainFns, chainPromises, checkIsContract, createEvt, createMutation, createMutationStr, createQuery, createQueryStr, dasherize, extractArgsFromPayload, extractParamsFromContract, extractSocketPart, formatPayload, getCallMethod, getConfigValue, getMutationFromArgs, getMutationFromPayload, getNameFromPayload, getQueryFromArgs, getQueryFromPayload, groupByNamespace, inArray, injectToFn, isContract, isKeyInObject, isNotEmpty, objDefineProps, packError, packResult, resultHandler, timestamp, toPayload, urlParams }; +export { VERSION, cacheBurst, cacheBurstUrl, chainFns, chainPromises, checkIsContract, createEvt, createMutation, createMutationStr, createQuery, createQueryStr, dasherize, extractArgsFromPayload, extractParamsFromContract, extractSocketPart, formatPayload, getCallMethod, getConfigValue, getMutationFromArgs, getMutationFromPayload, getNameFromPayload, getQueryFromArgs, getQueryFromPayload, groupByNamespace, inArray, injectToFn, isContract, isObjectHasKey, isNotEmpty, objDefineProps, packError, packResult, resultHandler, timestamp, toPayload, urlParams }; diff --git a/packages/http-client/src/utils.js b/packages/http-client/src/utils.js index 3937b776..abff5f3e 100644 --- a/packages/http-client/src/utils.js +++ b/packages/http-client/src/utils.js @@ -13,8 +13,10 @@ import { isContract, timestamp, - inArray + inArray, + isObjectHasKey } from './jsonql-utils' // this should point to the module.js + /** * @param {object} jsonqlInstance the init instance of jsonql client * @param {object} contract the static contract @@ -33,6 +35,9 @@ const getContractFromConfig = function(jsonqlInstance, contract = {}) { const ENDPOINT_TABLE = 'endpoint'; const USERDATA_TABLE = 'userdata'; +// simple util to check if an object has any properties +const hasProp = obj => isObject(obj) && Object.keys(obj).length + // export export { getContractFromConfig, @@ -49,5 +54,7 @@ export { isContract, timestamp, - inArray + inArray, + isObjectHasKey, + hasProp } diff --git a/packages/http-client/tests/fn.test.js b/packages/http-client/tests/fn.test.js index 3bcebfc2..c142e515 100644 --- a/packages/http-client/tests/fn.test.js +++ b/packages/http-client/tests/fn.test.js @@ -1,14 +1,14 @@ const test = require('ava') -const { isKeyInObject } = require('jsonql-params-validator') +const { isObjectHasKey } = require('jsonql-params-validator') -test('It should have isKeyInObject exported', t => { +test('It should have isObjectHasKey exported', t => { const obj = {query: false, mutation: null, auth: true} - t.true(isKeyInObject(obj, 'query')) - t.true(isKeyInObject(obj, 'mutation')) + t.true(isObjectHasKey(obj, 'query')) + t.true(isObjectHasKey(obj, 'mutation')) - t.false(isKeyInObject(obj, 'socket')) + t.false(isObjectHasKey(obj, 'socket')) }) diff --git a/packages/koa/previous/cjs-src/contract-middleware.js b/packages/koa/previous/cjs-src/contract-middleware.js index 06b61c6d..e6b4e0c4 100755 --- a/packages/koa/previous/cjs-src/contract-middleware.js +++ b/packages/koa/previous/cjs-src/contract-middleware.js @@ -8,7 +8,7 @@ const { join } = require('path') const { trim } = require('lodash') const { CONTRACT_NAME, SHOW_CONTRACT_DESC_PARAM } = require('jsonql-constants') const { JsonqlContractAuthError } = require('jsonql-errors') -const { isKeyInObject } = require('jsonql-utils') +const { isObjectHasKey } = require('jsonql-utils') const { getDebug, getContract, @@ -34,9 +34,9 @@ const removeDesc = (showDesc, contract) => { let c = contract; for (let type in c) { for (let fn in c[type]) { - if (isKeyInObject(c[type][fn], 'description')) { + if (isObjectHasKey(c[type][fn], 'description')) { delete c[type][fn].description; - if (c[type][fn].returns && isKeyInObject(c[type][fn].returns, 'description')) { + if (c[type][fn].returns && isObjectHasKey(c[type][fn].returns, 'description')) { delete c[type][fn].returns.description; } } diff --git a/packages/koa/previous/cjs-src/lib/config-check/process-jwt-keys.js b/packages/koa/previous/cjs-src/lib/config-check/process-jwt-keys.js index 49195dd2..3be7ef93 100644 --- a/packages/koa/previous/cjs-src/lib/config-check/process-jwt-keys.js +++ b/packages/koa/previous/cjs-src/lib/config-check/process-jwt-keys.js @@ -7,7 +7,7 @@ const _ = require('lodash') const fsx = require('fs-extra') const { jwtProcessKey } = require('./options') -const { isKeyInObject } = require('jsonql-utils') +const { isObjectHasKey } = require('jsonql-utils') const { isString } = require('jsonql-params-validator') const debug = require('debug')('jsonql-koa:process-jwt-keys') @@ -39,7 +39,7 @@ const getKeysFromCache = (ctx, config) => { * @return {mixed} boolean on failed or object on success */ const getCreatedKeys = (ctx, config) => { - if (isKeyInObject(config, jwtProcessKey) && config[jwtProcessKey].then) { + if (isObjectHasKey(config, jwtProcessKey) && config[jwtProcessKey].then) { const { setter } = ctx.state.jsonql; return config[jwtProcessKey] .then( result => _.extend( config, _.mapValues(result, value => fsx.readFileSync(value) ) ) ) diff --git a/packages/koa/src/contracts/helpers.js b/packages/koa/src/contracts/helpers.js index 0b54066a..89e90d91 100644 --- a/packages/koa/src/contracts/helpers.js +++ b/packages/koa/src/contracts/helpers.js @@ -3,7 +3,7 @@ import { trim } from 'lodash' import { SHOW_CONTRACT_DESC_PARAM } from 'jsonql-constants' import { - isKeyInObject, + isObjectHasKey, getDebug, handleOutput, packResult, @@ -26,9 +26,9 @@ export const removeDesc = (showDesc, contract) => { let c = contract; for (let type in c) { for (let fn in c[type]) { - if (isKeyInObject(c[type][fn], keyword)) { + if (isObjectHasKey(c[type][fn], keyword)) { delete c[type][fn].description; - if (c[type][fn].returns && isKeyInObject(c[type][fn].returns, keyword)) { + if (c[type][fn].returns && isObjectHasKey(c[type][fn].returns, keyword)) { delete c[type][fn].returns.description; } } diff --git a/packages/koa/src/options/process-jwt-keys.js b/packages/koa/src/options/process-jwt-keys.js index ead53011..c8face10 100644 --- a/packages/koa/src/options/process-jwt-keys.js +++ b/packages/koa/src/options/process-jwt-keys.js @@ -7,7 +7,7 @@ import _ from 'lodash' import fsx from 'fs-extra' import { jwtProcessKey } from './options' -import { isKeyInObject } from '../utils' +import { isObjectHasKey } from '../utils' import { isString } from 'jsonql-params-validator' /** @@ -38,7 +38,7 @@ const getKeysFromCache = (ctx, config) => { * @return {mixed} boolean on failed or object on success */ const getCreatedKeys = (ctx, config) => { - if (isKeyInObject(config, jwtProcessKey) && config[jwtProcessKey].then) { + if (isObjectHasKey(config, jwtProcessKey) && config[jwtProcessKey].then) { const { setter } = ctx.state.jsonql; return config[jwtProcessKey] .then( result => _.extend( config, _.mapValues(result, value => fsx.readFileSync(value) ) ) ) diff --git a/packages/koa/src/utils/index.js b/packages/koa/src/utils/index.js index 23ab4017..de575455 100644 --- a/packages/koa/src/utils/index.js +++ b/packages/koa/src/utils/index.js @@ -5,7 +5,7 @@ import { isObject, isArray } from 'jsonql-params-validator' import { getDebug } from './utils' import { - isKeyInObject, + isObjectHasKey, chainFns, inArray, headerParser, @@ -44,7 +44,7 @@ export { isObject, isArray, - isKeyInObject, + isObjectHasKey, chainFns, inArray, headerParser, diff --git a/packages/node-client/src/utils.js b/packages/node-client/src/utils.js index 1cd71a58..d93a7e58 100755 --- a/packages/node-client/src/utils.js +++ b/packages/node-client/src/utils.js @@ -1,6 +1,6 @@ const { inspect } = require('util') const debug = require('debug') -const { isKeyInObject, resultHandler } = require('jsonql-utils') +const { isObjectHasKey, resultHandler } = require('jsonql-utils') const MODULE_NAME = 'jsonql-node-client' const display = (data, full = false) => ( @@ -10,7 +10,7 @@ const display = (data, full = false) => ( // export module.exports = { display, - isKeyInObject, + isObjectHasKey, resultHandler, getDebug: function(name) { return debug(MODULE_NAME).extend(name) diff --git a/packages/utils/README.md b/packages/utils/README.md index fea2ab7b..6cf016b1 100644 --- a/packages/utils/README.md +++ b/packages/utils/README.md @@ -16,7 +16,7 @@ Please check [jsonql](https://jsonql.js.org) for more information. - printError - getDebug - inArray -- isKeyInObject +- isObjectHasKey - isJsonqlPath - isJsonqlRequest - isJsonqlConsoleUrl diff --git a/packages/utils/browser.js b/packages/utils/browser.js index 853012b3..03385efa 100644 --- a/packages/utils/browser.js +++ b/packages/utils/browser.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return H(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case Ir:return t[Lr];case $r:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Gr[0]:return Ir;case t===Gr[1]:return $r;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isJsonqlErrorObj=pe,t.isKeyInObject=Z,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==H(t)},t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return H(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case Ir:return t[Lr];case $r:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Gr[0]:return Ir;case t===Gr[1]:return $r;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isJsonqlErrorObj=pe,t.isObjectHasKey=Z,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==H(t)},t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=browser.js.map diff --git a/packages/utils/index.js b/packages/utils/index.js index 7173ae84..bac07494 100644 --- a/packages/utils/index.js +++ b/packages/utils/index.js @@ -17,7 +17,7 @@ import { // generic inArray, toArray, - isKeyInObject, + isObjectHasKey, dasherize, createEvt, timestamp, @@ -110,7 +110,7 @@ export { // generic inArray, toArray, - isKeyInObject, + isObjectHasKey, dasherize, createEvt, timestamp, diff --git a/packages/utils/main.js b/packages/utils/main.js index 72e60a33..415406d5 100644 --- a/packages/utils/main.js +++ b/packages/utils/main.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(r){return r&&"object"==typeof r&&"default"in r?r.default:r}Object.defineProperty(exports,"__esModule",{value:!0});var fs=_interopDefault(require("fs")),path=require("path"),isArray=Array.isArray,global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol?Symbol.toStringTag:void 0;function getRawTag(r){var t=hasOwnProperty.call(r,symToStringTag),e=r[symToStringTag];try{r[symToStringTag]=void 0;var n=!0}catch(r){}var o=nativeObjectToString.call(r);return n&&(t?r[symToStringTag]=e:delete r[symToStringTag]),o}var objectProto$1=Object.prototype,nativeObjectToString$1=objectProto$1.toString;function objectToString(r){return nativeObjectToString$1.call(r)}var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag$1=Symbol?Symbol.toStringTag:void 0;function baseGetTag(r){return null==r?void 0===r?undefinedTag:nullTag:symToStringTag$1&&symToStringTag$1 in Object(r)?getRawTag(r):objectToString(r)}function overArg(r,t){return function(e){return r(t(e))}}var getPrototype=overArg(Object.getPrototypeOf,Object);function isObjectLike(r){return null!=r&&"object"==typeof r}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(r){if(!isObjectLike(r)||baseGetTag(r)!=objectTag)return!1;var t=getPrototype(r);if(null===t)return!0;var e=hasOwnProperty$1.call(t,"constructor")&&t.constructor;return"function"==typeof e&&e instanceof e&&funcToString.call(e)==objectCtorString}function arrayMap(r,t){for(var e=-1,n=null==r?0:r.length,o=Array(n);++eo?0:o+t),(e=e>o?o:e)<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var a=Array(o);++n=n?r:baseSlice(r,t,e)}function baseFindIndex(r,t,e,n){for(var o=r.length,a=e+(n?1:-1);n?a--:++a-1;);return e}function charsStartIndex(r,t){for(var e=-1,n=r.length;++e-1;);return e}function asciiToArray(r){return r.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(r){return reHasUnicode.test(r)}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(r){return r.match(reUnicode)||[]}function stringToArray(r){return hasUnicode(r)?unicodeToArray(r):asciiToArray(r)}function toString(r){return null==r?"":baseToString(r)}var reTrim=/^\s+|\s+$/g;function trim(r,t,e){if((r=toString(r))&&(e||void 0===t))return r.replace(reTrim,"");if(!r||!(t=baseToString(t)))return r;var n=stringToArray(r),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(r,t){return!!r.filter((function(r){return r===t})).length},toArray=function(r){return isArray(r)?r:[r]},parse=function(r){try{return JSON.parse(r)}catch(t){return r}},isKeyInObject=function(r,t){var e=Object.keys(r);return inArray(e,t)},createEvt=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.join("_")},timestamp=function(r){void 0===r&&(r=!1);var t=Date.now();return r?Math.floor(t/1e3):t},urlParams=function(r,t){var e=[];for(var n in t)e.push([n,t[n]].join("="));return[r,e.join("&")].join("?")},cacheBurstUrl=function(r){return urlParams(r,cacheBurst())},cacheBurst=function(){return{_cb:timestamp()}},dasherize=function(r){return trim(r).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},getConfigValue=function(r,t){return t&&isPlainObject(t)&&r in t?t[r]:void 0},toJson=function(r){return"string"==typeof r?parse(r):JSON.parse(JSON.stringify(r))},isNotEmpty=function(r){return void 0!==r&&!1!==r&&null!==r&&""!==trim(r)},chainFns=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return t.reduce((function(r,t){return Reflect.apply(t,null,toArray(r))}),Reflect.apply(r,null,e))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(r,t){return r===t||r!=r&&t!=t}function assocIndexOf(r,t){for(var e=r.length;e--;)if(eq(r[e][0],t))return e;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(r){var t=this.__data__,e=assocIndexOf(t,r);return!(e<0)&&(e==t.length-1?t.pop():splice.call(t,e,1),--this.size,!0)}function listCacheGet(r){var t=this.__data__,e=assocIndexOf(t,r);return e<0?void 0:t[e][1]}function listCacheHas(r){return assocIndexOf(this.__data__,r)>-1}function listCacheSet(r,t){var e=this.__data__,n=assocIndexOf(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}function ListCache(r){var t=-1,e=null==r?0:r.length;for(this.clear();++t-1&&r%1==0&&r<=MAX_SAFE_INTEGER}function isArrayLike(r){return null!=r&&isLength(r.length)&&!isFunction(r)}function isArrayLikeObject(r){return isObjectLike(r)&&isArrayLike(r)}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(r){return isObjectLike(r)&&isLength(r.length)&&!!typedArrayTags[baseGetTag(r)]}function baseUnary(r){return function(t){return r(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var r=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return r||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(r){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(r,t){if(("constructor"!==t||"function"!=typeof r[t])&&"__proto__"!=t)return r[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(r,t,e){var n=r[t];hasOwnProperty$6.call(r,t)&&eq(n,e)&&(void 0!==e||t in r)||baseAssignValue(r,t,e)}function copyObject(r,t,e,n){var o=!e;e||(e={});for(var a=-1,i=t.length;++a-1&&r%1==0&&r0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(r,t){return setToString(overRest(r,t,identity),r+"")}function isIterateeCall(r,t,e){if(!isObject(e))return!1;var n=typeof t;return!!("number"==n?isArrayLike(e)&&isIndex(t,e.length):"string"==n&&t in e)&&eq(e[t],r)}function createAssigner(r){return baseRest((function(t,e){var n=-1,o=e.length,a=o>1?e[o-1]:void 0,i=o>2?e[2]:void 0;for(a=r.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(e[0],e[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===r[s-2]?2:"="===r[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,e=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[r.charCodeAt(t)]<<2|revLookup[r.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[r.charCodeAt(t)]<<10|revLookup[r.charCodeAt(t+1)]<<4|revLookup[r.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(r){return lookup[r>>18&63]+lookup[r>>12&63]+lookup[r>>6&63]+lookup[63&r]}function encodeChunk(r,t,e){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=r[e-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(r[e-2]<<8)+r[e-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(r,t,e,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=e?o-1:0,p=e?-1:1,h=r[t+l];for(l+=p,a=h&(1<<-c)-1,h>>=-c,c+=s;c>0;a=256*a+r[t+l],l+=p,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+r[t+l],l+=p,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,n),a-=f}return(h?-1:1)*i*Math.pow(2,a-n)}function write(r,t,e,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;r[e+h]=255&s,h+=g,s/=256,o-=8);for(i=i<0;r[e+h]=255&i,h+=g,i/=256,f-=8);r[e+h-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(r){return"[object Array]"==toString$1.call(r)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(r,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|r}function internalIsBuffer(r){return!(null==r||!r._isBuffer)}function byteLength(r,t){if(internalIsBuffer(r))return r.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;"string"!=typeof r&&(r=""+r);var e=r.length;if(0===e)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return utf8ToBytes(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return base64ToBytes(r).length;default:if(n)return utf8ToBytes(r).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(r,t,e){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(r||(r="utf8");;)switch(r){case"hex":return hexSlice(this,t,e);case"utf8":case"utf-8":return utf8Slice(this,t,e);case"ascii":return asciiSlice(this,t,e);case"latin1":case"binary":return latin1Slice(this,t,e);case"base64":return base64Slice(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}function swap(r,t,e){var n=r[t];r[t]=r[e],r[e]=n}function bidirectionalIndexOf(r,t,e,n,o){if(0===r.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(o)return-1;e=r.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(r,t,e,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):arrayIndexOf(r,[t],e,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(r,t,e,n,o){var a,i=1,s=r.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(r.length<2||t.length<2)return-1;i=2,s/=2,u/=2,e/=2}function f(r,t){return 1===i?r[t]:r.readUInt16BE(t*i)}if(o){var c=-1;for(a=e;as&&(e=s-u),a=e;a>=0;a--){for(var l=!0,p=0;po&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=e)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=r[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=r[o+1],i=r[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=r[o+1],i=r[o+2],s=r[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(r){return r.__proto__=Buffer$2.prototype,r},Buffer$2.from=function(r,t,e){return from(null,r,t,e)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(r,t,e){return alloc(null,r,t,e)},Buffer$2.allocUnsafe=function(r){return allocUnsafe$1(null,r)},Buffer$2.allocUnsafeSlow=function(r){return allocUnsafe$1(null,r)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(r,t){if(!internalIsBuffer(r)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(r===t)return 0;for(var e=r.length,n=t.length,o=0,a=Math.min(e,n);o0&&(r=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(r+=" ... ")),""},Buffer$2.prototype.compare=function(r,t,e,n,o){if(!internalIsBuffer(r))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===e&&(e=r?r.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||e>r.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=e)return 0;if(n>=o)return-1;if(t>=e)return 1;if(this===r)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(e>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=r.slice(t,e),c=0;co)&&(e=o),r.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,r,t,e);case"utf8":case"utf-8":return utf8Write(this,r,t,e);case"ascii":return asciiWrite(this,r,t,e);case"latin1":case"binary":return latin1Write(this,r,t,e);case"base64":return base64Write(this,r,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,r,t,e);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(r){var t=r.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,r);for(var e="",n=0;nn)&&(e=n);for(var o="",a=t;ae)throw new RangeError("Trying to access beyond buffer length")}function checkInt(r,t,e,n,o,a){if(!internalIsBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||tr.length)throw new RangeError("Index out of range")}function objectWriteUInt16(r,t,e,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(r.length-e,2);o>>8*(n?o:1-o)}function objectWriteUInt32(r,t,e,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(r.length-e,4);o>>8*(n?o:3-o)&255}function checkIEEE754(r,t,e,n,o,a){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function writeFloat(r,t,e,n,o){return o||checkIEEE754(r,t,e,4),write(r,t,e,n,23,4),e+4}function writeDouble(r,t,e,n,o){return o||checkIEEE754(r,t,e,8),write(r,t,e,n,52,8),e+8}Buffer$2.prototype.slice=function(r,t){var e,n=this.length;if((r=~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[r+--t]*o;return n},Buffer$2.prototype.readUInt8=function(r,t){return t||checkOffset(r,1,this.length),this[r]},Buffer$2.prototype.readUInt16LE=function(r,t){return t||checkOffset(r,2,this.length),this[r]|this[r+1]<<8},Buffer$2.prototype.readUInt16BE=function(r,t){return t||checkOffset(r,2,this.length),this[r]<<8|this[r+1]},Buffer$2.prototype.readUInt32LE=function(r,t){return t||checkOffset(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+16777216*this[r+3]},Buffer$2.prototype.readUInt32BE=function(r,t){return t||checkOffset(r,4,this.length),16777216*this[r]+(this[r+1]<<16|this[r+2]<<8|this[r+3])},Buffer$2.prototype.readIntLE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=this[r],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=t,o=1,a=this[r+--n];n>0&&(o*=256);)a+=this[r+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(r,t){return t||checkOffset(r,1,this.length),128&this[r]?-1*(255-this[r]+1):this[r]},Buffer$2.prototype.readInt16LE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r]|this[r+1]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt16BE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r+1]|this[r]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt32LE=function(r,t){return t||checkOffset(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24},Buffer$2.prototype.readInt32BE=function(r,t){return t||checkOffset(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]},Buffer$2.prototype.readFloatLE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!0,23,4)},Buffer$2.prototype.readFloatBE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(r,t,e,n){(r=+r,t|=0,e|=0,n)||checkInt(this,r,t,e,Math.pow(2,8*e)-1,0);var o=1,a=0;for(this[t]=255&r;++a=0&&(a*=256);)this[t+o]=r/a&255;return t+e},Buffer$2.prototype.writeUInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),this[t]=255&r,t+1},Buffer$2.prototype.writeUInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=255&r):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&r;++a>0)-s&255;return t+e},Buffer$2.prototype.writeIntBE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=e-1,i=1,s=0;for(this[t+a]=255&r;--a>=0&&(i*=256);)r<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(r/i>>0)-s&255;return t+e},Buffer$2.prototype.writeInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),r<0&&(r=255+r+1),this[t]=255&r,t+1},Buffer$2.prototype.writeInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(r,t,e){return writeFloat(this,r,t,!0,e)},Buffer$2.prototype.writeFloatBE=function(r,t,e){return writeFloat(this,r,t,!1,e)},Buffer$2.prototype.writeDoubleLE=function(r,t,e){return writeDouble(this,r,t,!0,e)},Buffer$2.prototype.writeDoubleBE=function(r,t,e){return writeDouble(this,r,t,!1,e)},Buffer$2.prototype.copy=function(r,t,e,n){if(e||(e=0),n||0===n||(n=this.length),t>=r.length&&(t=r.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),r.length-t=0;--o)r[o+t]=this[o+e];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,r||(r=0),"number"==typeof r)for(a=t;a55295&&e<57344){if(!o){if(e>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=e;continue}if(e<56320){(t-=3)>-1&&a.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,e<128){if((t-=1)<0)break;a.push(e)}else if(e<2048){if((t-=2)<0)break;a.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;a.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return a}function asciiToBytes(r){for(var t=[],e=0;e>8,o=e%256,a.push(o),a.push(n);return a}function base64ToBytes(r){return toByteArray(base64clean(r))}function blitBuffer(r,t,e,n){for(var o=0;o=t.length||o>=r.length);++o)t[o+e]=r[o];return o}function isnan(r){return r!=r}function isBuffer$1(r){return null!=r&&(!!r._isBuffer||isFastBuffer(r)||isSlowBuffer(r))}function isFastBuffer(r){return!!r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r)}function isSlowBuffer(r){return"function"==typeof r.readFloatLE&&"function"==typeof r.slice&&isFastBuffer(r.slice(0,0))}function buff(r,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(r)?r:new Buffer$2.from(r,t)}var replaceErrors=function(r,t){if(t instanceof Error){var e={};return Object.getOwnPropertyNames(t).forEach((function(r){e[r]=t[r]})),e}return t},printError=function(r){return JSON.stringify(r,replaceErrors)};function findFromContract(r,t,e){return!!(e[r]&&e[r][t]&&e[r][t].file&&fs.existsSync(e[r][t].file))&&e[r][t].file}var DOT=".",getDocLen=function(r){return Buffer$2.byteLength(r,"utf8")},headerParser=function(r,t){try{var e=r.headers.accept.split(",");return t?e.filter((function(r){return r===t})):e}catch(r){return[]}},isHeaderPresent=function(r,t){return!!headerParser(r,t).length},getPathToFn=function(r,t,e){var n=e.resolverDir,o=dasherize(r),a=[];e.contract&&e.contract[t]&&e.contract[t].path&&a.push(e.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;so?0:o+t),(e=e>o?o:e)<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var a=Array(o);++n=n?r:baseSlice(r,t,e)}function baseFindIndex(r,t,e,n){for(var o=r.length,a=e+(n?1:-1);n?a--:++a-1;);return e}function charsStartIndex(r,t){for(var e=-1,n=r.length;++e-1;);return e}function asciiToArray(r){return r.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(r){return reHasUnicode.test(r)}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(r){return r.match(reUnicode)||[]}function stringToArray(r){return hasUnicode(r)?unicodeToArray(r):asciiToArray(r)}function toString(r){return null==r?"":baseToString(r)}var reTrim=/^\s+|\s+$/g;function trim(r,t,e){if((r=toString(r))&&(e||void 0===t))return r.replace(reTrim,"");if(!r||!(t=baseToString(t)))return r;var n=stringToArray(r),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(r,t){return!!r.filter((function(r){return r===t})).length},toArray=function(r){return isArray(r)?r:[r]},parse=function(r){try{return JSON.parse(r)}catch(t){return r}},isObjectHasKey=function(r,t){var e=Object.keys(r);return inArray(e,t)},createEvt=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.join("_")},timestamp=function(r){void 0===r&&(r=!1);var t=Date.now();return r?Math.floor(t/1e3):t},urlParams=function(r,t){var e=[];for(var n in t)e.push([n,t[n]].join("="));return[r,e.join("&")].join("?")},cacheBurstUrl=function(r){return urlParams(r,cacheBurst())},cacheBurst=function(){return{_cb:timestamp()}},dasherize=function(r){return trim(r).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},getConfigValue=function(r,t){return t&&isPlainObject(t)&&r in t?t[r]:void 0},toJson=function(r){return"string"==typeof r?parse(r):JSON.parse(JSON.stringify(r))},isNotEmpty=function(r){return void 0!==r&&!1!==r&&null!==r&&""!==trim(r)},chainFns=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return t.reduce((function(r,t){return Reflect.apply(t,null,toArray(r))}),Reflect.apply(r,null,e))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(r,t){return r===t||r!=r&&t!=t}function assocIndexOf(r,t){for(var e=r.length;e--;)if(eq(r[e][0],t))return e;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(r){var t=this.__data__,e=assocIndexOf(t,r);return!(e<0)&&(e==t.length-1?t.pop():splice.call(t,e,1),--this.size,!0)}function listCacheGet(r){var t=this.__data__,e=assocIndexOf(t,r);return e<0?void 0:t[e][1]}function listCacheHas(r){return assocIndexOf(this.__data__,r)>-1}function listCacheSet(r,t){var e=this.__data__,n=assocIndexOf(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}function ListCache(r){var t=-1,e=null==r?0:r.length;for(this.clear();++t-1&&r%1==0&&r<=MAX_SAFE_INTEGER}function isArrayLike(r){return null!=r&&isLength(r.length)&&!isFunction(r)}function isArrayLikeObject(r){return isObjectLike(r)&&isArrayLike(r)}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(r){return isObjectLike(r)&&isLength(r.length)&&!!typedArrayTags[baseGetTag(r)]}function baseUnary(r){return function(t){return r(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var r=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return r||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(r){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(r,t){if(("constructor"!==t||"function"!=typeof r[t])&&"__proto__"!=t)return r[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(r,t,e){var n=r[t];hasOwnProperty$6.call(r,t)&&eq(n,e)&&(void 0!==e||t in r)||baseAssignValue(r,t,e)}function copyObject(r,t,e,n){var o=!e;e||(e={});for(var a=-1,i=t.length;++a-1&&r%1==0&&r0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(r,t){return setToString(overRest(r,t,identity),r+"")}function isIterateeCall(r,t,e){if(!isObject(e))return!1;var n=typeof t;return!!("number"==n?isArrayLike(e)&&isIndex(t,e.length):"string"==n&&t in e)&&eq(e[t],r)}function createAssigner(r){return baseRest((function(t,e){var n=-1,o=e.length,a=o>1?e[o-1]:void 0,i=o>2?e[2]:void 0;for(a=r.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(e[0],e[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===r[s-2]?2:"="===r[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,e=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[r.charCodeAt(t)]<<2|revLookup[r.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[r.charCodeAt(t)]<<10|revLookup[r.charCodeAt(t+1)]<<4|revLookup[r.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(r){return lookup[r>>18&63]+lookup[r>>12&63]+lookup[r>>6&63]+lookup[63&r]}function encodeChunk(r,t,e){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=r[e-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(r[e-2]<<8)+r[e-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(r,t,e,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=e?o-1:0,p=e?-1:1,h=r[t+l];for(l+=p,a=h&(1<<-c)-1,h>>=-c,c+=s;c>0;a=256*a+r[t+l],l+=p,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+r[t+l],l+=p,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,n),a-=f}return(h?-1:1)*i*Math.pow(2,a-n)}function write(r,t,e,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;r[e+h]=255&s,h+=g,s/=256,o-=8);for(i=i<0;r[e+h]=255&i,h+=g,i/=256,f-=8);r[e+h-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(r){return"[object Array]"==toString$1.call(r)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(r,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|r}function internalIsBuffer(r){return!(null==r||!r._isBuffer)}function byteLength(r,t){if(internalIsBuffer(r))return r.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;"string"!=typeof r&&(r=""+r);var e=r.length;if(0===e)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return utf8ToBytes(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return base64ToBytes(r).length;default:if(n)return utf8ToBytes(r).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(r,t,e){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(r||(r="utf8");;)switch(r){case"hex":return hexSlice(this,t,e);case"utf8":case"utf-8":return utf8Slice(this,t,e);case"ascii":return asciiSlice(this,t,e);case"latin1":case"binary":return latin1Slice(this,t,e);case"base64":return base64Slice(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}function swap(r,t,e){var n=r[t];r[t]=r[e],r[e]=n}function bidirectionalIndexOf(r,t,e,n,o){if(0===r.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(o)return-1;e=r.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(r,t,e,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):arrayIndexOf(r,[t],e,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(r,t,e,n,o){var a,i=1,s=r.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(r.length<2||t.length<2)return-1;i=2,s/=2,u/=2,e/=2}function f(r,t){return 1===i?r[t]:r.readUInt16BE(t*i)}if(o){var c=-1;for(a=e;as&&(e=s-u),a=e;a>=0;a--){for(var l=!0,p=0;po&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=e)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=r[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=r[o+1],i=r[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=r[o+1],i=r[o+2],s=r[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(r){return r.__proto__=Buffer$2.prototype,r},Buffer$2.from=function(r,t,e){return from(null,r,t,e)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(r,t,e){return alloc(null,r,t,e)},Buffer$2.allocUnsafe=function(r){return allocUnsafe$1(null,r)},Buffer$2.allocUnsafeSlow=function(r){return allocUnsafe$1(null,r)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(r,t){if(!internalIsBuffer(r)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(r===t)return 0;for(var e=r.length,n=t.length,o=0,a=Math.min(e,n);o0&&(r=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(r+=" ... ")),""},Buffer$2.prototype.compare=function(r,t,e,n,o){if(!internalIsBuffer(r))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===e&&(e=r?r.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||e>r.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=e)return 0;if(n>=o)return-1;if(t>=e)return 1;if(this===r)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(e>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=r.slice(t,e),c=0;co)&&(e=o),r.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,r,t,e);case"utf8":case"utf-8":return utf8Write(this,r,t,e);case"ascii":return asciiWrite(this,r,t,e);case"latin1":case"binary":return latin1Write(this,r,t,e);case"base64":return base64Write(this,r,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,r,t,e);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(r){var t=r.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,r);for(var e="",n=0;nn)&&(e=n);for(var o="",a=t;ae)throw new RangeError("Trying to access beyond buffer length")}function checkInt(r,t,e,n,o,a){if(!internalIsBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||tr.length)throw new RangeError("Index out of range")}function objectWriteUInt16(r,t,e,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(r.length-e,2);o>>8*(n?o:1-o)}function objectWriteUInt32(r,t,e,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(r.length-e,4);o>>8*(n?o:3-o)&255}function checkIEEE754(r,t,e,n,o,a){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function writeFloat(r,t,e,n,o){return o||checkIEEE754(r,t,e,4),write(r,t,e,n,23,4),e+4}function writeDouble(r,t,e,n,o){return o||checkIEEE754(r,t,e,8),write(r,t,e,n,52,8),e+8}Buffer$2.prototype.slice=function(r,t){var e,n=this.length;if((r=~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[r+--t]*o;return n},Buffer$2.prototype.readUInt8=function(r,t){return t||checkOffset(r,1,this.length),this[r]},Buffer$2.prototype.readUInt16LE=function(r,t){return t||checkOffset(r,2,this.length),this[r]|this[r+1]<<8},Buffer$2.prototype.readUInt16BE=function(r,t){return t||checkOffset(r,2,this.length),this[r]<<8|this[r+1]},Buffer$2.prototype.readUInt32LE=function(r,t){return t||checkOffset(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+16777216*this[r+3]},Buffer$2.prototype.readUInt32BE=function(r,t){return t||checkOffset(r,4,this.length),16777216*this[r]+(this[r+1]<<16|this[r+2]<<8|this[r+3])},Buffer$2.prototype.readIntLE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=this[r],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=t,o=1,a=this[r+--n];n>0&&(o*=256);)a+=this[r+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(r,t){return t||checkOffset(r,1,this.length),128&this[r]?-1*(255-this[r]+1):this[r]},Buffer$2.prototype.readInt16LE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r]|this[r+1]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt16BE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r+1]|this[r]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt32LE=function(r,t){return t||checkOffset(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24},Buffer$2.prototype.readInt32BE=function(r,t){return t||checkOffset(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]},Buffer$2.prototype.readFloatLE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!0,23,4)},Buffer$2.prototype.readFloatBE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(r,t,e,n){(r=+r,t|=0,e|=0,n)||checkInt(this,r,t,e,Math.pow(2,8*e)-1,0);var o=1,a=0;for(this[t]=255&r;++a=0&&(a*=256);)this[t+o]=r/a&255;return t+e},Buffer$2.prototype.writeUInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),this[t]=255&r,t+1},Buffer$2.prototype.writeUInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=255&r):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&r;++a>0)-s&255;return t+e},Buffer$2.prototype.writeIntBE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=e-1,i=1,s=0;for(this[t+a]=255&r;--a>=0&&(i*=256);)r<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(r/i>>0)-s&255;return t+e},Buffer$2.prototype.writeInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),r<0&&(r=255+r+1),this[t]=255&r,t+1},Buffer$2.prototype.writeInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(r,t,e){return writeFloat(this,r,t,!0,e)},Buffer$2.prototype.writeFloatBE=function(r,t,e){return writeFloat(this,r,t,!1,e)},Buffer$2.prototype.writeDoubleLE=function(r,t,e){return writeDouble(this,r,t,!0,e)},Buffer$2.prototype.writeDoubleBE=function(r,t,e){return writeDouble(this,r,t,!1,e)},Buffer$2.prototype.copy=function(r,t,e,n){if(e||(e=0),n||0===n||(n=this.length),t>=r.length&&(t=r.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),r.length-t=0;--o)r[o+t]=this[o+e];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,r||(r=0),"number"==typeof r)for(a=t;a55295&&e<57344){if(!o){if(e>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=e;continue}if(e<56320){(t-=3)>-1&&a.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,e<128){if((t-=1)<0)break;a.push(e)}else if(e<2048){if((t-=2)<0)break;a.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;a.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return a}function asciiToBytes(r){for(var t=[],e=0;e>8,o=e%256,a.push(o),a.push(n);return a}function base64ToBytes(r){return toByteArray(base64clean(r))}function blitBuffer(r,t,e,n){for(var o=0;o=t.length||o>=r.length);++o)t[o+e]=r[o];return o}function isnan(r){return r!=r}function isBuffer$1(r){return null!=r&&(!!r._isBuffer||isFastBuffer(r)||isSlowBuffer(r))}function isFastBuffer(r){return!!r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r)}function isSlowBuffer(r){return"function"==typeof r.readFloatLE&&"function"==typeof r.slice&&isFastBuffer(r.slice(0,0))}function buff(r,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(r)?r:new Buffer$2.from(r,t)}var replaceErrors=function(r,t){if(t instanceof Error){var e={};return Object.getOwnPropertyNames(t).forEach((function(r){e[r]=t[r]})),e}return t},printError=function(r){return JSON.stringify(r,replaceErrors)};function findFromContract(r,t,e){return!!(e[r]&&e[r][t]&&e[r][t].file&&fs.existsSync(e[r][t].file))&&e[r][t].file}var DOT=".",getDocLen=function(r){return Buffer$2.byteLength(r,"utf8")},headerParser=function(r,t){try{var e=r.headers.accept.split(",");return t?e.filter((function(r){return r===t})):e}catch(r){return[]}},isHeaderPresent=function(r,t){return!!headerParser(r,t).length},getPathToFn=function(r,t,e){var n=e.resolverDir,o=dasherize(r),a=[];e.contract&&e.contract[t]&&e.contract[t].path&&a.push(e.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;s { export const isNotEmpty = function(param) { return param !== undefined && param !== false && param !== null && trim(param) !== ''; } + +/** + * Simple check if the prop is function + * @param {*} prop input + * @return {boolean} true on success + */ +export const isFunc = prop => { + if (typeof prop === 'function') { + return true; + } + console.error(`Expect to be Function type!`) +} diff --git a/packages/utils/src/node-middleware.js b/packages/utils/src/node-middleware.js index 9b53bad4..9599f409 100644 --- a/packages/utils/src/node-middleware.js +++ b/packages/utils/src/node-middleware.js @@ -17,7 +17,7 @@ import { EXT } from 'jsonql-constants' const DOT = '.' -import { isKeyInObject, timestamp, dasherize } from './generic' +import { isObjectHasKey, timestamp, dasherize } from './generic' /** * Get document (string) byte length for use in header diff --git a/packages/utils/src/results.js b/packages/utils/src/results.js index 1e5021ec..27f3c4f7 100644 --- a/packages/utils/src/results.js +++ b/packages/utils/src/results.js @@ -12,7 +12,7 @@ import { INDEX_KEY, EXT } from 'jsonql-constants' -import { isKeyInObject } from './generic' +import { isObjectHasKey } from './generic' import merge from 'lodash-es/merge' /** * getting what is calling after the above check @@ -47,10 +47,10 @@ export const packResult = function(result) { */ export const isJsonqlErrorObj = e => { const searchFields = ['detail', 'className'] - const test = !!searchFields.filter(field => isKeyInObject(e, field)).length + const test = !!searchFields.filter(field => isObjectHasKey(e, field)).length if (test) { return ['className', 'message', 'statusCode'] - .filter(field => isKeyInObject(e, field)) + .filter(field => isObjectHasKey(e, field)) .map(field => ( { [field]: typeof e[field] === 'object' ? e[field].toString() : e[field] @@ -85,5 +85,5 @@ export const packError = function(detail, className = 'JsonqlError', statusCode * @return {object} strip the data part out, or if the error is presented */ export const resultHandler = result => ( - (isKeyInObject(result, DATA_KEY) && !isKeyInObject(result, ERROR_KEY)) ? result[DATA_KEY] : result + (isObjectHasKey(result, DATA_KEY) && !isObjectHasKey(result, ERROR_KEY)) ? result[DATA_KEY] : result ) diff --git a/packages/utils/tests/construct.test.js b/packages/utils/tests/construct.test.js index 998a0367..0e8c3835 100644 --- a/packages/utils/tests/construct.test.js +++ b/packages/utils/tests/construct.test.js @@ -1,6 +1,6 @@ // this is ported back from jsonql-params-validator const test = require('ava') -const { isContract, isKeyInObject } = require('../main') +const { isContract, isObjectHasKey } = require('../main') test("It should able to check if an object is contract or not", t => { @@ -10,12 +10,12 @@ test("It should able to check if an object is contract or not", t => { t.true(isContract({query: {getSomething: {}}})) }) -test("Test isKeyInObject is exported or not", t => { +test("Test isObjectHasKey is exported or not", t => { const client = {query: {}, mutation: false, socket: null}; - t.true(isKeyInObject(client, 'mutation')) - t.true(isKeyInObject(client, 'socket')) + t.true(isObjectHasKey(client, 'mutation')) + t.true(isObjectHasKey(client, 'socket')) - t.false(isKeyInObject(client, 'auth')) + t.false(isObjectHasKey(client, 'auth')) }) diff --git a/packages/validator/dist/jsonql-params-validator.cjs.js b/packages/validator/dist/jsonql-params-validator.cjs.js index 9370a9f1..ce08bd47 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";function isNull(e){return null===e}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,n=null==e?0:e.length,a=Array(n);++t>>0,r>>>=0;for(var o=Array(a);++n=HOT_COUNT)return arguments[0]}else n=0;return t.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(s){return baseRest(function(e,r){var t=-1,n=r.length,a=1",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)||!(0t.filter(function(e){return!combineFn(e)(r)}).length)}).length:t.length>t.filter(function(e){return!checkIsArray(r,e)}).length},checkIsObject=function(r,e){if(void 0===e&&(e=null),isPlainObject(r)){if(!e)return!0;if(checkIsArray(e))return!e.filter(function(e){var t=r[e.name];return!(e.type.length>e.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)},isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).where=function(){return whereAmI()},e}(Error),JsonqlEnumError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,t.captureStackTrace&&t.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(n,e),n}(Error),JsonqlTypeError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,t.captureStackTrace&&t.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(n,e),n}(Error),JsonqlCheckerError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,t.captureStackTrace&&t.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(n,e),n}(Error),JsonqlError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,Error.captureStackTrace&&Error.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(n,e),n}(JsonqlBaseError);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(r){var e=r.arg,t=r.param;return!!notEmpty(e)&&!(t.type.length>t.type.filter(function(e){return validateHandler(e,r)}).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(t,a){if(!checkIsArray(a))throw new JsonqlError(PARAMS_NOT_ARRAY_ERR);if(0===a.length)return[];if(!checkIsArray(t))throw new JsonqlError(ARGS_NOT_ARRAY_ERR);switch(!0){case t.length==a.length:return log(1),t.map(function(e,r){return{arg:e,index:r,param:a[r]}});case!0===a[0].variable:log(2);var n=a[0].type;return t.map(function(e,r){return{arg:e,index:r,param:a[r]||{type:n,name:"_"}}});case t.lengtha.length:log(4);var o=a.length,i=[DEFAULT_TYPE$1];return t.map(function(e,r){var t=o<=r||!!a[r].optional,n=a[r]||{type:i,name:"_"+r};return{arg:t?getOptionalValue(e,n):e,index:r,param:n,optional:t}});default:throw log(5),new JsonqlError(EXCEPTION_CASE_ERR,{args:t,params:a})}},processReturn=function(e){return e.map(function(e){return e.arg})},validateSync=function(e,r,t){var n;void 0===t&&(t=!1);var a=normalizeArgs(e,r),o=a.filter(function(r){return!0===r.optional||!0===r.param.optional?optionalHandler(r):!(r.param.type.length>r.param.type.filter(function(e){return validateHandler(e,r)}).length)});return t?((n={})[ERROR_KEY]=o,n[DATA_KEY]=processReturn(a),n):o},validateAsync=function(n,a,o){return void 0===o&&(o=!1),new Promise(function(e,r){var t=validateSync(n,a,o);return o?t[ERROR_KEY].length?r(t[ERROR_KEY]):e(t[DATA_KEY]):t.length?r(t):e([])})},isInArray=function(e,r){return!!e.filter(function(e){return e===r}).length},isKeyInObject=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 isKeyInObject(t,r)}),function(e){return e.args}),checkAgainstAppProps:omitBy(r,function(e,r){return!isKeyInObject(t,r)}),config:t}}function processConfigAction(a,e){return mapValues(e,function(e,r){var t,n;return isUndefined(a[r])||!0===e[OPTIONAL_KEY$1]&&isEmpty(a[r])?merge({},e,((t={})[KEY_WORD$1]=!0,t)):((n={})[ARGS_KEY$1]=a[r],n[TYPE_KEY$1]=e[TYPE_KEY$1],n[OPTIONAL_KEY$1]=e[OPTIONAL_KEY$1]||!1,n[ENUM_KEY$1]=e[ENUM_KEY$1]||!1,n[CHECKER_KEY$1]=e[CHECKER_KEY$1]||!1,n)})}function prepareArgsForValidation(e,r){var t=preservePristineValues(e,r),n=t.config,a=t.pristineValues;return[processConfigAction(n,t.checkAgainstAppProps),a]}var toArray=function(e){return checkIsArray(e)?e:[e]},inArray=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(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(r,e)},checkerHandler=function(e,r){try{return!!isFunction(r)&&r.apply(null,[e])}catch(e){return!1}};function runValidationAction(n){return function(e,r){if(e[KEY_WORD$1])return e[ARGS_KEY$1];var t=validateHandler$1(e,n);if(t.length)throw log("runValidationAction",r,e),new JsonqlTypeError(r,t);if(!1!==e[ENUM_KEY$1]&&!enumHandler(e[ARGS_KEY$1],e[ENUM_KEY$1]))throw log(ENUM_KEY$1,e[ENUM_KEY$1]),new JsonqlEnumError(r);if(!1!==e[CHECKER_KEY$1]&&!checkerHandler(e[ARGS_KEY$1],e[CHECKER_KEY$1]))throw log(CHECKER_KEY$1,e[CHECKER_KEY$1]),new JsonqlCheckerError(r);return e[ARGS_KEY$1]}}function runValidation(e,r){var t=e[0],n=e[1],a=mapValues(t,runValidationAction(r));return merge(a,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 checkOptionsSync(e,r,t,n){return void 0===e&&(e={}),merge(runValidation(prepareArgsForValidation(e,r),n),t)}function constructConfigFn(e,r,t,n,a,o){void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===a&&(a=!1),void 0===o&&(o=!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(a)&&(i[CHECKER_KEY]=a),isString(o)&&(i[ALIAS_KEY]=o),i}var createConfig=function(e,r,t){void 0===t&&(t={});var n=t[OPTIONAL_KEY],a=t[ENUM_KEY],o=t[CHECKER_KEY],i=t[ALIAS_KEY];return constructConfigFn.apply(null,[e,r,n,a,o,i])},JSONQL_PARAMS_VALIDATOR_INFO="version: 1.4.11 module: cjs",checkConfigAsync=function(n){return function(e,r,t){return void 0===t&&(t={}),checkOptionsAsync(e,r,t,n)}},checkConfig=function(n){return function(e,r,t){return void 0===t&&(t={}),checkOptionsSync(e,r,t,n)}},isObject$1=checkIsObject,isAny=checkIsAny,isString$1=checkIsString,isBoolean$1=checkIsBoolean,isNumber$1=checkIsNumber,isArray$1=checkIsArray,isNotEmpty=notEmpty,normalizeArgs$1=normalizeArgs,validateSync$1=validateSync,validateAsync$1=validateAsync,JSONQL_PARAMS_VALIDATOR_INFO$1=JSONQL_PARAMS_VALIDATOR_INFO,createConfig$1=createConfig,constructConfig=constructConfigFn,checkConfigAsync$1=checkConfigAsync(validateSync),checkConfig$1=checkConfig(validateSync),inArray$1=isInArray,isKeyInObject$1=isKeyInObject;exports.JSONQL_PARAMS_VALIDATOR_INFO=JSONQL_PARAMS_VALIDATOR_INFO$1,exports.checkConfig=checkConfig$1,exports.checkConfigAsync=checkConfigAsync$1,exports.constructConfig=constructConfig,exports.createConfig=createConfig$1,exports.inArray=inArray$1,exports.isAny=isAny,exports.isArray=isArray$1,exports.isBoolean=isBoolean$1,exports.isKeyInObject=isKeyInObject$1,exports.isNotEmpty=isNotEmpty,exports.isNumber=isNumber$1,exports.isObject=isObject$1,exports.isString=isString$1,exports.normalizeArgs=normalizeArgs$1,exports.validateAsync=validateAsync$1,exports.validateSync=validateSync$1; +"use strict";function isNull(e){return null===e}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,n=null==e?0:e.length,a=Array(n);++t>>0,r>>>=0;for(var o=Array(a);++n=HOT_COUNT)return arguments[0]}else n=0;return t.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(s){return baseRest(function(e,r){var t=-1,n=r.length,a=1",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)||!(0t.filter(function(e){return!combineFn(e)(r)}).length)}).length:t.length>t.filter(function(e){return!checkIsArray(r,e)}).length},checkIsObject=function(r,e){if(void 0===e&&(e=null),isPlainObject(r)){if(!e)return!0;if(checkIsArray(e))return!e.filter(function(e){var t=r[e.name];return!(e.type.length>e.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)},isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).where=function(){return whereAmI()},e}(Error),JsonqlEnumError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,t.captureStackTrace&&t.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(n,e),n}(Error),JsonqlTypeError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,t.captureStackTrace&&t.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(n,e),n}(Error),JsonqlCheckerError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,t.captureStackTrace&&t.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(n,e),n}(Error),JsonqlError=function(t){function n(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e),this.message=e[0],this.detail=e[1],this.className=n.name,Error.captureStackTrace&&Error.captureStackTrace(this,n)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(n,e),n}(JsonqlBaseError);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(r){var e=r.arg,t=r.param;return!!notEmpty(e)&&!(t.type.length>t.type.filter(function(e){return validateHandler(e,r)}).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(t,a){if(!checkIsArray(a))throw new JsonqlError(PARAMS_NOT_ARRAY_ERR);if(0===a.length)return[];if(!checkIsArray(t))throw new JsonqlError(ARGS_NOT_ARRAY_ERR);switch(!0){case t.length==a.length:return log(1),t.map(function(e,r){return{arg:e,index:r,param:a[r]}});case!0===a[0].variable:log(2);var n=a[0].type;return t.map(function(e,r){return{arg:e,index:r,param:a[r]||{type:n,name:"_"}}});case t.lengtha.length:log(4);var o=a.length,i=[DEFAULT_TYPE$1];return t.map(function(e,r){var t=o<=r||!!a[r].optional,n=a[r]||{type:i,name:"_"+r};return{arg:t?getOptionalValue(e,n):e,index:r,param:n,optional:t}});default:throw log(5),new JsonqlError(EXCEPTION_CASE_ERR,{args:t,params:a})}},processReturn=function(e){return e.map(function(e){return e.arg})},validateSync=function(e,r,t){var n;void 0===t&&(t=!1);var a=normalizeArgs(e,r),o=a.filter(function(r){return!0===r.optional||!0===r.param.optional?optionalHandler(r):!(r.param.type.length>r.param.type.filter(function(e){return validateHandler(e,r)}).length)});return t?((n={})[ERROR_KEY]=o,n[DATA_KEY]=processReturn(a),n):o},validateAsync=function(n,a,o){return void 0===o&&(o=!1),new Promise(function(e,r){var t=validateSync(n,a,o);return o?t[ERROR_KEY].length?r(t[ERROR_KEY]):e(t[DATA_KEY]):t.length?r(t):e([])})},isInArray=function(e,r){return!!e.filter(function(e){return e===r}).length},isObjectHasKey=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(t,r)}),function(e){return e.args}),checkAgainstAppProps:omitBy(r,function(e,r){return!isObjectHasKey(t,r)}),config:t}}function processConfigAction(a,e){return mapValues(e,function(e,r){var t,n;return isUndefined(a[r])||!0===e[OPTIONAL_KEY$1]&&isEmpty(a[r])?merge({},e,((t={})[KEY_WORD$1]=!0,t)):((n={})[ARGS_KEY$1]=a[r],n[TYPE_KEY$1]=e[TYPE_KEY$1],n[OPTIONAL_KEY$1]=e[OPTIONAL_KEY$1]||!1,n[ENUM_KEY$1]=e[ENUM_KEY$1]||!1,n[CHECKER_KEY$1]=e[CHECKER_KEY$1]||!1,n)})}function prepareArgsForValidation(e,r){var t=preservePristineValues(e,r),n=t.config,a=t.pristineValues;return[processConfigAction(n,t.checkAgainstAppProps),a]}var toArray=function(e){return checkIsArray(e)?e:[e]},inArray=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(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(r,e)},checkerHandler=function(e,r){try{return!!isFunction(r)&&r.apply(null,[e])}catch(e){return!1}};function runValidationAction(n){return function(e,r){if(e[KEY_WORD$1])return e[ARGS_KEY$1];var t=validateHandler$1(e,n);if(t.length)throw log("runValidationAction",r,e),new JsonqlTypeError(r,t);if(!1!==e[ENUM_KEY$1]&&!enumHandler(e[ARGS_KEY$1],e[ENUM_KEY$1]))throw log(ENUM_KEY$1,e[ENUM_KEY$1]),new JsonqlEnumError(r);if(!1!==e[CHECKER_KEY$1]&&!checkerHandler(e[ARGS_KEY$1],e[CHECKER_KEY$1]))throw log(CHECKER_KEY$1,e[CHECKER_KEY$1]),new JsonqlCheckerError(r);return e[ARGS_KEY$1]}}function runValidation(e,r){var t=e[0],n=e[1],a=mapValues(t,runValidationAction(r));return merge(a,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 checkOptionsSync(e,r,t,n){return void 0===e&&(e={}),merge(runValidation(prepareArgsForValidation(e,r),n),t)}function constructConfigFn(e,r,t,n,a,o){void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===a&&(a=!1),void 0===o&&(o=!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(a)&&(i[CHECKER_KEY]=a),isString(o)&&(i[ALIAS_KEY]=o),i}var createConfig=function(e,r,t){void 0===t&&(t={});var n=t[OPTIONAL_KEY],a=t[ENUM_KEY],o=t[CHECKER_KEY],i=t[ALIAS_KEY];return constructConfigFn.apply(null,[e,r,n,a,o,i])},JSONQL_PARAMS_VALIDATOR_INFO="version: 1.4.11 module: cjs",checkConfigAsync=function(n){return function(e,r,t){return void 0===t&&(t={}),checkOptionsAsync(e,r,t,n)}},checkConfig=function(n){return function(e,r,t){return void 0===t&&(t={}),checkOptionsSync(e,r,t,n)}},isObject$1=checkIsObject,isAny=checkIsAny,isString$1=checkIsString,isBoolean$1=checkIsBoolean,isNumber$1=checkIsNumber,isArray$1=checkIsArray,isNotEmpty=notEmpty,normalizeArgs$1=normalizeArgs,validateSync$1=validateSync,validateAsync$1=validateAsync,JSONQL_PARAMS_VALIDATOR_INFO$1=JSONQL_PARAMS_VALIDATOR_INFO,createConfig$1=createConfig,constructConfig=constructConfigFn,checkConfigAsync$1=checkConfigAsync(validateSync),checkConfig$1=checkConfig(validateSync),inArray$1=isInArray,isObjectHasKey$1=isObjectHasKey;exports.JSONQL_PARAMS_VALIDATOR_INFO=JSONQL_PARAMS_VALIDATOR_INFO$1,exports.checkConfig=checkConfig$1,exports.checkConfigAsync=checkConfigAsync$1,exports.constructConfig=constructConfig,exports.createConfig=createConfig$1,exports.inArray=inArray$1,exports.isAny=isAny,exports.isArray=isArray$1,exports.isBoolean=isBoolean$1,exports.isObjectHasKey=isObjectHasKey$1,exports.isNotEmpty=isNotEmpty,exports.isNumber=isNumber$1,exports.isObject=isObject$1,exports.isString=isString$1,exports.normalizeArgs=normalizeArgs$1,exports.validateAsync=validateAsync$1,exports.validateSync=validateSync$1; //# sourceMappingURL=jsonql-params-validator.cjs.js.map diff --git a/packages/validator/dist/jsonql-params-validator.umd.js b/packages/validator/dist/jsonql-params-validator.umd.js index 0a1f235f..782746b6 100644 --- a/packages/validator/dist/jsonql-params-validator.umd.js +++ b/packages/validator/dist/jsonql-params-validator.umd.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlParamsValidator={})}(this,function(t){"use strict";var r="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof r&&r&&r.Object===Object&&r,e="object"==typeof self&&self&&self.Object===Object&&self,o=n||e||Function("return this")(),u=o.Symbol;function i(t,r){for(var n=-1,e=null==t?0:t.length,o=Array(e);++n>>0,r>>>=0;for(var u=Array(o);++e")){var r=t.replace(Ve,"").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1}function Fe(t,n){var r=t.arg;return 1n.filter(function(t){return!xe(t)(r)}).length)}).length:n.length>n.filter(function(t){return!Te(r,t)}).length}function Ne(r,t){if(void 0===t&&(t=null),et(r)){if(!t)return!0;if(Te(t))return!t.filter(function(t){var n=r[t.name];return!(t.type.length>t.type.filter(function(t){var r;return!!U(n)||(!1!==(r=Ce(t))?!Fe({arg:n},r):!xe(t)(n))}).length)}).length}return!1}function $e(){try{if(window||document)return!0}catch(t){}return!1}var Be="error",Me="optional",Re="enumv",De="checker",Ie="alias",Ve="array.<",Le="type",qe=Me,Ue=Re,Je="args",We=De,Ge=Ie,Ke="continue";function Qe(){return $e()?"browser":function(){try{if(!$e()&&r)return!0}catch(t){}return!1}()?"node":"unknown"}var Ye=function(n){function t(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t)}return n&&(t.__proto__=n),((t.prototype=Object.create(n&&n.prototype)).constructor=t).where=function(){return Qe()},t}(Error),He=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,n.captureStackTrace&&n.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(e,t),e}(Error),Xe=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,n.captureStackTrace&&n.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,t),e}(Error),Ze=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,n.captureStackTrace&&n.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,t),e}(Error),to=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,Error.captureStackTrace&&Error.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0},statusCode:{configurable:!0}};return t.name.get=function(){return"JsonqlError"},t.statusCode.get=function(){return-1},Object.defineProperties(e,t),e}(Ye);function ro(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}function no(t,r){return U(t)?!0!==r.optional||U(r.defaultvalue)?null:r.defaultvalue:t}function eo(n,o){if(!Te(o))throw new to("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===o.length)return[];if(!Te(n))throw new to("args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)");switch(!0){case n.length==o.length:return ro(1),n.map(function(t,r){return{arg:t,index:r,param:o[r]}});case!0===o[0].variable:ro(2);var e=o[0].type;return n.map(function(t,r){return{arg:t,index:r,param:o[r]||{type:e,name:"_"}}});case n.lengtho.length:ro(4);var u=o.length,i=["any"];return n.map(function(t,r){var n=u<=r||!!o[r].optional,e=o[r]||{type:i,name:"_"+r};return{arg:n?no(t,e):t,index:r,param:e,optional:n}});default:throw ro(5),new to("Could not understand your arguments and parameter structure!",{args:n,params:o})}}function oo(t,r,n){var e;void 0===n&&(n=!1);var o=eo(t,r),u=o.filter(function(r){return!0===r.optional||!0===r.param.optional?function(r){var t=r.arg,n=r.param;return!!Se(t)&&!(n.type.length>n.type.filter(function(t){return io(t,r)}).length)}(r):!(r.param.type.length>r.param.type.filter(function(t){return io(t,r)}).length)});return n?((e={})[Be]=u,e.data=function(t){return t.map(function(t){return t.arg})}(o),e):u}function uo(t,r){return!!t.filter(function(t){return t===r}).length}var io=function(t,r){var n;switch(!0){case"object"===t:return!function(t){var r=t.arg,n=t.param,e=[r];return Array.isArray(n.keys)&&n.keys.length&&e.push(n.keys),Ne.apply(null,e)}(r);case"array"===t:return!Te(r.arg);case!1!==(n=Ce(t)):return!Fe(r,n);default:return!xe(t)(r.arg)}},ao=function(t,r){var n=Object.keys(t);return uo(n,r)},co=function(t){return!Se(t)};function fo(t,r){var n=Ae(r,function(t,r){return!t[Ge]});return function(t,r){return yn(t,r)}(n,{})?t:function(t,e){var o={};return e=Ln(e),Lt(t,function(t,r,n){Un(o,e(t,r,n),t)}),o}(t,function(t,r){return function(t,r){return function(t,e,r){var o;return r(t,function(t,r,n){if(e(t,r,n))return o=r,!1}),o}(t,Ln(r),Lt)}(n,function(t){return t.alias===r})||r})}function lo(t,r){var n=function(t,r){var n=fo(t,r);return{pristineValues:_e(Ae(r,function(t,r){return ao(n,r)}),function(t){return t.args}),checkAgainstAppProps:Ae(r,function(t,r){return!ao(n,r)}),config:n}}(t,r),e=n.config,o=n.pristineValues;return[function(o,t){return _e(t,function(t,r){var n,e;return U(o[r])||!0===t[qe]&&co(o[r])?be({},t,((n={})[Ke]=!0,n)):((e={})[Je]=o[r],e[Le]=t[Le],e[qe]=t[qe]||!1,e[Ue]=t[Ue]||!1,e[We]=t[We]||!1,e)})}(e,n.checkAgainstAppProps),o]}var so=function(t){return Te(t)?t:[t]};var po=function(t,r){return!Te(r)||function(t,r){return!!t.filter(function(t){return t===r}).length}(r,t)},vo=function(t,r){try{return!!Dt(r)&&r.apply(null,[t])}catch(t){return!1}};function ho(e){return function(t,r){if(t[Ke])return t[Je];var n=function(t,r){var n,e=[[t[Je]],[(n={},n[Le]=so(t[Le]),n[qe]=t[qe],n)]];return Reflect.apply(r,null,e)}(t,e);if(n.length)throw ro("runValidationAction",r,t),new Xe(r,n);if(!1!==t[Ue]&&!po(t[Je],t[Ue]))throw ro(Ue,t[Ue]),new He(r);if(!1!==t[We]&&!vo(t[Je],t[We]))throw ro(We,t[We]),new Ze(r);return t[Je]}}function yo(t,r){var n=t[0],e=t[1],o=_e(n,ho(r));return be(o,e)}function go(t,r,n,e){return void 0===t&&(t={}),function(t,r){return Promise.resolve(lo(t,r))}(t,r).then(function(t){return yo(t,e)}).then(function(t){return be({},t,n)})}function bo(t,r,n,e,o,u){void 0===n&&(n=!1),void 0===e&&(e=!1),void 0===o&&(o=!1),void 0===u&&(u=!1);var i={};return i.args=t,i.type=r,!0===n&&(i[Me]=!0),Te(e)&&(i[Re]=e),Dt(o)&&(i[De]=o),K(u)&&(i[Ie]=u),i}function _o(e,o,u){return void 0===u&&(u=!1),new Promise(function(t,r){var n=oo(e,o,u);return u?n[Be].length?r(n[Be]):t(n.data):n.length?r(n):t([])})}function jo(t,r,n){void 0===n&&(n={});var e=n[Me],o=n[Re],u=n[De],i=n[Ie];return bo.apply(null,[t,r,e,o,u,i])}var mo,wo,Oo=Ne,Ao=ze,So=ke,Po=Ee,ko=Pe,Eo=Te,zo=Se,xo=eo,To=oo,Co=bo,Fo=(mo=oo,function(t,r,n){return void 0===n&&(n={}),go(t,r,n,mo)}),No=(wo=oo,function(t,r,n){return void 0===n&&(n={}),function(t,r,n,e){return void 0===t&&(t={}),be(yo(lo(t,r),e),n)}(t,r,n,wo)}),$o=uo,Bo=ao;t.JSONQL_PARAMS_VALIDATOR_INFO="version: 1.4.11 module: umd",t.checkConfig=No,t.checkConfigAsync=Fo,t.constructConfig=Co,t.createConfig=jo,t.inArray=$o,t.isAny=Ao,t.isArray=Eo,t.isBoolean=Po,t.isKeyInObject=Bo,t.isNotEmpty=zo,t.isNumber=ko,t.isObject=Oo,t.isString=So,t.normalizeArgs=xo,t.validateAsync=_o,t.validateSync=To,Object.defineProperty(t,"__esModule",{value:!0})}); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlParamsValidator={})}(this,function(t){"use strict";var r="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof r&&r&&r.Object===Object&&r,e="object"==typeof self&&self&&self.Object===Object&&self,o=n||e||Function("return this")(),u=o.Symbol;function i(t,r){for(var n=-1,e=null==t?0:t.length,o=Array(e);++n>>0,r>>>=0;for(var u=Array(o);++e")){var r=t.replace(Ve,"").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1}function Fe(t,n){var r=t.arg;return 1n.filter(function(t){return!xe(t)(r)}).length)}).length:n.length>n.filter(function(t){return!Te(r,t)}).length}function Ne(r,t){if(void 0===t&&(t=null),et(r)){if(!t)return!0;if(Te(t))return!t.filter(function(t){var n=r[t.name];return!(t.type.length>t.type.filter(function(t){var r;return!!U(n)||(!1!==(r=Ce(t))?!Fe({arg:n},r):!xe(t)(n))}).length)}).length}return!1}function $e(){try{if(window||document)return!0}catch(t){}return!1}var Be="error",Me="optional",Re="enumv",De="checker",Ie="alias",Ve="array.<",Le="type",qe=Me,Ue=Re,Je="args",We=De,Ge=Ie,Ke="continue";function Qe(){return $e()?"browser":function(){try{if(!$e()&&r)return!0}catch(t){}return!1}()?"node":"unknown"}var Ye=function(n){function t(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t)}return n&&(t.__proto__=n),((t.prototype=Object.create(n&&n.prototype)).constructor=t).where=function(){return Qe()},t}(Error),He=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,n.captureStackTrace&&n.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(e,t),e}(Error),Xe=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,n.captureStackTrace&&n.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,t),e}(Error),Ze=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,n.captureStackTrace&&n.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,t),e}(Error),to=function(n){function e(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];n.apply(this,t),this.message=t[0],this.detail=t[1],this.className=e.name,Error.captureStackTrace&&Error.captureStackTrace(this,e)}n&&(e.__proto__=n),(e.prototype=Object.create(n&&n.prototype)).constructor=e;var t={name:{configurable:!0},statusCode:{configurable:!0}};return t.name.get=function(){return"JsonqlError"},t.statusCode.get=function(){return-1},Object.defineProperties(e,t),e}(Ye);function ro(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}function no(t,r){return U(t)?!0!==r.optional||U(r.defaultvalue)?null:r.defaultvalue:t}function eo(n,o){if(!Te(o))throw new to("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===o.length)return[];if(!Te(n))throw new to("args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)");switch(!0){case n.length==o.length:return ro(1),n.map(function(t,r){return{arg:t,index:r,param:o[r]}});case!0===o[0].variable:ro(2);var e=o[0].type;return n.map(function(t,r){return{arg:t,index:r,param:o[r]||{type:e,name:"_"}}});case n.lengtho.length:ro(4);var u=o.length,i=["any"];return n.map(function(t,r){var n=u<=r||!!o[r].optional,e=o[r]||{type:i,name:"_"+r};return{arg:n?no(t,e):t,index:r,param:e,optional:n}});default:throw ro(5),new to("Could not understand your arguments and parameter structure!",{args:n,params:o})}}function oo(t,r,n){var e;void 0===n&&(n=!1);var o=eo(t,r),u=o.filter(function(r){return!0===r.optional||!0===r.param.optional?function(r){var t=r.arg,n=r.param;return!!Se(t)&&!(n.type.length>n.type.filter(function(t){return io(t,r)}).length)}(r):!(r.param.type.length>r.param.type.filter(function(t){return io(t,r)}).length)});return n?((e={})[Be]=u,e.data=function(t){return t.map(function(t){return t.arg})}(o),e):u}function uo(t,r){return!!t.filter(function(t){return t===r}).length}var io=function(t,r){var n;switch(!0){case"object"===t:return!function(t){var r=t.arg,n=t.param,e=[r];return Array.isArray(n.keys)&&n.keys.length&&e.push(n.keys),Ne.apply(null,e)}(r);case"array"===t:return!Te(r.arg);case!1!==(n=Ce(t)):return!Fe(r,n);default:return!xe(t)(r.arg)}},ao=function(t,r){var n=Object.keys(t);return uo(n,r)},co=function(t){return!Se(t)};function fo(t,r){var n=Ae(r,function(t,r){return!t[Ge]});return function(t,r){return yn(t,r)}(n,{})?t:function(t,e){var o={};return e=Ln(e),Lt(t,function(t,r,n){Un(o,e(t,r,n),t)}),o}(t,function(t,r){return function(t,r){return function(t,e,r){var o;return r(t,function(t,r,n){if(e(t,r,n))return o=r,!1}),o}(t,Ln(r),Lt)}(n,function(t){return t.alias===r})||r})}function lo(t,r){var n=function(t,r){var n=fo(t,r);return{pristineValues:_e(Ae(r,function(t,r){return ao(n,r)}),function(t){return t.args}),checkAgainstAppProps:Ae(r,function(t,r){return!ao(n,r)}),config:n}}(t,r),e=n.config,o=n.pristineValues;return[function(o,t){return _e(t,function(t,r){var n,e;return U(o[r])||!0===t[qe]&&co(o[r])?be({},t,((n={})[Ke]=!0,n)):((e={})[Je]=o[r],e[Le]=t[Le],e[qe]=t[qe]||!1,e[Ue]=t[Ue]||!1,e[We]=t[We]||!1,e)})}(e,n.checkAgainstAppProps),o]}var so=function(t){return Te(t)?t:[t]};var po=function(t,r){return!Te(r)||function(t,r){return!!t.filter(function(t){return t===r}).length}(r,t)},vo=function(t,r){try{return!!Dt(r)&&r.apply(null,[t])}catch(t){return!1}};function ho(e){return function(t,r){if(t[Ke])return t[Je];var n=function(t,r){var n,e=[[t[Je]],[(n={},n[Le]=so(t[Le]),n[qe]=t[qe],n)]];return Reflect.apply(r,null,e)}(t,e);if(n.length)throw ro("runValidationAction",r,t),new Xe(r,n);if(!1!==t[Ue]&&!po(t[Je],t[Ue]))throw ro(Ue,t[Ue]),new He(r);if(!1!==t[We]&&!vo(t[Je],t[We]))throw ro(We,t[We]),new Ze(r);return t[Je]}}function yo(t,r){var n=t[0],e=t[1],o=_e(n,ho(r));return be(o,e)}function go(t,r,n,e){return void 0===t&&(t={}),function(t,r){return Promise.resolve(lo(t,r))}(t,r).then(function(t){return yo(t,e)}).then(function(t){return be({},t,n)})}function bo(t,r,n,e,o,u){void 0===n&&(n=!1),void 0===e&&(e=!1),void 0===o&&(o=!1),void 0===u&&(u=!1);var i={};return i.args=t,i.type=r,!0===n&&(i[Me]=!0),Te(e)&&(i[Re]=e),Dt(o)&&(i[De]=o),K(u)&&(i[Ie]=u),i}function _o(e,o,u){return void 0===u&&(u=!1),new Promise(function(t,r){var n=oo(e,o,u);return u?n[Be].length?r(n[Be]):t(n.data):n.length?r(n):t([])})}function jo(t,r,n){void 0===n&&(n={});var e=n[Me],o=n[Re],u=n[De],i=n[Ie];return bo.apply(null,[t,r,e,o,u,i])}var mo,wo,Oo=Ne,Ao=ze,So=ke,Po=Ee,ko=Pe,Eo=Te,zo=Se,xo=eo,To=oo,Co=bo,Fo=(mo=oo,function(t,r,n){return void 0===n&&(n={}),go(t,r,n,mo)}),No=(wo=oo,function(t,r,n){return void 0===n&&(n={}),function(t,r,n,e){return void 0===t&&(t={}),be(yo(lo(t,r),e),n)}(t,r,n,wo)}),$o=uo,Bo=ao;t.JSONQL_PARAMS_VALIDATOR_INFO="version: 1.4.11 module: umd",t.checkConfig=No,t.checkConfigAsync=Fo,t.constructConfig=Co,t.createConfig=jo,t.inArray=$o,t.isAny=Ao,t.isArray=Eo,t.isBoolean=Po,t.isObjectHasKey=Bo,t.isNotEmpty=zo,t.isNumber=ko,t.isObject=Oo,t.isString=So,t.normalizeArgs=xo,t.validateAsync=_o,t.validateSync=To,Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=jsonql-params-validator.umd.js.map diff --git a/packages/validator/index.js b/packages/validator/index.js index e144ab02..4f6f8610 100644 --- a/packages/validator/index.js +++ b/packages/validator/index.js @@ -37,7 +37,7 @@ export const checkConfig = jsonqlOptions.checkConfig(validator.validateSync) // export the two extra functions import isInArray from './src/is-in-array' -import isKeyInObjectFn from './src/is-key-in-object' +import isObjectHasKeyFn from './src/is-key-in-object' export const inArray = isInArray; -export const isKeyInObject = isKeyInObjectFn; +export const isObjectHasKey = isObjectHasKeyFn; diff --git a/packages/validator/src/is-key-in-object.js b/packages/validator/src/is-key-in-object.js index 097c97e9..b8e8c278 100644 --- a/packages/validator/src/is-key-in-object.js +++ b/packages/validator/src/is-key-in-object.js @@ -1,9 +1,9 @@ import isInArray from './is-in-array' -const isKeyInObject = function(obj, key) { +const isObjectHasKey = function(obj, key) { const keys = Object.keys(obj) return isInArray(keys, key) } -export default isKeyInObject; +export default isObjectHasKey; diff --git a/packages/validator/src/options/prepare-args-for-validation.js b/packages/validator/src/options/prepare-args-for-validation.js index 36266c19..dbcc49c3 100644 --- a/packages/validator/src/options/prepare-args-for-validation.js +++ b/packages/validator/src/options/prepare-args-for-validation.js @@ -19,7 +19,7 @@ import { } from '../constants' import notEmpty from '../not-empty' import { checkIsObject } from '../object' -import isKeyInObject from '../is-key-in-object' +import isObjectHasKey from '../is-key-in-object' // just not to make my head hurt const isEmpty = value => !notEmpty(value) @@ -53,11 +53,11 @@ export function preservePristineValues(config, appProps) { const _config = mapAliasConfigKeys(config, appProps) // take the default value out const pristineValues = mapValues( - omitBy(appProps, (value, key) => isKeyInObject(_config, key)), + omitBy(appProps, (value, key) => isObjectHasKey(_config, key)), value => value.args ) // for testing the value - const checkAgainstAppProps = omitBy(appProps, (value, key) => !isKeyInObject(_config, key)) + const checkAgainstAppProps = omitBy(appProps, (value, key) => !isObjectHasKey(_config, key)) // output return { pristineValues, diff --git a/packages/ws-base/src/client/generator.js b/packages/ws-base/src/client/generator.js index 9279f19c..5549619c 100644 --- a/packages/ws-base/src/client/generator.js +++ b/packages/ws-base/src/client/generator.js @@ -15,7 +15,7 @@ import { import { validateAsync, validateSync, - isKeyInObject, + isObjectHasKey, isString } from 'jsonql-params-validator' import { @@ -110,10 +110,10 @@ function actionCall(ee, namespace, resolverName, args = []) { * @return {void} nothing */ function respondHandler(data, resolver, rejecter) { - if (isKeyInObject(data, ERROR_KEY)) { + if (isObjectHasKey(data, ERROR_KEY)) { debugFn('rejecter called', data[ERROR_KEY]) rejecter(data[ERROR_KEY]) - } else if (isKeyInObject(data, DATA_KEY)) { + } else if (isObjectHasKey(data, DATA_KEY)) { debugFn('resolver called', data[DATA_KEY]) resolver(data[DATA_KEY]) } else { diff --git a/packages/ws-base/src/client/node/main.cjs.js b/packages/ws-base/src/client/node/main.cjs.js index c85f14bf..9882b7c2 100644 --- a/packages/ws-base/src/client/node/main.cjs.js +++ b/packages/ws-base/src/client/node/main.cjs.js @@ -5632,7 +5632,7 @@ var createConfig$1 = createConfig; var checkConfigAsync$1 = checkConfigAsync(validateSync); -var isKeyInObject = checkKeyInObject; +var isObjectHasKey = checkKeyInObject; var isContract = checkIsContract; var createQueryStr$1 = createQueryStr; @@ -6577,7 +6577,7 @@ var JsonqlWsEvt = /*@__PURE__*/(function (NBEventService) { // This is ported back from ws-server and it will get use in the server / client side function extractSocketPart(contract) { - if (isKeyInObject(contract, 'socket')) { + if (isObjectHasKey(contract, 'socket')) { return contract.socket; } return contract; @@ -6915,7 +6915,7 @@ var keys$1 = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ]; var isWsReply = function (payload) { var data = payload.data; if (data) { - var result = keys$1.filter(function (key) { return isKeyInObject(data, key); }); + var result = keys$1.filter(function (key) { return isObjectHasKey(data, key); }); return (result.length === keys$1.length) ? data : false; } return false; @@ -7441,10 +7441,10 @@ function actionCall(ee, namespace, resolverName, args) { * @return {void} nothing */ function respondHandler(data, resolver, rejecter) { - if (isKeyInObject(data, 'error')) { + if (isObjectHasKey(data, 'error')) { debugFn$7('rejecter called', data.error); rejecter(data.error); - } else if (isKeyInObject(data, 'data')) { + } else if (isObjectHasKey(data, 'data')) { debugFn$7('resolver called', data.data); resolver(data.data); } else { diff --git a/packages/ws-base/src/server/share/helpers.js b/packages/ws-base/src/server/share/helpers.js index 05d84083..c4943057 100644 --- a/packages/ws-base/src/server/share/helpers.js +++ b/packages/ws-base/src/server/share/helpers.js @@ -10,7 +10,7 @@ const { } = require('jsonql-constants') const { isString, - isKeyInObject + isObjectHasKey } = require('jsonql-params-validator') const { JsonqlError, @@ -35,7 +35,7 @@ const isWsReply = payload => { const json = isString(payload) ? JSON.parse(payload) : payload; const { data } = json; if (data) { - let result = keys.filter(key => isKeyInObject(data, key)) + let result = keys.filter(key => isObjectHasKey(data, key)) return (result.length === keys.length) ? data : false; } return false; diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 648e1307..9ec2e769 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -15,7 +15,7 @@ import { } from 'jsonql-errors' import { validateAsync, - isKeyInObject, + isObjectHasKey, isString } from 'jsonql-params-validator' import { diff --git a/packages/ws-client/src/core/respond-handler.js b/packages/ws-client/src/core/respond-handler.js index 4b793285..8230272f 100644 --- a/packages/ws-client/src/core/respond-handler.js +++ b/packages/ws-client/src/core/respond-handler.js @@ -1,7 +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 { isKeyInObject } from 'jsonql-utils/module' +import { isObjectHasKey } from 'jsonql-utils/module' import { getDebug } from '../utils' const debugFn = getDebug('respondHandler') /** @@ -12,10 +12,10 @@ const debugFn = getDebug('respondHandler') * @return {void} nothing */ export function respondHandler(data, resolver, rejecter) { - if (isKeyInObject(data, ERROR_KEY)) { + if (isObjectHasKey(data, ERROR_KEY)) { debugFn('-- rejecter called --', data[ERROR_KEY]) rejecter(data[ERROR_KEY]) - } else if (isKeyInObject(data, DATA_KEY)) { + } else if (isObjectHasKey(data, DATA_KEY)) { debugFn('-- resolver called --', data[DATA_KEY]) resolver(data[DATA_KEY]) } else { diff --git a/packages/ws-client/tests/fixtures/beta/src/generator.js b/packages/ws-client/tests/fixtures/beta/src/generator.js index 0228923b..b445fff7 100644 --- a/packages/ws-client/tests/fixtures/beta/src/generator.js +++ b/packages/ws-client/tests/fixtures/beta/src/generator.js @@ -15,7 +15,7 @@ import { import { validateAsync, validateSync, - isKeyInObject, + isObjectHasKey, isString } from 'jsonql-params-validator' import { @@ -108,10 +108,10 @@ function actionCall(ee, namespace, resolverName, args = []) { * @return {void} nothing */ function respondHandler(data, resolver, rejecter) { - if (isKeyInObject(data, 'error')) { + if (isObjectHasKey(data, 'error')) { debugFn('rejecter called', data.error) rejecter(data.error) - } else if (isKeyInObject(data, 'data')) { + } else if (isObjectHasKey(data, 'data')) { debugFn('resolver called', data.data) resolver(data.data) } else { diff --git a/packages/ws-client/tests/fixtures/beta/src/io/io-main-handler.js b/packages/ws-client/tests/fixtures/beta/src/io/io-main-handler.js index 34116892..2ea6f1a7 100644 --- a/packages/ws-client/tests/fixtures/beta/src/io/io-main-handler.js +++ b/packages/ws-client/tests/fixtures/beta/src/io/io-main-handler.js @@ -11,7 +11,7 @@ import { DATA_KEY, ON_READY_PROP_NAME } from 'jsonql-constants' -import { isKeyInObject } from 'jsonql-params-validator' +import { isObjectHasKey } from 'jsonql-params-validator' import { getDebug, createEvt, formatPayload } from '../utils' const debugFn = getDebug('io-main-handler') diff --git a/packages/ws-client/tests/fixtures/beta/src/node/main.cjs.js b/packages/ws-client/tests/fixtures/beta/src/node/main.cjs.js index 7108ecfd..11f07114 100644 --- a/packages/ws-client/tests/fixtures/beta/src/node/main.cjs.js +++ b/packages/ws-client/tests/fixtures/beta/src/node/main.cjs.js @@ -5618,7 +5618,7 @@ var createConfig$1 = createConfig; var checkConfigAsync$1 = checkConfigAsync(validateSync); -var isKeyInObject = checkKeyInObject; +var isObjectHasKey = checkKeyInObject; var isContract = checkIsContract; var createQueryStr$1 = createQueryStr; @@ -6430,7 +6430,7 @@ var JsonqlWsEvt = /*@__PURE__*/(function (NBEventService) { // This is ported back from ws-server and it will get use in the server / client side function extractSocketPart(contract) { - if (isKeyInObject(contract, 'socket')) { + if (isObjectHasKey(contract, 'socket')) { return contract.socket; } return contract; @@ -6768,7 +6768,7 @@ var keys$1 = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ]; var isWsReply = function (payload) { var data = payload.data; if (data) { - var result = keys$1.filter(function (key) { return isKeyInObject(data, key); }); + var result = keys$1.filter(function (key) { return isObjectHasKey(data, key); }); return (result.length === keys$1.length) ? data : false; } return false; @@ -7294,10 +7294,10 @@ function actionCall(ee, namespace, resolverName, args) { * @return {void} nothing */ function respondHandler(data, resolver, rejecter) { - if (isKeyInObject(data, 'error')) { + if (isObjectHasKey(data, 'error')) { debugFn$7('rejecter called', data.error); rejecter(data.error); - } else if (isKeyInObject(data, 'data')) { + } else if (isObjectHasKey(data, 'data')) { debugFn$7('resolver called', data.data); resolver(data.data); } else { diff --git a/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js b/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js index e223ed47..bad045c9 100644 --- a/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js +++ b/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js @@ -1,6 +1,6 @@ // take the ws reply data for use import { WS_EVT_NAME, WS_DATA_NAME, WS_REPLY_TYPE } from 'jsonql-constants' -import { isString, isKeyInObject } from 'jsonql-params-validator' +import { isString, isObjectHasKey } from 'jsonql-params-validator' import { JsonqlError, clientErrorsHandler } from 'jsonql-errors' const keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ] @@ -12,7 +12,7 @@ const keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ] const isWsReply = payload => { const { data } = payload; if (data) { - let result = keys.filter(key => isKeyInObject(data, key)) + let result = keys.filter(key => isObjectHasKey(data, key)) return (result.length === keys.length) ? data : false; } return false; diff --git a/packages/ws-server/src/share/helpers.js b/packages/ws-server/src/share/helpers.js index ada86cfb..2291071a 100644 --- a/packages/ws-server/src/share/helpers.js +++ b/packages/ws-server/src/share/helpers.js @@ -10,7 +10,7 @@ const { } = require('jsonql-constants') const { isString, - isKeyInObject + isObjectHasKey } = require('jsonql-params-validator') const { JsonqlError, @@ -52,7 +52,7 @@ const isWsReply = payload => { const json = isString(payload) ? JSON.parse(payload) : payload; const { data } = json; if (data) { - let result = WS_KEYS.filter(key => isKeyInObject(data, key)) + let result = WS_KEYS.filter(key => isObjectHasKey(data, key)) return (result.length === WS_KEYS.length) ? data : false; } return false; -- Gitee From fe660529a09a12509fcc48a4e655955e2efa9b8c Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 22:24:39 +0800 Subject: [PATCH 07/44] add two new interface to the http-client --- packages/http-client/module.js | 28 ++++++++++++++++++++++++++++ packages/http-client/sync.js | 22 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 packages/http-client/module.js create mode 100644 packages/http-client/sync.js diff --git a/packages/http-client/module.js b/packages/http-client/module.js new file mode 100644 index 00000000..0b23d7e3 --- /dev/null +++ b/packages/http-client/module.js @@ -0,0 +1,28 @@ +// new module interface for @jsonql/client +// this will be use with the @jsonql/ws, @jsonql/socketio +import { jsonqlAsync, jsonqlSync, ee as getEventEmitter } from './src' +import { isContract, isObjectHasKey, getContractFromConfig, hasProp } from './src/utils' +import { isObject } from 'jsonql-params-validator' +import { SOCKET_NAME } from 'jsonql-constants' + +/** + * When pass a static contract then it return a static interface + * otherwise it will become the async interface + * @param {object} Fly the http engine + * @param {object} config configuration + * @return {object} jsonqlClient + */ +export default function jsonqlClient(Fly, config) { + const ee = getEventEmitter(config.debugOn) + if (config.contract && isContract(config.contract)) { + if (isObjectHasKey(config.contract, SOCKET_NAME) && hasProp(config.contract[SOCKET_NAME])) { + + } + + let client = jsonqlAync(ee, config, Fly) + + + } + // we need to break this up! + return jsonqlAsync(ee, config, Fly) +} diff --git a/packages/http-client/sync.js b/packages/http-client/sync.js new file mode 100644 index 00000000..3fd6c83e --- /dev/null +++ b/packages/http-client/sync.js @@ -0,0 +1,22 @@ +// this will return the sync interface instead of the switching +// because that will cause a lot of confusion about the api +// new module interface for @jsonql/client +// this will be use with the @jsonql/ws, @jsonql/socketio +import { jsonqlAsync, jsonqlSync, ee as getEventEmitter } from './src' +import { isContract } from './src/utils' +import { JsonqlError } from 'jsonql-errors' + +/** + * When pass a static contract then it return a static interface + * otherwise it will become the async interface + * @param {object} Fly the http engine + * @param {object} config configuration + * @return {object} jsonqlClient + */ +export function jsonqlSyncClient(Fly, config) { + const ee = getEventEmitter(config.debugOn) + if (config.contract && isContract(config.contract)) { + return jsonqlSync(ee, config, Fly) + } + throw new JsonqlError('jsonqlSyncClient', `Expect to pass the contract via configuration!`) +} -- Gitee From 68bf4623db8e5285d479ad3db6d9fd255b05ea30 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 22:25:55 +0800 Subject: [PATCH 08/44] jsonql-utils to 0.8.0 --- packages/utils/browser.js | 2 +- packages/utils/main.js | 2 +- packages/utils/main.js.map | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/utils/browser.js b/packages/utils/browser.js index 03385efa..6463e17c 100644 --- a/packages/utils/browser.js +++ b/packages/utils/browser.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return H(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case Ir:return t[Lr];case $r:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Gr[0]:return Ir;case t===Gr[1]:return $r;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isJsonqlErrorObj=pe,t.isObjectHasKey=Z,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==H(t)},t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return G(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case $r:return t[Lr];case Br:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Hr[0]:return $r;case t===Hr[1]:return Br;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},t.isJsonqlErrorObj=pe,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==G(t)},t.isObjectHasKey=Z,t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=browser.js.map diff --git a/packages/utils/main.js b/packages/utils/main.js index 415406d5..c381c69c 100644 --- a/packages/utils/main.js +++ b/packages/utils/main.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(r){return r&&"object"==typeof r&&"default"in r?r.default:r}Object.defineProperty(exports,"__esModule",{value:!0});var fs=_interopDefault(require("fs")),path=require("path"),isArray=Array.isArray,global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol?Symbol.toStringTag:void 0;function getRawTag(r){var t=hasOwnProperty.call(r,symToStringTag),e=r[symToStringTag];try{r[symToStringTag]=void 0;var n=!0}catch(r){}var o=nativeObjectToString.call(r);return n&&(t?r[symToStringTag]=e:delete r[symToStringTag]),o}var objectProto$1=Object.prototype,nativeObjectToString$1=objectProto$1.toString;function objectToString(r){return nativeObjectToString$1.call(r)}var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag$1=Symbol?Symbol.toStringTag:void 0;function baseGetTag(r){return null==r?void 0===r?undefinedTag:nullTag:symToStringTag$1&&symToStringTag$1 in Object(r)?getRawTag(r):objectToString(r)}function overArg(r,t){return function(e){return r(t(e))}}var getPrototype=overArg(Object.getPrototypeOf,Object);function isObjectLike(r){return null!=r&&"object"==typeof r}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(r){if(!isObjectLike(r)||baseGetTag(r)!=objectTag)return!1;var t=getPrototype(r);if(null===t)return!0;var e=hasOwnProperty$1.call(t,"constructor")&&t.constructor;return"function"==typeof e&&e instanceof e&&funcToString.call(e)==objectCtorString}function arrayMap(r,t){for(var e=-1,n=null==r?0:r.length,o=Array(n);++eo?0:o+t),(e=e>o?o:e)<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var a=Array(o);++n=n?r:baseSlice(r,t,e)}function baseFindIndex(r,t,e,n){for(var o=r.length,a=e+(n?1:-1);n?a--:++a-1;);return e}function charsStartIndex(r,t){for(var e=-1,n=r.length;++e-1;);return e}function asciiToArray(r){return r.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(r){return reHasUnicode.test(r)}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(r){return r.match(reUnicode)||[]}function stringToArray(r){return hasUnicode(r)?unicodeToArray(r):asciiToArray(r)}function toString(r){return null==r?"":baseToString(r)}var reTrim=/^\s+|\s+$/g;function trim(r,t,e){if((r=toString(r))&&(e||void 0===t))return r.replace(reTrim,"");if(!r||!(t=baseToString(t)))return r;var n=stringToArray(r),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(r,t){return!!r.filter((function(r){return r===t})).length},toArray=function(r){return isArray(r)?r:[r]},parse=function(r){try{return JSON.parse(r)}catch(t){return r}},isObjectHasKey=function(r,t){var e=Object.keys(r);return inArray(e,t)},createEvt=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.join("_")},timestamp=function(r){void 0===r&&(r=!1);var t=Date.now();return r?Math.floor(t/1e3):t},urlParams=function(r,t){var e=[];for(var n in t)e.push([n,t[n]].join("="));return[r,e.join("&")].join("?")},cacheBurstUrl=function(r){return urlParams(r,cacheBurst())},cacheBurst=function(){return{_cb:timestamp()}},dasherize=function(r){return trim(r).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},getConfigValue=function(r,t){return t&&isPlainObject(t)&&r in t?t[r]:void 0},toJson=function(r){return"string"==typeof r?parse(r):JSON.parse(JSON.stringify(r))},isNotEmpty=function(r){return void 0!==r&&!1!==r&&null!==r&&""!==trim(r)},chainFns=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return t.reduce((function(r,t){return Reflect.apply(t,null,toArray(r))}),Reflect.apply(r,null,e))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(r,t){return r===t||r!=r&&t!=t}function assocIndexOf(r,t){for(var e=r.length;e--;)if(eq(r[e][0],t))return e;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(r){var t=this.__data__,e=assocIndexOf(t,r);return!(e<0)&&(e==t.length-1?t.pop():splice.call(t,e,1),--this.size,!0)}function listCacheGet(r){var t=this.__data__,e=assocIndexOf(t,r);return e<0?void 0:t[e][1]}function listCacheHas(r){return assocIndexOf(this.__data__,r)>-1}function listCacheSet(r,t){var e=this.__data__,n=assocIndexOf(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}function ListCache(r){var t=-1,e=null==r?0:r.length;for(this.clear();++t-1&&r%1==0&&r<=MAX_SAFE_INTEGER}function isArrayLike(r){return null!=r&&isLength(r.length)&&!isFunction(r)}function isArrayLikeObject(r){return isObjectLike(r)&&isArrayLike(r)}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(r){return isObjectLike(r)&&isLength(r.length)&&!!typedArrayTags[baseGetTag(r)]}function baseUnary(r){return function(t){return r(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var r=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return r||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(r){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(r,t){if(("constructor"!==t||"function"!=typeof r[t])&&"__proto__"!=t)return r[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(r,t,e){var n=r[t];hasOwnProperty$6.call(r,t)&&eq(n,e)&&(void 0!==e||t in r)||baseAssignValue(r,t,e)}function copyObject(r,t,e,n){var o=!e;e||(e={});for(var a=-1,i=t.length;++a-1&&r%1==0&&r0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(r,t){return setToString(overRest(r,t,identity),r+"")}function isIterateeCall(r,t,e){if(!isObject(e))return!1;var n=typeof t;return!!("number"==n?isArrayLike(e)&&isIndex(t,e.length):"string"==n&&t in e)&&eq(e[t],r)}function createAssigner(r){return baseRest((function(t,e){var n=-1,o=e.length,a=o>1?e[o-1]:void 0,i=o>2?e[2]:void 0;for(a=r.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(e[0],e[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===r[s-2]?2:"="===r[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,e=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[r.charCodeAt(t)]<<2|revLookup[r.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[r.charCodeAt(t)]<<10|revLookup[r.charCodeAt(t+1)]<<4|revLookup[r.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(r){return lookup[r>>18&63]+lookup[r>>12&63]+lookup[r>>6&63]+lookup[63&r]}function encodeChunk(r,t,e){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=r[e-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(r[e-2]<<8)+r[e-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(r,t,e,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=e?o-1:0,p=e?-1:1,h=r[t+l];for(l+=p,a=h&(1<<-c)-1,h>>=-c,c+=s;c>0;a=256*a+r[t+l],l+=p,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+r[t+l],l+=p,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,n),a-=f}return(h?-1:1)*i*Math.pow(2,a-n)}function write(r,t,e,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;r[e+h]=255&s,h+=g,s/=256,o-=8);for(i=i<0;r[e+h]=255&i,h+=g,i/=256,f-=8);r[e+h-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(r){return"[object Array]"==toString$1.call(r)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(r,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|r}function internalIsBuffer(r){return!(null==r||!r._isBuffer)}function byteLength(r,t){if(internalIsBuffer(r))return r.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;"string"!=typeof r&&(r=""+r);var e=r.length;if(0===e)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return utf8ToBytes(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return base64ToBytes(r).length;default:if(n)return utf8ToBytes(r).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(r,t,e){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(r||(r="utf8");;)switch(r){case"hex":return hexSlice(this,t,e);case"utf8":case"utf-8":return utf8Slice(this,t,e);case"ascii":return asciiSlice(this,t,e);case"latin1":case"binary":return latin1Slice(this,t,e);case"base64":return base64Slice(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}function swap(r,t,e){var n=r[t];r[t]=r[e],r[e]=n}function bidirectionalIndexOf(r,t,e,n,o){if(0===r.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(o)return-1;e=r.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(r,t,e,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):arrayIndexOf(r,[t],e,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(r,t,e,n,o){var a,i=1,s=r.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(r.length<2||t.length<2)return-1;i=2,s/=2,u/=2,e/=2}function f(r,t){return 1===i?r[t]:r.readUInt16BE(t*i)}if(o){var c=-1;for(a=e;as&&(e=s-u),a=e;a>=0;a--){for(var l=!0,p=0;po&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=e)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=r[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=r[o+1],i=r[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=r[o+1],i=r[o+2],s=r[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(r){return r.__proto__=Buffer$2.prototype,r},Buffer$2.from=function(r,t,e){return from(null,r,t,e)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(r,t,e){return alloc(null,r,t,e)},Buffer$2.allocUnsafe=function(r){return allocUnsafe$1(null,r)},Buffer$2.allocUnsafeSlow=function(r){return allocUnsafe$1(null,r)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(r,t){if(!internalIsBuffer(r)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(r===t)return 0;for(var e=r.length,n=t.length,o=0,a=Math.min(e,n);o0&&(r=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(r+=" ... ")),""},Buffer$2.prototype.compare=function(r,t,e,n,o){if(!internalIsBuffer(r))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===e&&(e=r?r.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||e>r.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=e)return 0;if(n>=o)return-1;if(t>=e)return 1;if(this===r)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(e>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=r.slice(t,e),c=0;co)&&(e=o),r.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,r,t,e);case"utf8":case"utf-8":return utf8Write(this,r,t,e);case"ascii":return asciiWrite(this,r,t,e);case"latin1":case"binary":return latin1Write(this,r,t,e);case"base64":return base64Write(this,r,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,r,t,e);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(r){var t=r.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,r);for(var e="",n=0;nn)&&(e=n);for(var o="",a=t;ae)throw new RangeError("Trying to access beyond buffer length")}function checkInt(r,t,e,n,o,a){if(!internalIsBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||tr.length)throw new RangeError("Index out of range")}function objectWriteUInt16(r,t,e,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(r.length-e,2);o>>8*(n?o:1-o)}function objectWriteUInt32(r,t,e,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(r.length-e,4);o>>8*(n?o:3-o)&255}function checkIEEE754(r,t,e,n,o,a){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function writeFloat(r,t,e,n,o){return o||checkIEEE754(r,t,e,4),write(r,t,e,n,23,4),e+4}function writeDouble(r,t,e,n,o){return o||checkIEEE754(r,t,e,8),write(r,t,e,n,52,8),e+8}Buffer$2.prototype.slice=function(r,t){var e,n=this.length;if((r=~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[r+--t]*o;return n},Buffer$2.prototype.readUInt8=function(r,t){return t||checkOffset(r,1,this.length),this[r]},Buffer$2.prototype.readUInt16LE=function(r,t){return t||checkOffset(r,2,this.length),this[r]|this[r+1]<<8},Buffer$2.prototype.readUInt16BE=function(r,t){return t||checkOffset(r,2,this.length),this[r]<<8|this[r+1]},Buffer$2.prototype.readUInt32LE=function(r,t){return t||checkOffset(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+16777216*this[r+3]},Buffer$2.prototype.readUInt32BE=function(r,t){return t||checkOffset(r,4,this.length),16777216*this[r]+(this[r+1]<<16|this[r+2]<<8|this[r+3])},Buffer$2.prototype.readIntLE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=this[r],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=t,o=1,a=this[r+--n];n>0&&(o*=256);)a+=this[r+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(r,t){return t||checkOffset(r,1,this.length),128&this[r]?-1*(255-this[r]+1):this[r]},Buffer$2.prototype.readInt16LE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r]|this[r+1]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt16BE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r+1]|this[r]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt32LE=function(r,t){return t||checkOffset(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24},Buffer$2.prototype.readInt32BE=function(r,t){return t||checkOffset(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]},Buffer$2.prototype.readFloatLE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!0,23,4)},Buffer$2.prototype.readFloatBE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(r,t,e,n){(r=+r,t|=0,e|=0,n)||checkInt(this,r,t,e,Math.pow(2,8*e)-1,0);var o=1,a=0;for(this[t]=255&r;++a=0&&(a*=256);)this[t+o]=r/a&255;return t+e},Buffer$2.prototype.writeUInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),this[t]=255&r,t+1},Buffer$2.prototype.writeUInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=255&r):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&r;++a>0)-s&255;return t+e},Buffer$2.prototype.writeIntBE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=e-1,i=1,s=0;for(this[t+a]=255&r;--a>=0&&(i*=256);)r<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(r/i>>0)-s&255;return t+e},Buffer$2.prototype.writeInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),r<0&&(r=255+r+1),this[t]=255&r,t+1},Buffer$2.prototype.writeInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(r,t,e){return writeFloat(this,r,t,!0,e)},Buffer$2.prototype.writeFloatBE=function(r,t,e){return writeFloat(this,r,t,!1,e)},Buffer$2.prototype.writeDoubleLE=function(r,t,e){return writeDouble(this,r,t,!0,e)},Buffer$2.prototype.writeDoubleBE=function(r,t,e){return writeDouble(this,r,t,!1,e)},Buffer$2.prototype.copy=function(r,t,e,n){if(e||(e=0),n||0===n||(n=this.length),t>=r.length&&(t=r.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),r.length-t=0;--o)r[o+t]=this[o+e];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,r||(r=0),"number"==typeof r)for(a=t;a55295&&e<57344){if(!o){if(e>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=e;continue}if(e<56320){(t-=3)>-1&&a.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,e<128){if((t-=1)<0)break;a.push(e)}else if(e<2048){if((t-=2)<0)break;a.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;a.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return a}function asciiToBytes(r){for(var t=[],e=0;e>8,o=e%256,a.push(o),a.push(n);return a}function base64ToBytes(r){return toByteArray(base64clean(r))}function blitBuffer(r,t,e,n){for(var o=0;o=t.length||o>=r.length);++o)t[o+e]=r[o];return o}function isnan(r){return r!=r}function isBuffer$1(r){return null!=r&&(!!r._isBuffer||isFastBuffer(r)||isSlowBuffer(r))}function isFastBuffer(r){return!!r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r)}function isSlowBuffer(r){return"function"==typeof r.readFloatLE&&"function"==typeof r.slice&&isFastBuffer(r.slice(0,0))}function buff(r,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(r)?r:new Buffer$2.from(r,t)}var replaceErrors=function(r,t){if(t instanceof Error){var e={};return Object.getOwnPropertyNames(t).forEach((function(r){e[r]=t[r]})),e}return t},printError=function(r){return JSON.stringify(r,replaceErrors)};function findFromContract(r,t,e){return!!(e[r]&&e[r][t]&&e[r][t].file&&fs.existsSync(e[r][t].file))&&e[r][t].file}var DOT=".",getDocLen=function(r){return Buffer$2.byteLength(r,"utf8")},headerParser=function(r,t){try{var e=r.headers.accept.split(",");return t?e.filter((function(r){return r===t})):e}catch(r){return[]}},isHeaderPresent=function(r,t){return!!headerParser(r,t).length},getPathToFn=function(r,t,e){var n=e.resolverDir,o=dasherize(r),a=[];e.contract&&e.contract[t]&&e.contract[t].path&&a.push(e.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;so?0:o+t),(e=e>o?o:e)<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var a=Array(o);++n=n?r:baseSlice(r,t,e)}function baseFindIndex(r,t,e,n){for(var o=r.length,a=e+(n?1:-1);n?a--:++a-1;);return e}function charsStartIndex(r,t){for(var e=-1,n=r.length;++e-1;);return e}function asciiToArray(r){return r.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(r){return reHasUnicode.test(r)}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(r){return r.match(reUnicode)||[]}function stringToArray(r){return hasUnicode(r)?unicodeToArray(r):asciiToArray(r)}function toString(r){return null==r?"":baseToString(r)}var reTrim=/^\s+|\s+$/g;function trim(r,t,e){if((r=toString(r))&&(e||void 0===t))return r.replace(reTrim,"");if(!r||!(t=baseToString(t)))return r;var n=stringToArray(r),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(r,t){return!!r.filter((function(r){return r===t})).length},toArray=function(r){return isArray(r)?r:[r]},parse=function(r){try{return JSON.parse(r)}catch(t){return r}},isObjectHasKey=function(r,t){var e=Object.keys(r);return inArray(e,t)},createEvt=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.join("_")},timestamp=function(r){void 0===r&&(r=!1);var t=Date.now();return r?Math.floor(t/1e3):t},urlParams=function(r,t){var e=[];for(var n in t)e.push([n,t[n]].join("="));return[r,e.join("&")].join("?")},cacheBurstUrl=function(r){return urlParams(r,cacheBurst())},cacheBurst=function(){return{_cb:timestamp()}},dasherize=function(r){return trim(r).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},getConfigValue=function(r,t){return t&&isPlainObject(t)&&r in t?t[r]:void 0},toJson=function(r){return"string"==typeof r?parse(r):JSON.parse(JSON.stringify(r))},isNotEmpty=function(r){return void 0!==r&&!1!==r&&null!==r&&""!==trim(r)},chainFns=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return t.reduce((function(r,t){return Reflect.apply(t,null,toArray(r))}),Reflect.apply(r,null,e))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(r,t){return r===t||r!=r&&t!=t}function assocIndexOf(r,t){for(var e=r.length;e--;)if(eq(r[e][0],t))return e;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(r){var t=this.__data__,e=assocIndexOf(t,r);return!(e<0)&&(e==t.length-1?t.pop():splice.call(t,e,1),--this.size,!0)}function listCacheGet(r){var t=this.__data__,e=assocIndexOf(t,r);return e<0?void 0:t[e][1]}function listCacheHas(r){return assocIndexOf(this.__data__,r)>-1}function listCacheSet(r,t){var e=this.__data__,n=assocIndexOf(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}function ListCache(r){var t=-1,e=null==r?0:r.length;for(this.clear();++t-1&&r%1==0&&r<=MAX_SAFE_INTEGER}function isArrayLike(r){return null!=r&&isLength(r.length)&&!isFunction(r)}function isArrayLikeObject(r){return isObjectLike(r)&&isArrayLike(r)}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(r){return isObjectLike(r)&&isLength(r.length)&&!!typedArrayTags[baseGetTag(r)]}function baseUnary(r){return function(t){return r(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var r=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return r||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(r){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(r,t){if(("constructor"!==t||"function"!=typeof r[t])&&"__proto__"!=t)return r[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(r,t,e){var n=r[t];hasOwnProperty$6.call(r,t)&&eq(n,e)&&(void 0!==e||t in r)||baseAssignValue(r,t,e)}function copyObject(r,t,e,n){var o=!e;e||(e={});for(var a=-1,i=t.length;++a-1&&r%1==0&&r0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(r,t){return setToString(overRest(r,t,identity),r+"")}function isIterateeCall(r,t,e){if(!isObject(e))return!1;var n=typeof t;return!!("number"==n?isArrayLike(e)&&isIndex(t,e.length):"string"==n&&t in e)&&eq(e[t],r)}function createAssigner(r){return baseRest((function(t,e){var n=-1,o=e.length,a=o>1?e[o-1]:void 0,i=o>2?e[2]:void 0;for(a=r.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(e[0],e[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===r[s-2]?2:"="===r[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,e=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[r.charCodeAt(t)]<<2|revLookup[r.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[r.charCodeAt(t)]<<10|revLookup[r.charCodeAt(t+1)]<<4|revLookup[r.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(r){return lookup[r>>18&63]+lookup[r>>12&63]+lookup[r>>6&63]+lookup[63&r]}function encodeChunk(r,t,e){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=r[e-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(r[e-2]<<8)+r[e-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(r,t,e,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=e?o-1:0,p=e?-1:1,h=r[t+l];for(l+=p,a=h&(1<<-c)-1,h>>=-c,c+=s;c>0;a=256*a+r[t+l],l+=p,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+r[t+l],l+=p,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,n),a-=f}return(h?-1:1)*i*Math.pow(2,a-n)}function write(r,t,e,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;r[e+h]=255&s,h+=g,s/=256,o-=8);for(i=i<0;r[e+h]=255&i,h+=g,i/=256,f-=8);r[e+h-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(r){return"[object Array]"==toString$1.call(r)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(r,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|r}function internalIsBuffer(r){return!(null==r||!r._isBuffer)}function byteLength(r,t){if(internalIsBuffer(r))return r.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;"string"!=typeof r&&(r=""+r);var e=r.length;if(0===e)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return utf8ToBytes(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return base64ToBytes(r).length;default:if(n)return utf8ToBytes(r).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(r,t,e){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(r||(r="utf8");;)switch(r){case"hex":return hexSlice(this,t,e);case"utf8":case"utf-8":return utf8Slice(this,t,e);case"ascii":return asciiSlice(this,t,e);case"latin1":case"binary":return latin1Slice(this,t,e);case"base64":return base64Slice(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}function swap(r,t,e){var n=r[t];r[t]=r[e],r[e]=n}function bidirectionalIndexOf(r,t,e,n,o){if(0===r.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(o)return-1;e=r.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(r,t,e,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):arrayIndexOf(r,[t],e,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(r,t,e,n,o){var a,i=1,s=r.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(r.length<2||t.length<2)return-1;i=2,s/=2,u/=2,e/=2}function f(r,t){return 1===i?r[t]:r.readUInt16BE(t*i)}if(o){var c=-1;for(a=e;as&&(e=s-u),a=e;a>=0;a--){for(var l=!0,p=0;po&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=e)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=r[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=r[o+1],i=r[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=r[o+1],i=r[o+2],s=r[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(r){return r.__proto__=Buffer$2.prototype,r},Buffer$2.from=function(r,t,e){return from(null,r,t,e)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(r,t,e){return alloc(null,r,t,e)},Buffer$2.allocUnsafe=function(r){return allocUnsafe$1(null,r)},Buffer$2.allocUnsafeSlow=function(r){return allocUnsafe$1(null,r)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(r,t){if(!internalIsBuffer(r)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(r===t)return 0;for(var e=r.length,n=t.length,o=0,a=Math.min(e,n);o0&&(r=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(r+=" ... ")),""},Buffer$2.prototype.compare=function(r,t,e,n,o){if(!internalIsBuffer(r))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===e&&(e=r?r.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||e>r.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=e)return 0;if(n>=o)return-1;if(t>=e)return 1;if(this===r)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(e>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=r.slice(t,e),c=0;co)&&(e=o),r.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,r,t,e);case"utf8":case"utf-8":return utf8Write(this,r,t,e);case"ascii":return asciiWrite(this,r,t,e);case"latin1":case"binary":return latin1Write(this,r,t,e);case"base64":return base64Write(this,r,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,r,t,e);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(r){var t=r.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,r);for(var e="",n=0;nn)&&(e=n);for(var o="",a=t;ae)throw new RangeError("Trying to access beyond buffer length")}function checkInt(r,t,e,n,o,a){if(!internalIsBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||tr.length)throw new RangeError("Index out of range")}function objectWriteUInt16(r,t,e,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(r.length-e,2);o>>8*(n?o:1-o)}function objectWriteUInt32(r,t,e,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(r.length-e,4);o>>8*(n?o:3-o)&255}function checkIEEE754(r,t,e,n,o,a){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function writeFloat(r,t,e,n,o){return o||checkIEEE754(r,t,e,4),write(r,t,e,n,23,4),e+4}function writeDouble(r,t,e,n,o){return o||checkIEEE754(r,t,e,8),write(r,t,e,n,52,8),e+8}Buffer$2.prototype.slice=function(r,t){var e,n=this.length;if((r=~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[r+--t]*o;return n},Buffer$2.prototype.readUInt8=function(r,t){return t||checkOffset(r,1,this.length),this[r]},Buffer$2.prototype.readUInt16LE=function(r,t){return t||checkOffset(r,2,this.length),this[r]|this[r+1]<<8},Buffer$2.prototype.readUInt16BE=function(r,t){return t||checkOffset(r,2,this.length),this[r]<<8|this[r+1]},Buffer$2.prototype.readUInt32LE=function(r,t){return t||checkOffset(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+16777216*this[r+3]},Buffer$2.prototype.readUInt32BE=function(r,t){return t||checkOffset(r,4,this.length),16777216*this[r]+(this[r+1]<<16|this[r+2]<<8|this[r+3])},Buffer$2.prototype.readIntLE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=this[r],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=t,o=1,a=this[r+--n];n>0&&(o*=256);)a+=this[r+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(r,t){return t||checkOffset(r,1,this.length),128&this[r]?-1*(255-this[r]+1):this[r]},Buffer$2.prototype.readInt16LE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r]|this[r+1]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt16BE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r+1]|this[r]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt32LE=function(r,t){return t||checkOffset(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24},Buffer$2.prototype.readInt32BE=function(r,t){return t||checkOffset(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]},Buffer$2.prototype.readFloatLE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!0,23,4)},Buffer$2.prototype.readFloatBE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(r,t,e,n){(r=+r,t|=0,e|=0,n)||checkInt(this,r,t,e,Math.pow(2,8*e)-1,0);var o=1,a=0;for(this[t]=255&r;++a=0&&(a*=256);)this[t+o]=r/a&255;return t+e},Buffer$2.prototype.writeUInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),this[t]=255&r,t+1},Buffer$2.prototype.writeUInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=255&r):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&r;++a>0)-s&255;return t+e},Buffer$2.prototype.writeIntBE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=e-1,i=1,s=0;for(this[t+a]=255&r;--a>=0&&(i*=256);)r<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(r/i>>0)-s&255;return t+e},Buffer$2.prototype.writeInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),r<0&&(r=255+r+1),this[t]=255&r,t+1},Buffer$2.prototype.writeInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(r,t,e){return writeFloat(this,r,t,!0,e)},Buffer$2.prototype.writeFloatBE=function(r,t,e){return writeFloat(this,r,t,!1,e)},Buffer$2.prototype.writeDoubleLE=function(r,t,e){return writeDouble(this,r,t,!0,e)},Buffer$2.prototype.writeDoubleBE=function(r,t,e){return writeDouble(this,r,t,!1,e)},Buffer$2.prototype.copy=function(r,t,e,n){if(e||(e=0),n||0===n||(n=this.length),t>=r.length&&(t=r.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),r.length-t=0;--o)r[o+t]=this[o+e];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,r||(r=0),"number"==typeof r)for(a=t;a55295&&e<57344){if(!o){if(e>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=e;continue}if(e<56320){(t-=3)>-1&&a.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,e<128){if((t-=1)<0)break;a.push(e)}else if(e<2048){if((t-=2)<0)break;a.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;a.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return a}function asciiToBytes(r){for(var t=[],e=0;e>8,o=e%256,a.push(o),a.push(n);return a}function base64ToBytes(r){return toByteArray(base64clean(r))}function blitBuffer(r,t,e,n){for(var o=0;o=t.length||o>=r.length);++o)t[o+e]=r[o];return o}function isnan(r){return r!=r}function isBuffer$1(r){return null!=r&&(!!r._isBuffer||isFastBuffer(r)||isSlowBuffer(r))}function isFastBuffer(r){return!!r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r)}function isSlowBuffer(r){return"function"==typeof r.readFloatLE&&"function"==typeof r.slice&&isFastBuffer(r.slice(0,0))}function buff(r,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(r)?r:new Buffer$2.from(r,t)}var replaceErrors=function(r,t){if(t instanceof Error){var e={};return Object.getOwnPropertyNames(t).forEach((function(r){e[r]=t[r]})),e}return t},printError=function(r){return JSON.stringify(r,replaceErrors)};function findFromContract(r,t,e){return!!(e[r]&&e[r][t]&&e[r][t].file&&fs.existsSync(e[r][t].file))&&e[r][t].file}var DOT=".",getDocLen=function(r){return Buffer$2.byteLength(r,"utf8")},headerParser=function(r,t){try{var e=r.headers.accept.split(",");return t?e.filter((function(r){return r===t})):e}catch(r){return[]}},isHeaderPresent=function(r,t){return!!headerParser(r,t).length},getPathToFn=function(r,t,e){var n=e.resolverDir,o=dasherize(r),a=[];e.contract&&e.contract[t]&&e.contract[t].path&&a.push(e.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;s e instanceof err)\n .map(err => err.name)\n}\n\n/**\n * @param {array} errs list of errors to compare from\n * @param {object} e the error captured\n * @return {string} name of the error object\n */\nfunction getErrorNameByInstance(errs, e) {\n let error = mapErrToName(errs, e)\n return error.length ? error[0] : UNKNOWN_ERROR\n}\n\n/**\n * the same as above with a default JsonqlError as default\n * @param {array} errs same\n * @param {object} e error itself\n * @return {string} the name of the error\n */\nfunction getErrorNameByInstanceWithDefault(errs, e) {\n let name = getErrorNameByInstance(errs, e)\n return name === UNKNOWN_ERROR ? 'JsonqlError' : name;\n}\n\n\nexport {\n getErrorNameByInstanceWithDefault,\n getErrorNameByInstance,\n UNKNOWN_ERROR\n}\n","var toString = {}.toString;\n\nexport default Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n"],"names":["const"],"mappings":"+q4BAAAA,m0QCAA"} \ No newline at end of file +{"version":3,"file":"main.js","sources":["node_modules/jsonql-errors/src/get-error-name-by-instance.js","node_modules/buffer-es6/isArray.js"],"sourcesContent":["const UNKNOWN_ERROR = 'unknown'\n\n/**\n * @param {array} errs list of errors to compare from\n * @param {object} e the error captured\n * @return {array} filtered with name as value\n */\nfunction mapErrToName(errs, e) {\n return errs.filter(err => e instanceof err)\n .map(err => err.name)\n}\n\n/**\n * @param {array} errs list of errors to compare from\n * @param {object} e the error captured\n * @return {string} name of the error object\n */\nfunction getErrorNameByInstance(errs, e) {\n let error = mapErrToName(errs, e)\n return error.length ? error[0] : UNKNOWN_ERROR\n}\n\n/**\n * the same as above with a default JsonqlError as default\n * @param {array} errs same\n * @param {object} e error itself\n * @return {string} the name of the error\n */\nfunction getErrorNameByInstanceWithDefault(errs, e) {\n let name = getErrorNameByInstance(errs, e)\n return name === UNKNOWN_ERROR ? 'JsonqlError' : name;\n}\n\n\nexport {\n getErrorNameByInstanceWithDefault,\n getErrorNameByInstance,\n UNKNOWN_ERROR\n}\n","var toString = {}.toString;\n\nexport default Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n"],"names":["const"],"mappings":"4q4BAAAA,20QCAA"} \ No newline at end of file -- Gitee From 8653b36a3a56e9e46759c4deeccda343e17336e3 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 22:55:44 +0800 Subject: [PATCH 09/44] update all the deps and remap the methods --- packages/@jsonql/ws/package.json | 2 +- .../@jsonql/ws/src/core/extract-ws-payload.js | 3 ++- .../@jsonql/ws/tests/ws-client-basic.test.js | 3 +++ packages/http-client/core.js | 2 +- packages/http-client/core.js.map | 2 +- .../http-client/dist/jsonql-client.static.js | 2 +- .../dist/jsonql-client.static.js.map | 2 +- .../http-client/dist/jsonql-client.umd.js | 2 +- .../http-client/dist/jsonql-client.umd.js.map | 2 +- packages/http-client/index.js | 5 +--- packages/http-client/module.js | 23 +++++++++++-------- packages/http-client/package.json | 21 +++++++++-------- packages/http-client/rollup.config.js | 2 -- packages/http-client/static.js | 2 +- packages/http-client/static.js.map | 2 +- 15 files changed, 40 insertions(+), 35 deletions(-) diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index dc9c779f..8a197912 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -41,7 +41,7 @@ "jsonql-errors": "^1.1.3", "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", - "jsonql-utils": "^0.7.8", + "jsonql-utils": "^0.8.0", "jsonql-ws-client": "^1.1.4", "ws": "^7.2.0" }, diff --git a/packages/@jsonql/ws/src/core/extract-ws-payload.js b/packages/@jsonql/ws/src/core/extract-ws-payload.js index bad045c9..77e5a1cc 100644 --- a/packages/@jsonql/ws/src/core/extract-ws-payload.js +++ b/packages/@jsonql/ws/src/core/extract-ws-payload.js @@ -1,6 +1,7 @@ // take the ws reply data for use import { WS_EVT_NAME, WS_DATA_NAME, WS_REPLY_TYPE } from 'jsonql-constants' -import { isString, isObjectHasKey } from 'jsonql-params-validator' +import { isString } from 'jsonql-params-validator' +import { isObjectHasKey } from 'jsonql-utils/module' import { JsonqlError, clientErrorsHandler } from 'jsonql-errors' const keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ] diff --git a/packages/@jsonql/ws/tests/ws-client-basic.test.js b/packages/@jsonql/ws/tests/ws-client-basic.test.js index e751cc96..64184786 100644 --- a/packages/@jsonql/ws/tests/ws-client-basic.test.js +++ b/packages/@jsonql/ws/tests/ws-client-basic.test.js @@ -34,6 +34,9 @@ test.after(t => { test.cb('It should able to connect to the ws server', t => { t.plan(2) let client = t.context.client + + debug(client) + let ver = client.devHelpers.getVer() t.truthy(ver) diff --git a/packages/http-client/core.js b/packages/http-client/core.js index 29161f5b..9053caa7 100644 --- a/packages/http-client/core.js +++ b/packages/http-client/core.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="continue",o="type",i="optional",a="enumv",u="args",c="checker",s="alias",f="login",l="logout",p={desc:"y"},h="No message";var d="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},v="object"==typeof d&&d&&d.Object===Object&&d,g="object"==typeof self&&self&&self.Object===Object&&self,y=v||g||Function("return this")(),b=y.Symbol;function m(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&R(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function et(t){return void 0===t}var rt="[object Boolean]";var nt="[object Number]";function ot(t){return function(t){return"number"==typeof t||q(t)&&x(t)==nt}(t)&&t!=+t}var it="[object String]";function at(t){return"string"==typeof t||!_(t)&&q(t)&&x(t)==it}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object),st="[object Object]",ft=Function.prototype,lt=Object.prototype,pt=ft.toString,ht=lt.hasOwnProperty,dt=pt.call(Object);function vt(t){if(!q(t)||x(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=ht.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&pt.call(r)==dt}var gt,yt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[gt?a:++n];if(!1===e(o[u],u,o))break}return t};var bt="[object Arguments]";function mt(t){return q(t)&&x(t)==bt}var _t=Object.prototype,wt=_t.hasOwnProperty,jt=_t.propertyIsEnumerable,St=mt(function(){return arguments}())?mt:function(t){return q(t)&&wt.call(t,"callee")&&!jt.call(t,"callee")};var Ot="object"==typeof exports&&exports&&!exports.nodeType&&exports,Et=Ot&&"object"==typeof module&&module&&!module.nodeType&&module,At=Et&&Et.exports===Ot?y.Buffer:void 0,kt=(At?At.isBuffer:void 0)||function(){return!1},Tt=9007199254740991,xt=/^(?:0|[1-9]\d*)$/;function qt(t,e){var r=typeof t;return!!(e=null==e?Tt:e)&&("number"==r||"symbol"!=r&&xt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Pt}var $t={};$t["[object Float32Array]"]=$t["[object Float64Array]"]=$t["[object Int8Array]"]=$t["[object Int16Array]"]=$t["[object Int32Array]"]=$t["[object Uint8Array]"]=$t["[object Uint8ClampedArray]"]=$t["[object Uint16Array]"]=$t["[object Uint32Array]"]=!0,$t["[object Arguments]"]=$t["[object Array]"]=$t["[object ArrayBuffer]"]=$t["[object Boolean]"]=$t["[object DataView]"]=$t["[object Date]"]=$t["[object Error]"]=$t["[object Function]"]=$t["[object Map]"]=$t["[object Number]"]=$t["[object Object]"]=$t["[object RegExp]"]=$t["[object Set]"]=$t["[object String]"]=$t["[object WeakMap]"]=!1;var zt,Nt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ft=Nt&&"object"==typeof module&&module&&!module.nodeType&&module,It=Ft&&Ft.exports===Nt&&v.process,Jt=function(){try{var t=Ft&&Ft.require&&Ft.require("util").types;return t||It&&It.binding&&It.binding("util")}catch(t){}}(),Rt=Jt&&Jt.isTypedArray,Mt=Rt?(zt=Rt,function(t){return zt(t)}):function(t){return q(t)&&Ct(t.length)&&!!$t[x(t)]},Ut=Object.prototype.hasOwnProperty;function Ht(t,e){var r=_(t),n=!r&&St(t),o=!r&&!n&&kt(t),i=!r&&!n&&!o&&Mt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ie.prototype.set=function(t,e){var r=this.__data__,n=ne(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ae,ue=y["__core-js_shared__"],ce=(ae=/[^.]+$/.exec(ue&&ue.keys&&ue.keys.IE_PROTO||""))?"Symbol(src)_1."+ae:"";var se=Function.prototype.toString;function fe(t){if(null!=t){try{return se.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var le=/^\[object .+?Constructor\]$/,pe=Function.prototype,he=Object.prototype,de=pe.toString,ve=he.hasOwnProperty,ge=RegExp("^"+de.call(ve).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ye(t){return!(!Vt(t)||function(t){return!!ce&&ce in t}(t))&&(Xt(t)?ge:le).test(fe(t))}function be(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return ye(r)?r:void 0}var me=be(y,"Map"),_e=be(Object,"create");var we="__lodash_hash_undefined__",je=Object.prototype.hasOwnProperty;var Se=Object.prototype.hasOwnProperty;var Oe="__lodash_hash_undefined__";function Ee(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&ze?new Pe:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=jn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(wn);function An(t,e){return En(function(t,e,r){return e=_n(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=_n(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Vt(r))return!1;var n=typeof e;return!!("number"==n?Zt(r)&&qt(e,r.length):"string"==n&&e in r)&&re(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Yn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Wn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Vn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Gn(r,t)})).length},Qn=function(t,e){if(void 0===e&&(e=null),vt(t)){if(!e)return!0;if(Gn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!et(r)||(!1!==(e=Yn(t))?!Wn({arg:r},e):!Vn(t)(r))})).length)})).length}return!1},Xn=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Qn.apply(null,n)},Zn=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),to=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),eo=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),ro=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),no=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),oo=function(){try{if(window||document)return!0}catch(t){}return!1},io=function(){try{if(!oo()&&d)return!0}catch(t){}return!1};var ao=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return oo()?"browser":io()?"node":"unknown"},e}(Error),uo=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,Error.captureStackTrace&&Error.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}(ao),co=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),so=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),fo=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),lo=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,Error.captureStackTrace&&Error.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}(ao),po=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,Error.captureStackTrace&&Error.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}(ao),ho=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),vo=Object.freeze({Jsonql406Error:Zn,Jsonql500Error:to,JsonqlAuthorisationError:eo,JsonqlContractAuthError:ro,JsonqlResolverAppError:no,JsonqlResolverNotFoundError:uo,JsonqlEnumError:co,JsonqlTypeError:so,JsonqlCheckerError:fo,JsonqlValidationError:lo,JsonqlError:po,JsonqlServerError:ho}),go=po,yo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function bo(t){if(yo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||h,a=e.detail||e;if(o&&vo[o])throw new vo[r](i,a);throw new go(i,a)}return t}function mo(t){if(Array.isArray(t))throw new lo("",t);var e=t.message||h,r=t.detail||t;switch(!0){case t instanceof Zn:throw new Zn(e,r);case t instanceof to:throw new to(e,r);case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof ho:throw new ho(e,r);default:throw new po(e,r)}}function _o(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var wo=function(t,e){var r;switch(!0){case"object"===t:return!Xn(e);case"array"===t:return!Gn(e.arg);case!1!==(r=Yn(t)):return!Wn(e,r);default:return!Vn(t)(e.arg)}},jo=function(t,e){return et(t)?!0!==e.optional||et(e.defaultvalue)?null:e.defaultvalue:t},So=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Gn(e))throw new po("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Gn(t))throw new po("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 _o(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:_o(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:_o(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?jo(t,a):t,index:r,param:a,optional:i}}));default:throw _o(5),new po("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Nn(e)&&!(r.type.length>r.type.filter((function(e){return wo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return wo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Eo=function(t){return!Nn(t)};function Ao(t,e){var r=zn(e,(function(t,e){return!t[Bn]}));return Ar(r,{})?t:function(t,e){var r={};return e=Xr(e),ee(t,(function(t,n,o){tn(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,Xr((function(t){return t.alias===e})),ee)||e}))}function ko(t,e){return xn(e,(function(e,r){var n,o;return et(t[r])||!0===e[Un]&&Eo(t[r])?Tn({},e,((n={})[Kn]=!0,n)):((o={})[Dn]=t[r],o[Mn]=e[Mn],o[Un]=e[Un]||!1,o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o)}))}function To(t,e){var r=function(t,e){var r=Ao(t,e);return{pristineValues:xn(zn(e,(function(t,e){return Oo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:zn(e,(function(t,e){return!Oo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[ko(n,r.checkAgainstAppProps),o]}var xo=function(t){return Gn(t)?t:[t]};var qo=function(t,e){return!Gn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Po=function(t,e){try{return!!Xt(e)&&e.apply(null,[t])}catch(t){return!1}};function Co(t){return function(e,r){if(e[Kn])return e[Dn];var n=function(t,e){var r,n=[[t[Dn]],[(r={},r[Mn]=xo(t[Mn]),r[Un]=t[Un],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw _o("runValidationAction",r,e),new so(r,n);if(!1!==e[Hn]&&!qo(e[Dn],e[Hn]))throw _o(Hn,e[Hn]),new co(r);if(!1!==e[Ln]&&!Po(e[Dn],e[Ln]))throw _o(Ln,e[Ln]),new fo(r);return e[Dn]}}function $o(t,e){var r=t[0],n=t[1],o=xn(r,Co(e));return Tn(o,n)}var zo=function(t,e){return Promise.resolve(To(t,e))};function No(t,e,r,n,f,l){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[u]=t,p[o]=e,!0===r&&(p[i]=!0),Gn(n)&&(p[a]=n),Xt(f)&&(p[c]=f),at(l)&&(p[s]=l),p}var Fo=In,Io=Gn,Jo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=So(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Ro=function(t,e,r){void 0===r&&(r={});var n=r[i],o=r[a],u=r[c],f=r[s];return No.apply(null,[t,e,n,o,u,f])},Mo=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return $o(t,n)})).then((function(t){return Tn({},t,r)}))}(e,r,n,t)}}(So),Uo=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),Tn($o(To(t,e),n),r)}(e,r,n,t)}}(So),Ho="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Do=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var xi=[fi,di],qi=[mi,wi,Ai,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Ti.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Ti.compress(this._serialize(r));t(e,n)}}}],Pi=ai.createStore(xi,qi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function zi(t){return $i().getItem(t)}var Ni=[{name:"sessionStorage",read:zi,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(zi(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(Ni,Fi),Ji=Pi,Ri=Ii,Mi=Array.isArray,Ui=void 0!==d?d:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Hi="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Di="object"==typeof self&&self&&self.Object===Object&&self,Li=(Hi||Di||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Qi="[object Undefined]",Xi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Qi:Wi:Xi&&Xi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Sa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Oa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Oa(e)?Promise.resolve(e):t.getContract()},Aa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function ka(t){this.message=t}ka.prototype=new Error,ka.prototype.name="InvalidCharacterError";var Ta="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new ka("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Aa.indexOf(n);return a};var xa=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ta(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ta(e)}};function qa(t){this.message=t}qa.prototype=new Error,qa.prototype.name="InvalidTokenError";var Pa=function(t,e){if("string"!=typeof t)throw new qa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(xa(t.split(".")[r]))}catch(t){throw new qa("Invalid token specified: "+t.message)}},Ca=qa;Pa.InvalidTokenError=Ca;var $a,za,Na,Fa,Ia,Ja,Ra,Ma,Ua,Ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Da(t){if(Fo(t))return function(t){var e=t.iat||Ha(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new po("Token has expired on "+r,t)}return t}(Pa(t));throw new po("Token must be a string!")}Ro("HS256",["string"]),Ro(!1,["boolean","number","string"],(($a={})[s]="exp",$a[i]=!0,$a)),Ro(!1,["boolean","number","string"],((za={})[s]="nbf",za[i]=!0,za)),Ro(!1,["boolean","string"],((Na={})[s]="iss",Na[i]=!0,Na)),Ro(!1,["boolean","string"],((Fa={})[s]="sub",Fa[i]=!0,Fa)),Ro(!1,["boolean","string"],((Ia={})[s]="iss",Ia[i]=!0,Ia)),Ro(!1,["boolean"],((Ja={})[i]=!0,Ja)),Ro(!1,["boolean","string"],((Ra={})[i]=!0,Ra)),Ro(!1,["boolean","string"],((Ma={})[i]=!0,Ma)),Ro(!1,["boolean"],((Ua={})[i]=!0,Ua));var La=r[0],Ba=r[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Tn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Tn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Tn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Sa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Fo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Sa(o)}),(function(t){throw e.cleanUp(),console.error(t),new ho("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Tn({},e,this.getAuthHeader(),this.extraHeader):Tn({},e,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Tn({},this.extraParams,p)),this.request({},{method:"GET"},this.contractHeader).then(bo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(bo)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(bo)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Io(t)&&t.length>=2&&Reflect.apply(Ji.set,Ji,t),new lo("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ji.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ji.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ji.set,Ji,e)},r.jsonqlEndpoint.get=function(){var t=Ji.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ji.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ri.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Da)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Oa(t))throw new lo("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Oa(this.opts.contract)?this.opts.contract:Ji.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(mo)}};var Wa=function(t,e,r,o){var i=function(t,e,r,o){var i={query:{},mutation:{}},a=function(e){i.query[e]=function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(mo)}};for(var u in o.query)a(u);var c=function(e){i.mutation[e]=function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[e].params;return Jo(a,u).then((function(){return t.mutation.apply(t,[e,r,n,i])})).catch(mo)}};for(var s in o.mutation)c(s);if(r.enableAuth&&o.auth){i.auth={};var p=r.loginHandlerName,h=r.logoutHandlerName;o.auth[p]&&(i.auth[p]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ya(t,p,r,o);return a.apply(null,n).then(t.postLoginAction).then((function(t){return e.$trigger(f,t),t}))}),o.auth[h]?i.auth[h]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ya(t,h,r,o);return a.apply(null,n).then(t.postLogoutAction).then((function(t){return e.$trigger(l,t),t}))}:i.auth[h]=function(){t.postLogoutAction(n),e.$trigger(l,n)}}return i}(t,o,e,r);return e.enableAuth&&(i.userdata=function(){return t.userdata}),i.getToken=function(){return t.rawAuthToken},e.exposeContract&&(i.getContract=function(){return t.get()}),i.eventEmitter=o,i.version="1.3.2",i},Qa={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},Xa={hostname:Ro([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Ro("jsonql",["string"]),loginHandlerName:Ro(f,["string"]),logoutHandlerName:Ro(l,["string"]),enableJsonp:Ro(!1,["boolean"]),enableAuth:Ro(!1,["boolean"]),useJwt:Ro(!0,["boolean"]),useLocalstorage:Ro(!0,["boolean"]),storageKey:Ro("storageKey",["string"]),authKey:Ro("authKey",["string"]),contractExpired:Ro(0,["number"]),keepContract:Ro(!0,["boolean"]),exposeContract:Ro(!1,["boolean"]),showContractDesc:Ro(!1,["boolean"]),contractKey:Ro(!1,["boolean"]),contractKeyName:Ro("X-JSONQL-CV-KEY",["string"]),enableTimeout:Ro(!1,["boolean"]),timeout:Ro(5e3,["number"]),returnInstance:Ro(!1,["boolean"]),allowReturnRawToken:Ro(!1,["boolean"]),debugOn:Ro(!1,["boolean"])};function Za(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Mo(t,Xa,Qa).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return Wa(r,n,e,t)}))}))}var tu=new WeakMap,eu=new WeakMap;var ru=function(){this.__suspend__=null,this.queueStore=new Set},nu={$suspend:{configurable:!0},$queues:{configurable:!0}};nu.$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)},ru.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__},nu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ru.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(ru.prototype,nu);var ou=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 i=0;return o.forEach((function(o){var a=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.run(e,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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.run(e,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(t){var o=t[0],i=t[1],a=t[2];if(a&&"only"!==a)throw new Error("You are trying to register an event already been taken by other type: "+a);n.run(e,o,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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.run(e,a,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 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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){tu.set(this,t)},r.normalStore.get=function(){return tu.get(this)},r.lazyStore.set=function(t){eu.set(this,t)},r.lazyStore.get=function(){return eu.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}(ru));function iu(t,e,r){var n=e.contract,o=function(t){return Uo(t,Xa,Qa)}(e),i=new Ga(o,r);return Wa(i,o,n,t)}return function(t,e){var r,n=(r=e.debugOn,new ou({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0}));return e.contract&&Oa(e.contract)?iu(n,e,t):Za(n,e,t)}})); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t=t||self).jsonqlClient=r()}(this,(function(){"use strict";var t="application/vnd.api+json",r={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},e=["POST","PUT"],n="continue",o="type",i="optional",a="enumv",u="args",c="checker",s="alias",f="login",l="logout",p={desc:"y"},h="No message";var d="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},v="object"==typeof d&&d&&d.Object===Object&&d,g="object"==typeof self&&self&&self.Object===Object&&self,y=v||g||Function("return this")(),b=y.Symbol;function m(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 i=Array(o);++n-1;);return e}(n,o),function(t,r){for(var e=t.length;e--&&R(r,t[e],0)>-1;);return e}(n,o)+1).join("")}function rt(t){return void 0===t}var et="[object Boolean]";var nt="[object Number]";function ot(t){return function(t){return"number"==typeof t||q(t)&&x(t)==nt}(t)&&t!=+t}var it="[object String]";function at(t){return"string"==typeof t||!_(t)&&q(t)&&x(t)==it}function ut(t,r){return function(e){return t(r(e))}}var ct=ut(Object.getPrototypeOf,Object),st="[object Object]",ft=Function.prototype,lt=Object.prototype,pt=ft.toString,ht=lt.hasOwnProperty,dt=pt.call(Object);function vt(t){if(!q(t)||x(t)!=st)return!1;var r=ct(t);if(null===r)return!0;var e=ht.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&pt.call(e)==dt}var gt,yt=function(t,r,e){for(var n=-1,o=Object(t),i=e(t),a=i.length;a--;){var u=i[gt?a:++n];if(!1===r(o[u],u,o))break}return t};var bt="[object Arguments]";function mt(t){return q(t)&&x(t)==bt}var _t=Object.prototype,wt=_t.hasOwnProperty,jt=_t.propertyIsEnumerable,St=mt(function(){return arguments}())?mt:function(t){return q(t)&&wt.call(t,"callee")&&!jt.call(t,"callee")};var Ot="object"==typeof exports&&exports&&!exports.nodeType&&exports,Et=Ot&&"object"==typeof module&&module&&!module.nodeType&&module,At=Et&&Et.exports===Ot?y.Buffer:void 0,kt=(At?At.isBuffer:void 0)||function(){return!1},Tt=9007199254740991,xt=/^(?:0|[1-9]\d*)$/;function qt(t,r){var e=typeof t;return!!(r=null==r?Tt:r)&&("number"==e||"symbol"!=e&&xt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Pt}var $t={};$t["[object Float32Array]"]=$t["[object Float64Array]"]=$t["[object Int8Array]"]=$t["[object Int16Array]"]=$t["[object Int32Array]"]=$t["[object Uint8Array]"]=$t["[object Uint8ClampedArray]"]=$t["[object Uint16Array]"]=$t["[object Uint32Array]"]=!0,$t["[object Arguments]"]=$t["[object Array]"]=$t["[object ArrayBuffer]"]=$t["[object Boolean]"]=$t["[object DataView]"]=$t["[object Date]"]=$t["[object Error]"]=$t["[object Function]"]=$t["[object Map]"]=$t["[object Number]"]=$t["[object Object]"]=$t["[object RegExp]"]=$t["[object Set]"]=$t["[object String]"]=$t["[object WeakMap]"]=!1;var zt,Nt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ft=Nt&&"object"==typeof module&&module&&!module.nodeType&&module,It=Ft&&Ft.exports===Nt&&v.process,Jt=function(){try{var t=Ft&&Ft.require&&Ft.require("util").types;return t||It&&It.binding&&It.binding("util")}catch(t){}}(),Rt=Jt&&Jt.isTypedArray,Mt=Rt?(zt=Rt,function(t){return zt(t)}):function(t){return q(t)&&Ct(t.length)&&!!$t[x(t)]},Ut=Object.prototype.hasOwnProperty;function Ht(t,r){var e=_(t),n=!e&&St(t),o=!e&&!n&&kt(t),i=!e&&!n&&!o&&Mt(t),a=e||n||o||i,u=a?function(t,r){for(var e=-1,n=Array(t);++e-1},ir.prototype.set=function(t,r){var e=this.__data__,n=nr(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var ar,ur=y["__core-js_shared__"],cr=(ar=/[^.]+$/.exec(ur&&ur.keys&&ur.keys.IE_PROTO||""))?"Symbol(src)_1."+ar:"";var sr=Function.prototype.toString;function fr(t){if(null!=t){try{return sr.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var lr=/^\[object .+?Constructor\]$/,pr=Function.prototype,hr=Object.prototype,dr=pr.toString,vr=hr.hasOwnProperty,gr=RegExp("^"+dr.call(vr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function yr(t){return!(!Vt(t)||function(t){return!!cr&&cr in t}(t))&&(Xt(t)?gr:lr).test(fr(t))}function br(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return yr(e)?e:void 0}var mr=br(y,"Map"),_r=br(Object,"create");var wr="__lodash_hash_undefined__",jr=Object.prototype.hasOwnProperty;var Sr=Object.prototype.hasOwnProperty;var Or="__lodash_hash_undefined__";function Er(t){var r=-1,e=null==t?0:t.length;for(this.clear();++ru))return!1;var s=i.get(t);if(s&&i.get(r))return s==r;var f=-1,l=!0,p=e&zr?new Pr:void 0;for(i.set(t,r),i.set(r,t);++f0){if(++r>=jn)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(wn);function An(t,r){return En(function(t,r,e){return r=_n(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,i=_n(n.length-r,0),a=Array(i);++o1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!Vt(e))return!1;var n=typeof r;return!!("number"==n?Zt(e)&&qt(r,e.length):"string"==n&&r in e)&&er(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0))},Yn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},Wn=function(t,r){var e=t.arg;return r.length>1?!e.filter((function(t){return!(r.length>r.filter((function(r){return!Vn(r)(t)})).length)})).length:r.length>r.filter((function(t){return!Gn(e,t)})).length},Qn=function(t,r){if(void 0===r&&(r=null),vt(t)){if(!r)return!0;if(Gn(r))return!r.filter((function(r){var e=t[r.name];return!(r.type.length>r.type.filter((function(t){var r;return!!rt(e)||(!1!==(r=Yn(t))?!Wn({arg:e},r):!Vn(t)(e))})).length)})).length}return!1},Xn=function(t){var r=t.arg,e=t.param,n=[r];return Array.isArray(e.keys)&&e.keys.length&&n.push(e.keys),Qn.apply(null,n)},Zn=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 406},e.name.get=function(){return"Jsonql406Error"},Object.defineProperties(r,e),r}(Error),to=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"Jsonql500Error"},Object.defineProperties(r,e),r}(Error),ro=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(r,e),r}(Error),eo=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(r,e),r}(Error),no=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(r,e),r}(Error),oo=function(){try{if(window||document)return!0}catch(t){}return!1},io=function(){try{if(!oo()&&d)return!0}catch(t){}return!1};var ao=function(t){function r(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];t.apply(this,r)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.where=function(){return oo()?"browser":io()?"node":"unknown"},r}(Error),uo=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,Error.captureStackTrace&&Error.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 404},e.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(r,e),r}(ao),co=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"JsonqlEnumError"},Object.defineProperties(r,e),r}(Error),so=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"JsonqlTypeError"},Object.defineProperties(r,e),r}(Error),fo=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"JsonqlCheckerError"},Object.defineProperties(r,e),r}(Error),lo=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,Error.captureStackTrace&&Error.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}(ao),po=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,Error.captureStackTrace&&Error.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}(ao),ho=function(t){function r(e,n){t.call(this,n),this.statusCode=e,this.className=r.name}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"JsonqlServerError"},Object.defineProperties(r,e),r}(Error),vo=Object.freeze({__proto__:null,Jsonql406Error:Zn,Jsonql500Error:to,JsonqlAuthorisationError:ro,JsonqlContractAuthError:eo,JsonqlResolverAppError:no,JsonqlResolverNotFoundError:uo,JsonqlEnumError:co,JsonqlTypeError:so,JsonqlCheckerError:fo,JsonqlValidationError:lo,JsonqlError:po,JsonqlServerError:ho}),go=po,yo=function(t,r){return!!Object.keys(t).filter((function(t){return r===t})).length};function bo(t){if(yo(t,"error")){var r=t.error,e=r.className,n=r.name,o=e||n,i=r.message||h,a=r.detail||r;if(o&&vo[o])throw new vo[e](i,a);throw new go(i,a)}return t}function mo(t){if(Array.isArray(t))throw new lo("",t);var r=t.message||h,e=t.detail||t;switch(!0){case t instanceof Zn:throw new Zn(r,e);case t instanceof to:throw new to(r,e);case t instanceof ro:throw new ro(r,e);case t instanceof eo:throw new eo(r,e);case t instanceof no:throw new no(r,e);case t instanceof uo:throw new uo(r,e);case t instanceof co:throw new co(r,e);case t instanceof so:throw new so(r,e);case t instanceof fo:throw new fo(r,e);case t instanceof lo:throw new lo(r,e);case t instanceof ho:throw new ho(r,e);default:throw new po(r,e)}}function _o(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var wo=function(t,r){var e;switch(!0){case"object"===t:return!Xn(r);case"array"===t:return!Gn(r.arg);case!1!==(e=Yn(t)):return!Wn(r,e);default:return!Vn(t)(r.arg)}},jo=function(t,r){return rt(t)?!0!==r.optional||rt(r.defaultvalue)?null:r.defaultvalue:t},So=function(t,r,e){var n;void 0===e&&(e=!1);var o=function(t,r){if(!Gn(r))throw new po("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!Gn(t))throw new po("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 _o(1),t.map((function(t,e){return{arg:t,index:e,param:r[e]}}));case!0===r[0].variable:_o(2);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:_o(4);var n=r.length,o=["any"];return t.map((function(t,e){var i=e>=n||!!r[e].optional,a=r[e]||{type:o,name:"_"+e};return{arg:i?jo(t,a):t,index:e,param:a,optional:i}}));default:throw _o(5),new po("Could not understand your arguments and parameter structure!",{args:t,params:r})}}(t,r),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,e=t.param;return!!Nn(r)&&!(e.type.length>e.type.filter((function(r){return wo(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return wo(r,t)})).length)}));return e?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,r){var e,n=Object.keys(t);return e=r,!!n.filter((function(t){return t===e})).length},Eo=function(t){return!Nn(t)};function Ao(t,r){var e=zn(r,(function(t,r){return!t[Bn]}));return Ae(e,{})?t:function(t,r){var e={};return r=Xe(r),rr(t,(function(t,n,o){tn(e,r(t,n,o),t)})),e}(t,(function(t,r){return function(t,r,e){var n;return e(t,(function(t,e,o){if(r(t,e,o))return n=e,!1})),n}(e,Xe((function(t){return t.alias===r})),rr)||r}))}function ko(t,r){return xn(r,(function(r,e){var n,o;return rt(t[e])||!0===r[Un]&&Eo(t[e])?Tn({},r,((n={})[Kn]=!0,n)):((o={})[Dn]=t[e],o[Mn]=r[Mn],o[Un]=r[Un]||!1,o[Hn]=r[Hn]||!1,o[Ln]=r[Ln]||!1,o)}))}function To(t,r){var e=function(t,r){var e=Ao(t,r);return{pristineValues:xn(zn(r,(function(t,r){return Oo(e,r)})),(function(t){return t.args})),checkAgainstAppProps:zn(r,(function(t,r){return!Oo(e,r)})),config:e}}(t,r),n=e.config,o=e.pristineValues;return[ko(n,e.checkAgainstAppProps),o]}var xo=function(t){return Gn(t)?t:[t]};var qo=function(t,r){return!Gn(r)||function(t,r){return!!t.filter((function(t){return t===r})).length}(r,t)},Po=function(t,r){try{return!!Xt(r)&&r.apply(null,[t])}catch(t){return!1}};function Co(t){return function(r,e){if(r[Kn])return r[Dn];var n=function(t,r){var e,n=[[t[Dn]],[(e={},e[Mn]=xo(t[Mn]),e[Un]=t[Un],e)]];return Reflect.apply(r,null,n)}(r,t);if(n.length)throw _o("runValidationAction",e,r),new so(e,n);if(!1!==r[Hn]&&!qo(r[Dn],r[Hn]))throw _o(Hn,r[Hn]),new co(e);if(!1!==r[Ln]&&!Po(r[Dn],r[Ln]))throw _o(Ln,r[Ln]),new fo(e);return r[Dn]}}function $o(t,r){var e=t[0],n=t[1],o=xn(e,Co(r));return Tn(o,n)}var zo=function(t,r){return Promise.resolve(To(t,r))};function No(t,r,e,n,f,l){void 0===e&&(e=!1),void 0===n&&(n=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[u]=t,p[o]=r,!0===e&&(p[i]=!0),Gn(n)&&(p[a]=n),Xt(f)&&(p[c]=f),at(l)&&(p[s]=l),p}var Fo=In,Io=Gn,Jo=function(t,r,e){return void 0===e&&(e=!1),new Promise((function(n,o){var i=So(t,r,e);return e?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Ro=function(t,r,e){void 0===e&&(e={});var n=e[i],o=e[a],u=e[c],f=e[s];return No.apply(null,[t,r,n,o,u,f])},Mo=function(t){return function(r,e,n){return void 0===n&&(n={}),function(t,r,e,n){return void 0===t&&(t={}),zo(t,r).then((function(t){return $o(t,n)})).then((function(t){return Tn({},t,e)}))}(r,e,n,t)}}(So),Uo=function(t){return function(r,e,n){return void 0===n&&(n={}),function(t,r,e,n){return void 0===t&&(t={}),Tn($o(To(t,r),n),e)}(r,e,n,t)}}(So),Ho="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Do=Object.assign?Object.assign:function(t,r,e,n){for(var o=arguments,i=1;i=0;r--){var e=li().key(r);t(pi(e),e)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var r="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(r),"$1"))},write:function(t,r){if(!t)return;vi.cookie=escape(t)+"="+escape(r)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,r){yi(r)}))}},vi=Vo.Global.document;function gi(t){for(var r=vi.cookie.split(/; ?/g),e=r.length-1;e>=0;e--)if(hi(r[e])){var n=r[e].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(r,e){t=e},get:function(r,e){var n=r();return void 0!==n?n:t[e]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(r,e,n,o){this.hasNamespace(_i)||t.set(e,o);return r()},get:function(t,e){this.hasNamespace(_i)||r.call(this,e);return t()},remove:function(r,e){this.hasNamespace(_i)||t.remove(e);return r()},getExpiration:function(r,e){return t.get(e)},removeExpiredKeys:function(t){var e=[];this.each((function(t,r){e.push(r)}));for(var n=0;n>>8,e[2*n+1]=a%256}return e},decompressFromUint8Array:function(r){if(null==r)return i.decompress(r);for(var e=new Array(r.length/2),n=0,o=e.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==r-1){d.push(e(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(r){return t.charCodeAt(r)}))},_decompress:function(r,e,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:e,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>r)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=r)}));var xi=[fi,di],qi=[mi,wi,Ai,function(){return{get:function(t,r){var e=t(r);if(!e)return e;var n=Ti.decompress(e);return null==n?e:this._deserialize(n)},set:function(t,r,e){var n=Ti.compress(this._serialize(e));t(r,n)}}}],Pi=ai.createStore(xi,qi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function zi(t){return $i().getItem(t)}var Ni=[{name:"sessionStorage",read:zi,write:function(t,r){return $i().setItem(t,r)},each:function(t){for(var r=$i().length-1;r>=0;r--){var e=$i().key(r);t(zi(e),e)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(Ni,Fi),Ji=Pi,Ri=Ii,Mi=Array.isArray,Ui=void 0!==d?d:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Hi="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Di="object"==typeof self&&self&&self.Object===Object&&self,Li=(Hi||Di||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Qi="[object Undefined]",Xi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Qi:Wi:Xi&&Xi in Object(t)?function(t){var r=Ki.call(t,Gi),e=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(r?t[Gi]=e:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,r){return function(e){return t(r(e))}}(Object.getPrototypeOf,Object);function ra(t){return null!=t&&"object"==typeof t}var ea="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ra(t)&&Zi(t)==sa}var la=function(t,r){return!!t.filter((function(t){return t===r})).length},pa=function(t,r){var e=Object.keys(t);return la(e,r)},ha=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function r(){for(var e=arguments,n=[],o=arguments.length;o--;)n[o]=e[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,Error.captureStackTrace&&Error.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}(function(t){function r(){for(var r=arguments,e=[],n=arguments.length;n--;)e[n]=r[n];t.apply(this,e)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.where=function(){return ma()?"browser":_a()?"node":"unknown"},r}(Error));var ja=function(t){var r;return(r={}).args=t,r};var Sa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Oa=function(t){return function(t){if(!ra(t)||Zi(t)!=ea)return!1;var r=ta(t);if(null===r)return!0;var e=aa.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&ia.call(e)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,r){return void 0===r&&(r={}),Oa(r)?Promise.resolve(r):t.getContract()},Aa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function ka(t){this.message=t}ka.prototype=new Error,ka.prototype.name="InvalidCharacterError";var Ta="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var r=String(t).replace(/=+$/,"");if(r.length%4==1)throw new ka("'atob' failed: The string to be decoded is not correctly encoded.");for(var e,n,o=0,i=0,a="";n=r.charAt(i++);~n&&(e=o%4?64*e+n:n,o++%4)?a+=String.fromCharCode(255&e>>(-2*o&6)):0)n=Aa.indexOf(n);return a};var xa=function(t){var r=t.replace(/-/g,"+").replace(/_/g,"/");switch(r.length%4){case 0:break;case 2:r+="==";break;case 3:r+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ta(t).replace(/(.)/g,(function(t,r){var e=r.charCodeAt(0).toString(16).toUpperCase();return e.length<2&&(e="0"+e),"%"+e})))}(r)}catch(t){return Ta(r)}};function qa(t){this.message=t}qa.prototype=new Error,qa.prototype.name="InvalidTokenError";var Pa=function(t,r){if("string"!=typeof t)throw new qa("Invalid token specified");var e=!0===(r=r||{}).header?0:1;try{return JSON.parse(xa(t.split(".")[e]))}catch(t){throw new qa("Invalid token specified: "+t.message)}},Ca=qa;Pa.InvalidTokenError=Ca;var $a,za,Na,Fa,Ia,Ja,Ra,Ma,Ua,Ha=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r};function Da(t){if(Fo(t))return function(t){var r=t.iat||Ha(!0);if(t.exp&&r>=t.exp){var e=new Date(t.exp).toISOString();throw new po("Token has expired on "+e,t)}return t}(Pa(t));throw new po("Token must be a string!")}Ro("HS256",["string"]),Ro(!1,["boolean","number","string"],(($a={})[s]="exp",$a[i]=!0,$a)),Ro(!1,["boolean","number","string"],((za={})[s]="nbf",za[i]=!0,za)),Ro(!1,["boolean","string"],((Na={})[s]="iss",Na[i]=!0,Na)),Ro(!1,["boolean","string"],((Fa={})[s]="sub",Fa[i]=!0,Fa)),Ro(!1,["boolean","string"],((Ia={})[s]="iss",Ia[i]=!0,Ia)),Ro(!1,["boolean"],((Ja={})[i]=!0,Ja)),Ro(!1,["boolean","string"],((Ra={})[i]=!0,Ra)),Ro(!1,["boolean","string"],((Ma={})[i]=!0,Ma)),Ro(!1,["boolean"],((Ua={})[i]=!0,Ua));var La=e[0],Ba=e[1],Ka=function(t){!function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,r,e){var n;void 0===r&&(r={}),void 0===e&&(e={}),this.headers=e;var o=Tn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Tn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Tn({},{method:La,params:o},r))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(r){var e=t.getHeaders();for(var n in t.log("request interceptor call",e),e)r.headers[n]=e[n];return r}))},Ka.prototype.processJsonp=function(t){return Sa(t)},Ka.prototype.resInterceptor=function(){var t=this,r=this,e=r.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),r.cleanUp();var o=Fo(n.data)?JSON.parse(n.data):n.data;return e?r.processJsonp(o):Sa(o)}),(function(t){throw r.cleanUp(),console.error(t),new ho("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Tn({},r,this.getAuthHeader(),this.extraHeader):Tn({},r,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Tn({},this.extraParams,p)),this.request({},{method:"GET"},this.contractHeader).then(bo).then((function(r){return t.log("get contract result",r),r.cache&&r.contract?r.contract:r}))},Ka.prototype.query=function(t,r){return void 0===r&&(r=[]),this.request(function(t,r,e){var n;if(void 0===r&&(r=[]),void 0===e&&(e=!1),fa(t)&&Mi(r)){var o=ja(r);return!0===e?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:r})}(t,r)).then(bo)},Ka.prototype.mutation=function(t,r,e){return void 0===r&&(r={}),void 0===e&&(e={}),this.request(function(t,r,e,n){var o;void 0===e&&(e={}),void 0===n&&(n=!1);var i={};if(i[ya]=r,i[ba]=e,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:r,condition:e})}(t,r,e),{method:Ba}).then(bo)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function r(r,e){void 0===e&&(e=null),e&&(r.Fly=e),t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return e.storeIt.set=function(t){throw console.info("storeIt",t),Io(t)&&t.length>=2&&Reflect.apply(Ji.set,Ji,t),new lo("Expect argument to be array and least 2 items!")},e.jsonqlEndpoint.set=function(t){var r=Ji.get("endpoint")||[];la(r,t)||(r.push(t),this.storeId=["endpoint",r],this.endpointIndex=r.length-1)},e.jsonqlContract.set=function(t){var r=this.opts.storageKey,e=[r],n=t[0],o=t[1],i=Ji.get(r)||[];i[this.endpointIndex||0]=n,e.push(i),o&&e.push(o),this.opts.keepContract&&(this.storeIt=e)},e.jsonqlToken.set=function(t){var r="credential",e=localStorage.get(r)||[];if(!la(e,t)){var n=e.length-1;e[n]=t,this[r+"Index"]=n;var o=[r,e];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},e.jsonqlUserdata.set=function(t){var r=["userdata",t];return t.exp&&r.push(t.exp),Reflect.apply(Ji.set,Ji,r)},e.jsonqlEndpoint.get=function(){var t=Ji.get("endpoint");if(!t){var r=this.opts,e=[r.hostname,r.jsonqlPath].join("/");return this.jsonqlEndpoint=e,e}return t[this.endpointIndex]},e.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ji.get(t)||[])[this.endpointIndex]||!1},e.jsonqlToken.get=function(){var t="credential",r=localStorage.get(t);return!!r&&r[this[t+"Index"]]},e.jsonqlUserdata.get=function(){return Ri.get("userdata")},r.prototype.log=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(r.prototype,e),r}(function(t){function r(r){t.call(this,r),r.enableAuth&&r.useJwt&&(this.setDecoder=Da)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return e.userdata.get=function(){return this.jsonqlUserdata},e.rawAuthToken.get=function(){return this.jsonqlToken},e.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},r.prototype.storeToken=function(t){return this.jsonqlToken=t},r.prototype.decoder=function(t){return t},r.prototype.getAuthHeader=function(){var t,r=this.rawAuthToken;return r?((t={})[this.opts.AUTH_HEADER]="Bearer "+r,t):{}},Object.defineProperties(r.prototype,e),r}(function(t){function r(r){t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={contractHeader:{configurable:!0}};return r.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var r=t[this.endpointIndex||0];if(r)return Promise.resolve(r)}return this.get().then(this.storeContract.bind(this))},e.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},r.prototype.storeContract=function(t){if(!Oa(t))throw new lo("Contract is malformed!");var r=[t];if(this.opts.contractExpired){var e=parseFloat(this.opts.contractExpired);!isNaN(e)&&e>0&&r.push(e)}return this.jsonqlContract=r,this.log("storeContract return result",t),t},r.prototype.readContract=function(){return Oa(this.opts.contract)?this.opts.contract:Ji.get(this.opts.storageKey)},Object.defineProperties(r.prototype,e),r}(Ka))),Ya=function(t,r,e,n){return function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];var i=n.auth[r].params,a=i.map((function(t,r){return e[r]})),u=e[i.length]||{};return Jo(e,i).then((function(){return t.query.apply(t,[r,a,u])})).catch(mo)}};var Wa=function(t,r,e,o){var i=function(t,r,e,o){var i={query:{},mutation:{}},a=function(r){i.query[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var i=o.query[r].params,a=i.map((function(t,r){return e[r]})),u=e[i.length]||{};return Jo(a,i).then((function(){return t.query.apply(t,[r,a,u])})).catch(mo)}};for(var u in o.query)a(u);var c=function(r){i.mutation[r]=function(e,n,i){void 0===i&&(i={});var a=[e,n],u=o.mutation[r].params;return Jo(a,u).then((function(){return t.mutation.apply(t,[r,e,n,i])})).catch(mo)}};for(var s in o.mutation)c(s);if(e.enableAuth&&o.auth){i.auth={};var p=e.loginHandlerName,h=e.logoutHandlerName;o.auth[p]&&(i.auth[p]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ya(t,p,e,o);return a.apply(null,n).then(t.postLoginAction).then((function(t){return r.$trigger(f,t),t}))}),o.auth[h]?i.auth[h]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ya(t,h,e,o);return a.apply(null,n).then(t.postLogoutAction).then((function(t){return r.$trigger(l,t),t}))}:i.auth[h]=function(){t.postLogoutAction(n),r.$trigger(l,n)}}return i}(t,o,r,e);return r.enableAuth&&(i.userdata=function(){return t.userdata}),i.getToken=function(){return t.rawAuthToken},r.exposeContract&&(i.getContract=function(){return t.get()}),i.eventEmitter=o,i.version="1.3.3",i},Qa={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},Xa={hostname:Ro([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Ro("jsonql",["string"]),loginHandlerName:Ro(f,["string"]),logoutHandlerName:Ro(l,["string"]),enableJsonp:Ro(!1,["boolean"]),enableAuth:Ro(!1,["boolean"]),useJwt:Ro(!0,["boolean"]),useLocalstorage:Ro(!0,["boolean"]),storageKey:Ro("storageKey",["string"]),authKey:Ro("authKey",["string"]),contractExpired:Ro(0,["number"]),keepContract:Ro(!0,["boolean"]),exposeContract:Ro(!1,["boolean"]),showContractDesc:Ro(!1,["boolean"]),contractKey:Ro(!1,["boolean"]),contractKeyName:Ro("X-JSONQL-CV-KEY",["string"]),enableTimeout:Ro(!1,["boolean"]),timeout:Ro(5e3,["number"]),returnInstance:Ro(!1,["boolean"]),allowReturnRawToken:Ro(!1,["boolean"]),debugOn:Ro(!1,["boolean"])};function Za(t,r,e){return void 0===r&&(r={}),void 0===e&&(e=null),function(t){var r=t.contract;return Mo(t,Xa,Qa).then((function(t){return t.contract=r,t}))}(r).then((function(t){return{baseClient:new Ga(t,e),opts:t}})).then((function(r){var e=r.baseClient,n=r.opts;return Ea(e,n.contract).then((function(r){return Wa(e,n,r,t)}))}))}var tu=new WeakMap,ru=new WeakMap;var eu=function(){this.__suspend__=null,this.queueStore=new Set},nu={$suspend:{configurable:!0},$queues:{configurable:!0}};nu.$suspend.set=function(t){var r=this;if("boolean"!=typeof t)throw new Error("$suspend only accept Boolean value!");var e=this.__suspend__;this.__suspend__=t,this.logger("($suspend)","Change from "+e+" --\x3e "+t),!0===e&&!1===t&&setTimeout((function(){r.release()}),1)},eu.prototype.$queue=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",t),this.queueStore.add(t)),this.__suspend__},nu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},eu.prototype.release=function(){var t=this,r=this.queueStore.size;if(this.logger("(release)","Release was called "+r),r>0){var e=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",e),e.forEach((function(r){t.logger(r),Reflect.apply(t.$trigger,t,r)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(eu.prototype,nu);var ou=function(t){function r(r){void 0===r&&(r={}),t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={$done:{configurable:!0}};return r.prototype.logger=function(){},r.prototype.$on=function(t,r,e){var n=this;void 0===e&&(e=null);this.validate(t,r);var o=this.takeFromStore(t);if(!1===o)return this.logger("($on)",t+" callback is not in lazy store"),this.addToNormalStore(t,"on",r,e);this.logger("($on)",t+" found in lazy store");var i=0;return o.forEach((function(o){var a=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(r,a,e||u),i+=n.addToNormalStore(t,"on",r,e||u)})),i},r.prototype.$once=function(t,r,e){void 0===e&&(e=null),this.validate(t,r);var n=this.takeFromStore(t);this.normalStore;if(!1===n)return this.logger("($once)",t+" not in the lazy store"),this.addToNormalStore(t,"once",r,e);this.logger("($once)",n);var o=Array.from(n)[0],i=o[0],a=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(r,i,e||a),this.$off(t)},r.prototype.$only=function(t,r,e){var n=this;void 0===e&&(e=null),this.validate(t,r);var o=!1,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",r,e)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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(r,i,e||a)})));return o},r.prototype.$onlyOnce=function(t,r,e){void 0===e&&(e=null),this.validate(t,r);var n=!1,o=this.takeFromStore(t);if(this.normalStore.has(t)||(this.logger("($onlyOnce)",t+" add to store"),n=this.addToNormalStore(t,"onlyOnce",r,e)),!1!==o){this.logger("($onlyOnce)",o);var i=Array.from(o)[0],a=i[0],u=i[1],c=i[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(r,a,e||u),this.$off(t)}return n},r.prototype.$replace=function(t,r,e,n){if(void 0===e&&(e=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(t);var o=this["$"+n];return this.logger("($replace)",t,r),Reflect.apply(o,this,[t,r,e])}throw new Error(n+" is not supported!")},r.prototype.$trigger=function(t,r,e,n){void 0===r&&(r=[]),void 0===e&&(e=null),void 0===n&&(n=!1),this.validateEvt(t);var o=0,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,r,e,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)n[o]=arguments[o+2];if(t.has(r)?(this.logger("(addToStore)",r+" existed"),e=t.get(r)):(this.logger("(addToStore)","create new Set for "+r),e=new Set),n.length>2)if(Array.isArray(n[0])){var i=n[2];this.checkTypeInLazyStore(r,i)||e.add(n)}else this.checkContentExist(n,e)||(this.logger("(addToStore)","insert new",n),e.add(n));else e.add(n);return t.set(r,e),[t,e.size]},r.prototype.checkContentExist=function(t,r){return!!Array.from(r).filter((function(r){return r[0]===t[0]})).length},r.prototype.checkTypeInStore=function(t,r){this.validateEvt(t,r);var e=this.$get(t,!0);return!1===e||!e.filter((function(t){var e=t[3];return r!==e})).length},r.prototype.checkTypeInLazyStore=function(t,r){this.validateEvt(t,r);var e=this.lazyStore.get(t);return this.logger("(checkTypeInLazyStore)",e),!!e&&!!Array.from(e).filter((function(t){return t[2]!==r})).length},r.prototype.addToNormalStore=function(t,r,e,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",t,r,"try to add to normal store"),this.checkTypeInStore(t,r)){this.logger("(addToNormalStore)",r+" can add to "+t+" normal store");var o=this.hashFnToKey(e),i=[this.normalStore,t,o,e,n,r],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[1];return this.normalStore=u,c}return!1},r.prototype.addToLazyStore=function(t,r,e,n){void 0===r&&(r=[]),void 0===e&&(e=null),void 0===n&&(n=!1);var o=[this.lazyStore,t,this.toArray(r),e];n&&o.push(n);var i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},r.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},e.normalStore.set=function(t){tu.set(this,t)},e.normalStore.get=function(){return tu.get(this)},e.lazyStore.set=function(t){ru.set(this,t)},e.lazyStore.get=function(){return ru.get(this)},r.prototype.hashFnToKey=function(t){return t.toString().split("").reduce((function(t,r){return(t=(t<<5)-t+r.charCodeAt(0))&t}),0)+""},Object.defineProperties(r.prototype,e),r}(eu));function iu(t,r,e){var n=r.contract,o=function(t){return Uo(t,Xa,Qa)}(r),i=new Ga(o,e);return Wa(i,o,n,t)}return function(t,r){var e,n=(e=r.debugOn,new ou({logger:e?function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0}));return r.contract&&Oa(r.contract)?iu(n,r,t):Za(n,r,t)}})); //# sourceMappingURL=core.js.map diff --git a/packages/http-client/core.js.map b/packages/http-client/core.js.map index e1676ff9..e14b8e50 100644 --- a/packages/http-client/core.js.map +++ b/packages/http-client/core.js.map @@ -1 +1 @@ -{"version":3,"file":"core.js","sources":["node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="continue",s="type",f="optional",l="enumv",p="args",h="checker",d="alias",v="login",g="logout",y={desc:"y"},b="No message",m="onResult",_="onError";var w="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},j="object"==typeof w&&w&&w.Object===Object&&w,O="object"==typeof self&&self&&self.Object===Object&&self,S=j||O||Function("return this")(),E=S.Symbol;function k(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&K(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function ct(t){return void 0===t}var st="[object Boolean]";var ft="[object Number]";function lt(t){return function(t){return"number"==typeof t||R(t)&&F(t)==ft}(t)&&t!=+t}var pt="[object String]";function ht(t){return"string"==typeof t||!A(t)&&R(t)&&F(t)==pt}function dt(t,e){return function(r){return t(e(r))}}var vt=dt(Object.getPrototypeOf,Object),gt="[object Object]",yt=Function.prototype,bt=Object.prototype,mt=yt.toString,_t=bt.hasOwnProperty,wt=mt.call(Object);function jt(t){if(!R(t)||F(t)!=gt)return!1;var e=vt(t);if(null===e)return!0;var r=_t.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&mt.call(r)==wt}var Ot,St=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Ot?a:++n];if(!1===e(o[u],u,o))break}return t};var Et="[object Arguments]";function kt(t){return R(t)&&F(t)==Et}var At=Object.prototype,xt=At.hasOwnProperty,Tt=At.propertyIsEnumerable,Pt=kt(function(){return arguments}())?kt:function(t){return R(t)&&xt.call(t,"callee")&&!Tt.call(t,"callee")};var qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ct=qt&&"object"==typeof module&&module&&!module.nodeType&&module,$t=Ct&&Ct.exports===qt?S.Buffer:void 0,Nt=($t?$t.isBuffer:void 0)||function(){return!1},zt=9007199254740991,Ft=/^(?:0|[1-9]\d*)$/;function Rt(t,e){var r=typeof t;return!!(e=null==e?zt:e)&&("number"==r||"symbol"!=r&&Ft.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=It}var Mt={};Mt["[object Float32Array]"]=Mt["[object Float64Array]"]=Mt["[object Int8Array]"]=Mt["[object Int16Array]"]=Mt["[object Int32Array]"]=Mt["[object Uint8Array]"]=Mt["[object Uint8ClampedArray]"]=Mt["[object Uint16Array]"]=Mt["[object Uint32Array]"]=!0,Mt["[object Arguments]"]=Mt["[object Array]"]=Mt["[object ArrayBuffer]"]=Mt["[object Boolean]"]=Mt["[object DataView]"]=Mt["[object Date]"]=Mt["[object Error]"]=Mt["[object Function]"]=Mt["[object Map]"]=Mt["[object Number]"]=Mt["[object Object]"]=Mt["[object RegExp]"]=Mt["[object Set]"]=Mt["[object String]"]=Mt["[object WeakMap]"]=!1;var Ut,Dt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ht=Dt&&"object"==typeof module&&module&&!module.nodeType&&module,Lt=Ht&&Ht.exports===Dt&&j.process,Bt=function(){try{var t=Ht&&Ht.require&&Ht.require("util").types;return t||Lt&&Lt.binding&&Lt.binding("util")}catch(t){}}(),Kt=Bt&&Bt.isTypedArray,Vt=Kt?(Ut=Kt,function(t){return Ut(t)}):function(t){return R(t)&&Jt(t.length)&&!!Mt[F(t)]},Gt=Object.prototype.hasOwnProperty;function Yt(t,e){var r=A(t),n=!r&&Pt(t),o=!r&&!n&&Nt(t),i=!r&&!n&&!o&&Vt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},pe.prototype.set=function(t,e){var r=this.__data__,n=fe(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var he,de=S["__core-js_shared__"],ve=(he=/[^.]+$/.exec(de&&de.keys&&de.keys.IE_PROTO||""))?"Symbol(src)_1."+he:"";var ge=Function.prototype.toString;function ye(t){if(null!=t){try{return ge.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var be=/^\[object .+?Constructor\]$/,me=Function.prototype,_e=Object.prototype,we=me.toString,je=_e.hasOwnProperty,Oe=RegExp("^"+we.call(je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Se(t){return!(!te(t)||function(t){return!!ve&&ve in t}(t))&&(ie(t)?Oe:be).test(ye(t))}function Ee(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Se(r)?r:void 0}var ke=Ee(S,"Map"),Ae=Ee(Object,"create");var xe="__lodash_hash_undefined__",Te=Object.prototype.hasOwnProperty;var Pe=Object.prototype.hasOwnProperty;var qe="__lodash_hash_undefined__";function Ce(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ue?new Ie:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Tn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(xn);function $n(t,e){return Cn(function(t,e,r){return e=An(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=An(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Nn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!te(r))return!1;var n=typeof e;return!!("number"==n?ae(r)&&Rt(e,r.length):"string"==n&&e in r)&&se(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},ro=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},no=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!to(e)(t)})).length)})).length:e.length>e.filter((function(t){return!eo(r,t)})).length},oo=function(t,e){if(void 0===e&&(e=null),jt(t)){if(!e)return!0;if(eo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!ct(r)||(!1!==(e=ro(t))?!no({arg:r},e):!to(t)(r))})).length)})).length}return!1},io=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),oo.apply(null,n)},ao=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),uo=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),co=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),so=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),fo=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),lo=function(){try{if(window||document)return!0}catch(t){}return!1},po=function(){try{if(!lo()&&w)return!0}catch(t){}return!1};var ho=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return lo()?"browser":po()?"node":"unknown"},e}(Error),vo=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,Error.captureStackTrace&&Error.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}(ho),go=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),yo=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),bo=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),mo=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,Error.captureStackTrace&&Error.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}(ho),_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,Error.captureStackTrace&&Error.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}(ho),wo=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),jo=Object.freeze({Jsonql406Error:ao,Jsonql500Error:uo,JsonqlAuthorisationError:co,JsonqlContractAuthError:so,JsonqlResolverAppError:fo,JsonqlResolverNotFoundError:vo,JsonqlEnumError:go,JsonqlTypeError:yo,JsonqlCheckerError:bo,JsonqlValidationError:mo,JsonqlError:_o,JsonqlServerError:wo}),Oo=_o,So=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function Eo(t){if(So(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||b,a=e.detail||e;if(o&&jo[o])throw new jo[r](i,a);throw new Oo(i,a)}return t}function ko(t){if(Array.isArray(t))throw new mo("",t);var e=t.message||b,r=t.detail||t;switch(!0){case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof vo:throw new vo(e,r);case t instanceof go:throw new go(e,r);case t instanceof yo:throw new yo(e,r);case t instanceof bo:throw new bo(e,r);case t instanceof mo:throw new mo(e,r);case t instanceof wo:throw new wo(e,r);default:throw new _o(e,r)}}function Ao(){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!io(e);case"array"===t:return!eo(e.arg);case!1!==(r=ro(t)):return!no(e,r);default:return!to(t)(e.arg)}},To=function(t,e){return ct(t)?!0!==e.optional||ct(e.defaultvalue)?null:e.defaultvalue:t},Po=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!eo(e))throw new _o("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!eo(t))throw new _o("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 Ao(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ao(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:Ao(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?To(t,a):t,index:r,param:a,optional:i}}));default:throw Ao(5),new _o("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Dn(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={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},qo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Co=function(t){return!Dn(t)};function $o(t,e){var r=Un(e,(function(t,e){return!t[Qn]}));return $r(r,{})?t:function(t,e){var r={};return e=an(e),ce(t,(function(t,n,o){cn(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,an((function(t){return t.alias===e})),ce)||e}))}function No(t,e){return Fn(e,(function(e,r){var n,o;return ct(t[r])||!0===e[Gn]&&Co(t[r])?zn({},e,((n={})[Zn]=!0,n)):((o={})[Wn]=t[r],o[Vn]=e[Vn],o[Gn]=e[Gn]||!1,o[Yn]=e[Yn]||!1,o[Xn]=e[Xn]||!1,o)}))}function zo(t,e){var r=function(t,e){var r=$o(t,e);return{pristineValues:Fn(Un(e,(function(t,e){return qo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Un(e,(function(t,e){return!qo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[No(n,r.checkAgainstAppProps),o]}var Fo=function(t){return eo(t)?t:[t]};var Ro=function(t,e){return!eo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Io=function(t,e){try{return!!ie(e)&&e.apply(null,[t])}catch(t){return!1}};function Jo(t){return function(e,r){if(e[Zn])return e[Wn];var n=function(t,e){var r,n=[[t[Wn]],[(r={},r[Vn]=Fo(t[Vn]),r[Gn]=t[Gn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ao("runValidationAction",r,e),new yo(r,n);if(!1!==e[Yn]&&!Ro(e[Wn],e[Yn]))throw Ao(Yn,e[Yn]),new go(r);if(!1!==e[Xn]&&!Io(e[Wn],e[Xn]))throw Ao(Xn,e[Xn]),new bo(r);return e[Wn]}}function Mo(t,e,r,n){return void 0===t&&(t={}),zn(function(t,e){var r=t[0],n=t[1],o=Fn(r,Jo(e));return zn(o,n)}(zo(t,e),n),r)}function Uo(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[p]=t,a[s]=e,!0===r&&(a[f]=!0),eo(n)&&(a[l]=n),ie(o)&&(a[h]=o),ht(i)&&(a[d]=i),a}var Do=Ln,Ho=eo,Lo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Po(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Bo=function(t,e,r){void 0===r&&(r={});var n=r[f],o=r[l],i=r[h],a=r[d];return Uo.apply(null,[t,e,n,o,i,a])},Ko=function(t){return function(e,r,n){return void 0===n&&(n={}),Mo(e,r,n,t)}}(Po),Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Lo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(ko)}};var Go=Array.isArray,Yo=void 0!==w?w:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Wo="object"==typeof Yo&&Yo&&Yo.Object===Object&&Yo,Xo="object"==typeof self&&self&&self.Object===Object&&self,Qo=(Wo||Xo||Function("return this")()).Symbol,Zo=Object.prototype,ti=Zo.hasOwnProperty,ei=Zo.toString,ri=Qo?Qo.toStringTag:void 0;var ni=Object.prototype.toString;var oi="[object Null]",ii="[object Undefined]",ai=Qo?Qo.toStringTag:void 0;function ui(t){return null==t?void 0===t?ii:oi:ai&&ai in Object(t)?function(t){var e=ti.call(t,ri),r=t[ri];try{t[ri]=void 0;var n=!0}catch(t){}var o=ei.call(t);return n&&(e?t[ri]=r:delete t[ri]),o}(t):function(t){return ni.call(t)}(t)}var ci=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function si(t){return null!=t&&"object"==typeof t}var fi="[object Object]",li=Function.prototype,pi=Object.prototype,hi=li.toString,di=pi.hasOwnProperty,vi=hi.call(Object);var gi=Qo?Qo.prototype:void 0,yi=(gi&&gi.toString,"[object String]");function bi(t){return"string"==typeof t||!Go(t)&&si(t)&&ui(t)==yi}var mi=function(t,e){return!!t.filter((function(t){return t===e})).length},_i=function(t,e){var r=Object.keys(t);return mi(r,e)},wi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},ji=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},Oi="query",Si="mutation",Ei="socket",ki="payload",Ai="condition",xi=function(){try{if(window||document)return!0}catch(t){}return!1},Ti=function(){try{if(!xi()&&Yo)return!0}catch(t){}return!1};var Pi=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return xi()?"browser":Ti()?"node":"unknown"},e}(Error));var qi=function(t){var e;return(e={}).args=t,e};var Ci=function(t){return _i(t,"data")&&!_i(t,"error")?t.data:t},$i=function(t){return function(t){if(!si(t)||ui(t)!=fi)return!1;var e=ci(t);if(null===e)return!0;var r=di.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&hi.call(r)==vi}(t)&&(_i(t,Oi)||_i(t,Si)||_i(t,Ei))},Ni=function(t,e){return void 0===e&&(e={}),$i(e)?Promise.resolve(e):t.getContract()},zi=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(wi(e,r,m),o),t.$only(wi(e,r,_),i),t.$trigger(e,{resolverName:r,args:n})}))}},Fi=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Ri(t,e,r,n){var o=function(t,e,r,n){var o={query:{},mutation:{}},i=function(e){o.query[e]=function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Lo(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(ko)}};for(var a in n.query)i(a);var u=function(e){o.mutation[e]=function(r,o,i){void 0===i&&(i={});var a=[r,o],u=n.mutation[e].params;return Lo(a,u).then((function(){return t.mutation.apply(t,[e,r,o,i])})).catch(ko)}};for(var s in n.mutation)u(s);if(r.enableAuth&&n.auth){o.auth={};var f=r.loginHandlerName,l=r.logoutHandlerName;n.auth[f]&&(o.auth[f]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Vo(t,f,r,n);return a.apply(null,o).then(t.postLoginAction).then((function(t){return e.$trigger(v,t),t}))}),n.auth[l]?o.auth[l]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Vo(t,l,r,n);return a.apply(null,o).then(t.postLogoutAction).then((function(t){return e.$trigger(g,t),t}))}:o.auth[l]=function(){t.postLogoutAction(c),e.$trigger(g,c)}}return o}(t,e,r,n);Fi(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(wi(t,n,m),r)})).catch((function(r){e.$trigger(wi(t,n,_),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ii=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Ri(t,n,e,r)}));var o={query:zi(n,"query"),mutation:zi(n,"mutation"),auth:zi(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.2",o},Ji=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ua().key(e);t(ca(r),r)}},remove:function(t){return ua().removeItem(t)},clearAll:function(){return ua().clear()}};function ua(){return ia.localStorage}function ca(t){return ua().getItem(t)}var sa=Hi.trim,fa={name:"cookieStorage",read:function(t){if(!t||!da(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(la.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;la.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pa,remove:ha,clearAll:function(){pa((function(t,e){ha(e)}))}},la=Hi.Global.document;function pa(t){for(var e=la.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(sa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ha(t){t&&da(t)&&(la.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function da(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(la.cookie)}var va=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ga="expire_mixin",ya=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ga);return{set:function(e,r,n,o){this.hasNamespace(ga)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ga)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ga)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ea=[aa,fa],ka=[va,ya,ja,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Sa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Sa.compress(this._serialize(r));t(e,n)}}}],Aa=ra.createStore(Ea,ka),xa=Hi.Global;function Ta(){return xa.sessionStorage}function Pa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:Pa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(Pa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},fa],Ca=[va,ya],$a=ra.createStore(qa,Ca),Na=Aa,za=$a,Fa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ra(t){this.message=t}Ra.prototype=new Error,Ra.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ra("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Fa.indexOf(n);return a};var Ja=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidTokenError";var Ua=function(t,e){if("string"!=typeof t)throw new Ma("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ja(t.split(".")[r]))}catch(t){throw new Ma("Invalid token specified: "+t.message)}},Da=Ma;Ua.InvalidTokenError=Da;var Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Xa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Za(t){if(Do(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new _o("Token has expired on "+r,t)}return t}(Ua(t));throw new _o("Token must be a string!")}Bo("HS256",["string"]),Bo(!1,["boolean","number","string"],((Ha={})[d]="exp",Ha[f]=!0,Ha)),Bo(!1,["boolean","number","string"],((La={})[d]="nbf",La[f]=!0,La)),Bo(!1,["boolean","string"],((Ba={})[d]="iss",Ba[f]=!0,Ba)),Bo(!1,["boolean","string"],((Ka={})[d]="sub",Ka[f]=!0,Ka)),Bo(!1,["boolean","string"],((Va={})[d]="iss",Va[f]=!0,Va)),Bo(!1,["boolean"],((Ga={})[f]=!0,Ga)),Bo(!1,["boolean","string"],((Ya={})[f]=!0,Ya)),Bo(!1,["boolean","string"],((Wa={})[f]=!0,Wa)),Bo(!1,["boolean"],((Xa={})[f]=!0,Xa));var tu=u[0],eu=u[1],ru=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},nu={headers:{configurable:!0}};nu.headers.set=function(t){this.extraHeader=t},ru.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=zn({},{_cb:ji()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=zn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,zn({},{method:tu,params:o},e))},ru.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},ru.prototype.processJsonp=function(t){return Ci(t)},ru.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Do(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Ci(o)}),(function(t){throw e.cleanUp(),console.error(t),new wo("Server side error",t)}))},ru.prototype.getHeaders=function(){return this.opts.enableAuth?zn({},a,this.getAuthHeader(),this.extraHeader):zn({},a,this.extraHeader)},ru.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},ru.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=zn({},this.extraParams,y)),this.request({},{method:"GET"},this.contractHeader).then(Eo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},ru.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),bi(t)&&Go(e)){var o=qi(e);return!0===r?o:((n={})[t]=o,n)}throw new Pi("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(Eo)},ru.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ki]=e,i[Ai]=r,!0===n)return i;if(bi(t))return(o={})[t]=i,o;throw new Pi("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:eu}).then(Eo)},Object.defineProperties(ru.prototype,nu);var ou=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Ho(t)&&t.length>=2&&Reflect.apply(Na.set,Na,t),new mo("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Na.get("endpoint")||[];mi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Na.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!mi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ji();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Na.set,Na,e)},r.jsonqlEndpoint.get=function(){var t=Na.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Na.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return za.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Za)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!$i(t))throw new mo("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return $i(this.opts.contract)?this.opts.contract:Na.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(ru))),iu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},au={hostname:Bo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Bo("jsonql",["string"]),loginHandlerName:Bo(v,["string"]),logoutHandlerName:Bo(g,["string"]),enableJsonp:Bo(!1,["boolean"]),enableAuth:Bo(!1,["boolean"]),useJwt:Bo(!0,["boolean"]),useLocalstorage:Bo(!0,["boolean"]),storageKey:Bo("storageKey",["string"]),authKey:Bo("authKey",["string"]),contractExpired:Bo(0,["number"]),keepContract:Bo(!0,["boolean"]),exposeContract:Bo(!1,["boolean"]),showContractDesc:Bo(!1,["boolean"]),contractKey:Bo(!1,["boolean"]),contractKeyName:Bo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Bo(!1,["boolean"]),timeout:Bo(5e3,["number"]),returnInstance:Bo(!1,["boolean"]),allowReturnRawToken:Bo(!1,["boolean"]),debugOn:Bo(!1,["boolean"])};var uu=new WeakMap,cu=new WeakMap;var su=function(){this.__suspend__=null,this.queueStore=new Set},fu={$suspend:{configurable:!0},$queues:{configurable:!0}};fu.$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)},su.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__},fu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},su.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(su.prototype,fu);var lu=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 i=0;return o.forEach((function(o){var a=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.run(e,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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.run(e,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(t){var o=t[0],i=t[1],a=t[2];if(a&&"only"!==a)throw new Error("You are trying to register an event already been taken by other type: "+a);n.run(e,o,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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.run(e,a,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 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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){uu.set(this,t)},r.normalStore.get=function(){return uu.get(this)},r.lazyStore.set=function(t){cu.set(this,t)},r.lazyStore.get=function(){return cu.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}(su));function pu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ko(t,au,iu)}(e),i=new ou(o,t),a=Ni(i,n),u=(r=o.debugOn,new lu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ii(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),pu(o,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="continue",s="type",f="optional",l="enumv",p="args",h="checker",d="alias",v="login",g="logout",y={desc:"y"},b="No message",m="onResult",_="onError";var w="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},j="object"==typeof w&&w&&w.Object===Object&&w,O="object"==typeof self&&self&&self.Object===Object&&self,S=j||O||Function("return this")(),E=S.Symbol;function k(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&K(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function ct(t){return void 0===t}var st="[object Boolean]";var ft="[object Number]";function lt(t){return function(t){return"number"==typeof t||R(t)&&F(t)==ft}(t)&&t!=+t}var pt="[object String]";function ht(t){return"string"==typeof t||!A(t)&&R(t)&&F(t)==pt}function dt(t,e){return function(r){return t(e(r))}}var vt=dt(Object.getPrototypeOf,Object),gt="[object Object]",yt=Function.prototype,bt=Object.prototype,mt=yt.toString,_t=bt.hasOwnProperty,wt=mt.call(Object);function jt(t){if(!R(t)||F(t)!=gt)return!1;var e=vt(t);if(null===e)return!0;var r=_t.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&mt.call(r)==wt}var Ot,St=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Ot?a:++n];if(!1===e(o[u],u,o))break}return t};var Et="[object Arguments]";function kt(t){return R(t)&&F(t)==Et}var At=Object.prototype,xt=At.hasOwnProperty,Tt=At.propertyIsEnumerable,Pt=kt(function(){return arguments}())?kt:function(t){return R(t)&&xt.call(t,"callee")&&!Tt.call(t,"callee")};var qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ct=qt&&"object"==typeof module&&module&&!module.nodeType&&module,$t=Ct&&Ct.exports===qt?S.Buffer:void 0,Nt=($t?$t.isBuffer:void 0)||function(){return!1},zt=9007199254740991,Ft=/^(?:0|[1-9]\d*)$/;function Rt(t,e){var r=typeof t;return!!(e=null==e?zt:e)&&("number"==r||"symbol"!=r&&Ft.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=It}var Mt={};Mt["[object Float32Array]"]=Mt["[object Float64Array]"]=Mt["[object Int8Array]"]=Mt["[object Int16Array]"]=Mt["[object Int32Array]"]=Mt["[object Uint8Array]"]=Mt["[object Uint8ClampedArray]"]=Mt["[object Uint16Array]"]=Mt["[object Uint32Array]"]=!0,Mt["[object Arguments]"]=Mt["[object Array]"]=Mt["[object ArrayBuffer]"]=Mt["[object Boolean]"]=Mt["[object DataView]"]=Mt["[object Date]"]=Mt["[object Error]"]=Mt["[object Function]"]=Mt["[object Map]"]=Mt["[object Number]"]=Mt["[object Object]"]=Mt["[object RegExp]"]=Mt["[object Set]"]=Mt["[object String]"]=Mt["[object WeakMap]"]=!1;var Ut,Dt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ht=Dt&&"object"==typeof module&&module&&!module.nodeType&&module,Lt=Ht&&Ht.exports===Dt&&j.process,Bt=function(){try{var t=Ht&&Ht.require&&Ht.require("util").types;return t||Lt&&Lt.binding&&Lt.binding("util")}catch(t){}}(),Kt=Bt&&Bt.isTypedArray,Vt=Kt?(Ut=Kt,function(t){return Ut(t)}):function(t){return R(t)&&Jt(t.length)&&!!Mt[F(t)]},Gt=Object.prototype.hasOwnProperty;function Yt(t,e){var r=A(t),n=!r&&Pt(t),o=!r&&!n&&Nt(t),i=!r&&!n&&!o&&Vt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},pe.prototype.set=function(t,e){var r=this.__data__,n=fe(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var he,de=S["__core-js_shared__"],ve=(he=/[^.]+$/.exec(de&&de.keys&&de.keys.IE_PROTO||""))?"Symbol(src)_1."+he:"";var ge=Function.prototype.toString;function ye(t){if(null!=t){try{return ge.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var be=/^\[object .+?Constructor\]$/,me=Function.prototype,_e=Object.prototype,we=me.toString,je=_e.hasOwnProperty,Oe=RegExp("^"+we.call(je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Se(t){return!(!te(t)||function(t){return!!ve&&ve in t}(t))&&(ie(t)?Oe:be).test(ye(t))}function Ee(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Se(r)?r:void 0}var ke=Ee(S,"Map"),Ae=Ee(Object,"create");var xe="__lodash_hash_undefined__",Te=Object.prototype.hasOwnProperty;var Pe=Object.prototype.hasOwnProperty;var qe="__lodash_hash_undefined__";function Ce(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ue?new Ie:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Tn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(xn);function $n(t,e){return Cn(function(t,e,r){return e=An(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=An(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Nn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!te(r))return!1;var n=typeof e;return!!("number"==n?ae(r)&&Rt(e,r.length):"string"==n&&e in r)&&se(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},ro=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},no=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!to(e)(t)})).length)})).length:e.length>e.filter((function(t){return!eo(r,t)})).length},oo=function(t,e){if(void 0===e&&(e=null),jt(t)){if(!e)return!0;if(eo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!ct(r)||(!1!==(e=ro(t))?!no({arg:r},e):!to(t)(r))})).length)})).length}return!1},io=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),oo.apply(null,n)},ao=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),uo=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),co=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),so=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),fo=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),lo=function(){try{if(window||document)return!0}catch(t){}return!1},po=function(){try{if(!lo()&&w)return!0}catch(t){}return!1};var ho=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return lo()?"browser":po()?"node":"unknown"},e}(Error),vo=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,Error.captureStackTrace&&Error.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}(ho),go=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),yo=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),bo=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),mo=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,Error.captureStackTrace&&Error.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}(ho),_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,Error.captureStackTrace&&Error.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}(ho),wo=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),jo=Object.freeze({__proto__:null,Jsonql406Error:ao,Jsonql500Error:uo,JsonqlAuthorisationError:co,JsonqlContractAuthError:so,JsonqlResolverAppError:fo,JsonqlResolverNotFoundError:vo,JsonqlEnumError:go,JsonqlTypeError:yo,JsonqlCheckerError:bo,JsonqlValidationError:mo,JsonqlError:_o,JsonqlServerError:wo}),Oo=_o,So=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function Eo(t){if(So(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||b,a=e.detail||e;if(o&&jo[o])throw new jo[r](i,a);throw new Oo(i,a)}return t}function ko(t){if(Array.isArray(t))throw new mo("",t);var e=t.message||b,r=t.detail||t;switch(!0){case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof vo:throw new vo(e,r);case t instanceof go:throw new go(e,r);case t instanceof yo:throw new yo(e,r);case t instanceof bo:throw new bo(e,r);case t instanceof mo:throw new mo(e,r);case t instanceof wo:throw new wo(e,r);default:throw new _o(e,r)}}function Ao(){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!io(e);case"array"===t:return!eo(e.arg);case!1!==(r=ro(t)):return!no(e,r);default:return!to(t)(e.arg)}},To=function(t,e){return ct(t)?!0!==e.optional||ct(e.defaultvalue)?null:e.defaultvalue:t},Po=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!eo(e))throw new _o("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!eo(t))throw new _o("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 Ao(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ao(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:Ao(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?To(t,a):t,index:r,param:a,optional:i}}));default:throw Ao(5),new _o("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Dn(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={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},qo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Co=function(t){return!Dn(t)};function $o(t,e){var r=Un(e,(function(t,e){return!t[Qn]}));return $r(r,{})?t:function(t,e){var r={};return e=an(e),ce(t,(function(t,n,o){cn(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,an((function(t){return t.alias===e})),ce)||e}))}function No(t,e){return Fn(e,(function(e,r){var n,o;return ct(t[r])||!0===e[Gn]&&Co(t[r])?zn({},e,((n={})[Zn]=!0,n)):((o={})[Wn]=t[r],o[Vn]=e[Vn],o[Gn]=e[Gn]||!1,o[Yn]=e[Yn]||!1,o[Xn]=e[Xn]||!1,o)}))}function zo(t,e){var r=function(t,e){var r=$o(t,e);return{pristineValues:Fn(Un(e,(function(t,e){return qo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Un(e,(function(t,e){return!qo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[No(n,r.checkAgainstAppProps),o]}var Fo=function(t){return eo(t)?t:[t]};var Ro=function(t,e){return!eo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Io=function(t,e){try{return!!ie(e)&&e.apply(null,[t])}catch(t){return!1}};function Jo(t){return function(e,r){if(e[Zn])return e[Wn];var n=function(t,e){var r,n=[[t[Wn]],[(r={},r[Vn]=Fo(t[Vn]),r[Gn]=t[Gn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ao("runValidationAction",r,e),new yo(r,n);if(!1!==e[Yn]&&!Ro(e[Wn],e[Yn]))throw Ao(Yn,e[Yn]),new go(r);if(!1!==e[Xn]&&!Io(e[Wn],e[Xn]))throw Ao(Xn,e[Xn]),new bo(r);return e[Wn]}}function Mo(t,e,r,n){return void 0===t&&(t={}),zn(function(t,e){var r=t[0],n=t[1],o=Fn(r,Jo(e));return zn(o,n)}(zo(t,e),n),r)}function Uo(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[p]=t,a[s]=e,!0===r&&(a[f]=!0),eo(n)&&(a[l]=n),ie(o)&&(a[h]=o),ht(i)&&(a[d]=i),a}var Do=Ln,Ho=eo,Lo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Po(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Bo=function(t,e,r){void 0===r&&(r={});var n=r[f],o=r[l],i=r[h],a=r[d];return Uo.apply(null,[t,e,n,o,i,a])},Ko=function(t){return function(e,r,n){return void 0===n&&(n={}),Mo(e,r,n,t)}}(Po),Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Lo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(ko)}};var Go=Array.isArray,Yo=void 0!==w?w:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Wo="object"==typeof Yo&&Yo&&Yo.Object===Object&&Yo,Xo="object"==typeof self&&self&&self.Object===Object&&self,Qo=(Wo||Xo||Function("return this")()).Symbol,Zo=Object.prototype,ti=Zo.hasOwnProperty,ei=Zo.toString,ri=Qo?Qo.toStringTag:void 0;var ni=Object.prototype.toString;var oi="[object Null]",ii="[object Undefined]",ai=Qo?Qo.toStringTag:void 0;function ui(t){return null==t?void 0===t?ii:oi:ai&&ai in Object(t)?function(t){var e=ti.call(t,ri),r=t[ri];try{t[ri]=void 0;var n=!0}catch(t){}var o=ei.call(t);return n&&(e?t[ri]=r:delete t[ri]),o}(t):function(t){return ni.call(t)}(t)}var ci=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function si(t){return null!=t&&"object"==typeof t}var fi="[object Object]",li=Function.prototype,pi=Object.prototype,hi=li.toString,di=pi.hasOwnProperty,vi=hi.call(Object);var gi=Qo?Qo.prototype:void 0,yi=(gi&&gi.toString,"[object String]");function bi(t){return"string"==typeof t||!Go(t)&&si(t)&&ui(t)==yi}var mi=function(t,e){return!!t.filter((function(t){return t===e})).length},_i=function(t,e){var r=Object.keys(t);return mi(r,e)},wi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},ji=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},Oi="query",Si="mutation",Ei="socket",ki="payload",Ai="condition",xi=function(){try{if(window||document)return!0}catch(t){}return!1},Ti=function(){try{if(!xi()&&Yo)return!0}catch(t){}return!1};var Pi=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return xi()?"browser":Ti()?"node":"unknown"},e}(Error));var qi=function(t){var e;return(e={}).args=t,e};var Ci=function(t){return _i(t,"data")&&!_i(t,"error")?t.data:t},$i=function(t){return function(t){if(!si(t)||ui(t)!=fi)return!1;var e=ci(t);if(null===e)return!0;var r=di.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&hi.call(r)==vi}(t)&&(_i(t,Oi)||_i(t,Si)||_i(t,Ei))},Ni=function(t,e){return void 0===e&&(e={}),$i(e)?Promise.resolve(e):t.getContract()},zi=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(wi(e,r,m),o),t.$only(wi(e,r,_),i),t.$trigger(e,{resolverName:r,args:n})}))}},Fi=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Ri(t,e,r,n){var o=function(t,e,r,n){var o={query:{},mutation:{}},i=function(e){o.query[e]=function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Lo(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(ko)}};for(var a in n.query)i(a);var u=function(e){o.mutation[e]=function(r,o,i){void 0===i&&(i={});var a=[r,o],u=n.mutation[e].params;return Lo(a,u).then((function(){return t.mutation.apply(t,[e,r,o,i])})).catch(ko)}};for(var s in n.mutation)u(s);if(r.enableAuth&&n.auth){o.auth={};var f=r.loginHandlerName,l=r.logoutHandlerName;n.auth[f]&&(o.auth[f]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Vo(t,f,r,n);return a.apply(null,o).then(t.postLoginAction).then((function(t){return e.$trigger(v,t),t}))}),n.auth[l]?o.auth[l]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Vo(t,l,r,n);return a.apply(null,o).then(t.postLogoutAction).then((function(t){return e.$trigger(g,t),t}))}:o.auth[l]=function(){t.postLogoutAction(c),e.$trigger(g,c)}}return o}(t,e,r,n);Fi(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(wi(t,n,m),r)})).catch((function(r){e.$trigger(wi(t,n,_),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ii=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Ri(t,n,e,r)}));var o={query:zi(n,"query"),mutation:zi(n,"mutation"),auth:zi(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Ji=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ua().key(e);t(ca(r),r)}},remove:function(t){return ua().removeItem(t)},clearAll:function(){return ua().clear()}};function ua(){return ia.localStorage}function ca(t){return ua().getItem(t)}var sa=Hi.trim,fa={name:"cookieStorage",read:function(t){if(!t||!da(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(la.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;la.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pa,remove:ha,clearAll:function(){pa((function(t,e){ha(e)}))}},la=Hi.Global.document;function pa(t){for(var e=la.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(sa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ha(t){t&&da(t)&&(la.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function da(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(la.cookie)}var va=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ga="expire_mixin",ya=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ga);return{set:function(e,r,n,o){this.hasNamespace(ga)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ga)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ga)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ea=[aa,fa],ka=[va,ya,ja,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Sa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Sa.compress(this._serialize(r));t(e,n)}}}],Aa=ra.createStore(Ea,ka),xa=Hi.Global;function Ta(){return xa.sessionStorage}function Pa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:Pa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(Pa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},fa],Ca=[va,ya],$a=ra.createStore(qa,Ca),Na=Aa,za=$a,Fa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ra(t){this.message=t}Ra.prototype=new Error,Ra.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ra("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Fa.indexOf(n);return a};var Ja=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidTokenError";var Ua=function(t,e){if("string"!=typeof t)throw new Ma("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ja(t.split(".")[r]))}catch(t){throw new Ma("Invalid token specified: "+t.message)}},Da=Ma;Ua.InvalidTokenError=Da;var Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Xa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Za(t){if(Do(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new _o("Token has expired on "+r,t)}return t}(Ua(t));throw new _o("Token must be a string!")}Bo("HS256",["string"]),Bo(!1,["boolean","number","string"],((Ha={})[d]="exp",Ha[f]=!0,Ha)),Bo(!1,["boolean","number","string"],((La={})[d]="nbf",La[f]=!0,La)),Bo(!1,["boolean","string"],((Ba={})[d]="iss",Ba[f]=!0,Ba)),Bo(!1,["boolean","string"],((Ka={})[d]="sub",Ka[f]=!0,Ka)),Bo(!1,["boolean","string"],((Va={})[d]="iss",Va[f]=!0,Va)),Bo(!1,["boolean"],((Ga={})[f]=!0,Ga)),Bo(!1,["boolean","string"],((Ya={})[f]=!0,Ya)),Bo(!1,["boolean","string"],((Wa={})[f]=!0,Wa)),Bo(!1,["boolean"],((Xa={})[f]=!0,Xa));var tu=u[0],eu=u[1],ru=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},nu={headers:{configurable:!0}};nu.headers.set=function(t){this.extraHeader=t},ru.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=zn({},{_cb:ji()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=zn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,zn({},{method:tu,params:o},e))},ru.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},ru.prototype.processJsonp=function(t){return Ci(t)},ru.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Do(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Ci(o)}),(function(t){throw e.cleanUp(),console.error(t),new wo("Server side error",t)}))},ru.prototype.getHeaders=function(){return this.opts.enableAuth?zn({},a,this.getAuthHeader(),this.extraHeader):zn({},a,this.extraHeader)},ru.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},ru.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=zn({},this.extraParams,y)),this.request({},{method:"GET"},this.contractHeader).then(Eo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},ru.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),bi(t)&&Go(e)){var o=qi(e);return!0===r?o:((n={})[t]=o,n)}throw new Pi("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(Eo)},ru.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ki]=e,i[Ai]=r,!0===n)return i;if(bi(t))return(o={})[t]=i,o;throw new Pi("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:eu}).then(Eo)},Object.defineProperties(ru.prototype,nu);var ou=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Ho(t)&&t.length>=2&&Reflect.apply(Na.set,Na,t),new mo("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Na.get("endpoint")||[];mi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Na.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!mi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ji();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Na.set,Na,e)},r.jsonqlEndpoint.get=function(){var t=Na.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Na.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return za.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Za)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!$i(t))throw new mo("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return $i(this.opts.contract)?this.opts.contract:Na.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(ru))),iu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},au={hostname:Bo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Bo("jsonql",["string"]),loginHandlerName:Bo(v,["string"]),logoutHandlerName:Bo(g,["string"]),enableJsonp:Bo(!1,["boolean"]),enableAuth:Bo(!1,["boolean"]),useJwt:Bo(!0,["boolean"]),useLocalstorage:Bo(!0,["boolean"]),storageKey:Bo("storageKey",["string"]),authKey:Bo("authKey",["string"]),contractExpired:Bo(0,["number"]),keepContract:Bo(!0,["boolean"]),exposeContract:Bo(!1,["boolean"]),showContractDesc:Bo(!1,["boolean"]),contractKey:Bo(!1,["boolean"]),contractKeyName:Bo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Bo(!1,["boolean"]),timeout:Bo(5e3,["number"]),returnInstance:Bo(!1,["boolean"]),allowReturnRawToken:Bo(!1,["boolean"]),debugOn:Bo(!1,["boolean"])};var uu=new WeakMap,cu=new WeakMap;var su=function(){this.__suspend__=null,this.queueStore=new Set},fu={$suspend:{configurable:!0},$queues:{configurable:!0}};fu.$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)},su.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__},fu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},su.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(su.prototype,fu);var lu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){uu.set(this,t)},r.normalStore.get=function(){return uu.get(this)},r.lazyStore.set=function(t){cu.set(this,t)},r.lazyStore.get=function(){return cu.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}(su));function pu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ko(t,au,iu)}(e),i=new ou(o,t),a=Ni(i,n),u=(r=o.debugOn,new lu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ii(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),pu(o,t)}})); //# sourceMappingURL=jsonql-client.static.js.map diff --git a/packages/http-client/dist/jsonql-client.static.js.map b/packages/http-client/dist/jsonql-client.static.js.map index d2ad6dc9..fd3e196d 100644 --- a/packages/http-client/dist/jsonql-client.static.js.map +++ b/packages/http-client/dist/jsonql-client.static.js.map @@ -1 +1 @@ -{"version":3,"file":"jsonql-client.static.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="continue",s="type",f="optional",l="enumv",p="args",h="checker",d="alias",v="login",g="logout",y={desc:"y"},b="No message";var m="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},_="object"==typeof m&&m&&m.Object===Object&&m,w="object"==typeof self&&self&&self.Object===Object&&self,j=_||w||Function("return this")(),O=j.Symbol;function S(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&L(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function at(t){return void 0===t}var ut="[object Boolean]";var ct="[object Number]";function st(t){return function(t){return"number"==typeof t||z(t)&&$(t)==ct}(t)&&t!=+t}var ft="[object String]";function lt(t){return"string"==typeof t||!E(t)&&z(t)&&$(t)==ft}function pt(t,e){return function(r){return t(e(r))}}var ht=pt(Object.getPrototypeOf,Object),dt="[object Object]",vt=Function.prototype,gt=Object.prototype,yt=vt.toString,bt=gt.hasOwnProperty,mt=yt.call(Object);function _t(t){if(!z(t)||$(t)!=dt)return!1;var e=ht(t);if(null===e)return!0;var r=bt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&yt.call(r)==mt}var wt,jt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[wt?a:++n];if(!1===e(o[u],u,o))break}return t};var Ot="[object Arguments]";function St(t){return z(t)&&$(t)==Ot}var Et=Object.prototype,kt=Et.hasOwnProperty,At=Et.propertyIsEnumerable,xt=St(function(){return arguments}())?St:function(t){return z(t)&&kt.call(t,"callee")&&!At.call(t,"callee")};var Tt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Pt=Tt&&"object"==typeof module&&module&&!module.nodeType&&module,qt=Pt&&Pt.exports===Tt?j.Buffer:void 0,Ct=(qt?qt.isBuffer:void 0)||function(){return!1},Nt=9007199254740991,$t=/^(?:0|[1-9]\d*)$/;function zt(t,e){var r=typeof t;return!!(e=null==e?Nt:e)&&("number"==r||"symbol"!=r&&$t.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Ft}var Rt={};Rt["[object Float32Array]"]=Rt["[object Float64Array]"]=Rt["[object Int8Array]"]=Rt["[object Int16Array]"]=Rt["[object Int32Array]"]=Rt["[object Uint8Array]"]=Rt["[object Uint8ClampedArray]"]=Rt["[object Uint16Array]"]=Rt["[object Uint32Array]"]=!0,Rt["[object Arguments]"]=Rt["[object Array]"]=Rt["[object ArrayBuffer]"]=Rt["[object Boolean]"]=Rt["[object DataView]"]=Rt["[object Date]"]=Rt["[object Error]"]=Rt["[object Function]"]=Rt["[object Map]"]=Rt["[object Number]"]=Rt["[object Object]"]=Rt["[object RegExp]"]=Rt["[object Set]"]=Rt["[object String]"]=Rt["[object WeakMap]"]=!1;var Jt,Mt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ut=Mt&&"object"==typeof module&&module&&!module.nodeType&&module,Dt=Ut&&Ut.exports===Mt&&_.process,Ht=function(){try{var t=Ut&&Ut.require&&Ut.require("util").types;return t||Dt&&Dt.binding&&Dt.binding("util")}catch(t){}}(),Lt=Ht&&Ht.isTypedArray,Bt=Lt?(Jt=Lt,function(t){return Jt(t)}):function(t){return z(t)&&It(t.length)&&!!Rt[$(t)]},Kt=Object.prototype.hasOwnProperty;function Vt(t,e){var r=E(t),n=!r&&xt(t),o=!r&&!n&&Ct(t),i=!r&&!n&&!o&&Bt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},fe.prototype.set=function(t,e){var r=this.__data__,n=ce(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var le,pe=j["__core-js_shared__"],he=(le=/[^.]+$/.exec(pe&&pe.keys&&pe.keys.IE_PROTO||""))?"Symbol(src)_1."+le:"";var de=Function.prototype.toString;function ve(t){if(null!=t){try{return de.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ge=/^\[object .+?Constructor\]$/,ye=Function.prototype,be=Object.prototype,me=ye.toString,_e=be.hasOwnProperty,we=RegExp("^"+me.call(_e).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function je(t){return!(!Qt(t)||function(t){return!!he&&he in t}(t))&&(ne(t)?we:ge).test(ve(t))}function Oe(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return je(r)?r:void 0}var Se=Oe(j,"Map"),Ee=Oe(Object,"create");var ke="__lodash_hash_undefined__",Ae=Object.prototype.hasOwnProperty;var xe=Object.prototype.hasOwnProperty;var Te="__lodash_hash_undefined__";function Pe(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Je?new Fe:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=An)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kn);function qn(t,e){return Pn(function(t,e,r){return e=En(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=En(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Cn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?oe(r)&&zt(e,r.length):"string"==n&&e in r)&&ue(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},to=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},eo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Qn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Zn(r,t)})).length},ro=function(t,e){if(void 0===e&&(e=null),_t(t)){if(!e)return!0;if(Zn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!at(r)||(!1!==(e=to(t))?!eo({arg:r},e):!Qn(t)(r))})).length)})).length}return!1},no=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),ro.apply(null,n)},oo=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),io=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),ao=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),uo=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),co=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),so=function(){try{if(window||document)return!0}catch(t){}return!1},fo=function(){try{if(!so()&&m)return!0}catch(t){}return!1};var lo=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return so()?"browser":fo()?"node":"unknown"},e}(Error),po=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,Error.captureStackTrace&&Error.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}(lo),ho=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),vo=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),go=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),yo=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,Error.captureStackTrace&&Error.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}(lo),bo=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,Error.captureStackTrace&&Error.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}(lo),mo=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),_o=Object.freeze({Jsonql406Error:oo,Jsonql500Error:io,JsonqlAuthorisationError:ao,JsonqlContractAuthError:uo,JsonqlResolverAppError:co,JsonqlResolverNotFoundError:po,JsonqlEnumError:ho,JsonqlTypeError:vo,JsonqlCheckerError:go,JsonqlValidationError:yo,JsonqlError:bo,JsonqlServerError:mo}),wo=bo,jo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function Oo(t){if(jo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||b,a=e.detail||e;if(o&&_o[o])throw new _o[r](i,a);throw new wo(i,a)}return t}function So(t){if(Array.isArray(t))throw new yo("",t);var e=t.message||b,r=t.detail||t;switch(!0){case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof vo:throw new vo(e,r);case t instanceof go:throw new go(e,r);case t instanceof yo:throw new yo(e,r);case t instanceof mo:throw new mo(e,r);default:throw new bo(e,r)}}function Eo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var ko=function(t,e){var r;switch(!0){case"object"===t:return!no(e);case"array"===t:return!Zn(e.arg);case!1!==(r=to(t)):return!eo(e,r);default:return!Qn(t)(e.arg)}},Ao=function(t,e){return at(t)?!0!==e.optional||at(e.defaultvalue)?null:e.defaultvalue:t},xo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Zn(e))throw new bo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Zn(t))throw new bo("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 Eo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Eo(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:Eo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?Ao(t,a):t,index:r,param:a,optional:i}}));default:throw Eo(5),new bo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Mn(e)&&!(r.type.length>r.type.filter((function(e){return ko(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return ko(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},To=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Po=function(t){return!Mn(t)};function qo(t,e){var r=Jn(e,(function(t,e){return!t[Wn]}));return qr(r,{})?t:function(t,e){var r={};return e=nn(e),ae(t,(function(t,n,o){an(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,nn((function(t){return t.alias===e})),ae)||e}))}function Co(t,e){return $n(e,(function(e,r){var n,o;return at(t[r])||!0===e[Kn]&&Po(t[r])?Nn({},e,((n={})[Xn]=!0,n)):((o={})[Gn]=t[r],o[Bn]=e[Bn],o[Kn]=e[Kn]||!1,o[Vn]=e[Vn]||!1,o[Yn]=e[Yn]||!1,o)}))}function No(t,e){var r=function(t,e){var r=qo(t,e);return{pristineValues:$n(Jn(e,(function(t,e){return To(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Jn(e,(function(t,e){return!To(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Co(n,r.checkAgainstAppProps),o]}var $o=function(t){return Zn(t)?t:[t]};var zo=function(t,e){return!Zn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Fo=function(t,e){try{return!!ne(e)&&e.apply(null,[t])}catch(t){return!1}};function Io(t){return function(e,r){if(e[Xn])return e[Gn];var n=function(t,e){var r,n=[[t[Gn]],[(r={},r[Bn]=$o(t[Bn]),r[Kn]=t[Kn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Eo("runValidationAction",r,e),new vo(r,n);if(!1!==e[Vn]&&!zo(e[Gn],e[Vn]))throw Eo(Vn,e[Vn]),new ho(r);if(!1!==e[Yn]&&!Fo(e[Gn],e[Yn]))throw Eo(Yn,e[Yn]),new go(r);return e[Gn]}}function Ro(t,e){var r=t[0],n=t[1],o=$n(r,Io(e));return Nn(o,n)}var Jo=function(t,e){return Promise.resolve(No(t,e))};function Mo(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[p]=t,a[s]=e,!0===r&&(a[f]=!0),Zn(n)&&(a[l]=n),ne(o)&&(a[h]=o),lt(i)&&(a[d]=i),a}var Uo=Dn,Do=Zn,Ho=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=xo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Lo=function(t,e,r){void 0===r&&(r={});var n=r[f],o=r[l],i=r[h],a=r[d];return Mo.apply(null,[t,e,n,o,i,a])},Bo=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),Jo(t,e).then((function(t){return Ro(t,n)})).then((function(t){return Nn({},t,r)}))}(e,r,n,t)}}(xo),Ko=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),Nn(Ro(No(t,e),n),r)}(e,r,n,t)}}(xo),Vo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=vi().key(e);t(gi(r),r)}},remove:function(t){return vi().removeItem(t)},clearAll:function(){return vi().clear()}};function vi(){return hi.localStorage}function gi(t){return vi().getItem(t)}var yi=Xo.trim,bi={name:"cookieStorage",read:function(t){if(!t||!ji(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(mi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;mi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:_i,remove:wi,clearAll:function(){_i((function(t,e){wi(e)}))}},mi=Xo.Global.document;function _i(t){for(var e=mi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(yi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function wi(t){t&&ji(t)&&(mi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ji(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(mi.cookie)}var Oi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var Si="expire_mixin",Ei=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+Si);return{set:function(e,r,n,o){this.hasNamespace(Si)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(Si)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(Si)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ni=[di,bi],$i=[Oi,Ei,Pi,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Ci.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Ci.compress(this._serialize(r));t(e,n)}}}],zi=fi.createStore(Ni,$i),Fi=Xo.Global;function Ii(){return Fi.sessionStorage}function Ri(t){return Ii().getItem(t)}var Ji=[{name:"sessionStorage",read:Ri,write:function(t,e){return Ii().setItem(t,e)},each:function(t){for(var e=Ii().length-1;e>=0;e--){var r=Ii().key(e);t(Ri(r),r)}},remove:function(t){return Ii().removeItem(t)},clearAll:function(){return Ii().clear()}},bi],Mi=[Oi,Ei],Ui=fi.createStore(Ji,Mi),Di=zi,Hi=Ui,Li=Array.isArray,Bi=void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ki="object"==typeof Bi&&Bi&&Bi.Object===Object&&Bi,Vi="object"==typeof self&&self&&self.Object===Object&&self,Gi=(Ki||Vi||Function("return this")()).Symbol,Yi=Object.prototype,Wi=Yi.hasOwnProperty,Xi=Yi.toString,Qi=Gi?Gi.toStringTag:void 0;var Zi=Object.prototype.toString;var ta="[object Null]",ea="[object Undefined]",ra=Gi?Gi.toStringTag:void 0;function na(t){return null==t?void 0===t?ea:ta:ra&&ra in Object(t)?function(t){var e=Wi.call(t,Qi),r=t[Qi];try{t[Qi]=void 0;var n=!0}catch(t){}var o=Xi.call(t);return n&&(e?t[Qi]=r:delete t[Qi]),o}(t):function(t){return Zi.call(t)}(t)}var oa=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ia(t){return null!=t&&"object"==typeof t}var aa="[object Object]",ua=Function.prototype,ca=Object.prototype,sa=ua.toString,fa=ca.hasOwnProperty,la=sa.call(Object);var pa=Gi?Gi.prototype:void 0,ha=(pa&&pa.toString,"[object String]");function da(t){return"string"==typeof t||!Li(t)&&ia(t)&&na(t)==ha}var va=function(t,e){return!!t.filter((function(t){return t===e})).length},ga=function(t,e){var r=Object.keys(t);return va(r,e)},ya=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ba="query",ma="mutation",_a="socket",wa="payload",ja="condition",Oa=function(){try{if(window||document)return!0}catch(t){}return!1},Sa=function(){try{if(!Oa()&&Bi)return!0}catch(t){}return!1};var Ea=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Oa()?"browser":Sa()?"node":"unknown"},e}(Error));var ka=function(t){var e;return(e={}).args=t,e};var Aa=function(t){return ga(t,"data")&&!ga(t,"error")?t.data:t},xa=function(t){return function(t){if(!ia(t)||na(t)!=aa)return!1;var e=oa(t);if(null===e)return!0;var r=fa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&sa.call(r)==la}(t)&&(ga(t,ba)||ga(t,ma)||ga(t,_a))},Ta=function(t,e){return void 0===e&&(e={}),xa(e)?Promise.resolve(e):t.getContract()},Pa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function qa(t){this.message=t}qa.prototype=new Error,qa.prototype.name="InvalidCharacterError";var Ca="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new qa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Pa.indexOf(n);return a};var Na=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ca(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ca(e)}};function $a(t){this.message=t}$a.prototype=new Error,$a.prototype.name="InvalidTokenError";var za=function(t,e){if("string"!=typeof t)throw new $a("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Na(t.split(".")[r]))}catch(t){throw new $a("Invalid token specified: "+t.message)}},Fa=$a;za.InvalidTokenError=Fa;var Ia,Ra,Ja,Ma,Ua,Da,Ha,La,Ba,Ka=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Va(t){if(Uo(t))return function(t){var e=t.iat||Ka(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new bo("Token has expired on "+r,t)}return t}(za(t));throw new bo("Token must be a string!")}Lo("HS256",["string"]),Lo(!1,["boolean","number","string"],((Ia={})[d]="exp",Ia[f]=!0,Ia)),Lo(!1,["boolean","number","string"],((Ra={})[d]="nbf",Ra[f]=!0,Ra)),Lo(!1,["boolean","string"],((Ja={})[d]="iss",Ja[f]=!0,Ja)),Lo(!1,["boolean","string"],((Ma={})[d]="sub",Ma[f]=!0,Ma)),Lo(!1,["boolean","string"],((Ua={})[d]="iss",Ua[f]=!0,Ua)),Lo(!1,["boolean"],((Da={})[f]=!0,Da)),Lo(!1,["boolean","string"],((Ha={})[f]=!0,Ha)),Lo(!1,["boolean","string"],((La={})[f]=!0,La)),Lo(!1,["boolean"],((Ba={})[f]=!0,Ba));var Ga=u[0],Ya=u[1],Wa=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Xa={headers:{configurable:!0}};Xa.headers.set=function(t){this.extraHeader=t},Wa.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Nn({},{_cb:ya()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Nn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Nn({},{method:Ga,params:o},e))},Wa.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Wa.prototype.processJsonp=function(t){return Aa(t)},Wa.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Uo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Aa(o)}),(function(t){throw e.cleanUp(),console.error(t),new mo("Server side error",t)}))},Wa.prototype.getHeaders=function(){return this.opts.enableAuth?Nn({},a,this.getAuthHeader(),this.extraHeader):Nn({},a,this.extraHeader)},Wa.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Wa.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Nn({},this.extraParams,y)),this.request({},{method:"GET"},this.contractHeader).then(Oo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Wa.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),da(t)&&Li(e)){var o=ka(e);return!0===r?o:((n={})[t]=o,n)}throw new Ea("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(Oo)},Wa.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[wa]=e,i[ja]=r,!0===n)return i;if(da(t))return(o={})[t]=i,o;throw new Ea("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ya}).then(Oo)},Object.defineProperties(Wa.prototype,Xa);var Qa=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Do(t)&&t.length>=2&&Reflect.apply(Di.set,Di,t),new yo("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Di.get("endpoint")||[];va(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Di.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!va(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ya();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Di.set,Di,e)},r.jsonqlEndpoint.get=function(){var t=Di.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Di.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Hi.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Va)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!xa(t))throw new yo("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return xa(this.opts.contract)?this.opts.contract:Di.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Wa))),Za=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Ho(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(So)}};var tu=function(t,e,r,n){var o=function(t,e,r,n){var o={query:{},mutation:{}},i=function(e){o.query[e]=function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Ho(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(So)}};for(var a in n.query)i(a);var u=function(e){o.mutation[e]=function(r,o,i){void 0===i&&(i={});var a=[r,o],u=n.mutation[e].params;return Ho(a,u).then((function(){return t.mutation.apply(t,[e,r,o,i])})).catch(So)}};for(var s in n.mutation)u(s);if(r.enableAuth&&n.auth){o.auth={};var f=r.loginHandlerName,l=r.logoutHandlerName;n.auth[f]&&(o.auth[f]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Za(t,f,r,n);return a.apply(null,o).then(t.postLoginAction).then((function(t){return e.$trigger(v,t),t}))}),n.auth[l]?o.auth[l]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Za(t,l,r,n);return a.apply(null,o).then(t.postLogoutAction).then((function(t){return e.$trigger(g,t),t}))}:o.auth[l]=function(){t.postLogoutAction(c),e.$trigger(g,c)}}return o}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.3.2",o},eu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ru={hostname:Lo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Lo("jsonql",["string"]),loginHandlerName:Lo(v,["string"]),logoutHandlerName:Lo(g,["string"]),enableJsonp:Lo(!1,["boolean"]),enableAuth:Lo(!1,["boolean"]),useJwt:Lo(!0,["boolean"]),useLocalstorage:Lo(!0,["boolean"]),storageKey:Lo("storageKey",["string"]),authKey:Lo("authKey",["string"]),contractExpired:Lo(0,["number"]),keepContract:Lo(!0,["boolean"]),exposeContract:Lo(!1,["boolean"]),showContractDesc:Lo(!1,["boolean"]),contractKey:Lo(!1,["boolean"]),contractKeyName:Lo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Lo(!1,["boolean"]),timeout:Lo(5e3,["number"]),returnInstance:Lo(!1,["boolean"]),allowReturnRawToken:Lo(!1,["boolean"]),debugOn:Lo(!1,["boolean"])};function nu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Bo(t,ru,eu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Qa(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ta(r,n.contract).then((function(e){return tu(r,n,e,t)}))}))}var ou=new WeakMap,iu=new WeakMap;var au=function(){this.__suspend__=null,this.queueStore=new Set},uu={$suspend:{configurable:!0},$queues:{configurable:!0}};uu.$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)},au.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__},uu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},au.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(au.prototype,uu);var cu=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 i=0;return o.forEach((function(o){var a=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.run(e,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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.run(e,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(t){var o=t[0],i=t[1],a=t[2];if(a&&"only"!==a)throw new Error("You are trying to register an event already been taken by other type: "+a);n.run(e,o,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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.run(e,a,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 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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ou.set(this,t)},r.normalStore.get=function(){return ou.get(this)},r.lazyStore.set=function(t){iu.set(this,t)},r.lazyStore.get=function(){return iu.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}(au));function su(t,e,r){var n=e.contract,o=function(t){return Ko(t,ru,eu)}(e),i=new Qa(o,r);return tu(i,o,n,t)}function fu(t,e){var r,n=(r=e.debugOn,new cu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0}));return e.contract&&xa(e.contract)?su(n,e,t):nu(n,e,t)}return function(t){return void 0===t&&(t={}),fu(o,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="continue",s="type",f="optional",l="enumv",p="args",h="checker",d="alias",v="login",g="logout",y={desc:"y"},b="No message";var m="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},_="object"==typeof m&&m&&m.Object===Object&&m,w="object"==typeof self&&self&&self.Object===Object&&self,j=_||w||Function("return this")(),O=j.Symbol;function S(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&L(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function at(t){return void 0===t}var ut="[object Boolean]";var ct="[object Number]";function st(t){return function(t){return"number"==typeof t||z(t)&&N(t)==ct}(t)&&t!=+t}var ft="[object String]";function lt(t){return"string"==typeof t||!E(t)&&z(t)&&N(t)==ft}function pt(t,e){return function(r){return t(e(r))}}var ht=pt(Object.getPrototypeOf,Object),dt="[object Object]",vt=Function.prototype,gt=Object.prototype,yt=vt.toString,bt=gt.hasOwnProperty,mt=yt.call(Object);function _t(t){if(!z(t)||N(t)!=dt)return!1;var e=ht(t);if(null===e)return!0;var r=bt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&yt.call(r)==mt}var wt,jt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[wt?a:++n];if(!1===e(o[u],u,o))break}return t};var Ot="[object Arguments]";function St(t){return z(t)&&N(t)==Ot}var Et=Object.prototype,kt=Et.hasOwnProperty,At=Et.propertyIsEnumerable,xt=St(function(){return arguments}())?St:function(t){return z(t)&&kt.call(t,"callee")&&!At.call(t,"callee")};var Tt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Pt=Tt&&"object"==typeof module&&module&&!module.nodeType&&module,qt=Pt&&Pt.exports===Tt?j.Buffer:void 0,Ct=(qt?qt.isBuffer:void 0)||function(){return!1},$t=9007199254740991,Nt=/^(?:0|[1-9]\d*)$/;function zt(t,e){var r=typeof t;return!!(e=null==e?$t:e)&&("number"==r||"symbol"!=r&&Nt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Ft}var Rt={};Rt["[object Float32Array]"]=Rt["[object Float64Array]"]=Rt["[object Int8Array]"]=Rt["[object Int16Array]"]=Rt["[object Int32Array]"]=Rt["[object Uint8Array]"]=Rt["[object Uint8ClampedArray]"]=Rt["[object Uint16Array]"]=Rt["[object Uint32Array]"]=!0,Rt["[object Arguments]"]=Rt["[object Array]"]=Rt["[object ArrayBuffer]"]=Rt["[object Boolean]"]=Rt["[object DataView]"]=Rt["[object Date]"]=Rt["[object Error]"]=Rt["[object Function]"]=Rt["[object Map]"]=Rt["[object Number]"]=Rt["[object Object]"]=Rt["[object RegExp]"]=Rt["[object Set]"]=Rt["[object String]"]=Rt["[object WeakMap]"]=!1;var Jt,Mt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ut=Mt&&"object"==typeof module&&module&&!module.nodeType&&module,Dt=Ut&&Ut.exports===Mt&&_.process,Ht=function(){try{var t=Ut&&Ut.require&&Ut.require("util").types;return t||Dt&&Dt.binding&&Dt.binding("util")}catch(t){}}(),Lt=Ht&&Ht.isTypedArray,Bt=Lt?(Jt=Lt,function(t){return Jt(t)}):function(t){return z(t)&&It(t.length)&&!!Rt[N(t)]},Kt=Object.prototype.hasOwnProperty;function Vt(t,e){var r=E(t),n=!r&&xt(t),o=!r&&!n&&Ct(t),i=!r&&!n&&!o&&Bt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},fe.prototype.set=function(t,e){var r=this.__data__,n=ce(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var le,pe=j["__core-js_shared__"],he=(le=/[^.]+$/.exec(pe&&pe.keys&&pe.keys.IE_PROTO||""))?"Symbol(src)_1."+le:"";var de=Function.prototype.toString;function ve(t){if(null!=t){try{return de.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ge=/^\[object .+?Constructor\]$/,ye=Function.prototype,be=Object.prototype,me=ye.toString,_e=be.hasOwnProperty,we=RegExp("^"+me.call(_e).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function je(t){return!(!Qt(t)||function(t){return!!he&&he in t}(t))&&(ne(t)?we:ge).test(ve(t))}function Oe(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return je(r)?r:void 0}var Se=Oe(j,"Map"),Ee=Oe(Object,"create");var ke="__lodash_hash_undefined__",Ae=Object.prototype.hasOwnProperty;var xe=Object.prototype.hasOwnProperty;var Te="__lodash_hash_undefined__";function Pe(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Je?new Fe:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=An)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kn);function qn(t,e){return Pn(function(t,e,r){return e=En(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=En(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Cn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?oe(r)&&zt(e,r.length):"string"==n&&e in r)&&ue(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},to=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},eo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Qn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Zn(r,t)})).length},ro=function(t,e){if(void 0===e&&(e=null),_t(t)){if(!e)return!0;if(Zn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!at(r)||(!1!==(e=to(t))?!eo({arg:r},e):!Qn(t)(r))})).length)})).length}return!1},no=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),ro.apply(null,n)},oo=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),io=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),ao=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),uo=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),co=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),so=function(){try{if(window||document)return!0}catch(t){}return!1},fo=function(){try{if(!so()&&m)return!0}catch(t){}return!1};var lo=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return so()?"browser":fo()?"node":"unknown"},e}(Error),po=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,Error.captureStackTrace&&Error.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}(lo),ho=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),vo=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),go=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),yo=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,Error.captureStackTrace&&Error.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}(lo),bo=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,Error.captureStackTrace&&Error.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}(lo),mo=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),_o=Object.freeze({__proto__:null,Jsonql406Error:oo,Jsonql500Error:io,JsonqlAuthorisationError:ao,JsonqlContractAuthError:uo,JsonqlResolverAppError:co,JsonqlResolverNotFoundError:po,JsonqlEnumError:ho,JsonqlTypeError:vo,JsonqlCheckerError:go,JsonqlValidationError:yo,JsonqlError:bo,JsonqlServerError:mo}),wo=bo,jo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function Oo(t){if(jo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||b,a=e.detail||e;if(o&&_o[o])throw new _o[r](i,a);throw new wo(i,a)}return t}function So(t){if(Array.isArray(t))throw new yo("",t);var e=t.message||b,r=t.detail||t;switch(!0){case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof vo:throw new vo(e,r);case t instanceof go:throw new go(e,r);case t instanceof yo:throw new yo(e,r);case t instanceof mo:throw new mo(e,r);default:throw new bo(e,r)}}function Eo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var ko=function(t,e){var r;switch(!0){case"object"===t:return!no(e);case"array"===t:return!Zn(e.arg);case!1!==(r=to(t)):return!eo(e,r);default:return!Qn(t)(e.arg)}},Ao=function(t,e){return at(t)?!0!==e.optional||at(e.defaultvalue)?null:e.defaultvalue:t},xo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Zn(e))throw new bo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Zn(t))throw new bo("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 Eo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Eo(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:Eo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?Ao(t,a):t,index:r,param:a,optional:i}}));default:throw Eo(5),new bo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Mn(e)&&!(r.type.length>r.type.filter((function(e){return ko(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return ko(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},To=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Po=function(t){return!Mn(t)};function qo(t,e){var r=Jn(e,(function(t,e){return!t[Wn]}));return qr(r,{})?t:function(t,e){var r={};return e=nn(e),ae(t,(function(t,n,o){an(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,nn((function(t){return t.alias===e})),ae)||e}))}function Co(t,e){return Nn(e,(function(e,r){var n,o;return at(t[r])||!0===e[Kn]&&Po(t[r])?$n({},e,((n={})[Xn]=!0,n)):((o={})[Gn]=t[r],o[Bn]=e[Bn],o[Kn]=e[Kn]||!1,o[Vn]=e[Vn]||!1,o[Yn]=e[Yn]||!1,o)}))}function $o(t,e){var r=function(t,e){var r=qo(t,e);return{pristineValues:Nn(Jn(e,(function(t,e){return To(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Jn(e,(function(t,e){return!To(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Co(n,r.checkAgainstAppProps),o]}var No=function(t){return Zn(t)?t:[t]};var zo=function(t,e){return!Zn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Fo=function(t,e){try{return!!ne(e)&&e.apply(null,[t])}catch(t){return!1}};function Io(t){return function(e,r){if(e[Xn])return e[Gn];var n=function(t,e){var r,n=[[t[Gn]],[(r={},r[Bn]=No(t[Bn]),r[Kn]=t[Kn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Eo("runValidationAction",r,e),new vo(r,n);if(!1!==e[Vn]&&!zo(e[Gn],e[Vn]))throw Eo(Vn,e[Vn]),new ho(r);if(!1!==e[Yn]&&!Fo(e[Gn],e[Yn]))throw Eo(Yn,e[Yn]),new go(r);return e[Gn]}}function Ro(t,e){var r=t[0],n=t[1],o=Nn(r,Io(e));return $n(o,n)}var Jo=function(t,e){return Promise.resolve($o(t,e))};function Mo(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[p]=t,a[s]=e,!0===r&&(a[f]=!0),Zn(n)&&(a[l]=n),ne(o)&&(a[h]=o),lt(i)&&(a[d]=i),a}var Uo=Dn,Do=Zn,Ho=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=xo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Lo=function(t,e,r){void 0===r&&(r={});var n=r[f],o=r[l],i=r[h],a=r[d];return Mo.apply(null,[t,e,n,o,i,a])},Bo=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),Jo(t,e).then((function(t){return Ro(t,n)})).then((function(t){return $n({},t,r)}))}(e,r,n,t)}}(xo),Ko=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),$n(Ro($o(t,e),n),r)}(e,r,n,t)}}(xo),Vo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=vi().key(e);t(gi(r),r)}},remove:function(t){return vi().removeItem(t)},clearAll:function(){return vi().clear()}};function vi(){return hi.localStorage}function gi(t){return vi().getItem(t)}var yi=Xo.trim,bi={name:"cookieStorage",read:function(t){if(!t||!ji(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(mi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;mi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:_i,remove:wi,clearAll:function(){_i((function(t,e){wi(e)}))}},mi=Xo.Global.document;function _i(t){for(var e=mi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(yi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function wi(t){t&&ji(t)&&(mi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ji(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(mi.cookie)}var Oi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var Si="expire_mixin",Ei=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+Si);return{set:function(e,r,n,o){this.hasNamespace(Si)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(Si)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(Si)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var $i=[di,bi],Ni=[Oi,Ei,Pi,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Ci.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Ci.compress(this._serialize(r));t(e,n)}}}],zi=fi.createStore($i,Ni),Fi=Xo.Global;function Ii(){return Fi.sessionStorage}function Ri(t){return Ii().getItem(t)}var Ji=[{name:"sessionStorage",read:Ri,write:function(t,e){return Ii().setItem(t,e)},each:function(t){for(var e=Ii().length-1;e>=0;e--){var r=Ii().key(e);t(Ri(r),r)}},remove:function(t){return Ii().removeItem(t)},clearAll:function(){return Ii().clear()}},bi],Mi=[Oi,Ei],Ui=fi.createStore(Ji,Mi),Di=zi,Hi=Ui,Li=Array.isArray,Bi=void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ki="object"==typeof Bi&&Bi&&Bi.Object===Object&&Bi,Vi="object"==typeof self&&self&&self.Object===Object&&self,Gi=(Ki||Vi||Function("return this")()).Symbol,Yi=Object.prototype,Wi=Yi.hasOwnProperty,Xi=Yi.toString,Qi=Gi?Gi.toStringTag:void 0;var Zi=Object.prototype.toString;var ta="[object Null]",ea="[object Undefined]",ra=Gi?Gi.toStringTag:void 0;function na(t){return null==t?void 0===t?ea:ta:ra&&ra in Object(t)?function(t){var e=Wi.call(t,Qi),r=t[Qi];try{t[Qi]=void 0;var n=!0}catch(t){}var o=Xi.call(t);return n&&(e?t[Qi]=r:delete t[Qi]),o}(t):function(t){return Zi.call(t)}(t)}var oa=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ia(t){return null!=t&&"object"==typeof t}var aa="[object Object]",ua=Function.prototype,ca=Object.prototype,sa=ua.toString,fa=ca.hasOwnProperty,la=sa.call(Object);var pa=Gi?Gi.prototype:void 0,ha=(pa&&pa.toString,"[object String]");function da(t){return"string"==typeof t||!Li(t)&&ia(t)&&na(t)==ha}var va=function(t,e){return!!t.filter((function(t){return t===e})).length},ga=function(t,e){var r=Object.keys(t);return va(r,e)},ya=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ba="query",ma="mutation",_a="socket",wa="payload",ja="condition",Oa=function(){try{if(window||document)return!0}catch(t){}return!1},Sa=function(){try{if(!Oa()&&Bi)return!0}catch(t){}return!1};var Ea=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Oa()?"browser":Sa()?"node":"unknown"},e}(Error));var ka=function(t){var e;return(e={}).args=t,e};var Aa=function(t){return ga(t,"data")&&!ga(t,"error")?t.data:t},xa=function(t){return function(t){if(!ia(t)||na(t)!=aa)return!1;var e=oa(t);if(null===e)return!0;var r=fa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&sa.call(r)==la}(t)&&(ga(t,ba)||ga(t,ma)||ga(t,_a))},Ta=function(t,e){return void 0===e&&(e={}),xa(e)?Promise.resolve(e):t.getContract()},Pa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function qa(t){this.message=t}qa.prototype=new Error,qa.prototype.name="InvalidCharacterError";var Ca="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new qa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Pa.indexOf(n);return a};var $a=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ca(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ca(e)}};function Na(t){this.message=t}Na.prototype=new Error,Na.prototype.name="InvalidTokenError";var za=function(t,e){if("string"!=typeof t)throw new Na("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse($a(t.split(".")[r]))}catch(t){throw new Na("Invalid token specified: "+t.message)}},Fa=Na;za.InvalidTokenError=Fa;var Ia,Ra,Ja,Ma,Ua,Da,Ha,La,Ba,Ka=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Va(t){if(Uo(t))return function(t){var e=t.iat||Ka(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new bo("Token has expired on "+r,t)}return t}(za(t));throw new bo("Token must be a string!")}Lo("HS256",["string"]),Lo(!1,["boolean","number","string"],((Ia={})[d]="exp",Ia[f]=!0,Ia)),Lo(!1,["boolean","number","string"],((Ra={})[d]="nbf",Ra[f]=!0,Ra)),Lo(!1,["boolean","string"],((Ja={})[d]="iss",Ja[f]=!0,Ja)),Lo(!1,["boolean","string"],((Ma={})[d]="sub",Ma[f]=!0,Ma)),Lo(!1,["boolean","string"],((Ua={})[d]="iss",Ua[f]=!0,Ua)),Lo(!1,["boolean"],((Da={})[f]=!0,Da)),Lo(!1,["boolean","string"],((Ha={})[f]=!0,Ha)),Lo(!1,["boolean","string"],((La={})[f]=!0,La)),Lo(!1,["boolean"],((Ba={})[f]=!0,Ba));var Ga=u[0],Ya=u[1],Wa=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Xa={headers:{configurable:!0}};Xa.headers.set=function(t){this.extraHeader=t},Wa.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=$n({},{_cb:ya()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=$n({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,$n({},{method:Ga,params:o},e))},Wa.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Wa.prototype.processJsonp=function(t){return Aa(t)},Wa.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Uo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Aa(o)}),(function(t){throw e.cleanUp(),console.error(t),new mo("Server side error",t)}))},Wa.prototype.getHeaders=function(){return this.opts.enableAuth?$n({},a,this.getAuthHeader(),this.extraHeader):$n({},a,this.extraHeader)},Wa.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Wa.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=$n({},this.extraParams,y)),this.request({},{method:"GET"},this.contractHeader).then(Oo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Wa.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),da(t)&&Li(e)){var o=ka(e);return!0===r?o:((n={})[t]=o,n)}throw new Ea("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(Oo)},Wa.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[wa]=e,i[ja]=r,!0===n)return i;if(da(t))return(o={})[t]=i,o;throw new Ea("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ya}).then(Oo)},Object.defineProperties(Wa.prototype,Xa);var Qa=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Do(t)&&t.length>=2&&Reflect.apply(Di.set,Di,t),new yo("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Di.get("endpoint")||[];va(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Di.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!va(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ya();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Di.set,Di,e)},r.jsonqlEndpoint.get=function(){var t=Di.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Di.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Hi.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Va)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!xa(t))throw new yo("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return xa(this.opts.contract)?this.opts.contract:Di.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Wa))),Za=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Ho(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(So)}};var tu=function(t,e,r,n){var o=function(t,e,r,n){var o={query:{},mutation:{}},i=function(e){o.query[e]=function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Ho(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(So)}};for(var a in n.query)i(a);var u=function(e){o.mutation[e]=function(r,o,i){void 0===i&&(i={});var a=[r,o],u=n.mutation[e].params;return Ho(a,u).then((function(){return t.mutation.apply(t,[e,r,o,i])})).catch(So)}};for(var s in n.mutation)u(s);if(r.enableAuth&&n.auth){o.auth={};var f=r.loginHandlerName,l=r.logoutHandlerName;n.auth[f]&&(o.auth[f]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Za(t,f,r,n);return a.apply(null,o).then(t.postLoginAction).then((function(t){return e.$trigger(v,t),t}))}),n.auth[l]?o.auth[l]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Za(t,l,r,n);return a.apply(null,o).then(t.postLogoutAction).then((function(t){return e.$trigger(g,t),t}))}:o.auth[l]=function(){t.postLogoutAction(c),e.$trigger(g,c)}}return o}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.3.3",o},eu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ru={hostname:Lo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Lo("jsonql",["string"]),loginHandlerName:Lo(v,["string"]),logoutHandlerName:Lo(g,["string"]),enableJsonp:Lo(!1,["boolean"]),enableAuth:Lo(!1,["boolean"]),useJwt:Lo(!0,["boolean"]),useLocalstorage:Lo(!0,["boolean"]),storageKey:Lo("storageKey",["string"]),authKey:Lo("authKey",["string"]),contractExpired:Lo(0,["number"]),keepContract:Lo(!0,["boolean"]),exposeContract:Lo(!1,["boolean"]),showContractDesc:Lo(!1,["boolean"]),contractKey:Lo(!1,["boolean"]),contractKeyName:Lo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Lo(!1,["boolean"]),timeout:Lo(5e3,["number"]),returnInstance:Lo(!1,["boolean"]),allowReturnRawToken:Lo(!1,["boolean"]),debugOn:Lo(!1,["boolean"])};function nu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Bo(t,ru,eu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Qa(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ta(r,n.contract).then((function(e){return tu(r,n,e,t)}))}))}var ou=new WeakMap,iu=new WeakMap;var au=function(){this.__suspend__=null,this.queueStore=new Set},uu={$suspend:{configurable:!0},$queues:{configurable:!0}};uu.$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)},au.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__},uu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},au.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(au.prototype,uu);var cu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ou.set(this,t)},r.normalStore.get=function(){return ou.get(this)},r.lazyStore.set=function(t){iu.set(this,t)},r.lazyStore.get=function(){return iu.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}(au));function su(t,e,r){var n=e.contract,o=function(t){return Ko(t,ru,eu)}(e),i=new Qa(o,r);return tu(i,o,n,t)}function fu(t,e){var r,n=(r=e.debugOn,new cu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0}));return e.contract&&xa(e.contract)?su(n,e,t):nu(n,e,t)}return function(t){return void 0===t&&(t={}),fu(o,t)}})); //# sourceMappingURL=jsonql-client.umd.js.map diff --git a/packages/http-client/dist/jsonql-client.umd.js.map b/packages/http-client/dist/jsonql-client.umd.js.map index acff920b..89bd7547 100644 --- a/packages/http-client/dist/jsonql-client.umd.js.map +++ b/packages/http-client/dist/jsonql-client.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"jsonql-client.umd.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i { + if (isObjectHasKey(contract, SOCKET_NAME) && hasProp(contract[SOCKET_NAME])) { + config.eventEmitter = ee; // pass the event emitter + let ws = socketClient(config) + + } + return client; + }) } - // we need to break this up! + // @TODO we need to break this up! return jsonqlAsync(ee, config, Fly) } diff --git a/packages/http-client/package.json b/packages/http-client/package.json index 90de4ca7..c8439fd4 100755 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -2,13 +2,14 @@ "name": "jsonql-client", "version": "1.3.3", "description": "jsonql http browser client using Fly.js", - "main": "dist/jsonql-client.umd.js", + "main": "core.js", "module": "index.js", "browser": "dist/jsonql-client.umd.js", "types": "jsonql-client.types.ts", "files": [ "src", "dist", + "core.js", "index.js", "static.js", "module.js", @@ -57,13 +58,13 @@ "license": "MIT", "dependencies": { "flyio": "^0.6.14", - "jsonql-constants": "^1.8.3", + "jsonql-constants": "^1.8.8", "jsonql-errors": "^1.1.3", - "jsonql-jwt": "^1.3.2", + "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", - "jsonql-utils": "^0.6.10", + "jsonql-utils": "^0.8.0", "lodash-es": "^4.17.15", - "nb-event-service": "^1.8.3", + "nb-event-service": "^1.8.5", "store": "^2.0.12" }, "devDependencies": { @@ -71,14 +72,14 @@ "browser-env": "^3.2.6", "debug": "^4.1.1", "esm": "^3.2.25", - "glob": "^7.1.4", - "jsonql-koa": "^1.3.8", + "glob": "^7.1.5", + "jsonql-koa": "^1.3.10", "koa-favicon": "^2.0.1", "nyc": "^14.1.1", "promise-polyfill": "8.1.3", - "qunit": "^2.9.2", - "rollup": "^1.21.4", - "rollup-plugin-alias": "^2.0.0", + "qunit": "^2.9.3", + "rollup": "^1.25.2", + "rollup-plugin-alias": "^2.2.0", "rollup-plugin-analyzer": "^3.2.1", "rollup-plugin-async": "^1.2.0", "rollup-plugin-buble": "^0.19.8", diff --git a/packages/http-client/rollup.config.js b/packages/http-client/rollup.config.js index d8fa19e7..2d2f51bf 100644 --- a/packages/http-client/rollup.config.js +++ b/packages/http-client/rollup.config.js @@ -36,8 +36,6 @@ let plugins = [ }) ] - - let globals = { 'debug': 'debug', 'promise-polyfill': 'Promise', diff --git a/packages/http-client/static.js b/packages/http-client/static.js index 836c227c..ced05e4a 100644 --- a/packages/http-client/static.js +++ b/packages/http-client/static.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="continue",o="type",i="optional",a="enumv",u="args",c="checker",s="alias",f="login",l="logout",p={desc:"y"},h="No message",d="onResult",v="onError";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&P(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&P(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||P(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&P(t)==_t}var jt=Object.prototype,St=jt.hasOwnProperty,Ot=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&St.call(t,"callee")&&!Ot.call(t,"callee")};var At="object"==typeof exports&&exports&&!exports.nodeType&&exports,kt=At&&"object"==typeof module&&module&&!module.nodeType&&module,Tt=kt&&kt.exports===At?m.Buffer:void 0,xt=(Tt?Tt.isBuffer:void 0)||function(){return!1},qt=9007199254740991,Pt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?qt:e)&&("number"==r||"symbol"!=r&&Pt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Ht=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[P(t)]},Dt=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&xt(t),i=!r&&!n&&!o&&Ht(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Se="__lodash_hash_undefined__",Oe=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var Ae="__lodash_hash_undefined__";function ke(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=On)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Sn);function Tn(t,e){return kn(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Qn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Xn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Qn(t))?!Xn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||h,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||h,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var So=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Qn(t)):return!Xn(e,r);default:return!Yn(t)(e.arg)}},Oo=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?Oo(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return So(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return So(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Ao=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ko=function(t){return!In(t)};function To(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return Tr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function xo(t,e){return Pn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Dn]&&ko(t[r])?qn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Hn]=e[Hn],o[Dn]=e[Dn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function qo(t,e){var r=function(t,e){var r=To(t,e);return{pristineValues:Pn(Fn(e,(function(t,e){return Ao(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!Ao(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[xo(n,r.checkAgainstAppProps),o]}var Po=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Hn]=Po(t[Hn]),r[Dn]=t[Dn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}function zo(t,e,r,n){return void 0===t&&(t={}),qn(function(t,e){var r=t[0],n=t[1],o=Pn(r,No(e));return qn(o,n)}(qo(t,e),n),r)}function Fo(t,e,r,n,f,l){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[u]=t,p[o]=e,!0===r&&(p[i]=!0),Wn(n)&&(p[a]=n),te(f)&&(p[c]=f),ct(l)&&(p[s]=l),p}var Io=Jn,Ro=Wn,Jo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Mo=function(t,e,r){void 0===r&&(r={});var n=r[i],o=r[a],u=r[c],f=r[s];return Fo.apply(null,[t,e,n,o,u,f])},Uo=function(t){return function(e,r,n){return void 0===n&&(n={}),zo(e,r,n,t)}}(Eo),Ho=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}};var Do=Array.isArray,Lo=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Bo="object"==typeof Lo&&Lo&&Lo.Object===Object&&Lo,Ko="object"==typeof self&&self&&self.Object===Object&&self,Vo=(Bo||Ko||Function("return this")()).Symbol,Go=Object.prototype,Yo=Go.hasOwnProperty,Wo=Go.toString,Qo=Vo?Vo.toStringTag:void 0;var Xo=Object.prototype.toString;var Zo="[object Null]",ti="[object Undefined]",ei=Vo?Vo.toStringTag:void 0;function ri(t){return null==t?void 0===t?ti:Zo:ei&&ei in Object(t)?function(t){var e=Yo.call(t,Qo),r=t[Qo];try{t[Qo]=void 0;var n=!0}catch(t){}var o=Wo.call(t);return n&&(e?t[Qo]=r:delete t[Qo]),o}(t):function(t){return Xo.call(t)}(t)}var ni=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function oi(t){return null!=t&&"object"==typeof t}var ii="[object Object]",ai=Function.prototype,ui=Object.prototype,ci=ai.toString,si=ui.hasOwnProperty,fi=ci.call(Object);var li=Vo?Vo.prototype:void 0,pi=(li&&li.toString,"[object String]");function hi(t){return"string"==typeof t||!Do(t)&&oi(t)&&ri(t)==pi}var di=function(t,e){return!!t.filter((function(t){return t===e})).length},vi=function(t,e){var r=Object.keys(t);return di(r,e)},gi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},yi=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},bi="query",mi="mutation",_i="socket",wi="payload",ji="condition",Si=function(){try{if(window||document)return!0}catch(t){}return!1},Oi=function(){try{if(!Si()&&Lo)return!0}catch(t){}return!1};var Ei=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Si()?"browser":Oi()?"node":"unknown"},e}(Error));var Ai=function(t){var e;return(e={}).args=t,e};var ki=function(t){return vi(t,"data")&&!vi(t,"error")?t.data:t},Ti=function(t){return function(t){if(!oi(t)||ri(t)!=ii)return!1;var e=ni(t);if(null===e)return!0;var r=si.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ci.call(r)==fi}(t)&&(vi(t,bi)||vi(t,mi)||vi(t,_i))},xi=function(t,e){return void 0===e&&(e={}),Ti(e)?Promise.resolve(e):t.getContract()},qi=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(gi(e,r,d),o),t.$only(gi(e,r,v),i),t.$trigger(e,{resolverName:r,args:n})}))}},Pi=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Ci(t,e,r,o){var i=function(t,e,r,o){var i={query:{},mutation:{}},a=function(e){i.query[e]=function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}};for(var u in o.query)a(u);var c=function(e){i.mutation[e]=function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[e].params;return Jo(a,u).then((function(){return t.mutation.apply(t,[e,r,n,i])})).catch(wo)}};for(var s in o.mutation)c(s);if(r.enableAuth&&o.auth){i.auth={};var p=r.loginHandlerName,h=r.logoutHandlerName;o.auth[p]&&(i.auth[p]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ho(t,p,r,o);return a.apply(null,n).then(t.postLoginAction).then((function(t){return e.$trigger(f,t),t}))}),o.auth[h]?i.auth[h]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ho(t,h,r,o);return a.apply(null,n).then(t.postLogoutAction).then((function(t){return e.$trigger(l,t),t}))}:i.auth[h]=function(){t.postLogoutAction(n),e.$trigger(l,n)}}return i}(t,e,r,o);Pi(e,o,r);var a=function(t){e.$only(t,(function(r){var n=r.resolverName,o=r.args;i[t][n]?Reflect.apply(i[t][n],null,o).then((function(r){e.$trigger(gi(t,n,d),r)})).catch((function(r){e.$trigger(gi(t,n,v),r)})):console.error(n+" is not defined in the contract!")}))};for(var u in i)a(u);setTimeout((function(){e.$suspend=!1}),1)}var $i=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Ci(t,n,e,r)}));var o={query:qi(n,"query"),mutation:qi(n,"mutation"),auth:qi(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.2",o},Ni="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var zi=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=na().key(e);t(oa(r),r)}},remove:function(t){return na().removeItem(t)},clearAll:function(){return na().clear()}};function na(){return ea.localStorage}function oa(t){return na().getItem(t)}var ia=Ji.trim,aa={name:"cookieStorage",read:function(t){if(!t||!fa(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(ua.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;ua.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:ca,remove:sa,clearAll:function(){ca((function(t,e){sa(e)}))}},ua=Ji.Global.document;function ca(t){for(var e=ua.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ia(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function sa(t){t&&fa(t)&&(ua.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function fa(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(ua.cookie)}var la=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var pa="expire_mixin",ha=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+pa);return{set:function(e,r,n,o){this.hasNamespace(pa)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(pa)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(pa)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var wa=[ra,aa],ja=[la,ha,ba,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=_a.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=_a.compress(this._serialize(r));t(e,n)}}}],Sa=Xi.createStore(wa,ja),Oa=Ji.Global;function Ea(){return Oa.sessionStorage}function Aa(t){return Ea().getItem(t)}var ka=[{name:"sessionStorage",read:Aa,write:function(t,e){return Ea().setItem(t,e)},each:function(t){for(var e=Ea().length-1;e>=0;e--){var r=Ea().key(e);t(Aa(r),r)}},remove:function(t){return Ea().removeItem(t)},clearAll:function(){return Ea().clear()}},aa],Ta=[la,ha],xa=Xi.createStore(ka,Ta),qa=Sa,Pa=xa,Ca="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function $a(t){this.message=t}$a.prototype=new Error,$a.prototype.name="InvalidCharacterError";var Na="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new $a("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ca.indexOf(n);return a};var za=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Na(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Na(e)}};function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidTokenError";var Ia=function(t,e){if("string"!=typeof t)throw new Fa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(za(t.split(".")[r]))}catch(t){throw new Fa("Invalid token specified: "+t.message)}},Ra=Fa;Ia.InvalidTokenError=Ra;var Ja,Ma,Ua,Ha,Da,La,Ba,Ka,Va,Ga=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ya(t){if(Io(t))return function(t){var e=t.iat||Ga(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(Ia(t));throw new vo("Token must be a string!")}Mo("HS256",["string"]),Mo(!1,["boolean","number","string"],((Ja={})[s]="exp",Ja[i]=!0,Ja)),Mo(!1,["boolean","number","string"],((Ma={})[s]="nbf",Ma[i]=!0,Ma)),Mo(!1,["boolean","string"],((Ua={})[s]="iss",Ua[i]=!0,Ua)),Mo(!1,["boolean","string"],((Ha={})[s]="sub",Ha[i]=!0,Ha)),Mo(!1,["boolean","string"],((Da={})[s]="iss",Da[i]=!0,Da)),Mo(!1,["boolean"],((La={})[i]=!0,La)),Mo(!1,["boolean","string"],((Ba={})[i]=!0,Ba)),Mo(!1,["boolean","string"],((Ka={})[i]=!0,Ka)),Mo(!1,["boolean"],((Va={})[i]=!0,Va));var Wa=r[0],Qa=r[1],Xa=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Za={headers:{configurable:!0}};Za.headers.set=function(t){this.extraHeader=t},Xa.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=qn({},{_cb:yi()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,qn({},{method:Wa,params:o},e))},Xa.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Xa.prototype.processJsonp=function(t){return ki(t)},Xa.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Io(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ki(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Xa.prototype.getHeaders=function(){return this.opts.enableAuth?qn({},e,this.getAuthHeader(),this.extraHeader):qn({},e,this.extraHeader)},Xa.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Xa.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=qn({},this.extraParams,p)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Xa.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),hi(t)&&Do(e)){var o=Ai(e);return!0===r?o:((n={})[t]=o,n)}throw new Ei("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Xa.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[wi]=e,i[ji]=r,!0===n)return i;if(hi(t))return(o={})[t]=i,o;throw new Ei("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Qa}).then(_o)},Object.defineProperties(Xa.prototype,Za);var tu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Ro(t)&&t.length>=2&&Reflect.apply(qa.set,qa,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=qa.get("endpoint")||[];di(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=qa.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!di(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=yi();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(qa.set,qa,e)},r.jsonqlEndpoint.get=function(){var t=qa.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(qa.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Pa.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ya)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Ti(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Ti(this.opts.contract)?this.opts.contract:qa.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Xa))),eu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ru={hostname:Mo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Mo("jsonql",["string"]),loginHandlerName:Mo(f,["string"]),logoutHandlerName:Mo(l,["string"]),enableJsonp:Mo(!1,["boolean"]),enableAuth:Mo(!1,["boolean"]),useJwt:Mo(!0,["boolean"]),useLocalstorage:Mo(!0,["boolean"]),storageKey:Mo("storageKey",["string"]),authKey:Mo("authKey",["string"]),contractExpired:Mo(0,["number"]),keepContract:Mo(!0,["boolean"]),exposeContract:Mo(!1,["boolean"]),showContractDesc:Mo(!1,["boolean"]),contractKey:Mo(!1,["boolean"]),contractKeyName:Mo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Mo(!1,["boolean"]),timeout:Mo(5e3,["number"]),returnInstance:Mo(!1,["boolean"]),allowReturnRawToken:Mo(!1,["boolean"]),debugOn:Mo(!1,["boolean"])};var nu=new WeakMap,ou=new WeakMap;var iu=function(){this.__suspend__=null,this.queueStore=new Set},au={$suspend:{configurable:!0},$queues:{configurable:!0}};au.$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)},iu.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__},au.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},iu.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(iu.prototype,au);var uu=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 i=0;return o.forEach((function(o){var a=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.run(e,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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.run(e,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(t){var o=t[0],i=t[1],a=t[2];if(a&&"only"!==a)throw new Error("You are trying to register an event already been taken by other type: "+a);n.run(e,o,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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.run(e,a,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 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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){nu.set(this,t)},r.normalStore.get=function(){return nu.get(this)},r.lazyStore.set=function(t){ou.set(this,t)},r.lazyStore.get=function(){return ou.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}(iu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Uo(t,ru,eu)}(e),i=new tu(o,t),a=xi(i,n),u=(r=o.debugOn,new uu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=$i(i,o,a,u);return c.eventEmitter=u,c}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="continue",o="type",i="optional",a="enumv",u="args",c="checker",s="alias",f="login",l="logout",p={desc:"y"},h="No message",d="onResult",v="onError";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&P(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&P(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||P(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&P(t)==_t}var jt=Object.prototype,St=jt.hasOwnProperty,Ot=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&St.call(t,"callee")&&!Ot.call(t,"callee")};var At="object"==typeof exports&&exports&&!exports.nodeType&&exports,kt=At&&"object"==typeof module&&module&&!module.nodeType&&module,Tt=kt&&kt.exports===At?m.Buffer:void 0,xt=(Tt?Tt.isBuffer:void 0)||function(){return!1},qt=9007199254740991,Pt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?qt:e)&&("number"==r||"symbol"!=r&&Pt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Ht=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[P(t)]},Dt=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&xt(t),i=!r&&!n&&!o&&Ht(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Se="__lodash_hash_undefined__",Oe=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var Ae="__lodash_hash_undefined__";function ke(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=On)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Sn);function Tn(t,e){return kn(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Qn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Xn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Qn(t))?!Xn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||h,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||h,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var So=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Qn(t)):return!Xn(e,r);default:return!Yn(t)(e.arg)}},Oo=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?Oo(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return So(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return So(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Ao=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ko=function(t){return!In(t)};function To(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return Tr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function xo(t,e){return Pn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Dn]&&ko(t[r])?qn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Hn]=e[Hn],o[Dn]=e[Dn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function qo(t,e){var r=function(t,e){var r=To(t,e);return{pristineValues:Pn(Fn(e,(function(t,e){return Ao(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!Ao(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[xo(n,r.checkAgainstAppProps),o]}var Po=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Hn]=Po(t[Hn]),r[Dn]=t[Dn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}function zo(t,e,r,n){return void 0===t&&(t={}),qn(function(t,e){var r=t[0],n=t[1],o=Pn(r,No(e));return qn(o,n)}(qo(t,e),n),r)}function Fo(t,e,r,n,f,l){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[u]=t,p[o]=e,!0===r&&(p[i]=!0),Wn(n)&&(p[a]=n),te(f)&&(p[c]=f),ct(l)&&(p[s]=l),p}var Io=Jn,Ro=Wn,Jo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Mo=function(t,e,r){void 0===r&&(r={});var n=r[i],o=r[a],u=r[c],f=r[s];return Fo.apply(null,[t,e,n,o,u,f])},Uo=function(t){return function(e,r,n){return void 0===n&&(n={}),zo(e,r,n,t)}}(Eo),Ho=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}};var Do=Array.isArray,Lo=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Bo="object"==typeof Lo&&Lo&&Lo.Object===Object&&Lo,Ko="object"==typeof self&&self&&self.Object===Object&&self,Vo=(Bo||Ko||Function("return this")()).Symbol,Go=Object.prototype,Yo=Go.hasOwnProperty,Wo=Go.toString,Qo=Vo?Vo.toStringTag:void 0;var Xo=Object.prototype.toString;var Zo="[object Null]",ti="[object Undefined]",ei=Vo?Vo.toStringTag:void 0;function ri(t){return null==t?void 0===t?ti:Zo:ei&&ei in Object(t)?function(t){var e=Yo.call(t,Qo),r=t[Qo];try{t[Qo]=void 0;var n=!0}catch(t){}var o=Wo.call(t);return n&&(e?t[Qo]=r:delete t[Qo]),o}(t):function(t){return Xo.call(t)}(t)}var ni=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function oi(t){return null!=t&&"object"==typeof t}var ii="[object Object]",ai=Function.prototype,ui=Object.prototype,ci=ai.toString,si=ui.hasOwnProperty,fi=ci.call(Object);var li=Vo?Vo.prototype:void 0,pi=(li&&li.toString,"[object String]");function hi(t){return"string"==typeof t||!Do(t)&&oi(t)&&ri(t)==pi}var di=function(t,e){return!!t.filter((function(t){return t===e})).length},vi=function(t,e){var r=Object.keys(t);return di(r,e)},gi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},yi=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},bi="query",mi="mutation",_i="socket",wi="payload",ji="condition",Si=function(){try{if(window||document)return!0}catch(t){}return!1},Oi=function(){try{if(!Si()&&Lo)return!0}catch(t){}return!1};var Ei=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Si()?"browser":Oi()?"node":"unknown"},e}(Error));var Ai=function(t){var e;return(e={}).args=t,e};var ki=function(t){return vi(t,"data")&&!vi(t,"error")?t.data:t},Ti=function(t){return function(t){if(!oi(t)||ri(t)!=ii)return!1;var e=ni(t);if(null===e)return!0;var r=si.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ci.call(r)==fi}(t)&&(vi(t,bi)||vi(t,mi)||vi(t,_i))},xi=function(t,e){return void 0===e&&(e={}),Ti(e)?Promise.resolve(e):t.getContract()},qi=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(gi(e,r,d),o),t.$only(gi(e,r,v),i),t.$trigger(e,{resolverName:r,args:n})}))}},Pi=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Ci(t,e,r,o){var i=function(t,e,r,o){var i={query:{},mutation:{}},a=function(e){i.query[e]=function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}};for(var u in o.query)a(u);var c=function(e){i.mutation[e]=function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[e].params;return Jo(a,u).then((function(){return t.mutation.apply(t,[e,r,n,i])})).catch(wo)}};for(var s in o.mutation)c(s);if(r.enableAuth&&o.auth){i.auth={};var p=r.loginHandlerName,h=r.logoutHandlerName;o.auth[p]&&(i.auth[p]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ho(t,p,r,o);return a.apply(null,n).then(t.postLoginAction).then((function(t){return e.$trigger(f,t),t}))}),o.auth[h]?i.auth[h]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ho(t,h,r,o);return a.apply(null,n).then(t.postLogoutAction).then((function(t){return e.$trigger(l,t),t}))}:i.auth[h]=function(){t.postLogoutAction(n),e.$trigger(l,n)}}return i}(t,e,r,o);Pi(e,o,r);var a=function(t){e.$only(t,(function(r){var n=r.resolverName,o=r.args;i[t][n]?Reflect.apply(i[t][n],null,o).then((function(r){e.$trigger(gi(t,n,d),r)})).catch((function(r){e.$trigger(gi(t,n,v),r)})):console.error(n+" is not defined in the contract!")}))};for(var u in i)a(u);setTimeout((function(){e.$suspend=!1}),1)}var $i=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Ci(t,n,e,r)}));var o={query:qi(n,"query"),mutation:qi(n,"mutation"),auth:qi(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Ni="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var zi=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=na().key(e);t(oa(r),r)}},remove:function(t){return na().removeItem(t)},clearAll:function(){return na().clear()}};function na(){return ea.localStorage}function oa(t){return na().getItem(t)}var ia=Ji.trim,aa={name:"cookieStorage",read:function(t){if(!t||!fa(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(ua.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;ua.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:ca,remove:sa,clearAll:function(){ca((function(t,e){sa(e)}))}},ua=Ji.Global.document;function ca(t){for(var e=ua.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ia(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function sa(t){t&&fa(t)&&(ua.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function fa(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(ua.cookie)}var la=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var pa="expire_mixin",ha=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+pa);return{set:function(e,r,n,o){this.hasNamespace(pa)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(pa)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(pa)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var wa=[ra,aa],ja=[la,ha,ba,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=_a.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=_a.compress(this._serialize(r));t(e,n)}}}],Sa=Xi.createStore(wa,ja),Oa=Ji.Global;function Ea(){return Oa.sessionStorage}function Aa(t){return Ea().getItem(t)}var ka=[{name:"sessionStorage",read:Aa,write:function(t,e){return Ea().setItem(t,e)},each:function(t){for(var e=Ea().length-1;e>=0;e--){var r=Ea().key(e);t(Aa(r),r)}},remove:function(t){return Ea().removeItem(t)},clearAll:function(){return Ea().clear()}},aa],Ta=[la,ha],xa=Xi.createStore(ka,Ta),qa=Sa,Pa=xa,Ca="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function $a(t){this.message=t}$a.prototype=new Error,$a.prototype.name="InvalidCharacterError";var Na="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new $a("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ca.indexOf(n);return a};var za=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Na(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Na(e)}};function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidTokenError";var Ia=function(t,e){if("string"!=typeof t)throw new Fa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(za(t.split(".")[r]))}catch(t){throw new Fa("Invalid token specified: "+t.message)}},Ra=Fa;Ia.InvalidTokenError=Ra;var Ja,Ma,Ua,Ha,Da,La,Ba,Ka,Va,Ga=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ya(t){if(Io(t))return function(t){var e=t.iat||Ga(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(Ia(t));throw new vo("Token must be a string!")}Mo("HS256",["string"]),Mo(!1,["boolean","number","string"],((Ja={})[s]="exp",Ja[i]=!0,Ja)),Mo(!1,["boolean","number","string"],((Ma={})[s]="nbf",Ma[i]=!0,Ma)),Mo(!1,["boolean","string"],((Ua={})[s]="iss",Ua[i]=!0,Ua)),Mo(!1,["boolean","string"],((Ha={})[s]="sub",Ha[i]=!0,Ha)),Mo(!1,["boolean","string"],((Da={})[s]="iss",Da[i]=!0,Da)),Mo(!1,["boolean"],((La={})[i]=!0,La)),Mo(!1,["boolean","string"],((Ba={})[i]=!0,Ba)),Mo(!1,["boolean","string"],((Ka={})[i]=!0,Ka)),Mo(!1,["boolean"],((Va={})[i]=!0,Va));var Wa=r[0],Qa=r[1],Xa=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Za={headers:{configurable:!0}};Za.headers.set=function(t){this.extraHeader=t},Xa.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=qn({},{_cb:yi()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,qn({},{method:Wa,params:o},e))},Xa.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Xa.prototype.processJsonp=function(t){return ki(t)},Xa.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Io(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ki(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Xa.prototype.getHeaders=function(){return this.opts.enableAuth?qn({},e,this.getAuthHeader(),this.extraHeader):qn({},e,this.extraHeader)},Xa.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Xa.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=qn({},this.extraParams,p)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Xa.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),hi(t)&&Do(e)){var o=Ai(e);return!0===r?o:((n={})[t]=o,n)}throw new Ei("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Xa.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[wi]=e,i[ji]=r,!0===n)return i;if(hi(t))return(o={})[t]=i,o;throw new Ei("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Qa}).then(_o)},Object.defineProperties(Xa.prototype,Za);var tu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Ro(t)&&t.length>=2&&Reflect.apply(qa.set,qa,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=qa.get("endpoint")||[];di(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=qa.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!di(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=yi();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(qa.set,qa,e)},r.jsonqlEndpoint.get=function(){var t=qa.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(qa.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Pa.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ya)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Ti(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Ti(this.opts.contract)?this.opts.contract:qa.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Xa))),eu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ru={hostname:Mo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Mo("jsonql",["string"]),loginHandlerName:Mo(f,["string"]),logoutHandlerName:Mo(l,["string"]),enableJsonp:Mo(!1,["boolean"]),enableAuth:Mo(!1,["boolean"]),useJwt:Mo(!0,["boolean"]),useLocalstorage:Mo(!0,["boolean"]),storageKey:Mo("storageKey",["string"]),authKey:Mo("authKey",["string"]),contractExpired:Mo(0,["number"]),keepContract:Mo(!0,["boolean"]),exposeContract:Mo(!1,["boolean"]),showContractDesc:Mo(!1,["boolean"]),contractKey:Mo(!1,["boolean"]),contractKeyName:Mo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Mo(!1,["boolean"]),timeout:Mo(5e3,["number"]),returnInstance:Mo(!1,["boolean"]),allowReturnRawToken:Mo(!1,["boolean"]),debugOn:Mo(!1,["boolean"])};var nu=new WeakMap,ou=new WeakMap;var iu=function(){this.__suspend__=null,this.queueStore=new Set},au={$suspend:{configurable:!0},$queues:{configurable:!0}};au.$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)},iu.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__},au.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},iu.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(iu.prototype,au);var uu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){nu.set(this,t)},r.normalStore.get=function(){return nu.get(this)},r.lazyStore.set=function(t){ou.set(this,t)},r.lazyStore.get=function(){return ou.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}(iu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Uo(t,ru,eu)}(e),i=new tu(o,t),a=xi(i,n),u=(r=o.debugOn,new uu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=$i(i,o,a,u);return c.eventEmitter=u,c}})); //# sourceMappingURL=static.js.map diff --git a/packages/http-client/static.js.map b/packages/http-client/static.js.map index 09044d5a..71d737cf 100644 --- a/packages/http-client/static.js.map +++ b/packages/http-client/static.js.map @@ -1 +1 @@ -{"version":3,"file":"static.js","sources":["node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i Date: Sat, 26 Oct 2019 23:16:33 +0800 Subject: [PATCH 10/44] remap all the methods and passed the test --- packages/ws-client/package.json | 2 +- packages/ws-client/src/core/resolver-methods.js | 4 ++-- packages/ws-client/src/core/setup-resolver.js | 4 ++-- packages/ws-client/src/core/setup-send.js | 4 ++-- packages/ws-client/src/options/constants.js | 5 +---- packages/ws-client/src/utils/helpers.js | 13 ------------- packages/ws-client/src/utils/index.js | 6 ++---- .../fixtures/beta/src/ws/extract-ws-payload.js | 3 ++- 8 files changed, 12 insertions(+), 29 deletions(-) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 771a1041..c7f176d7 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -53,7 +53,7 @@ "jsonql-errors": "^1.1.3", "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", - "jsonql-utils": "^0.7.8", + "jsonql-utils": "^0.8.0", "nb-event-service": "^1.8.5" }, "devDependencies": { diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 9ec2e769..246b7d92 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -44,9 +44,9 @@ import { createEvt, toArray, injectToFn, - objDefineProps, - isFunc + objDefineProps } from '../utils' +import { isFunc } from 'jsonql-utils/module' const debugFn = getDebug('resolver-methods') /** diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index c389379c..9594fee5 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -18,10 +18,10 @@ import { MY_NAMESPACE } from '../options/constants' -import { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module' +import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' import { respondHandler } from './respond-handler' -import { getDebug, isFunc } from '../utils' +import { getDebug } from '../utils' const debugFn = getDebug('setup-resolver') import { setupSend } from './setup-send' diff --git a/packages/ws-client/src/core/setup-send.js b/packages/ws-client/src/core/setup-send.js index e006170c..9a816009 100644 --- a/packages/ws-client/src/core/setup-send.js +++ b/packages/ws-client/src/core/setup-send.js @@ -7,10 +7,10 @@ import { SEND_MSG_PROP_NAME } from 'jsonql-constants' import { validateAsync } from 'jsonql-params-validator' -import { chainFns, objDefineProps, injectToFn, createEvt, toArray } from 'jsonql-utils/module' +import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' import { actionCall } from './action-call' -import { getDebug, isFunc } from '../utils' +import { getDebug } from '../utils' const debugFn = getDebug('setup-send') // pairing with the server vesrion SEND_MSG_PROP_NAME diff --git a/packages/ws-client/src/options/constants.js b/packages/ws-client/src/options/constants.js index 7d747804..6680c0fe 100644 --- a/packages/ws-client/src/options/constants.js +++ b/packages/ws-client/src/options/constants.js @@ -21,8 +21,6 @@ const MISSING_PROP_ERR = 'Missing property in contract!'; const UNKNOWN_CLIENT_ERR = 'Unknown client type!'; -const EXPECT_FUNC_ERR = `Expect a function!` - const EMIT_EVT = EMIT_REPLY_TYPE; const NAMESPACE_KEY = 'namespaceMap'; @@ -47,6 +45,5 @@ export { NAMESPACE_KEY, UNKNOWN_RESULT, NOT_ALLOW_OP, - MY_NAMESPACE, - EXPECT_FUNC_ERR + MY_NAMESPACE } diff --git a/packages/ws-client/src/utils/helpers.js b/packages/ws-client/src/utils/helpers.js index 2f35ec67..44c7a64f 100644 --- a/packages/ws-client/src/utils/helpers.js +++ b/packages/ws-client/src/utils/helpers.js @@ -1,6 +1,5 @@ // group all the small functions here import { JS_WS_SOCKET_IO_NAME, JS_WS_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants' -import { EXPECT_FUNC_ERR } from '../options/constants' import { toArray, createEvt } from 'jsonql-utils/module' // import { getDebug } from './get-debug'; // const debug = getDebug('helpers') @@ -57,15 +56,3 @@ export const disconnect = (nsps, type = JS_WS_SOCKET_IO_NAME) => { console.error('Disconnect call failed', e) } } - -/** - * Simple check if the prop is function - * @param {*} prop input - * @return {boolean} true on success - */ -export const isFunc = prop => { - if (typeof prop === 'function') { - return true; - } - console.error(EXPECT_FUNC_ERR) -} diff --git a/packages/ws-client/src/utils/index.js b/packages/ws-client/src/utils/index.js index a2e829f2..bca01b5b 100644 --- a/packages/ws-client/src/utils/index.js +++ b/packages/ws-client/src/utils/index.js @@ -10,8 +10,7 @@ import { fixWss, getHostName, clearMainEmitEvt, - disconnect, - isFunc + disconnect } from './helpers' // export @@ -30,6 +29,5 @@ export { fixWss, getHostName, clearMainEmitEvt, - disconnect, - isFunc + disconnect } diff --git a/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js b/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js index bad045c9..77e5a1cc 100644 --- a/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js +++ b/packages/ws-client/tests/fixtures/beta/src/ws/extract-ws-payload.js @@ -1,6 +1,7 @@ // take the ws reply data for use import { WS_EVT_NAME, WS_DATA_NAME, WS_REPLY_TYPE } from 'jsonql-constants' -import { isString, isObjectHasKey } from 'jsonql-params-validator' +import { isString } from 'jsonql-params-validator' +import { isObjectHasKey } from 'jsonql-utils/module' import { JsonqlError, clientErrorsHandler } from 'jsonql-errors' const keys = [ WS_REPLY_TYPE, WS_EVT_NAME, WS_DATA_NAME ] -- Gitee From 7f70e30581c391c5eed1a59061d1fb40044bca0e Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 23:17:25 +0800 Subject: [PATCH 11/44] jsonql-ws-client to 1.1.5 --- packages/ws-client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index c7f176d7..eb1014cc 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.1.4", + "version": "1.1.5", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", -- Gitee From 649eab89d5cd625e09ce228810724bf5ca7e1f1e Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 23:24:28 +0800 Subject: [PATCH 12/44] remap again for the missing import --- packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- packages/@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 2 +- packages/ws-client/package.json | 2 +- packages/ws-client/src/core/resolver-methods.js | 7 ++++--- packages/ws-client/src/core/respond-handler.js | 3 +-- packages/ws-client/src/utils/index.js | 4 +++- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index de019b4f..790cb24d 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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!",EXPECT_FUNC_ERR="Expect a function!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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 constructConfigFn(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 constructConfigFn.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),isObjectHasKey$2=isObjectHasKey$1,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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$2(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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 6bdaa4d0..0e637239 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Vt(t,e){return t===e||t!=t&&e!=e}function Ht(t,e){for(var r=t.length;r--;)if(Vt(t[r][0],e))return r;return-1}var Yt=Array.prototype.splice;function Gt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Gt.prototype.set=function(t,e){var r=this.__data__,n=Ht(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Qt="[object AsyncFunction]",Xt="[object Function]",Zt="[object GeneratorFunction]",te="[object Proxy]";function ee(t){if(!Kt(t))return!1;var e=it(t);return e==Xt||e==Zt||e==Qt||e==te}var re,ne=K["__core-js_shared__"],oe=(re=/[^.]+$/.exec(ne&&ne.keys&&ne.keys.IE_PROTO||""))?"Symbol(src)_1."+re:"";var ae=Function.prototype.toString;function ie(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ue=/^\[object .+?Constructor\]$/,ce=Function.prototype,fe=Object.prototype,se=ce.toString,le=fe.hasOwnProperty,pe=RegExp("^"+se.call(le).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function he(t){return!(!Kt(t)||(e=t,oe&&oe in e))&&(ee(t)?pe:ue).test(ie(t));var e}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return he(r)?r:void 0}var de=ve(K,"Map"),ge=ve(Object,"create");var ye="__lodash_hash_undefined__",be=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var me="__lodash_hash_undefined__";function we(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=He}function Ge(t){return null!=t&&Ye(t.length)&&!ee(t)}var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qe=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,Xe=Qe&&Qe.exports===Ke?K.Buffer:void 0,Ze=(Xe?Xe.isBuffer:void 0)||function(){return!1},tr={};tr["[object Float32Array]"]=tr["[object Float64Array]"]=tr["[object Int8Array]"]=tr["[object Int16Array]"]=tr["[object Int32Array]"]=tr["[object Uint8Array]"]=tr["[object Uint8ClampedArray]"]=tr["[object Uint16Array]"]=tr["[object Uint32Array]"]=!0,tr["[object Arguments]"]=tr["[object Array]"]=tr["[object ArrayBuffer]"]=tr["[object Boolean]"]=tr["[object DataView]"]=tr["[object Date]"]=tr["[object Error]"]=tr["[object Function]"]=tr["[object Map]"]=tr["[object Number]"]=tr["[object Object]"]=tr["[object RegExp]"]=tr["[object Set]"]=tr["[object String]"]=tr["[object WeakMap]"]=!1;var er,rr="object"==typeof exports&&exports&&!exports.nodeType&&exports,nr=rr&&"object"==typeof module&&module&&!module.nodeType&&module,or=nr&&nr.exports===rr&&Y.process,ar=function(){try{var t=nr&&nr.require&&nr.require("util").types;return t||or&&or.binding&&or.binding("util")}catch(t){}}(),ir=ar&&ar.isTypedArray,ur=ir?(er=ir,function(t){return er(t)}):function(t){return ft(t)&&Ye(t.length)&&!!tr[it(t)]};function cr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var fr=Object.prototype.hasOwnProperty;function sr(t,e,r){var n=t[e];fr.call(t,e)&&Vt(n,r)&&(void 0!==r||e in t)||$e(t,e,r)}var lr=9007199254740991,pr=/^(?:0|[1-9]\d*)$/;function hr(t,e){var r=typeof t;return!!(e=null==e?lr:e)&&("number"==r||"symbol"!=r&&pr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=kr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Er);function Pr(t,e){return Ar(function(t,e,r){return e=Sr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Sr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Nr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Kt(r))return!1;var n=typeof e;return!!("number"==n?Ge(r)&&hr(e,r.length):"string"==n&&e in r)&&Vt(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&Zr?new Kr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Fo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Lo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ro(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Mo(r,t)})).length},Wo=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Ir(r)||(!1!==(e=Fo(t))?!Lo({arg:r},e):!Ro(t)(r))})).length)})).length}return!1},Io=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Wo.apply(null,n)};function Jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Uo=function(t,e){var r;switch(!0){case"object"===t:return!Io(e);case"array"===t:return!Mo(e.arg);case!1!==(r=Fo(t)):return!Lo(e,r);default:return!Ro(t)(e.arg)}},Do=function(t,e){return Ir(t)?!0!==e.optional||Ir(e.defaultvalue)?null:e.defaultvalue:t},Bo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Mo(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(!Mo(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 Jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Jo(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:Jo(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?Do(t,i):t,index:r,param:i,optional:a}}));default:throw Jo(5),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!!So(e)&&!(r.type.length>r.type.filter((function(e){return Uo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Uo(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Vo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ho=function(t){return!So(t)};function Yo(t,e){var r=Oo(e,(function(t,e){return!t[qo]}));return Bn(r,{})?t:function(t,e){var r={};return e=yo(e),Yr(t,(function(t,n,o){$e(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,yo((function(t){return t.alias===e})),Yr)||e}))}function Go(t,e){return bo(e,(function(e,r){var n,o;return Ir(t[r])||!0===e[Po]&&Ho(t[r])?zr({},e,((n={})[Co]=!0,n)):((o={})[zo]=t[r],o[Ao]=e[Ao],o[Po]=e[Po]||!1,o[No]=e[No]||!1,o[xo]=e[xo]||!1,o)}))}function Ko(t,e){var r=function(t,e){var r=Yo(t,e);return{pristineValues:bo(Oo(e,(function(t,e){return Vo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Oo(e,(function(t,e){return!Vo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Go(n,r.checkAgainstAppProps),o]}var Qo=function(t){return Mo(t)?t:[t]};var Xo=function(t,e){return!Mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Zo=function(t,e){try{return!!ee(e)&&e.apply(null,[t])}catch(t){return!1}};function ta(t){return function(e,r){if(e[Co])return e[zo];var n=function(t,e){var r,n=[[t[zo]],[(r={},r[Ao]=Qo(t[Ao]),r[Po]=t[Po],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Jo("runValidationAction",r,e),new h(r,n);if(!1!==e[No]&&!Xo(e[zo],e[No]))throw Jo(No,e[No]),new p(r);if(!1!==e[xo]&&!Zo(e[zo],e[xo]))throw Jo(xo,e[xo]),new v(r);return e[zo]}}var ea=function(t,e){return Promise.resolve(Ko(t,e))};function ra(t,e,r,n){return void 0===t&&(t={}),ea(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=bo(r,ta(e));return zr(o,n)}(t,n)})).then((function(t){return zr({},t,r)}))}function na(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Mo(n)&&(i[S]=n),ee(o)&&(i[k]=o),Mr(a)&&(i[$]=a),i}var oa=ko,aa=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Bo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ia=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return na.apply(null,[t,e,n,o,a,i])},ua=function(t){return function(e,r,n){return void 0===n&&(n={}),ra(e,r,n,t)}}(Bo),ca=Vo,fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Cr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Cr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=function(t){if("function"==typeof t)return!0;console.error("Expect a function!")},ja=sa("respondHandler");function Oa(t,e,r){Ut(t,y)?(ja("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(ja("-- resolver called --",t[g]),e(t[g])):(ja("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Sa=sa("action-call");function Ea(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Sa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Sa("got the first result",t),Oa(t,n,o)}))}))}var ka=sa("setup-send"),$a=function(t,e,r,n,o){return xr(t,"send",(function(t){ka("got payload for",t),aa(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Ea(e,r,n,t);ka("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){ka("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return aa(t,o.params,!0).then((function(t){return Ea(e,r,n,t)})).catch(U)}}))},Ta=(sa("setup-resolver"),function(t,e,r,n,o){return[qr(t,"myNamespace",r),e,r,n,o]}),Aa=function(t,e,r,n,o){return[xr(t,R,(function(t){wa(t)&&e.$on(Dt(r,n,R),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Pa=function(t,e,r,n,o){return[xr(t,"onMessage",(function(t){if(wa(t)){e.$only(Dt(r,n,"onMessage"),(function(o){Oa(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Na=function(t,e,r,n,o){return[xr(t,M,(function(t){wa(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function za(t,e,r,n,o){var a=[n,o,t,e,r],i=Bt(Ta,Aa,Pa,Na,$a);return Reflect.apply(i,null,a)}var xa=sa("resolver-methods");function qa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return aa(o,n.params,!0).then((function(n){return Ea(t,e,r,n)})).catch(U)}}var Ca;sa("generator");function Ra(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=qa(r,a,u,c);n[u]=za(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return xr(t,M,(function(t){if(wa(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return xr(t,F,(function(t){wa(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?xr(t,L,(function(t){wa(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(xa(r.loginHandlerName,t),t&&oa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ma={loginHandlerName:ia("login",["string"]),logoutHandlerName:ia("logout",["string"]),useJwt:ia(!0,["boolean","string"]),hostname:ia(!1,["string"]),namespace:ia(b,["string"]),wsOptions:ia({},["object"]),contract:ia({},["object"],(Ca={},Ca[k]=Wr,Ca)),enableAuth:ia(!1,["boolean"]),token:ia(!1,["string"])},Fa=sa("check-options"),La={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Wa={version:"version: 0.6.0 module: umd",serverType:"ws"},Ia=null;"undefined"!=typeof WebSocket?Ia=WebSocket:"undefined"!=typeof MozWebSocket?Ia=MozWebSocket:void 0!==u?Ia=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Ia=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ia=self.WebSocket||self.MozWebSocket);var Ja=Ia,Ua=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 Da(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ua(e))}:function(e,r){var n=Ua(e),o=r&&"string"==typeof r?n+"?"+W+"="+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 Va=sa("client-event-handler"),Ha=function(t,e){e.$only(Dt(t,B),(function(r,n){Va("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},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]){Va("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Ha(o,r)})),r.$on(P,(function(){Va("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Ha(t,r)}))}))}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 ca(e,t)})).length===Ka.length&&e)}(oa(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=sa("ws-main-handler"),Za="onMessage",ti=R,ei=B,ri=function(t,e,r,n){var o=[e];r&&(Xa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ni(t,e,r,n){e.onopen=function(){Xa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ei),(function(t,r){Xa("calling server",t,r),e.send(Lr(t,r))}))},e.onmessage=function(e){try{var n=Qa(e),o=n.resolverName,a=n.type;switch(Xa("Hear from server",a,n),a){case N:var i=Dt(t,o,Za),u=r.$trigger(i,[n]);Xa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,ti);r.$trigger(c,[n]);Xa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Xa("ERROR_TYPE"),ri(r,t,o,n);break;default:Xa("Unhandled event!",n),ri(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ri(r,t,!1,e)}},e.onclose=function(){Xa("ws.onclose callback")},r.$on(P,(function(){try{Xa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var oi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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){return void 0===e&&(e={}),function(r){var n=r.eventEmitter;return function(t,e){return ua(t,Ma,Object.assign(La,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Fa("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ra(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Da(t),r=Da(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ni],o=t.token,a=oi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ga,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=oi(t,e,o);Reflect.apply(Ga,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ja),Wa)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Vt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Ht(t,e){return t===e||t!=t&&e!=e}function Yt(t,e){for(var r=t.length;r--;)if(Ht(t[r][0],e))return r;return-1}var Gt=Array.prototype.splice;function Kt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Kt.prototype.set=function(t,e){var r=this.__data__,n=Yt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Xt="[object AsyncFunction]",Zt="[object Function]",te="[object GeneratorFunction]",ee="[object Proxy]";function re(t){if(!Qt(t))return!1;var e=it(t);return e==Zt||e==te||e==Xt||e==ee}var ne,oe=K["__core-js_shared__"],ae=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ie=Function.prototype.toString;function ue(t){if(null!=t){try{return ie.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,fe=Function.prototype,se=Object.prototype,le=fe.toString,pe=se.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ve(t){return!(!Qt(t)||(e=t,ae&&ae in e))&&(re(t)?he:ce).test(ue(t));var e}function de(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return ve(r)?r:void 0}var ge=de(K,"Map"),ye=de(Object,"create");var be="__lodash_hash_undefined__",_e=Object.prototype.hasOwnProperty;var me=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=Ye}function Ke(t){return null!=t&&Ge(t.length)&&!re(t)}var Qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xe=Qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Xe&&Xe.exports===Qe?K.Buffer:void 0,tr=(Ze?Ze.isBuffer:void 0)||function(){return!1},er={};er["[object Float32Array]"]=er["[object Float64Array]"]=er["[object Int8Array]"]=er["[object Int16Array]"]=er["[object Int32Array]"]=er["[object Uint8Array]"]=er["[object Uint8ClampedArray]"]=er["[object Uint16Array]"]=er["[object Uint32Array]"]=!0,er["[object Arguments]"]=er["[object Array]"]=er["[object ArrayBuffer]"]=er["[object Boolean]"]=er["[object DataView]"]=er["[object Date]"]=er["[object Error]"]=er["[object Function]"]=er["[object Map]"]=er["[object Number]"]=er["[object Object]"]=er["[object RegExp]"]=er["[object Set]"]=er["[object String]"]=er["[object WeakMap]"]=!1;var rr,nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr&&Y.process,ir=function(){try{var t=or&&or.require&&or.require("util").types;return t||ar&&ar.binding&&ar.binding("util")}catch(t){}}(),ur=ir&&ir.isTypedArray,cr=ur?(rr=ur,function(t){return rr(t)}):function(t){return ft(t)&&Ge(t.length)&&!!er[it(t)]};function fr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var sr=Object.prototype.hasOwnProperty;function lr(t,e,r){var n=t[e];sr.call(t,e)&&Ht(n,r)&&(void 0!==r||e in t)||Te(t,e,r)}var pr=9007199254740991,hr=/^(?:0|[1-9]\d*)$/;function vr(t,e){var r=typeof t;return!!(e=null==e?pr:e)&&("number"==r||"symbol"!=r&&hr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=$r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kr);function Nr(t,e){return Pr(function(t,e,r){return e=Er(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Er(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=zr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&vr(e,r.length):"string"==n&&e in r)&&Ht(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&tn?new Qr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Lo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Mo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Fo(r,t)})).length},Io=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Fo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Jr(r)||(!1!==(e=Lo(t))?!Wo({arg:r},e):!Mo(t)(r))})).length)})).length}return!1},Jo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Io.apply(null,n)};function Uo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Do=function(t,e){var r;switch(!0){case"object"===t:return!Jo(e);case"array"===t:return!Fo(e.arg);case!1!==(r=Lo(t)):return!Wo(e,r);default:return!Mo(t)(e.arg)}},Bo=function(t,e){return Jr(t)?!0!==e.optional||Jr(e.defaultvalue)?null:e.defaultvalue:t},Vo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Fo(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(!Fo(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 Uo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Uo(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:Uo(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?Bo(t,i):t,index:r,param:i,optional:a}}));default:throw Uo(5),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!!Eo(e)&&!(r.type.length>r.type.filter((function(e){return Do(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Do(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Ho=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Yo=function(t){return!Eo(t)};function Go(t,e){var r=So(e,(function(t,e){return!t[Co]}));return Vn(r,{})?t:function(t,e){var r={};return e=bo(e),Gr(t,(function(t,n,o){Te(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,bo((function(t){return t.alias===e})),Gr)||e}))}function Ko(t,e){return _o(e,(function(e,r){var n,o;return Jr(t[r])||!0===e[No]&&Yo(t[r])?xr({},e,((n={})[Ro]=!0,n)):((o={})[xo]=t[r],o[Po]=e[Po],o[No]=e[No]||!1,o[zo]=e[zo]||!1,o[qo]=e[qo]||!1,o)}))}function Qo(t,e){var r=function(t,e){var r=Go(t,e);return{pristineValues:_o(So(e,(function(t,e){return Ho(r,e)})),(function(t){return t.args})),checkAgainstAppProps:So(e,(function(t,e){return!Ho(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ko(n,r.checkAgainstAppProps),o]}var Xo=function(t){return Fo(t)?t:[t]};var Zo=function(t,e){return!Fo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ta=function(t,e){try{return!!re(e)&&e.apply(null,[t])}catch(t){return!1}};function ea(t){return function(e,r){if(e[Ro])return e[xo];var n=function(t,e){var r,n=[[t[xo]],[(r={},r[Po]=Xo(t[Po]),r[No]=t[No],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Uo("runValidationAction",r,e),new h(r,n);if(!1!==e[zo]&&!Zo(e[xo],e[zo]))throw Uo(zo,e[zo]),new p(r);if(!1!==e[qo]&&!ta(e[xo],e[qo]))throw Uo(qo,e[qo]),new v(r);return e[xo]}}var ra=function(t,e){return Promise.resolve(Qo(t,e))};function na(t,e,r,n){return void 0===t&&(t={}),ra(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=_o(r,ea(e));return xr(o,n)}(t,n)})).then((function(t){return xr({},t,r)}))}function oa(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Fo(n)&&(i[S]=n),re(o)&&(i[k]=o),Fr(a)&&(i[$]=a),i}var aa=$o,ia=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Vo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ua=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return oa.apply(null,[t,e,n,o,a,i])},ca=function(t){return function(e,r,n){return void 0===n&&(n={}),na(e,r,n,t)}}(Vo),fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Rr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Rr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=sa("respondHandler");function ja(t,e,r){Ut(t,y)?(wa("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(wa("-- resolver called --",t[g]),e(t[g])):(wa("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Oa=sa("action-call");function Sa(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Oa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Oa("got the first result",t),ja(t,n,o)}))}))}var Ea=sa("setup-send"),ka=function(t,e,r,n,o){return qr(t,"send",(function(t){Ea("got payload for",t),ia(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Sa(e,r,n,t);Ea("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){Ea("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ia(t,o.params,!0).then((function(t){return Sa(e,r,n,t)})).catch(U)}}))},$a=(sa("setup-resolver"),function(t,e,r,n,o){return[Cr(t,"myNamespace",r),e,r,n,o]}),Ta=function(t,e,r,n,o){return[qr(t,R,(function(t){Bt(t)&&e.$on(Dt(r,n,R),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Aa=function(t,e,r,n,o){return[qr(t,"onMessage",(function(t){if(Bt(t)){e.$only(Dt(r,n,"onMessage"),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Pa=function(t,e,r,n,o){return[qr(t,M,(function(t){Bt(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function Na(t,e,r,n,o){var a=[n,o,t,e,r],i=Vt($a,Ta,Aa,Pa,ka);return Reflect.apply(i,null,a)}var za=sa("resolver-methods");function xa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ia(o,n.params,!0).then((function(n){return Sa(t,e,r,n)})).catch(U)}}var qa;sa("generator");function Ca(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=xa(r,a,u,c);n[u]=Na(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return qr(t,M,(function(t){if(Bt(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return qr(t,F,(function(t){Bt(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?qr(t,L,(function(t){Bt(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(za(r.loginHandlerName,t),t&&aa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ra={loginHandlerName:ua("login",["string"]),logoutHandlerName:ua("logout",["string"]),useJwt:ua(!0,["boolean","string"]),hostname:ua(!1,["string"]),namespace:ua(b,["string"]),wsOptions:ua({},["object"]),contract:ua({},["object"],(qa={},qa[k]=Ir,qa)),enableAuth:ua(!1,["boolean"]),token:ua(!1,["string"])},Ma=sa("check-options"),Fa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var La={version:"version: 0.6.0 module: umd",serverType:"ws"},Wa=null;"undefined"!=typeof WebSocket?Wa=WebSocket:"undefined"!=typeof MozWebSocket?Wa=MozWebSocket:void 0!==u?Wa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Wa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Wa=self.WebSocket||self.MozWebSocket);var Ia=Wa,Ja=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 Ua(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ja(e))}:function(e,r){var n=Ja(e),o=r&&"string"==typeof r?n+"?"+W+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Da(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ba=sa("client-event-handler"),Va=function(t,e){e.$only(Dt(t,B),(function(r,n){Ba("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},Ha=function(t){return t.length>1&&t[0]};function Ya(t,e,r,n,o,a){var i=Ha(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){Ba("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Va(o,r)})),r.$on(P,(function(){Ba("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Va(t,r)}))}))}var Ga=["__reply__","__event__","__data__"],Ka=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Ga.filter((function(t){return Ut(e,t)})).length===Ga.length&&e)}(aa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new I("payload can not be decoded",t)},Qa=sa("ws-main-handler"),Xa="onMessage",Za=R,ti=B,ei=function(t,e,r,n){var o=[e];r&&(Qa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ri(t,e,r,n){e.onopen=function(){Qa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ti),(function(t,r){Qa("calling server",t,r),e.send(Wr(t,r))}))},e.onmessage=function(e){try{var n=Ka(e),o=n.resolverName,a=n.type;switch(Qa("Hear from server",a,n),a){case N:var i=Dt(t,o,Xa),u=r.$trigger(i,[n]);Qa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,Za);r.$trigger(c,[n]);Qa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Qa("ERROR_TYPE"),ei(r,t,o,n);break;default:Qa("Unhandled event!",n),ei(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ei(r,t,!1,e)}},e.onclose=function(){Qa("ws.onclose callback")},r.$on(P,(function(){try{Qa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var ni=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=Da(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]=Da(!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 function(t,e){return ca(t,Ra,Object.assign(Fa,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Ma("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ca(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ua(t),r=Ua(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ri],o=t.token,a=ni(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ya,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=ni(t,e,o);Reflect.apply(Ya,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ia),La)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 8a197912..54f47ef7 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -42,7 +42,7 @@ "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.8.0", - "jsonql-ws-client": "^1.1.4", + "jsonql-ws-client": "^1.1.5", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index eb1014cc..02e253ea 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.1.5", + "version": "1.1.6", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 246b7d92..e3e01a74 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -15,7 +15,6 @@ import { } from 'jsonql-errors' import { validateAsync, - isObjectHasKey, isString } from 'jsonql-params-validator' import { @@ -44,9 +43,11 @@ import { createEvt, toArray, injectToFn, - objDefineProps + objDefineProps, + isFunc, + isObjectHasKey } from '../utils' -import { isFunc } from 'jsonql-utils/module' + const debugFn = getDebug('resolver-methods') /** diff --git a/packages/ws-client/src/core/respond-handler.js b/packages/ws-client/src/core/respond-handler.js index 8230272f..aff9443c 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 { isObjectHasKey } from 'jsonql-utils/module' -import { getDebug } from '../utils' +import { getDebug, isObjectHasKey } from '../utils' const debugFn = getDebug('respondHandler') /** * break out to use in different places to handle the return from server diff --git a/packages/ws-client/src/utils/index.js b/packages/ws-client/src/utils/index.js index bca01b5b..bc9ff621 100644 --- a/packages/ws-client/src/utils/index.js +++ b/packages/ws-client/src/utils/index.js @@ -1,7 +1,7 @@ // export the util methods import { isArray } from 'jsonql-params-validator' // moved to jsonql-utils -import { toArray, createEvt, injectToFn, objDefineProps } from 'jsonql-utils/module' +import { toArray, createEvt, injectToFn, objDefineProps, isFunc, isObjectHasKey } from 'jsonql-utils/module' import ee from './ee' import getDebug from './get-debug' @@ -21,6 +21,8 @@ export { createEvt, injectToFn, objDefineProps, + isFunc, + isObjectHasKey, ee, getDebug, -- Gitee From b67bd88ab8a2db5b463235f345153ce87a62b89b Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 23:36:33 +0800 Subject: [PATCH 13/44] jsonql-ws-client to 1.1.7 clean up all the import properties --- packages/@jsonql/ws/package.json | 2 +- packages/ws-client/package.json | 2 +- .../ws-client/src/core/resolver-methods.js | 29 +++---------------- packages/ws-client/src/core/setup-resolver.js | 8 +---- 4 files changed, 7 insertions(+), 34 deletions(-) diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 54f47ef7..a7a05dd6 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -42,7 +42,7 @@ "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.8.0", - "jsonql-ws-client": "^1.1.5", + "jsonql-ws-client": "^1.1.6", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 02e253ea..7f0f6ead 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.1.6", + "version": "1.1.7", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index e3e01a74..31226ad6 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -7,36 +7,15 @@ // callable api for the developer to setup their front end // the only thing is - when they call they might get an error or // NOT_LOGIN_IN and they can react to this error accordingly +import { JsonqlValidationError, finalCatch } from 'jsonql-errors' +import { validateAsync, isString } from 'jsonql-params-validator' import { - JsonqlResolverNotFoundError, - JsonqlValidationError, - JsonqlError, - finalCatch -} from 'jsonql-errors' -import { - validateAsync, - isString -} from 'jsonql-params-validator' -import { - ERROR_TYPE, - DATA_KEY, - ERROR_KEY, ON_ERROR_PROP_NAME, - ON_MESSAGE_PROP_NAME, - ON_RESULT_PROP_NAME, ON_LOGIN_PROP_NAME, - SEND_MSG_PROP_NAME, - LOGIN_EVENT_NAME, ON_READY_PROP_NAME, + LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME } from 'jsonql-constants' -import { - EMIT_EVT, - NOT_ALLOW_OP, - UNKNOWN_RESULT, - MY_NAMESPACE, - EXPECT_FUNC_ERR -} from '../options/constants' import { actionCall } from './action-call' import { getDebug, @@ -45,7 +24,7 @@ import { injectToFn, objDefineProps, isFunc, - isObjectHasKey + isObjectHasKey } from '../utils' const debugFn = getDebug('resolver-methods') diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index 9594fee5..423fed3b 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -11,13 +11,7 @@ import { ON_READY_PROP_NAME, LOGOUT_EVENT_NAME } from 'jsonql-constants' -import { - EMIT_EVT, - NOT_ALLOW_OP, - UNKNOWN_RESULT, - MY_NAMESPACE -} from '../options/constants' - +import { MY_NAMESPACE } from '../options/constants' import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' import { respondHandler } from './respond-handler' -- Gitee From 3c9239a47d9acf21b2aee080781599c1a206b95d Mon Sep 17 00:00:00 2001 From: joelchu Date: Sat, 26 Oct 2019 23:37:46 +0800 Subject: [PATCH 14/44] finally sort out the ws-client based and continue with ws --- packages/@jsonql/ws/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index a7a05dd6..b62e30fc 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -42,7 +42,7 @@ "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.8.0", - "jsonql-ws-client": "^1.1.6", + "jsonql-ws-client": "^1.1.7", "ws": "^7.2.0" }, "devDependencies": { -- Gitee From 24415799eda247899f1fa99bdfc2234263ddc90f Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 08:21:15 +0800 Subject: [PATCH 15/44] @jsonql/ws to 0.7.0 --- packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- packages/@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 790cb24d..7c56a30c 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 0e637239..49b5b9a1 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Vt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Ht(t,e){return t===e||t!=t&&e!=e}function Yt(t,e){for(var r=t.length;r--;)if(Ht(t[r][0],e))return r;return-1}var Gt=Array.prototype.splice;function Kt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Kt.prototype.set=function(t,e){var r=this.__data__,n=Yt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Xt="[object AsyncFunction]",Zt="[object Function]",te="[object GeneratorFunction]",ee="[object Proxy]";function re(t){if(!Qt(t))return!1;var e=it(t);return e==Zt||e==te||e==Xt||e==ee}var ne,oe=K["__core-js_shared__"],ae=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ie=Function.prototype.toString;function ue(t){if(null!=t){try{return ie.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,fe=Function.prototype,se=Object.prototype,le=fe.toString,pe=se.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ve(t){return!(!Qt(t)||(e=t,ae&&ae in e))&&(re(t)?he:ce).test(ue(t));var e}function de(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return ve(r)?r:void 0}var ge=de(K,"Map"),ye=de(Object,"create");var be="__lodash_hash_undefined__",_e=Object.prototype.hasOwnProperty;var me=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=Ye}function Ke(t){return null!=t&&Ge(t.length)&&!re(t)}var Qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xe=Qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Xe&&Xe.exports===Qe?K.Buffer:void 0,tr=(Ze?Ze.isBuffer:void 0)||function(){return!1},er={};er["[object Float32Array]"]=er["[object Float64Array]"]=er["[object Int8Array]"]=er["[object Int16Array]"]=er["[object Int32Array]"]=er["[object Uint8Array]"]=er["[object Uint8ClampedArray]"]=er["[object Uint16Array]"]=er["[object Uint32Array]"]=!0,er["[object Arguments]"]=er["[object Array]"]=er["[object ArrayBuffer]"]=er["[object Boolean]"]=er["[object DataView]"]=er["[object Date]"]=er["[object Error]"]=er["[object Function]"]=er["[object Map]"]=er["[object Number]"]=er["[object Object]"]=er["[object RegExp]"]=er["[object Set]"]=er["[object String]"]=er["[object WeakMap]"]=!1;var rr,nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr&&Y.process,ir=function(){try{var t=or&&or.require&&or.require("util").types;return t||ar&&ar.binding&&ar.binding("util")}catch(t){}}(),ur=ir&&ir.isTypedArray,cr=ur?(rr=ur,function(t){return rr(t)}):function(t){return ft(t)&&Ge(t.length)&&!!er[it(t)]};function fr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var sr=Object.prototype.hasOwnProperty;function lr(t,e,r){var n=t[e];sr.call(t,e)&&Ht(n,r)&&(void 0!==r||e in t)||Te(t,e,r)}var pr=9007199254740991,hr=/^(?:0|[1-9]\d*)$/;function vr(t,e){var r=typeof t;return!!(e=null==e?pr:e)&&("number"==r||"symbol"!=r&&hr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=$r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kr);function Nr(t,e){return Pr(function(t,e,r){return e=Er(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Er(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=zr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&vr(e,r.length):"string"==n&&e in r)&&Ht(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&tn?new Qr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Lo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Mo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Fo(r,t)})).length},Io=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Fo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Jr(r)||(!1!==(e=Lo(t))?!Wo({arg:r},e):!Mo(t)(r))})).length)})).length}return!1},Jo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Io.apply(null,n)};function Uo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Do=function(t,e){var r;switch(!0){case"object"===t:return!Jo(e);case"array"===t:return!Fo(e.arg);case!1!==(r=Lo(t)):return!Wo(e,r);default:return!Mo(t)(e.arg)}},Bo=function(t,e){return Jr(t)?!0!==e.optional||Jr(e.defaultvalue)?null:e.defaultvalue:t},Vo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Fo(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(!Fo(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 Uo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Uo(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:Uo(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?Bo(t,i):t,index:r,param:i,optional:a}}));default:throw Uo(5),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!!Eo(e)&&!(r.type.length>r.type.filter((function(e){return Do(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Do(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Ho=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Yo=function(t){return!Eo(t)};function Go(t,e){var r=So(e,(function(t,e){return!t[Co]}));return Vn(r,{})?t:function(t,e){var r={};return e=bo(e),Gr(t,(function(t,n,o){Te(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,bo((function(t){return t.alias===e})),Gr)||e}))}function Ko(t,e){return _o(e,(function(e,r){var n,o;return Jr(t[r])||!0===e[No]&&Yo(t[r])?xr({},e,((n={})[Ro]=!0,n)):((o={})[xo]=t[r],o[Po]=e[Po],o[No]=e[No]||!1,o[zo]=e[zo]||!1,o[qo]=e[qo]||!1,o)}))}function Qo(t,e){var r=function(t,e){var r=Go(t,e);return{pristineValues:_o(So(e,(function(t,e){return Ho(r,e)})),(function(t){return t.args})),checkAgainstAppProps:So(e,(function(t,e){return!Ho(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ko(n,r.checkAgainstAppProps),o]}var Xo=function(t){return Fo(t)?t:[t]};var Zo=function(t,e){return!Fo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ta=function(t,e){try{return!!re(e)&&e.apply(null,[t])}catch(t){return!1}};function ea(t){return function(e,r){if(e[Ro])return e[xo];var n=function(t,e){var r,n=[[t[xo]],[(r={},r[Po]=Xo(t[Po]),r[No]=t[No],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Uo("runValidationAction",r,e),new h(r,n);if(!1!==e[zo]&&!Zo(e[xo],e[zo]))throw Uo(zo,e[zo]),new p(r);if(!1!==e[qo]&&!ta(e[xo],e[qo]))throw Uo(qo,e[qo]),new v(r);return e[xo]}}var ra=function(t,e){return Promise.resolve(Qo(t,e))};function na(t,e,r,n){return void 0===t&&(t={}),ra(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=_o(r,ea(e));return xr(o,n)}(t,n)})).then((function(t){return xr({},t,r)}))}function oa(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Fo(n)&&(i[S]=n),re(o)&&(i[k]=o),Fr(a)&&(i[$]=a),i}var aa=$o,ia=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Vo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ua=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return oa.apply(null,[t,e,n,o,a,i])},ca=function(t){return function(e,r,n){return void 0===n&&(n={}),na(e,r,n,t)}}(Vo),fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Rr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Rr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=sa("respondHandler");function ja(t,e,r){Ut(t,y)?(wa("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(wa("-- resolver called --",t[g]),e(t[g])):(wa("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Oa=sa("action-call");function Sa(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Oa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Oa("got the first result",t),ja(t,n,o)}))}))}var Ea=sa("setup-send"),ka=function(t,e,r,n,o){return qr(t,"send",(function(t){Ea("got payload for",t),ia(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Sa(e,r,n,t);Ea("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){Ea("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ia(t,o.params,!0).then((function(t){return Sa(e,r,n,t)})).catch(U)}}))},$a=(sa("setup-resolver"),function(t,e,r,n,o){return[Cr(t,"myNamespace",r),e,r,n,o]}),Ta=function(t,e,r,n,o){return[qr(t,R,(function(t){Bt(t)&&e.$on(Dt(r,n,R),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Aa=function(t,e,r,n,o){return[qr(t,"onMessage",(function(t){if(Bt(t)){e.$only(Dt(r,n,"onMessage"),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Pa=function(t,e,r,n,o){return[qr(t,M,(function(t){Bt(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function Na(t,e,r,n,o){var a=[n,o,t,e,r],i=Vt($a,Ta,Aa,Pa,ka);return Reflect.apply(i,null,a)}var za=sa("resolver-methods");function xa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ia(o,n.params,!0).then((function(n){return Sa(t,e,r,n)})).catch(U)}}var qa;sa("generator");function Ca(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=xa(r,a,u,c);n[u]=Na(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return qr(t,M,(function(t){if(Bt(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return qr(t,F,(function(t){Bt(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?qr(t,L,(function(t){Bt(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(za(r.loginHandlerName,t),t&&aa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ra={loginHandlerName:ua("login",["string"]),logoutHandlerName:ua("logout",["string"]),useJwt:ua(!0,["boolean","string"]),hostname:ua(!1,["string"]),namespace:ua(b,["string"]),wsOptions:ua({},["object"]),contract:ua({},["object"],(qa={},qa[k]=Ir,qa)),enableAuth:ua(!1,["boolean"]),token:ua(!1,["string"])},Ma=sa("check-options"),Fa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var La={version:"version: 0.6.0 module: umd",serverType:"ws"},Wa=null;"undefined"!=typeof WebSocket?Wa=WebSocket:"undefined"!=typeof MozWebSocket?Wa=MozWebSocket:void 0!==u?Wa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Wa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Wa=self.WebSocket||self.MozWebSocket);var Ia=Wa,Ja=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 Ua(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ja(e))}:function(e,r){var n=Ja(e),o=r&&"string"==typeof r?n+"?"+W+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Da(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ba=sa("client-event-handler"),Va=function(t,e){e.$only(Dt(t,B),(function(r,n){Ba("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},Ha=function(t){return t.length>1&&t[0]};function Ya(t,e,r,n,o,a){var i=Ha(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){Ba("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Va(o,r)})),r.$on(P,(function(){Ba("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Va(t,r)}))}))}var Ga=["__reply__","__event__","__data__"],Ka=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Ga.filter((function(t){return Ut(e,t)})).length===Ga.length&&e)}(aa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new I("payload can not be decoded",t)},Qa=sa("ws-main-handler"),Xa="onMessage",Za=R,ti=B,ei=function(t,e,r,n){var o=[e];r&&(Qa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ri(t,e,r,n){e.onopen=function(){Qa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ti),(function(t,r){Qa("calling server",t,r),e.send(Wr(t,r))}))},e.onmessage=function(e){try{var n=Ka(e),o=n.resolverName,a=n.type;switch(Qa("Hear from server",a,n),a){case N:var i=Dt(t,o,Xa),u=r.$trigger(i,[n]);Qa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,Za);r.$trigger(c,[n]);Qa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Qa("ERROR_TYPE"),ei(r,t,o,n);break;default:Qa("Unhandled event!",n),ei(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ei(r,t,!1,e)}},e.onclose=function(){Qa("ws.onclose callback")},r.$on(P,(function(){try{Qa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var ni=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=Da(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]=Da(!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 function(t,e){return ca(t,Ra,Object.assign(Fa,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Ma("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ca(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ua(t),r=Ua(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ri],o=t.token,a=ni(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ya,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=ni(t,e,o);Reflect.apply(Ya,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ia),La)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Vt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Ht(t,e){return t===e||t!=t&&e!=e}function Yt(t,e){for(var r=t.length;r--;)if(Ht(t[r][0],e))return r;return-1}var Gt=Array.prototype.splice;function Kt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Kt.prototype.set=function(t,e){var r=this.__data__,n=Yt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Xt="[object AsyncFunction]",Zt="[object Function]",te="[object GeneratorFunction]",ee="[object Proxy]";function re(t){if(!Qt(t))return!1;var e=it(t);return e==Zt||e==te||e==Xt||e==ee}var ne,oe=K["__core-js_shared__"],ae=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ie=Function.prototype.toString;function ue(t){if(null!=t){try{return ie.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,fe=Function.prototype,se=Object.prototype,le=fe.toString,pe=se.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ve(t){return!(!Qt(t)||(e=t,ae&&ae in e))&&(re(t)?he:ce).test(ue(t));var e}function de(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return ve(r)?r:void 0}var ge=de(K,"Map"),ye=de(Object,"create");var be="__lodash_hash_undefined__",_e=Object.prototype.hasOwnProperty;var me=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=Ye}function Ke(t){return null!=t&&Ge(t.length)&&!re(t)}var Qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xe=Qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Xe&&Xe.exports===Qe?K.Buffer:void 0,tr=(Ze?Ze.isBuffer:void 0)||function(){return!1},er={};er["[object Float32Array]"]=er["[object Float64Array]"]=er["[object Int8Array]"]=er["[object Int16Array]"]=er["[object Int32Array]"]=er["[object Uint8Array]"]=er["[object Uint8ClampedArray]"]=er["[object Uint16Array]"]=er["[object Uint32Array]"]=!0,er["[object Arguments]"]=er["[object Array]"]=er["[object ArrayBuffer]"]=er["[object Boolean]"]=er["[object DataView]"]=er["[object Date]"]=er["[object Error]"]=er["[object Function]"]=er["[object Map]"]=er["[object Number]"]=er["[object Object]"]=er["[object RegExp]"]=er["[object Set]"]=er["[object String]"]=er["[object WeakMap]"]=!1;var rr,nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr&&Y.process,ir=function(){try{var t=or&&or.require&&or.require("util").types;return t||ar&&ar.binding&&ar.binding("util")}catch(t){}}(),ur=ir&&ir.isTypedArray,cr=ur?(rr=ur,function(t){return rr(t)}):function(t){return ft(t)&&Ge(t.length)&&!!er[it(t)]};function fr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var sr=Object.prototype.hasOwnProperty;function lr(t,e,r){var n=t[e];sr.call(t,e)&&Ht(n,r)&&(void 0!==r||e in t)||Te(t,e,r)}var pr=9007199254740991,hr=/^(?:0|[1-9]\d*)$/;function vr(t,e){var r=typeof t;return!!(e=null==e?pr:e)&&("number"==r||"symbol"!=r&&hr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=$r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kr);function Nr(t,e){return Pr(function(t,e,r){return e=Er(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Er(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=zr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&vr(e,r.length):"string"==n&&e in r)&&Ht(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&tn?new Qr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Lo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Mo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Fo(r,t)})).length},Io=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Fo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Jr(r)||(!1!==(e=Lo(t))?!Wo({arg:r},e):!Mo(t)(r))})).length)})).length}return!1},Jo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Io.apply(null,n)};function Uo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Do=function(t,e){var r;switch(!0){case"object"===t:return!Jo(e);case"array"===t:return!Fo(e.arg);case!1!==(r=Lo(t)):return!Wo(e,r);default:return!Mo(t)(e.arg)}},Bo=function(t,e){return Jr(t)?!0!==e.optional||Jr(e.defaultvalue)?null:e.defaultvalue:t},Vo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Fo(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(!Fo(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 Uo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Uo(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:Uo(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?Bo(t,i):t,index:r,param:i,optional:a}}));default:throw Uo(5),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!!Eo(e)&&!(r.type.length>r.type.filter((function(e){return Do(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Do(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Ho=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Yo=function(t){return!Eo(t)};function Go(t,e){var r=So(e,(function(t,e){return!t[Co]}));return Vn(r,{})?t:function(t,e){var r={};return e=bo(e),Gr(t,(function(t,n,o){Te(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,bo((function(t){return t.alias===e})),Gr)||e}))}function Ko(t,e){return _o(e,(function(e,r){var n,o;return Jr(t[r])||!0===e[No]&&Yo(t[r])?xr({},e,((n={})[Ro]=!0,n)):((o={})[xo]=t[r],o[Po]=e[Po],o[No]=e[No]||!1,o[zo]=e[zo]||!1,o[qo]=e[qo]||!1,o)}))}function Qo(t,e){var r=function(t,e){var r=Go(t,e);return{pristineValues:_o(So(e,(function(t,e){return Ho(r,e)})),(function(t){return t.args})),checkAgainstAppProps:So(e,(function(t,e){return!Ho(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ko(n,r.checkAgainstAppProps),o]}var Xo=function(t){return Fo(t)?t:[t]};var Zo=function(t,e){return!Fo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ta=function(t,e){try{return!!re(e)&&e.apply(null,[t])}catch(t){return!1}};function ea(t){return function(e,r){if(e[Ro])return e[xo];var n=function(t,e){var r,n=[[t[xo]],[(r={},r[Po]=Xo(t[Po]),r[No]=t[No],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Uo("runValidationAction",r,e),new h(r,n);if(!1!==e[zo]&&!Zo(e[xo],e[zo]))throw Uo(zo,e[zo]),new p(r);if(!1!==e[qo]&&!ta(e[xo],e[qo]))throw Uo(qo,e[qo]),new v(r);return e[xo]}}var ra=function(t,e){return Promise.resolve(Qo(t,e))};function na(t,e,r,n){return void 0===t&&(t={}),ra(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=_o(r,ea(e));return xr(o,n)}(t,n)})).then((function(t){return xr({},t,r)}))}function oa(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Fo(n)&&(i[S]=n),re(o)&&(i[k]=o),Fr(a)&&(i[$]=a),i}var aa=$o,ia=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Vo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ua=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return oa.apply(null,[t,e,n,o,a,i])},ca=function(t){return function(e,r,n){return void 0===n&&(n={}),na(e,r,n,t)}}(Vo),fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Rr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Rr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=sa("respondHandler");function ja(t,e,r){Ut(t,y)?(wa("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(wa("-- resolver called --",t[g]),e(t[g])):(wa("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Oa=sa("action-call");function Sa(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Oa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Oa("got the first result",t),ja(t,n,o)}))}))}var Ea=sa("setup-send"),ka=function(t,e,r,n,o){return qr(t,"send",(function(t){Ea("got payload for",t),ia(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Sa(e,r,n,t);Ea("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){Ea("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ia(t,o.params,!0).then((function(t){return Sa(e,r,n,t)})).catch(U)}}))},$a=(sa("setup-resolver"),function(t,e,r,n,o){return[Cr(t,"myNamespace",r),e,r,n,o]}),Ta=function(t,e,r,n,o){return[qr(t,R,(function(t){Bt(t)&&e.$on(Dt(r,n,R),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Aa=function(t,e,r,n,o){return[qr(t,"onMessage",(function(t){if(Bt(t)){e.$only(Dt(r,n,"onMessage"),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Pa=function(t,e,r,n,o){return[qr(t,M,(function(t){Bt(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function Na(t,e,r,n,o){var a=[n,o,t,e,r],i=Vt($a,Ta,Aa,Pa,ka);return Reflect.apply(i,null,a)}var za=sa("resolver-methods");function xa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ia(o,n.params,!0).then((function(n){return Sa(t,e,r,n)})).catch(U)}}var qa;sa("generator");function Ca(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=xa(r,a,u,c);n[u]=Na(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return qr(t,M,(function(t){if(Bt(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return qr(t,F,(function(t){Bt(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?qr(t,L,(function(t){Bt(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(za(r.loginHandlerName,t),t&&aa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ra={loginHandlerName:ua("login",["string"]),logoutHandlerName:ua("logout",["string"]),useJwt:ua(!0,["boolean","string"]),hostname:ua(!1,["string"]),namespace:ua(b,["string"]),wsOptions:ua({},["object"]),contract:ua({},["object"],(qa={},qa[k]=Ir,qa)),enableAuth:ua(!1,["boolean"]),token:ua(!1,["string"])},Ma=sa("check-options"),Fa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var La={version:"version: 0.7.0 module: umd",serverType:"ws"},Wa=null;"undefined"!=typeof WebSocket?Wa=WebSocket:"undefined"!=typeof MozWebSocket?Wa=MozWebSocket:void 0!==u?Wa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Wa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Wa=self.WebSocket||self.MozWebSocket);var Ia=Wa,Ja=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 Ua(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ja(e))}:function(e,r){var n=Ja(e),o=r&&"string"==typeof r?n+"?"+W+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Da(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ba=sa("client-event-handler"),Va=function(t,e){e.$only(Dt(t,B),(function(r,n){Ba("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},Ha=function(t){return t.length>1&&t[0]};function Ya(t,e,r,n,o,a){var i=Ha(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){Ba("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Va(o,r)})),r.$on(P,(function(){Ba("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Va(t,r)}))}))}var Ga=["__reply__","__event__","__data__"],Ka=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Ga.filter((function(t){return Ut(e,t)})).length===Ga.length&&e)}(aa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new I("payload can not be decoded",t)},Qa=sa("ws-main-handler"),Xa="onMessage",Za=R,ti=B,ei=function(t,e,r,n){var o=[e];r&&(Qa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ri(t,e,r,n){e.onopen=function(){Qa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ti),(function(t,r){Qa("calling server",t,r),e.send(Wr(t,r))}))},e.onmessage=function(e){try{var n=Ka(e),o=n.resolverName,a=n.type;switch(Qa("Hear from server",a,n),a){case N:var i=Dt(t,o,Xa),u=r.$trigger(i,[n]);Qa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,Za);r.$trigger(c,[n]);Qa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Qa("ERROR_TYPE"),ei(r,t,o,n);break;default:Qa("Unhandled event!",n),ei(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ei(r,t,!1,e)}},e.onclose=function(){Qa("ws.onclose callback")},r.$on(P,(function(){try{Qa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var ni=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=Da(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]=Da(!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 function(t,e){return ca(t,Ra,Object.assign(Fa,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Ma("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ca(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ua(t),r=Ua(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ri],o=t.token,a=ni(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ya,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=ni(t,e,o);Reflect.apply(Ya,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ia),La)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index b62e30fc..4e359f37 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -1,6 +1,6 @@ { "name": "@jsonql/ws", - "version": "0.6.0", + "version": "0.7.0", "description": "WS (WebSocket) jsonql client module for browser / node", "main": "dist/jsonql-ws.cjs.js", "browser": "dist/jsonql-ws.umd.js", -- Gitee From 0ef563a733233c5ff48bbcbacd59a11fc4a845a4 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 08:38:05 +0800 Subject: [PATCH 16/44] @jsonql/ws to 0.7.0 --- packages/@jsonql/ws/tests/ws-client-basic.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@jsonql/ws/tests/ws-client-basic.test.js b/packages/@jsonql/ws/tests/ws-client-basic.test.js index 64184786..9e52d47e 100644 --- a/packages/@jsonql/ws/tests/ws-client-basic.test.js +++ b/packages/@jsonql/ws/tests/ws-client-basic.test.js @@ -35,7 +35,7 @@ test.cb('It should able to connect to the ws server', t => { t.plan(2) let client = t.context.client - debug(client) + // debug(client) let ver = client.devHelpers.getVer() t.truthy(ver) -- Gitee From 06f8ffe761b288a6d8af98e118fdf7f21b0393be Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 09:47:58 +0800 Subject: [PATCH 17/44] Change the generator to set resolver into the base object as getter to avoid accidental overwrite --- packages/http-client/module.js | 8 +++++--- packages/ws-client/package.json | 2 +- packages/ws-client/src/core/generator.js | 10 ++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/http-client/module.js b/packages/http-client/module.js index 54ff55d4..184f8d41 100644 --- a/packages/http-client/module.js +++ b/packages/http-client/module.js @@ -16,14 +16,16 @@ export default function jsonqlClient(Fly, config) { // @NOTE we pass the socket client via the config, that save us the headache to try to dynamicly load the dep const { contract, socketClient, debugOn } = config; const ee = getEventEmitter(debugOn) - if (contract && isContract(contract)) { return jsonqlAync(ee, config, Fly) .then(client => { if (isObjectHasKey(contract, SOCKET_NAME) && hasProp(contract[SOCKET_NAME])) { config.eventEmitter = ee; // pass the event emitter - let ws = socketClient(config) - + return socketClient(config) + .then(sc => { + + }) + } return client; }) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 7f0f6ead..14d0284a 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.1.7", + "version": "1.2.0", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index 5406a29b..3030140b 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -9,7 +9,7 @@ import { createOnLoginhandler, createAuthMethods } from './resolver-methods' -import { getDebug } from '../utils' +import { getDebug, injectToFn } from '../utils' const debugFn = getDebug('generator') /** @@ -27,18 +27,20 @@ function getMappedObj(opts, nspMap, ee) { for (let resolverName in list) { let params = list[resolverName] let fn = createResolver(ee, namespace, resolverName, params) - obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee) + // this should set as a getter therefore can not be overwrite by accident + // obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee) + obj = injectToFn(obj, resolverName, setupResolver(namespace, resolverName, params, fn, ee)) } } // move this two method down to helpers - obj.devHelpers = { + const devHelpers = { // this is a helper method for the developer to know the namespace inside getNsp: () => Object.keys(nspSet), // simple get version trick getVer: () => opts.version || 'NOT SET' } // resolve the obj to start the chain - return Promise.resolve(obj) + return Promise.resolve(injectToFn(obj, 'devHelpers', devHelpers)) } /** -- Gitee From 33b3f536165ef8983748d8345e83c9190baaeb10 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 13:51:49 +0800 Subject: [PATCH 18/44] injectToFn for on api test passed --- .../@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- .../@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 2 +- packages/ws-client/src/core/generator.js | 3 +- .../ws-client/src/core/setup-callback-api.js | 36 ++++++++++++++++++- packages/ws-client/src/core/setup-resolver.js | 4 +-- packages/ws-client/src/options/constants.js | 5 ++- packages/ws-client/src/options/defaults.js | 1 + packages/ws-client/tests/event.test.js | 30 ++++++++++------ 9 files changed, 67 insertions(+), 18 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 7c56a30c..9a6fbe30 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 49b5b9a1..f47ac95a 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Vt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Ht(t,e){return t===e||t!=t&&e!=e}function Yt(t,e){for(var r=t.length;r--;)if(Ht(t[r][0],e))return r;return-1}var Gt=Array.prototype.splice;function Kt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Kt.prototype.set=function(t,e){var r=this.__data__,n=Yt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Xt="[object AsyncFunction]",Zt="[object Function]",te="[object GeneratorFunction]",ee="[object Proxy]";function re(t){if(!Qt(t))return!1;var e=it(t);return e==Zt||e==te||e==Xt||e==ee}var ne,oe=K["__core-js_shared__"],ae=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ie=Function.prototype.toString;function ue(t){if(null!=t){try{return ie.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,fe=Function.prototype,se=Object.prototype,le=fe.toString,pe=se.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ve(t){return!(!Qt(t)||(e=t,ae&&ae in e))&&(re(t)?he:ce).test(ue(t));var e}function de(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return ve(r)?r:void 0}var ge=de(K,"Map"),ye=de(Object,"create");var be="__lodash_hash_undefined__",_e=Object.prototype.hasOwnProperty;var me=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=Ye}function Ke(t){return null!=t&&Ge(t.length)&&!re(t)}var Qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xe=Qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Xe&&Xe.exports===Qe?K.Buffer:void 0,tr=(Ze?Ze.isBuffer:void 0)||function(){return!1},er={};er["[object Float32Array]"]=er["[object Float64Array]"]=er["[object Int8Array]"]=er["[object Int16Array]"]=er["[object Int32Array]"]=er["[object Uint8Array]"]=er["[object Uint8ClampedArray]"]=er["[object Uint16Array]"]=er["[object Uint32Array]"]=!0,er["[object Arguments]"]=er["[object Array]"]=er["[object ArrayBuffer]"]=er["[object Boolean]"]=er["[object DataView]"]=er["[object Date]"]=er["[object Error]"]=er["[object Function]"]=er["[object Map]"]=er["[object Number]"]=er["[object Object]"]=er["[object RegExp]"]=er["[object Set]"]=er["[object String]"]=er["[object WeakMap]"]=!1;var rr,nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr&&Y.process,ir=function(){try{var t=or&&or.require&&or.require("util").types;return t||ar&&ar.binding&&ar.binding("util")}catch(t){}}(),ur=ir&&ir.isTypedArray,cr=ur?(rr=ur,function(t){return rr(t)}):function(t){return ft(t)&&Ge(t.length)&&!!er[it(t)]};function fr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var sr=Object.prototype.hasOwnProperty;function lr(t,e,r){var n=t[e];sr.call(t,e)&&Ht(n,r)&&(void 0!==r||e in t)||Te(t,e,r)}var pr=9007199254740991,hr=/^(?:0|[1-9]\d*)$/;function vr(t,e){var r=typeof t;return!!(e=null==e?pr:e)&&("number"==r||"symbol"!=r&&hr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=$r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kr);function Nr(t,e){return Pr(function(t,e,r){return e=Er(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Er(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=zr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&vr(e,r.length):"string"==n&&e in r)&&Ht(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&tn?new Qr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Lo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Mo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Fo(r,t)})).length},Io=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Fo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Jr(r)||(!1!==(e=Lo(t))?!Wo({arg:r},e):!Mo(t)(r))})).length)})).length}return!1},Jo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Io.apply(null,n)};function Uo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Do=function(t,e){var r;switch(!0){case"object"===t:return!Jo(e);case"array"===t:return!Fo(e.arg);case!1!==(r=Lo(t)):return!Wo(e,r);default:return!Mo(t)(e.arg)}},Bo=function(t,e){return Jr(t)?!0!==e.optional||Jr(e.defaultvalue)?null:e.defaultvalue:t},Vo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Fo(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(!Fo(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 Uo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Uo(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:Uo(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?Bo(t,i):t,index:r,param:i,optional:a}}));default:throw Uo(5),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!!Eo(e)&&!(r.type.length>r.type.filter((function(e){return Do(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Do(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Ho=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Yo=function(t){return!Eo(t)};function Go(t,e){var r=So(e,(function(t,e){return!t[Co]}));return Vn(r,{})?t:function(t,e){var r={};return e=bo(e),Gr(t,(function(t,n,o){Te(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,bo((function(t){return t.alias===e})),Gr)||e}))}function Ko(t,e){return _o(e,(function(e,r){var n,o;return Jr(t[r])||!0===e[No]&&Yo(t[r])?xr({},e,((n={})[Ro]=!0,n)):((o={})[xo]=t[r],o[Po]=e[Po],o[No]=e[No]||!1,o[zo]=e[zo]||!1,o[qo]=e[qo]||!1,o)}))}function Qo(t,e){var r=function(t,e){var r=Go(t,e);return{pristineValues:_o(So(e,(function(t,e){return Ho(r,e)})),(function(t){return t.args})),checkAgainstAppProps:So(e,(function(t,e){return!Ho(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ko(n,r.checkAgainstAppProps),o]}var Xo=function(t){return Fo(t)?t:[t]};var Zo=function(t,e){return!Fo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ta=function(t,e){try{return!!re(e)&&e.apply(null,[t])}catch(t){return!1}};function ea(t){return function(e,r){if(e[Ro])return e[xo];var n=function(t,e){var r,n=[[t[xo]],[(r={},r[Po]=Xo(t[Po]),r[No]=t[No],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Uo("runValidationAction",r,e),new h(r,n);if(!1!==e[zo]&&!Zo(e[xo],e[zo]))throw Uo(zo,e[zo]),new p(r);if(!1!==e[qo]&&!ta(e[xo],e[qo]))throw Uo(qo,e[qo]),new v(r);return e[xo]}}var ra=function(t,e){return Promise.resolve(Qo(t,e))};function na(t,e,r,n){return void 0===t&&(t={}),ra(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=_o(r,ea(e));return xr(o,n)}(t,n)})).then((function(t){return xr({},t,r)}))}function oa(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Fo(n)&&(i[S]=n),re(o)&&(i[k]=o),Fr(a)&&(i[$]=a),i}var aa=$o,ia=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Vo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ua=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return oa.apply(null,[t,e,n,o,a,i])},ca=function(t){return function(e,r,n){return void 0===n&&(n={}),na(e,r,n,t)}}(Vo),fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Rr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Rr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=sa("respondHandler");function ja(t,e,r){Ut(t,y)?(wa("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(wa("-- resolver called --",t[g]),e(t[g])):(wa("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Oa=sa("action-call");function Sa(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Oa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Oa("got the first result",t),ja(t,n,o)}))}))}var Ea=sa("setup-send"),ka=function(t,e,r,n,o){return qr(t,"send",(function(t){Ea("got payload for",t),ia(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Sa(e,r,n,t);Ea("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){Ea("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ia(t,o.params,!0).then((function(t){return Sa(e,r,n,t)})).catch(U)}}))},$a=(sa("setup-resolver"),function(t,e,r,n,o){return[Cr(t,"myNamespace",r),e,r,n,o]}),Ta=function(t,e,r,n,o){return[qr(t,R,(function(t){Bt(t)&&e.$on(Dt(r,n,R),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Aa=function(t,e,r,n,o){return[qr(t,"onMessage",(function(t){if(Bt(t)){e.$only(Dt(r,n,"onMessage"),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Pa=function(t,e,r,n,o){return[qr(t,M,(function(t){Bt(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function Na(t,e,r,n,o){var a=[n,o,t,e,r],i=Vt($a,Ta,Aa,Pa,ka);return Reflect.apply(i,null,a)}var za=sa("resolver-methods");function xa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ia(o,n.params,!0).then((function(n){return Sa(t,e,r,n)})).catch(U)}}var qa;sa("generator");function Ca(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u],f=xa(r,a,u,c);n[u]=Na(a,u,c,f,r)}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}(t,e,r).then((function(t){return function(t,e,r){return qr(t,M,(function(t){if(Bt(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return qr(t,F,(function(t){Bt(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?qr(t,L,(function(t){Bt(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(za(r.loginHandlerName,t),t&&aa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ra={loginHandlerName:ua("login",["string"]),logoutHandlerName:ua("logout",["string"]),useJwt:ua(!0,["boolean","string"]),hostname:ua(!1,["string"]),namespace:ua(b,["string"]),wsOptions:ua({},["object"]),contract:ua({},["object"],(qa={},qa[k]=Ir,qa)),enableAuth:ua(!1,["boolean"]),token:ua(!1,["string"])},Ma=sa("check-options"),Fa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var La={version:"version: 0.7.0 module: umd",serverType:"ws"},Wa=null;"undefined"!=typeof WebSocket?Wa=WebSocket:"undefined"!=typeof MozWebSocket?Wa=MozWebSocket:void 0!==u?Wa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Wa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Wa=self.WebSocket||self.MozWebSocket);var Ia=Wa,Ja=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 Ua(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ja(e))}:function(e,r){var n=Ja(e),o=r&&"string"==typeof r?n+"?"+W+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Da(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ba=sa("client-event-handler"),Va=function(t,e){e.$only(Dt(t,B),(function(r,n){Ba("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},Ha=function(t){return t.length>1&&t[0]};function Ya(t,e,r,n,o,a){var i=Ha(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){Ba("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Va(o,r)})),r.$on(P,(function(){Ba("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Va(t,r)}))}))}var Ga=["__reply__","__event__","__data__"],Ka=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Ga.filter((function(t){return Ut(e,t)})).length===Ga.length&&e)}(aa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new I("payload can not be decoded",t)},Qa=sa("ws-main-handler"),Xa="onMessage",Za=R,ti=B,ei=function(t,e,r,n){var o=[e];r&&(Qa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ri(t,e,r,n){e.onopen=function(){Qa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ti),(function(t,r){Qa("calling server",t,r),e.send(Wr(t,r))}))},e.onmessage=function(e){try{var n=Ka(e),o=n.resolverName,a=n.type;switch(Qa("Hear from server",a,n),a){case N:var i=Dt(t,o,Xa),u=r.$trigger(i,[n]);Qa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,Za);r.$trigger(c,[n]);Qa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Qa("ERROR_TYPE"),ei(r,t,o,n);break;default:Qa("Unhandled event!",n),ei(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ei(r,t,!1,e)}},e.onclose=function(){Qa("ws.onclose callback")},r.$on(P,(function(){try{Qa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var ni=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=Da(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]=Da(!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 function(t,e){return ca(t,Ra,Object.assign(Fa,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Ma("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ca(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ua(t),r=Ua(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ri],o=t.token,a=ni(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ya,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=ni(t,e,o);Reflect.apply(Ya,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ia),La)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Vt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Ht(t,e){return t===e||t!=t&&e!=e}function Yt(t,e){for(var r=t.length;r--;)if(Ht(t[r][0],e))return r;return-1}var Gt=Array.prototype.splice;function Kt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Kt.prototype.set=function(t,e){var r=this.__data__,n=Yt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Xt="[object AsyncFunction]",Zt="[object Function]",te="[object GeneratorFunction]",ee="[object Proxy]";function re(t){if(!Qt(t))return!1;var e=it(t);return e==Zt||e==te||e==Xt||e==ee}var ne,oe=K["__core-js_shared__"],ae=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ie=Function.prototype.toString;function ue(t){if(null!=t){try{return ie.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,fe=Function.prototype,se=Object.prototype,le=fe.toString,pe=se.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ve(t){return!(!Qt(t)||(e=t,ae&&ae in e))&&(re(t)?he:ce).test(ue(t));var e}function de(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return ve(r)?r:void 0}var ge=de(K,"Map"),ye=de(Object,"create");var be="__lodash_hash_undefined__",_e=Object.prototype.hasOwnProperty;var me=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=Ye}function Ke(t){return null!=t&&Ge(t.length)&&!re(t)}var Qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xe=Qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Xe&&Xe.exports===Qe?K.Buffer:void 0,tr=(Ze?Ze.isBuffer:void 0)||function(){return!1},er={};er["[object Float32Array]"]=er["[object Float64Array]"]=er["[object Int8Array]"]=er["[object Int16Array]"]=er["[object Int32Array]"]=er["[object Uint8Array]"]=er["[object Uint8ClampedArray]"]=er["[object Uint16Array]"]=er["[object Uint32Array]"]=!0,er["[object Arguments]"]=er["[object Array]"]=er["[object ArrayBuffer]"]=er["[object Boolean]"]=er["[object DataView]"]=er["[object Date]"]=er["[object Error]"]=er["[object Function]"]=er["[object Map]"]=er["[object Number]"]=er["[object Object]"]=er["[object RegExp]"]=er["[object Set]"]=er["[object String]"]=er["[object WeakMap]"]=!1;var rr,nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr&&Y.process,ir=function(){try{var t=or&&or.require&&or.require("util").types;return t||ar&&ar.binding&&ar.binding("util")}catch(t){}}(),ur=ir&&ir.isTypedArray,cr=ur?(rr=ur,function(t){return rr(t)}):function(t){return ft(t)&&Ge(t.length)&&!!er[it(t)]};function fr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var sr=Object.prototype.hasOwnProperty;function lr(t,e,r){var n=t[e];sr.call(t,e)&&Ht(n,r)&&(void 0!==r||e in t)||Te(t,e,r)}var pr=9007199254740991,hr=/^(?:0|[1-9]\d*)$/;function vr(t,e){var r=typeof t;return!!(e=null==e?pr:e)&&("number"==r||"symbol"!=r&&hr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=$r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kr);function Nr(t,e){return Pr(function(t,e,r){return e=Er(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Er(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=zr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&vr(e,r.length):"string"==n&&e in r)&&Ht(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&tn?new Qr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Lo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Mo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Fo(r,t)})).length},Io=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Fo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Jr(r)||(!1!==(e=Lo(t))?!Wo({arg:r},e):!Mo(t)(r))})).length)})).length}return!1},Jo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Io.apply(null,n)};function Uo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Do=function(t,e){var r;switch(!0){case"object"===t:return!Jo(e);case"array"===t:return!Fo(e.arg);case!1!==(r=Lo(t)):return!Wo(e,r);default:return!Mo(t)(e.arg)}},Bo=function(t,e){return Jr(t)?!0!==e.optional||Jr(e.defaultvalue)?null:e.defaultvalue:t},Vo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Fo(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(!Fo(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 Uo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Uo(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:Uo(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?Bo(t,i):t,index:r,param:i,optional:a}}));default:throw Uo(5),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!!Eo(e)&&!(r.type.length>r.type.filter((function(e){return Do(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Do(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Ho=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Yo=function(t){return!Eo(t)};function Go(t,e){var r=So(e,(function(t,e){return!t[Co]}));return Vn(r,{})?t:function(t,e){var r={};return e=bo(e),Gr(t,(function(t,n,o){Te(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,bo((function(t){return t.alias===e})),Gr)||e}))}function Ko(t,e){return _o(e,(function(e,r){var n,o;return Jr(t[r])||!0===e[No]&&Yo(t[r])?xr({},e,((n={})[Ro]=!0,n)):((o={})[xo]=t[r],o[Po]=e[Po],o[No]=e[No]||!1,o[zo]=e[zo]||!1,o[qo]=e[qo]||!1,o)}))}function Qo(t,e){var r=function(t,e){var r=Go(t,e);return{pristineValues:_o(So(e,(function(t,e){return Ho(r,e)})),(function(t){return t.args})),checkAgainstAppProps:So(e,(function(t,e){return!Ho(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ko(n,r.checkAgainstAppProps),o]}var Xo=function(t){return Fo(t)?t:[t]};var Zo=function(t,e){return!Fo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ta=function(t,e){try{return!!re(e)&&e.apply(null,[t])}catch(t){return!1}};function ea(t){return function(e,r){if(e[Ro])return e[xo];var n=function(t,e){var r,n=[[t[xo]],[(r={},r[Po]=Xo(t[Po]),r[No]=t[No],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Uo("runValidationAction",r,e),new h(r,n);if(!1!==e[zo]&&!Zo(e[xo],e[zo]))throw Uo(zo,e[zo]),new p(r);if(!1!==e[qo]&&!ta(e[xo],e[qo]))throw Uo(qo,e[qo]),new v(r);return e[xo]}}var ra=function(t,e){return Promise.resolve(Qo(t,e))};function na(t,e,r,n){return void 0===t&&(t={}),ra(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=_o(r,ea(e));return xr(o,n)}(t,n)})).then((function(t){return xr({},t,r)}))}function oa(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Fo(n)&&(i[S]=n),re(o)&&(i[k]=o),Fr(a)&&(i[$]=a),i}var aa=$o,ia=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Vo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ua=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return oa.apply(null,[t,e,n,o,a,i])},ca=function(t){return function(e,r,n){return void 0===n&&(n={}),na(e,r,n,t)}}(Vo),fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Rr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Rr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=sa("respondHandler");function ja(t,e,r){Ut(t,y)?(wa("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(wa("-- resolver called --",t[g]),e(t[g])):(wa("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Oa=sa("action-call");function Sa(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Oa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Oa("got the first result",t),ja(t,n,o)}))}))}var Ea=sa("setup-send"),ka=function(t,e,r,n,o){return qr(t,"send",(function(t){Ea("got payload for",t),ia(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Sa(e,r,n,t);Ea("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){Ea("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ia(t,o.params,!0).then((function(t){return Sa(e,r,n,t)})).catch(U)}}))},$a=(sa("setup-resolver"),function(t,e,r,n,o){return[Cr(t,"myNamespace",r),e,r,n,o]}),Ta=function(t,e,r,n,o){return[qr(t,R,(function(t){Bt(t)&&e.$on(Dt(r,n,R),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Aa=function(t,e,r,n,o){return[qr(t,"onMessage",(function(t){if(Bt(t)){e.$only(Dt(r,n,"onMessage"),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Pa=function(t,e,r,n,o){return[qr(t,M,(function(t){Bt(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function Na(t,e,r,n,o){var a=[n,o,t,e,r],i=Vt($a,Ta,Aa,Pa,ka);return Reflect.apply(i,null,a)}var za=sa("resolver-methods");function xa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ia(o,n.params,!0).then((function(n){return Sa(t,e,r,n)})).catch(U)}}var qa;sa("generator");function Ca(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u];n=Cr(n,u,Na(a,u,c,xa(r,a,u,c),r))}}var f={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}};return Promise.resolve(Cr(n,"devHelpers",f))}(t,e,r).then((function(t){return function(t,e,r){return qr(t,M,(function(t){if(Bt(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return qr(t,F,(function(t){Bt(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?qr(t,L,(function(t){Bt(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(za(r.loginHandlerName,t),t&&aa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ra={loginHandlerName:ua("login",["string"]),logoutHandlerName:ua("logout",["string"]),useJwt:ua(!0,["boolean","string"]),hostname:ua(!1,["string"]),namespace:ua(b,["string"]),wsOptions:ua({},["object"]),contract:ua({},["object"],(qa={},qa[k]=Ir,qa)),enableAuth:ua(!1,["boolean"]),token:ua(!1,["string"])},Ma=sa("check-options"),Fa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var La={version:"version: 0.7.0 module: umd",serverType:"ws"},Wa=null;"undefined"!=typeof WebSocket?Wa=WebSocket:"undefined"!=typeof MozWebSocket?Wa=MozWebSocket:void 0!==u?Wa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Wa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Wa=self.WebSocket||self.MozWebSocket);var Ia=Wa,Ja=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 Ua(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ja(e))}:function(e,r){var n=Ja(e),o=r&&"string"==typeof r?n+"?"+W+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Da(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ba=sa("client-event-handler"),Va=function(t,e){e.$only(Dt(t,B),(function(r,n){Ba("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},Ha=function(t){return t.length>1&&t[0]};function Ya(t,e,r,n,o,a){var i=Ha(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){Ba("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Va(o,r)})),r.$on(P,(function(){Ba("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Va(t,r)}))}))}var Ga=["__reply__","__event__","__data__"],Ka=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Ga.filter((function(t){return Ut(e,t)})).length===Ga.length&&e)}(aa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new I("payload can not be decoded",t)},Qa=sa("ws-main-handler"),Xa="onMessage",Za=R,ti=B,ei=function(t,e,r,n){var o=[e];r&&(Qa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ri(t,e,r,n){e.onopen=function(){Qa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ti),(function(t,r){Qa("calling server",t,r),e.send(Wr(t,r))}))},e.onmessage=function(e){try{var n=Ka(e),o=n.resolverName,a=n.type;switch(Qa("Hear from server",a,n),a){case N:var i=Dt(t,o,Xa),u=r.$trigger(i,[n]);Qa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,Za);r.$trigger(c,[n]);Qa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Qa("ERROR_TYPE"),ei(r,t,o,n);break;default:Qa("Unhandled event!",n),ei(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ei(r,t,!1,e)}},e.onclose=function(){Qa("ws.onclose callback")},r.$on(P,(function(){try{Qa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var ni=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=Da(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]=Da(!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 function(t,e){return ca(t,Ra,Object.assign(Fa,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Ma("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ca(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ua(t),r=Ua(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ri],o=t.token,a=ni(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ya,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=ni(t,e,o);Reflect.apply(Ya,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ia),La)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 4e359f37..9d207b0a 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -42,7 +42,7 @@ "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.8.0", - "jsonql-ws-client": "^1.1.7", + "jsonql-ws-client": "^1.2.0", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index 3030140b..bfecf0de 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -22,6 +22,7 @@ const debugFn = getDebug('generator') function getMappedObj(opts, nspMap, ee) { let obj = {}; const { nspSet } = nspMap; + const { useCallbackStyle } = opts; // @1.2.1 for (let namespace in nspSet) { let list = nspSet[namespace] for (let resolverName in list) { @@ -29,7 +30,7 @@ function getMappedObj(opts, nspMap, ee) { let fn = createResolver(ee, namespace, resolverName, params) // this should set as a getter therefore can not be overwrite by accident // obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee) - obj = injectToFn(obj, resolverName, setupResolver(namespace, resolverName, params, fn, ee)) + obj = injectToFn(obj, resolverName, setupResolver(namespace, resolverName, params, fn, ee, useCallbackStyle)) } } // move this two method down to helpers diff --git a/packages/ws-client/src/core/setup-callback-api.js b/packages/ws-client/src/core/setup-callback-api.js index d1a8465a..73432083 100644 --- a/packages/ws-client/src/core/setup-callback-api.js +++ b/packages/ws-client/src/core/setup-callback-api.js @@ -1,6 +1,40 @@ // @TODO using the obj.on syntax to do the same thing +/* +The new callback style `useCallbackStyle` set to true then use this one +client.resolverName.on(EVENT_NAME, cb) +*/ +import { JsonqlValidationError, finalCatch } from 'jsonql-errors' +import { + ERROR_TYPE, + DATA_KEY, + ERROR_KEY, -export function setupCallbackApi() { + ERROR_PROP_NAME, + MESSAGE_PROP_NAME, + RESULT_PROP_NAME, + READY_PROP_NAME, + + LOGIN_EVENT_NAME, + LOGOUT_EVENT_NAME +} from 'jsonql-constants' +import { CB_FN_NAME } from '../options/constants' +import { chainFns, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' + +import { respondHandler } from './respond-handler' +import { getDebug } from '../utils' +const debugFn = getDebug('setup-resolver') + +/** + * Add extra property to the resolver via the getter + * @param {function} fn the resolver itself + * @param {object} ee event emitter + * @param {string} namespace the namespace this belongs to + * @param {string} resolverName resolver namee + * @param {object} params from the contract + * @return {function} resolver + */ +export function setupCallbackApi(fn, ee, namespace, resolverName, params) { + return injectToFn(fn, CB_FN_NAME, ) } diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index 423fed3b..a11a0604 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -95,10 +95,10 @@ const setupOnError = (fn, ee, namespace, resolverName, params) => [ * @param {object} params from contract * @param {function} fn resolver function * @param {object} ee EventEmitter - * @TODO need a new parameter here + * @param {boolean} useCallbackStyle new callback style * @return {function} resolver */ -export function setupResolver(namespace, resolverName, params, fn, ee) { +export function setupResolver(namespace, resolverName, params, fn, ee, useCallbackStyle) { // also need to setup a getter to get back the namespace of this resolver const args = [fn, ee, namespace, resolverName, params] const exe = chainFns(setupNamespace, setupOnResult, setupOnMessage, setupOnError, setupSend) diff --git a/packages/ws-client/src/options/constants.js b/packages/ws-client/src/options/constants.js index 6680c0fe..34a9b5fc 100644 --- a/packages/ws-client/src/options/constants.js +++ b/packages/ws-client/src/options/constants.js @@ -31,6 +31,8 @@ const NOT_ALLOW_OP = 'This operation is not allow!'; const MY_NAMESPACE = 'myNamespace' +const CB_FN_NAME = 'on' + export { SOCKET_IO, WS, @@ -45,5 +47,6 @@ export { NAMESPACE_KEY, UNKNOWN_RESULT, NOT_ALLOW_OP, - MY_NAMESPACE + MY_NAMESPACE, + CB_FN_NAME } diff --git a/packages/ws-client/src/options/defaults.js b/packages/ws-client/src/options/defaults.js index 66f78f0d..d826e961 100644 --- a/packages/ws-client/src/options/defaults.js +++ b/packages/ws-client/src/options/defaults.js @@ -15,6 +15,7 @@ import { import { AVAILABLE_SERVERS } from './constants' const defaultOptions = { + useCallbackStyle: createConfig(false, [BOOLEAN_TYPE]), loginHandlerName: createConfig(ISSUER_NAME, [STRING_TYPE]), logoutHandlerName: createConfig(LOGOUT_NAME, [STRING_TYPE]), // we will use this for determine the socket.io client type as well diff --git a/packages/ws-client/tests/event.test.js b/packages/ws-client/tests/event.test.js index 688d9567..126ab1e3 100644 --- a/packages/ws-client/tests/event.test.js +++ b/packages/ws-client/tests/event.test.js @@ -2,7 +2,14 @@ const test = require('ava') const NbEventService = require('nb-event-service') const debug = require('debug')('jsonql-ws-client:test:event') -const { objDefineProps } = require('jsonql-utils') +const { objDefineProps, injectToFn } = require('jsonql-utils') + +// share methods between two test +const getter = function() { + return function(...args) { + return args.reduce((a, b) => a + b, 0) + } +} test.before(t => { t.context.evt = new NbEventService({logger: debug}) @@ -57,22 +64,25 @@ test.cb(`Test the object getter to return a function to create a new on interfac }) }) -test(`Test another way to pass parameters to the getter then try to get a value back`, t => { +// 1 +test(`Test another way to pass parameters to the getter then try to get a value back`, t => { const setter = function(value) { console.log(value) } - - const getter = function() { - return function(...args) { - return args.reduce((a, b) => a + b, 0) - } - } - let obj = {} obj = objDefineProps(obj, 'add', setter, getter) - const result = obj.add(1,2) t.is(3, result, '1+2=3') +}) + +// 2 +test(`Try to use the injectToFn to set the on as just a value getter`, t => { + let obj = {} + // The different is - we can directly add a function instead of func return func + obj = injectToFn(obj, 'add', getter()) + + const result = obj.add(1,1) + t.is(2, result, '1+1=2') }) -- Gitee From f1263b5887b2d2008ef4d55715ffaa536b164e5a Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 14:02:16 +0800 Subject: [PATCH 19/44] setup the basic interface and output --- .../ws-client/src/core/setup-callback-api.js | 29 ++++++++++++------- packages/ws-client/src/core/setup-resolver.js | 5 +--- packages/ws-client/src/utils/index.js | 5 ++-- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/ws-client/src/core/setup-callback-api.js b/packages/ws-client/src/core/setup-callback-api.js index 73432083..52cc05be 100644 --- a/packages/ws-client/src/core/setup-callback-api.js +++ b/packages/ws-client/src/core/setup-callback-api.js @@ -8,20 +8,14 @@ import { ERROR_TYPE, DATA_KEY, ERROR_KEY, - ERROR_PROP_NAME, MESSAGE_PROP_NAME, - RESULT_PROP_NAME, - READY_PROP_NAME, - - LOGIN_EVENT_NAME, - LOGOUT_EVENT_NAME + RESULT_PROP_NAME } from 'jsonql-constants' import { CB_FN_NAME } from '../options/constants' -import { chainFns, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' import { respondHandler } from './respond-handler' -import { getDebug } from '../utils' +import { getDebug, chainFns, injectToFn, createEvt, toArray, isFunc, isString } from '../utils' const debugFn = getDebug('setup-resolver') /** @@ -31,10 +25,25 @@ const debugFn = getDebug('setup-resolver') * @param {string} namespace the namespace this belongs to * @param {string} resolverName resolver namee * @param {object} params from the contract - * @return {function} resolver + * @return {array} same as what goes in */ export function setupCallbackApi(fn, ee, namespace, resolverName, params) { - return injectToFn(fn, CB_FN_NAME, ) + return [ + injectToFn(fn, CB_FN_NAME, function(evtName, callback) { + if (isString(evtName) && isFunc(callback)) { + switch(evtName) { + case RESULT_PROP_NAME: + + case MESSAGE_PROP_NAME: + case READY_PROP_NAME: + } + } + }), + ee, + namespace, + resolverName, + params + ] } diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index a11a0604..6dc26bae 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -6,10 +6,7 @@ import { ERROR_KEY, ON_ERROR_PROP_NAME, ON_MESSAGE_PROP_NAME, - ON_RESULT_PROP_NAME, - LOGIN_EVENT_NAME, - ON_READY_PROP_NAME, - LOGOUT_EVENT_NAME + ON_RESULT_PROP_NAME } from 'jsonql-constants' import { MY_NAMESPACE } from '../options/constants' import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' diff --git a/packages/ws-client/src/utils/index.js b/packages/ws-client/src/utils/index.js index bc9ff621..41055c10 100644 --- a/packages/ws-client/src/utils/index.js +++ b/packages/ws-client/src/utils/index.js @@ -1,5 +1,5 @@ // export the util methods -import { isArray } from 'jsonql-params-validator' +import { isArray, isString } from 'jsonql-params-validator' // moved to jsonql-utils import { toArray, createEvt, injectToFn, objDefineProps, isFunc, isObjectHasKey } from 'jsonql-utils/module' @@ -16,7 +16,8 @@ import { // export export { isArray, - + isString, + toArray, createEvt, injectToFn, -- Gitee From 88bf728f09c69f65bfa86974b1fce89086491156 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 14:23:12 +0800 Subject: [PATCH 20/44] finish the new setup-callback-api base --- .../ws-client/src/core/setup-callback-api.js | 34 ++++++++++++++++--- packages/ws-client/src/core/setup-resolver.js | 10 ++++-- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/packages/ws-client/src/core/setup-callback-api.js b/packages/ws-client/src/core/setup-callback-api.js index 52cc05be..e26c7f7c 100644 --- a/packages/ws-client/src/core/setup-callback-api.js +++ b/packages/ws-client/src/core/setup-callback-api.js @@ -3,7 +3,7 @@ The new callback style `useCallbackStyle` set to true then use this one client.resolverName.on(EVENT_NAME, cb) */ -import { JsonqlValidationError, finalCatch } from 'jsonql-errors' +import { JsonqlValidationError, JsonqlError, finalCatch } from 'jsonql-errors' import { ERROR_TYPE, DATA_KEY, @@ -33,11 +33,37 @@ export function setupCallbackApi(fn, ee, namespace, resolverName, params) { if (isString(evtName) && isFunc(callback)) { switch(evtName) { case RESULT_PROP_NAME: - + ee.$on( + createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), + function resultHandler(result) { + respondHandler(result, callback, (error) => { + ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error) + }) + } + ) + break; + // register the handler for this message event case MESSAGE_PROP_NAME: - + ee.$only( + createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME), + function onMessageCallback(args) { + respondHandler(args, callback, (error) => { + ee.$trigger(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), error) + }) + } + ) + break; case READY_PROP_NAME: - + ee.$only( + createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + callback + ) + break; + default: + ee.$trigger( + createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + new JsonqlError(resolverName, `Unknown event name ${evtName}!`) + ) } } }), diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index 6dc26bae..64895691 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -16,6 +16,7 @@ import { getDebug } from '../utils' const debugFn = getDebug('setup-resolver') import { setupSend } from './setup-send' +import { setupCallbackApi } from './setup-callback-api' /** * The first one in the chain @@ -97,8 +98,11 @@ const setupOnError = (fn, ee, namespace, resolverName, params) => [ */ export function setupResolver(namespace, resolverName, params, fn, ee, useCallbackStyle) { // also need to setup a getter to get back the namespace of this resolver - const args = [fn, ee, namespace, resolverName, params] - const exe = chainFns(setupNamespace, setupOnResult, setupOnMessage, setupOnError, setupSend) + let args = [setupNamespace] + useCallbackStyle ? args.push(setupCallbackApi) : args.push(setupOnResult, setupOnMessage, setupOnError) + args.push(setupSend) + // get the executor + const executor = Reflect.apply(chainFns, null, args) // debug(exe) - return Reflect.apply(exe, null, args) + return Reflect.apply(executor, null, [fn, ee, namespace, resolverName, params]) } -- Gitee From 71fe4c7f45ea5ed9dc416fbdaa36e22380f44a31 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 14:26:35 +0800 Subject: [PATCH 21/44] add new test to try out the new callback style interface --- packages/ws-client/tests/on.test.js | 140 ++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 packages/ws-client/tests/on.test.js diff --git a/packages/ws-client/tests/on.test.js b/packages/ws-client/tests/on.test.js new file mode 100644 index 00000000..c9dfb05f --- /dev/null +++ b/packages/ws-client/tests/on.test.js @@ -0,0 +1,140 @@ +// test the new on api + +/// 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') + +const serverSetup = require('./fixtures/server-setup') +const genToken = require('./fixtures/token') + +const jsonqlWsClient = require('./fixtures/beta/jsonql-ws-client') +const wsClient = jsonqlWsClient.default || jsonqlWsClient + +const contractDir = join(__dirname, 'fixtures', 'contract', 'auth') +const contract = fsx.readJsonSync(join(contractDir, 'contract.json')) +const publicContract = fsx.readJsonSync(join(contractDir, 'public-contract.json')) + + +import { + NOT_LOGIN_ERR_MSG, + JS_WS_NAME, + + ERROR_TYPE, + DATA_KEY, + ERROR_KEY, + ON_ERROR_PROP_NAME, + ON_MESSAGE_PROP_NAME, + ON_RESULT_PROP_NAME, + + ERROR_PROP_NAME, + MESSAGE_PROP_NAME, + RESULT_PROP_NAME, + + ON_LOGIN_PROP_NAME, + SEND_MSG_PROP_NAME, + LOGIN_EVENT_NAME, + ON_READY_PROP_NAME, + LOGOUT_EVENT_NAME +} from 'jsonql-constants' + + +const payload = {name: 'Joel'}; +const token = genToken(payload) +const port = 8011; +const url = `ws://localhost:${port}` + +/// PREPARE TEST /// +test.before(async t => { + const { io, app } = await serverSetup({ + contract, + contractDir, + resolverDir: join(__dirname, 'fixtures', 'resolvers'), + serverType: JS_WS_NAME, + enableAuth: true, + keysDir: join(__dirname, 'fixtures', 'keys') + }) + + t.context.server = app.listen(port) + + t.context.client = await wsClient({ + contract, + hostname: url, + enableAuth: true, + useCallbackStyle: true + }) +}) + +test.after( t => { + t.context.server.close() +}) + +// real test start here +test.serial('It should able to create the WebSocket client object', t => { + + const client = t.context.client; + + t.truthy(client) + t.true(typeof client.pinging === 'function') + /// test individual properties + t.falsy( Object.getOwnPropertyDescriptor(client.pinging, ON_ERROR_PROP_NAME), `has ${ON_ERROR_PROP_NAME} prop`) + t.falsy( Object.getOwnPropertyDescriptor(client.pinging, ON_MESSAGE_PROP_NAME), `has ${ON_MESSAGE_PROP_NAME} prop`) + t.falsy( Object.getOwnPropertyDescriptor(client.pinging, ON_RESULT_PROP_NAME), `has ${ON_RESULT_PROP_NAME} prop`) + + t.truthy( Object.getOwnPropertyDescriptor(client.pinging, SEND_MSG_PROP_NAME), `has ${SEND_MSG_PROP_NAME} prop`) + + t.falsy( Object.getOwnPropertyDescriptor(client, ON_READY_PROP_NAME), `the client object should have ${ON_READY_PROP_NAME} prop`) + t.falsy( Object.getOwnPropertyDescriptor(client, ON_LOGIN_PROP_NAME), `the client object should have ${ON_LOGIN_PROP_NAME} prop`) + +}) + +test.serial.cb('The ws client can connect to the WebSocket server public interface', t => { + t.plan(3) + let ctn = 0; + const client = t.context.client; + + client.onReady = function testOnReadyCallback() { + debug(`onReady executed`) + } + + client.pinging.onResult = function testonResultCallback(result) { + ++ctn + debug(`[${ctn}] result`, result) + t.pass() + } + + client.pinging.onError = function testOnErrorCallback(err) { + ++ctn; + debug(`[got error]`, err.error.detail[0]) + t.pass() + } + + debug(`${ON_MESSAGE_PROP_NAME}`) + client.pinging.onMessage = function testOnMessageCallback(msg) { + ++ctn; + debug(`[${ctn}] ${ON_MESSAGE_PROP_NAME}`, msg) + t.pass() + t.end() + } + + client.pinging('xxx') + .then(msg => { + ++ctn; + // @NOTE perhaps I should consider when return the + // the promise, I could also return the socket object for use as well + debug(`${ctn} Success`, msg) + t.pass() + // t.end() + + client.pinging.send = 'ping' + + }) + .catch(err => { + debug('ERROR!', err) + t.pass() + // t.end() + }) +}) -- Gitee From 6d8651cb22b1c19cd8bab3f6fb9568f20f7e01e0 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 14:45:03 +0800 Subject: [PATCH 22/44] update the login and logut method setup to be a getter within the obj instance --- packages/ws-client/src/core/generator.js | 1 + .../ws-client/src/core/resolver-methods.js | 59 +++++++++++++------ packages/ws-client/tests/on.test.js | 1 - 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index bfecf0de..33c272f4 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -54,6 +54,7 @@ function getMappedObj(opts, nspMap, ee) { */ export function generator(opts, nspMap, ee) { const { nspSet } = nspMap + const { useCallbackStyle } = opts; return getMappedObj(opts, nspMap, ee) // add error handler .then(obj1 => createNamespaceErrorHandler(obj1, ee, nspSet)) diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 31226ad6..7f66fe43 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -10,6 +10,10 @@ import { JsonqlValidationError, finalCatch } from 'jsonql-errors' import { validateAsync, isString } from 'jsonql-params-validator' import { + ERROR_PROP_NAME, + LOGIN_PROP_NAME, + READY_PROP_NAME, + ON_ERROR_PROP_NAME, ON_LOGIN_PROP_NAME, ON_READY_PROP_NAME, @@ -23,10 +27,11 @@ import { toArray, injectToFn, objDefineProps, + chainFns, isFunc, isObjectHasKey } from '../utils' - +import { CB_FN_NAME } from '../options/constants' const debugFn = getDebug('resolver-methods') /** @@ -52,9 +57,10 @@ export function createResolver(ee, namespace, resolverName, params) { * @param {object} obj the client itself * @param {object} ee Event Emitter * @param {object} nspSet namespace keys + * @param {boolean} useCallbackStyle use cb or not * @return {object} obj with onError prop */ -export function createNamespaceErrorHandler(obj, ee, nspSet) { +export function createNamespaceErrorHandler(obj, ee, nspSet, useCallbackStyle) { // using the onError as name // @TODO we should follow the convention earlier // make this a setter for the obj itself @@ -77,7 +83,7 @@ export function createNamespaceErrorHandler(obj, ee, nspSet) { * @param {object} nspSet namespace keys * @return {object} obj with onReady prop */ -export function createOnReadyhandler(obj, ee, nspSet) { +export function createOnReadyhandler(obj, ee, nspSet, useCallbackStyle) { return objDefineProps(obj, ON_READY_PROP_NAME, function(onReadyCallback) { if (isFunc(onReadyCallback)) { // reduce it down to just one flat level @@ -94,7 +100,7 @@ export function createOnReadyhandler(obj, ee, nspSet) { * @param {object} opts configuration * @return {object} obj with onLogin prop */ -export function createOnLoginhandler(obj, ee, opts) { +export function createOnLoginhandler(obj, ee, opts, useCallbackStyle) { if (opts.enableAuth) { return objDefineProps(obj, ON_LOGIN_PROP_NAME, function(onLoginCallback) { if (isFunc(onLoginCallback)) { @@ -107,6 +113,37 @@ export function createOnLoginhandler(obj, ee, opts) { return obj } +/** + * break out from createAuthMethods to allow chaining call + * @param {object} obj the main client object + * @param {object} ee event emitter + * @param {object} opts configuration + * @return {array} modified input + */ +const setupLoginHandler = (obj, ee, opts) => [ + injectToFn(obj, opts.loginHandlerName, function loginHandler(token) { + if (token && isString(token)) { + return ee.$trigger(LOGIN_EVENT_NAME, [token]) + } + throw new JsonqlValidationError(opts.loginHandlerName, `Unexpected token ${token}`) + }), + ee, + opts +] + +/** + * break out from createAuthMethods to allow chaining call - final in chain + * @param {object} obj the main client object + * @param {object} ee event emitter + * @param {object} opts configuration + * @return {object} the modified obj + */ +const setupLogoutHandler = (obj, ee, opts) => [ + injectToFn(obj, opts.logoutHandlerName, function logoutHandler(...args) { + ee.$trigger(LOGOUT_EVENT_NAME, args) + }) +] + /** * Create auth related methods * @param {object} obj the client itself @@ -116,19 +153,7 @@ export function createOnLoginhandler(obj, ee, opts) { */ export function createAuthMethods(obj, ee, opts) { if (opts.enableAuth) { - // create an additonal login handler - // we require the token - obj[opts.loginHandlerName] = (token) => { - debugFn(opts.loginHandlerName, token) - if (token && isString(token)) { - return ee.$trigger(LOGIN_EVENT_NAME, [token]) - } - throw new JsonqlValidationError(opts.loginHandlerName) - } - // logout event handler - obj[opts.logoutHandlerName] = (...args) => { - ee.$trigger(LOGOUT_EVENT_NAME, args) - } + return chainFns(setupLoginHandler, setupLogoutHandler)(obj, ee, opts) } return obj; } diff --git a/packages/ws-client/tests/on.test.js b/packages/ws-client/tests/on.test.js index c9dfb05f..7a61dab4 100644 --- a/packages/ws-client/tests/on.test.js +++ b/packages/ws-client/tests/on.test.js @@ -18,7 +18,6 @@ const contractDir = join(__dirname, 'fixtures', 'contract', 'auth') const contract = fsx.readJsonSync(join(contractDir, 'contract.json')) const publicContract = fsx.readJsonSync(join(contractDir, 'public-contract.json')) - import { NOT_LOGIN_ERR_MSG, JS_WS_NAME, -- Gitee From c306492dd163662f0cf1331fb28b2aca43b49247 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 15:17:08 +0800 Subject: [PATCH 23/44] the login and logout method put back to the old style for now --- packages/ws-client/src/core/generator.js | 9 +++++++-- .../ws-client/src/core/resolver-methods.js | 19 +++++++++++++++++-- packages/ws-client/src/utils/index.js | 15 +++++++++++++-- packages/ws-client/tests/on.test.js | 4 ++-- packages/ws-client/tests/test-node.test.js | 6 ++++-- 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index 33c272f4..55245e96 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -21,11 +21,13 @@ const debugFn = getDebug('generator') */ function getMappedObj(opts, nspMap, ee) { let obj = {}; + // let resolverNames = []; const { nspSet } = nspMap; const { useCallbackStyle } = opts; // @1.2.1 for (let namespace in nspSet) { let list = nspSet[namespace] for (let resolverName in list) { + // resolverNames.push(resolverName) let params = list[resolverName] let fn = createResolver(ee, namespace, resolverName, params) // this should set as a getter therefore can not be overwrite by accident @@ -34,14 +36,17 @@ function getMappedObj(opts, nspMap, ee) { } } // move this two method down to helpers - const devHelpers = { + // we want these methods visible in debug or console.log + obj.devHelpers = { // this is a helper method for the developer to know the namespace inside getNsp: () => Object.keys(nspSet), // simple get version trick getVer: () => opts.version || 'NOT SET' + // not really necessary because the dev can query the contract + // getResolverNames: () => resolverNames } // resolve the obj to start the chain - return Promise.resolve(injectToFn(obj, 'devHelpers', devHelpers)) + return Promise.resolve(obj) } /** diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 7f66fe43..83a929ac 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -136,7 +136,7 @@ const setupLoginHandler = (obj, ee, opts) => [ * @param {object} obj the main client object * @param {object} ee event emitter * @param {object} opts configuration - * @return {object} the modified obj + * @return {object} the modified obj */ const setupLogoutHandler = (obj, ee, opts) => [ injectToFn(obj, opts.logoutHandlerName, function logoutHandler(...args) { @@ -153,7 +153,22 @@ const setupLogoutHandler = (obj, ee, opts) => [ */ export function createAuthMethods(obj, ee, opts) { if (opts.enableAuth) { - return chainFns(setupLoginHandler, setupLogoutHandler)(obj, ee, opts) + obj[opts.loginHandlerName] = function loginHandler(token) { + if (token && isString(token)) { + return ee.$trigger(LOGIN_EVENT_NAME, [token]) + } + throw new JsonqlValidationError(opts.loginHandlerName, `Unexpected token ${token}`) + } + obj[opts.logoutHandlerName] = function logoutHandler(...args) { + ee.$trigger(LOGOUT_EVENT_NAME, args) + } + /* + @BUG @TODO need to figure out why the below code return [{}] + const executor = chainFns(setupLoginHandler, setupLogoutHandler) + const newObj = executor(obj, ee, opts) + console.log(newObj) + return newObj + */ } return obj; } diff --git a/packages/ws-client/src/utils/index.js b/packages/ws-client/src/utils/index.js index 41055c10..736d2f38 100644 --- a/packages/ws-client/src/utils/index.js +++ b/packages/ws-client/src/utils/index.js @@ -1,7 +1,16 @@ // export the util methods import { isArray, isString } from 'jsonql-params-validator' // moved to jsonql-utils -import { toArray, createEvt, injectToFn, objDefineProps, isFunc, isObjectHasKey } from 'jsonql-utils/module' +import { + toArray, + createEvt, + injectToFn, + objDefineProps, + isFunc, + isObjectHasKey, + chainFns, + chainPromises +} from 'jsonql-utils/module' import ee from './ee' import getDebug from './get-debug' @@ -17,13 +26,15 @@ import { export { isArray, isString, - + toArray, createEvt, injectToFn, objDefineProps, isFunc, isObjectHasKey, + chainFns, + chainPromises, ee, getDebug, diff --git a/packages/ws-client/tests/on.test.js b/packages/ws-client/tests/on.test.js index 7a61dab4..2a5401a8 100644 --- a/packages/ws-client/tests/on.test.js +++ b/packages/ws-client/tests/on.test.js @@ -72,7 +72,7 @@ test.after( t => { }) // real test start here -test.serial('It should able to create the WebSocket client object', t => { +test.serial.skip('It should able to create the WebSocket client object', t => { const client = t.context.client; @@ -90,7 +90,7 @@ test.serial('It should able to create the WebSocket client object', t => { }) -test.serial.cb('The ws client can connect to the WebSocket server public interface', t => { +test.serial.cb.skip('The ws client can connect to the WebSocket server public interface', t => { t.plan(3) let ctn = 0; const client = t.context.client; diff --git a/packages/ws-client/tests/test-node.test.js b/packages/ws-client/tests/test-node.test.js index 68bd053a..68543e0a 100644 --- a/packages/ws-client/tests/test-node.test.js +++ b/packages/ws-client/tests/test-node.test.js @@ -66,12 +66,14 @@ test.after( t => { // real test start here test.serial('It should able to create the WebSocket client object', t => { - const client = t.context.client; - + // debug(client) t.truthy(client) + // debug('what type is the propety now?', typeof client.pinging) t.true(typeof client.pinging === 'function') /// test individual properties + // debug(Object.getOwnPropertyDescriptor(client, 'pinging')) + t.truthy( Object.getOwnPropertyDescriptor(client.pinging, ON_ERROR_PROP_NAME), `has ${ON_ERROR_PROP_NAME} prop`) t.truthy( Object.getOwnPropertyDescriptor(client.pinging, ON_MESSAGE_PROP_NAME), `has ${ON_MESSAGE_PROP_NAME} prop`) t.truthy( Object.getOwnPropertyDescriptor(client.pinging, ON_RESULT_PROP_NAME), `has ${ON_RESULT_PROP_NAME} prop`) -- Gitee From 1292e0cdbbbc85e6174e0d196e08d21267fa43a9 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 15:20:00 +0800 Subject: [PATCH 24/44] Fixed the return obj error at the last chain call --- packages/ws-client/src/core/resolver-methods.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 83a929ac..dedbd6e0 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -115,6 +115,7 @@ export function createOnLoginhandler(obj, ee, opts, useCallbackStyle) { /** * break out from createAuthMethods to allow chaining call + * @BUG @TODO when we use this cause the obj not populated * @param {object} obj the main client object * @param {object} ee event emitter * @param {object} opts configuration @@ -133,19 +134,21 @@ const setupLoginHandler = (obj, ee, opts) => [ /** * break out from createAuthMethods to allow chaining call - final in chain + * @BUG @TODO when we use this cause the obj not populated * @param {object} obj the main client object * @param {object} ee event emitter * @param {object} opts configuration * @return {object} the modified obj */ -const setupLogoutHandler = (obj, ee, opts) => [ +const setupLogoutHandler = (obj, ee, opts) => ( injectToFn(obj, opts.logoutHandlerName, function logoutHandler(...args) { ee.$trigger(LOGOUT_EVENT_NAME, args) }) -] +) /** * Create auth related methods + * @BUG @TODO see above function comment * @param {object} obj the client itself * @param {object} ee Event Emitter * @param {object} opts configuration @@ -153,6 +156,7 @@ const setupLogoutHandler = (obj, ee, opts) => [ */ export function createAuthMethods(obj, ee, opts) { if (opts.enableAuth) { + /* obj[opts.loginHandlerName] = function loginHandler(token) { if (token && isString(token)) { return ee.$trigger(LOGIN_EVENT_NAME, [token]) @@ -162,13 +166,14 @@ export function createAuthMethods(obj, ee, opts) { obj[opts.logoutHandlerName] = function logoutHandler(...args) { ee.$trigger(LOGOUT_EVENT_NAME, args) } + */ /* @BUG @TODO need to figure out why the below code return [{}] + */ const executor = chainFns(setupLoginHandler, setupLogoutHandler) const newObj = executor(obj, ee, opts) console.log(newObj) return newObj - */ } return obj; } -- Gitee From 2eeb43a6d60c6e74d61f6c23954b4844010ca15b Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 15:21:14 +0800 Subject: [PATCH 25/44] clean up the code in the resolver-method --- .../ws-client/src/core/resolver-methods.js | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index dedbd6e0..828919cb 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -115,7 +115,6 @@ export function createOnLoginhandler(obj, ee, opts, useCallbackStyle) { /** * break out from createAuthMethods to allow chaining call - * @BUG @TODO when we use this cause the obj not populated * @param {object} obj the main client object * @param {object} ee event emitter * @param {object} opts configuration @@ -134,7 +133,6 @@ const setupLoginHandler = (obj, ee, opts) => [ /** * break out from createAuthMethods to allow chaining call - final in chain - * @BUG @TODO when we use this cause the obj not populated * @param {object} obj the main client object * @param {object} ee event emitter * @param {object} opts configuration @@ -148,7 +146,6 @@ const setupLogoutHandler = (obj, ee, opts) => ( /** * Create auth related methods - * @BUG @TODO see above function comment * @param {object} obj the client itself * @param {object} ee Event Emitter * @param {object} opts configuration @@ -156,24 +153,7 @@ const setupLogoutHandler = (obj, ee, opts) => ( */ export function createAuthMethods(obj, ee, opts) { if (opts.enableAuth) { - /* - obj[opts.loginHandlerName] = function loginHandler(token) { - if (token && isString(token)) { - return ee.$trigger(LOGIN_EVENT_NAME, [token]) - } - throw new JsonqlValidationError(opts.loginHandlerName, `Unexpected token ${token}`) - } - obj[opts.logoutHandlerName] = function logoutHandler(...args) { - ee.$trigger(LOGOUT_EVENT_NAME, args) - } - */ - /* - @BUG @TODO need to figure out why the below code return [{}] - */ - const executor = chainFns(setupLoginHandler, setupLogoutHandler) - const newObj = executor(obj, ee, opts) - console.log(newObj) - return newObj + return chainFns(setupLoginHandler, setupLogoutHandler)(obj, ee, opts) } return obj; } -- Gitee From 4aa5d624b9cbc90d489a91c61ecf6869eeeaf001 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 15:25:54 +0800 Subject: [PATCH 26/44] break out the auth method setup from the resolver setup --- packages/ws-client/src/core/generator.js | 4 +- .../ws-client/src/core/resolver-methods.js | 52 +------------------ .../ws-client/src/core/setup-auth-methods.js | 48 +++++++++++++++++ 3 files changed, 52 insertions(+), 52 deletions(-) create mode 100644 packages/ws-client/src/core/setup-auth-methods.js diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index 55245e96..564a386e 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -6,9 +6,9 @@ import { createResolver, createNamespaceErrorHandler, createOnReadyhandler, - createOnLoginhandler, - createAuthMethods + createOnLoginhandler } from './resolver-methods' +import { createAuthMethods } from './setup-auth-methods' import { getDebug, injectToFn } from '../utils' const debugFn = getDebug('generator') diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 828919cb..9b72d7f3 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -7,18 +7,15 @@ // callable api for the developer to setup their front end // the only thing is - when they call they might get an error or // NOT_LOGIN_IN and they can react to this error accordingly -import { JsonqlValidationError, finalCatch } from 'jsonql-errors' +import { finalCatch } from 'jsonql-errors' import { validateAsync, isString } from 'jsonql-params-validator' import { ERROR_PROP_NAME, LOGIN_PROP_NAME, READY_PROP_NAME, - ON_ERROR_PROP_NAME, ON_LOGIN_PROP_NAME, - ON_READY_PROP_NAME, - LOGIN_EVENT_NAME, - LOGOUT_EVENT_NAME + ON_READY_PROP_NAME } from 'jsonql-constants' import { actionCall } from './action-call' import { @@ -112,48 +109,3 @@ export function createOnLoginhandler(obj, ee, opts, useCallbackStyle) { // just skip it return obj } - -/** - * break out from createAuthMethods to allow chaining call - * @param {object} obj the main client object - * @param {object} ee event emitter - * @param {object} opts configuration - * @return {array} modified input - */ -const setupLoginHandler = (obj, ee, opts) => [ - injectToFn(obj, opts.loginHandlerName, function loginHandler(token) { - if (token && isString(token)) { - return ee.$trigger(LOGIN_EVENT_NAME, [token]) - } - throw new JsonqlValidationError(opts.loginHandlerName, `Unexpected token ${token}`) - }), - ee, - opts -] - -/** - * break out from createAuthMethods to allow chaining call - final in chain - * @param {object} obj the main client object - * @param {object} ee event emitter - * @param {object} opts configuration - * @return {object} the modified obj - */ -const setupLogoutHandler = (obj, ee, opts) => ( - injectToFn(obj, opts.logoutHandlerName, function logoutHandler(...args) { - ee.$trigger(LOGOUT_EVENT_NAME, args) - }) -) - -/** - * Create auth related methods - * @param {object} obj the client itself - * @param {object} ee Event Emitter - * @param {object} opts configuration - * @return {object} obj with auth methods if any - */ -export function createAuthMethods(obj, ee, opts) { - if (opts.enableAuth) { - return chainFns(setupLoginHandler, setupLogoutHandler)(obj, ee, opts) - } - return obj; -} diff --git a/packages/ws-client/src/core/setup-auth-methods.js b/packages/ws-client/src/core/setup-auth-methods.js new file mode 100644 index 00000000..94dd7ee4 --- /dev/null +++ b/packages/ws-client/src/core/setup-auth-methods.js @@ -0,0 +1,48 @@ +// take out from the resolver-methods +import { LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME } from 'jsonql-constants' +import { JsonqlValidationError } from 'jsonql-errors' +import { injectToFn, chainFns } from '../utils' +/** + * break out from createAuthMethods to allow chaining call + * @param {object} obj the main client object + * @param {object} ee event emitter + * @param {object} opts configuration + * @return {array} modified input + */ +const setupLoginHandler = (obj, ee, opts) => [ + injectToFn(obj, opts.loginHandlerName, function loginHandler(token) { + if (token && isString(token)) { + return ee.$trigger(LOGIN_EVENT_NAME, [token]) + } + throw new JsonqlValidationError(opts.loginHandlerName, `Unexpected token ${token}`) + }), + ee, + opts +] + +/** + * break out from createAuthMethods to allow chaining call - final in chain + * @param {object} obj the main client object + * @param {object} ee event emitter + * @param {object} opts configuration + * @return {object} the modified obj + */ +const setupLogoutHandler = (obj, ee, opts) => ( + injectToFn(obj, opts.logoutHandlerName, function logoutHandler(...args) { + ee.$trigger(LOGOUT_EVENT_NAME, args) + }) +) + +/** + * Create auth related methods + * @param {object} obj the client itself + * @param {object} ee Event Emitter + * @param {object} opts configuration + * @return {object} obj with auth methods if any + */ +export function createAuthMethods(obj, ee, opts) { + if (opts.enableAuth) { + return chainFns(setupLoginHandler, setupLogoutHandler)(obj, ee, opts) + } + return obj; +} -- Gitee From e2223d798f55656e0bd8c286c4a5b72f1cad6746 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 16:23:47 +0800 Subject: [PATCH 27/44] add new chainProcessPromises method --- packages/utils/browser.js | 2 +- packages/utils/main.js | 2 +- packages/utils/package.json | 2 +- packages/utils/src/chain-promises.js | 20 ++++++++++++++ packages/utils/tests/chain-fn.test.js | 27 +++++++++++++++++-- packages/ws-client/package.json | 2 +- .../ws-client/src/core/setup-auth-methods.js | 1 + packages/ws-client/tests/options.test.js | 4 +++ 8 files changed, 54 insertions(+), 6 deletions(-) diff --git a/packages/utils/browser.js b/packages/utils/browser.js index 6463e17c..74b947aa 100644 --- a/packages/utils/browser.js +++ b/packages/utils/browser.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return G(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case $r:return t[Lr];case Br:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Hr[0]:return $r;case t===Hr[1]:return Br;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},t.isJsonqlErrorObj=pe,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==G(t)},t.isObjectHasKey=Z,t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return G(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case $r:return t[Lr];case Br:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Hr[0]:return $r;case t===Hr[1]:return Br;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},t.isJsonqlErrorObj=pe,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==G(t)},t.isObjectHasKey=Z,t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=browser.js.map diff --git a/packages/utils/main.js b/packages/utils/main.js index c381c69c..08880352 100644 --- a/packages/utils/main.js +++ b/packages/utils/main.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(r){return r&&"object"==typeof r&&"default"in r?r.default:r}Object.defineProperty(exports,"__esModule",{value:!0});var fs=_interopDefault(require("fs")),path=require("path"),isArray=Array.isArray,global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol?Symbol.toStringTag:void 0;function getRawTag(r){var t=hasOwnProperty.call(r,symToStringTag),e=r[symToStringTag];try{r[symToStringTag]=void 0;var n=!0}catch(r){}var o=nativeObjectToString.call(r);return n&&(t?r[symToStringTag]=e:delete r[symToStringTag]),o}var objectProto$1=Object.prototype,nativeObjectToString$1=objectProto$1.toString;function objectToString(r){return nativeObjectToString$1.call(r)}var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag$1=Symbol?Symbol.toStringTag:void 0;function baseGetTag(r){return null==r?void 0===r?undefinedTag:nullTag:symToStringTag$1&&symToStringTag$1 in Object(r)?getRawTag(r):objectToString(r)}function overArg(r,t){return function(e){return r(t(e))}}var getPrototype=overArg(Object.getPrototypeOf,Object);function isObjectLike(r){return null!=r&&"object"==typeof r}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(r){if(!isObjectLike(r)||baseGetTag(r)!=objectTag)return!1;var t=getPrototype(r);if(null===t)return!0;var e=hasOwnProperty$1.call(t,"constructor")&&t.constructor;return"function"==typeof e&&e instanceof e&&funcToString.call(e)==objectCtorString}function arrayMap(r,t){for(var e=-1,n=null==r?0:r.length,o=Array(n);++eo?0:o+t),(e=e>o?o:e)<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var a=Array(o);++n=n?r:baseSlice(r,t,e)}function baseFindIndex(r,t,e,n){for(var o=r.length,a=e+(n?1:-1);n?a--:++a-1;);return e}function charsStartIndex(r,t){for(var e=-1,n=r.length;++e-1;);return e}function asciiToArray(r){return r.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(r){return reHasUnicode.test(r)}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(r){return r.match(reUnicode)||[]}function stringToArray(r){return hasUnicode(r)?unicodeToArray(r):asciiToArray(r)}function toString(r){return null==r?"":baseToString(r)}var reTrim=/^\s+|\s+$/g;function trim(r,t,e){if((r=toString(r))&&(e||void 0===t))return r.replace(reTrim,"");if(!r||!(t=baseToString(t)))return r;var n=stringToArray(r),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(r,t){return!!r.filter((function(r){return r===t})).length},toArray=function(r){return isArray(r)?r:[r]},parse=function(r){try{return JSON.parse(r)}catch(t){return r}},isObjectHasKey=function(r,t){var e=Object.keys(r);return inArray(e,t)},createEvt=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.join("_")},timestamp=function(r){void 0===r&&(r=!1);var t=Date.now();return r?Math.floor(t/1e3):t},urlParams=function(r,t){var e=[];for(var n in t)e.push([n,t[n]].join("="));return[r,e.join("&")].join("?")},cacheBurstUrl=function(r){return urlParams(r,cacheBurst())},cacheBurst=function(){return{_cb:timestamp()}},dasherize=function(r){return trim(r).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},getConfigValue=function(r,t){return t&&isPlainObject(t)&&r in t?t[r]:void 0},toJson=function(r){return"string"==typeof r?parse(r):JSON.parse(JSON.stringify(r))},isNotEmpty=function(r){return void 0!==r&&!1!==r&&null!==r&&""!==trim(r)},chainFns=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return t.reduce((function(r,t){return Reflect.apply(t,null,toArray(r))}),Reflect.apply(r,null,e))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(r,t){return r===t||r!=r&&t!=t}function assocIndexOf(r,t){for(var e=r.length;e--;)if(eq(r[e][0],t))return e;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(r){var t=this.__data__,e=assocIndexOf(t,r);return!(e<0)&&(e==t.length-1?t.pop():splice.call(t,e,1),--this.size,!0)}function listCacheGet(r){var t=this.__data__,e=assocIndexOf(t,r);return e<0?void 0:t[e][1]}function listCacheHas(r){return assocIndexOf(this.__data__,r)>-1}function listCacheSet(r,t){var e=this.__data__,n=assocIndexOf(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}function ListCache(r){var t=-1,e=null==r?0:r.length;for(this.clear();++t-1&&r%1==0&&r<=MAX_SAFE_INTEGER}function isArrayLike(r){return null!=r&&isLength(r.length)&&!isFunction(r)}function isArrayLikeObject(r){return isObjectLike(r)&&isArrayLike(r)}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(r){return isObjectLike(r)&&isLength(r.length)&&!!typedArrayTags[baseGetTag(r)]}function baseUnary(r){return function(t){return r(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var r=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return r||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(r){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(r,t){if(("constructor"!==t||"function"!=typeof r[t])&&"__proto__"!=t)return r[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(r,t,e){var n=r[t];hasOwnProperty$6.call(r,t)&&eq(n,e)&&(void 0!==e||t in r)||baseAssignValue(r,t,e)}function copyObject(r,t,e,n){var o=!e;e||(e={});for(var a=-1,i=t.length;++a-1&&r%1==0&&r0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(r,t){return setToString(overRest(r,t,identity),r+"")}function isIterateeCall(r,t,e){if(!isObject(e))return!1;var n=typeof t;return!!("number"==n?isArrayLike(e)&&isIndex(t,e.length):"string"==n&&t in e)&&eq(e[t],r)}function createAssigner(r){return baseRest((function(t,e){var n=-1,o=e.length,a=o>1?e[o-1]:void 0,i=o>2?e[2]:void 0;for(a=r.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(e[0],e[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===r[s-2]?2:"="===r[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,e=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[r.charCodeAt(t)]<<2|revLookup[r.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[r.charCodeAt(t)]<<10|revLookup[r.charCodeAt(t+1)]<<4|revLookup[r.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(r){return lookup[r>>18&63]+lookup[r>>12&63]+lookup[r>>6&63]+lookup[63&r]}function encodeChunk(r,t,e){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=r[e-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(r[e-2]<<8)+r[e-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(r,t,e,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=e?o-1:0,p=e?-1:1,h=r[t+l];for(l+=p,a=h&(1<<-c)-1,h>>=-c,c+=s;c>0;a=256*a+r[t+l],l+=p,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+r[t+l],l+=p,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,n),a-=f}return(h?-1:1)*i*Math.pow(2,a-n)}function write(r,t,e,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;r[e+h]=255&s,h+=g,s/=256,o-=8);for(i=i<0;r[e+h]=255&i,h+=g,i/=256,f-=8);r[e+h-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(r){return"[object Array]"==toString$1.call(r)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(r,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|r}function internalIsBuffer(r){return!(null==r||!r._isBuffer)}function byteLength(r,t){if(internalIsBuffer(r))return r.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;"string"!=typeof r&&(r=""+r);var e=r.length;if(0===e)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return utf8ToBytes(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return base64ToBytes(r).length;default:if(n)return utf8ToBytes(r).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(r,t,e){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(r||(r="utf8");;)switch(r){case"hex":return hexSlice(this,t,e);case"utf8":case"utf-8":return utf8Slice(this,t,e);case"ascii":return asciiSlice(this,t,e);case"latin1":case"binary":return latin1Slice(this,t,e);case"base64":return base64Slice(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}function swap(r,t,e){var n=r[t];r[t]=r[e],r[e]=n}function bidirectionalIndexOf(r,t,e,n,o){if(0===r.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(o)return-1;e=r.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(r,t,e,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):arrayIndexOf(r,[t],e,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(r,t,e,n,o){var a,i=1,s=r.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(r.length<2||t.length<2)return-1;i=2,s/=2,u/=2,e/=2}function f(r,t){return 1===i?r[t]:r.readUInt16BE(t*i)}if(o){var c=-1;for(a=e;as&&(e=s-u),a=e;a>=0;a--){for(var l=!0,p=0;po&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=e)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=r[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=r[o+1],i=r[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=r[o+1],i=r[o+2],s=r[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(r){return r.__proto__=Buffer$2.prototype,r},Buffer$2.from=function(r,t,e){return from(null,r,t,e)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(r,t,e){return alloc(null,r,t,e)},Buffer$2.allocUnsafe=function(r){return allocUnsafe$1(null,r)},Buffer$2.allocUnsafeSlow=function(r){return allocUnsafe$1(null,r)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(r,t){if(!internalIsBuffer(r)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(r===t)return 0;for(var e=r.length,n=t.length,o=0,a=Math.min(e,n);o0&&(r=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(r+=" ... ")),""},Buffer$2.prototype.compare=function(r,t,e,n,o){if(!internalIsBuffer(r))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===e&&(e=r?r.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||e>r.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=e)return 0;if(n>=o)return-1;if(t>=e)return 1;if(this===r)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(e>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=r.slice(t,e),c=0;co)&&(e=o),r.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,r,t,e);case"utf8":case"utf-8":return utf8Write(this,r,t,e);case"ascii":return asciiWrite(this,r,t,e);case"latin1":case"binary":return latin1Write(this,r,t,e);case"base64":return base64Write(this,r,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,r,t,e);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(r){var t=r.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,r);for(var e="",n=0;nn)&&(e=n);for(var o="",a=t;ae)throw new RangeError("Trying to access beyond buffer length")}function checkInt(r,t,e,n,o,a){if(!internalIsBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||tr.length)throw new RangeError("Index out of range")}function objectWriteUInt16(r,t,e,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(r.length-e,2);o>>8*(n?o:1-o)}function objectWriteUInt32(r,t,e,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(r.length-e,4);o>>8*(n?o:3-o)&255}function checkIEEE754(r,t,e,n,o,a){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function writeFloat(r,t,e,n,o){return o||checkIEEE754(r,t,e,4),write(r,t,e,n,23,4),e+4}function writeDouble(r,t,e,n,o){return o||checkIEEE754(r,t,e,8),write(r,t,e,n,52,8),e+8}Buffer$2.prototype.slice=function(r,t){var e,n=this.length;if((r=~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[r+--t]*o;return n},Buffer$2.prototype.readUInt8=function(r,t){return t||checkOffset(r,1,this.length),this[r]},Buffer$2.prototype.readUInt16LE=function(r,t){return t||checkOffset(r,2,this.length),this[r]|this[r+1]<<8},Buffer$2.prototype.readUInt16BE=function(r,t){return t||checkOffset(r,2,this.length),this[r]<<8|this[r+1]},Buffer$2.prototype.readUInt32LE=function(r,t){return t||checkOffset(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+16777216*this[r+3]},Buffer$2.prototype.readUInt32BE=function(r,t){return t||checkOffset(r,4,this.length),16777216*this[r]+(this[r+1]<<16|this[r+2]<<8|this[r+3])},Buffer$2.prototype.readIntLE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=this[r],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=t,o=1,a=this[r+--n];n>0&&(o*=256);)a+=this[r+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(r,t){return t||checkOffset(r,1,this.length),128&this[r]?-1*(255-this[r]+1):this[r]},Buffer$2.prototype.readInt16LE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r]|this[r+1]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt16BE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r+1]|this[r]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt32LE=function(r,t){return t||checkOffset(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24},Buffer$2.prototype.readInt32BE=function(r,t){return t||checkOffset(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]},Buffer$2.prototype.readFloatLE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!0,23,4)},Buffer$2.prototype.readFloatBE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(r,t,e,n){(r=+r,t|=0,e|=0,n)||checkInt(this,r,t,e,Math.pow(2,8*e)-1,0);var o=1,a=0;for(this[t]=255&r;++a=0&&(a*=256);)this[t+o]=r/a&255;return t+e},Buffer$2.prototype.writeUInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),this[t]=255&r,t+1},Buffer$2.prototype.writeUInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=255&r):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&r;++a>0)-s&255;return t+e},Buffer$2.prototype.writeIntBE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=e-1,i=1,s=0;for(this[t+a]=255&r;--a>=0&&(i*=256);)r<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(r/i>>0)-s&255;return t+e},Buffer$2.prototype.writeInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),r<0&&(r=255+r+1),this[t]=255&r,t+1},Buffer$2.prototype.writeInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(r,t,e){return writeFloat(this,r,t,!0,e)},Buffer$2.prototype.writeFloatBE=function(r,t,e){return writeFloat(this,r,t,!1,e)},Buffer$2.prototype.writeDoubleLE=function(r,t,e){return writeDouble(this,r,t,!0,e)},Buffer$2.prototype.writeDoubleBE=function(r,t,e){return writeDouble(this,r,t,!1,e)},Buffer$2.prototype.copy=function(r,t,e,n){if(e||(e=0),n||0===n||(n=this.length),t>=r.length&&(t=r.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),r.length-t=0;--o)r[o+t]=this[o+e];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,r||(r=0),"number"==typeof r)for(a=t;a55295&&e<57344){if(!o){if(e>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=e;continue}if(e<56320){(t-=3)>-1&&a.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,e<128){if((t-=1)<0)break;a.push(e)}else if(e<2048){if((t-=2)<0)break;a.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;a.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return a}function asciiToBytes(r){for(var t=[],e=0;e>8,o=e%256,a.push(o),a.push(n);return a}function base64ToBytes(r){return toByteArray(base64clean(r))}function blitBuffer(r,t,e,n){for(var o=0;o=t.length||o>=r.length);++o)t[o+e]=r[o];return o}function isnan(r){return r!=r}function isBuffer$1(r){return null!=r&&(!!r._isBuffer||isFastBuffer(r)||isSlowBuffer(r))}function isFastBuffer(r){return!!r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r)}function isSlowBuffer(r){return"function"==typeof r.readFloatLE&&"function"==typeof r.slice&&isFastBuffer(r.slice(0,0))}function buff(r,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(r)?r:new Buffer$2.from(r,t)}var replaceErrors=function(r,t){if(t instanceof Error){var e={};return Object.getOwnPropertyNames(t).forEach((function(r){e[r]=t[r]})),e}return t},printError=function(r){return JSON.stringify(r,replaceErrors)};function findFromContract(r,t,e){return!!(e[r]&&e[r][t]&&e[r][t].file&&fs.existsSync(e[r][t].file))&&e[r][t].file}var DOT=".",getDocLen=function(r){return Buffer$2.byteLength(r,"utf8")},headerParser=function(r,t){try{var e=r.headers.accept.split(",");return t?e.filter((function(r){return r===t})):e}catch(r){return[]}},isHeaderPresent=function(r,t){return!!headerParser(r,t).length},getPathToFn=function(r,t,e){var n=e.resolverDir,o=dasherize(r),a=[];e.contract&&e.contract[t]&&e.contract[t].path&&a.push(e.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;so?0:o+t),(e=e>o?o:e)<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var a=Array(o);++n=n?r:baseSlice(r,t,e)}function baseFindIndex(r,t,e,n){for(var o=r.length,a=e+(n?1:-1);n?a--:++a-1;);return e}function charsStartIndex(r,t){for(var e=-1,n=r.length;++e-1;);return e}function asciiToArray(r){return r.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(r){return reHasUnicode.test(r)}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(r){return r.match(reUnicode)||[]}function stringToArray(r){return hasUnicode(r)?unicodeToArray(r):asciiToArray(r)}function toString(r){return null==r?"":baseToString(r)}var reTrim=/^\s+|\s+$/g;function trim(r,t,e){if((r=toString(r))&&(e||void 0===t))return r.replace(reTrim,"");if(!r||!(t=baseToString(t)))return r;var n=stringToArray(r),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(r,t){return!!r.filter((function(r){return r===t})).length},toArray=function(r){return isArray(r)?r:[r]},parse=function(r){try{return JSON.parse(r)}catch(t){return r}},isObjectHasKey=function(r,t){var e=Object.keys(r);return inArray(e,t)},createEvt=function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.join("_")},timestamp=function(r){void 0===r&&(r=!1);var t=Date.now();return r?Math.floor(t/1e3):t},urlParams=function(r,t){var e=[];for(var n in t)e.push([n,t[n]].join("="));return[r,e.join("&")].join("?")},cacheBurstUrl=function(r){return urlParams(r,cacheBurst())},cacheBurst=function(){return{_cb:timestamp()}},dasherize=function(r){return trim(r).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},getConfigValue=function(r,t){return t&&isPlainObject(t)&&r in t?t[r]:void 0},toJson=function(r){return"string"==typeof r?parse(r):JSON.parse(JSON.stringify(r))},isNotEmpty=function(r){return void 0!==r&&!1!==r&&null!==r&&""!==trim(r)},chainFns=function(r){for(var t=[],e=arguments.length-1;e-- >0;)t[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return t.reduce((function(r,t){return Reflect.apply(t,null,toArray(r))}),Reflect.apply(r,null,e))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(r,t){return r===t||r!=r&&t!=t}function assocIndexOf(r,t){for(var e=r.length;e--;)if(eq(r[e][0],t))return e;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(r){var t=this.__data__,e=assocIndexOf(t,r);return!(e<0)&&(e==t.length-1?t.pop():splice.call(t,e,1),--this.size,!0)}function listCacheGet(r){var t=this.__data__,e=assocIndexOf(t,r);return e<0?void 0:t[e][1]}function listCacheHas(r){return assocIndexOf(this.__data__,r)>-1}function listCacheSet(r,t){var e=this.__data__,n=assocIndexOf(e,r);return n<0?(++this.size,e.push([r,t])):e[n][1]=t,this}function ListCache(r){var t=-1,e=null==r?0:r.length;for(this.clear();++t-1&&r%1==0&&r<=MAX_SAFE_INTEGER}function isArrayLike(r){return null!=r&&isLength(r.length)&&!isFunction(r)}function isArrayLikeObject(r){return isObjectLike(r)&&isArrayLike(r)}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(r){return isObjectLike(r)&&isLength(r.length)&&!!typedArrayTags[baseGetTag(r)]}function baseUnary(r){return function(t){return r(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var r=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return r||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(r){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(r,t){if(("constructor"!==t||"function"!=typeof r[t])&&"__proto__"!=t)return r[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(r,t,e){var n=r[t];hasOwnProperty$6.call(r,t)&&eq(n,e)&&(void 0!==e||t in r)||baseAssignValue(r,t,e)}function copyObject(r,t,e,n){var o=!e;e||(e={});for(var a=-1,i=t.length;++a-1&&r%1==0&&r0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return r.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(r,t){return setToString(overRest(r,t,identity),r+"")}function isIterateeCall(r,t,e){if(!isObject(e))return!1;var n=typeof t;return!!("number"==n?isArrayLike(e)&&isIndex(t,e.length):"string"==n&&t in e)&&eq(e[t],r)}function createAssigner(r){return baseRest((function(t,e){var n=-1,o=e.length,a=o>1?e[o-1]:void 0,i=o>2?e[2]:void 0;for(a=r.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(e[0],e[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===r[s-2]?2:"="===r[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,e=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[r.charCodeAt(t)]<<2|revLookup[r.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[r.charCodeAt(t)]<<10|revLookup[r.charCodeAt(t+1)]<<4|revLookup[r.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(r){return lookup[r>>18&63]+lookup[r>>12&63]+lookup[r>>6&63]+lookup[63&r]}function encodeChunk(r,t,e){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=r[e-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(r[e-2]<<8)+r[e-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(r,t,e,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=e?o-1:0,p=e?-1:1,h=r[t+l];for(l+=p,a=h&(1<<-c)-1,h>>=-c,c+=s;c>0;a=256*a+r[t+l],l+=p,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+r[t+l],l+=p,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,n),a-=f}return(h?-1:1)*i*Math.pow(2,a-n)}function write(r,t,e,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?p/u:p*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;r[e+h]=255&s,h+=g,s/=256,o-=8);for(i=i<0;r[e+h]=255&i,h+=g,i/=256,f-=8);r[e+h-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(r){return"[object Array]"==toString$1.call(r)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(r,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|r}function internalIsBuffer(r){return!(null==r||!r._isBuffer)}function byteLength(r,t){if(internalIsBuffer(r))return r.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;"string"!=typeof r&&(r=""+r);var e=r.length;if(0===e)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return utf8ToBytes(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return base64ToBytes(r).length;default:if(n)return utf8ToBytes(r).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(r,t,e){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(t>>>=0))return"";for(r||(r="utf8");;)switch(r){case"hex":return hexSlice(this,t,e);case"utf8":case"utf-8":return utf8Slice(this,t,e);case"ascii":return asciiSlice(this,t,e);case"latin1":case"binary":return latin1Slice(this,t,e);case"base64":return base64Slice(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}function swap(r,t,e){var n=r[t];r[t]=r[e],r[e]=n}function bidirectionalIndexOf(r,t,e,n,o){if(0===r.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(o)return-1;e=r.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(r,t,e,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):arrayIndexOf(r,[t],e,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(r,t,e,n,o){var a,i=1,s=r.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(r.length<2||t.length<2)return-1;i=2,s/=2,u/=2,e/=2}function f(r,t){return 1===i?r[t]:r.readUInt16BE(t*i)}if(o){var c=-1;for(a=e;as&&(e=s-u),a=e;a>=0;a--){for(var l=!0,p=0;po&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=e)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=r[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=r[o+1],i=r[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=r[o+1],i=r[o+2],s=r[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(r){return r.__proto__=Buffer$2.prototype,r},Buffer$2.from=function(r,t,e){return from(null,r,t,e)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(r,t,e){return alloc(null,r,t,e)},Buffer$2.allocUnsafe=function(r){return allocUnsafe$1(null,r)},Buffer$2.allocUnsafeSlow=function(r){return allocUnsafe$1(null,r)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(r,t){if(!internalIsBuffer(r)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(r===t)return 0;for(var e=r.length,n=t.length,o=0,a=Math.min(e,n);o0&&(r=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(r+=" ... ")),""},Buffer$2.prototype.compare=function(r,t,e,n,o){if(!internalIsBuffer(r))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===e&&(e=r?r.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||e>r.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=e)return 0;if(n>=o)return-1;if(t>=e)return 1;if(this===r)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(e>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=r.slice(t,e),c=0;co)&&(e=o),r.length>0&&(e<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,r,t,e);case"utf8":case"utf-8":return utf8Write(this,r,t,e);case"ascii":return asciiWrite(this,r,t,e);case"latin1":case"binary":return latin1Write(this,r,t,e);case"base64":return base64Write(this,r,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,r,t,e);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(r){var t=r.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,r);for(var e="",n=0;nn)&&(e=n);for(var o="",a=t;ae)throw new RangeError("Trying to access beyond buffer length")}function checkInt(r,t,e,n,o,a){if(!internalIsBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||tr.length)throw new RangeError("Index out of range")}function objectWriteUInt16(r,t,e,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(r.length-e,2);o>>8*(n?o:1-o)}function objectWriteUInt32(r,t,e,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(r.length-e,4);o>>8*(n?o:3-o)&255}function checkIEEE754(r,t,e,n,o,a){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function writeFloat(r,t,e,n,o){return o||checkIEEE754(r,t,e,4),write(r,t,e,n,23,4),e+4}function writeDouble(r,t,e,n,o){return o||checkIEEE754(r,t,e,8),write(r,t,e,n,52,8),e+8}Buffer$2.prototype.slice=function(r,t){var e,n=this.length;if((r=~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[r+--t]*o;return n},Buffer$2.prototype.readUInt8=function(r,t){return t||checkOffset(r,1,this.length),this[r]},Buffer$2.prototype.readUInt16LE=function(r,t){return t||checkOffset(r,2,this.length),this[r]|this[r+1]<<8},Buffer$2.prototype.readUInt16BE=function(r,t){return t||checkOffset(r,2,this.length),this[r]<<8|this[r+1]},Buffer$2.prototype.readUInt32LE=function(r,t){return t||checkOffset(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+16777216*this[r+3]},Buffer$2.prototype.readUInt32BE=function(r,t){return t||checkOffset(r,4,this.length),16777216*this[r]+(this[r+1]<<16|this[r+2]<<8|this[r+3])},Buffer$2.prototype.readIntLE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=this[r],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(r,t,e){r|=0,t|=0,e||checkOffset(r,t,this.length);for(var n=t,o=1,a=this[r+--n];n>0&&(o*=256);)a+=this[r+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(r,t){return t||checkOffset(r,1,this.length),128&this[r]?-1*(255-this[r]+1):this[r]},Buffer$2.prototype.readInt16LE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r]|this[r+1]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt16BE=function(r,t){t||checkOffset(r,2,this.length);var e=this[r+1]|this[r]<<8;return 32768&e?4294901760|e:e},Buffer$2.prototype.readInt32LE=function(r,t){return t||checkOffset(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24},Buffer$2.prototype.readInt32BE=function(r,t){return t||checkOffset(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]},Buffer$2.prototype.readFloatLE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!0,23,4)},Buffer$2.prototype.readFloatBE=function(r,t){return t||checkOffset(r,4,this.length),read(this,r,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(r,t){return t||checkOffset(r,8,this.length),read(this,r,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(r,t,e,n){(r=+r,t|=0,e|=0,n)||checkInt(this,r,t,e,Math.pow(2,8*e)-1,0);var o=1,a=0;for(this[t]=255&r;++a=0&&(a*=256);)this[t+o]=r/a&255;return t+e},Buffer$2.prototype.writeUInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),this[t]=255&r,t+1},Buffer$2.prototype.writeUInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=255&r):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&r;++a>0)-s&255;return t+e},Buffer$2.prototype.writeIntBE=function(r,t,e,n){if(r=+r,t|=0,!n){var o=Math.pow(2,8*e-1);checkInt(this,r,t,e,o-1,-o)}var a=e-1,i=1,s=0;for(this[t+a]=255&r;--a>=0&&(i*=256);)r<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(r/i>>0)-s&255;return t+e},Buffer$2.prototype.writeInt8=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(r=Math.floor(r)),r<0&&(r=255+r+1),this[t]=255&r,t+1},Buffer$2.prototype.writeInt16LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8):objectWriteUInt16(this,r,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>8,this[t+1]=255&r):objectWriteUInt16(this,r,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&r,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24):objectWriteUInt32(this,r,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(r,t,e){return r=+r,t|=0,e||checkInt(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=255&r):objectWriteUInt32(this,r,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(r,t,e){return writeFloat(this,r,t,!0,e)},Buffer$2.prototype.writeFloatBE=function(r,t,e){return writeFloat(this,r,t,!1,e)},Buffer$2.prototype.writeDoubleLE=function(r,t,e){return writeDouble(this,r,t,!0,e)},Buffer$2.prototype.writeDoubleBE=function(r,t,e){return writeDouble(this,r,t,!1,e)},Buffer$2.prototype.copy=function(r,t,e,n){if(e||(e=0),n||0===n||(n=this.length),t>=r.length&&(t=r.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),r.length-t=0;--o)r[o+t]=this[o+e];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,r||(r=0),"number"==typeof r)for(a=t;a55295&&e<57344){if(!o){if(e>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=e;continue}if(e<56320){(t-=3)>-1&&a.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,e<128){if((t-=1)<0)break;a.push(e)}else if(e<2048){if((t-=2)<0)break;a.push(e>>6|192,63&e|128)}else if(e<65536){if((t-=3)<0)break;a.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return a}function asciiToBytes(r){for(var t=[],e=0;e>8,o=e%256,a.push(o),a.push(n);return a}function base64ToBytes(r){return toByteArray(base64clean(r))}function blitBuffer(r,t,e,n){for(var o=0;o=t.length||o>=r.length);++o)t[o+e]=r[o];return o}function isnan(r){return r!=r}function isBuffer$1(r){return null!=r&&(!!r._isBuffer||isFastBuffer(r)||isSlowBuffer(r))}function isFastBuffer(r){return!!r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r)}function isSlowBuffer(r){return"function"==typeof r.readFloatLE&&"function"==typeof r.slice&&isFastBuffer(r.slice(0,0))}function buff(r,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(r)?r:new Buffer$2.from(r,t)}var replaceErrors=function(r,t){if(t instanceof Error){var e={};return Object.getOwnPropertyNames(t).forEach((function(r){e[r]=t[r]})),e}return t},printError=function(r){return JSON.stringify(r,replaceErrors)};function findFromContract(r,t,e){return!!(e[r]&&e[r][t]&&e[r][t].file&&fs.existsSync(e[r][t].file))&&e[r][t].file}var DOT=".",getDocLen=function(r){return Buffer$2.byteLength(r,"utf8")},headerParser=function(r,t){try{var e=r.headers.accept.split(",");return t?e.filter((function(r){return r===t})):e}catch(r){return[]}},isHeaderPresent=function(r,t){return!!headerParser(r,t).length},getPathToFn=function(r,t,e){var n=e.resolverDir,o=dasherize(r),a=[];e.contract&&e.contract[t]&&e.contract[t].path&&a.push(e.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;s ( + promises.reduce((promiseChain, currentTask) => ( + promiseChain.then(chainResult => ( + currentTask(chainResult) + ) + ) + ), Reflect.apply(initPromise, null, args)) + ) +} diff --git a/packages/utils/tests/chain-fn.test.js b/packages/utils/tests/chain-fn.test.js index 7161e761..f49e17e4 100644 --- a/packages/utils/tests/chain-fn.test.js +++ b/packages/utils/tests/chain-fn.test.js @@ -1,7 +1,7 @@ // need to test the chain-fns because of the way we change the lodash import const test = require('ava') const { chainFns } = require('../src/chain-fns') -const { chainPromises } = require('../src/chain-promises') +const { chainPromises, chainProcessPromises } = require('../src/chain-promises') const debug = require('debug')('jsonql-utils:test:chain-fn') test('It should able to accept more than one functions after the first one', t => { @@ -32,7 +32,6 @@ test(`It should able to accept the last array return as spread input`, t => { }) - test(`It should able to merge the promise result together as one object`, async t => { let ps = [] for (let i = 0; i < 3; ++i) { @@ -45,3 +44,27 @@ test(`It should able to merge the promise result together as one object`, async t.truthy( result['key1'] ) t.true( result.x === 'y' ) }) + +test(`It should able to take one promise result as the next promise result parameter and return one result`, async t => { + // init function + const fn = (x, y) => { + return Promise.resolve({x, y}) + } + + // expect an object + const fn1 = ({x, y}) => { + debug('x', x, 'y', y) + return Promise.resolve({x: ++x, y: ++y, z: 1}) + } + + const fn2 = ({x, y, z}) => { + debug('x', x, 'y', y, 'z', z) + return Promise.resolve(x + y + z) + } + + const executor = chainProcessPromises(fn, fn1, fn2) + const result = await executor(1,2) + + t.is(result, 6) + +}) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 14d0284a..542fc1b3 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.2.0", + "version": "1.3.0", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", diff --git a/packages/ws-client/src/core/setup-auth-methods.js b/packages/ws-client/src/core/setup-auth-methods.js index 94dd7ee4..ee7a3e7a 100644 --- a/packages/ws-client/src/core/setup-auth-methods.js +++ b/packages/ws-client/src/core/setup-auth-methods.js @@ -14,6 +14,7 @@ const setupLoginHandler = (obj, ee, opts) => [ if (token && isString(token)) { return ee.$trigger(LOGIN_EVENT_NAME, [token]) } + // should trigger a global error instead @TODO throw new JsonqlValidationError(opts.loginHandlerName, `Unexpected token ${token}`) }), ee, diff --git a/packages/ws-client/tests/options.test.js b/packages/ws-client/tests/options.test.js index 28de4e0c..e37b7cf8 100644 --- a/packages/ws-client/tests/options.test.js +++ b/packages/ws-client/tests/options.test.js @@ -33,3 +33,7 @@ test(`test the objDefineProps if it return a new prop`, t => { t.is(obj.prop1, prop1) }) + +test(`Test the chainPromises for the new way to handle the final output of the client`, t => { + +}) -- Gitee From 41355a1ca9260f816893064075db5a660820cc1c Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 16:24:39 +0800 Subject: [PATCH 28/44] jsonql-utils to 0.8.1 --- packages/utils/browser.js | 2 +- packages/utils/module.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/utils/browser.js b/packages/utils/browser.js index 74b947aa..2796d229 100644 --- a/packages/utils/browser.js +++ b/packages/utils/browser.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return G(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case $r:return t[Lr];case Br:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Hr[0]:return $r;case t===Hr[1]:return Br;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},t.isJsonqlErrorObj=pe,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==G(t)},t.isObjectHasKey=Z,t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,b,g=(h=Object.getPrototypeOf,b=Object,function(t){return h(b(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=g(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var E=1/0,k=i?i.prototype:void 0,z=k?k.toString:void 0;function F(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){var e=Object.keys(t);return K(e,r)},X=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},Y=function(t,r){var e=[];for(var n in r)e.push([n,r[n]].join("="));return[t,e.join("&")].join("?")},tt=function(){return{_cb:X()}};function rt(t,r){return t===r||t!=t&&r!=r}function et(t,r){for(var e=t.length;e--;)if(rt(t[e][0],r))return e;return-1}var nt=Array.prototype.splice;function ot(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},ot.prototype.set=function(t,r){var e=this.__data__,n=et(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var it="[object AsyncFunction]",at="[object Function]",ct="[object GeneratorFunction]",ft="[object Proxy]";function st(t){if(!ut(t))return!1;var r=y(t);return r==at||r==ct||r==it||r==ft}var lt,pt=u["__core-js_shared__"],vt=(lt=/[^.]+$/.exec(pt&&pt.keys&&pt.keys.IE_PROTO||""))?"Symbol(src)_1."+lt:"";var dt=Function.prototype.toString;var yt=/^\[object .+?Constructor\]$/,ht=Function.prototype,bt=Object.prototype,gt=ht.toString,_t=bt.hasOwnProperty,jt=RegExp("^"+gt.call(_t).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mt(t){return!(!ut(t)||function(t){return!!vt&&vt in t}(t))&&(st(t)?jt:yt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function Ot(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return mt(e)?e:void 0}var wt=Ot(u,"Map"),Pt=Ot(Object,"create");var St="__lodash_hash_undefined__",At=Object.prototype.hasOwnProperty;var Nt=Object.prototype.hasOwnProperty;var Et="__lodash_hash_undefined__";function kt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=rr}function nr(t){return null!=t&&er(t.length)&&!st(t)}var or="object"==typeof t&&t&&!t.nodeType&&t,ur=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ur&&ur.exports===or?u.Buffer:void 0,ar=(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="object"==typeof t&&t&&!t.nodeType&&t,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&n.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),vr=pr&&pr.isTypedArray,dr=vr?function(t){return function(r){return t(r)}}(vr):function(t){return _(t)&&er(t.length)&&!!cr[y(t)]};function yr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var hr=Object.prototype.hasOwnProperty;function br(t,r,e){var n=t[r];hr.call(t,r)&&rt(n,e)&&(void 0!==e||r in t)||Jt(t,r,e)}var gr=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function jr(t,r){var e=typeof t;return!!(r=null==r?gr:r)&&("number"==e||"symbol"!=e&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Tr)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xr);function Rr(t,r){return Mr(function(t,r,e){return r=Fr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Fr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ur.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!ut(e))return!1;var n=typeof r;return!!("number"==n?nr(e)&&jr(r,e.length):"string"==n&&r in e)&&rt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}},t.chainProcessPromises=function(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return t.then((function(t){return r(t)}))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):qr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.checkIsContract=te,t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=ce,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(ce(t,r,e,n))},t.createQuery=ae,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(ae(t,r,e))},t.dasherize=function(t){return G(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case $r:return t[Lr];case Br:return[t[Dr],t[Qr]];default:throw new Yr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Zr(e,r);return n}catch(t){throw new Zr(e,t)}},t.extractSocketPart=re,t.formatPayload=ue,t.getCallMethod=function(t){switch(!0){case t===Hr[0]:return $r;case t===Hr[1]:return Br;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=le,t.getMutationFromPayload=function(t){var r=se(t,le);if(!1!==r)return r;throw new Xr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ie,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=fe,t.getQueryFromPayload=function(t){var r=se(t,fe);if(!1!==r)return r;throw new Xr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=re(t);if(!1===e){if(r)return t;throw new Yr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)},t.isContract=ve,t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},t.isJsonqlErrorObj=pe,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==G(t)},t.isObjectHasKey=Z,t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=pe(t)||u,o))},t.packResult=function(t){var r;return JSON.stringify(((r={}).data=t,r))},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=X,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=oe,t.urlParams=Y,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=browser.js.map diff --git a/packages/utils/module.js b/packages/utils/module.js index 3e3d2b28..4bc2b782 100644 --- a/packages/utils/module.js +++ b/packages/utils/module.js @@ -1,7 +1,7 @@ // exportfor ES modules // ported from jsonql-params-validator import { chainFns } from './src/chain-fns' -import { chainPromises } from './src/chain-promises' +import { chainPromises, chainProcessPromises } from './src/chain-promises' import { injectToFn, objDefineProps } from './src/obj-define-props' import { checkIsContract, @@ -60,6 +60,7 @@ export { // chain-fns chainFns, chainPromises, + chainProcessPromises, // contract extractArgsFromPayload, extractParamsFromContract, -- Gitee From c5d748bb9eb1335d684803159b93a32e9a769f41 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 16:51:10 +0800 Subject: [PATCH 29/44] test the new chainProcessPromises --- packages/ws-client/package.json | 2 +- packages/ws-client/src/core/generator.js | 14 +++++++++++++- packages/ws-client/src/utils/index.js | 6 ++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 542fc1b3..442bc873 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -53,7 +53,7 @@ "jsonql-errors": "^1.1.3", "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", - "jsonql-utils": "^0.8.0", + "jsonql-utils": "^0.8.1", "nb-event-service": "^1.8.5" }, "devDependencies": { diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index 564a386e..52d1220e 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -9,7 +9,7 @@ import { createOnLoginhandler } from './resolver-methods' import { createAuthMethods } from './setup-auth-methods' -import { getDebug, injectToFn } from '../utils' +import { getDebug, injectToFn, chainProcessPromises } from '../utils' const debugFn = getDebug('generator') /** @@ -46,6 +46,7 @@ function getMappedObj(opts, nspMap, ee) { // getResolverNames: () => resolverNames } // resolve the obj to start the chain + // chain the result to allow the chain processing return Promise.resolve(obj) } @@ -60,6 +61,16 @@ function getMappedObj(opts, nspMap, ee) { export function generator(opts, nspMap, ee) { const { nspSet } = nspMap const { useCallbackStyle } = opts; + + return chainProcessPromises( + getMappedObj, + obj1 => createNamespaceErrorHandler(obj1, ee, nspSet), + obj2 => createOnReadyhandler(obj2, ee, nspSet), + obj3 => createOnLoginhandler(obj3, ee, opts), + obj4 => createAuthMethods(obj4, ee, opts) + )(opts, nspMap, ee) + + /* return getMappedObj(opts, nspMap, ee) // add error handler .then(obj1 => createNamespaceErrorHandler(obj1, ee, nspSet)) @@ -69,4 +80,5 @@ export function generator(opts, nspMap, ee) { .then(obj3 => createOnLoginhandler(obj3, ee, opts)) // Auth related methods -- this is optional .then(obj4 => createAuthMethods(obj4, ee, opts)) + */ } diff --git a/packages/ws-client/src/utils/index.js b/packages/ws-client/src/utils/index.js index 736d2f38..4a3ce521 100644 --- a/packages/ws-client/src/utils/index.js +++ b/packages/ws-client/src/utils/index.js @@ -9,7 +9,8 @@ import { isFunc, isObjectHasKey, chainFns, - chainPromises + chainPromises, + chainProcessPromises } from 'jsonql-utils/module' import ee from './ee' @@ -35,7 +36,8 @@ export { isObjectHasKey, chainFns, chainPromises, - + chainProcessPromises, + ee, getDebug, processContract, -- Gitee From 41c5ad2c42be6505efdea672c4054b3adbdfa927 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 17:26:17 +0800 Subject: [PATCH 30/44] mapping the new method to the final output generator --- packages/ws-client/src/core/generator.js | 25 ++++++---- .../ws-client/src/core/resolver-methods.js | 48 ++++++++++++++++--- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index 52d1220e..eddc416b 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -6,7 +6,8 @@ import { createResolver, createNamespaceErrorHandler, createOnReadyhandler, - createOnLoginhandler + createOnLoginhandler, + createCallbackHandler } from './resolver-methods' import { createAuthMethods } from './setup-auth-methods' import { getDebug, injectToFn, chainProcessPromises } from '../utils' @@ -61,14 +62,20 @@ function getMappedObj(opts, nspMap, ee) { export function generator(opts, nspMap, ee) { const { nspSet } = nspMap const { useCallbackStyle } = opts; - - return chainProcessPromises( - getMappedObj, - obj1 => createNamespaceErrorHandler(obj1, ee, nspSet), - obj2 => createOnReadyhandler(obj2, ee, nspSet), - obj3 => createOnLoginhandler(obj3, ee, opts), - obj4 => createAuthMethods(obj4, ee, opts) - )(opts, nspMap, ee) + let args = [getMappedObj] + if (useCallbackStyle) { + args.push(obj => createCallbackHandler(obj, ee, nspSet, opts)) + } else { + args.push( + obj1 => createNamespaceErrorHandler(obj1, ee, nspSet), + obj2 => createOnReadyhandler(obj2, ee, nspSet), + obj3 => createOnLoginhandler(obj3, ee, opts), + ) + } + args.push(obj4 => createAuthMethods(obj4, ee, opts)) + // run it + const executor = Reflect.apply(chainProcessPromises, null, args) + return executor(opts, nspMap, ee) /* return getMappedObj(opts, nspMap, ee) diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 9b72d7f3..04f8c270 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -7,7 +7,7 @@ // callable api for the developer to setup their front end // the only thing is - when they call they might get an error or // NOT_LOGIN_IN and they can react to this error accordingly -import { finalCatch } from 'jsonql-errors' +import { JsonqlError, JsonqlValidationError, finalCatch } from 'jsonql-errors' import { validateAsync, isString } from 'jsonql-params-validator' import { ERROR_PROP_NAME, @@ -25,6 +25,7 @@ import { injectToFn, objDefineProps, chainFns, + isString, isFunc, isObjectHasKey } from '../utils' @@ -57,11 +58,11 @@ export function createResolver(ee, namespace, resolverName, params) { * @param {boolean} useCallbackStyle use cb or not * @return {object} obj with onError prop */ -export function createNamespaceErrorHandler(obj, ee, nspSet, useCallbackStyle) { +export function createNamespaceErrorHandler(obj, ee, nspSet) { // using the onError as name // @TODO we should follow the convention earlier // make this a setter for the obj itself - return objDefineProps(obj, ON_ERROR_PROP_NAME, function(namespaceErrorHandler) { + return objDefineProps(obj, ON_ERROR_PROP_NAME, function namespaceErrorCallbackHandler(namespaceErrorHandler) { if (isFunc(namespaceErrorHandler)) { // please note ON_ERROR_PROP_NAME can add multiple listners for (let namespace in nspSet) { @@ -80,8 +81,8 @@ export function createNamespaceErrorHandler(obj, ee, nspSet, useCallbackStyle) { * @param {object} nspSet namespace keys * @return {object} obj with onReady prop */ -export function createOnReadyhandler(obj, ee, nspSet, useCallbackStyle) { - return objDefineProps(obj, ON_READY_PROP_NAME, function(onReadyCallback) { +export function createOnReadyhandler(obj, ee, nspSet) { + return objDefineProps(obj, ON_READY_PROP_NAME, function onReadyCallbackHandler(onReadyCallback) { if (isFunc(onReadyCallback)) { // reduce it down to just one flat level ee.$on(ON_READY_PROP_NAME, onReadyCallback) @@ -97,9 +98,9 @@ export function createOnReadyhandler(obj, ee, nspSet, useCallbackStyle) { * @param {object} opts configuration * @return {object} obj with onLogin prop */ -export function createOnLoginhandler(obj, ee, opts, useCallbackStyle) { +export function createOnLoginhandler(obj, ee, opts) { if (opts.enableAuth) { - return objDefineProps(obj, ON_LOGIN_PROP_NAME, function(onLoginCallback) { + return objDefineProps(obj, ON_LOGIN_PROP_NAME, function onLoginCallbackHandler(onLoginCallback) { if (isFunc(onLoginCallback)) { // only one callback can registered with it, TBC ee.$only(ON_LOGIN_PROP_NAME, onLoginCallback) @@ -109,3 +110,36 @@ export function createOnLoginhandler(obj, ee, opts, useCallbackStyle) { // just skip it return obj } + +/** + * when useCallbackStyle=true use this instead of the above method + * @param {object} obj the base object to attach to + * @param {object} ee EventEmitter + * @param {object} nspSet the map + * @param {object} opts configuration + * @return {object} obj + */ +export function createCallbackHandler(obj, ee, nspSet, opts) { + return injectToFn(obj, CB_FN_NAME, function onHandler(evtName, callback) { + if (isString(evtName) && isFunc(callback)) { + switch (evtName) { + case ERROR_PROP_NAME: + for (let namespace in nspSet) { + // this one is very tricky, we need to make sure the trigger is calling + // with the namespace as well as the error + ee.$on(createEvt(namespace, ERROR_PROP_NAME), callback) + } + break; + case LOGIN_PROP_NAME: + ee.$only(LOGIN_PROP_NAME, callback) + break; + case READY_PROP_NAME: + ee.$on(READY_PROP_NAME, callback) + break; + default: + ee.$trigger(ERROR_PROP_NAME, new JsonqlError(CB_FN_NAME, `Unknown event name ${evtName}!`)) + } + } + // @TODO need to issue another error here! + ) +} -- Gitee From 66c57a5d5f3afac25115d96165fcbb73dc06a5e9 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 17:28:46 +0800 Subject: [PATCH 31/44] test the integration working move the test to the down stream modules --- packages/ws-client/src/core/resolver-methods.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 04f8c270..5b0e7a3b 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -8,7 +8,7 @@ // the only thing is - when they call they might get an error or // NOT_LOGIN_IN and they can react to this error accordingly import { JsonqlError, JsonqlValidationError, finalCatch } from 'jsonql-errors' -import { validateAsync, isString } from 'jsonql-params-validator' +import { validateAsync } from 'jsonql-params-validator' import { ERROR_PROP_NAME, LOGIN_PROP_NAME, @@ -141,5 +141,5 @@ export function createCallbackHandler(obj, ee, nspSet, opts) { } } // @TODO need to issue another error here! - ) + }) } -- Gitee From c5cd436227e6f04fd00c2cc267bc5eb5faef892c Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 17:38:08 +0800 Subject: [PATCH 32/44] add loginMethod for the next socket.io client --- packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- packages/@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 4 ++-- packages/ws-client/package.json | 2 +- packages/ws-client/src/options/defaults.js | 7 ++++++- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 9a6fbe30..dc6ef533 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",isArray=Array.isArray,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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);++ns))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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME),[{message:t,namespace:r}])}))}var debugFn$6=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$6("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME),[{error:o}])}))},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$6("call bindWsHandler",s,o);var c=[o,a[o],t,s];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$6("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$7=getDebug("ws-main-handler"),ON_MESSAGE_PROP_NAME$1=ON_MESSAGE_PROP_NAME,ON_RESULT_PROP_NAME$1=ON_RESULT_PROP_NAME,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$7("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$7("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(function(e,t){debugFn$7("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$7("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$7("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$7("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$7("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$7("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},r.onclose=function(){debugFn$7("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$7("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$8=getDebug("ws-create-client"),createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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$1(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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString$1(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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$1(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 constructConfigFn.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$2=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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME$1),[{message:t,namespace:r}])}))}var debugFn$7=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$7("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME$1),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME$1),[{error:o}])}))},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];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$7("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$2(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"),ON_MESSAGE_PROP_NAME$2=ON_MESSAGE_PROP_NAME$1,ON_RESULT_PROP_NAME$2=ON_RESULT_PROP_NAME$1,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(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,ON_MESSAGE_PROP_NAME$2),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$2);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index f47ac95a..3bb68991 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",T="No message",A="__login__",P="__logout__",N="emit",z="acknowledge",x="error",q="nspSet",C="publicNamespace",R="onResult",M="onError",F="onReady",L="onLogin",W="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,Error.captureStackTrace&&Error.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}(s),J=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 U(t){if(Array.isArray(t))throw new d("",t);var e=t.message||T,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof J:throw new J(e,u);default:throw new I(e,u)}}var D="socket.io",B=N,V="UKNNOWN RESULT!",H=Array.isArray,Y="object"==typeof u&&u&&u.Object===Object&&u,G="object"==typeof self&&self&&self.Object===Object&&self,K=Y||G||Function("return this")(),Q=K.Symbol,X=Object.prototype,Z=X.hasOwnProperty,tt=X.toString,et=Q?Q.toStringTag:void 0;var rt=Object.prototype.toString;var nt="[object Null]",ot="[object Undefined]",at=Q?Q.toStringTag:void 0;function it(t){return null==t?void 0===t?ot:nt:at&&at in Object(t)?function(t){var e=Z.call(t,et),r=t[et];try{t[et]=void 0;var n=!0}catch(t){}var o=tt.call(t);return n&&(e?t[et]=r:delete t[et]),o}(t):function(t){return rt.call(t)}(t)}function ut(t,e){return function(r){return t(e(r))}}var ct=ut(Object.getPrototypeOf,Object);function ft(t){return null!=t&&"object"==typeof t}var st="[object Object]",lt=Function.prototype,pt=Object.prototype,ht=lt.toString,vt=pt.hasOwnProperty,dt=ht.call(Object);function gt(t){if(!ft(t)||it(t)!=st)return!1;var e=ct(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ht.call(r)==dt}function yt(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--&&kt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Jt=function(t){return H(t)?t:[t]},Ut=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Bt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Vt=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,Jt(t))}),Reflect.apply(t,null,r))}};function Ht(t,e){return t===e||t!=t&&e!=e}function Yt(t,e){for(var r=t.length;r--;)if(Ht(t[r][0],e))return r;return-1}var Gt=Array.prototype.splice;function Kt(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},Kt.prototype.set=function(t,e){var r=this.__data__,n=Yt(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Xt="[object AsyncFunction]",Zt="[object Function]",te="[object GeneratorFunction]",ee="[object Proxy]";function re(t){if(!Qt(t))return!1;var e=it(t);return e==Zt||e==te||e==Xt||e==ee}var ne,oe=K["__core-js_shared__"],ae=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ie=Function.prototype.toString;function ue(t){if(null!=t){try{return ie.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,fe=Function.prototype,se=Object.prototype,le=fe.toString,pe=se.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ve(t){return!(!Qt(t)||(e=t,ae&&ae in e))&&(re(t)?he:ce).test(ue(t));var e}function de(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return ve(r)?r:void 0}var ge=de(K,"Map"),ye=de(Object,"create");var be="__lodash_hash_undefined__",_e=Object.prototype.hasOwnProperty;var me=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=Ye}function Ke(t){return null!=t&&Ge(t.length)&&!re(t)}var Qe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xe=Qe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Xe&&Xe.exports===Qe?K.Buffer:void 0,tr=(Ze?Ze.isBuffer:void 0)||function(){return!1},er={};er["[object Float32Array]"]=er["[object Float64Array]"]=er["[object Int8Array]"]=er["[object Int16Array]"]=er["[object Int32Array]"]=er["[object Uint8Array]"]=er["[object Uint8ClampedArray]"]=er["[object Uint16Array]"]=er["[object Uint32Array]"]=!0,er["[object Arguments]"]=er["[object Array]"]=er["[object ArrayBuffer]"]=er["[object Boolean]"]=er["[object DataView]"]=er["[object Date]"]=er["[object Error]"]=er["[object Function]"]=er["[object Map]"]=er["[object Number]"]=er["[object Object]"]=er["[object RegExp]"]=er["[object Set]"]=er["[object String]"]=er["[object WeakMap]"]=!1;var rr,nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr&&Y.process,ir=function(){try{var t=or&&or.require&&or.require("util").types;return t||ar&&ar.binding&&ar.binding("util")}catch(t){}}(),ur=ir&&ir.isTypedArray,cr=ur?(rr=ur,function(t){return rr(t)}):function(t){return ft(t)&&Ge(t.length)&&!!er[it(t)]};function fr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var sr=Object.prototype.hasOwnProperty;function lr(t,e,r){var n=t[e];sr.call(t,e)&&Ht(n,r)&&(void 0!==r||e in t)||Te(t,e,r)}var pr=9007199254740991,hr=/^(?:0|[1-9]\d*)$/;function vr(t,e){var r=typeof t;return!!(e=null==e?pr:e)&&("number"==r||"symbol"!=r&&hr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=$r)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kr);function Nr(t,e){return Pr(function(t,e,r){return e=Er(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Er(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=zr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&vr(e,r.length):"string"==n&&e in r)&&Ht(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++ru))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&tn?new Qr:void 0;for(a.set(t,e),a.set(e,t);++s0))},Lo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Mo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Fo(r,t)})).length},Io=function(t,e){if(void 0===e&&(e=null),gt(t)){if(!e)return!0;if(Fo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Jr(r)||(!1!==(e=Lo(t))?!Wo({arg:r},e):!Mo(t)(r))})).length)})).length}return!1},Jo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Io.apply(null,n)};function Uo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Do=function(t,e){var r;switch(!0){case"object"===t:return!Jo(e);case"array"===t:return!Fo(e.arg);case!1!==(r=Lo(t)):return!Wo(e,r);default:return!Mo(t)(e.arg)}},Bo=function(t,e){return Jr(t)?!0!==e.optional||Jr(e.defaultvalue)?null:e.defaultvalue:t},Vo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Fo(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(!Fo(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 Uo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Uo(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:Uo(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?Bo(t,i):t,index:r,param:i,optional:a}}));default:throw Uo(5),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!!Eo(e)&&!(r.type.length>r.type.filter((function(e){return Do(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Do(e,t)})).length)}));return r?((n={})[y]=a,n[g]=o.map((function(t){return t.arg})),n):a},Ho=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Yo=function(t){return!Eo(t)};function Go(t,e){var r=So(e,(function(t,e){return!t[Co]}));return Vn(r,{})?t:function(t,e){var r={};return e=bo(e),Gr(t,(function(t,n,o){Te(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,bo((function(t){return t.alias===e})),Gr)||e}))}function Ko(t,e){return _o(e,(function(e,r){var n,o;return Jr(t[r])||!0===e[No]&&Yo(t[r])?xr({},e,((n={})[Ro]=!0,n)):((o={})[xo]=t[r],o[Po]=e[Po],o[No]=e[No]||!1,o[zo]=e[zo]||!1,o[qo]=e[qo]||!1,o)}))}function Qo(t,e){var r=function(t,e){var r=Go(t,e);return{pristineValues:_o(So(e,(function(t,e){return Ho(r,e)})),(function(t){return t.args})),checkAgainstAppProps:So(e,(function(t,e){return!Ho(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ko(n,r.checkAgainstAppProps),o]}var Xo=function(t){return Fo(t)?t:[t]};var Zo=function(t,e){return!Fo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ta=function(t,e){try{return!!re(e)&&e.apply(null,[t])}catch(t){return!1}};function ea(t){return function(e,r){if(e[Ro])return e[xo];var n=function(t,e){var r,n=[[t[xo]],[(r={},r[Po]=Xo(t[Po]),r[No]=t[No],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Uo("runValidationAction",r,e),new h(r,n);if(!1!==e[zo]&&!Zo(e[xo],e[zo]))throw Uo(zo,e[zo]),new p(r);if(!1!==e[qo]&&!ta(e[xo],e[qo]))throw Uo(qo,e[qo]),new v(r);return e[xo]}}var ra=function(t,e){return Promise.resolve(Qo(t,e))};function na(t,e,r,n){return void 0===t&&(t={}),ra(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=_o(r,ea(e));return xr(o,n)}(t,n)})).then((function(t){return xr({},t,r)}))}function oa(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Fo(n)&&(i[S]=n),re(o)&&(i[k]=o),Fr(a)&&(i[$]=a),i}var aa=$o,ia=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Vo(t,e,r);return r?a[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},ua=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return oa.apply(null,[t,e,n,o,a,i])},ca=function(t){return function(e,r,n){return void 0===n&&(n={}),na(e,r,n,t)}}(Vo),fa="jsonql-ws-client",sa=function(t){try{if(window.debug)return window.debug(fa).extend(t)}catch(t){}try{if(u.debug)return u.debug(fa).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[fa,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",fa+"*")}catch(t){}var la=new WeakMap,pa=new WeakMap;var ha=function(){this.__suspend__=null,this.queueStore=new Set},va={$suspend:{configurable:!0},$queues:{configurable:!0}};va.$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)},ha.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__},va.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ha.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(ha.prototype,va);var da=function(t){function e(){t.call(this,{logger:sa("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){la.set(this,t)},r.normalStore.get=function(){return la.get(this)},r.lazyStore.set=function(t){pa.set(this,t)},r.lazyStore.get=function(){return pa.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}(ha))),ga=(sa("process-contract"),function(t){var e=Rr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function ya(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Rr(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={})[q]=((e={})[b]=ga(n),e),r[C]=b,r)}var ba=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)}},ma=function(t,e){Jt(e).forEach((function(e){t.$off(Dt(e,N))}))},wa=sa("respondHandler");function ja(t,e,r){Ut(t,y)?(wa("-- rejecter called --",t[y]),r(t[y])):Ut(t,g)?(wa("-- resolver called --",t[g]),e(t[g])):(wa("-- UNKNOWN_RESULT --",t),r({message:V,error:t}))}var Oa=sa("action-call");function Sa(t,e,r,n){void 0===n&&(n=[]);var o=Dt(e,N);return Oa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Jt(n)]),new Promise((function(n,o){t.$on(Dt(e,r,R),(function(t){Oa("got the first result",t),ja(t,n,o)}))}))}var Ea=sa("setup-send"),ka=function(t,e,r,n,o){return qr(t,"send",(function(t){Ea("got payload for",t),ia(Jt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Sa(e,r,n,t);Ea("got ERROR_KEY",o[y]),e.$call(Dt(r,n,M),[new d(n,o[y])])})).catch((function(t){Ea("error after validateAsync",t),e.$call(Dt(r,n,M),[new d(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ia(t,o.params,!0).then((function(t){return Sa(e,r,n,t)})).catch(U)}}))},$a=(sa("setup-resolver"),function(t,e,r,n,o){return[Cr(t,"myNamespace",r),e,r,n,o]}),Ta=function(t,e,r,n,o){return[qr(t,R,(function(t){Bt(t)&&e.$on(Dt(r,n,R),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))})),e,r,n,o]},Aa=function(t,e,r,n,o){return[qr(t,"onMessage",(function(t){if(Bt(t)){e.$only(Dt(r,n,"onMessage"),(function(o){ja(o,t,(function(t){e.$trigger(Dt(r,n,M),t)}))}))}})),e,r,n,o]},Pa=function(t,e,r,n,o){return[qr(t,M,(function(t){Bt(t)&&e.$only(Dt(r,n,M),t)})),e,r,n,o]};function Na(t,e,r,n,o){var a=[n,o,t,e,r],i=Vt($a,Ta,Aa,Pa,ka);return Reflect.apply(i,null,a)}var za=sa("resolver-methods");function xa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ia(o,n.params,!0).then((function(n){return Sa(t,e,r,n)})).catch(U)}}var qa;sa("generator");function Ca(t,e,r){var n=e.nspSet;return function(t,e,r){var n={},o=e.nspSet;for(var a in o){var i=o[a];for(var u in i){var c=i[u];n=Cr(n,u,Na(a,u,c,xa(r,a,u,c),r))}}var f={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}};return Promise.resolve(Cr(n,"devHelpers",f))}(t,e,r).then((function(t){return function(t,e,r){return qr(t,M,(function(t){if(Bt(t))for(var n in r)e.$on(Dt(n,M),t)}))}(t,r,n)})).then((function(t){return function(t,e,r){return qr(t,F,(function(t){Bt(t)&&e.$on(F,t)}))}(t,r)})).then((function(e){return function(t,e,r){return r.enableAuth?qr(t,L,(function(t){Bt(t)&&e.$only(L,t)})):t}(e,r,t)})).then((function(e){return function(t,e,r){return r.enableAuth&&(t[r.loginHandlerName]=function(t){if(za(r.loginHandlerName,t),t&&aa(t))return e.$trigger(A,[t]);throw new d(r.loginHandlerName)},t[r.logoutHandlerName]=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}),t}(e,r,t)}))}var Ra={loginHandlerName:ua("login",["string"]),logoutHandlerName:ua("logout",["string"]),useJwt:ua(!0,["boolean","string"]),hostname:ua(!1,["string"]),namespace:ua(b,["string"]),wsOptions:ua({},["object"]),contract:ua({},["object"],(qa={},qa[k]=Ir,qa)),enableAuth:ua(!1,["boolean"]),token:ua(!1,["string"])},Ma=sa("check-options"),Fa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var La={version:"version: 0.7.0 module: umd",serverType:"ws"},Wa=null;"undefined"!=typeof WebSocket?Wa=WebSocket:"undefined"!=typeof MozWebSocket?Wa=MozWebSocket:void 0!==u?Wa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Wa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Wa=self.WebSocket||self.MozWebSocket);var Ia=Wa,Ja=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 Ua(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ja(e))}:function(e,r){var n=Ja(e),o=r&&"string"==typeof r?n+"?"+W+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Da(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ba=sa("client-event-handler"),Va=function(t,e){e.$only(Dt(t,B),(function(r,n){Ba("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Dt(t,r,M),[o]),e.$call(Dt(t,r,R),[{error:o}])}))},Ha=function(t){return t.length>1&&t[0]};function Ya(t,e,r,n,o,a){var i=Ha(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){Ba("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===D){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else Va(o,r)})),r.$on(P,(function(){Ba("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Dt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){ma(r,t),a[t]=!1,Va(t,r)}))}))}var Ga=["__reply__","__event__","__data__"],Ka=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Ga.filter((function(t){return Ut(e,t)})).length===Ga.length&&e)}(aa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new I("payload can not be decoded",t)},Qa=sa("ws-main-handler"),Xa="onMessage",Za=R,ti=B,ei=function(t,e,r,n){var o=[e];r&&(Qa("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Dt,null,o),i=n.data||n;t.$trigger(a,[i])};function ri(t,e,r,n){e.onopen=function(){Qa("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Dt(t,ti),(function(t,r){Qa("calling server",t,r),e.send(Wr(t,r))}))},e.onmessage=function(e){try{var n=Ka(e),o=n.resolverName,a=n.type;switch(Qa("Hear from server",a,n),a){case N:var i=Dt(t,o,Xa),u=r.$trigger(i,[n]);Qa("EMIT_REPLY_TYPE",i,u);break;case z:var c=Dt(t,o,Za);r.$trigger(c,[n]);Qa("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case x:Qa("ERROR_TYPE"),ei(r,t,o,n);break;default:Qa("Unhandled event!",n),ei(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),ei(r,t,!1,e)}},e.onclose=function(){Qa("ws.onclose callback")},r.$on(P,(function(){try{Qa("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}sa("ws-create-client");var ni=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=Da(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]=Da(!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 function(t,e){return ca(t,Ra,Object.assign(Fa,e)).then((function(t){return t.hostname||(t.hostname=_a()),t.wssPath=ba([t.hostname,t.namespace].join("/"),t.serverType),Ma("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:ya(t),ee:n||new da}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ca(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ua(t),r=Ua(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ri],o=t.token,a=ni(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ya,null,n.concat([u,i])),c&&r.$only(A,(function(o){ma(r,u);var a=ni(t,e,o);Reflect.apply(Ya,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ia),La)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),g=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,Error.captureStackTrace&&Error.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}(s),d="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onResult",M="onError",F="onReady",L="onLogin",W="message",U="result",I="error",J="ready",D="login",B="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,Error.captureStackTrace&&Error.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}(s),Y=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(t){if(Array.isArray(t))throw new g("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof g:throw new g(e,u);case t instanceof Y:throw new Y(e,u);default:throw new V(e,u)}}var G="socket.io",K=N,Q="UKNNOWN RESULT!",X="on",Z=Array.isArray,tt="object"==typeof u&&u&&u.Object===Object&&u,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 gt(t){return null!=t&&"object"==typeof t}var dt="[object Object]",yt=Function.prototype,bt=Object.prototype,_t=yt.toString,mt=bt.hasOwnProperty,wt=_t.call(Object);function jt(t){if(!gt(t)||pt(t)!=dt)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 Z(t)?t:[t]},Gt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Kt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Qt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Xt=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 Zt(t,e){return t===e||t!=t&&e!=e}function te(t,e){for(var r=t.length;r--;)if(Zt(t[r][0],e))return r;return-1}var ee=Array.prototype.splice;function re(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var oe="[object AsyncFunction]",ae="[object Function]",ie="[object GeneratorFunction]",ue="[object Proxy]";function ce(t){if(!ne(t))return!1;var e=pt(t);return e==ae||e==ie||e==oe||e==ue}var fe,se=rt["__core-js_shared__"],le=(fe=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+fe:"";var pe=Function.prototype.toString;function he(t){if(null!=t){try{return pe.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ve=/^\[object .+?Constructor\]$/,ge=Function.prototype,de=Object.prototype,ye=ge.toString,be=de.hasOwnProperty,_e=RegExp("^"+ye.call(be).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!ne(t)||(e=t,le&&le in e))&&(ce(t)?_e:ve).test(he(t));var e}function we(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var je=we(rt,"Map"),Oe=we(Object,"create");var Se="__lodash_hash_undefined__",Ee=Object.prototype.hasOwnProperty;var ke=Object.prototype.hasOwnProperty;var $e="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=tr}function rr(t){return null!=t&&er(t.length)&&!ce(t)}var nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr?rt.Buffer:void 0,ir=(ar?ar.isBuffer:void 0)||function(){return!1},ur={};ur["[object Float32Array]"]=ur["[object Float64Array]"]=ur["[object Int8Array]"]=ur["[object Int16Array]"]=ur["[object Int32Array]"]=ur["[object Uint8Array]"]=ur["[object Uint8ClampedArray]"]=ur["[object Uint16Array]"]=ur["[object Uint32Array]"]=!0,ur["[object Arguments]"]=ur["[object Array]"]=ur["[object ArrayBuffer]"]=ur["[object Boolean]"]=ur["[object DataView]"]=ur["[object Date]"]=ur["[object Error]"]=ur["[object Function]"]=ur["[object Map]"]=ur["[object Number]"]=ur["[object Object]"]=ur["[object RegExp]"]=ur["[object Set]"]=ur["[object String]"]=ur["[object WeakMap]"]=!1;var cr,fr="object"==typeof exports&&exports&&!exports.nodeType&&exports,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&tt.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),hr=pr&&pr.isTypedArray,vr=hr?(cr=hr,function(t){return cr(t)}):function(t){return gt(t)&&er(t.length)&&!!ur[pt(t)]};function gr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var dr=Object.prototype.hasOwnProperty;function yr(t,e,r){var n=t[e];dr.call(t,e)&&Zt(n,r)&&(void 0!==r||e in t)||xe(t,e,r)}var br=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function mr(t,e){var r=typeof t;return!!(e=null==e?br:e)&&("number"==r||"symbol"!=r&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++e>=zr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Rr);function Mr(t,e){return qr(function(t,e,r){return e=Nr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Nr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Fr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!ne(r))return!1;var n=typeof e;return!!("number"==n?rr(r)&&mr(e,r.length):"string"==n&&e in r)&&Zt(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 Ur(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 Ir(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Jr(t){return!!Gt(t,"socket")&&t.socket}var Dr="[object String]";function Br(t){return"string"==typeof t||!Z(t)&>(t)&&pt(t)==Dr}var Vr=function(t){var e;return(e={}).args=t,e};function Yr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Br(t)&&Z(e)){var o=Vr(e);return!0===r?o:((n={})[t]=o,n)}throw new g("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Hr=function(t){return jt(t)&&(Gt(t,_)||Gt(t,m)||Gt(t,w))};function Gr(t){return void 0===t}var Kr="[object Boolean]";var Qr="[object Number]";function Xr(t){return function(t){return"number"==typeof t||gt(t)&&pt(t)==Qr}(t)&&t!=+t}var Zr=ht(Object.keys,Object),tn=Object.prototype.hasOwnProperty;function en(t){return rr(t)?jr(t):function(t){if(!Ye(t))return Zr(t);var e=[];for(var r in Object(t))tn.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}function rn(t,e){return t&&Me(t,e,en)}var nn="__lodash_hash_undefined__";function on(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new Pe;++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&cn?new on:void 0;for(a.set(t,e),a.set(e,t);++s0))},Vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Yo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Do(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bo(r,t)})).length},Ho=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!!Gr(r)||(!1!==(e=Vo(t))?!Yo({arg:r},e):!Do(t)(r))})).length)})).length}return!1},Go=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Ho.apply(null,n)};function Ko(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Qo=function(t,e){var r;switch(!0){case"object"===t:return!Go(e);case"array"===t:return!Bo(e.arg);case!1!==(r=Vo(t)):return!Yo(e,r);default:return!Do(t)(e.arg)}},Xo=function(t,e){return Gr(t)?!0!==e.optional||Gr(e.defaultvalue)?null:e.defaultvalue:t},Zo=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 Ko(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ko(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:Ko(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?Xo(t,i):t,index:r,param:i,optional:a}}));default:throw Ko(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!!Ro(e)&&!(r.type.length>r.type.filter((function(e){return Qo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Qo(e,t)})).length)}));return r?((n={})[y]=a,n[d]=o.map((function(t){return t.arg})),n):a},ta=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ea=function(t){return!Ro(t)};function ra(t,e){var r=No(e,(function(t,e){return!t[Io]}));return Zn(r,{})?t:function(t,e){var r={};return e=Eo(e),rn(t,(function(t,n,o){xe(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})),rn)||e}))}function na(t,e){return ko(e,(function(e,r){var n,o;return Gr(t[r])||!0===e[Fo]&&ea(t[r])?Lr({},e,((n={})[Jo]=!0,n)):((o={})[Wo]=t[r],o[Mo]=e[Mo],o[Fo]=e[Fo]||!1,o[Lo]=e[Lo]||!1,o[Uo]=e[Uo]||!1,o)}))}function oa(t,e){var r=function(t,e){var r=ra(t,e);return{pristineValues:ko(No(e,(function(t,e){return ta(r,e)})),(function(t){return t.args})),checkAgainstAppProps:No(e,(function(t,e){return!ta(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[na(n,r.checkAgainstAppProps),o]}var aa=function(t){return Bo(t)?t:[t]};var ia=function(t,e){return!Bo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ua=function(t,e){try{return!!ce(e)&&e.apply(null,[t])}catch(t){return!1}};function ca(t){return function(e,r){if(e[Jo])return e[Wo];var n=function(t,e){var r,n=[[t[Wo]],[(r={},r[Mo]=aa(t[Mo]),r[Fo]=t[Fo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ko("runValidationAction",r,e),new h(r,n);if(!1!==e[Lo]&&!ia(e[Wo],e[Lo]))throw Ko(Lo,e[Lo]),new p(r);if(!1!==e[Uo]&&!ua(e[Wo],e[Uo]))throw Ko(Uo,e[Uo]),new v(r);return e[Wo]}}var fa=function(t,e){return Promise.resolve(oa(t,e))};function sa(t,e,r,n){return void 0===t&&(t={}),fa(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=ko(r,ca(e));return Lr(o,n)}(t,n)})).then((function(t){return Lr({},t,r)}))}function la(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Bo(n)&&(i[S]=n),ce(o)&&(i[k]=o),Br(a)&&(i[$]=a),i}var pa=xo,ha=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Zo(t,e,r);return r?a[y].length?o(a[y]):n(a[d]):a.length?o(a):n([])}))},va=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return la.apply(null,[t,e,n,o,a,i])},ga=function(t){return function(e,r,n){return void 0===n&&(n={}),sa(e,r,n,t)}}(Zo),da="jsonql-ws-client",ya=function(t){try{if(window.debug)return window.debug(da).extend(t)}catch(t){}try{if(u.debug)return u.debug(da).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[da,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",da+"*")}catch(t){}var ba=new WeakMap,_a=new WeakMap;var ma=function(){this.__suspend__=null,this.queueStore=new Set},wa={$suspend:{configurable:!0},$queues:{configurable:!0}};wa.$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)},ma.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__},wa.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ma.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(ma.prototype,wa);var ja=function(t){function e(){t.call(this,{logger:ya("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){ba.set(this,t)},r.normalStore.get=function(){return ba.get(this)},r.lazyStore.set=function(t){_a.set(this,t)},r.lazyStore.get=function(){return _a.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}(ma))),Oa=(ya("process-contract"),function(t){var e=Jr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function Sa(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Jr(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={})[x]=((e={})[b]=Oa(n),e),r[C]=b,r)}var Ea=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},ka=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},$a=function(t,e){Ht(e).forEach((function(e){t.$off(Kt(e,N))}))},Aa=ya("respondHandler");function Ta(t,e,r){Gt(t,y)?(Aa("-- rejecter called --",t[y]),r(t[y])):Gt(t,d)?(Aa("-- resolver called --",t[d]),e(t[d])):(Aa("-- UNKNOWN_RESULT --",t),r({message:Q,error:t}))}var Pa=ya("action-call");function Na(t,e,r,n){void 0===n&&(n=[]);var o=Kt(e,N);return Pa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Ht(n)]),new Promise((function(n,o){t.$on(Kt(e,r,q),(function(t){Pa("got the first result",t),Ta(t,n,o)}))}))}var Ra=ya("setup-send"),za=function(t,e,r,n,o){return Ur(t,"send",(function(t){Ra("got payload for",t),ha(Ht(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Na(e,r,n,t);Ra("got ERROR_KEY",o[y]),e.$call(Kt(r,n,M),[new g(n,o[y])])})).catch((function(t){Ra("error after validateAsync",t),e.$call(Kt(r,n,M),[new g(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ha(t,o.params,!0).then((function(t){return Na(e,r,n,t)})).catch(H)}}))};ya("setup-resolver");function xa(t,e,r,n,o){return[Ir(t,X,(function(t,o){if(pa(t)&&Qt(o))switch(t){case U:e.$on(Kt(r,n,ON_RESULT_PROP_NAME),(function(t){Ta(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case W:e.$only(Kt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Ta(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]}ya("setup-resolver");var Ca=function(t,e,r,n,o){return[Ir(t,"myNamespace",r),e,r,n,o]},qa=function(t,e,r,n,o){return[Ur(t,q,(function(t){Qt(t)&&e.$on(Kt(r,n,q),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))})),e,r,n,o]},Ma=function(t,e,r,n,o){return[Ur(t,"onMessage",(function(t){if(Qt(t)){e.$only(Kt(r,n,"onMessage"),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))}})),e,r,n,o]},Fa=function(t,e,r,n,o){return[Ur(t,M,(function(t){Qt(t)&&e.$only(Kt(r,n,M),t)})),e,r,n,o]};function La(t,e,r,n,o,a){var i=[Ca];a?i.push(xa):i.push(qa,Ma,Fa),i.push(za);var u=Reflect.apply(Xt,null,i);return Reflect.apply(u,null,[n,o,t,e,r])}ya("resolver-methods");function Wa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ha(o,n.params,!0).then((function(n){return Na(t,e,r,n)})).catch(H)}}var Ua=function(t,e,r){return[Ir(t,r.loginHandlerName,(function(t){if(t&&isString(t))return e.$trigger(T,[t]);throw new g(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ia=function(t,e,r){return Ir(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Ja;ya("generator");function Da(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=Ir(n,c,La(i,c,f,Wa(r,i,c,f),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Ba(t,e,r){var n=e.nspSet,o=[Da];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Ir(t,X,(function(t,n){if(pa(t)&&Qt(n))switch(t){case I:for(var o in r)e.$on(Kt(o,I),n);break;case D:e.$only(D,n);break;case J:e.$on(J,n);break;default:e.$trigger(I,new V(X,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ur(t,M,(function(t){if(Qt(t))for(var n in r)e.$on(Kt(n,M),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ur(t,F,(function(t){Qt(t)&&e.$on(F,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ur(t,L,(function(t){Qt(t)&&e.$only(L,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Xt(Ua,Ia)(t,e,r):t}(e,r,t)})),Reflect.apply(Wr,null,o)(t,e,r)}var Va={useCallbackStyle:va(!1,["boolean"]),loginHandlerName:va("login",["string"]),logoutHandlerName:va("logout",["string"]),useJwt:va(!0,["boolean","string"]),hostname:va(!1,["string"]),namespace:va(b,["string"]),wsOptions:va({},["object"]),contract:va({},["object"],(Ja={},Ja[k]=Hr,Ja)),enableAuth:va(!1,["boolean"]),token:va(!1,["string"])},Ya=ya("check-options"),Ha={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Ga={version:"version: 0.7.0 module: umd",serverType:"ws"},Ka=null;"undefined"!=typeof WebSocket?Ka=WebSocket:"undefined"!=typeof MozWebSocket?Ka=MozWebSocket:void 0!==u?Ka=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Ka=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ka=self.WebSocket||self.MozWebSocket);var Qa=Ka,Xa=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 Za(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Xa(e))}:function(e,r){var n=Xa(e),o=r&&"string"==typeof r?n+"?"+B+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ti(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var ei=ya("client-event-handler"),ri=function(t,e){e.$only(Kt(t,K),(function(r,n){ei("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Kt(t,r,M),[o]),e.$call(Kt(t,r,q),[{error:o}])}))},ni=function(t){return t.length>1&&t[0]};function oi(t,e,r,n,o,a){var i=ni(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){ei("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===G){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else ri(o,r)})),r.$on(P,(function(){ei("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Kt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){$a(r,t),a[t]=!1,ri(t,r)}))}))}var ai=["__reply__","__event__","__data__"],ii=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ai.filter((function(t){return Gt(e,t)})).length===ai.length&&e)}(pa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new V("payload can not be decoded",t)},ui=ya("ws-main-handler"),ci="onMessage",fi=q,si=K,li=function(t,e,r,n){var o=[e];r&&(ui("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Kt,null,o),i=n.data||n;t.$trigger(a,[i])};function pi(t,e,r,n){e.onopen=function(){ui("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Kt(t,si),(function(t,r){ui("calling server",t,r),e.send(Yr(t,r))}))},e.onmessage=function(e){try{var n=ii(e),o=n.resolverName,a=n.type;switch(ui("Hear from server",a,n),a){case N:var i=Kt(t,o,ci),u=r.$trigger(i,[n]);ui("EMIT_REPLY_TYPE",i,u);break;case R:var c=Kt(t,o,fi);r.$trigger(c,[n]);ui("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:ui("ERROR_TYPE"),li(r,t,o,n);break;default:ui("Unhandled event!",n),li(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),li(r,t,!1,e)}},e.onclose=function(){ui("ws.onclose callback")},r.$on(P,(function(){try{ui("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ya("ws-create-client");var hi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ti(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]=ti(!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 function(t,e){return ga(t,Va,Object.assign(Ha,e)).then((function(t){return t.hostname||(t.hostname=ka()),t.wssPath=Ea([t.hostname,t.namespace].join("/"),t.serverType),Ya("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:Sa(t),ee:n||new ja}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ba(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Za(t),r=Za(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,pi],o=t.token,a=hi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(oi,null,n.concat([u,i])),c&&r.$only(T,(function(o){$a(r,u);var a=hi(t,e,o);Reflect.apply(oi,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Qa),Ga)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 9d207b0a..0aa00174 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -41,8 +41,8 @@ "jsonql-errors": "^1.1.3", "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", - "jsonql-utils": "^0.8.0", - "jsonql-ws-client": "^1.2.0", + "jsonql-utils": "^0.8.1", + "jsonql-ws-client": "^1.3.0", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 442bc873..b66c6247 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.3.0", + "version": "1.3.1", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", diff --git a/packages/ws-client/src/options/defaults.js b/packages/ws-client/src/options/defaults.js index d826e961..f4a30923 100644 --- a/packages/ws-client/src/options/defaults.js +++ b/packages/ws-client/src/options/defaults.js @@ -10,14 +10,19 @@ import { CHECKER_KEY, JSONQL_PATH, ISSUER_NAME, - LOGOUT_NAME + LOGOUT_NAME, + IO_ROUNDTRIP_LOGIN, + IO_HANDSHAKE_LOGIN } from 'jsonql-constants' import { AVAILABLE_SERVERS } from './constants' +const AVAILABLE_METHODS = [IO_ROUNDTRIP_LOGIN, IO_HANDSHAKE_LOGIN] const defaultOptions = { useCallbackStyle: createConfig(false, [BOOLEAN_TYPE]), loginHandlerName: createConfig(ISSUER_NAME, [STRING_TYPE]), logoutHandlerName: createConfig(LOGOUT_NAME, [STRING_TYPE]), + // this is for socket.io + loginMethod: createConfig(IO_HANDSHAKE_LOGIN, [STRING_TYPE], {[ENUM_KEY]: AVAILABLE_METHODS}), // we will use this for determine the socket.io client type as well useJwt: createConfig(true, [BOOLEAN_TYPE, STRING_TYPE]), hostname: createConfig(false, [STRING_TYPE]), -- Gitee From ac375efeb8f578c637a9063b3081145e61dbf313 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 19:14:45 +0800 Subject: [PATCH 33/44] add new param for the useCallbackStyle --- .../@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- .../@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 2 +- packages/@jsonql/ws/src/core/create-client.js | 6 ---- packages/ws-client/src/core/action-call.js | 8 +++-- packages/ws-client/src/core/generator.js | 2 +- .../ws-client/src/core/resolver-methods.js | 5 +-- packages/ws-client/src/core/setup-resolver.js | 22 +++++++------ packages/ws-client/src/core/setup-send.js | 13 ++++---- .../src/share/client-event-handler.js | 31 ++++++++++--------- .../src/share/trigger-namespaces-on-error.js | 10 ++++-- 11 files changed, 55 insertions(+), 48 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index dc6ef533..375b716e 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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$1(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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString$1(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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$1(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 constructConfigFn.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$2=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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME$1),[{message:t,namespace:r}])}))}var debugFn$7=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$7("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME$1),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME$1),[{error:o}])}))},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];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$7("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$2(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"),ON_MESSAGE_PROP_NAME$2=ON_MESSAGE_PROP_NAME$1,ON_RESULT_PROP_NAME$2=ON_RESULT_PROP_NAME$1,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(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,ON_MESSAGE_PROP_NAME$2),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$2);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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$1(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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString$1(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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$1(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 constructConfigFn.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$2=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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME$1),[{message:t,namespace:r}])}))}var debugFn$7=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$7("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME$1),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME$1),[{error:o}])}))},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];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$7("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$2(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"),ON_MESSAGE_PROP_NAME$2=ON_MESSAGE_PROP_NAME$1,ON_RESULT_PROP_NAME$2=ON_RESULT_PROP_NAME$1,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(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,ON_MESSAGE_PROP_NAME$2),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$2);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 3bb68991..cc2e2751 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),g=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,Error.captureStackTrace&&Error.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}(s),d="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onResult",M="onError",F="onReady",L="onLogin",W="message",U="result",I="error",J="ready",D="login",B="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,Error.captureStackTrace&&Error.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}(s),Y=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(t){if(Array.isArray(t))throw new g("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof g:throw new g(e,u);case t instanceof Y:throw new Y(e,u);default:throw new V(e,u)}}var G="socket.io",K=N,Q="UKNNOWN RESULT!",X="on",Z=Array.isArray,tt="object"==typeof u&&u&&u.Object===Object&&u,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 gt(t){return null!=t&&"object"==typeof t}var dt="[object Object]",yt=Function.prototype,bt=Object.prototype,_t=yt.toString,mt=bt.hasOwnProperty,wt=_t.call(Object);function jt(t){if(!gt(t)||pt(t)!=dt)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 Z(t)?t:[t]},Gt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Kt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Qt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Xt=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 Zt(t,e){return t===e||t!=t&&e!=e}function te(t,e){for(var r=t.length;r--;)if(Zt(t[r][0],e))return r;return-1}var ee=Array.prototype.splice;function re(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var oe="[object AsyncFunction]",ae="[object Function]",ie="[object GeneratorFunction]",ue="[object Proxy]";function ce(t){if(!ne(t))return!1;var e=pt(t);return e==ae||e==ie||e==oe||e==ue}var fe,se=rt["__core-js_shared__"],le=(fe=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+fe:"";var pe=Function.prototype.toString;function he(t){if(null!=t){try{return pe.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ve=/^\[object .+?Constructor\]$/,ge=Function.prototype,de=Object.prototype,ye=ge.toString,be=de.hasOwnProperty,_e=RegExp("^"+ye.call(be).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!ne(t)||(e=t,le&&le in e))&&(ce(t)?_e:ve).test(he(t));var e}function we(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var je=we(rt,"Map"),Oe=we(Object,"create");var Se="__lodash_hash_undefined__",Ee=Object.prototype.hasOwnProperty;var ke=Object.prototype.hasOwnProperty;var $e="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=tr}function rr(t){return null!=t&&er(t.length)&&!ce(t)}var nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr?rt.Buffer:void 0,ir=(ar?ar.isBuffer:void 0)||function(){return!1},ur={};ur["[object Float32Array]"]=ur["[object Float64Array]"]=ur["[object Int8Array]"]=ur["[object Int16Array]"]=ur["[object Int32Array]"]=ur["[object Uint8Array]"]=ur["[object Uint8ClampedArray]"]=ur["[object Uint16Array]"]=ur["[object Uint32Array]"]=!0,ur["[object Arguments]"]=ur["[object Array]"]=ur["[object ArrayBuffer]"]=ur["[object Boolean]"]=ur["[object DataView]"]=ur["[object Date]"]=ur["[object Error]"]=ur["[object Function]"]=ur["[object Map]"]=ur["[object Number]"]=ur["[object Object]"]=ur["[object RegExp]"]=ur["[object Set]"]=ur["[object String]"]=ur["[object WeakMap]"]=!1;var cr,fr="object"==typeof exports&&exports&&!exports.nodeType&&exports,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&tt.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),hr=pr&&pr.isTypedArray,vr=hr?(cr=hr,function(t){return cr(t)}):function(t){return gt(t)&&er(t.length)&&!!ur[pt(t)]};function gr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var dr=Object.prototype.hasOwnProperty;function yr(t,e,r){var n=t[e];dr.call(t,e)&&Zt(n,r)&&(void 0!==r||e in t)||xe(t,e,r)}var br=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function mr(t,e){var r=typeof t;return!!(e=null==e?br:e)&&("number"==r||"symbol"!=r&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++e>=zr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Rr);function Mr(t,e){return qr(function(t,e,r){return e=Nr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Nr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Fr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!ne(r))return!1;var n=typeof e;return!!("number"==n?rr(r)&&mr(e,r.length):"string"==n&&e in r)&&Zt(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 Ur(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 Ir(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Jr(t){return!!Gt(t,"socket")&&t.socket}var Dr="[object String]";function Br(t){return"string"==typeof t||!Z(t)&>(t)&&pt(t)==Dr}var Vr=function(t){var e;return(e={}).args=t,e};function Yr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Br(t)&&Z(e)){var o=Vr(e);return!0===r?o:((n={})[t]=o,n)}throw new g("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Hr=function(t){return jt(t)&&(Gt(t,_)||Gt(t,m)||Gt(t,w))};function Gr(t){return void 0===t}var Kr="[object Boolean]";var Qr="[object Number]";function Xr(t){return function(t){return"number"==typeof t||gt(t)&&pt(t)==Qr}(t)&&t!=+t}var Zr=ht(Object.keys,Object),tn=Object.prototype.hasOwnProperty;function en(t){return rr(t)?jr(t):function(t){if(!Ye(t))return Zr(t);var e=[];for(var r in Object(t))tn.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}function rn(t,e){return t&&Me(t,e,en)}var nn="__lodash_hash_undefined__";function on(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new Pe;++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&cn?new on:void 0;for(a.set(t,e),a.set(e,t);++s0))},Vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Yo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Do(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bo(r,t)})).length},Ho=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!!Gr(r)||(!1!==(e=Vo(t))?!Yo({arg:r},e):!Do(t)(r))})).length)})).length}return!1},Go=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Ho.apply(null,n)};function Ko(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Qo=function(t,e){var r;switch(!0){case"object"===t:return!Go(e);case"array"===t:return!Bo(e.arg);case!1!==(r=Vo(t)):return!Yo(e,r);default:return!Do(t)(e.arg)}},Xo=function(t,e){return Gr(t)?!0!==e.optional||Gr(e.defaultvalue)?null:e.defaultvalue:t},Zo=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 Ko(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ko(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:Ko(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?Xo(t,i):t,index:r,param:i,optional:a}}));default:throw Ko(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!!Ro(e)&&!(r.type.length>r.type.filter((function(e){return Qo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Qo(e,t)})).length)}));return r?((n={})[y]=a,n[d]=o.map((function(t){return t.arg})),n):a},ta=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ea=function(t){return!Ro(t)};function ra(t,e){var r=No(e,(function(t,e){return!t[Io]}));return Zn(r,{})?t:function(t,e){var r={};return e=Eo(e),rn(t,(function(t,n,o){xe(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})),rn)||e}))}function na(t,e){return ko(e,(function(e,r){var n,o;return Gr(t[r])||!0===e[Fo]&&ea(t[r])?Lr({},e,((n={})[Jo]=!0,n)):((o={})[Wo]=t[r],o[Mo]=e[Mo],o[Fo]=e[Fo]||!1,o[Lo]=e[Lo]||!1,o[Uo]=e[Uo]||!1,o)}))}function oa(t,e){var r=function(t,e){var r=ra(t,e);return{pristineValues:ko(No(e,(function(t,e){return ta(r,e)})),(function(t){return t.args})),checkAgainstAppProps:No(e,(function(t,e){return!ta(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[na(n,r.checkAgainstAppProps),o]}var aa=function(t){return Bo(t)?t:[t]};var ia=function(t,e){return!Bo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ua=function(t,e){try{return!!ce(e)&&e.apply(null,[t])}catch(t){return!1}};function ca(t){return function(e,r){if(e[Jo])return e[Wo];var n=function(t,e){var r,n=[[t[Wo]],[(r={},r[Mo]=aa(t[Mo]),r[Fo]=t[Fo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ko("runValidationAction",r,e),new h(r,n);if(!1!==e[Lo]&&!ia(e[Wo],e[Lo]))throw Ko(Lo,e[Lo]),new p(r);if(!1!==e[Uo]&&!ua(e[Wo],e[Uo]))throw Ko(Uo,e[Uo]),new v(r);return e[Wo]}}var fa=function(t,e){return Promise.resolve(oa(t,e))};function sa(t,e,r,n){return void 0===t&&(t={}),fa(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=ko(r,ca(e));return Lr(o,n)}(t,n)})).then((function(t){return Lr({},t,r)}))}function la(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Bo(n)&&(i[S]=n),ce(o)&&(i[k]=o),Br(a)&&(i[$]=a),i}var pa=xo,ha=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Zo(t,e,r);return r?a[y].length?o(a[y]):n(a[d]):a.length?o(a):n([])}))},va=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return la.apply(null,[t,e,n,o,a,i])},ga=function(t){return function(e,r,n){return void 0===n&&(n={}),sa(e,r,n,t)}}(Zo),da="jsonql-ws-client",ya=function(t){try{if(window.debug)return window.debug(da).extend(t)}catch(t){}try{if(u.debug)return u.debug(da).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[da,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",da+"*")}catch(t){}var ba=new WeakMap,_a=new WeakMap;var ma=function(){this.__suspend__=null,this.queueStore=new Set},wa={$suspend:{configurable:!0},$queues:{configurable:!0}};wa.$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)},ma.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__},wa.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ma.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(ma.prototype,wa);var ja=function(t){function e(){t.call(this,{logger:ya("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){ba.set(this,t)},r.normalStore.get=function(){return ba.get(this)},r.lazyStore.set=function(t){_a.set(this,t)},r.lazyStore.get=function(){return _a.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}(ma))),Oa=(ya("process-contract"),function(t){var e=Jr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function Sa(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Jr(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={})[x]=((e={})[b]=Oa(n),e),r[C]=b,r)}var Ea=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},ka=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},$a=function(t,e){Ht(e).forEach((function(e){t.$off(Kt(e,N))}))},Aa=ya("respondHandler");function Ta(t,e,r){Gt(t,y)?(Aa("-- rejecter called --",t[y]),r(t[y])):Gt(t,d)?(Aa("-- resolver called --",t[d]),e(t[d])):(Aa("-- UNKNOWN_RESULT --",t),r({message:Q,error:t}))}var Pa=ya("action-call");function Na(t,e,r,n){void 0===n&&(n=[]);var o=Kt(e,N);return Pa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Ht(n)]),new Promise((function(n,o){t.$on(Kt(e,r,q),(function(t){Pa("got the first result",t),Ta(t,n,o)}))}))}var Ra=ya("setup-send"),za=function(t,e,r,n,o){return Ur(t,"send",(function(t){Ra("got payload for",t),ha(Ht(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Na(e,r,n,t);Ra("got ERROR_KEY",o[y]),e.$call(Kt(r,n,M),[new g(n,o[y])])})).catch((function(t){Ra("error after validateAsync",t),e.$call(Kt(r,n,M),[new g(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ha(t,o.params,!0).then((function(t){return Na(e,r,n,t)})).catch(H)}}))};ya("setup-resolver");function xa(t,e,r,n,o){return[Ir(t,X,(function(t,o){if(pa(t)&&Qt(o))switch(t){case U:e.$on(Kt(r,n,ON_RESULT_PROP_NAME),(function(t){Ta(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case W:e.$only(Kt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Ta(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]}ya("setup-resolver");var Ca=function(t,e,r,n,o){return[Ir(t,"myNamespace",r),e,r,n,o]},qa=function(t,e,r,n,o){return[Ur(t,q,(function(t){Qt(t)&&e.$on(Kt(r,n,q),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))})),e,r,n,o]},Ma=function(t,e,r,n,o){return[Ur(t,"onMessage",(function(t){if(Qt(t)){e.$only(Kt(r,n,"onMessage"),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))}})),e,r,n,o]},Fa=function(t,e,r,n,o){return[Ur(t,M,(function(t){Qt(t)&&e.$only(Kt(r,n,M),t)})),e,r,n,o]};function La(t,e,r,n,o,a){var i=[Ca];a?i.push(xa):i.push(qa,Ma,Fa),i.push(za);var u=Reflect.apply(Xt,null,i);return Reflect.apply(u,null,[n,o,t,e,r])}ya("resolver-methods");function Wa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ha(o,n.params,!0).then((function(n){return Na(t,e,r,n)})).catch(H)}}var Ua=function(t,e,r){return[Ir(t,r.loginHandlerName,(function(t){if(t&&isString(t))return e.$trigger(T,[t]);throw new g(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ia=function(t,e,r){return Ir(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Ja;ya("generator");function Da(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=Ir(n,c,La(i,c,f,Wa(r,i,c,f),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Ba(t,e,r){var n=e.nspSet,o=[Da];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Ir(t,X,(function(t,n){if(pa(t)&&Qt(n))switch(t){case I:for(var o in r)e.$on(Kt(o,I),n);break;case D:e.$only(D,n);break;case J:e.$on(J,n);break;default:e.$trigger(I,new V(X,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ur(t,M,(function(t){if(Qt(t))for(var n in r)e.$on(Kt(n,M),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ur(t,F,(function(t){Qt(t)&&e.$on(F,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ur(t,L,(function(t){Qt(t)&&e.$only(L,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Xt(Ua,Ia)(t,e,r):t}(e,r,t)})),Reflect.apply(Wr,null,o)(t,e,r)}var Va={useCallbackStyle:va(!1,["boolean"]),loginHandlerName:va("login",["string"]),logoutHandlerName:va("logout",["string"]),useJwt:va(!0,["boolean","string"]),hostname:va(!1,["string"]),namespace:va(b,["string"]),wsOptions:va({},["object"]),contract:va({},["object"],(Ja={},Ja[k]=Hr,Ja)),enableAuth:va(!1,["boolean"]),token:va(!1,["string"])},Ya=ya("check-options"),Ha={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Ga={version:"version: 0.7.0 module: umd",serverType:"ws"},Ka=null;"undefined"!=typeof WebSocket?Ka=WebSocket:"undefined"!=typeof MozWebSocket?Ka=MozWebSocket:void 0!==u?Ka=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Ka=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ka=self.WebSocket||self.MozWebSocket);var Qa=Ka,Xa=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 Za(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Xa(e))}:function(e,r){var n=Xa(e),o=r&&"string"==typeof r?n+"?"+B+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ti(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var ei=ya("client-event-handler"),ri=function(t,e){e.$only(Kt(t,K),(function(r,n){ei("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Kt(t,r,M),[o]),e.$call(Kt(t,r,q),[{error:o}])}))},ni=function(t){return t.length>1&&t[0]};function oi(t,e,r,n,o,a){var i=ni(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){ei("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===G){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else ri(o,r)})),r.$on(P,(function(){ei("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Kt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){$a(r,t),a[t]=!1,ri(t,r)}))}))}var ai=["__reply__","__event__","__data__"],ii=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ai.filter((function(t){return Gt(e,t)})).length===ai.length&&e)}(pa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new V("payload can not be decoded",t)},ui=ya("ws-main-handler"),ci="onMessage",fi=q,si=K,li=function(t,e,r,n){var o=[e];r&&(ui("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Kt,null,o),i=n.data||n;t.$trigger(a,[i])};function pi(t,e,r,n){e.onopen=function(){ui("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Kt(t,si),(function(t,r){ui("calling server",t,r),e.send(Yr(t,r))}))},e.onmessage=function(e){try{var n=ii(e),o=n.resolverName,a=n.type;switch(ui("Hear from server",a,n),a){case N:var i=Kt(t,o,ci),u=r.$trigger(i,[n]);ui("EMIT_REPLY_TYPE",i,u);break;case R:var c=Kt(t,o,fi);r.$trigger(c,[n]);ui("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:ui("ERROR_TYPE"),li(r,t,o,n);break;default:ui("Unhandled event!",n),li(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),li(r,t,!1,e)}},e.onclose=function(){ui("ws.onclose callback")},r.$on(P,(function(){try{ui("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ya("ws-create-client");var hi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ti(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]=ti(!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 function(t,e){return ga(t,Va,Object.assign(Ha,e)).then((function(t){return t.hostname||(t.hostname=ka()),t.wssPath=Ea([t.hostname,t.namespace].join("/"),t.serverType),Ya("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:Sa(t),ee:n||new ja}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ba(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Za(t),r=Za(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,pi],o=t.token,a=hi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(oi,null,n.concat([u,i])),c&&r.$only(T,(function(o){$a(r,u);var a=hi(t,e,o);Reflect.apply(oi,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Qa),Ga)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),g=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,Error.captureStackTrace&&Error.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}(s),d="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onResult",M="onError",F="onReady",L="onLogin",W="message",U="result",I="error",J="ready",D="login",B="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,Error.captureStackTrace&&Error.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}(s),Y=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(t){if(Array.isArray(t))throw new g("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof g:throw new g(e,u);case t instanceof Y:throw new Y(e,u);default:throw new V(e,u)}}var G="socket.io",K=N,Q="UKNNOWN RESULT!",X="on",Z=Array.isArray,tt="object"==typeof u&&u&&u.Object===Object&&u,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 gt(t){return null!=t&&"object"==typeof t}var dt="[object Object]",yt=Function.prototype,bt=Object.prototype,_t=yt.toString,mt=bt.hasOwnProperty,wt=_t.call(Object);function jt(t){if(!gt(t)||pt(t)!=dt)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 Z(t)?t:[t]},Gt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Kt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Qt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Xt=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 Zt(t,e){return t===e||t!=t&&e!=e}function te(t,e){for(var r=t.length;r--;)if(Zt(t[r][0],e))return r;return-1}var ee=Array.prototype.splice;function re(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var oe="[object AsyncFunction]",ae="[object Function]",ie="[object GeneratorFunction]",ue="[object Proxy]";function ce(t){if(!ne(t))return!1;var e=pt(t);return e==ae||e==ie||e==oe||e==ue}var fe,se=rt["__core-js_shared__"],le=(fe=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+fe:"";var pe=Function.prototype.toString;function he(t){if(null!=t){try{return pe.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ve=/^\[object .+?Constructor\]$/,ge=Function.prototype,de=Object.prototype,ye=ge.toString,be=de.hasOwnProperty,_e=RegExp("^"+ye.call(be).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!ne(t)||(e=t,le&&le in e))&&(ce(t)?_e:ve).test(he(t));var e}function we(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var je=we(rt,"Map"),Oe=we(Object,"create");var Se="__lodash_hash_undefined__",Ee=Object.prototype.hasOwnProperty;var ke=Object.prototype.hasOwnProperty;var $e="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=tr}function rr(t){return null!=t&&er(t.length)&&!ce(t)}var nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr?rt.Buffer:void 0,ir=(ar?ar.isBuffer:void 0)||function(){return!1},ur={};ur["[object Float32Array]"]=ur["[object Float64Array]"]=ur["[object Int8Array]"]=ur["[object Int16Array]"]=ur["[object Int32Array]"]=ur["[object Uint8Array]"]=ur["[object Uint8ClampedArray]"]=ur["[object Uint16Array]"]=ur["[object Uint32Array]"]=!0,ur["[object Arguments]"]=ur["[object Array]"]=ur["[object ArrayBuffer]"]=ur["[object Boolean]"]=ur["[object DataView]"]=ur["[object Date]"]=ur["[object Error]"]=ur["[object Function]"]=ur["[object Map]"]=ur["[object Number]"]=ur["[object Object]"]=ur["[object RegExp]"]=ur["[object Set]"]=ur["[object String]"]=ur["[object WeakMap]"]=!1;var cr,fr="object"==typeof exports&&exports&&!exports.nodeType&&exports,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&tt.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),hr=pr&&pr.isTypedArray,vr=hr?(cr=hr,function(t){return cr(t)}):function(t){return gt(t)&&er(t.length)&&!!ur[pt(t)]};function gr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var dr=Object.prototype.hasOwnProperty;function yr(t,e,r){var n=t[e];dr.call(t,e)&&Zt(n,r)&&(void 0!==r||e in t)||xe(t,e,r)}var br=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function mr(t,e){var r=typeof t;return!!(e=null==e?br:e)&&("number"==r||"symbol"!=r&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++e>=zr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Rr);function Mr(t,e){return qr(function(t,e,r){return e=Nr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Nr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Fr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!ne(r))return!1;var n=typeof e;return!!("number"==n?rr(r)&&mr(e,r.length):"string"==n&&e in r)&&Zt(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 Ur(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 Ir(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Jr(t){return!!Gt(t,"socket")&&t.socket}var Dr="[object String]";function Br(t){return"string"==typeof t||!Z(t)&>(t)&&pt(t)==Dr}var Vr=function(t){var e;return(e={}).args=t,e};function Yr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Br(t)&&Z(e)){var o=Vr(e);return!0===r?o:((n={})[t]=o,n)}throw new g("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Hr=function(t){return jt(t)&&(Gt(t,_)||Gt(t,m)||Gt(t,w))};function Gr(t){return void 0===t}var Kr="[object Boolean]";var Qr="[object Number]";function Xr(t){return function(t){return"number"==typeof t||gt(t)&&pt(t)==Qr}(t)&&t!=+t}var Zr=ht(Object.keys,Object),tn=Object.prototype.hasOwnProperty;function en(t){return rr(t)?jr(t):function(t){if(!Ye(t))return Zr(t);var e=[];for(var r in Object(t))tn.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}function rn(t,e){return t&&Me(t,e,en)}var nn="__lodash_hash_undefined__";function on(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new Pe;++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&cn?new on:void 0;for(a.set(t,e),a.set(e,t);++s0))},Vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Yo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Do(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bo(r,t)})).length},Ho=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!!Gr(r)||(!1!==(e=Vo(t))?!Yo({arg:r},e):!Do(t)(r))})).length)})).length}return!1},Go=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Ho.apply(null,n)};function Ko(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Qo=function(t,e){var r;switch(!0){case"object"===t:return!Go(e);case"array"===t:return!Bo(e.arg);case!1!==(r=Vo(t)):return!Yo(e,r);default:return!Do(t)(e.arg)}},Xo=function(t,e){return Gr(t)?!0!==e.optional||Gr(e.defaultvalue)?null:e.defaultvalue:t},Zo=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 Ko(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ko(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:Ko(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?Xo(t,i):t,index:r,param:i,optional:a}}));default:throw Ko(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!!Ro(e)&&!(r.type.length>r.type.filter((function(e){return Qo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Qo(e,t)})).length)}));return r?((n={})[y]=a,n[d]=o.map((function(t){return t.arg})),n):a},ta=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ea=function(t){return!Ro(t)};function ra(t,e){var r=No(e,(function(t,e){return!t[Io]}));return Zn(r,{})?t:function(t,e){var r={};return e=Eo(e),rn(t,(function(t,n,o){xe(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})),rn)||e}))}function na(t,e){return ko(e,(function(e,r){var n,o;return Gr(t[r])||!0===e[Fo]&&ea(t[r])?Lr({},e,((n={})[Jo]=!0,n)):((o={})[Wo]=t[r],o[Mo]=e[Mo],o[Fo]=e[Fo]||!1,o[Lo]=e[Lo]||!1,o[Uo]=e[Uo]||!1,o)}))}function oa(t,e){var r=function(t,e){var r=ra(t,e);return{pristineValues:ko(No(e,(function(t,e){return ta(r,e)})),(function(t){return t.args})),checkAgainstAppProps:No(e,(function(t,e){return!ta(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[na(n,r.checkAgainstAppProps),o]}var aa=function(t){return Bo(t)?t:[t]};var ia=function(t,e){return!Bo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ua=function(t,e){try{return!!ce(e)&&e.apply(null,[t])}catch(t){return!1}};function ca(t){return function(e,r){if(e[Jo])return e[Wo];var n=function(t,e){var r,n=[[t[Wo]],[(r={},r[Mo]=aa(t[Mo]),r[Fo]=t[Fo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ko("runValidationAction",r,e),new h(r,n);if(!1!==e[Lo]&&!ia(e[Wo],e[Lo]))throw Ko(Lo,e[Lo]),new p(r);if(!1!==e[Uo]&&!ua(e[Wo],e[Uo]))throw Ko(Uo,e[Uo]),new v(r);return e[Wo]}}var fa=function(t,e){return Promise.resolve(oa(t,e))};function sa(t,e,r,n){return void 0===t&&(t={}),fa(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=ko(r,ca(e));return Lr(o,n)}(t,n)})).then((function(t){return Lr({},t,r)}))}function la(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Bo(n)&&(i[S]=n),ce(o)&&(i[k]=o),Br(a)&&(i[$]=a),i}var pa=xo,ha=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Zo(t,e,r);return r?a[y].length?o(a[y]):n(a[d]):a.length?o(a):n([])}))},va=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return la.apply(null,[t,e,n,o,a,i])},ga=function(t){return function(e,r,n){return void 0===n&&(n={}),sa(e,r,n,t)}}(Zo),da="jsonql-ws-client",ya=function(t){try{if(window.debug)return window.debug(da).extend(t)}catch(t){}try{if(u.debug)return u.debug(da).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[da,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",da+"*")}catch(t){}var ba=new WeakMap,_a=new WeakMap;var ma=function(){this.__suspend__=null,this.queueStore=new Set},wa={$suspend:{configurable:!0},$queues:{configurable:!0}};wa.$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)},ma.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__},wa.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ma.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(ma.prototype,wa);var ja=function(t){function e(){t.call(this,{logger:ya("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){ba.set(this,t)},r.normalStore.get=function(){return ba.get(this)},r.lazyStore.set=function(t){_a.set(this,t)},r.lazyStore.get=function(){return _a.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}(ma))),Oa=(ya("process-contract"),function(t){var e=Jr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function Sa(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Jr(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={})[x]=((e={})[b]=Oa(n),e),r[C]=b,r)}var Ea=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},ka=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},$a=function(t,e){Ht(e).forEach((function(e){t.$off(Kt(e,N))}))},Aa=ya("respondHandler");function Ta(t,e,r){Gt(t,y)?(Aa("-- rejecter called --",t[y]),r(t[y])):Gt(t,d)?(Aa("-- resolver called --",t[d]),e(t[d])):(Aa("-- UNKNOWN_RESULT --",t),r({message:Q,error:t}))}var Pa=ya("action-call");function Na(t,e,r,n){void 0===n&&(n=[]);var o=Kt(e,N);return Pa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Ht(n)]),new Promise((function(n,o){t.$on(Kt(e,r,q),(function(t){Pa("got the first result",t),Ta(t,n,o)}))}))}var Ra=ya("setup-send"),za=function(t,e,r,n,o){return Ur(t,"send",(function(t){Ra("got payload for",t),ha(Ht(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Na(e,r,n,t);Ra("got ERROR_KEY",o[y]),e.$call(Kt(r,n,M),[new g(n,o[y])])})).catch((function(t){Ra("error after validateAsync",t),e.$call(Kt(r,n,M),[new g(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ha(t,o.params,!0).then((function(t){return Na(e,r,n,t)})).catch(H)}}))};ya("setup-resolver");function xa(t,e,r,n,o){return[Ir(t,X,(function(t,o){if(pa(t)&&Qt(o))switch(t){case U:e.$on(Kt(r,n,ON_RESULT_PROP_NAME),(function(t){Ta(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case W:e.$only(Kt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Ta(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]}ya("setup-resolver");var Ca=function(t,e,r,n,o){return[Ir(t,"myNamespace",r),e,r,n,o]},qa=function(t,e,r,n,o){return[Ur(t,q,(function(t){Qt(t)&&e.$on(Kt(r,n,q),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))})),e,r,n,o]},Ma=function(t,e,r,n,o){return[Ur(t,"onMessage",(function(t){if(Qt(t)){e.$only(Kt(r,n,"onMessage"),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))}})),e,r,n,o]},Fa=function(t,e,r,n,o){return[Ur(t,M,(function(t){Qt(t)&&e.$only(Kt(r,n,M),t)})),e,r,n,o]};function La(t,e,r,n,o,a){var i=[Ca];a?i.push(xa):i.push(qa,Ma,Fa),i.push(za);var u=Reflect.apply(Xt,null,i);return Reflect.apply(u,null,[n,o,t,e,r])}ya("resolver-methods");function Wa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ha(o,n.params,!0).then((function(n){return Na(t,e,r,n)})).catch(H)}}var Ua=function(t,e,r){return[Ir(t,r.loginHandlerName,(function(t){if(t&&isString(t))return e.$trigger(T,[t]);throw new g(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ia=function(t,e,r){return Ir(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Ja,Da;ya("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=Ir(n,c,La(i,c,f,Wa(r,i,c,f),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Va(t,e,r){var n=e.nspSet,o=[Ba];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Ir(t,X,(function(t,n){if(pa(t)&&Qt(n))switch(t){case I:for(var o in r)e.$on(Kt(o,I),n);break;case D:e.$only(D,n);break;case J:e.$on(J,n);break;default:e.$trigger(I,new V(X,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ur(t,M,(function(t){if(Qt(t))for(var n in r)e.$on(Kt(n,M),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ur(t,F,(function(t){Qt(t)&&e.$on(F,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ur(t,L,(function(t){Qt(t)&&e.$only(L,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Xt(Ua,Ia)(t,e,r):t}(e,r,t)})),Reflect.apply(Wr,null,o)(t,e,r)}var Ya=["roundtip","handshake"],Ha={useCallbackStyle:va(!1,["boolean"]),loginHandlerName:va("login",["string"]),logoutHandlerName:va("logout",["string"]),loginMethod:va("handshake",["string"],(Ja={},Ja[S]=Ya,Ja)),useJwt:va(!0,["boolean","string"]),hostname:va(!1,["string"]),namespace:va(b,["string"]),wsOptions:va({},["object"]),contract:va({},["object"],(Da={},Da[k]=Hr,Da)),enableAuth:va(!1,["boolean"]),token:va(!1,["string"])},Ga=ya("check-options"),Ka={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Qa={version:"version: 0.7.0 module: umd",serverType:"ws"},Xa=null;"undefined"!=typeof WebSocket?Xa=WebSocket:"undefined"!=typeof MozWebSocket?Xa=MozWebSocket:void 0!==u?Xa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Xa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Xa=self.WebSocket||self.MozWebSocket);var Za=Xa,ti=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 ei(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ti(e))}:function(e,r){var n=ti(e),o=r&&"string"==typeof r?n+"?"+B+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ri(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var ni=ya("client-event-handler"),oi=function(t,e){e.$only(Kt(t,K),(function(r,n){ni("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Kt(t,r,M),[o]),e.$call(Kt(t,r,q),[{error:o}])}))},ai=function(t){return t.length>1&&t[0]};function ii(t,e,r,n,o,a){var i=ai(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){ni("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===G){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else oi(o,r)})),r.$on(P,(function(){ni("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Kt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){$a(r,t),a[t]=!1,oi(t,r)}))}))}var ui=["__reply__","__event__","__data__"],ci=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ui.filter((function(t){return Gt(e,t)})).length===ui.length&&e)}(pa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new V("payload can not be decoded",t)},fi=ya("ws-main-handler"),si="onMessage",li=q,pi=K,hi=function(t,e,r,n){var o=[e];r&&(fi("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Kt,null,o),i=n.data||n;t.$trigger(a,[i])};function vi(t,e,r,n){e.onopen=function(){fi("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Kt(t,pi),(function(t,r){fi("calling server",t,r),e.send(Yr(t,r))}))},e.onmessage=function(e){try{var n=ci(e),o=n.resolverName,a=n.type;switch(fi("Hear from server",a,n),a){case N:var i=Kt(t,o,si),u=r.$trigger(i,[n]);fi("EMIT_REPLY_TYPE",i,u);break;case R:var c=Kt(t,o,li);r.$trigger(c,[n]);fi("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:fi("ERROR_TYPE"),hi(r,t,o,n);break;default:fi("Unhandled event!",n),hi(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),hi(r,t,!1,e)}},e.onclose=function(){fi("ws.onclose callback")},r.$on(P,(function(){try{fi("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ya("ws-create-client");var gi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ri(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]=ri(!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 function(t,e){return ga(t,Ha,Object.assign(Ka,e)).then((function(t){return t.hostname||(t.hostname=ka()),t.wssPath=Ea([t.hostname,t.namespace].join("/"),t.serverType),Ga("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:Sa(t),ee:n||new ja}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Va(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=ei(t),r=ei(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,vi],o=t.token,a=gi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ii,null,n.concat([u,i])),c&&r.$only(T,(function(o){$a(r,u);var a=gi(t,e,o);Reflect.apply(ii,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Za),Qa)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 0aa00174..2b081e92 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -42,7 +42,7 @@ "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.8.1", - "jsonql-ws-client": "^1.3.0", + "jsonql-ws-client": "^1.3.1", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/@jsonql/ws/src/core/create-client.js b/packages/@jsonql/ws/src/core/create-client.js index b354dc4f..44819e7d 100644 --- a/packages/@jsonql/ws/src/core/create-client.js +++ b/packages/@jsonql/ws/src/core/create-client.js @@ -14,12 +14,6 @@ import { wsMainHandler } from './ws-main-handler' const debugFn = getDebug('ws-create-client') -/* -import { - createNspClient, - createNspAuthClient -} from '../../tests/fixtures/create-login-clients' -*/ /** * Because the nsps can be throw away so it doesn't matter the scope * this will get reuse again diff --git a/packages/ws-client/src/core/action-call.js b/packages/ws-client/src/core/action-call.js index 9000d916..8e474e9e 100644 --- a/packages/ws-client/src/core/action-call.js +++ b/packages/ws-client/src/core/action-call.js @@ -1,5 +1,5 @@ // the actual trigger call method -import { ON_RESULT_PROP_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants' +import { ON_RESULT_PROP_NAME, RESULT_PROP_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants' import { createEvt, toArray } from 'jsonql-utils/module' import { respondHandler } from './respond-handler' import { getDebug } from '../utils' @@ -10,11 +10,13 @@ const debugFn = getDebug(`action-call`) * @param {object} ee EventEmitter * @param {string} namespace where this belongs * @param {string} resolverName resolver + * @param {boolean} useCallbackStyle use on or not * @param {array} args arguments * @return {void} nothing */ -export function actionCall(ee, namespace, resolverName, args = []) { +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) ee.$trigger(eventName, [resolverName, toArray(args)]) // once we trigger there is nothing return from the resolve @@ -22,7 +24,7 @@ export function actionCall(ee, namespace, resolverName, args = []) { // then we need to listen to the event callback here as well return new Promise((resolver, rejecter) => { ee.$on( - createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), + createEvt(namespace, resolverName, RESULT_SUBFIX), function actionCallResultHandler(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 eddc416b..4b947988 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -30,7 +30,7 @@ function getMappedObj(opts, nspMap, ee) { for (let resolverName in list) { // resolverNames.push(resolverName) let params = list[resolverName] - let fn = createResolver(ee, namespace, resolverName, params) + let fn = createResolver(ee, namespace, resolverName, params, useCallbackStyle) // this should set as a getter therefore can not be overwrite by accident // obj[resolverName] = setupResolver(namespace, resolverName, params, fn, ee) obj = injectToFn(obj, resolverName, setupResolver(namespace, resolverName, params, fn, ee, useCallbackStyle)) diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index 5b0e7a3b..e716479c 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -38,13 +38,14 @@ const debugFn = getDebug('resolver-methods') * @param {string} namespace this resolver end point * @param {string} resolverName name of resolver as event name * @param {object} params from contract + * @param {boolean} useCallbackStyle on style or not * @return {function} resolver */ -export function createResolver(ee, namespace, resolverName, params) { +export function createResolver(ee, namespace, resolverName, params, useCallbackStyle) { // note we pass the new withResult=true option return function(...args) { return validateAsync(args, params.params, true) - .then(_args => actionCall(ee, namespace, resolverName, _args)) + .then(_args => actionCall(ee, namespace, resolverName, useCallbackStyle, _args)) .catch(finalCatch) } } diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index 64895691..6c476dd6 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -22,16 +22,17 @@ import { setupCallbackApi } from './setup-callback-api' * The first one in the chain * @return {array} */ -const setupNamespace = (fn, ee, namespace, resolverName, params) => [ +const setupNamespace = (fn, ee, namespace, resolverName, params, useCallbackStyle) => [ injectToFn(fn, MY_NAMESPACE, namespace), ee, namespace, resolverName, - params + params, + useCallbackStyle ] // onResult handler -const setupOnResult = (fn, ee, namespace, resolverName, params) => [ +const setupOnResult = (fn, ee, namespace, resolverName, params, useCallbackStyle) => [ objDefineProps(fn, ON_RESULT_PROP_NAME, function(resultCallback) { if (isFunc(resultCallback)) { ee.$on( @@ -47,12 +48,13 @@ const setupOnResult = (fn, ee, namespace, resolverName, params) => [ ee, namespace, resolverName, - params + params, + useCallbackStyle ] // we do need to add the send prop back because it's the only way to deal with // bi-directional data stream -const setupOnMessage = (fn, ee, namespace, resolverName, params) => [ +const setupOnMessage = (fn, ee, namespace, resolverName, params, useCallbackStyle) => [ objDefineProps(fn, ON_MESSAGE_PROP_NAME, function(messageCallback) { // we expect this to be a function if (isFunc(messageCallback)) { @@ -69,11 +71,12 @@ const setupOnMessage = (fn, ee, namespace, resolverName, params) => [ ee, namespace, resolverName, - params + params, + useCallbackStyle ] // add an ON_ERROR_PROP_NAME handler -const setupOnError = (fn, ee, namespace, resolverName, params) => [ +const setupOnError = (fn, ee, namespace, resolverName, params, useCallbackStyle) => [ objDefineProps(fn, ON_ERROR_PROP_NAME, function(resolverErrorHandler) { if (isFunc(resolverErrorHandler)) { // please note ON_ERROR_PROP_NAME can add multiple listners @@ -83,7 +86,8 @@ const setupOnError = (fn, ee, namespace, resolverName, params) => [ ee, namespace, resolverName, - params + params, + useCallbackStyle ] /** @@ -104,5 +108,5 @@ export function setupResolver(namespace, resolverName, params, fn, ee, useCallba // get the executor const executor = Reflect.apply(chainFns, null, args) // debug(exe) - return Reflect.apply(executor, null, [fn, ee, namespace, resolverName, params]) + 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 9a816009..ec5f4adf 100644 --- a/packages/ws-client/src/core/setup-send.js +++ b/packages/ws-client/src/core/setup-send.js @@ -4,19 +4,20 @@ import { DATA_KEY, ERROR_KEY, ON_ERROR_PROP_NAME, + ERROR_PROP_NAME, 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 { 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) => ( +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) // @NOTE change from sync interface to async @ 1.0.0 // this way we will able to catch all the error(s) @@ -26,25 +27,25 @@ export const setupSend = (fn, ee, namespace, resolverName, params) => ( if (result[ERROR_KEY] && result[ERROR_KEY].length) { debugFn(`got ERROR_KEY`, result[ERROR_KEY]) ee.$call( - createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + createEvt(namespace, resolverName, ERROR_SUBFIX), [new JsonqlValidationError(resolverName, result[ERROR_KEY])] ) } else { // return it just for the catch to work - if any - return actionCall(ee, namespace, resolverName, messagePayload) + return actionCall(ee, namespace, resolverName, useCallbackStyle, messagePayload) } }) .catch(err => { debugFn(`error after validateAsync`, err) ee.$call( - createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), + createEvt(namespace, resolverName, ERROR_SUBFIX), [new JsonqlValidationError(resolverName, err)] ) }) }, function sendGetter() { // add in 1.1.4 return function sendGetterAction(...args) { return validateAsync(args, params.params, true) - .then(_args => actionCall(ee, namespace, resolverName, _args)) + .then(_args => actionCall(ee, namespace, resolverName, useCallbackStyle, _args)) .catch(finalCatch) } }) diff --git a/packages/ws-client/src/share/client-event-handler.js b/packages/ws-client/src/share/client-event-handler.js index 703f32cd..4fc17774 100644 --- a/packages/ws-client/src/share/client-event-handler.js +++ b/packages/ws-client/src/share/client-event-handler.js @@ -4,18 +4,16 @@ // @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 { - ON_MESSAGE_PROP_NAME, - ON_RESULT_PROP_NAME, - EMIT_EVT, - SOCKET_IO, - WS -} from '../options/constants' -import { + ERROR_PROP_NAME, + RESULT_PROP_NAME, LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME, NOT_LOGIN_ERR_MSG, - ON_ERROR_PROP_NAME + ON_ERROR_PROP_NAME, + ON_RESULT_PROP_NAME, + ON_MESSAGE_PROP_NAME, } from 'jsonql-constants' import { getDebug, createEvt, clearMainEmitEvt } from '../utils' @@ -26,9 +24,13 @@ const debugFn = getDebug('client-event-handler') * A fake ee handler * @param {string} namespace nsp * @param {object} ee EventEmitter + * @param {object} opts configuration * @return {void} */ -const notLoginWsHandler = (namespace, ee) => { +const notLoginWsHandler = (namespace, ee, opts) => { + const { useCallbackStyle } = opts; + const ERROR_SUBFIX = useCallbackStyle ? ERROR_PROP_NAME : ON_ERROR_PROP_NAME; + const RESULT_SUBFIX = useCallbackStyle ? RESULT_PROP_NAME : ON_RESULT_PROP_NAME; ee.$only( createEvt(namespace, EMIT_EVT), function notLoginHandlerCallback(resolverName, args) { @@ -38,9 +40,9 @@ const notLoginWsHandler = (namespace, ee) => { } // It should just throw error here and should not call the result // because that's channel for handling normal event not the fake one - ee.$call(createEvt(namespace, resolverName, ON_ERROR_PROP_NAME), [error]) + ee.$call(createEvt(namespace, resolverName, ERROR_SUBFIX), [error]) // also trigger the result handler, but wrap inside the error key - ee.$call(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [{ error }]) + ee.$call(createEvt(namespace, resolverName, RESULT_SUBFIX), [{ error }]) } ) } @@ -77,16 +79,15 @@ export function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, isPrivate = privateNamespace === namespace; if (nsps[namespace]) { debugFn('call bindWsHandler', isPrivate, namespace) - let args = [namespace, nsps[namespace], ee, isPrivate] + let args = [namespace, nsps[namespace], ee, isPrivate, opts] if (opts.serverType === SOCKET_IO) { let { nspSet } = nspMap; args.push(nspSet[namespace]) - args.push(opts) } Reflect.apply(bindWsHandler, null, args) } else { // a dummy placeholder - notLoginWsHandler(namespace, ee) + notLoginWsHandler(namespace, ee, opts) } }) // this will be available regardless enableAuth @@ -102,7 +103,7 @@ export function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, // clear out the nsp nsps[namespace] = false; // add a NOT LOGIN error if call - notLoginWsHandler(namespace, ee) + notLoginWsHandler(namespace, ee, opts) }) }) } 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 50fb90b4..907fb415 100644 --- a/packages/ws-client/src/share/trigger-namespaces-on-error.js +++ b/packages/ws-client/src/share/trigger-namespaces-on-error.js @@ -1,15 +1,19 @@ // this use by client-event-handler -import { ON_ERROR_PROP_NAME } from 'jsonql-constants' +import { ON_ERROR_PROP_NAME, ERROR_PROP_NAME } from 'jsonql-constants' import { createEvt } from 'jsonql-utils' + /** * trigger errors on all the namespace onError handler * @param {object} ee Event Emitter * @param {array} namespaces nsps string * @param {string} message optional + * @param {object} opts configuration * @return {void} */ -export function triggerNamespacesOnError(ee, namespaces, message) { +export function triggerNamespacesOnError(ee, namespaces, message, opts = {}) { + const { useCallbackStyle } = opts; + const ERROR_SUBFIX = useCallbackStyle ? ERROR_PROP_NAME : ON_ERROR_PROP_NAME; namespaces.forEach( namespace => { - ee.$call(createEvt(namespace, ON_ERROR_PROP_NAME), [{ message, namespace }]) + ee.$call(createEvt(namespace, ERROR_SUBFIX), [{ message, namespace }]) }) } -- Gitee From 7dc323fa071da15f11700d117809470dc29abd59 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 19:15:44 +0800 Subject: [PATCH 34/44] jsonql-ws-client to 1.3.2 --- packages/ws-client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index b66c6247..4d1d4b02 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.3.1", + "version": "1.3.2", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", -- Gitee From 92aad0765cfc3066f1a0b9a18fdcae39214e70b2 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 22:01:23 +0800 Subject: [PATCH 35/44] fix the missing import --- .../@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- .../@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 2 +- .../@jsonql/ws/src/core/ws-main-handler.js | 26 +++++++++++-------- packages/ws-client/package.json | 2 +- .../ws-client/src/core/setup-auth-methods.js | 2 +- 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 375b716e..861b508d 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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$1(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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString$1(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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$1(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 constructConfigFn.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$2=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){r.forEach((function(r){e.$call(createEvt(r,ON_ERROR_PROP_NAME$1),[{message:t,namespace:r}])}))}var debugFn$7=getDebug("client-event-handler"),notLoginWsHandler=function(e,r){r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$7("noLoginHandler hijack the ws call",e,t,n);var o={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,ON_ERROR_PROP_NAME$1),[o]),r.$call(createEvt(e,t,ON_RESULT_PROP_NAME$1),[{error:o}])}))},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];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o]),c.push(e)}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$7("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(e){clearMainEmitEvt(t,e),a[e]=!1,notLoginWsHandler(e,t)}))}))}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$2(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"),ON_MESSAGE_PROP_NAME$2=ON_MESSAGE_PROP_NAME$1,ON_RESULT_PROP_NAME$2=ON_RESULT_PROP_NAME$1,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(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,ON_MESSAGE_PROP_NAME$2),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$2);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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$1(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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString$1(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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$1(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 constructConfigFn.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$2=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$2(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"),ON_MESSAGE_PROP_NAME$2=ON_MESSAGE_PROP_NAME$1,ON_RESULT_PROP_NAME$2=ON_RESULT_PROP_NAME$1,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(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,ON_MESSAGE_PROP_NAME$2),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$2);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index cc2e2751..3e3cf510 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),g=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,Error.captureStackTrace&&Error.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}(s),d="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",E="args",k="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onResult",M="onError",F="onReady",L="onLogin",W="message",U="result",I="error",J="ready",D="login",B="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,Error.captureStackTrace&&Error.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}(s),Y=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(t){if(Array.isArray(t))throw new g("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof g:throw new g(e,u);case t instanceof Y:throw new Y(e,u);default:throw new V(e,u)}}var G="socket.io",K=N,Q="UKNNOWN RESULT!",X="on",Z=Array.isArray,tt="object"==typeof u&&u&&u.Object===Object&&u,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 gt(t){return null!=t&&"object"==typeof t}var dt="[object Object]",yt=Function.prototype,bt=Object.prototype,_t=yt.toString,mt=bt.hasOwnProperty,wt=_t.call(Object);function jt(t){if(!gt(t)||pt(t)!=dt)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 Z(t)?t:[t]},Gt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Kt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Qt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Xt=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 Zt(t,e){return t===e||t!=t&&e!=e}function te(t,e){for(var r=t.length;r--;)if(Zt(t[r][0],e))return r;return-1}var ee=Array.prototype.splice;function re(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var oe="[object AsyncFunction]",ae="[object Function]",ie="[object GeneratorFunction]",ue="[object Proxy]";function ce(t){if(!ne(t))return!1;var e=pt(t);return e==ae||e==ie||e==oe||e==ue}var fe,se=rt["__core-js_shared__"],le=(fe=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+fe:"";var pe=Function.prototype.toString;function he(t){if(null!=t){try{return pe.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ve=/^\[object .+?Constructor\]$/,ge=Function.prototype,de=Object.prototype,ye=ge.toString,be=de.hasOwnProperty,_e=RegExp("^"+ye.call(be).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!ne(t)||(e=t,le&&le in e))&&(ce(t)?_e:ve).test(he(t));var e}function we(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var je=we(rt,"Map"),Oe=we(Object,"create");var Se="__lodash_hash_undefined__",Ee=Object.prototype.hasOwnProperty;var ke=Object.prototype.hasOwnProperty;var $e="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=tr}function rr(t){return null!=t&&er(t.length)&&!ce(t)}var nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr?rt.Buffer:void 0,ir=(ar?ar.isBuffer:void 0)||function(){return!1},ur={};ur["[object Float32Array]"]=ur["[object Float64Array]"]=ur["[object Int8Array]"]=ur["[object Int16Array]"]=ur["[object Int32Array]"]=ur["[object Uint8Array]"]=ur["[object Uint8ClampedArray]"]=ur["[object Uint16Array]"]=ur["[object Uint32Array]"]=!0,ur["[object Arguments]"]=ur["[object Array]"]=ur["[object ArrayBuffer]"]=ur["[object Boolean]"]=ur["[object DataView]"]=ur["[object Date]"]=ur["[object Error]"]=ur["[object Function]"]=ur["[object Map]"]=ur["[object Number]"]=ur["[object Object]"]=ur["[object RegExp]"]=ur["[object Set]"]=ur["[object String]"]=ur["[object WeakMap]"]=!1;var cr,fr="object"==typeof exports&&exports&&!exports.nodeType&&exports,sr=fr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=sr&&sr.exports===fr&&tt.process,pr=function(){try{var t=sr&&sr.require&&sr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),hr=pr&&pr.isTypedArray,vr=hr?(cr=hr,function(t){return cr(t)}):function(t){return gt(t)&&er(t.length)&&!!ur[pt(t)]};function gr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var dr=Object.prototype.hasOwnProperty;function yr(t,e,r){var n=t[e];dr.call(t,e)&&Zt(n,r)&&(void 0!==r||e in t)||xe(t,e,r)}var br=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function mr(t,e){var r=typeof t;return!!(e=null==e?br:e)&&("number"==r||"symbol"!=r&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++e>=zr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Rr);function Mr(t,e){return qr(function(t,e,r){return e=Nr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Nr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Fr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!ne(r))return!1;var n=typeof e;return!!("number"==n?rr(r)&&mr(e,r.length):"string"==n&&e in r)&&Zt(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 Ur(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 Ir(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Jr(t){return!!Gt(t,"socket")&&t.socket}var Dr="[object String]";function Br(t){return"string"==typeof t||!Z(t)&>(t)&&pt(t)==Dr}var Vr=function(t){var e;return(e={}).args=t,e};function Yr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Br(t)&&Z(e)){var o=Vr(e);return!0===r?o:((n={})[t]=o,n)}throw new g("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Hr=function(t){return jt(t)&&(Gt(t,_)||Gt(t,m)||Gt(t,w))};function Gr(t){return void 0===t}var Kr="[object Boolean]";var Qr="[object Number]";function Xr(t){return function(t){return"number"==typeof t||gt(t)&&pt(t)==Qr}(t)&&t!=+t}var Zr=ht(Object.keys,Object),tn=Object.prototype.hasOwnProperty;function en(t){return rr(t)?jr(t):function(t){if(!Ye(t))return Zr(t);var e=[];for(var r in Object(t))tn.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}function rn(t,e){return t&&Me(t,e,en)}var nn="__lodash_hash_undefined__";function on(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new Pe;++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&cn?new on:void 0;for(a.set(t,e),a.set(e,t);++s0))},Vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Yo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Do(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bo(r,t)})).length},Ho=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!!Gr(r)||(!1!==(e=Vo(t))?!Yo({arg:r},e):!Do(t)(r))})).length)})).length}return!1},Go=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Ho.apply(null,n)};function Ko(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Qo=function(t,e){var r;switch(!0){case"object"===t:return!Go(e);case"array"===t:return!Bo(e.arg);case!1!==(r=Vo(t)):return!Yo(e,r);default:return!Do(t)(e.arg)}},Xo=function(t,e){return Gr(t)?!0!==e.optional||Gr(e.defaultvalue)?null:e.defaultvalue:t},Zo=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 Ko(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ko(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:Ko(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?Xo(t,i):t,index:r,param:i,optional:a}}));default:throw Ko(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!!Ro(e)&&!(r.type.length>r.type.filter((function(e){return Qo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Qo(e,t)})).length)}));return r?((n={})[y]=a,n[d]=o.map((function(t){return t.arg})),n):a},ta=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ea=function(t){return!Ro(t)};function ra(t,e){var r=No(e,(function(t,e){return!t[Io]}));return Zn(r,{})?t:function(t,e){var r={};return e=Eo(e),rn(t,(function(t,n,o){xe(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})),rn)||e}))}function na(t,e){return ko(e,(function(e,r){var n,o;return Gr(t[r])||!0===e[Fo]&&ea(t[r])?Lr({},e,((n={})[Jo]=!0,n)):((o={})[Wo]=t[r],o[Mo]=e[Mo],o[Fo]=e[Fo]||!1,o[Lo]=e[Lo]||!1,o[Uo]=e[Uo]||!1,o)}))}function oa(t,e){var r=function(t,e){var r=ra(t,e);return{pristineValues:ko(No(e,(function(t,e){return ta(r,e)})),(function(t){return t.args})),checkAgainstAppProps:No(e,(function(t,e){return!ta(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[na(n,r.checkAgainstAppProps),o]}var aa=function(t){return Bo(t)?t:[t]};var ia=function(t,e){return!Bo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ua=function(t,e){try{return!!ce(e)&&e.apply(null,[t])}catch(t){return!1}};function ca(t){return function(e,r){if(e[Jo])return e[Wo];var n=function(t,e){var r,n=[[t[Wo]],[(r={},r[Mo]=aa(t[Mo]),r[Fo]=t[Fo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ko("runValidationAction",r,e),new h(r,n);if(!1!==e[Lo]&&!ia(e[Wo],e[Lo]))throw Ko(Lo,e[Lo]),new p(r);if(!1!==e[Uo]&&!ua(e[Wo],e[Uo]))throw Ko(Uo,e[Uo]),new v(r);return e[Wo]}}var fa=function(t,e){return Promise.resolve(oa(t,e))};function sa(t,e,r,n){return void 0===t&&(t={}),fa(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=ko(r,ca(e));return Lr(o,n)}(t,n)})).then((function(t){return Lr({},t,r)}))}function la(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[E]=t,i[j]=e,!0===r&&(i[O]=!0),Bo(n)&&(i[S]=n),ce(o)&&(i[k]=o),Br(a)&&(i[$]=a),i}var pa=xo,ha=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Zo(t,e,r);return r?a[y].length?o(a[y]):n(a[d]):a.length?o(a):n([])}))},va=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[k],i=r[$];return la.apply(null,[t,e,n,o,a,i])},ga=function(t){return function(e,r,n){return void 0===n&&(n={}),sa(e,r,n,t)}}(Zo),da="jsonql-ws-client",ya=function(t){try{if(window.debug)return window.debug(da).extend(t)}catch(t){}try{if(u.debug)return u.debug(da).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[da,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",da+"*")}catch(t){}var ba=new WeakMap,_a=new WeakMap;var ma=function(){this.__suspend__=null,this.queueStore=new Set},wa={$suspend:{configurable:!0},$queues:{configurable:!0}};wa.$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)},ma.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__},wa.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ma.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(ma.prototype,wa);var ja=function(t){function e(){t.call(this,{logger:ya("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){ba.set(this,t)},r.normalStore.get=function(){return ba.get(this)},r.lazyStore.set=function(t){_a.set(this,t)},r.lazyStore.get=function(){return _a.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}(ma))),Oa=(ya("process-contract"),function(t){var e=Jr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function Sa(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Jr(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={})[x]=((e={})[b]=Oa(n),e),r[C]=b,r)}var Ea=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},ka=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},$a=function(t,e){Ht(e).forEach((function(e){t.$off(Kt(e,N))}))},Aa=ya("respondHandler");function Ta(t,e,r){Gt(t,y)?(Aa("-- rejecter called --",t[y]),r(t[y])):Gt(t,d)?(Aa("-- resolver called --",t[d]),e(t[d])):(Aa("-- UNKNOWN_RESULT --",t),r({message:Q,error:t}))}var Pa=ya("action-call");function Na(t,e,r,n){void 0===n&&(n=[]);var o=Kt(e,N);return Pa("actionCall: "+o+" --\x3e "+r,n),t.$trigger(o,[r,Ht(n)]),new Promise((function(n,o){t.$on(Kt(e,r,q),(function(t){Pa("got the first result",t),Ta(t,n,o)}))}))}var Ra=ya("setup-send"),za=function(t,e,r,n,o){return Ur(t,"send",(function(t){Ra("got payload for",t),ha(Ht(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Na(e,r,n,t);Ra("got ERROR_KEY",o[y]),e.$call(Kt(r,n,M),[new g(n,o[y])])})).catch((function(t){Ra("error after validateAsync",t),e.$call(Kt(r,n,M),[new g(n,t)])}))}),(function(){return function(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];return ha(t,o.params,!0).then((function(t){return Na(e,r,n,t)})).catch(H)}}))};ya("setup-resolver");function xa(t,e,r,n,o){return[Ir(t,X,(function(t,o){if(pa(t)&&Qt(o))switch(t){case U:e.$on(Kt(r,n,ON_RESULT_PROP_NAME),(function(t){Ta(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case W:e.$only(Kt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Ta(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]}ya("setup-resolver");var Ca=function(t,e,r,n,o){return[Ir(t,"myNamespace",r),e,r,n,o]},qa=function(t,e,r,n,o){return[Ur(t,q,(function(t){Qt(t)&&e.$on(Kt(r,n,q),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))})),e,r,n,o]},Ma=function(t,e,r,n,o){return[Ur(t,"onMessage",(function(t){if(Qt(t)){e.$only(Kt(r,n,"onMessage"),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))}})),e,r,n,o]},Fa=function(t,e,r,n,o){return[Ur(t,M,(function(t){Qt(t)&&e.$only(Kt(r,n,M),t)})),e,r,n,o]};function La(t,e,r,n,o,a){var i=[Ca];a?i.push(xa):i.push(qa,Ma,Fa),i.push(za);var u=Reflect.apply(Xt,null,i);return Reflect.apply(u,null,[n,o,t,e,r])}ya("resolver-methods");function Wa(t,e,r,n){return function(){for(var o=[],a=arguments.length;a--;)o[a]=arguments[a];return ha(o,n.params,!0).then((function(n){return Na(t,e,r,n)})).catch(H)}}var Ua=function(t,e,r){return[Ir(t,r.loginHandlerName,(function(t){if(t&&isString(t))return e.$trigger(T,[t]);throw new g(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ia=function(t,e,r){return Ir(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Ja,Da;ya("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=Ir(n,c,La(i,c,f,Wa(r,i,c,f),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Va(t,e,r){var n=e.nspSet,o=[Ba];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Ir(t,X,(function(t,n){if(pa(t)&&Qt(n))switch(t){case I:for(var o in r)e.$on(Kt(o,I),n);break;case D:e.$only(D,n);break;case J:e.$on(J,n);break;default:e.$trigger(I,new V(X,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ur(t,M,(function(t){if(Qt(t))for(var n in r)e.$on(Kt(n,M),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ur(t,F,(function(t){Qt(t)&&e.$on(F,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ur(t,L,(function(t){Qt(t)&&e.$only(L,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Xt(Ua,Ia)(t,e,r):t}(e,r,t)})),Reflect.apply(Wr,null,o)(t,e,r)}var Ya=["roundtip","handshake"],Ha={useCallbackStyle:va(!1,["boolean"]),loginHandlerName:va("login",["string"]),logoutHandlerName:va("logout",["string"]),loginMethod:va("handshake",["string"],(Ja={},Ja[S]=Ya,Ja)),useJwt:va(!0,["boolean","string"]),hostname:va(!1,["string"]),namespace:va(b,["string"]),wsOptions:va({},["object"]),contract:va({},["object"],(Da={},Da[k]=Hr,Da)),enableAuth:va(!1,["boolean"]),token:va(!1,["string"])},Ga=ya("check-options"),Ka={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Qa={version:"version: 0.7.0 module: umd",serverType:"ws"},Xa=null;"undefined"!=typeof WebSocket?Xa=WebSocket:"undefined"!=typeof MozWebSocket?Xa=MozWebSocket:void 0!==u?Xa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Xa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Xa=self.WebSocket||self.MozWebSocket);var Za=Xa,ti=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 ei(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ti(e))}:function(e,r){var n=ti(e),o=r&&"string"==typeof r?n+"?"+B+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ri(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var ni=ya("client-event-handler"),oi=function(t,e){e.$only(Kt(t,K),(function(r,n){ni("noLoginHandler hijack the ws call",t,r,n);var o={message:"NOT LOGIN"};e.$call(Kt(t,r,M),[o]),e.$call(Kt(t,r,q),[{error:o}])}))},ai=function(t){return t.length>1&&t[0]};function ii(t,e,r,n,o,a){var i=ai(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){ni("call bindWsHandler",u,o);var c=[o,a[o],r,u];if(t.serverType===G){var f=e.nspSet;c.push(f[o]),c.push(t)}Reflect.apply(n,null,c)}else oi(o,r)})),r.$on(P,(function(){ni("LOGOUT_EVENT_NAME"),function(t,e,r){e.forEach((function(e){t.$call(Kt(e,M),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(t){$a(r,t),a[t]=!1,oi(t,r)}))}))}var ui=["__reply__","__event__","__data__"],ci=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ui.filter((function(t){return Gt(e,t)})).length===ui.length&&e)}(pa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new V("payload can not be decoded",t)},fi=ya("ws-main-handler"),si="onMessage",li=q,pi=K,hi=function(t,e,r,n){var o=[e];r&&(fi("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Kt,null,o),i=n.data||n;t.$trigger(a,[i])};function vi(t,e,r,n){e.onopen=function(){fi("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Kt(t,pi),(function(t,r){fi("calling server",t,r),e.send(Yr(t,r))}))},e.onmessage=function(e){try{var n=ci(e),o=n.resolverName,a=n.type;switch(fi("Hear from server",a,n),a){case N:var i=Kt(t,o,si),u=r.$trigger(i,[n]);fi("EMIT_REPLY_TYPE",i,u);break;case R:var c=Kt(t,o,li);r.$trigger(c,[n]);fi("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:fi("ERROR_TYPE"),hi(r,t,o,n);break;default:fi("Unhandled event!",n),hi(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),hi(r,t,!1,e)}},e.onclose=function(){fi("ws.onclose callback")},r.$on(P,(function(){try{fi("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ya("ws-create-client");var gi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ri(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]=ri(!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 function(t,e){return ga(t,Ha,Object.assign(Ka,e)).then((function(t){return t.hostname||(t.hostname=ka()),t.wssPath=Ea([t.hostname,t.namespace].join("/"),t.serverType),Ga("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:Sa(t),ee:n||new ja}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Va(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=ei(t),r=ei(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,vi],o=t.token,a=gi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ii,null,n.concat([u,i])),c&&r.$only(T,(function(o){$a(r,u);var a=gi(t,e,o);Reflect.apply(ii,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Za),Qa)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},s=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var f=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":s()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(f),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),g=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,Error.captureStackTrace&&Error.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}(f),d="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",k="args",E="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onResult",M="onError",F="onReady",L="onLogin",W="message",U="result",I="error",J="ready",D="login",B="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,Error.captureStackTrace&&Error.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}(f),Y=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(t){if(Array.isArray(t))throw new g("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof g:throw new g(e,u);case t instanceof Y:throw new Y(e,u);default:throw new V(e,u)}}var G="socket.io",K=N,Q="UKNNOWN RESULT!",X="on",Z=Array.isArray,tt="object"==typeof u&&u&&u.Object===Object&&u,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 st="[object Null]",ft="[object Undefined]",lt=nt?nt.toStringTag:void 0;function pt(t){return null==t?void 0===t?ft:st: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 gt(t){return null!=t&&"object"==typeof t}var dt="[object Object]",yt=Function.prototype,bt=Object.prototype,_t=yt.toString,mt=bt.hasOwnProperty,wt=_t.call(Object);function jt(t){if(!gt(t)||pt(t)!=dt)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 Z(t)?t:[t]},Gt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Kt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Qt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Xt=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 Zt(t,e){return t===e||t!=t&&e!=e}function te(t,e){for(var r=t.length;r--;)if(Zt(t[r][0],e))return r;return-1}var ee=Array.prototype.splice;function re(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var oe="[object AsyncFunction]",ae="[object Function]",ie="[object GeneratorFunction]",ue="[object Proxy]";function ce(t){if(!ne(t))return!1;var e=pt(t);return e==ae||e==ie||e==oe||e==ue}var se,fe=rt["__core-js_shared__"],le=(se=/[^.]+$/.exec(fe&&fe.keys&&fe.keys.IE_PROTO||""))?"Symbol(src)_1."+se:"";var pe=Function.prototype.toString;function he(t){if(null!=t){try{return pe.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ve=/^\[object .+?Constructor\]$/,ge=Function.prototype,de=Object.prototype,ye=ge.toString,be=de.hasOwnProperty,_e=RegExp("^"+ye.call(be).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!ne(t)||(e=t,le&&le in e))&&(ce(t)?_e:ve).test(he(t));var e}function we(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var je=we(rt,"Map"),Oe=we(Object,"create");var Se="__lodash_hash_undefined__",ke=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var $e="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=tr}function rr(t){return null!=t&&er(t.length)&&!ce(t)}var nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr?rt.Buffer:void 0,ir=(ar?ar.isBuffer:void 0)||function(){return!1},ur={};ur["[object Float32Array]"]=ur["[object Float64Array]"]=ur["[object Int8Array]"]=ur["[object Int16Array]"]=ur["[object Int32Array]"]=ur["[object Uint8Array]"]=ur["[object Uint8ClampedArray]"]=ur["[object Uint16Array]"]=ur["[object Uint32Array]"]=!0,ur["[object Arguments]"]=ur["[object Array]"]=ur["[object ArrayBuffer]"]=ur["[object Boolean]"]=ur["[object DataView]"]=ur["[object Date]"]=ur["[object Error]"]=ur["[object Function]"]=ur["[object Map]"]=ur["[object Number]"]=ur["[object Object]"]=ur["[object RegExp]"]=ur["[object Set]"]=ur["[object String]"]=ur["[object WeakMap]"]=!1;var cr,sr="object"==typeof exports&&exports&&!exports.nodeType&&exports,fr=sr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=fr&&fr.exports===sr&&tt.process,pr=function(){try{var t=fr&&fr.require&&fr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),hr=pr&&pr.isTypedArray,vr=hr?(cr=hr,function(t){return cr(t)}):function(t){return gt(t)&&er(t.length)&&!!ur[pt(t)]};function gr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var dr=Object.prototype.hasOwnProperty;function yr(t,e,r){var n=t[e];dr.call(t,e)&&Zt(n,r)&&(void 0!==r||e in t)||xe(t,e,r)}var br=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function mr(t,e){var r=typeof t;return!!(e=null==e?br:e)&&("number"==r||"symbol"!=r&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++e>=zr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Rr);function Mr(t,e){return qr(function(t,e,r){return e=Nr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Nr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Fr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!ne(r))return!1;var n=typeof e;return!!("number"==n?rr(r)&&mr(e,r.length):"string"==n&&e in r)&&Zt(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 Ur(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 Ir(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Jr(t){return!!Gt(t,"socket")&&t.socket}var Dr="[object String]";function Br(t){return"string"==typeof t||!Z(t)&>(t)&&pt(t)==Dr}var Vr=function(t){var e;return(e={}).args=t,e};function Yr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Br(t)&&Z(e)){var o=Vr(e);return!0===r?o:((n={})[t]=o,n)}throw new g("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Hr=function(t){return jt(t)&&(Gt(t,_)||Gt(t,m)||Gt(t,w))};function Gr(t){return void 0===t}var Kr="[object Boolean]";var Qr="[object Number]";function Xr(t){return function(t){return"number"==typeof t||gt(t)&&pt(t)==Qr}(t)&&t!=+t}var Zr=ht(Object.keys,Object),tn=Object.prototype.hasOwnProperty;function en(t){return rr(t)?jr(t):function(t){if(!Ye(t))return Zr(t);var e=[];for(var r in Object(t))tn.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}function rn(t,e){return t&&Me(t,e,en)}var nn="__lodash_hash_undefined__";function on(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new Pe;++eu))return!1;var s=a.get(t);if(s&&a.get(e))return s==e;var f=-1,l=!0,p=r&cn?new on:void 0;for(a.set(t,e),a.set(e,t);++f0))},Vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Yo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Do(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bo(r,t)})).length},Ho=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!!Gr(r)||(!1!==(e=Vo(t))?!Yo({arg:r},e):!Do(t)(r))})).length)})).length}return!1},Go=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Ho.apply(null,n)};function Ko(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Qo=function(t,e){var r;switch(!0){case"object"===t:return!Go(e);case"array"===t:return!Bo(e.arg);case!1!==(r=Vo(t)):return!Yo(e,r);default:return!Do(t)(e.arg)}},Xo=function(t,e){return Gr(t)?!0!==e.optional||Gr(e.defaultvalue)?null:e.defaultvalue:t},Zo=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 Ko(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ko(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:Ko(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?Xo(t,i):t,index:r,param:i,optional:a}}));default:throw Ko(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!!Ro(e)&&!(r.type.length>r.type.filter((function(e){return Qo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Qo(e,t)})).length)}));return r?((n={})[y]=a,n[d]=o.map((function(t){return t.arg})),n):a},ta=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ea=function(t){return!Ro(t)};function ra(t,e){var r=No(e,(function(t,e){return!t[Io]}));return Zn(r,{})?t:function(t,e){var r={};return e=ko(e),rn(t,(function(t,n,o){xe(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,ko((function(t){return t.alias===e})),rn)||e}))}function na(t,e){return Eo(e,(function(e,r){var n,o;return Gr(t[r])||!0===e[Fo]&&ea(t[r])?Lr({},e,((n={})[Jo]=!0,n)):((o={})[Wo]=t[r],o[Mo]=e[Mo],o[Fo]=e[Fo]||!1,o[Lo]=e[Lo]||!1,o[Uo]=e[Uo]||!1,o)}))}function oa(t,e){var r=function(t,e){var r=ra(t,e);return{pristineValues:Eo(No(e,(function(t,e){return ta(r,e)})),(function(t){return t.args})),checkAgainstAppProps:No(e,(function(t,e){return!ta(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[na(n,r.checkAgainstAppProps),o]}var aa=function(t){return Bo(t)?t:[t]};var ia=function(t,e){return!Bo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ua=function(t,e){try{return!!ce(e)&&e.apply(null,[t])}catch(t){return!1}};function ca(t){return function(e,r){if(e[Jo])return e[Wo];var n=function(t,e){var r,n=[[t[Wo]],[(r={},r[Mo]=aa(t[Mo]),r[Fo]=t[Fo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ko("runValidationAction",r,e),new h(r,n);if(!1!==e[Lo]&&!ia(e[Wo],e[Lo]))throw Ko(Lo,e[Lo]),new p(r);if(!1!==e[Uo]&&!ua(e[Wo],e[Uo]))throw Ko(Uo,e[Uo]),new v(r);return e[Wo]}}var sa=function(t,e){return Promise.resolve(oa(t,e))};function fa(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=Eo(r,ca(e));return Lr(o,n)}(t,n)})).then((function(t){return Lr({},t,r)}))}function la(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[k]=t,i[j]=e,!0===r&&(i[O]=!0),Bo(n)&&(i[S]=n),ce(o)&&(i[E]=o),Br(a)&&(i[$]=a),i}var pa=xo,ha=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Zo(t,e,r);return r?a[y].length?o(a[y]):n(a[d]):a.length?o(a):n([])}))},va=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[E],i=r[$];return la.apply(null,[t,e,n,o,a,i])},ga=function(t){return function(e,r,n){return void 0===n&&(n={}),fa(e,r,n,t)}}(Zo),da="jsonql-ws-client",ya=function(t){try{if(window.debug)return window.debug(da).extend(t)}catch(t){}try{if(u.debug)return u.debug(da).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[da,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",da+"*")}catch(t){}var ba=new WeakMap,_a=new WeakMap;var ma=function(){this.__suspend__=null,this.queueStore=new Set},wa={$suspend:{configurable:!0},$queues:{configurable:!0}};wa.$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)},ma.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__},wa.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ma.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(ma.prototype,wa);var ja=function(t){function e(){t.call(this,{logger:ya("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,s=!1,f=0;f0;)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){ba.set(this,t)},r.normalStore.get=function(){return ba.get(this)},r.lazyStore.set=function(t){_a.set(this,t)},r.lazyStore.get=function(){return _a.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}(ma))),Oa=(ya("process-contract"),function(t){var e=Jr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function Sa(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Jr(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={})[x]=((e={})[b]=Oa(n),e),r[C]=b,r)}var ka=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},Ea=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},$a=function(t,e){Ht(e).forEach((function(e){t.$off(Kt(e,N))}))},Aa=ya("respondHandler");function Ta(t,e,r){Gt(t,y)?(Aa("-- rejecter called --",t[y]),r(t[y])):Gt(t,d)?(Aa("-- resolver called --",t[d]),e(t[d])):(Aa("-- UNKNOWN_RESULT --",t),r({message:Q,error:t}))}var Pa=ya("action-call");function Na(t,e,r,n,o){void 0===o&&(o=[]);var a=Kt(e,N),i=n?U:q;return Pa("actionCall: "+a+" --\x3e "+r,o),t.$trigger(a,[r,Ht(o)]),new Promise((function(n,o){t.$on(Kt(e,r,i),(function(t){Pa("got the first result",t),Ta(t,n,o)}))}))}var Ra=ya("setup-send"),za=function(t,e,r,n,o,a){return Ur(t,"send",(function(t){var i=a?I:M;Ra("got payload for",t),ha(Ht(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Na(e,r,n,a,t);Ra("got ERROR_KEY",o[y]),e.$call(Kt(r,n,i),[new g(n,o[y])])})).catch((function(t){Ra("error after validateAsync",t),e.$call(Kt(r,n,i),[new g(n,t)])}))}),(function(){return function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return ha(t,o.params,!0).then((function(t){return Na(e,r,n,a,t)})).catch(H)}}))};ya("setup-resolver");function xa(t,e,r,n,o){return[Ir(t,X,(function(t,o){if(pa(t)&&Qt(o))switch(t){case U:e.$on(Kt(r,n,ON_RESULT_PROP_NAME),(function(t){Ta(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case W:e.$only(Kt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Ta(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]}ya("setup-resolver");var Ca=function(t,e,r,n,o,a){return[Ir(t,"myNamespace",r),e,r,n,o,a]},qa=function(t,e,r,n,o,a){return[Ur(t,q,(function(t){Qt(t)&&e.$on(Kt(r,n,q),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))})),e,r,n,o,a]},Ma=function(t,e,r,n,o,a){return[Ur(t,"onMessage",(function(t){if(Qt(t)){e.$only(Kt(r,n,"onMessage"),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))}})),e,r,n,o,a]},Fa=function(t,e,r,n,o,a){return[Ur(t,M,(function(t){Qt(t)&&e.$only(Kt(r,n,M),t)})),e,r,n,o,a]};function La(t,e,r,n,o,a){var i=[Ca];a?i.push(xa):i.push(qa,Ma,Fa),i.push(za);var u=Reflect.apply(Xt,null,i);return Reflect.apply(u,null,[n,o,t,e,r,a])}ya("resolver-methods");function Wa(t,e,r,n,o){return function(){for(var a=[],i=arguments.length;i--;)a[i]=arguments[i];return ha(a,n.params,!0).then((function(n){return Na(t,e,r,o,n)})).catch(H)}}var Ua=function(t,e,r){return[Ir(t,r.loginHandlerName,(function(t){if(t&&isString(t))return e.$trigger(T,[t]);throw new g(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ia=function(t,e,r){return Ir(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Ja,Da;ya("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 s=u[c];n=Ir(n,c,La(i,c,s,Wa(r,i,c,s,a),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Va(t,e,r){var n=e.nspSet,o=[Ba];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Ir(t,X,(function(t,n){if(pa(t)&&Qt(n))switch(t){case I:for(var o in r)e.$on(Kt(o,I),n);break;case D:e.$only(D,n);break;case J:e.$on(J,n);break;default:e.$trigger(I,new V(X,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ur(t,M,(function(t){if(Qt(t))for(var n in r)e.$on(Kt(n,M),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ur(t,F,(function(t){Qt(t)&&e.$on(F,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ur(t,L,(function(t){Qt(t)&&e.$only(L,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Xt(Ua,Ia)(t,e,r):t}(e,r,t)})),Reflect.apply(Wr,null,o)(t,e,r)}var Ya=["roundtip","handshake"],Ha={useCallbackStyle:va(!1,["boolean"]),loginHandlerName:va("login",["string"]),logoutHandlerName:va("logout",["string"]),loginMethod:va("handshake",["string"],(Ja={},Ja[S]=Ya,Ja)),useJwt:va(!0,["boolean","string"]),hostname:va(!1,["string"]),namespace:va(b,["string"]),wsOptions:va({},["object"]),contract:va({},["object"],(Da={},Da[E]=Hr,Da)),enableAuth:va(!1,["boolean"]),token:va(!1,["string"])},Ga=ya("check-options"),Ka={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Qa={version:"version: 0.7.0 module: umd",serverType:"ws"},Xa=null;"undefined"!=typeof WebSocket?Xa=WebSocket:"undefined"!=typeof MozWebSocket?Xa=MozWebSocket:void 0!==u?Xa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Xa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Xa=self.WebSocket||self.MozWebSocket);var Za=Xa,ti=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 ei(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ti(e))}:function(e,r){var n=ti(e),o=r&&"string"==typeof r?n+"?"+B+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ri(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var ni=ya("client-event-handler"),oi=function(t,e,r){var n=r.useCallbackStyle,o=n?I:M,a=n?U:q;e.$only(Kt(t,K),(function(r,n){ni("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}])}))},ai=function(t){return t.length>1&&t[0]};function ii(t,e,r,n,o,a){var i=ai(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){ni("call bindWsHandler",u,o);var c=[o,a[o],r,u,t];if(t.serverType===G){var s=e.nspSet;c.push(s[o])}Reflect.apply(n,null,c)}else oi(o,r,t)})),r.$on(P,(function(){ni("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?I:M;e.forEach((function(e){t.$call(Kt(e,o),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(e){$a(r,e),a[e]=!1,oi(e,r,t)}))}))}var ui=["__reply__","__event__","__data__"],ci=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ui.filter((function(t){return Gt(e,t)})).length===ui.length&&e)}(pa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new V("payload can not be decoded",t)},si=ya("ws-main-handler"),fi="onMessage",li=q,pi=K,hi=function(t,e,r,n){var o=[e];r&&(si("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Kt,null,o),i=n.data||n;t.$trigger(a,[i])};function vi(t,e,r,n){e.onopen=function(){si("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Kt(t,pi),(function(t,r){si("calling server",t,r),e.send(Yr(t,r))}))},e.onmessage=function(e){try{var n=ci(e),o=n.resolverName,a=n.type;switch(si("Hear from server",a,n),a){case N:var i=Kt(t,o,fi),u=r.$trigger(i,[n]);si("EMIT_REPLY_TYPE",i,u);break;case R:var c=Kt(t,o,li);r.$trigger(c,[n]);si("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:si("ERROR_TYPE"),hi(r,t,o,n);break;default:si("Unhandled event!",n),hi(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),hi(r,t,!1,e)}},e.onclose=function(){si("ws.onclose callback")},r.$on(P,(function(){try{si("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ya("ws-create-client");var gi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ri(e,t),i)})).reduce((function(t,e){return Object.assign(t,e)}),{});else{var s=(n=o,Object.keys(n)[0]);u.push(s),c[s]=ri(!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 function(t,e){return ga(t,Ha,Object.assign(Ka,e)).then((function(t){return t.hostname||(t.hostname=Ea()),t.wssPath=ka([t.hostname,t.namespace].join("/"),t.serverType),Ga("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:Sa(t),ee:n||new ja}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Va(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=ei(t),r=ei(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,vi],o=t.token,a=gi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ii,null,n.concat([u,i])),c&&r.$only(T,(function(o){$a(r,u);var a=gi(t,e,o);Reflect.apply(ii,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Za),Qa)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 2b081e92..8c959cf2 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -42,7 +42,7 @@ "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.8.1", - "jsonql-ws-client": "^1.3.1", + "jsonql-ws-client": "^1.3.2", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/@jsonql/ws/src/core/ws-main-handler.js b/packages/@jsonql/ws/src/core/ws-main-handler.js index 9c83806d..dc0ee8df 100644 --- a/packages/@jsonql/ws/src/core/ws-main-handler.js +++ b/packages/@jsonql/ws/src/core/ws-main-handler.js @@ -1,25 +1,28 @@ // the WebSocket main handler -import { constants, getDebug } from 'jsonql-ws-client/share' +import { getDebug } from 'jsonql-ws-client/share' import { - ON_ERROR_PROP_NAME, LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME, ACKNOWLEDGE_REPLY_TYPE, EMIT_REPLY_TYPE, ERROR_TYPE, + + ON_ERROR_PROP_NAME, + ON_MESSAGE_PROP_NAME, + ON_RESULT_PROP_NAME, ON_READY_PROP_NAME, - ON_LOGIN_PROP_NAME + ON_LOGIN_PROP_NAME, + + ERROR_PROP_NAME, + MESSAGE_PROP_NAME, + RESULT_PROP_NAME, + READY_PROP_NAME, + LOGIN_PROP_NAME } from 'jsonql-constants' import { createQueryStr, createEvt } from 'jsonql-utils/module' import extractWsPayload from './extract-ws-payload' - const debugFn = getDebug('ws-main-handler') -const { - ON_MESSAGE_PROP_NAME, - ON_RESULT_PROP_NAME, - EMIT_EVT -} = constants /** * under extremely circumstances we might not even have a resolverName, then @@ -48,9 +51,10 @@ const errorTypeHandler = (ee, namespace, resolverName, json) => { * @param {object} ws the nsp * @param {object} ee EventEmitter * @param {boolean} isPrivate to id if this namespace is private or not + * @param {object} opts configuration * @return {object} promise resolve after the onopen event */ -export function wsMainHandler(namespace, ws, ee, isPrivate) { +export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { // connection open ws.onopen = function onOpenCallback() { debugFn('ws.onopen listened') @@ -63,7 +67,7 @@ export function wsMainHandler(namespace, ws, ee, isPrivate) { } // add listener only after the open is called ee.$only( - createEvt(namespace, EMIT_EVT), + createEvt(namespace, EMIT_REPLY_TYPE), function wsMainOnEvtHandler(resolverName, args) { debugFn('calling server', resolverName, args) ws.send( diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 4d1d4b02..343b6fe2 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.3.2", + "version": "1.3.3", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", diff --git a/packages/ws-client/src/core/setup-auth-methods.js b/packages/ws-client/src/core/setup-auth-methods.js index ee7a3e7a..e15af8c6 100644 --- a/packages/ws-client/src/core/setup-auth-methods.js +++ b/packages/ws-client/src/core/setup-auth-methods.js @@ -1,7 +1,7 @@ // take out from the resolver-methods import { LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME } from 'jsonql-constants' import { JsonqlValidationError } from 'jsonql-errors' -import { injectToFn, chainFns } from '../utils' +import { injectToFn, chainFns, isString } from '../utils' /** * break out from createAuthMethods to allow chaining call * @param {object} obj the main client object -- Gitee From 6ae1823bed13ea4796d7001b768dc18d0b9213c8 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 22:37:34 +0800 Subject: [PATCH 36/44] setup the useCallbackStyle interface --- .../@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- .../@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- packages/@jsonql/ws/package.json | 4 +-- .../@jsonql/ws/src/core/ws-main-handler.js | 28 ++++++++++++------- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 861b508d..7f28314b 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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$1(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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString$1(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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$1(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 constructConfigFn.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$2=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$2(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"),ON_MESSAGE_PROP_NAME$2=ON_MESSAGE_PROP_NAME$1,ON_RESULT_PROP_NAME$2=ON_RESULT_PROP_NAME$1,EMIT_EVT$1=EMIT_EVT,errorTypeHandler=function(e,r,t,n){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,e)),t.$only(createEvt(e,EMIT_EVT$1),(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,ON_MESSAGE_PROP_NAME$2),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$2);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n,o){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,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,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 3e3cf510..1fb8238d 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},s=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var f=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":s()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(f),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),g=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,Error.captureStackTrace&&Error.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}(f),d="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",k="args",E="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onResult",M="onError",F="onReady",L="onLogin",W="message",U="result",I="error",J="ready",D="login",B="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,Error.captureStackTrace&&Error.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}(f),Y=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(t){if(Array.isArray(t))throw new g("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof g:throw new g(e,u);case t instanceof Y:throw new Y(e,u);default:throw new V(e,u)}}var G="socket.io",K=N,Q="UKNNOWN RESULT!",X="on",Z=Array.isArray,tt="object"==typeof u&&u&&u.Object===Object&&u,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 st="[object Null]",ft="[object Undefined]",lt=nt?nt.toStringTag:void 0;function pt(t){return null==t?void 0===t?ft:st: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 gt(t){return null!=t&&"object"==typeof t}var dt="[object Object]",yt=Function.prototype,bt=Object.prototype,_t=yt.toString,mt=bt.hasOwnProperty,wt=_t.call(Object);function jt(t){if(!gt(t)||pt(t)!=dt)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 Z(t)?t:[t]},Gt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Kt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Qt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Xt=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 Zt(t,e){return t===e||t!=t&&e!=e}function te(t,e){for(var r=t.length;r--;)if(Zt(t[r][0],e))return r;return-1}var ee=Array.prototype.splice;function re(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var oe="[object AsyncFunction]",ae="[object Function]",ie="[object GeneratorFunction]",ue="[object Proxy]";function ce(t){if(!ne(t))return!1;var e=pt(t);return e==ae||e==ie||e==oe||e==ue}var se,fe=rt["__core-js_shared__"],le=(se=/[^.]+$/.exec(fe&&fe.keys&&fe.keys.IE_PROTO||""))?"Symbol(src)_1."+se:"";var pe=Function.prototype.toString;function he(t){if(null!=t){try{return pe.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ve=/^\[object .+?Constructor\]$/,ge=Function.prototype,de=Object.prototype,ye=ge.toString,be=de.hasOwnProperty,_e=RegExp("^"+ye.call(be).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!ne(t)||(e=t,le&&le in e))&&(ce(t)?_e:ve).test(he(t));var e}function we(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var je=we(rt,"Map"),Oe=we(Object,"create");var Se="__lodash_hash_undefined__",ke=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var $e="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=tr}function rr(t){return null!=t&&er(t.length)&&!ce(t)}var nr="object"==typeof exports&&exports&&!exports.nodeType&&exports,or=nr&&"object"==typeof module&&module&&!module.nodeType&&module,ar=or&&or.exports===nr?rt.Buffer:void 0,ir=(ar?ar.isBuffer:void 0)||function(){return!1},ur={};ur["[object Float32Array]"]=ur["[object Float64Array]"]=ur["[object Int8Array]"]=ur["[object Int16Array]"]=ur["[object Int32Array]"]=ur["[object Uint8Array]"]=ur["[object Uint8ClampedArray]"]=ur["[object Uint16Array]"]=ur["[object Uint32Array]"]=!0,ur["[object Arguments]"]=ur["[object Array]"]=ur["[object ArrayBuffer]"]=ur["[object Boolean]"]=ur["[object DataView]"]=ur["[object Date]"]=ur["[object Error]"]=ur["[object Function]"]=ur["[object Map]"]=ur["[object Number]"]=ur["[object Object]"]=ur["[object RegExp]"]=ur["[object Set]"]=ur["[object String]"]=ur["[object WeakMap]"]=!1;var cr,sr="object"==typeof exports&&exports&&!exports.nodeType&&exports,fr=sr&&"object"==typeof module&&module&&!module.nodeType&&module,lr=fr&&fr.exports===sr&&tt.process,pr=function(){try{var t=fr&&fr.require&&fr.require("util").types;return t||lr&&lr.binding&&lr.binding("util")}catch(t){}}(),hr=pr&&pr.isTypedArray,vr=hr?(cr=hr,function(t){return cr(t)}):function(t){return gt(t)&&er(t.length)&&!!ur[pt(t)]};function gr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var dr=Object.prototype.hasOwnProperty;function yr(t,e,r){var n=t[e];dr.call(t,e)&&Zt(n,r)&&(void 0!==r||e in t)||xe(t,e,r)}var br=9007199254740991,_r=/^(?:0|[1-9]\d*)$/;function mr(t,e){var r=typeof t;return!!(e=null==e?br:e)&&("number"==r||"symbol"!=r&&_r.test(t))&&t>-1&&t%1==0&&t0){if(++e>=zr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Rr);function Mr(t,e){return qr(function(t,e,r){return e=Nr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Nr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Fr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!ne(r))return!1;var n=typeof e;return!!("number"==n?rr(r)&&mr(e,r.length):"string"==n&&e in r)&&Zt(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 Ur(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 Ir(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Jr(t){return!!Gt(t,"socket")&&t.socket}var Dr="[object String]";function Br(t){return"string"==typeof t||!Z(t)&>(t)&&pt(t)==Dr}var Vr=function(t){var e;return(e={}).args=t,e};function Yr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Br(t)&&Z(e)){var o=Vr(e);return!0===r?o:((n={})[t]=o,n)}throw new g("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Hr=function(t){return jt(t)&&(Gt(t,_)||Gt(t,m)||Gt(t,w))};function Gr(t){return void 0===t}var Kr="[object Boolean]";var Qr="[object Number]";function Xr(t){return function(t){return"number"==typeof t||gt(t)&&pt(t)==Qr}(t)&&t!=+t}var Zr=ht(Object.keys,Object),tn=Object.prototype.hasOwnProperty;function en(t){return rr(t)?jr(t):function(t){if(!Ye(t))return Zr(t);var e=[];for(var r in Object(t))tn.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}function rn(t,e){return t&&Me(t,e,en)}var nn="__lodash_hash_undefined__";function on(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new Pe;++eu))return!1;var s=a.get(t);if(s&&a.get(e))return s==e;var f=-1,l=!0,p=r&cn?new on:void 0;for(a.set(t,e),a.set(e,t);++f0))},Vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Yo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Do(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bo(r,t)})).length},Ho=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!!Gr(r)||(!1!==(e=Vo(t))?!Yo({arg:r},e):!Do(t)(r))})).length)})).length}return!1},Go=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Ho.apply(null,n)};function Ko(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Qo=function(t,e){var r;switch(!0){case"object"===t:return!Go(e);case"array"===t:return!Bo(e.arg);case!1!==(r=Vo(t)):return!Yo(e,r);default:return!Do(t)(e.arg)}},Xo=function(t,e){return Gr(t)?!0!==e.optional||Gr(e.defaultvalue)?null:e.defaultvalue:t},Zo=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 Ko(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ko(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:Ko(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?Xo(t,i):t,index:r,param:i,optional:a}}));default:throw Ko(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!!Ro(e)&&!(r.type.length>r.type.filter((function(e){return Qo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Qo(e,t)})).length)}));return r?((n={})[y]=a,n[d]=o.map((function(t){return t.arg})),n):a},ta=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ea=function(t){return!Ro(t)};function ra(t,e){var r=No(e,(function(t,e){return!t[Io]}));return Zn(r,{})?t:function(t,e){var r={};return e=ko(e),rn(t,(function(t,n,o){xe(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,ko((function(t){return t.alias===e})),rn)||e}))}function na(t,e){return Eo(e,(function(e,r){var n,o;return Gr(t[r])||!0===e[Fo]&&ea(t[r])?Lr({},e,((n={})[Jo]=!0,n)):((o={})[Wo]=t[r],o[Mo]=e[Mo],o[Fo]=e[Fo]||!1,o[Lo]=e[Lo]||!1,o[Uo]=e[Uo]||!1,o)}))}function oa(t,e){var r=function(t,e){var r=ra(t,e);return{pristineValues:Eo(No(e,(function(t,e){return ta(r,e)})),(function(t){return t.args})),checkAgainstAppProps:No(e,(function(t,e){return!ta(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[na(n,r.checkAgainstAppProps),o]}var aa=function(t){return Bo(t)?t:[t]};var ia=function(t,e){return!Bo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ua=function(t,e){try{return!!ce(e)&&e.apply(null,[t])}catch(t){return!1}};function ca(t){return function(e,r){if(e[Jo])return e[Wo];var n=function(t,e){var r,n=[[t[Wo]],[(r={},r[Mo]=aa(t[Mo]),r[Fo]=t[Fo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ko("runValidationAction",r,e),new h(r,n);if(!1!==e[Lo]&&!ia(e[Wo],e[Lo]))throw Ko(Lo,e[Lo]),new p(r);if(!1!==e[Uo]&&!ua(e[Wo],e[Uo]))throw Ko(Uo,e[Uo]),new v(r);return e[Wo]}}var sa=function(t,e){return Promise.resolve(oa(t,e))};function fa(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=Eo(r,ca(e));return Lr(o,n)}(t,n)})).then((function(t){return Lr({},t,r)}))}function la(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[k]=t,i[j]=e,!0===r&&(i[O]=!0),Bo(n)&&(i[S]=n),ce(o)&&(i[E]=o),Br(a)&&(i[$]=a),i}var pa=xo,ha=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=Zo(t,e,r);return r?a[y].length?o(a[y]):n(a[d]):a.length?o(a):n([])}))},va=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[E],i=r[$];return la.apply(null,[t,e,n,o,a,i])},ga=function(t){return function(e,r,n){return void 0===n&&(n={}),fa(e,r,n,t)}}(Zo),da="jsonql-ws-client",ya=function(t){try{if(window.debug)return window.debug(da).extend(t)}catch(t){}try{if(u.debug)return u.debug(da).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[da,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",da+"*")}catch(t){}var ba=new WeakMap,_a=new WeakMap;var ma=function(){this.__suspend__=null,this.queueStore=new Set},wa={$suspend:{configurable:!0},$queues:{configurable:!0}};wa.$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)},ma.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__},wa.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ma.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(ma.prototype,wa);var ja=function(t){function e(){t.call(this,{logger:ya("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,s=!1,f=0;f0;)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){ba.set(this,t)},r.normalStore.get=function(){return ba.get(this)},r.lazyStore.set=function(t){_a.set(this,t)},r.lazyStore.get=function(){return _a.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}(ma))),Oa=(ya("process-contract"),function(t){var e=Jr(t);if(!1!==e)return e;throw new l("Missing property in contract!")});function Sa(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Jr(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={})[x]=((e={})[b]=Oa(n),e),r[C]=b,r)}var ka=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},Ea=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},$a=function(t,e){Ht(e).forEach((function(e){t.$off(Kt(e,N))}))},Aa=ya("respondHandler");function Ta(t,e,r){Gt(t,y)?(Aa("-- rejecter called --",t[y]),r(t[y])):Gt(t,d)?(Aa("-- resolver called --",t[d]),e(t[d])):(Aa("-- UNKNOWN_RESULT --",t),r({message:Q,error:t}))}var Pa=ya("action-call");function Na(t,e,r,n,o){void 0===o&&(o=[]);var a=Kt(e,N),i=n?U:q;return Pa("actionCall: "+a+" --\x3e "+r,o),t.$trigger(a,[r,Ht(o)]),new Promise((function(n,o){t.$on(Kt(e,r,i),(function(t){Pa("got the first result",t),Ta(t,n,o)}))}))}var Ra=ya("setup-send"),za=function(t,e,r,n,o,a){return Ur(t,"send",(function(t){var i=a?I:M;Ra("got payload for",t),ha(Ht(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Na(e,r,n,a,t);Ra("got ERROR_KEY",o[y]),e.$call(Kt(r,n,i),[new g(n,o[y])])})).catch((function(t){Ra("error after validateAsync",t),e.$call(Kt(r,n,i),[new g(n,t)])}))}),(function(){return function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return ha(t,o.params,!0).then((function(t){return Na(e,r,n,a,t)})).catch(H)}}))};ya("setup-resolver");function xa(t,e,r,n,o){return[Ir(t,X,(function(t,o){if(pa(t)&&Qt(o))switch(t){case U:e.$on(Kt(r,n,ON_RESULT_PROP_NAME),(function(t){Ta(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case W:e.$only(Kt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Ta(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]}ya("setup-resolver");var Ca=function(t,e,r,n,o,a){return[Ir(t,"myNamespace",r),e,r,n,o,a]},qa=function(t,e,r,n,o,a){return[Ur(t,q,(function(t){Qt(t)&&e.$on(Kt(r,n,q),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))})),e,r,n,o,a]},Ma=function(t,e,r,n,o,a){return[Ur(t,"onMessage",(function(t){if(Qt(t)){e.$only(Kt(r,n,"onMessage"),(function(o){Ta(o,t,(function(t){e.$trigger(Kt(r,n,M),t)}))}))}})),e,r,n,o,a]},Fa=function(t,e,r,n,o,a){return[Ur(t,M,(function(t){Qt(t)&&e.$only(Kt(r,n,M),t)})),e,r,n,o,a]};function La(t,e,r,n,o,a){var i=[Ca];a?i.push(xa):i.push(qa,Ma,Fa),i.push(za);var u=Reflect.apply(Xt,null,i);return Reflect.apply(u,null,[n,o,t,e,r,a])}ya("resolver-methods");function Wa(t,e,r,n,o){return function(){for(var a=[],i=arguments.length;i--;)a[i]=arguments[i];return ha(a,n.params,!0).then((function(n){return Na(t,e,r,o,n)})).catch(H)}}var Ua=function(t,e,r){return[Ir(t,r.loginHandlerName,(function(t){if(t&&isString(t))return e.$trigger(T,[t]);throw new g(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ia=function(t,e,r){return Ir(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Ja,Da;ya("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 s=u[c];n=Ir(n,c,La(i,c,s,Wa(r,i,c,s,a),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Va(t,e,r){var n=e.nspSet,o=[Ba];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Ir(t,X,(function(t,n){if(pa(t)&&Qt(n))switch(t){case I:for(var o in r)e.$on(Kt(o,I),n);break;case D:e.$only(D,n);break;case J:e.$on(J,n);break;default:e.$trigger(I,new V(X,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ur(t,M,(function(t){if(Qt(t))for(var n in r)e.$on(Kt(n,M),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ur(t,F,(function(t){Qt(t)&&e.$on(F,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ur(t,L,(function(t){Qt(t)&&e.$only(L,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Xt(Ua,Ia)(t,e,r):t}(e,r,t)})),Reflect.apply(Wr,null,o)(t,e,r)}var Ya=["roundtip","handshake"],Ha={useCallbackStyle:va(!1,["boolean"]),loginHandlerName:va("login",["string"]),logoutHandlerName:va("logout",["string"]),loginMethod:va("handshake",["string"],(Ja={},Ja[S]=Ya,Ja)),useJwt:va(!0,["boolean","string"]),hostname:va(!1,["string"]),namespace:va(b,["string"]),wsOptions:va({},["object"]),contract:va({},["object"],(Da={},Da[E]=Hr,Da)),enableAuth:va(!1,["boolean"]),token:va(!1,["string"])},Ga=ya("check-options"),Ka={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Qa={version:"version: 0.7.0 module: umd",serverType:"ws"},Xa=null;"undefined"!=typeof WebSocket?Xa=WebSocket:"undefined"!=typeof MozWebSocket?Xa=MozWebSocket:void 0!==u?Xa=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Xa=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Xa=self.WebSocket||self.MozWebSocket);var Za=Xa,ti=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 ei(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ti(e))}:function(e,r){var n=ti(e),o=r&&"string"==typeof r?n+"?"+B+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ri(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var ni=ya("client-event-handler"),oi=function(t,e,r){var n=r.useCallbackStyle,o=n?I:M,a=n?U:q;e.$only(Kt(t,K),(function(r,n){ni("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}])}))},ai=function(t){return t.length>1&&t[0]};function ii(t,e,r,n,o,a){var i=ai(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){ni("call bindWsHandler",u,o);var c=[o,a[o],r,u,t];if(t.serverType===G){var s=e.nspSet;c.push(s[o])}Reflect.apply(n,null,c)}else oi(o,r,t)})),r.$on(P,(function(){ni("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?I:M;e.forEach((function(e){t.$call(Kt(e,o),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(e){$a(r,e),a[e]=!1,oi(e,r,t)}))}))}var ui=["__reply__","__event__","__data__"],ci=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ui.filter((function(t){return Gt(e,t)})).length===ui.length&&e)}(pa(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new V("payload can not be decoded",t)},si=ya("ws-main-handler"),fi="onMessage",li=q,pi=K,hi=function(t,e,r,n){var o=[e];r&&(si("a global error on "+e),o.push(r)),o.push(M);var a=Reflect.apply(Kt,null,o),i=n.data||n;t.$trigger(a,[i])};function vi(t,e,r,n){e.onopen=function(){si("ws.onopen listened"),r.$call(F,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+L),r.$call(L,t)),r.$only(Kt(t,pi),(function(t,r){si("calling server",t,r),e.send(Yr(t,r))}))},e.onmessage=function(e){try{var n=ci(e),o=n.resolverName,a=n.type;switch(si("Hear from server",a,n),a){case N:var i=Kt(t,o,fi),u=r.$trigger(i,[n]);si("EMIT_REPLY_TYPE",i,u);break;case R:var c=Kt(t,o,li);r.$trigger(c,[n]);si("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:si("ERROR_TYPE"),hi(r,t,o,n);break;default:si("Unhandled event!",n),hi(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),hi(r,t,!1,e)}},e.onclose=function(){si("ws.onclose callback")},r.$on(P,(function(){try{si("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ya("ws-create-client");var gi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ri(e,t),i)})).reduce((function(t,e){return Object.assign(t,e)}),{});else{var s=(n=o,Object.keys(n)[0]);u.push(s),c[s]=ri(!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 function(t,e){return ga(t,Ha,Object.assign(Ka,e)).then((function(t){return t.hostname||(t.hostname=Ea()),t.wssPath=ka([t.hostname,t.namespace].join("/"),t.serverType),Ga("CONFIGURATION OPTIONS",t),t}))}(r,e).then((function(t){return{opts:t,nspMap:Sa(t),ee:n||new ja}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Va(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=ei(t),r=ei(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,vi],o=t.token,a=gi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ii,null,n.concat([u,i])),c&&r.$only(T,(function(o){$a(r,u);var a=gi(t,e,o);Reflect.apply(ii,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Za),Qa)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",k="args",E="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onMessage",M="onResult",F="onError",L="onReady",W="onLogin",U="message",I="result",J="error",D="ready",B="login",V="token",Y=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,Error.captureStackTrace&&Error.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}(s),H=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 G(t){if(Array.isArray(t))throw new d("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof H:throw new H(e,u);default:throw new Y(e,u)}}var K="socket.io",Q=N,X="UKNNOWN RESULT!",Z="on",tt=Array.isArray,et="object"==typeof u&&u&&u.Object===Object&&u,rt="object"==typeof self&&self&&self.Object===Object&&self,nt=et||rt||Function("return this")(),ot=nt.Symbol,at=Object.prototype,it=at.hasOwnProperty,ut=at.toString,ct=ot?ot.toStringTag:void 0;var ft=Object.prototype.toString;var st="[object Null]",lt="[object Undefined]",pt=ot?ot.toStringTag:void 0;function ht(t){return null==t?void 0===t?lt:st:pt&&pt in Object(t)?function(t){var e=it.call(t,ct),r=t[ct];try{t[ct]=void 0;var n=!0}catch(t){}var o=ut.call(t);return n&&(e?t[ct]=r:delete t[ct]),o}(t):function(t){return ft.call(t)}(t)}function vt(t,e){return function(r){return t(e(r))}}var dt=vt(Object.getPrototypeOf,Object);function gt(t){return null!=t&&"object"==typeof t}var yt="[object Object]",bt=Function.prototype,_t=Object.prototype,mt=bt.toString,wt=_t.hasOwnProperty,jt=mt.call(Object);function Ot(t){if(!gt(t)||ht(t)!=yt)return!1;var e=dt(t);if(null===e)return!0;var r=wt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&mt.call(r)==jt}function St(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--&&zt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Gt=function(t){return tt(t)?t:[t]},Kt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Qt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},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,Gt(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=ht(t);return e==ie||e==ue||e==ae||e==ce}var se,le=nt["__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(nt,"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?nt.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&&et.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 gt(t)&&rr(t.length)&&!!cr[ht(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 Jr(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Dr(t){return!!Kt(t,"socket")&&t.socket}var Br="[object String]";function Vr(t){return"string"==typeof t||!tt(t)&>(t)&&ht(t)==Br}var Yr=function(t){var e;return(e={}).args=t,e};function Hr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Vr(t)&&tt(e)){var o=Yr(e);return!0===r?o:((n={})[t]=o,n)}throw new d("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Gr=function(t){return Ot(t)&&(Kt(t,_)||Kt(t,m)||Kt(t,w))};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||gt(t)&&ht(t)==Xr}(t)&&t!=+t}var tn=vt(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!Bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Vo(r,t)})).length},Go=function(t,e){if(void 0===e&&(e=null),Ot(t)){if(!e)return!0;if(Vo(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):!Bo(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!Vo(e.arg);case!1!==(r=Yo(t)):return!Ho(e,r);default:return!Bo(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(!Vo(e))throw new Y("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Vo(t))throw new Y("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 Y("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={})[y]=a,n[g]=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[Jo]}));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={})[Do]=!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 Vo(t)?t:[t]};var ua=function(t,e){return!Vo(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[Do])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 h(r,n);if(!1!==e[Wo]&&!ua(e[Uo],e[Wo]))throw Qo(Wo,e[Wo]),new p(r);if(!1!==e[Io]&&!ca(e[Uo],e[Io]))throw Qo(Io,e[Io]),new v(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[k]=t,i[j]=e,!0===r&&(i[O]=!0),Vo(n)&&(i[S]=n),fe(o)&&(i[E]=o),Vr(a)&&(i[$]=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[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},da=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[E],i=r[$];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(u.debug)return u.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=Dr(t);if(!1!==e)return e;throw new l("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=Dr(t);if(!1===r){if(e)return t;throw new Y("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={})[x]=((e={})[b]=Sa(n),e),r[C]=b,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){Gt(e).forEach((function(e){t.$off(Qt(e,N))}))},Ta=ba("respondHandler");function Pa(t,e,r){Kt(t,y)?(Ta("-- rejecter called --",t[y]),r(t[y])):Kt(t,g)?(Ta("-- resolver called --",t[g]),e(t[g])):(Ta("-- UNKNOWN_RESULT --",t),r({message:X,error:t}))}var Na=ba("action-call");function Ra(t,e,r,n,o){void 0===o&&(o=[]);var a=Qt(e,N),i=n?I:M;return Na("actionCall: "+a+" --\x3e "+r,o),t.$trigger(a,[r,Gt(o)]),new Promise((function(n,o){t.$on(Qt(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?J:F;za("got payload for",t),va(Gt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Ra(e,r,n,a,t);za("got ERROR_KEY",o[y]),e.$call(Qt(r,n,i),[new d(n,o[y])])})).catch((function(t){za("error after validateAsync",t),e.$call(Qt(r,n,i),[new d(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(G)}}))};ba("setup-resolver");function Ca(t,e,r,n,o){return[Jr(t,Z,(function(t,o){if(ha(t)&&Xt(o))switch(t){case I:e.$on(Qt(r,n,ON_RESULT_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case U:e.$only(Qt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case READY_PROP_NAME:e.$only(Qt(r,n,ON_ERROR_PROP_NAME),o);break;default:e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),new Y(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,M,(function(t){Xt(t)&&e.$on(Qt(r,n,M),(function(o){Pa(o,t,(function(t){e.$trigger(Qt(r,n,F),t)}))}))})),e,r,n,o,a]},Fa=function(t,e,r,n,o,a){return[Ir(t,q,(function(t){if(Xt(t)){e.$only(Qt(r,n,q),(function(o){Pa(o,t,(function(t){e.$trigger(Qt(r,n,F),t)}))}))}})),e,r,n,o,a]},La=function(t,e,r,n,o,a){return[Ir(t,F,(function(t){Xt(t)&&e.$only(Qt(r,n,F),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(G)}}var Ia=function(t,e,r){return[Jr(t,r.loginHandlerName,(function(t){if(t&&ha(t))return e.$trigger(T,[t]);throw new d(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ja=function(t,e,r){return Jr(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Da,Ba;ba("generator");function Va(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=[Va];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Jr(t,Z,(function(t,n){if(ha(t)&&Xt(n))switch(t){case J:for(var o in r)e.$on(Qt(o,J),n);break;case B:e.$only(B,n);break;case D:e.$on(D,n);break;default:e.$trigger(J,new Y(Z,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ir(t,F,(function(t){if(Xt(t))for(var n in r)e.$on(Qt(n,F),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ir(t,L,(function(t){Xt(t)&&e.$on(L,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ir(t,W,(function(t){Xt(t)&&e.$only(W,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Zt(Ia,Ja)(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"],(Da={},Da[S]=Ha,Da)),useJwt:da(!0,["boolean","string"]),hostname:da(!1,["string"]),namespace:da(b,["string"]),wsOptions:da({},["object"]),contract:da({},["object"],(Ba={},Ba[E]=Gr,Ba)),enableAuth:da(!1,["boolean"]),token:da(!1,["string"])},Ka=ba("check-options"),Qa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Xa={version:"version: 0.7.0 module: umd",serverType:"ws"},Za=null;"undefined"!=typeof WebSocket?Za=WebSocket:"undefined"!=typeof MozWebSocket?Za=MozWebSocket:void 0!==u?Za=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Za=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Za=self.WebSocket||self.MozWebSocket);var ti=Za,ei=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 ri(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ei(e))}:function(e,r){var n=ei(e),o=r&&"string"==typeof r?n+"?"+V+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ni(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var oi=ba("client-event-handler"),ai=function(t,e,r){var n=r.useCallbackStyle,o=n?J:F,a=n?I:M;e.$only(Qt(t,Q),(function(r,n){oi("noLoginHandler hijack the ws call",t,r,n);var i={message:"NOT LOGIN"};e.$call(Qt(t,r,o),[i]),e.$call(Qt(t,r,a),[{error:i}])}))},ii=function(t){return t.length>1&&t[0]};function ui(t,e,r,n,o,a){var i=ii(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){oi("call bindWsHandler",u,o);var c=[o,a[o],r,u,t];if(t.serverType===K){var f=e.nspSet;c.push(f[o])}Reflect.apply(n,null,c)}else ai(o,r,t)})),r.$on(P,(function(){oi("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?J:F;e.forEach((function(e){t.$call(Qt(e,o),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(e){Aa(r,e),a[e]=!1,ai(e,r,t)}))}))}var ci=["__reply__","__event__","__data__"],fi=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ci.filter((function(t){return Kt(e,t)})).length===ci.length&&e)}(ha(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new Y("payload can not be decoded",t)},si=ba("ws-main-handler"),li=function(t,e,r,n){var o=[e];r&&(si("a global error on "+e),o.push(r)),o.push(F);var a=Reflect.apply(Qt,null,o),i=n.data||n;t.$trigger(a,[i])};function pi(t,e,r,n,o){e.onopen=function(){si("ws.onopen listened"),r.$call(L,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+W),r.$call(W,t)),r.$only(Qt(t,N),(function(t,r){si("calling server",t,r),e.send(Hr(t,r))}))},e.onmessage=function(e){try{var n=fi(e),o=n.resolverName,a=n.type;switch(si("Hear from server",a,n),a){case N:var i=Qt(t,o,q),u=r.$trigger(i,[n]);si("EMIT_REPLY_TYPE",i,u);break;case R:var c=Qt(t,o,M);r.$trigger(c,[n]);si("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:si("ERROR_TYPE"),li(r,t,o,n);break;default:si("Unhandled event!",n),li(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),li(r,t,!1,e)}},e.onclose=function(){si("ws.onclose callback")},r.$on(P,(function(){try{si("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ba("ws-create-client");var hi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ni(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]=ni(!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 function(t,e){return ga(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}))}(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=ri(t),r=ri(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,pi],o=t.token,a=hi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ui,null,n.concat([u,i])),c&&r.$only(T,(function(o){Aa(r,u);var a=hi(t,e,o);Reflect.apply(ui,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(ti),Xa)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 8c959cf2..ab8ac2d3 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -1,6 +1,6 @@ { "name": "@jsonql/ws", - "version": "0.7.0", + "version": "0.8.0", "description": "WS (WebSocket) jsonql client module for browser / node", "main": "dist/jsonql-ws.cjs.js", "browser": "dist/jsonql-ws.umd.js", @@ -42,7 +42,7 @@ "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.8.1", - "jsonql-ws-client": "^1.3.2", + "jsonql-ws-client": "^1.3.3", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/@jsonql/ws/src/core/ws-main-handler.js b/packages/@jsonql/ws/src/core/ws-main-handler.js index dc0ee8df..0f8b5d4b 100644 --- a/packages/@jsonql/ws/src/core/ws-main-handler.js +++ b/packages/@jsonql/ws/src/core/ws-main-handler.js @@ -31,14 +31,16 @@ const debugFn = getDebug('ws-main-handler') * @param {string} namespace nsp * @param {string} resolverName resolver * @param {object} json decoded payload or error object + * @param {string} ERROR_EVT_NAME the error event name + * @return {undefined} nothing return */ -const errorTypeHandler = (ee, namespace, resolverName, json) => { +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(ON_ERROR_PROP_NAME) + evt.push(ERROR_EVT_NAME) let evtName = Reflect.apply(createEvt, null, evt) // test if there is a data field let payload = json.data || json; @@ -55,15 +57,21 @@ const errorTypeHandler = (ee, namespace, resolverName, json) => { * @return {object} promise resolve after the onopen event */ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { + 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; + const MESSAGE_EVT_NAME = useCallbackStyle ? MESSAGE_PROP_NAME : ON_MESSAGE_PROP_NAME; + const RESULT_EVT_NAME = useCallbackStyle ? RESULT_PROP_NAME : ON_RESULT_PROP_NAME; + const ERROR_EVT_NAME = useCallbackStyle ? ERROR_PROP_NAME : ON_ERROR_PROP_NAME; // connection open ws.onopen = function onOpenCallback() { debugFn('ws.onopen listened') // we just call the onReady - ee.$call(ON_READY_PROP_NAME, namespace) + ee.$call(READY_EVT_NAME, namespace) // need an extra parameter here to id the private nsp if (isPrivate) { - console.log(`isPrivate and fire the ON_LOGIN_PROP_NAME ${ON_LOGIN_PROP_NAME}`) - ee.$call(ON_LOGIN_PROP_NAME, namespace) + console.log(`isPrivate and fire the ${LOGIN_EVT_NAME}`) + ee.$call(LOGIN_EVT_NAME, namespace) } // add listener only after the open is called ee.$only( @@ -88,12 +96,12 @@ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { debugFn('Hear from server', type, json) switch (type) { case EMIT_REPLY_TYPE: - let e1 = createEvt(namespace, resolverName, ON_MESSAGE_PROP_NAME) + let e1 = createEvt(namespace, resolverName, MESSAGE_EVT_NAME) let r = ee.$trigger(e1, [json]) debugFn(`EMIT_REPLY_TYPE`, e1, r) break; case ACKNOWLEDGE_REPLY_TYPE: - let e2 = createEvt(namespace, resolverName, ON_RESULT_PROP_NAME) + let e2 = createEvt(namespace, resolverName, RESULT_EVT_NAME) let x = ee.$trigger(e2, [json]) debugFn(`ACKNOWLEDGE_REPLY_TYPE`, e2, json) break; @@ -101,19 +109,19 @@ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { // this is handled error and we won't throw it // we need to extract the error from json debugFn(`ERROR_TYPE`) - errorTypeHandler(ee, namespace, resolverName, json) + errorTypeHandler(ee, namespace, resolverName, json, ERROR_EVT_NAME) break; // @TODO there should be an error type instead of roll into the other two types? TBC default: // if this happen then we should throw it and halt the operation all together debugFn('Unhandled event!', json) - errorTypeHandler(ee, namespace, resolverName, json) + errorTypeHandler(ee, namespace, resolverName, json, ERROR_EVT_NAME) // let error = {error: {'message': 'Unhandled event!', type}}; // ee.$trigger(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [error]) } } catch(e) { console.error(`ws.onmessage error`, e) - errorTypeHandler(ee, namespace, false, e) + errorTypeHandler(ee, namespace, false, e, ERROR_EVT_NAME) } } // when the server close the connection -- Gitee From e94b7cdf8d3136a6befb0b7fc330878fb4bb6fb3 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 22:39:02 +0800 Subject: [PATCH 37/44] @jsonql/ws to 0.8.0 with the on interface --- packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js | 2 +- packages/@jsonql/ws/dist/jsonql-ws-client.umd.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js index 7f28314b..5599426f 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.cjs.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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){var o=[r];t&&(debugFn$8("a global error on "+r),o.push(t)),o.push(ON_ERROR_PROP_NAME$1);var a=Reflect.apply(createEvt,null,o),i=n.data||n;e.$trigger(a,[i])};function wsMainHandler(e,r,t,n,o){r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(ON_READY_PROP_NAME,e),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+ON_LOGIN_PROP_NAME),t.$call(ON_LOGIN_PROP_NAME,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,ON_MESSAGE_PROP_NAME$1),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var c=createEvt(e,o,ON_RESULT_PROP_NAME$1);t.$trigger(c,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r)}},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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var debug$2=_interopDefault(require("debug"));require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},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),isBrowser=function(){try{if(window||document)return!0}catch(e){}return!1},isNode=function(){try{if(!isBrowser()&&global$1)return!0}catch(e){}return!1};function whereAmI(){return isBrowser()?"browser":isNode()?"node":"unknown"}var JsonqlBaseError=function(e){function r(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];e.apply(this,r)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.where=function(){return whereAmI()},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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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,Error.captureStackTrace&&Error.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}(JsonqlBaseError),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,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){var t=Object.keys(e);return inArray(t,r)},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},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 injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(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 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 createQuery(e,r,t){var n;if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString(e)&&isArray(r)){var o=formatPayload(r);return!0===t?o:((n={})[e]=o,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 isContract=checkIsContract;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},isKeyInObject=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 isKeyInObject(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isKeyInObject(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 constructConfigFn(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 constructConfigFn.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&&e.useJwt)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);global$1.debug=debug$2;var node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=jsonql-ws-client.cjs.js.map diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 1fb8238d..105260e0 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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",k="args",E="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onMessage",M="onResult",F="onError",L="onReady",W="onLogin",U="message",I="result",J="error",D="ready",B="login",V="token",Y=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,Error.captureStackTrace&&Error.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}(s),H=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 G(t){if(Array.isArray(t))throw new d("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof H:throw new H(e,u);default:throw new Y(e,u)}}var K="socket.io",Q=N,X="UKNNOWN RESULT!",Z="on",tt=Array.isArray,et="object"==typeof u&&u&&u.Object===Object&&u,rt="object"==typeof self&&self&&self.Object===Object&&self,nt=et||rt||Function("return this")(),ot=nt.Symbol,at=Object.prototype,it=at.hasOwnProperty,ut=at.toString,ct=ot?ot.toStringTag:void 0;var ft=Object.prototype.toString;var st="[object Null]",lt="[object Undefined]",pt=ot?ot.toStringTag:void 0;function ht(t){return null==t?void 0===t?lt:st:pt&&pt in Object(t)?function(t){var e=it.call(t,ct),r=t[ct];try{t[ct]=void 0;var n=!0}catch(t){}var o=ut.call(t);return n&&(e?t[ct]=r:delete t[ct]),o}(t):function(t){return ft.call(t)}(t)}function vt(t,e){return function(r){return t(e(r))}}var dt=vt(Object.getPrototypeOf,Object);function gt(t){return null!=t&&"object"==typeof t}var yt="[object Object]",bt=Function.prototype,_t=Object.prototype,mt=bt.toString,wt=_t.hasOwnProperty,jt=mt.call(Object);function Ot(t){if(!gt(t)||ht(t)!=yt)return!1;var e=dt(t);if(null===e)return!0;var r=wt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&mt.call(r)==jt}function St(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--&&zt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Gt=function(t){return tt(t)?t:[t]},Kt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Qt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},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,Gt(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=ht(t);return e==ie||e==ue||e==ae||e==ce}var se,le=nt["__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(nt,"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?nt.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&&et.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 gt(t)&&rr(t.length)&&!!cr[ht(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 Jr(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Dr(t){return!!Kt(t,"socket")&&t.socket}var Br="[object String]";function Vr(t){return"string"==typeof t||!tt(t)&>(t)&&ht(t)==Br}var Yr=function(t){var e;return(e={}).args=t,e};function Hr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Vr(t)&&tt(e)){var o=Yr(e);return!0===r?o:((n={})[t]=o,n)}throw new d("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Gr=function(t){return Ot(t)&&(Kt(t,_)||Kt(t,m)||Kt(t,w))};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||gt(t)&&ht(t)==Xr}(t)&&t!=+t}var tn=vt(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!Bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Vo(r,t)})).length},Go=function(t,e){if(void 0===e&&(e=null),Ot(t)){if(!e)return!0;if(Vo(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):!Bo(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!Vo(e.arg);case!1!==(r=Yo(t)):return!Ho(e,r);default:return!Bo(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(!Vo(e))throw new Y("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Vo(t))throw new Y("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 Y("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={})[y]=a,n[g]=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[Jo]}));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={})[Do]=!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 Vo(t)?t:[t]};var ua=function(t,e){return!Vo(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[Do])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 h(r,n);if(!1!==e[Wo]&&!ua(e[Uo],e[Wo]))throw Qo(Wo,e[Wo]),new p(r);if(!1!==e[Io]&&!ca(e[Uo],e[Io]))throw Qo(Io,e[Io]),new v(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[k]=t,i[j]=e,!0===r&&(i[O]=!0),Vo(n)&&(i[S]=n),fe(o)&&(i[E]=o),Vr(a)&&(i[$]=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[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},da=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[E],i=r[$];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(u.debug)return u.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=Dr(t);if(!1!==e)return e;throw new l("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=Dr(t);if(!1===r){if(e)return t;throw new Y("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={})[x]=((e={})[b]=Sa(n),e),r[C]=b,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){Gt(e).forEach((function(e){t.$off(Qt(e,N))}))},Ta=ba("respondHandler");function Pa(t,e,r){Kt(t,y)?(Ta("-- rejecter called --",t[y]),r(t[y])):Kt(t,g)?(Ta("-- resolver called --",t[g]),e(t[g])):(Ta("-- UNKNOWN_RESULT --",t),r({message:X,error:t}))}var Na=ba("action-call");function Ra(t,e,r,n,o){void 0===o&&(o=[]);var a=Qt(e,N),i=n?I:M;return Na("actionCall: "+a+" --\x3e "+r,o),t.$trigger(a,[r,Gt(o)]),new Promise((function(n,o){t.$on(Qt(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?J:F;za("got payload for",t),va(Gt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Ra(e,r,n,a,t);za("got ERROR_KEY",o[y]),e.$call(Qt(r,n,i),[new d(n,o[y])])})).catch((function(t){za("error after validateAsync",t),e.$call(Qt(r,n,i),[new d(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(G)}}))};ba("setup-resolver");function Ca(t,e,r,n,o){return[Jr(t,Z,(function(t,o){if(ha(t)&&Xt(o))switch(t){case I:e.$on(Qt(r,n,ON_RESULT_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case U:e.$only(Qt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case READY_PROP_NAME:e.$only(Qt(r,n,ON_ERROR_PROP_NAME),o);break;default:e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),new Y(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,M,(function(t){Xt(t)&&e.$on(Qt(r,n,M),(function(o){Pa(o,t,(function(t){e.$trigger(Qt(r,n,F),t)}))}))})),e,r,n,o,a]},Fa=function(t,e,r,n,o,a){return[Ir(t,q,(function(t){if(Xt(t)){e.$only(Qt(r,n,q),(function(o){Pa(o,t,(function(t){e.$trigger(Qt(r,n,F),t)}))}))}})),e,r,n,o,a]},La=function(t,e,r,n,o,a){return[Ir(t,F,(function(t){Xt(t)&&e.$only(Qt(r,n,F),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(G)}}var Ia=function(t,e,r){return[Jr(t,r.loginHandlerName,(function(t){if(t&&ha(t))return e.$trigger(T,[t]);throw new d(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ja=function(t,e,r){return Jr(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Da,Ba;ba("generator");function Va(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=[Va];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Jr(t,Z,(function(t,n){if(ha(t)&&Xt(n))switch(t){case J:for(var o in r)e.$on(Qt(o,J),n);break;case B:e.$only(B,n);break;case D:e.$on(D,n);break;default:e.$trigger(J,new Y(Z,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ir(t,F,(function(t){if(Xt(t))for(var n in r)e.$on(Qt(n,F),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ir(t,L,(function(t){Xt(t)&&e.$on(L,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ir(t,W,(function(t){Xt(t)&&e.$only(W,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Zt(Ia,Ja)(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"],(Da={},Da[S]=Ha,Da)),useJwt:da(!0,["boolean","string"]),hostname:da(!1,["string"]),namespace:da(b,["string"]),wsOptions:da({},["object"]),contract:da({},["object"],(Ba={},Ba[E]=Gr,Ba)),enableAuth:da(!1,["boolean"]),token:da(!1,["string"])},Ka=ba("check-options"),Qa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Xa={version:"version: 0.7.0 module: umd",serverType:"ws"},Za=null;"undefined"!=typeof WebSocket?Za=WebSocket:"undefined"!=typeof MozWebSocket?Za=MozWebSocket:void 0!==u?Za=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Za=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Za=self.WebSocket||self.MozWebSocket);var ti=Za,ei=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 ri(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ei(e))}:function(e,r){var n=ei(e),o=r&&"string"==typeof r?n+"?"+V+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ni(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var oi=ba("client-event-handler"),ai=function(t,e,r){var n=r.useCallbackStyle,o=n?J:F,a=n?I:M;e.$only(Qt(t,Q),(function(r,n){oi("noLoginHandler hijack the ws call",t,r,n);var i={message:"NOT LOGIN"};e.$call(Qt(t,r,o),[i]),e.$call(Qt(t,r,a),[{error:i}])}))},ii=function(t){return t.length>1&&t[0]};function ui(t,e,r,n,o,a){var i=ii(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){oi("call bindWsHandler",u,o);var c=[o,a[o],r,u,t];if(t.serverType===K){var f=e.nspSet;c.push(f[o])}Reflect.apply(n,null,c)}else ai(o,r,t)})),r.$on(P,(function(){oi("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?J:F;e.forEach((function(e){t.$call(Qt(e,o),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(e){Aa(r,e),a[e]=!1,ai(e,r,t)}))}))}var ci=["__reply__","__event__","__data__"],fi=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ci.filter((function(t){return Kt(e,t)})).length===ci.length&&e)}(ha(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new Y("payload can not be decoded",t)},si=ba("ws-main-handler"),li=function(t,e,r,n){var o=[e];r&&(si("a global error on "+e),o.push(r)),o.push(F);var a=Reflect.apply(Qt,null,o),i=n.data||n;t.$trigger(a,[i])};function pi(t,e,r,n,o){e.onopen=function(){si("ws.onopen listened"),r.$call(L,t),n&&(console.log("isPrivate and fire the ON_LOGIN_PROP_NAME "+W),r.$call(W,t)),r.$only(Qt(t,N),(function(t,r){si("calling server",t,r),e.send(Hr(t,r))}))},e.onmessage=function(e){try{var n=fi(e),o=n.resolverName,a=n.type;switch(si("Hear from server",a,n),a){case N:var i=Qt(t,o,q),u=r.$trigger(i,[n]);si("EMIT_REPLY_TYPE",i,u);break;case R:var c=Qt(t,o,M);r.$trigger(c,[n]);si("ACKNOWLEDGE_REPLY_TYPE",c,n);break;case z:si("ERROR_TYPE"),li(r,t,o,n);break;default:si("Unhandled event!",n),li(r,t,o,n)}}catch(e){console.error("ws.onmessage error",e),li(r,t,!1,e)}},e.onclose=function(){si("ws.onclose callback")},r.$on(P,(function(){try{si("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ba("ws-create-client");var hi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ni(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]=ni(!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 function(t,e){return ga(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}))}(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=ri(t),r=ri(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,pi],o=t.token,a=hi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ui,null,n.concat([u,i])),c&&r.$only(T,(function(o){Aa(r,u);var a=hi(t,e,o);Reflect.apply(ui,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(ti),Xa)})); +!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="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},c=function(){try{if(window||document)return!0}catch(t){}return!1},f=function(){try{if(!c()&&u)return!0}catch(t){}return!1};var s=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return c()?"browser":f()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(s),p=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),h=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),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}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,Error.captureStackTrace&&Error.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}(s),g="data",y="error",b="jsonql",_="query",m="mutation",w="socket",j="type",O="optional",S="enumv",k="args",E="checker",$="alias",A="No message",T="__login__",P="__logout__",N="emit",R="acknowledge",z="error",x="nspSet",C="publicNamespace",q="onMessage",M="onResult",F="onError",L="onReady",W="onLogin",U="message",I="result",J="error",D="ready",B="login",V="token",Y=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,Error.captureStackTrace&&Error.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}(s),H=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 G(t){if(Array.isArray(t))throw new d("",t);var e=t.message||A,u=t.detail||t;switch(!0){case t instanceof r:throw new r(e,u);case t instanceof n:throw new n(e,u);case t instanceof o:throw new o(e,u);case t instanceof a:throw new a(e,u);case t instanceof i:throw new i(e,u);case t instanceof l:throw new l(e,u);case t instanceof p:throw new p(e,u);case t instanceof h:throw new h(e,u);case t instanceof v:throw new v(e,u);case t instanceof d:throw new d(e,u);case t instanceof H:throw new H(e,u);default:throw new Y(e,u)}}var K="socket.io",Q=N,X="UKNNOWN RESULT!",Z="on",tt=Array.isArray,et="object"==typeof u&&u&&u.Object===Object&&u,rt="object"==typeof self&&self&&self.Object===Object&&self,nt=et||rt||Function("return this")(),ot=nt.Symbol,at=Object.prototype,it=at.hasOwnProperty,ut=at.toString,ct=ot?ot.toStringTag:void 0;var ft=Object.prototype.toString;var st="[object Null]",lt="[object Undefined]",pt=ot?ot.toStringTag:void 0;function ht(t){return null==t?void 0===t?lt:st:pt&&pt in Object(t)?function(t){var e=it.call(t,ct),r=t[ct];try{t[ct]=void 0;var n=!0}catch(t){}var o=ut.call(t);return n&&(e?t[ct]=r:delete t[ct]),o}(t):function(t){return ft.call(t)}(t)}function vt(t,e){return function(r){return t(e(r))}}var dt=vt(Object.getPrototypeOf,Object);function gt(t){return null!=t&&"object"==typeof t}var yt="[object Object]",bt=Function.prototype,_t=Object.prototype,mt=bt.toString,wt=_t.hasOwnProperty,jt=mt.call(Object);function Ot(t){if(!gt(t)||ht(t)!=yt)return!1;var e=dt(t);if(null===e)return!0;var r=wt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&mt.call(r)==jt}function St(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--&&zt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Gt=function(t){return tt(t)?t:[t]},Kt=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Qt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},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,Gt(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=ht(t);return e==ie||e==ue||e==ae||e==ce}var se,le=nt["__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(nt,"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?nt.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&&et.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 gt(t)&&rr(t.length)&&!!cr[ht(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 Jr(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Dr(t){return!!Kt(t,"socket")&&t.socket}var Br="[object String]";function Vr(t){return"string"==typeof t||!tt(t)&>(t)&&ht(t)==Br}var Yr=function(t){var e;return(e={}).args=t,e};function Hr(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),Vr(t)&&tt(e)){var o=Yr(e);return!0===r?o:((n={})[t]=o,n)}throw new d("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e,r))}var Gr=function(t){return Ot(t)&&(Kt(t,_)||Kt(t,m)||Kt(t,w))};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||gt(t)&&ht(t)==Xr}(t)&&t!=+t}var tn=vt(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!Bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Vo(r,t)})).length},Go=function(t,e){if(void 0===e&&(e=null),Ot(t)){if(!e)return!0;if(Vo(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):!Bo(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!Vo(e.arg);case!1!==(r=Yo(t)):return!Ho(e,r);default:return!Bo(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(!Vo(e))throw new Y("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Vo(t))throw new Y("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 Y("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={})[y]=a,n[g]=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[Jo]}));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={})[Do]=!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 Vo(t)?t:[t]};var ua=function(t,e){return!Vo(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[Do])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 h(r,n);if(!1!==e[Wo]&&!ua(e[Uo],e[Wo]))throw Qo(Wo,e[Wo]),new p(r);if(!1!==e[Io]&&!ca(e[Uo],e[Io]))throw Qo(Io,e[Io]),new v(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[k]=t,i[j]=e,!0===r&&(i[O]=!0),Vo(n)&&(i[S]=n),fe(o)&&(i[E]=o),Vr(a)&&(i[$]=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[y].length?o(a[y]):n(a[g]):a.length?o(a):n([])}))},da=function(t,e,r){void 0===r&&(r={});var n=r[O],o=r[S],a=r[E],i=r[$];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(u.debug)return u.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=Dr(t);if(!1!==e)return e;throw new l("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=Dr(t);if(!1===r){if(e)return t;throw new Y("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={})[x]=((e={})[b]=Sa(n),e),r[C]=b,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){Gt(e).forEach((function(e){t.$off(Qt(e,N))}))},Ta=ba("respondHandler");function Pa(t,e,r){Kt(t,y)?(Ta("-- rejecter called --",t[y]),r(t[y])):Kt(t,g)?(Ta("-- resolver called --",t[g]),e(t[g])):(Ta("-- UNKNOWN_RESULT --",t),r({message:X,error:t}))}var Na=ba("action-call");function Ra(t,e,r,n,o){void 0===o&&(o=[]);var a=Qt(e,N),i=n?I:M;return Na("actionCall: "+a+" --\x3e "+r,o),t.$trigger(a,[r,Gt(o)]),new Promise((function(n,o){t.$on(Qt(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?J:F;za("got payload for",t),va(Gt(t),o.params,!0).then((function(o){if(!o[y]||!o[y].length)return Ra(e,r,n,a,t);za("got ERROR_KEY",o[y]),e.$call(Qt(r,n,i),[new d(n,o[y])])})).catch((function(t){za("error after validateAsync",t),e.$call(Qt(r,n,i),[new d(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(G)}}))};ba("setup-resolver");function Ca(t,e,r,n,o){return[Jr(t,Z,(function(t,o){if(ha(t)&&Xt(o))switch(t){case I:e.$on(Qt(r,n,ON_RESULT_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case U:e.$only(Qt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case READY_PROP_NAME:e.$only(Qt(r,n,ON_ERROR_PROP_NAME),o);break;default:e.$trigger(Qt(r,n,ON_ERROR_PROP_NAME),new Y(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,M,(function(t){Xt(t)&&e.$on(Qt(r,n,M),(function(o){Pa(o,t,(function(t){e.$trigger(Qt(r,n,F),t)}))}))})),e,r,n,o,a]},Fa=function(t,e,r,n,o,a){return[Ir(t,q,(function(t){if(Xt(t)){e.$only(Qt(r,n,q),(function(o){Pa(o,t,(function(t){e.$trigger(Qt(r,n,F),t)}))}))}})),e,r,n,o,a]},La=function(t,e,r,n,o,a){return[Ir(t,F,(function(t){Xt(t)&&e.$only(Qt(r,n,F),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(G)}}var Ia=function(t,e,r){return[Jr(t,r.loginHandlerName,(function(t){if(t&&ha(t))return e.$trigger(T,[t]);throw new d(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ja=function(t,e,r){return Jr(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(P,t)}))};var Da,Ba;ba("generator");function Va(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=[Va];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Jr(t,Z,(function(t,n){if(ha(t)&&Xt(n))switch(t){case J:for(var o in r)e.$on(Qt(o,J),n);break;case B:e.$only(B,n);break;case D:e.$on(D,n);break;default:e.$trigger(J,new Y(Z,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ir(t,F,(function(t){if(Xt(t))for(var n in r)e.$on(Qt(n,F),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ir(t,L,(function(t){Xt(t)&&e.$on(L,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ir(t,W,(function(t){Xt(t)&&e.$only(W,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Zt(Ia,Ja)(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"],(Da={},Da[S]=Ha,Da)),useJwt:da(!0,["boolean","string"]),hostname:da(!1,["string"]),namespace:da(b,["string"]),wsOptions:da({},["object"]),contract:da({},["object"],(Ba={},Ba[E]=Gr,Ba)),enableAuth:da(!1,["boolean"]),token:da(!1,["string"])},Ka=ba("check-options"),Qa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};var Xa={version:"version: 0.8.0 module: umd",serverType:"ws"},Za=null;"undefined"!=typeof WebSocket?Za=WebSocket:"undefined"!=typeof MozWebSocket?Za=MozWebSocket:void 0!==u?Za=u.WebSocket||u.MozWebSocket:"undefined"!=typeof window?Za=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Za=self.WebSocket||self.MozWebSocket);var ti=Za,ei=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 ri(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ei(e))}:function(e,r){var n=ei(e),o=r&&"string"==typeof r?n+"?"+V+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function ni(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var oi=ba("client-event-handler"),ai=function(t,e,r){var n=r.useCallbackStyle,o=n?J:F,a=n?I:M;e.$only(Qt(t,Q),(function(r,n){oi("noLoginHandler hijack the ws call",t,r,n);var i={message:"NOT LOGIN"};e.$call(Qt(t,r,o),[i]),e.$call(Qt(t,r,a),[{error:i}])}))},ii=function(t){return t.length>1&&t[0]};function ui(t,e,r,n,o,a){var i=ii(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){oi("call bindWsHandler",u,o);var c=[o,a[o],r,u,t];if(t.serverType===K){var f=e.nspSet;c.push(f[o])}Reflect.apply(n,null,c)}else ai(o,r,t)})),r.$on(P,(function(){oi("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?J:F;e.forEach((function(e){t.$call(Qt(e,o),[{message:r,namespace:e}])}))}(r,o,P),o.forEach((function(e){Aa(r,e),a[e]=!1,ai(e,r,t)}))}))}var ci=["__reply__","__event__","__data__"],fi=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ci.filter((function(t){return Kt(e,t)})).length===ci.length&&e)}(ha(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new Y("payload can not be decoded",t)},si=ba("ws-main-handler"),li=function(t,e,r,n,o){var a=[e];r&&(si("a global error on "+e),a.push(r)),a.push(o);var i=Reflect.apply(Qt,null,a),u=n.data||n;t.$trigger(i,[u])};function pi(t,e,r,n,o){var a=o.useCallbackStyle,i=a?D:L,u=a?B:W,c=a?U:q,f=a?I:M,s=a?J:F;e.onopen=function(){si("ws.onopen listened"),r.$call(i,t),n&&(console.log("isPrivate and fire the "+u),r.$call(u,t)),r.$only(Qt(t,N),(function(t,r){si("calling server",t,r),e.send(Hr(t,r))}))},e.onmessage=function(e){try{var n=fi(e),o=n.resolverName,a=n.type;switch(si("Hear from server",a,n),a){case N:var i=Qt(t,o,c),u=r.$trigger(i,[n]);si("EMIT_REPLY_TYPE",i,u);break;case R:var l=Qt(t,o,f);r.$trigger(l,[n]);si("ACKNOWLEDGE_REPLY_TYPE",l,n);break;case z:si("ERROR_TYPE"),li(r,t,o,n,s);break;default:si("Unhandled event!",n),li(r,t,o,n,s)}}catch(e){console.error("ws.onmessage error",e),li(r,t,!1,e,s)}},e.onclose=function(){si("ws.onclose callback")},r.$on(P,(function(){try{si("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}ba("ws-create-client");var hi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth&&t.useJwt)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]=ni(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]=ni(!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 function(t,e){return ga(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}))}(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=ri(t),r=ri(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,pi],o=t.token,a=hi(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ui,null,n.concat([u,i])),c&&r.$only(T,(function(o){Aa(r,u);var a=hi(t,e,o);Reflect.apply(ui,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(ti),Xa)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map -- Gitee From 3b24da8b00240b38145b21e6817ec2f9fbc67fd2 Mon Sep 17 00:00:00 2001 From: joelchu Date: Sun, 27 Oct 2019 23:34:56 +0800 Subject: [PATCH 38/44] create the new getter as method for generator --- packages/http-client/core.js | 2 +- packages/http-client/core.js.map | 2 +- .../http-client/dist/jsonql-client.static.js | 2 +- .../dist/jsonql-client.static.js.map | 2 +- .../http-client/dist/jsonql-client.umd.js | 2 +- .../http-client/dist/jsonql-client.umd.js.map | 2 +- packages/http-client/package.json | 2 +- .../http-client/src/core/methods-generator.js | 82 +++++++++++++++---- packages/http-client/static.js | 2 +- packages/http-client/static.js.map | 2 +- 10 files changed, 73 insertions(+), 27 deletions(-) diff --git a/packages/http-client/core.js b/packages/http-client/core.js index 9053caa7..6c0aceaf 100644 --- a/packages/http-client/core.js +++ b/packages/http-client/core.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t=t||self).jsonqlClient=r()}(this,(function(){"use strict";var t="application/vnd.api+json",r={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},e=["POST","PUT"],n="continue",o="type",i="optional",a="enumv",u="args",c="checker",s="alias",f="login",l="logout",p={desc:"y"},h="No message";var d="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},v="object"==typeof d&&d&&d.Object===Object&&d,g="object"==typeof self&&self&&self.Object===Object&&self,y=v||g||Function("return this")(),b=y.Symbol;function m(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 i=Array(o);++n-1;);return e}(n,o),function(t,r){for(var e=t.length;e--&&R(r,t[e],0)>-1;);return e}(n,o)+1).join("")}function rt(t){return void 0===t}var et="[object Boolean]";var nt="[object Number]";function ot(t){return function(t){return"number"==typeof t||q(t)&&x(t)==nt}(t)&&t!=+t}var it="[object String]";function at(t){return"string"==typeof t||!_(t)&&q(t)&&x(t)==it}function ut(t,r){return function(e){return t(r(e))}}var ct=ut(Object.getPrototypeOf,Object),st="[object Object]",ft=Function.prototype,lt=Object.prototype,pt=ft.toString,ht=lt.hasOwnProperty,dt=pt.call(Object);function vt(t){if(!q(t)||x(t)!=st)return!1;var r=ct(t);if(null===r)return!0;var e=ht.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&pt.call(e)==dt}var gt,yt=function(t,r,e){for(var n=-1,o=Object(t),i=e(t),a=i.length;a--;){var u=i[gt?a:++n];if(!1===r(o[u],u,o))break}return t};var bt="[object Arguments]";function mt(t){return q(t)&&x(t)==bt}var _t=Object.prototype,wt=_t.hasOwnProperty,jt=_t.propertyIsEnumerable,St=mt(function(){return arguments}())?mt:function(t){return q(t)&&wt.call(t,"callee")&&!jt.call(t,"callee")};var Ot="object"==typeof exports&&exports&&!exports.nodeType&&exports,Et=Ot&&"object"==typeof module&&module&&!module.nodeType&&module,At=Et&&Et.exports===Ot?y.Buffer:void 0,kt=(At?At.isBuffer:void 0)||function(){return!1},Tt=9007199254740991,xt=/^(?:0|[1-9]\d*)$/;function qt(t,r){var e=typeof t;return!!(r=null==r?Tt:r)&&("number"==e||"symbol"!=e&&xt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Pt}var $t={};$t["[object Float32Array]"]=$t["[object Float64Array]"]=$t["[object Int8Array]"]=$t["[object Int16Array]"]=$t["[object Int32Array]"]=$t["[object Uint8Array]"]=$t["[object Uint8ClampedArray]"]=$t["[object Uint16Array]"]=$t["[object Uint32Array]"]=!0,$t["[object Arguments]"]=$t["[object Array]"]=$t["[object ArrayBuffer]"]=$t["[object Boolean]"]=$t["[object DataView]"]=$t["[object Date]"]=$t["[object Error]"]=$t["[object Function]"]=$t["[object Map]"]=$t["[object Number]"]=$t["[object Object]"]=$t["[object RegExp]"]=$t["[object Set]"]=$t["[object String]"]=$t["[object WeakMap]"]=!1;var zt,Nt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ft=Nt&&"object"==typeof module&&module&&!module.nodeType&&module,It=Ft&&Ft.exports===Nt&&v.process,Jt=function(){try{var t=Ft&&Ft.require&&Ft.require("util").types;return t||It&&It.binding&&It.binding("util")}catch(t){}}(),Rt=Jt&&Jt.isTypedArray,Mt=Rt?(zt=Rt,function(t){return zt(t)}):function(t){return q(t)&&Ct(t.length)&&!!$t[x(t)]},Ut=Object.prototype.hasOwnProperty;function Ht(t,r){var e=_(t),n=!e&&St(t),o=!e&&!n&&kt(t),i=!e&&!n&&!o&&Mt(t),a=e||n||o||i,u=a?function(t,r){for(var e=-1,n=Array(t);++e-1},ir.prototype.set=function(t,r){var e=this.__data__,n=nr(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var ar,ur=y["__core-js_shared__"],cr=(ar=/[^.]+$/.exec(ur&&ur.keys&&ur.keys.IE_PROTO||""))?"Symbol(src)_1."+ar:"";var sr=Function.prototype.toString;function fr(t){if(null!=t){try{return sr.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var lr=/^\[object .+?Constructor\]$/,pr=Function.prototype,hr=Object.prototype,dr=pr.toString,vr=hr.hasOwnProperty,gr=RegExp("^"+dr.call(vr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function yr(t){return!(!Vt(t)||function(t){return!!cr&&cr in t}(t))&&(Xt(t)?gr:lr).test(fr(t))}function br(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return yr(e)?e:void 0}var mr=br(y,"Map"),_r=br(Object,"create");var wr="__lodash_hash_undefined__",jr=Object.prototype.hasOwnProperty;var Sr=Object.prototype.hasOwnProperty;var Or="__lodash_hash_undefined__";function Er(t){var r=-1,e=null==t?0:t.length;for(this.clear();++ru))return!1;var s=i.get(t);if(s&&i.get(r))return s==r;var f=-1,l=!0,p=e&zr?new Pr:void 0;for(i.set(t,r),i.set(r,t);++f0){if(++r>=jn)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(wn);function An(t,r){return En(function(t,r,e){return r=_n(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,i=_n(n.length-r,0),a=Array(i);++o1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!Vt(e))return!1;var n=typeof r;return!!("number"==n?Zt(e)&&qt(r,e.length):"string"==n&&r in e)&&er(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0))},Yn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},Wn=function(t,r){var e=t.arg;return r.length>1?!e.filter((function(t){return!(r.length>r.filter((function(r){return!Vn(r)(t)})).length)})).length:r.length>r.filter((function(t){return!Gn(e,t)})).length},Qn=function(t,r){if(void 0===r&&(r=null),vt(t)){if(!r)return!0;if(Gn(r))return!r.filter((function(r){var e=t[r.name];return!(r.type.length>r.type.filter((function(t){var r;return!!rt(e)||(!1!==(r=Yn(t))?!Wn({arg:e},r):!Vn(t)(e))})).length)})).length}return!1},Xn=function(t){var r=t.arg,e=t.param,n=[r];return Array.isArray(e.keys)&&e.keys.length&&n.push(e.keys),Qn.apply(null,n)},Zn=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 406},e.name.get=function(){return"Jsonql406Error"},Object.defineProperties(r,e),r}(Error),to=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"Jsonql500Error"},Object.defineProperties(r,e),r}(Error),ro=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(r,e),r}(Error),eo=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(r,e),r}(Error),no=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(r,e),r}(Error),oo=function(){try{if(window||document)return!0}catch(t){}return!1},io=function(){try{if(!oo()&&d)return!0}catch(t){}return!1};var ao=function(t){function r(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];t.apply(this,r)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.where=function(){return oo()?"browser":io()?"node":"unknown"},r}(Error),uo=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,Error.captureStackTrace&&Error.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 404},e.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(r,e),r}(ao),co=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"JsonqlEnumError"},Object.defineProperties(r,e),r}(Error),so=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"JsonqlTypeError"},Object.defineProperties(r,e),r}(Error),fo=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"JsonqlCheckerError"},Object.defineProperties(r,e),r}(Error),lo=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,Error.captureStackTrace&&Error.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}(ao),po=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,Error.captureStackTrace&&Error.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}(ao),ho=function(t){function r(e,n){t.call(this,n),this.statusCode=e,this.className=r.name}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"JsonqlServerError"},Object.defineProperties(r,e),r}(Error),vo=Object.freeze({__proto__:null,Jsonql406Error:Zn,Jsonql500Error:to,JsonqlAuthorisationError:ro,JsonqlContractAuthError:eo,JsonqlResolverAppError:no,JsonqlResolverNotFoundError:uo,JsonqlEnumError:co,JsonqlTypeError:so,JsonqlCheckerError:fo,JsonqlValidationError:lo,JsonqlError:po,JsonqlServerError:ho}),go=po,yo=function(t,r){return!!Object.keys(t).filter((function(t){return r===t})).length};function bo(t){if(yo(t,"error")){var r=t.error,e=r.className,n=r.name,o=e||n,i=r.message||h,a=r.detail||r;if(o&&vo[o])throw new vo[e](i,a);throw new go(i,a)}return t}function mo(t){if(Array.isArray(t))throw new lo("",t);var r=t.message||h,e=t.detail||t;switch(!0){case t instanceof Zn:throw new Zn(r,e);case t instanceof to:throw new to(r,e);case t instanceof ro:throw new ro(r,e);case t instanceof eo:throw new eo(r,e);case t instanceof no:throw new no(r,e);case t instanceof uo:throw new uo(r,e);case t instanceof co:throw new co(r,e);case t instanceof so:throw new so(r,e);case t instanceof fo:throw new fo(r,e);case t instanceof lo:throw new lo(r,e);case t instanceof ho:throw new ho(r,e);default:throw new po(r,e)}}function _o(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var wo=function(t,r){var e;switch(!0){case"object"===t:return!Xn(r);case"array"===t:return!Gn(r.arg);case!1!==(e=Yn(t)):return!Wn(r,e);default:return!Vn(t)(r.arg)}},jo=function(t,r){return rt(t)?!0!==r.optional||rt(r.defaultvalue)?null:r.defaultvalue:t},So=function(t,r,e){var n;void 0===e&&(e=!1);var o=function(t,r){if(!Gn(r))throw new po("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!Gn(t))throw new po("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 _o(1),t.map((function(t,e){return{arg:t,index:e,param:r[e]}}));case!0===r[0].variable:_o(2);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:_o(4);var n=r.length,o=["any"];return t.map((function(t,e){var i=e>=n||!!r[e].optional,a=r[e]||{type:o,name:"_"+e};return{arg:i?jo(t,a):t,index:e,param:a,optional:i}}));default:throw _o(5),new po("Could not understand your arguments and parameter structure!",{args:t,params:r})}}(t,r),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,e=t.param;return!!Nn(r)&&!(e.type.length>e.type.filter((function(r){return wo(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return wo(r,t)})).length)}));return e?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,r){var e,n=Object.keys(t);return e=r,!!n.filter((function(t){return t===e})).length},Eo=function(t){return!Nn(t)};function Ao(t,r){var e=zn(r,(function(t,r){return!t[Bn]}));return Ae(e,{})?t:function(t,r){var e={};return r=Xe(r),rr(t,(function(t,n,o){tn(e,r(t,n,o),t)})),e}(t,(function(t,r){return function(t,r,e){var n;return e(t,(function(t,e,o){if(r(t,e,o))return n=e,!1})),n}(e,Xe((function(t){return t.alias===r})),rr)||r}))}function ko(t,r){return xn(r,(function(r,e){var n,o;return rt(t[e])||!0===r[Un]&&Eo(t[e])?Tn({},r,((n={})[Kn]=!0,n)):((o={})[Dn]=t[e],o[Mn]=r[Mn],o[Un]=r[Un]||!1,o[Hn]=r[Hn]||!1,o[Ln]=r[Ln]||!1,o)}))}function To(t,r){var e=function(t,r){var e=Ao(t,r);return{pristineValues:xn(zn(r,(function(t,r){return Oo(e,r)})),(function(t){return t.args})),checkAgainstAppProps:zn(r,(function(t,r){return!Oo(e,r)})),config:e}}(t,r),n=e.config,o=e.pristineValues;return[ko(n,e.checkAgainstAppProps),o]}var xo=function(t){return Gn(t)?t:[t]};var qo=function(t,r){return!Gn(r)||function(t,r){return!!t.filter((function(t){return t===r})).length}(r,t)},Po=function(t,r){try{return!!Xt(r)&&r.apply(null,[t])}catch(t){return!1}};function Co(t){return function(r,e){if(r[Kn])return r[Dn];var n=function(t,r){var e,n=[[t[Dn]],[(e={},e[Mn]=xo(t[Mn]),e[Un]=t[Un],e)]];return Reflect.apply(r,null,n)}(r,t);if(n.length)throw _o("runValidationAction",e,r),new so(e,n);if(!1!==r[Hn]&&!qo(r[Dn],r[Hn]))throw _o(Hn,r[Hn]),new co(e);if(!1!==r[Ln]&&!Po(r[Dn],r[Ln]))throw _o(Ln,r[Ln]),new fo(e);return r[Dn]}}function $o(t,r){var e=t[0],n=t[1],o=xn(e,Co(r));return Tn(o,n)}var zo=function(t,r){return Promise.resolve(To(t,r))};function No(t,r,e,n,f,l){void 0===e&&(e=!1),void 0===n&&(n=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[u]=t,p[o]=r,!0===e&&(p[i]=!0),Gn(n)&&(p[a]=n),Xt(f)&&(p[c]=f),at(l)&&(p[s]=l),p}var Fo=In,Io=Gn,Jo=function(t,r,e){return void 0===e&&(e=!1),new Promise((function(n,o){var i=So(t,r,e);return e?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Ro=function(t,r,e){void 0===e&&(e={});var n=e[i],o=e[a],u=e[c],f=e[s];return No.apply(null,[t,r,n,o,u,f])},Mo=function(t){return function(r,e,n){return void 0===n&&(n={}),function(t,r,e,n){return void 0===t&&(t={}),zo(t,r).then((function(t){return $o(t,n)})).then((function(t){return Tn({},t,e)}))}(r,e,n,t)}}(So),Uo=function(t){return function(r,e,n){return void 0===n&&(n={}),function(t,r,e,n){return void 0===t&&(t={}),Tn($o(To(t,r),n),e)}(r,e,n,t)}}(So),Ho="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Do=Object.assign?Object.assign:function(t,r,e,n){for(var o=arguments,i=1;i=0;r--){var e=li().key(r);t(pi(e),e)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var r="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(r),"$1"))},write:function(t,r){if(!t)return;vi.cookie=escape(t)+"="+escape(r)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,r){yi(r)}))}},vi=Vo.Global.document;function gi(t){for(var r=vi.cookie.split(/; ?/g),e=r.length-1;e>=0;e--)if(hi(r[e])){var n=r[e].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(r,e){t=e},get:function(r,e){var n=r();return void 0!==n?n:t[e]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(r,e,n,o){this.hasNamespace(_i)||t.set(e,o);return r()},get:function(t,e){this.hasNamespace(_i)||r.call(this,e);return t()},remove:function(r,e){this.hasNamespace(_i)||t.remove(e);return r()},getExpiration:function(r,e){return t.get(e)},removeExpiredKeys:function(t){var e=[];this.each((function(t,r){e.push(r)}));for(var n=0;n>>8,e[2*n+1]=a%256}return e},decompressFromUint8Array:function(r){if(null==r)return i.decompress(r);for(var e=new Array(r.length/2),n=0,o=e.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==r-1){d.push(e(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(r){return t.charCodeAt(r)}))},_decompress:function(r,e,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:e,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>r)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=r)}));var xi=[fi,di],qi=[mi,wi,Ai,function(){return{get:function(t,r){var e=t(r);if(!e)return e;var n=Ti.decompress(e);return null==n?e:this._deserialize(n)},set:function(t,r,e){var n=Ti.compress(this._serialize(e));t(r,n)}}}],Pi=ai.createStore(xi,qi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function zi(t){return $i().getItem(t)}var Ni=[{name:"sessionStorage",read:zi,write:function(t,r){return $i().setItem(t,r)},each:function(t){for(var r=$i().length-1;r>=0;r--){var e=$i().key(r);t(zi(e),e)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(Ni,Fi),Ji=Pi,Ri=Ii,Mi=Array.isArray,Ui=void 0!==d?d:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Hi="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Di="object"==typeof self&&self&&self.Object===Object&&self,Li=(Hi||Di||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Qi="[object Undefined]",Xi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Qi:Wi:Xi&&Xi in Object(t)?function(t){var r=Ki.call(t,Gi),e=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(r?t[Gi]=e:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,r){return function(e){return t(r(e))}}(Object.getPrototypeOf,Object);function ra(t){return null!=t&&"object"==typeof t}var ea="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ra(t)&&Zi(t)==sa}var la=function(t,r){return!!t.filter((function(t){return t===r})).length},pa=function(t,r){var e=Object.keys(t);return la(e,r)},ha=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function r(){for(var e=arguments,n=[],o=arguments.length;o--;)n[o]=e[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,Error.captureStackTrace&&Error.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}(function(t){function r(){for(var r=arguments,e=[],n=arguments.length;n--;)e[n]=r[n];t.apply(this,e)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.where=function(){return ma()?"browser":_a()?"node":"unknown"},r}(Error));var ja=function(t){var r;return(r={}).args=t,r};var Sa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Oa=function(t){return function(t){if(!ra(t)||Zi(t)!=ea)return!1;var r=ta(t);if(null===r)return!0;var e=aa.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&ia.call(e)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,r){return void 0===r&&(r={}),Oa(r)?Promise.resolve(r):t.getContract()},Aa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function ka(t){this.message=t}ka.prototype=new Error,ka.prototype.name="InvalidCharacterError";var Ta="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var r=String(t).replace(/=+$/,"");if(r.length%4==1)throw new ka("'atob' failed: The string to be decoded is not correctly encoded.");for(var e,n,o=0,i=0,a="";n=r.charAt(i++);~n&&(e=o%4?64*e+n:n,o++%4)?a+=String.fromCharCode(255&e>>(-2*o&6)):0)n=Aa.indexOf(n);return a};var xa=function(t){var r=t.replace(/-/g,"+").replace(/_/g,"/");switch(r.length%4){case 0:break;case 2:r+="==";break;case 3:r+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ta(t).replace(/(.)/g,(function(t,r){var e=r.charCodeAt(0).toString(16).toUpperCase();return e.length<2&&(e="0"+e),"%"+e})))}(r)}catch(t){return Ta(r)}};function qa(t){this.message=t}qa.prototype=new Error,qa.prototype.name="InvalidTokenError";var Pa=function(t,r){if("string"!=typeof t)throw new qa("Invalid token specified");var e=!0===(r=r||{}).header?0:1;try{return JSON.parse(xa(t.split(".")[e]))}catch(t){throw new qa("Invalid token specified: "+t.message)}},Ca=qa;Pa.InvalidTokenError=Ca;var $a,za,Na,Fa,Ia,Ja,Ra,Ma,Ua,Ha=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r};function Da(t){if(Fo(t))return function(t){var r=t.iat||Ha(!0);if(t.exp&&r>=t.exp){var e=new Date(t.exp).toISOString();throw new po("Token has expired on "+e,t)}return t}(Pa(t));throw new po("Token must be a string!")}Ro("HS256",["string"]),Ro(!1,["boolean","number","string"],(($a={})[s]="exp",$a[i]=!0,$a)),Ro(!1,["boolean","number","string"],((za={})[s]="nbf",za[i]=!0,za)),Ro(!1,["boolean","string"],((Na={})[s]="iss",Na[i]=!0,Na)),Ro(!1,["boolean","string"],((Fa={})[s]="sub",Fa[i]=!0,Fa)),Ro(!1,["boolean","string"],((Ia={})[s]="iss",Ia[i]=!0,Ia)),Ro(!1,["boolean"],((Ja={})[i]=!0,Ja)),Ro(!1,["boolean","string"],((Ra={})[i]=!0,Ra)),Ro(!1,["boolean","string"],((Ma={})[i]=!0,Ma)),Ro(!1,["boolean"],((Ua={})[i]=!0,Ua));var La=e[0],Ba=e[1],Ka=function(t){!function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,r,e){var n;void 0===r&&(r={}),void 0===e&&(e={}),this.headers=e;var o=Tn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Tn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Tn({},{method:La,params:o},r))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(r){var e=t.getHeaders();for(var n in t.log("request interceptor call",e),e)r.headers[n]=e[n];return r}))},Ka.prototype.processJsonp=function(t){return Sa(t)},Ka.prototype.resInterceptor=function(){var t=this,r=this,e=r.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),r.cleanUp();var o=Fo(n.data)?JSON.parse(n.data):n.data;return e?r.processJsonp(o):Sa(o)}),(function(t){throw r.cleanUp(),console.error(t),new ho("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Tn({},r,this.getAuthHeader(),this.extraHeader):Tn({},r,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Tn({},this.extraParams,p)),this.request({},{method:"GET"},this.contractHeader).then(bo).then((function(r){return t.log("get contract result",r),r.cache&&r.contract?r.contract:r}))},Ka.prototype.query=function(t,r){return void 0===r&&(r=[]),this.request(function(t,r,e){var n;if(void 0===r&&(r=[]),void 0===e&&(e=!1),fa(t)&&Mi(r)){var o=ja(r);return!0===e?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:r})}(t,r)).then(bo)},Ka.prototype.mutation=function(t,r,e){return void 0===r&&(r={}),void 0===e&&(e={}),this.request(function(t,r,e,n){var o;void 0===e&&(e={}),void 0===n&&(n=!1);var i={};if(i[ya]=r,i[ba]=e,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:r,condition:e})}(t,r,e),{method:Ba}).then(bo)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function r(r,e){void 0===e&&(e=null),e&&(r.Fly=e),t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return e.storeIt.set=function(t){throw console.info("storeIt",t),Io(t)&&t.length>=2&&Reflect.apply(Ji.set,Ji,t),new lo("Expect argument to be array and least 2 items!")},e.jsonqlEndpoint.set=function(t){var r=Ji.get("endpoint")||[];la(r,t)||(r.push(t),this.storeId=["endpoint",r],this.endpointIndex=r.length-1)},e.jsonqlContract.set=function(t){var r=this.opts.storageKey,e=[r],n=t[0],o=t[1],i=Ji.get(r)||[];i[this.endpointIndex||0]=n,e.push(i),o&&e.push(o),this.opts.keepContract&&(this.storeIt=e)},e.jsonqlToken.set=function(t){var r="credential",e=localStorage.get(r)||[];if(!la(e,t)){var n=e.length-1;e[n]=t,this[r+"Index"]=n;var o=[r,e];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},e.jsonqlUserdata.set=function(t){var r=["userdata",t];return t.exp&&r.push(t.exp),Reflect.apply(Ji.set,Ji,r)},e.jsonqlEndpoint.get=function(){var t=Ji.get("endpoint");if(!t){var r=this.opts,e=[r.hostname,r.jsonqlPath].join("/");return this.jsonqlEndpoint=e,e}return t[this.endpointIndex]},e.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ji.get(t)||[])[this.endpointIndex]||!1},e.jsonqlToken.get=function(){var t="credential",r=localStorage.get(t);return!!r&&r[this[t+"Index"]]},e.jsonqlUserdata.get=function(){return Ri.get("userdata")},r.prototype.log=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(r.prototype,e),r}(function(t){function r(r){t.call(this,r),r.enableAuth&&r.useJwt&&(this.setDecoder=Da)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return e.userdata.get=function(){return this.jsonqlUserdata},e.rawAuthToken.get=function(){return this.jsonqlToken},e.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},r.prototype.storeToken=function(t){return this.jsonqlToken=t},r.prototype.decoder=function(t){return t},r.prototype.getAuthHeader=function(){var t,r=this.rawAuthToken;return r?((t={})[this.opts.AUTH_HEADER]="Bearer "+r,t):{}},Object.defineProperties(r.prototype,e),r}(function(t){function r(r){t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={contractHeader:{configurable:!0}};return r.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var r=t[this.endpointIndex||0];if(r)return Promise.resolve(r)}return this.get().then(this.storeContract.bind(this))},e.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},r.prototype.storeContract=function(t){if(!Oa(t))throw new lo("Contract is malformed!");var r=[t];if(this.opts.contractExpired){var e=parseFloat(this.opts.contractExpired);!isNaN(e)&&e>0&&r.push(e)}return this.jsonqlContract=r,this.log("storeContract return result",t),t},r.prototype.readContract=function(){return Oa(this.opts.contract)?this.opts.contract:Ji.get(this.opts.storageKey)},Object.defineProperties(r.prototype,e),r}(Ka))),Ya=function(t,r,e,n){return function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];var i=n.auth[r].params,a=i.map((function(t,r){return e[r]})),u=e[i.length]||{};return Jo(e,i).then((function(){return t.query.apply(t,[r,a,u])})).catch(mo)}};var Wa=function(t,r,e,o){var i=function(t,r,e,o){var i={query:{},mutation:{}},a=function(r){i.query[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var i=o.query[r].params,a=i.map((function(t,r){return e[r]})),u=e[i.length]||{};return Jo(a,i).then((function(){return t.query.apply(t,[r,a,u])})).catch(mo)}};for(var u in o.query)a(u);var c=function(r){i.mutation[r]=function(e,n,i){void 0===i&&(i={});var a=[e,n],u=o.mutation[r].params;return Jo(a,u).then((function(){return t.mutation.apply(t,[r,e,n,i])})).catch(mo)}};for(var s in o.mutation)c(s);if(e.enableAuth&&o.auth){i.auth={};var p=e.loginHandlerName,h=e.logoutHandlerName;o.auth[p]&&(i.auth[p]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ya(t,p,e,o);return a.apply(null,n).then(t.postLoginAction).then((function(t){return r.$trigger(f,t),t}))}),o.auth[h]?i.auth[h]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ya(t,h,e,o);return a.apply(null,n).then(t.postLogoutAction).then((function(t){return r.$trigger(l,t),t}))}:i.auth[h]=function(){t.postLogoutAction(n),r.$trigger(l,n)}}return i}(t,o,r,e);return r.enableAuth&&(i.userdata=function(){return t.userdata}),i.getToken=function(){return t.rawAuthToken},r.exposeContract&&(i.getContract=function(){return t.get()}),i.eventEmitter=o,i.version="1.3.3",i},Qa={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},Xa={hostname:Ro([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Ro("jsonql",["string"]),loginHandlerName:Ro(f,["string"]),logoutHandlerName:Ro(l,["string"]),enableJsonp:Ro(!1,["boolean"]),enableAuth:Ro(!1,["boolean"]),useJwt:Ro(!0,["boolean"]),useLocalstorage:Ro(!0,["boolean"]),storageKey:Ro("storageKey",["string"]),authKey:Ro("authKey",["string"]),contractExpired:Ro(0,["number"]),keepContract:Ro(!0,["boolean"]),exposeContract:Ro(!1,["boolean"]),showContractDesc:Ro(!1,["boolean"]),contractKey:Ro(!1,["boolean"]),contractKeyName:Ro("X-JSONQL-CV-KEY",["string"]),enableTimeout:Ro(!1,["boolean"]),timeout:Ro(5e3,["number"]),returnInstance:Ro(!1,["boolean"]),allowReturnRawToken:Ro(!1,["boolean"]),debugOn:Ro(!1,["boolean"])};function Za(t,r,e){return void 0===r&&(r={}),void 0===e&&(e=null),function(t){var r=t.contract;return Mo(t,Xa,Qa).then((function(t){return t.contract=r,t}))}(r).then((function(t){return{baseClient:new Ga(t,e),opts:t}})).then((function(r){var e=r.baseClient,n=r.opts;return Ea(e,n.contract).then((function(r){return Wa(e,n,r,t)}))}))}var tu=new WeakMap,ru=new WeakMap;var eu=function(){this.__suspend__=null,this.queueStore=new Set},nu={$suspend:{configurable:!0},$queues:{configurable:!0}};nu.$suspend.set=function(t){var r=this;if("boolean"!=typeof t)throw new Error("$suspend only accept Boolean value!");var e=this.__suspend__;this.__suspend__=t,this.logger("($suspend)","Change from "+e+" --\x3e "+t),!0===e&&!1===t&&setTimeout((function(){r.release()}),1)},eu.prototype.$queue=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",t),this.queueStore.add(t)),this.__suspend__},nu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},eu.prototype.release=function(){var t=this,r=this.queueStore.size;if(this.logger("(release)","Release was called "+r),r>0){var e=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",e),e.forEach((function(r){t.logger(r),Reflect.apply(t.$trigger,t,r)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(eu.prototype,nu);var ou=function(t){function r(r){void 0===r&&(r={}),t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={$done:{configurable:!0}};return r.prototype.logger=function(){},r.prototype.$on=function(t,r,e){var n=this;void 0===e&&(e=null);this.validate(t,r);var o=this.takeFromStore(t);if(!1===o)return this.logger("($on)",t+" callback is not in lazy store"),this.addToNormalStore(t,"on",r,e);this.logger("($on)",t+" found in lazy store");var i=0;return o.forEach((function(o){var a=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(r,a,e||u),i+=n.addToNormalStore(t,"on",r,e||u)})),i},r.prototype.$once=function(t,r,e){void 0===e&&(e=null),this.validate(t,r);var n=this.takeFromStore(t);this.normalStore;if(!1===n)return this.logger("($once)",t+" not in the lazy store"),this.addToNormalStore(t,"once",r,e);this.logger("($once)",n);var o=Array.from(n)[0],i=o[0],a=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(r,i,e||a),this.$off(t)},r.prototype.$only=function(t,r,e){var n=this;void 0===e&&(e=null),this.validate(t,r);var o=!1,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",r,e)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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(r,i,e||a)})));return o},r.prototype.$onlyOnce=function(t,r,e){void 0===e&&(e=null),this.validate(t,r);var n=!1,o=this.takeFromStore(t);if(this.normalStore.has(t)||(this.logger("($onlyOnce)",t+" add to store"),n=this.addToNormalStore(t,"onlyOnce",r,e)),!1!==o){this.logger("($onlyOnce)",o);var i=Array.from(o)[0],a=i[0],u=i[1],c=i[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(r,a,e||u),this.$off(t)}return n},r.prototype.$replace=function(t,r,e,n){if(void 0===e&&(e=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(t);var o=this["$"+n];return this.logger("($replace)",t,r),Reflect.apply(o,this,[t,r,e])}throw new Error(n+" is not supported!")},r.prototype.$trigger=function(t,r,e,n){void 0===r&&(r=[]),void 0===e&&(e=null),void 0===n&&(n=!1),this.validateEvt(t);var o=0,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,r,e,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)n[o]=arguments[o+2];if(t.has(r)?(this.logger("(addToStore)",r+" existed"),e=t.get(r)):(this.logger("(addToStore)","create new Set for "+r),e=new Set),n.length>2)if(Array.isArray(n[0])){var i=n[2];this.checkTypeInLazyStore(r,i)||e.add(n)}else this.checkContentExist(n,e)||(this.logger("(addToStore)","insert new",n),e.add(n));else e.add(n);return t.set(r,e),[t,e.size]},r.prototype.checkContentExist=function(t,r){return!!Array.from(r).filter((function(r){return r[0]===t[0]})).length},r.prototype.checkTypeInStore=function(t,r){this.validateEvt(t,r);var e=this.$get(t,!0);return!1===e||!e.filter((function(t){var e=t[3];return r!==e})).length},r.prototype.checkTypeInLazyStore=function(t,r){this.validateEvt(t,r);var e=this.lazyStore.get(t);return this.logger("(checkTypeInLazyStore)",e),!!e&&!!Array.from(e).filter((function(t){return t[2]!==r})).length},r.prototype.addToNormalStore=function(t,r,e,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",t,r,"try to add to normal store"),this.checkTypeInStore(t,r)){this.logger("(addToNormalStore)",r+" can add to "+t+" normal store");var o=this.hashFnToKey(e),i=[this.normalStore,t,o,e,n,r],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[1];return this.normalStore=u,c}return!1},r.prototype.addToLazyStore=function(t,r,e,n){void 0===r&&(r=[]),void 0===e&&(e=null),void 0===n&&(n=!1);var o=[this.lazyStore,t,this.toArray(r),e];n&&o.push(n);var i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},r.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},e.normalStore.set=function(t){tu.set(this,t)},e.normalStore.get=function(){return tu.get(this)},e.lazyStore.set=function(t){ru.set(this,t)},e.lazyStore.get=function(){return ru.get(this)},r.prototype.hashFnToKey=function(t){return t.toString().split("").reduce((function(t,r){return(t=(t<<5)-t+r.charCodeAt(0))&t}),0)+""},Object.defineProperties(r.prototype,e),r}(eu));function iu(t,r,e){var n=r.contract,o=function(t){return Uo(t,Xa,Qa)}(r),i=new Ga(o,e);return Wa(i,o,n,t)}return function(t,r){var e,n=(e=r.debugOn,new ou({logger:e?function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0}));return r.contract&&Oa(r.contract)?iu(n,r,t):Za(n,r,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message";var l="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},p="object"==typeof l&&l&&l.Object===Object&&l,h="object"==typeof self&&self&&self.Object===Object&&self,d=p||h||Function("return this")(),v=d.Symbol;function g(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&F(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function X(t){return void 0===t}var Z="[object Boolean]";var tt="[object Number]";function et(t){return function(t){return"number"==typeof t||k(t)&&A(t)==tt}(t)&&t!=+t}var rt="[object String]";function nt(t){return"string"==typeof t||!y(t)&&k(t)&&A(t)==rt}function ot(t,e){return function(r){return t(e(r))}}var it=ot(Object.getPrototypeOf,Object),at="[object Object]",ut=Function.prototype,ct=Object.prototype,st=ut.toString,ft=ct.hasOwnProperty,lt=st.call(Object);function pt(t){if(!k(t)||A(t)!=at)return!1;var e=it(t);if(null===e)return!0;var r=ft.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&st.call(r)==lt}var ht,dt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[ht?a:++n];if(!1===e(o[u],u,o))break}return t};var vt="[object Arguments]";function gt(t){return k(t)&&A(t)==vt}var yt=Object.prototype,bt=yt.hasOwnProperty,mt=yt.propertyIsEnumerable,_t=gt(function(){return arguments}())?gt:function(t){return k(t)&&bt.call(t,"callee")&&!mt.call(t,"callee")};var wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,jt=wt&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=jt&&jt.exports===wt?d.Buffer:void 0,St=(Ot?Ot.isBuffer:void 0)||function(){return!1},Et=9007199254740991,At=/^(?:0|[1-9]\d*)$/;function kt(t,e){var r=typeof t;return!!(e=null==e?Et:e)&&("number"==r||"symbol"!=r&&At.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Tt}var qt={};qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Arguments]"]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object Boolean]"]=qt["[object DataView]"]=qt["[object Date]"]=qt["[object Error]"]=qt["[object Function]"]=qt["[object Map]"]=qt["[object Number]"]=qt["[object Object]"]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object WeakMap]"]=!1;var Pt,Ct="object"==typeof exports&&exports&&!exports.nodeType&&exports,$t=Ct&&"object"==typeof module&&module&&!module.nodeType&&module,zt=$t&&$t.exports===Ct&&p.process,Nt=function(){try{var t=$t&&$t.require&&$t.require("util").types;return t||zt&&zt.binding&&zt.binding("util")}catch(t){}}(),Ft=Nt&&Nt.isTypedArray,It=Ft?(Pt=Ft,function(t){return Pt(t)}):function(t){return k(t)&&xt(t.length)&&!!qt[A(t)]},Rt=Object.prototype.hasOwnProperty;function Jt(t,e){var r=y(t),n=!r&&_t(t),o=!r&&!n&&St(t),i=!r&&!n&&!o&&It(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ne,oe=d["__core-js_shared__"],ie=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ae=Function.prototype.toString;function ue(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,se=Function.prototype,fe=Object.prototype,le=se.toString,pe=fe.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(t){return!(!Lt(t)||function(t){return!!ie&&ie in t}(t))&&(Yt(t)?he:ce).test(ue(t))}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return de(r)?r:void 0}var ge=ve(d,"Map"),ye=ve(Object,"create");var be="__lodash_hash_undefined__",me=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Pe?new Te:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=mn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(bn);function On(t,e){return jn(function(t,e,r){return e=yn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=yn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Sn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Lt(r))return!1;var n=typeof e;return!!("number"==n?Wt(r)&&kt(e,r.length):"string"==n&&e in r)&&Zt(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Kn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Vn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ln(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bn(r,t)})).length},Gn=function(t,e){if(void 0===e&&(e=null),pt(t)){if(!e)return!0;if(Bn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!X(r)||(!1!==(e=Kn(t))?!Vn({arg:r},e):!Ln(t)(r))})).length)})).length}return!1},Yn=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Gn.apply(null,n)},Wn=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),Qn=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),Xn=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),Zn=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),to=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),eo=function(){try{if(window||document)return!0}catch(t){}return!1},ro=function(){try{if(!eo()&&l)return!0}catch(t){}return!1};var no=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return eo()?"browser":ro()?"node":"unknown"},e}(Error),oo=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,Error.captureStackTrace&&Error.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}(no),io=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),ao=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),uo=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),co=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,Error.captureStackTrace&&Error.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}(no),so=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,Error.captureStackTrace&&Error.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}(no),fo=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),lo=Object.freeze({__proto__:null,Jsonql406Error:Wn,Jsonql500Error:Qn,JsonqlAuthorisationError:Xn,JsonqlContractAuthError:Zn,JsonqlResolverAppError:to,JsonqlResolverNotFoundError:oo,JsonqlEnumError:io,JsonqlTypeError:ao,JsonqlCheckerError:uo,JsonqlValidationError:co,JsonqlError:so,JsonqlServerError:fo}),po=so,ho=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function vo(t){if(ho(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&lo[o])throw new lo[r](i,a);throw new po(i,a)}return t}function go(t){if(Array.isArray(t))throw new co("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof Wn:throw new Wn(e,r);case t instanceof Qn:throw new Qn(e,r);case t instanceof Xn:throw new Xn(e,r);case t instanceof Zn:throw new Zn(e,r);case t instanceof to:throw new to(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof fo:throw new fo(e,r);default:throw new so(e,r)}}function yo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var bo=function(t,e){var r;switch(!0){case"object"===t:return!Yn(e);case"array"===t:return!Bn(e.arg);case!1!==(r=Kn(t)):return!Vn(e,r);default:return!Ln(t)(e.arg)}},mo=function(t,e){return X(t)?!0!==e.optional||X(e.defaultvalue)?null:e.defaultvalue:t},_o=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Bn(e))throw new so("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Bn(t))throw new so("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 yo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:yo(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:yo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?mo(t,a):t,index:r,param:a,optional:i}}));default:throw yo(5),new so("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Cn(e)&&!(r.type.length>r.type.filter((function(e){return bo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return bo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},wo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},jo=function(t){return!Cn(t)};function Oo(t,e){var r=Pn(e,(function(t,e){return!t[Dn]}));return Or(r,{})?t:function(t,e){var r={};return e=Yr(e),Xt(t,(function(t,n,o){Qr(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,Yr((function(t){return t.alias===e})),Xt)||e}))}function So(t,e){return An(e,(function(e,r){var n,o;return X(t[r])||!0===e[Rn]&&jo(t[r])?En({},e,((n={})[Hn]=!0,n)):((o={})[Mn]=t[r],o[In]=e[In],o[Rn]=e[Rn]||!1,o[Jn]=e[Jn]||!1,o[Un]=e[Un]||!1,o)}))}function Eo(t,e){var r=function(t,e){var r=Oo(t,e);return{pristineValues:An(Pn(e,(function(t,e){return wo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Pn(e,(function(t,e){return!wo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[So(n,r.checkAgainstAppProps),o]}var Ao=function(t){return Bn(t)?t:[t]};var ko=function(t,e){return!Bn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},To=function(t,e){try{return!!Yt(e)&&e.apply(null,[t])}catch(t){return!1}};function xo(t){return function(e,r){if(e[Hn])return e[Mn];var n=function(t,e){var r,n=[[t[Mn]],[(r={},r[In]=Ao(t[In]),r[Rn]=t[Rn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw yo("runValidationAction",r,e),new ao(r,n);if(!1!==e[Jn]&&!ko(e[Mn],e[Jn]))throw yo(Jn,e[Jn]),new io(r);if(!1!==e[Un]&&!To(e[Mn],e[Un]))throw yo(Un,e[Un]),new uo(r);return e[Mn]}}var qo=function(t,e){return Promise.resolve(Eo(t,e))};function Po(t,e,r,n){return void 0===t&&(t={}),qo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=An(r,xo(e));return En(o,n)}(t,n)})).then((function(t){return En({},t,r)}))}function Co(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),Bn(s)&&(p[i]=s),Yt(f)&&(p[u]=f),nt(l)&&(p[c]=l),p}var $o=zn,zo=Bn,No=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=_o(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Fo=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return Co.apply(null,[t,e,n,a,s,f])},Io=function(t){return function(e,r,n){return void 0===n&&(n={}),Po(e,r,n,t)}}(_o),Ro="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Jo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ui().key(e);t(ci(r),r)}},remove:function(t){return ui().removeItem(t)},clearAll:function(){return ui().clear()}};function ui(){return ii.localStorage}function ci(t){return ui().getItem(t)}var si=Ho.trim,fi={name:"cookieStorage",read:function(t){if(!t||!di(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(li.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;li.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pi,remove:hi,clearAll:function(){pi((function(t,e){hi(e)}))}},li=Ho.Global.document;function pi(t){for(var e=li.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(si(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function hi(t){t&&di(t)&&(li.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function di(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(li.cookie)}var vi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var gi="expire_mixin",yi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+gi);return{set:function(e,r,n,o){this.hasNamespace(gi)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(gi)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(gi)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ei=[ai,fi],Ai=[vi,yi,ji,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Si.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Si.compress(this._serialize(r));t(e,n)}}}],ki=ri.createStore(Ei,Ai),Ti=Ho.Global;function xi(){return Ti.sessionStorage}function qi(t){return xi().getItem(t)}var Pi=[{name:"sessionStorage",read:qi,write:function(t,e){return xi().setItem(t,e)},each:function(t){for(var e=xi().length-1;e>=0;e--){var r=xi().key(e);t(qi(r),r)}},remove:function(t){return xi().removeItem(t)},clearAll:function(){return xi().clear()}},fi],Ci=[vi,yi],$i=ri.createStore(Pi,Ci),zi=ki,Ni=$i,Fi=Array.isArray,Ii=void 0!==l?l:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ri="object"==typeof Ii&&Ii&&Ii.Object===Object&&Ii,Ji="object"==typeof self&&self&&self.Object===Object&&self,Mi=(Ri||Ji||Function("return this")()).Symbol,Ui=Object.prototype,Di=Ui.hasOwnProperty,Hi=Ui.toString,Li=Mi?Mi.toStringTag:void 0;var Bi=Object.prototype.toString;var Ki="[object Null]",Vi="[object Undefined]",Gi=Mi?Mi.toStringTag:void 0;function Yi(t){return null==t?void 0===t?Vi:Ki:Gi&&Gi in Object(t)?function(t){var e=Di.call(t,Li),r=t[Li];try{t[Li]=void 0;var n=!0}catch(t){}var o=Hi.call(t);return n&&(e?t[Li]=r:delete t[Li]),o}(t):function(t){return Bi.call(t)}(t)}var Wi=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function Qi(t){return null!=t&&"object"==typeof t}var Xi="[object Object]",Zi=Function.prototype,ta=Object.prototype,ea=Zi.toString,ra=ta.hasOwnProperty,na=ea.call(Object);var oa=Mi?Mi.prototype:void 0,ia=(oa&&oa.toString,"[object String]");function aa(t){return"string"==typeof t||!Fi(t)&&Qi(t)&&Yi(t)==ia}var ua=function(t,e){return!!t.filter((function(t){return t===e})).length},ca=function(t,e){var r=Object.keys(t);return ua(r,e)},sa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},fa="query",la="mutation",pa="socket",ha="payload",da="condition",va=function(){try{if(window||document)return!0}catch(t){}return!1},ga=function(){try{if(!va()&&Ii)return!0}catch(t){}return!1};var ya=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return va()?"browser":ga()?"node":"unknown"},e}(Error));var ba=function(t){var e;return(e={}).args=t,e};var ma=function(t){return ca(t,"data")&&!ca(t,"error")?t.data:t},_a=function(t){return function(t){if(!Qi(t)||Yi(t)!=Xi)return!1;var e=Wi(t);if(null===e)return!0;var r=ra.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ea.call(r)==na}(t)&&(ca(t,fa)||ca(t,la)||ca(t,pa))},wa=function(t,e){return void 0===e&&(e={}),_a(e)?Promise.resolve(e):t.getContract()},ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Oa(t){this.message=t}Oa.prototype=new Error,Oa.prototype.name="InvalidCharacterError";var Sa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Oa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ja.indexOf(n);return a};var Ea=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Sa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Sa(e)}};function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidTokenError";var ka=function(t,e){if("string"!=typeof t)throw new Aa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ea(t.split(".")[r]))}catch(t){throw new Aa("Invalid token specified: "+t.message)}},Ta=Aa;ka.InvalidTokenError=Ta;var xa,qa,Pa,Ca,$a,za,Na,Fa,Ia,Ra=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ja(t){if($o(t))return function(t){var e=t.iat||Ra(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new so("Token has expired on "+r,t)}return t}(ka(t));throw new so("Token must be a string!")}Fo("HS256",["string"]),Fo(!1,["boolean","number","string"],((xa={})[c]="exp",xa[o]=!0,xa)),Fo(!1,["boolean","number","string"],((qa={})[c]="nbf",qa[o]=!0,qa)),Fo(!1,["boolean","string"],((Pa={})[c]="iss",Pa[o]=!0,Pa)),Fo(!1,["boolean","string"],((Ca={})[c]="sub",Ca[o]=!0,Ca)),Fo(!1,["boolean","string"],(($a={})[c]="iss",$a[o]=!0,$a)),Fo(!1,["boolean"],((za={})[o]=!0,za)),Fo(!1,["boolean","string"],((Na={})[o]=!0,Na)),Fo(!1,["boolean","string"],((Fa={})[o]=!0,Fa)),Fo(!1,["boolean"],((Ia={})[o]=!0,Ia));var Ma=r[0],Ua=r[1],Da=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Ha={headers:{configurable:!0}};Ha.headers.set=function(t){this.extraHeader=t},Da.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=En({},{_cb:sa()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=En({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,En({},{method:Ma,params:o},e))},Da.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Da.prototype.processJsonp=function(t){return ma(t)},Da.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=$o(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ma(o)}),(function(t){throw e.cleanUp(),console.error(t),new fo("Server side error",t)}))},Da.prototype.getHeaders=function(){return this.opts.enableAuth?En({},e,this.getAuthHeader(),this.extraHeader):En({},e,this.extraHeader)},Da.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Da.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=En({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(vo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Da.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),aa(t)&&Fi(e)){var o=ba(e);return!0===r?o:((n={})[t]=o,n)}throw new ya("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(vo)},Da.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ha]=e,i[da]=r,!0===n)return i;if(aa(t))return(o={})[t]=i,o;throw new ya("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ua}).then(vo)},Object.defineProperties(Da.prototype,Ha);var La=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply(zi.set,zi,t),new co("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=zi.get("endpoint")||[];ua(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=zi.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ua(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=sa();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(zi.set,zi,e)},r.jsonqlEndpoint.get=function(){var t=zi.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(zi.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ni.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ja)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!_a(t))throw new co("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return _a(this.opts.contract)?this.opts.contract:zi.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Da))),Ba=function(t){return y(t)?t:[t]},Ka=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,Ba(t))}),Reflect.apply(t,null,r))}};function Va(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Ga=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(go)}},Ya=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(go)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wa=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return No(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(go)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Qa=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xa=function(t,e,r,n){var o=function(t,e,r,n){return Ka(Ya,Wa,Qa)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.3.3",o},Za={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},tu={hostname:Fo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Fo("jsonql",["string"]),loginHandlerName:Fo("login",["string"]),logoutHandlerName:Fo("logout",["string"]),enableJsonp:Fo(!1,["boolean"]),enableAuth:Fo(!1,["boolean"]),useJwt:Fo(!0,["boolean"]),useLocalstorage:Fo(!0,["boolean"]),storageKey:Fo("storageKey",["string"]),authKey:Fo("authKey",["string"]),contractExpired:Fo(0,["number"]),keepContract:Fo(!0,["boolean"]),exposeContract:Fo(!1,["boolean"]),showContractDesc:Fo(!1,["boolean"]),contractKey:Fo(!1,["boolean"]),contractKeyName:Fo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Fo(!1,["boolean"]),timeout:Fo(5e3,["number"]),returnInstance:Fo(!1,["boolean"]),allowReturnRawToken:Fo(!1,["boolean"]),debugOn:Fo(!1,["boolean"])};function eu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Io(t,tu,Za).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new La(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return wa(r,n.contract).then((function(e){return Xa(r,n,e,t)}))}))}var ru=new WeakMap,nu=new WeakMap;var ou=function(){this.__suspend__=null,this.queueStore=new Set},iu={$suspend:{configurable:!0},$queues:{configurable:!0}};iu.$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)},ou.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__},iu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ou.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(ou.prototype,iu);var au=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ru.set(this,t)},r.normalStore.get=function(){return ru.get(this)},r.lazyStore.set=function(t){nu.set(this,t)},r.lazyStore.get=function(){return nu.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}(ou));return function(t,e){var r;return eu((r=e.debugOn,new au({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}})); //# sourceMappingURL=core.js.map diff --git a/packages/http-client/core.js.map b/packages/http-client/core.js.map index e14b8e50..1ca5f5bd 100644 --- a/packages/http-client/core.js.map +++ b/packages/http-client/core.js.map @@ -1 +1 @@ -{"version":3,"file":"core.js","sources":["node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="continue",s="type",f="optional",l="enumv",p="args",h="checker",d="alias",v="login",g="logout",y={desc:"y"},b="No message",m="onResult",_="onError";var w="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},j="object"==typeof w&&w&&w.Object===Object&&w,O="object"==typeof self&&self&&self.Object===Object&&self,S=j||O||Function("return this")(),E=S.Symbol;function k(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&K(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function ct(t){return void 0===t}var st="[object Boolean]";var ft="[object Number]";function lt(t){return function(t){return"number"==typeof t||R(t)&&F(t)==ft}(t)&&t!=+t}var pt="[object String]";function ht(t){return"string"==typeof t||!A(t)&&R(t)&&F(t)==pt}function dt(t,e){return function(r){return t(e(r))}}var vt=dt(Object.getPrototypeOf,Object),gt="[object Object]",yt=Function.prototype,bt=Object.prototype,mt=yt.toString,_t=bt.hasOwnProperty,wt=mt.call(Object);function jt(t){if(!R(t)||F(t)!=gt)return!1;var e=vt(t);if(null===e)return!0;var r=_t.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&mt.call(r)==wt}var Ot,St=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Ot?a:++n];if(!1===e(o[u],u,o))break}return t};var Et="[object Arguments]";function kt(t){return R(t)&&F(t)==Et}var At=Object.prototype,xt=At.hasOwnProperty,Tt=At.propertyIsEnumerable,Pt=kt(function(){return arguments}())?kt:function(t){return R(t)&&xt.call(t,"callee")&&!Tt.call(t,"callee")};var qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ct=qt&&"object"==typeof module&&module&&!module.nodeType&&module,$t=Ct&&Ct.exports===qt?S.Buffer:void 0,Nt=($t?$t.isBuffer:void 0)||function(){return!1},zt=9007199254740991,Ft=/^(?:0|[1-9]\d*)$/;function Rt(t,e){var r=typeof t;return!!(e=null==e?zt:e)&&("number"==r||"symbol"!=r&&Ft.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=It}var Mt={};Mt["[object Float32Array]"]=Mt["[object Float64Array]"]=Mt["[object Int8Array]"]=Mt["[object Int16Array]"]=Mt["[object Int32Array]"]=Mt["[object Uint8Array]"]=Mt["[object Uint8ClampedArray]"]=Mt["[object Uint16Array]"]=Mt["[object Uint32Array]"]=!0,Mt["[object Arguments]"]=Mt["[object Array]"]=Mt["[object ArrayBuffer]"]=Mt["[object Boolean]"]=Mt["[object DataView]"]=Mt["[object Date]"]=Mt["[object Error]"]=Mt["[object Function]"]=Mt["[object Map]"]=Mt["[object Number]"]=Mt["[object Object]"]=Mt["[object RegExp]"]=Mt["[object Set]"]=Mt["[object String]"]=Mt["[object WeakMap]"]=!1;var Ut,Dt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ht=Dt&&"object"==typeof module&&module&&!module.nodeType&&module,Lt=Ht&&Ht.exports===Dt&&j.process,Bt=function(){try{var t=Ht&&Ht.require&&Ht.require("util").types;return t||Lt&&Lt.binding&&Lt.binding("util")}catch(t){}}(),Kt=Bt&&Bt.isTypedArray,Vt=Kt?(Ut=Kt,function(t){return Ut(t)}):function(t){return R(t)&&Jt(t.length)&&!!Mt[F(t)]},Gt=Object.prototype.hasOwnProperty;function Yt(t,e){var r=A(t),n=!r&&Pt(t),o=!r&&!n&&Nt(t),i=!r&&!n&&!o&&Vt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},pe.prototype.set=function(t,e){var r=this.__data__,n=fe(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var he,de=S["__core-js_shared__"],ve=(he=/[^.]+$/.exec(de&&de.keys&&de.keys.IE_PROTO||""))?"Symbol(src)_1."+he:"";var ge=Function.prototype.toString;function ye(t){if(null!=t){try{return ge.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var be=/^\[object .+?Constructor\]$/,me=Function.prototype,_e=Object.prototype,we=me.toString,je=_e.hasOwnProperty,Oe=RegExp("^"+we.call(je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Se(t){return!(!te(t)||function(t){return!!ve&&ve in t}(t))&&(ie(t)?Oe:be).test(ye(t))}function Ee(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Se(r)?r:void 0}var ke=Ee(S,"Map"),Ae=Ee(Object,"create");var xe="__lodash_hash_undefined__",Te=Object.prototype.hasOwnProperty;var Pe=Object.prototype.hasOwnProperty;var qe="__lodash_hash_undefined__";function Ce(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ue?new Ie:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Tn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(xn);function $n(t,e){return Cn(function(t,e,r){return e=An(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=An(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Nn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!te(r))return!1;var n=typeof e;return!!("number"==n?ae(r)&&Rt(e,r.length):"string"==n&&e in r)&&se(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},ro=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},no=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!to(e)(t)})).length)})).length:e.length>e.filter((function(t){return!eo(r,t)})).length},oo=function(t,e){if(void 0===e&&(e=null),jt(t)){if(!e)return!0;if(eo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!ct(r)||(!1!==(e=ro(t))?!no({arg:r},e):!to(t)(r))})).length)})).length}return!1},io=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),oo.apply(null,n)},ao=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),uo=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),co=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),so=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),fo=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),lo=function(){try{if(window||document)return!0}catch(t){}return!1},po=function(){try{if(!lo()&&w)return!0}catch(t){}return!1};var ho=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return lo()?"browser":po()?"node":"unknown"},e}(Error),vo=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,Error.captureStackTrace&&Error.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}(ho),go=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),yo=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),bo=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),mo=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,Error.captureStackTrace&&Error.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}(ho),_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,Error.captureStackTrace&&Error.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}(ho),wo=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),jo=Object.freeze({__proto__:null,Jsonql406Error:ao,Jsonql500Error:uo,JsonqlAuthorisationError:co,JsonqlContractAuthError:so,JsonqlResolverAppError:fo,JsonqlResolverNotFoundError:vo,JsonqlEnumError:go,JsonqlTypeError:yo,JsonqlCheckerError:bo,JsonqlValidationError:mo,JsonqlError:_o,JsonqlServerError:wo}),Oo=_o,So=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function Eo(t){if(So(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||b,a=e.detail||e;if(o&&jo[o])throw new jo[r](i,a);throw new Oo(i,a)}return t}function ko(t){if(Array.isArray(t))throw new mo("",t);var e=t.message||b,r=t.detail||t;switch(!0){case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof vo:throw new vo(e,r);case t instanceof go:throw new go(e,r);case t instanceof yo:throw new yo(e,r);case t instanceof bo:throw new bo(e,r);case t instanceof mo:throw new mo(e,r);case t instanceof wo:throw new wo(e,r);default:throw new _o(e,r)}}function Ao(){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!io(e);case"array"===t:return!eo(e.arg);case!1!==(r=ro(t)):return!no(e,r);default:return!to(t)(e.arg)}},To=function(t,e){return ct(t)?!0!==e.optional||ct(e.defaultvalue)?null:e.defaultvalue:t},Po=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!eo(e))throw new _o("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!eo(t))throw new _o("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 Ao(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Ao(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:Ao(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?To(t,a):t,index:r,param:a,optional:i}}));default:throw Ao(5),new _o("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Dn(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={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},qo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Co=function(t){return!Dn(t)};function $o(t,e){var r=Un(e,(function(t,e){return!t[Qn]}));return $r(r,{})?t:function(t,e){var r={};return e=an(e),ce(t,(function(t,n,o){cn(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,an((function(t){return t.alias===e})),ce)||e}))}function No(t,e){return Fn(e,(function(e,r){var n,o;return ct(t[r])||!0===e[Gn]&&Co(t[r])?zn({},e,((n={})[Zn]=!0,n)):((o={})[Wn]=t[r],o[Vn]=e[Vn],o[Gn]=e[Gn]||!1,o[Yn]=e[Yn]||!1,o[Xn]=e[Xn]||!1,o)}))}function zo(t,e){var r=function(t,e){var r=$o(t,e);return{pristineValues:Fn(Un(e,(function(t,e){return qo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Un(e,(function(t,e){return!qo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[No(n,r.checkAgainstAppProps),o]}var Fo=function(t){return eo(t)?t:[t]};var Ro=function(t,e){return!eo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Io=function(t,e){try{return!!ie(e)&&e.apply(null,[t])}catch(t){return!1}};function Jo(t){return function(e,r){if(e[Zn])return e[Wn];var n=function(t,e){var r,n=[[t[Wn]],[(r={},r[Vn]=Fo(t[Vn]),r[Gn]=t[Gn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Ao("runValidationAction",r,e),new yo(r,n);if(!1!==e[Yn]&&!Ro(e[Wn],e[Yn]))throw Ao(Yn,e[Yn]),new go(r);if(!1!==e[Xn]&&!Io(e[Wn],e[Xn]))throw Ao(Xn,e[Xn]),new bo(r);return e[Wn]}}function Mo(t,e,r,n){return void 0===t&&(t={}),zn(function(t,e){var r=t[0],n=t[1],o=Fn(r,Jo(e));return zn(o,n)}(zo(t,e),n),r)}function Uo(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[p]=t,a[s]=e,!0===r&&(a[f]=!0),eo(n)&&(a[l]=n),ie(o)&&(a[h]=o),ht(i)&&(a[d]=i),a}var Do=Ln,Ho=eo,Lo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Po(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Bo=function(t,e,r){void 0===r&&(r={});var n=r[f],o=r[l],i=r[h],a=r[d];return Uo.apply(null,[t,e,n,o,i,a])},Ko=function(t){return function(e,r,n){return void 0===n&&(n={}),Mo(e,r,n,t)}}(Po),Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Lo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(ko)}};var Go=Array.isArray,Yo=void 0!==w?w:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Wo="object"==typeof Yo&&Yo&&Yo.Object===Object&&Yo,Xo="object"==typeof self&&self&&self.Object===Object&&self,Qo=(Wo||Xo||Function("return this")()).Symbol,Zo=Object.prototype,ti=Zo.hasOwnProperty,ei=Zo.toString,ri=Qo?Qo.toStringTag:void 0;var ni=Object.prototype.toString;var oi="[object Null]",ii="[object Undefined]",ai=Qo?Qo.toStringTag:void 0;function ui(t){return null==t?void 0===t?ii:oi:ai&&ai in Object(t)?function(t){var e=ti.call(t,ri),r=t[ri];try{t[ri]=void 0;var n=!0}catch(t){}var o=ei.call(t);return n&&(e?t[ri]=r:delete t[ri]),o}(t):function(t){return ni.call(t)}(t)}var ci=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function si(t){return null!=t&&"object"==typeof t}var fi="[object Object]",li=Function.prototype,pi=Object.prototype,hi=li.toString,di=pi.hasOwnProperty,vi=hi.call(Object);var gi=Qo?Qo.prototype:void 0,yi=(gi&&gi.toString,"[object String]");function bi(t){return"string"==typeof t||!Go(t)&&si(t)&&ui(t)==yi}var mi=function(t,e){return!!t.filter((function(t){return t===e})).length},_i=function(t,e){var r=Object.keys(t);return mi(r,e)},wi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},ji=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},Oi="query",Si="mutation",Ei="socket",ki="payload",Ai="condition",xi=function(){try{if(window||document)return!0}catch(t){}return!1},Ti=function(){try{if(!xi()&&Yo)return!0}catch(t){}return!1};var Pi=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return xi()?"browser":Ti()?"node":"unknown"},e}(Error));var qi=function(t){var e;return(e={}).args=t,e};var Ci=function(t){return _i(t,"data")&&!_i(t,"error")?t.data:t},$i=function(t){return function(t){if(!si(t)||ui(t)!=fi)return!1;var e=ci(t);if(null===e)return!0;var r=di.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&hi.call(r)==vi}(t)&&(_i(t,Oi)||_i(t,Si)||_i(t,Ei))},Ni=function(t,e){return void 0===e&&(e={}),$i(e)?Promise.resolve(e):t.getContract()},zi=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(wi(e,r,m),o),t.$only(wi(e,r,_),i),t.$trigger(e,{resolverName:r,args:n})}))}},Fi=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Ri(t,e,r,n){var o=function(t,e,r,n){var o={query:{},mutation:{}},i=function(e){o.query[e]=function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Lo(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(ko)}};for(var a in n.query)i(a);var u=function(e){o.mutation[e]=function(r,o,i){void 0===i&&(i={});var a=[r,o],u=n.mutation[e].params;return Lo(a,u).then((function(){return t.mutation.apply(t,[e,r,o,i])})).catch(ko)}};for(var s in n.mutation)u(s);if(r.enableAuth&&n.auth){o.auth={};var f=r.loginHandlerName,l=r.logoutHandlerName;n.auth[f]&&(o.auth[f]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Vo(t,f,r,n);return a.apply(null,o).then(t.postLoginAction).then((function(t){return e.$trigger(v,t),t}))}),n.auth[l]?o.auth[l]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Vo(t,l,r,n);return a.apply(null,o).then(t.postLogoutAction).then((function(t){return e.$trigger(g,t),t}))}:o.auth[l]=function(){t.postLogoutAction(c),e.$trigger(g,c)}}return o}(t,e,r,n);Fi(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(wi(t,n,m),r)})).catch((function(r){e.$trigger(wi(t,n,_),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ii=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Ri(t,n,e,r)}));var o={query:zi(n,"query"),mutation:zi(n,"mutation"),auth:zi(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Ji=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ua().key(e);t(ca(r),r)}},remove:function(t){return ua().removeItem(t)},clearAll:function(){return ua().clear()}};function ua(){return ia.localStorage}function ca(t){return ua().getItem(t)}var sa=Hi.trim,fa={name:"cookieStorage",read:function(t){if(!t||!da(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(la.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;la.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pa,remove:ha,clearAll:function(){pa((function(t,e){ha(e)}))}},la=Hi.Global.document;function pa(t){for(var e=la.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(sa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ha(t){t&&da(t)&&(la.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function da(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(la.cookie)}var va=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ga="expire_mixin",ya=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ga);return{set:function(e,r,n,o){this.hasNamespace(ga)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ga)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ga)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ea=[aa,fa],ka=[va,ya,ja,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Sa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Sa.compress(this._serialize(r));t(e,n)}}}],Aa=ra.createStore(Ea,ka),xa=Hi.Global;function Ta(){return xa.sessionStorage}function Pa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:Pa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(Pa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},fa],Ca=[va,ya],$a=ra.createStore(qa,Ca),Na=Aa,za=$a,Fa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ra(t){this.message=t}Ra.prototype=new Error,Ra.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ra("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Fa.indexOf(n);return a};var Ja=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidTokenError";var Ua=function(t,e){if("string"!=typeof t)throw new Ma("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ja(t.split(".")[r]))}catch(t){throw new Ma("Invalid token specified: "+t.message)}},Da=Ma;Ua.InvalidTokenError=Da;var Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Xa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Za(t){if(Do(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new _o("Token has expired on "+r,t)}return t}(Ua(t));throw new _o("Token must be a string!")}Bo("HS256",["string"]),Bo(!1,["boolean","number","string"],((Ha={})[d]="exp",Ha[f]=!0,Ha)),Bo(!1,["boolean","number","string"],((La={})[d]="nbf",La[f]=!0,La)),Bo(!1,["boolean","string"],((Ba={})[d]="iss",Ba[f]=!0,Ba)),Bo(!1,["boolean","string"],((Ka={})[d]="sub",Ka[f]=!0,Ka)),Bo(!1,["boolean","string"],((Va={})[d]="iss",Va[f]=!0,Va)),Bo(!1,["boolean"],((Ga={})[f]=!0,Ga)),Bo(!1,["boolean","string"],((Ya={})[f]=!0,Ya)),Bo(!1,["boolean","string"],((Wa={})[f]=!0,Wa)),Bo(!1,["boolean"],((Xa={})[f]=!0,Xa));var tu=u[0],eu=u[1],ru=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},nu={headers:{configurable:!0}};nu.headers.set=function(t){this.extraHeader=t},ru.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=zn({},{_cb:ji()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=zn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,zn({},{method:tu,params:o},e))},ru.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},ru.prototype.processJsonp=function(t){return Ci(t)},ru.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Do(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Ci(o)}),(function(t){throw e.cleanUp(),console.error(t),new wo("Server side error",t)}))},ru.prototype.getHeaders=function(){return this.opts.enableAuth?zn({},a,this.getAuthHeader(),this.extraHeader):zn({},a,this.extraHeader)},ru.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},ru.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=zn({},this.extraParams,y)),this.request({},{method:"GET"},this.contractHeader).then(Eo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},ru.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),bi(t)&&Go(e)){var o=qi(e);return!0===r?o:((n={})[t]=o,n)}throw new Pi("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(Eo)},ru.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ki]=e,i[Ai]=r,!0===n)return i;if(bi(t))return(o={})[t]=i,o;throw new Pi("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:eu}).then(Eo)},Object.defineProperties(ru.prototype,nu);var ou=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Ho(t)&&t.length>=2&&Reflect.apply(Na.set,Na,t),new mo("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Na.get("endpoint")||[];mi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Na.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!mi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ji();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Na.set,Na,e)},r.jsonqlEndpoint.get=function(){var t=Na.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Na.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return za.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Za)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!$i(t))throw new mo("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return $i(this.opts.contract)?this.opts.contract:Na.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(ru))),iu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},au={hostname:Bo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Bo("jsonql",["string"]),loginHandlerName:Bo(v,["string"]),logoutHandlerName:Bo(g,["string"]),enableJsonp:Bo(!1,["boolean"]),enableAuth:Bo(!1,["boolean"]),useJwt:Bo(!0,["boolean"]),useLocalstorage:Bo(!0,["boolean"]),storageKey:Bo("storageKey",["string"]),authKey:Bo("authKey",["string"]),contractExpired:Bo(0,["number"]),keepContract:Bo(!0,["boolean"]),exposeContract:Bo(!1,["boolean"]),showContractDesc:Bo(!1,["boolean"]),contractKey:Bo(!1,["boolean"]),contractKeyName:Bo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Bo(!1,["boolean"]),timeout:Bo(5e3,["number"]),returnInstance:Bo(!1,["boolean"]),allowReturnRawToken:Bo(!1,["boolean"]),debugOn:Bo(!1,["boolean"])};var uu=new WeakMap,cu=new WeakMap;var su=function(){this.__suspend__=null,this.queueStore=new Set},fu={$suspend:{configurable:!0},$queues:{configurable:!0}};fu.$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)},su.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__},fu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},su.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(su.prototype,fu);var lu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){uu.set(this,t)},r.normalStore.get=function(){return uu.get(this)},r.lazyStore.set=function(t){cu.set(this,t)},r.lazyStore.get=function(){return cu.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}(su));function pu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ko(t,au,iu)}(e),i=new ou(o,t),a=Ni(i,n),u=(r=o.debugOn,new lu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ii(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),pu(o,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message",g="onResult",y="onError",b=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),m=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),_=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),w=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),j=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),O="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},S=function(){try{if(window||document)return!0}catch(t){}return!1},E=function(){try{if(!S()&&O)return!0}catch(t){}return!1};var k=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return S()?"browser":E()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(k),x=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),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),P=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),q=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,Error.captureStackTrace&&Error.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}(k),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,Error.captureStackTrace&&Error.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}(k),$=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),N=Object.freeze({__proto__:null,Jsonql406Error:b,Jsonql500Error:m,JsonqlAuthorisationError:_,JsonqlContractAuthError:w,JsonqlResolverAppError:j,JsonqlResolverNotFoundError:A,JsonqlEnumError:x,JsonqlTypeError:T,JsonqlCheckerError:P,JsonqlValidationError:q,JsonqlError:C,JsonqlServerError:$}),z=C,F=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function R(t){if(F(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&N[o])throw new N[r](i,a);throw new z(i,a)}return t}function I(t){if(Array.isArray(t))throw new q("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof b:throw new b(e,r);case t instanceof m:throw new m(e,r);case t instanceof _:throw new _(e,r);case t instanceof w:throw new w(e,r);case t instanceof j:throw new j(e,r);case t instanceof A:throw new A(e,r);case t instanceof x:throw new x(e,r);case t instanceof T:throw new T(e,r);case t instanceof P:throw new P(e,r);case t instanceof q:throw new q(e,r);case t instanceof $:throw new $(e,r);default:throw new C(e,r)}}var J="object"==typeof O&&O&&O.Object===Object&&O,M="object"==typeof self&&self&&self.Object===Object&&self,U=J||M||Function("return this")(),D=U.Symbol;function H(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&st(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function Et(t){return void 0===t}var kt="[object Boolean]";var At="[object Number]";function xt(t){return function(t){return"number"==typeof t||tt(t)&&Z(t)==At}(t)&&t!=+t}var Tt="[object String]";function Pt(t){return"string"==typeof t||!L(t)&&tt(t)&&Z(t)==Tt}function qt(t,e){return function(r){return t(e(r))}}var Ct=qt(Object.getPrototypeOf,Object),$t="[object Object]",Nt=Function.prototype,zt=Object.prototype,Ft=Nt.toString,Rt=zt.hasOwnProperty,It=Ft.call(Object);function Jt(t){if(!tt(t)||Z(t)!=$t)return!1;var e=Ct(t);if(null===e)return!0;var r=Rt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Ft.call(r)==It}var Mt,Ut=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Mt?a:++n];if(!1===e(o[u],u,o))break}return t};var Dt="[object Arguments]";function Ht(t){return tt(t)&&Z(t)==Dt}var Lt=Object.prototype,Bt=Lt.hasOwnProperty,Kt=Lt.propertyIsEnumerable,Vt=Ht(function(){return arguments}())?Ht:function(t){return tt(t)&&Bt.call(t,"callee")&&!Kt.call(t,"callee")};var Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Yt=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Wt=Yt&&Yt.exports===Gt?U.Buffer:void 0,Xt=(Wt?Wt.isBuffer:void 0)||function(){return!1},Qt=9007199254740991,Zt=/^(?:0|[1-9]\d*)$/;function te(t,e){var r=typeof t;return!!(e=null==e?Qt:e)&&("number"==r||"symbol"!=r&&Zt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=ee}var ne={};ne["[object Float32Array]"]=ne["[object Float64Array]"]=ne["[object Int8Array]"]=ne["[object Int16Array]"]=ne["[object Int32Array]"]=ne["[object Uint8Array]"]=ne["[object Uint8ClampedArray]"]=ne["[object Uint16Array]"]=ne["[object Uint32Array]"]=!0,ne["[object Arguments]"]=ne["[object Array]"]=ne["[object ArrayBuffer]"]=ne["[object Boolean]"]=ne["[object DataView]"]=ne["[object Date]"]=ne["[object Error]"]=ne["[object Function]"]=ne["[object Map]"]=ne["[object Number]"]=ne["[object Object]"]=ne["[object RegExp]"]=ne["[object Set]"]=ne["[object String]"]=ne["[object WeakMap]"]=!1;var oe,ie="object"==typeof exports&&exports&&!exports.nodeType&&exports,ae=ie&&"object"==typeof module&&module&&!module.nodeType&&module,ue=ae&&ae.exports===ie&&J.process,ce=function(){try{var t=ae&&ae.require&&ae.require("util").types;return t||ue&&ue.binding&&ue.binding("util")}catch(t){}}(),se=ce&&ce.isTypedArray,fe=se?(oe=se,function(t){return oe(t)}):function(t){return tt(t)&&re(t.length)&&!!ne[Z(t)]},le=Object.prototype.hasOwnProperty;function pe(t,e){var r=L(t),n=!r&&Vt(t),o=!r&&!n&&Xt(t),i=!r&&!n&&!o&&fe(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Te.prototype.set=function(t,e){var r=this.__data__,n=Ae(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Pe,qe=U["__core-js_shared__"],Ce=(Pe=/[^.]+$/.exec(qe&&qe.keys&&qe.keys.IE_PROTO||""))?"Symbol(src)_1."+Pe:"";var $e=Function.prototype.toString;function Ne(t){if(null!=t){try{return $e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ze=/^\[object .+?Constructor\]$/,Fe=Function.prototype,Re=Object.prototype,Ie=Fe.toString,Je=Re.hasOwnProperty,Me=RegExp("^"+Ie.call(Je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ue(t){return!(!ye(t)||function(t){return!!Ce&&Ce in t}(t))&&(je(t)?Me:ze).test(Ne(t))}function De(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Ue(r)?r:void 0}var He=De(U,"Map"),Le=De(Object,"create");var Be="__lodash_hash_undefined__",Ke=Object.prototype.hasOwnProperty;var Ve=Object.prototype.hasOwnProperty;var Ge="__lodash_hash_undefined__";function Ye(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&or?new er:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Kn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Bn);function Wn(t,e){return Yn(function(t,e,r){return e=Ln(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Ln(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!ye(r))return!1;var n=typeof e;return!!("number"==n?Oe(r)&&te(e,r.length):"string"==n&&e in r)&&ke(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},_o=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!mo(r,t)})).length},jo=function(t,e){if(void 0===e&&(e=null),Jt(t)){if(!e)return!0;if(mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Et(r)||(!1!==(e=_o(t))?!wo({arg:r},e):!bo(t)(r))})).length)})).length}return!1},Oo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),jo.apply(null,n)};function So(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Eo=function(t,e){var r;switch(!0){case"object"===t:return!Oo(e);case"array"===t:return!mo(e.arg);case!1!==(r=_o(t)):return!wo(e,r);default:return!bo(t)(e.arg)}},ko=function(t,e){return Et(t)?!0!==e.optional||Et(e.defaultvalue)?null:e.defaultvalue:t},Ao=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!mo(e))throw new C("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!mo(t))throw new C("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 So(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:So(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:So(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?ko(t,a):t,index:r,param:a,optional:i}}));default:throw So(5),new C("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!io(e)&&!(r.type.length>r.type.filter((function(e){return Eo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Eo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},xo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},To=function(t){return!io(t)};function Po(t,e){var r=oo(e,(function(t,e){return!t[go]}));return Wr(r,{})?t:function(t,e){var r={};return e=On(e),Ee(t,(function(t,n,o){En(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,On((function(t){return t.alias===e})),Ee)||e}))}function qo(t,e){return Zn(e,(function(e,r){var n,o;return Et(t[r])||!0===e[lo]&&To(t[r])?Qn({},e,((n={})[yo]=!0,n)):((o={})[ho]=t[r],o[fo]=e[fo],o[lo]=e[lo]||!1,o[po]=e[po]||!1,o[vo]=e[vo]||!1,o)}))}function Co(t,e){var r=function(t,e){var r=Po(t,e);return{pristineValues:Zn(oo(e,(function(t,e){return xo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:oo(e,(function(t,e){return!xo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[qo(n,r.checkAgainstAppProps),o]}var $o=function(t){return mo(t)?t:[t]};var No=function(t,e){return!mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},zo=function(t,e){try{return!!je(e)&&e.apply(null,[t])}catch(t){return!1}};function Fo(t){return function(e,r){if(e[yo])return e[ho];var n=function(t,e){var r,n=[[t[ho]],[(r={},r[fo]=$o(t[fo]),r[lo]=t[lo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw So("runValidationAction",r,e),new T(r,n);if(!1!==e[po]&&!No(e[ho],e[po]))throw So(po,e[po]),new x(r);if(!1!==e[vo]&&!zo(e[ho],e[vo]))throw So(vo,e[vo]),new P(r);return e[ho]}}function Ro(t,e,r,n){return void 0===t&&(t={}),Qn(function(t,e){var r=t[0],n=t[1],o=Zn(r,Fo(e));return Qn(o,n)}(Co(t,e),n),r)}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),mo(n)&&(a[f]=n),je(o)&&(a[p]=o),Pt(i)&&(a[h]=i),a}var Jo=uo,Mo=mo,Uo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Ao(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Do=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Ho=function(t){return function(e,r,n){return void 0===n&&(n={}),Ro(e,r,n,t)}}(Ao),Lo=function(t){return L(t)?t:[t]},Bo=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,Lo(t))}),Reflect.apply(t,null,r))}};function Ko(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(I)}},Go=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(I)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Yo=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Uo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(I)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xo=Array.isArray,Qo=void 0!==O?O:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Zo="object"==typeof Qo&&Qo&&Qo.Object===Object&&Qo,ti="object"==typeof self&&self&&self.Object===Object&&self,ei=(Zo||ti||Function("return this")()).Symbol,ri=Object.prototype,ni=ri.hasOwnProperty,oi=ri.toString,ii=ei?ei.toStringTag:void 0;var ai=Object.prototype.toString;var ui="[object Null]",ci="[object Undefined]",si=ei?ei.toStringTag:void 0;function fi(t){return null==t?void 0===t?ci:ui:si&&si in Object(t)?function(t){var e=ni.call(t,ii),r=t[ii];try{t[ii]=void 0;var n=!0}catch(t){}var o=oi.call(t);return n&&(e?t[ii]=r:delete t[ii]),o}(t):function(t){return ai.call(t)}(t)}var li=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function pi(t){return null!=t&&"object"==typeof t}var hi="[object Object]",di=Function.prototype,vi=Object.prototype,gi=di.toString,yi=vi.hasOwnProperty,bi=gi.call(Object);var mi=ei?ei.prototype:void 0,_i=(mi&&mi.toString,"[object String]");function wi(t){return"string"==typeof t||!Xo(t)&&pi(t)&&fi(t)==_i}var ji=function(t,e){return!!t.filter((function(t){return t===e})).length},Oi=function(t,e){var r=Object.keys(t);return ji(r,e)},Si=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},Ei=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ki="query",Ai="mutation",xi="socket",Ti="payload",Pi="condition",qi=function(){try{if(window||document)return!0}catch(t){}return!1},Ci=function(){try{if(!qi()&&Qo)return!0}catch(t){}return!1};var $i=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return qi()?"browser":Ci()?"node":"unknown"},e}(Error));var Ni=function(t){var e;return(e={}).args=t,e};var zi=function(t){return Oi(t,"data")&&!Oi(t,"error")?t.data:t},Fi=function(t){return function(t){if(!pi(t)||fi(t)!=hi)return!1;var e=li(t);if(null===e)return!0;var r=yi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&gi.call(r)==bi}(t)&&(Oi(t,ki)||Oi(t,Ai)||Oi(t,xi))},Ri=function(t,e){return void 0===e&&(e={}),Fi(e)?Promise.resolve(e):t.getContract()},Ii=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(Si(e,r,g),o),t.$only(Si(e,r,y),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ji=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Mi(t,e,r,n){var o=function(t,e,r,n){return Bo(Go,Yo,Wo)({},t,e,r,n)}(t,e,r,n);Ji(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(Si(t,n,g),r)})).catch((function(r){e.$trigger(Si(t,n,y),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ui=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Mi(t,n,e,r)}));var o={query:Ii(n,"query"),mutation:Ii(n,"mutation"),auth:Ii(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Di=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=fa().key(e);t(la(r),r)}},remove:function(t){return fa().removeItem(t)},clearAll:function(){return fa().clear()}};function fa(){return ca.localStorage}function la(t){return fa().getItem(t)}var pa=Ki.trim,ha={name:"cookieStorage",read:function(t){if(!t||!ya(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(da.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;da.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:va,remove:ga,clearAll:function(){va((function(t,e){ga(e)}))}},da=Ki.Global.document;function va(t){for(var e=da.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(pa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ga(t){t&&ya(t)&&(da.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ya(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(da.cookie)}var ba=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ma="expire_mixin",_a=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ma);return{set:function(e,r,n,o){this.hasNamespace(ma)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ma)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ma)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var xa=[sa,ha],Ta=[ba,_a,Ea,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Aa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Aa.compress(this._serialize(r));t(e,n)}}}],Pa=ia.createStore(xa,Ta),qa=Ki.Global;function Ca(){return qa.sessionStorage}function $a(t){return Ca().getItem(t)}var Na=[{name:"sessionStorage",read:$a,write:function(t,e){return Ca().setItem(t,e)},each:function(t){for(var e=Ca().length-1;e>=0;e--){var r=Ca().key(e);t($a(r),r)}},remove:function(t){return Ca().removeItem(t)},clearAll:function(){return Ca().clear()}},ha],za=[ba,_a],Fa=ia.createStore(Na,za),Ra=Pa,Ia=Fa,Ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidCharacterError";var Ua="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ma("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ja.indexOf(n);return a};var Da=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ua(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ua(e)}};function Ha(t){this.message=t}Ha.prototype=new Error,Ha.prototype.name="InvalidTokenError";var La=function(t,e){if("string"!=typeof t)throw new Ha("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Da(t.split(".")[r]))}catch(t){throw new Ha("Invalid token specified: "+t.message)}},Ba=Ha;La.InvalidTokenError=Ba;var Ka,Va,Ga,Ya,Wa,Xa,Qa,Za,tu,eu=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function ru(t){if(Jo(t))return function(t){var e=t.iat||eu(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new C("Token has expired on "+r,t)}return t}(La(t));throw new C("Token must be a string!")}Do("HS256",["string"]),Do(!1,["boolean","number","string"],((Ka={})[h]="exp",Ka[s]=!0,Ka)),Do(!1,["boolean","number","string"],((Va={})[h]="nbf",Va[s]=!0,Va)),Do(!1,["boolean","string"],((Ga={})[h]="iss",Ga[s]=!0,Ga)),Do(!1,["boolean","string"],((Ya={})[h]="sub",Ya[s]=!0,Ya)),Do(!1,["boolean","string"],((Wa={})[h]="iss",Wa[s]=!0,Wa)),Do(!1,["boolean"],((Xa={})[s]=!0,Xa)),Do(!1,["boolean","string"],((Qa={})[s]=!0,Qa)),Do(!1,["boolean","string"],((Za={})[s]=!0,Za)),Do(!1,["boolean"],((tu={})[s]=!0,tu));var nu=u[0],ou=u[1],iu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},au={headers:{configurable:!0}};au.headers.set=function(t){this.extraHeader=t},iu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Qn({},{_cb:Ei()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Qn({},{method:nu,params:o},e))},iu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},iu.prototype.processJsonp=function(t){return zi(t)},iu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Jo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):zi(o)}),(function(t){throw e.cleanUp(),console.error(t),new $("Server side error",t)}))},iu.prototype.getHeaders=function(){return this.opts.enableAuth?Qn({},a,this.getAuthHeader(),this.extraHeader):Qn({},a,this.extraHeader)},iu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},iu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Qn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(R).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},iu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),wi(t)&&Xo(e)){var o=Ni(e);return!0===r?o:((n={})[t]=o,n)}throw new $i("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(R)},iu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Ti]=e,i[Pi]=r,!0===n)return i;if(wi(t))return(o={})[t]=i,o;throw new $i("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:ou}).then(R)},Object.defineProperties(iu.prototype,au);var uu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Mo(t)&&t.length>=2&&Reflect.apply(Ra.set,Ra,t),new q("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ra.get("endpoint")||[];ji(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ra.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ji(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=Ei();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ra.set,Ra,e)},r.jsonqlEndpoint.get=function(){var t=Ra.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ra.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ia.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=ru)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Fi(t))throw new q("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Fi(this.opts.contract)?this.opts.contract:Ra.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(iu))),cu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},su={hostname:Do([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Do("jsonql",["string"]),loginHandlerName:Do("login",["string"]),logoutHandlerName:Do("logout",["string"]),enableJsonp:Do(!1,["boolean"]),enableAuth:Do(!1,["boolean"]),useJwt:Do(!0,["boolean"]),useLocalstorage:Do(!0,["boolean"]),storageKey:Do("storageKey",["string"]),authKey:Do("authKey",["string"]),contractExpired:Do(0,["number"]),keepContract:Do(!0,["boolean"]),exposeContract:Do(!1,["boolean"]),showContractDesc:Do(!1,["boolean"]),contractKey:Do(!1,["boolean"]),contractKeyName:Do("X-JSONQL-CV-KEY",["string"]),enableTimeout:Do(!1,["boolean"]),timeout:Do(5e3,["number"]),returnInstance:Do(!1,["boolean"]),allowReturnRawToken:Do(!1,["boolean"]),debugOn:Do(!1,["boolean"])};var fu=new WeakMap,lu=new WeakMap;var pu=function(){this.__suspend__=null,this.queueStore=new Set},hu={$suspend:{configurable:!0},$queues:{configurable:!0}};hu.$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)},pu.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__},hu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},pu.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(pu.prototype,hu);var du=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){fu.set(this,t)},r.normalStore.get=function(){return fu.get(this)},r.lazyStore.set=function(t){lu.set(this,t)},r.lazyStore.get=function(){return lu.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}(pu));function vu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ho(t,su,cu)}(e),i=new uu(o,t),a=Ri(i,n),u=(r=o.debugOn,new du({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ui(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),vu(o,t)}})); //# sourceMappingURL=jsonql-client.static.js.map diff --git a/packages/http-client/dist/jsonql-client.static.js.map b/packages/http-client/dist/jsonql-client.static.js.map index fd3e196d..1df846ab 100644 --- a/packages/http-client/dist/jsonql-client.static.js.map +++ b/packages/http-client/dist/jsonql-client.static.js.map @@ -1 +1 @@ -{"version":3,"file":"jsonql-client.static.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="continue",s="type",f="optional",l="enumv",p="args",h="checker",d="alias",v="login",g="logout",y={desc:"y"},b="No message";var m="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},_="object"==typeof m&&m&&m.Object===Object&&m,w="object"==typeof self&&self&&self.Object===Object&&self,j=_||w||Function("return this")(),O=j.Symbol;function S(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&L(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function at(t){return void 0===t}var ut="[object Boolean]";var ct="[object Number]";function st(t){return function(t){return"number"==typeof t||z(t)&&N(t)==ct}(t)&&t!=+t}var ft="[object String]";function lt(t){return"string"==typeof t||!E(t)&&z(t)&&N(t)==ft}function pt(t,e){return function(r){return t(e(r))}}var ht=pt(Object.getPrototypeOf,Object),dt="[object Object]",vt=Function.prototype,gt=Object.prototype,yt=vt.toString,bt=gt.hasOwnProperty,mt=yt.call(Object);function _t(t){if(!z(t)||N(t)!=dt)return!1;var e=ht(t);if(null===e)return!0;var r=bt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&yt.call(r)==mt}var wt,jt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[wt?a:++n];if(!1===e(o[u],u,o))break}return t};var Ot="[object Arguments]";function St(t){return z(t)&&N(t)==Ot}var Et=Object.prototype,kt=Et.hasOwnProperty,At=Et.propertyIsEnumerable,xt=St(function(){return arguments}())?St:function(t){return z(t)&&kt.call(t,"callee")&&!At.call(t,"callee")};var Tt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Pt=Tt&&"object"==typeof module&&module&&!module.nodeType&&module,qt=Pt&&Pt.exports===Tt?j.Buffer:void 0,Ct=(qt?qt.isBuffer:void 0)||function(){return!1},$t=9007199254740991,Nt=/^(?:0|[1-9]\d*)$/;function zt(t,e){var r=typeof t;return!!(e=null==e?$t:e)&&("number"==r||"symbol"!=r&&Nt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Ft}var Rt={};Rt["[object Float32Array]"]=Rt["[object Float64Array]"]=Rt["[object Int8Array]"]=Rt["[object Int16Array]"]=Rt["[object Int32Array]"]=Rt["[object Uint8Array]"]=Rt["[object Uint8ClampedArray]"]=Rt["[object Uint16Array]"]=Rt["[object Uint32Array]"]=!0,Rt["[object Arguments]"]=Rt["[object Array]"]=Rt["[object ArrayBuffer]"]=Rt["[object Boolean]"]=Rt["[object DataView]"]=Rt["[object Date]"]=Rt["[object Error]"]=Rt["[object Function]"]=Rt["[object Map]"]=Rt["[object Number]"]=Rt["[object Object]"]=Rt["[object RegExp]"]=Rt["[object Set]"]=Rt["[object String]"]=Rt["[object WeakMap]"]=!1;var Jt,Mt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ut=Mt&&"object"==typeof module&&module&&!module.nodeType&&module,Dt=Ut&&Ut.exports===Mt&&_.process,Ht=function(){try{var t=Ut&&Ut.require&&Ut.require("util").types;return t||Dt&&Dt.binding&&Dt.binding("util")}catch(t){}}(),Lt=Ht&&Ht.isTypedArray,Bt=Lt?(Jt=Lt,function(t){return Jt(t)}):function(t){return z(t)&&It(t.length)&&!!Rt[N(t)]},Kt=Object.prototype.hasOwnProperty;function Vt(t,e){var r=E(t),n=!r&&xt(t),o=!r&&!n&&Ct(t),i=!r&&!n&&!o&&Bt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},fe.prototype.set=function(t,e){var r=this.__data__,n=ce(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var le,pe=j["__core-js_shared__"],he=(le=/[^.]+$/.exec(pe&&pe.keys&&pe.keys.IE_PROTO||""))?"Symbol(src)_1."+le:"";var de=Function.prototype.toString;function ve(t){if(null!=t){try{return de.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ge=/^\[object .+?Constructor\]$/,ye=Function.prototype,be=Object.prototype,me=ye.toString,_e=be.hasOwnProperty,we=RegExp("^"+me.call(_e).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function je(t){return!(!Qt(t)||function(t){return!!he&&he in t}(t))&&(ne(t)?we:ge).test(ve(t))}function Oe(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return je(r)?r:void 0}var Se=Oe(j,"Map"),Ee=Oe(Object,"create");var ke="__lodash_hash_undefined__",Ae=Object.prototype.hasOwnProperty;var xe=Object.prototype.hasOwnProperty;var Te="__lodash_hash_undefined__";function Pe(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Je?new Fe:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=An)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kn);function qn(t,e){return Pn(function(t,e,r){return e=En(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=En(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Cn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Qt(r))return!1;var n=typeof e;return!!("number"==n?oe(r)&&zt(e,r.length):"string"==n&&e in r)&&ue(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},to=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},eo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Qn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Zn(r,t)})).length},ro=function(t,e){if(void 0===e&&(e=null),_t(t)){if(!e)return!0;if(Zn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!at(r)||(!1!==(e=to(t))?!eo({arg:r},e):!Qn(t)(r))})).length)})).length}return!1},no=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),ro.apply(null,n)},oo=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),io=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),ao=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),uo=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),co=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),so=function(){try{if(window||document)return!0}catch(t){}return!1},fo=function(){try{if(!so()&&m)return!0}catch(t){}return!1};var lo=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return so()?"browser":fo()?"node":"unknown"},e}(Error),po=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,Error.captureStackTrace&&Error.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}(lo),ho=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),vo=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),go=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),yo=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,Error.captureStackTrace&&Error.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}(lo),bo=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,Error.captureStackTrace&&Error.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}(lo),mo=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),_o=Object.freeze({__proto__:null,Jsonql406Error:oo,Jsonql500Error:io,JsonqlAuthorisationError:ao,JsonqlContractAuthError:uo,JsonqlResolverAppError:co,JsonqlResolverNotFoundError:po,JsonqlEnumError:ho,JsonqlTypeError:vo,JsonqlCheckerError:go,JsonqlValidationError:yo,JsonqlError:bo,JsonqlServerError:mo}),wo=bo,jo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function Oo(t){if(jo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||b,a=e.detail||e;if(o&&_o[o])throw new _o[r](i,a);throw new wo(i,a)}return t}function So(t){if(Array.isArray(t))throw new yo("",t);var e=t.message||b,r=t.detail||t;switch(!0){case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof vo:throw new vo(e,r);case t instanceof go:throw new go(e,r);case t instanceof yo:throw new yo(e,r);case t instanceof mo:throw new mo(e,r);default:throw new bo(e,r)}}function Eo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var ko=function(t,e){var r;switch(!0){case"object"===t:return!no(e);case"array"===t:return!Zn(e.arg);case!1!==(r=to(t)):return!eo(e,r);default:return!Qn(t)(e.arg)}},Ao=function(t,e){return at(t)?!0!==e.optional||at(e.defaultvalue)?null:e.defaultvalue:t},xo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Zn(e))throw new bo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Zn(t))throw new bo("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 Eo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Eo(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:Eo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?Ao(t,a):t,index:r,param:a,optional:i}}));default:throw Eo(5),new bo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Mn(e)&&!(r.type.length>r.type.filter((function(e){return ko(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return ko(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},To=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Po=function(t){return!Mn(t)};function qo(t,e){var r=Jn(e,(function(t,e){return!t[Wn]}));return qr(r,{})?t:function(t,e){var r={};return e=nn(e),ae(t,(function(t,n,o){an(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,nn((function(t){return t.alias===e})),ae)||e}))}function Co(t,e){return Nn(e,(function(e,r){var n,o;return at(t[r])||!0===e[Kn]&&Po(t[r])?$n({},e,((n={})[Xn]=!0,n)):((o={})[Gn]=t[r],o[Bn]=e[Bn],o[Kn]=e[Kn]||!1,o[Vn]=e[Vn]||!1,o[Yn]=e[Yn]||!1,o)}))}function $o(t,e){var r=function(t,e){var r=qo(t,e);return{pristineValues:Nn(Jn(e,(function(t,e){return To(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Jn(e,(function(t,e){return!To(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Co(n,r.checkAgainstAppProps),o]}var No=function(t){return Zn(t)?t:[t]};var zo=function(t,e){return!Zn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},Fo=function(t,e){try{return!!ne(e)&&e.apply(null,[t])}catch(t){return!1}};function Io(t){return function(e,r){if(e[Xn])return e[Gn];var n=function(t,e){var r,n=[[t[Gn]],[(r={},r[Bn]=No(t[Bn]),r[Kn]=t[Kn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Eo("runValidationAction",r,e),new vo(r,n);if(!1!==e[Vn]&&!zo(e[Gn],e[Vn]))throw Eo(Vn,e[Vn]),new ho(r);if(!1!==e[Yn]&&!Fo(e[Gn],e[Yn]))throw Eo(Yn,e[Yn]),new go(r);return e[Gn]}}function Ro(t,e){var r=t[0],n=t[1],o=Nn(r,Io(e));return $n(o,n)}var Jo=function(t,e){return Promise.resolve($o(t,e))};function Mo(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[p]=t,a[s]=e,!0===r&&(a[f]=!0),Zn(n)&&(a[l]=n),ne(o)&&(a[h]=o),lt(i)&&(a[d]=i),a}var Uo=Dn,Do=Zn,Ho=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=xo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Lo=function(t,e,r){void 0===r&&(r={});var n=r[f],o=r[l],i=r[h],a=r[d];return Mo.apply(null,[t,e,n,o,i,a])},Bo=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),Jo(t,e).then((function(t){return Ro(t,n)})).then((function(t){return $n({},t,r)}))}(e,r,n,t)}}(xo),Ko=function(t){return function(e,r,n){return void 0===n&&(n={}),function(t,e,r,n){return void 0===t&&(t={}),$n(Ro($o(t,e),n),r)}(e,r,n,t)}}(xo),Vo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=vi().key(e);t(gi(r),r)}},remove:function(t){return vi().removeItem(t)},clearAll:function(){return vi().clear()}};function vi(){return hi.localStorage}function gi(t){return vi().getItem(t)}var yi=Xo.trim,bi={name:"cookieStorage",read:function(t){if(!t||!ji(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(mi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;mi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:_i,remove:wi,clearAll:function(){_i((function(t,e){wi(e)}))}},mi=Xo.Global.document;function _i(t){for(var e=mi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(yi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function wi(t){t&&ji(t)&&(mi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ji(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(mi.cookie)}var Oi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var Si="expire_mixin",Ei=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+Si);return{set:function(e,r,n,o){this.hasNamespace(Si)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(Si)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(Si)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var $i=[di,bi],Ni=[Oi,Ei,Pi,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Ci.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Ci.compress(this._serialize(r));t(e,n)}}}],zi=fi.createStore($i,Ni),Fi=Xo.Global;function Ii(){return Fi.sessionStorage}function Ri(t){return Ii().getItem(t)}var Ji=[{name:"sessionStorage",read:Ri,write:function(t,e){return Ii().setItem(t,e)},each:function(t){for(var e=Ii().length-1;e>=0;e--){var r=Ii().key(e);t(Ri(r),r)}},remove:function(t){return Ii().removeItem(t)},clearAll:function(){return Ii().clear()}},bi],Mi=[Oi,Ei],Ui=fi.createStore(Ji,Mi),Di=zi,Hi=Ui,Li=Array.isArray,Bi=void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ki="object"==typeof Bi&&Bi&&Bi.Object===Object&&Bi,Vi="object"==typeof self&&self&&self.Object===Object&&self,Gi=(Ki||Vi||Function("return this")()).Symbol,Yi=Object.prototype,Wi=Yi.hasOwnProperty,Xi=Yi.toString,Qi=Gi?Gi.toStringTag:void 0;var Zi=Object.prototype.toString;var ta="[object Null]",ea="[object Undefined]",ra=Gi?Gi.toStringTag:void 0;function na(t){return null==t?void 0===t?ea:ta:ra&&ra in Object(t)?function(t){var e=Wi.call(t,Qi),r=t[Qi];try{t[Qi]=void 0;var n=!0}catch(t){}var o=Xi.call(t);return n&&(e?t[Qi]=r:delete t[Qi]),o}(t):function(t){return Zi.call(t)}(t)}var oa=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ia(t){return null!=t&&"object"==typeof t}var aa="[object Object]",ua=Function.prototype,ca=Object.prototype,sa=ua.toString,fa=ca.hasOwnProperty,la=sa.call(Object);var pa=Gi?Gi.prototype:void 0,ha=(pa&&pa.toString,"[object String]");function da(t){return"string"==typeof t||!Li(t)&&ia(t)&&na(t)==ha}var va=function(t,e){return!!t.filter((function(t){return t===e})).length},ga=function(t,e){var r=Object.keys(t);return va(r,e)},ya=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ba="query",ma="mutation",_a="socket",wa="payload",ja="condition",Oa=function(){try{if(window||document)return!0}catch(t){}return!1},Sa=function(){try{if(!Oa()&&Bi)return!0}catch(t){}return!1};var Ea=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Oa()?"browser":Sa()?"node":"unknown"},e}(Error));var ka=function(t){var e;return(e={}).args=t,e};var Aa=function(t){return ga(t,"data")&&!ga(t,"error")?t.data:t},xa=function(t){return function(t){if(!ia(t)||na(t)!=aa)return!1;var e=oa(t);if(null===e)return!0;var r=fa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&sa.call(r)==la}(t)&&(ga(t,ba)||ga(t,ma)||ga(t,_a))},Ta=function(t,e){return void 0===e&&(e={}),xa(e)?Promise.resolve(e):t.getContract()},Pa="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function qa(t){this.message=t}qa.prototype=new Error,qa.prototype.name="InvalidCharacterError";var Ca="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new qa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Pa.indexOf(n);return a};var $a=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ca(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ca(e)}};function Na(t){this.message=t}Na.prototype=new Error,Na.prototype.name="InvalidTokenError";var za=function(t,e){if("string"!=typeof t)throw new Na("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse($a(t.split(".")[r]))}catch(t){throw new Na("Invalid token specified: "+t.message)}},Fa=Na;za.InvalidTokenError=Fa;var Ia,Ra,Ja,Ma,Ua,Da,Ha,La,Ba,Ka=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Va(t){if(Uo(t))return function(t){var e=t.iat||Ka(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new bo("Token has expired on "+r,t)}return t}(za(t));throw new bo("Token must be a string!")}Lo("HS256",["string"]),Lo(!1,["boolean","number","string"],((Ia={})[d]="exp",Ia[f]=!0,Ia)),Lo(!1,["boolean","number","string"],((Ra={})[d]="nbf",Ra[f]=!0,Ra)),Lo(!1,["boolean","string"],((Ja={})[d]="iss",Ja[f]=!0,Ja)),Lo(!1,["boolean","string"],((Ma={})[d]="sub",Ma[f]=!0,Ma)),Lo(!1,["boolean","string"],((Ua={})[d]="iss",Ua[f]=!0,Ua)),Lo(!1,["boolean"],((Da={})[f]=!0,Da)),Lo(!1,["boolean","string"],((Ha={})[f]=!0,Ha)),Lo(!1,["boolean","string"],((La={})[f]=!0,La)),Lo(!1,["boolean"],((Ba={})[f]=!0,Ba));var Ga=u[0],Ya=u[1],Wa=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Xa={headers:{configurable:!0}};Xa.headers.set=function(t){this.extraHeader=t},Wa.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=$n({},{_cb:ya()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=$n({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,$n({},{method:Ga,params:o},e))},Wa.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Wa.prototype.processJsonp=function(t){return Aa(t)},Wa.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Uo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Aa(o)}),(function(t){throw e.cleanUp(),console.error(t),new mo("Server side error",t)}))},Wa.prototype.getHeaders=function(){return this.opts.enableAuth?$n({},a,this.getAuthHeader(),this.extraHeader):$n({},a,this.extraHeader)},Wa.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Wa.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=$n({},this.extraParams,y)),this.request({},{method:"GET"},this.contractHeader).then(Oo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Wa.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),da(t)&&Li(e)){var o=ka(e);return!0===r?o:((n={})[t]=o,n)}throw new Ea("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(Oo)},Wa.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[wa]=e,i[ja]=r,!0===n)return i;if(da(t))return(o={})[t]=i,o;throw new Ea("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ya}).then(Oo)},Object.defineProperties(Wa.prototype,Xa);var Qa=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Do(t)&&t.length>=2&&Reflect.apply(Di.set,Di,t),new yo("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Di.get("endpoint")||[];va(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Di.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!va(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ya();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Di.set,Di,e)},r.jsonqlEndpoint.get=function(){var t=Di.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Di.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Hi.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Va)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!xa(t))throw new yo("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return xa(this.opts.contract)?this.opts.contract:Di.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Wa))),Za=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Ho(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(So)}};var tu=function(t,e,r,n){var o=function(t,e,r,n){var o={query:{},mutation:{}},i=function(e){o.query[e]=function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Ho(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(So)}};for(var a in n.query)i(a);var u=function(e){o.mutation[e]=function(r,o,i){void 0===i&&(i={});var a=[r,o],u=n.mutation[e].params;return Ho(a,u).then((function(){return t.mutation.apply(t,[e,r,o,i])})).catch(So)}};for(var s in n.mutation)u(s);if(r.enableAuth&&n.auth){o.auth={};var f=r.loginHandlerName,l=r.logoutHandlerName;n.auth[f]&&(o.auth[f]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Za(t,f,r,n);return a.apply(null,o).then(t.postLoginAction).then((function(t){return e.$trigger(v,t),t}))}),n.auth[l]?o.auth[l]=function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];var a=Za(t,l,r,n);return a.apply(null,o).then(t.postLogoutAction).then((function(t){return e.$trigger(g,t),t}))}:o.auth[l]=function(){t.postLogoutAction(c),e.$trigger(g,c)}}return o}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.3.3",o},eu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ru={hostname:Lo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Lo("jsonql",["string"]),loginHandlerName:Lo(v,["string"]),logoutHandlerName:Lo(g,["string"]),enableJsonp:Lo(!1,["boolean"]),enableAuth:Lo(!1,["boolean"]),useJwt:Lo(!0,["boolean"]),useLocalstorage:Lo(!0,["boolean"]),storageKey:Lo("storageKey",["string"]),authKey:Lo("authKey",["string"]),contractExpired:Lo(0,["number"]),keepContract:Lo(!0,["boolean"]),exposeContract:Lo(!1,["boolean"]),showContractDesc:Lo(!1,["boolean"]),contractKey:Lo(!1,["boolean"]),contractKeyName:Lo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Lo(!1,["boolean"]),timeout:Lo(5e3,["number"]),returnInstance:Lo(!1,["boolean"]),allowReturnRawToken:Lo(!1,["boolean"]),debugOn:Lo(!1,["boolean"])};function nu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Bo(t,ru,eu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Qa(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ta(r,n.contract).then((function(e){return tu(r,n,e,t)}))}))}var ou=new WeakMap,iu=new WeakMap;var au=function(){this.__suspend__=null,this.queueStore=new Set},uu={$suspend:{configurable:!0},$queues:{configurable:!0}};uu.$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)},au.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__},uu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},au.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(au.prototype,uu);var cu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ou.set(this,t)},r.normalStore.get=function(){return ou.get(this)},r.lazyStore.set=function(t){iu.set(this,t)},r.lazyStore.get=function(){return iu.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}(au));function su(t,e,r){var n=e.contract,o=function(t){return Ko(t,ru,eu)}(e),i=new Qa(o,r);return tu(i,o,n,t)}function fu(t,e){var r,n=(r=e.debugOn,new cu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0}));return e.contract&&xa(e.contract)?su(n,e,t):nu(n,e,t)}return function(t){return void 0===t&&(t={}),fu(o,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&q(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&q(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||q(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&q(t)==_t}var jt=Object.prototype,Ot=jt.hasOwnProperty,St=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&Ot.call(t,"callee")&&!St.call(t,"callee")};var kt="object"==typeof exports&&exports&&!exports.nodeType&&exports,At=kt&&"object"==typeof module&&module&&!module.nodeType&&module,xt=At&&At.exports===kt?m.Buffer:void 0,Tt=(xt?xt.isBuffer:void 0)||function(){return!1},Pt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?Pt:e)&&("number"==r||"symbol"!=r&&qt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Dt=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[q(t)]},Ht=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&Tt(t),i=!r&&!n&&!o&&Dt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Oe="__lodash_hash_undefined__",Se=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var ke="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Sn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(On);function xn(t,e){return An(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Tn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Xn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Qn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Xn(t))?!Qn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Oo=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Xn(t)):return!Qn(e,r);default:return!Yn(t)(e.arg)}},So=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?So(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return Oo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Oo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},ko=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ao=function(t){return!In(t)};function xo(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return xr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function To(t,e){return qn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Hn]&&Ao(t[r])?Pn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Dn]=e[Dn],o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function Po(t,e){var r=function(t,e){var r=xo(t,e);return{pristineValues:qn(Fn(e,(function(t,e){return ko(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!ko(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[To(n,r.checkAgainstAppProps),o]}var qo=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Dn]=qo(t[Dn]),r[Hn]=t[Hn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}var zo=function(t,e){return Promise.resolve(Po(t,e))};function Fo(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=qn(r,No(e));return Pn(o,n)}(t,n)})).then((function(t){return Pn({},t,r)}))}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),Wn(n)&&(a[f]=n),te(o)&&(a[p]=o),ct(i)&&(a[h]=i),a}var Ro=Jn,Jo=Wn,Mo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Uo=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Do=function(t){return function(e,r,n){return void 0===n&&(n={}),Fo(e,r,n,t)}}(Eo),Ho=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ti=[fi,di],Pi=[mi,wi,ki,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=xi.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=xi.compress(this._serialize(r));t(e,n)}}}],qi=ai.createStore(Ti,Pi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function Ni(t){return $i().getItem(t)}var zi=[{name:"sessionStorage",read:Ni,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(Ni(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(zi,Fi),Ri=qi,Ji=Ii,Mi=Array.isArray,Ui=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Di="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Hi="object"==typeof self&&self&&self.Object===Object&&self,Li=(Di||Hi||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Xi="[object Undefined]",Qi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Xi:Wi:Qi&&Qi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Oa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Sa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Sa(e)?Promise.resolve(e):t.getContract()},ka="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidCharacterError";var xa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Aa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ka.indexOf(n);return a};var Ta=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(xa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return xa(e)}};function Pa(t){this.message=t}Pa.prototype=new Error,Pa.prototype.name="InvalidTokenError";var qa=function(t,e){if("string"!=typeof t)throw new Pa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ta(t.split(".")[r]))}catch(t){throw new Pa("Invalid token specified: "+t.message)}},Ca=Pa;qa.InvalidTokenError=Ca;var $a,Na,za,Fa,Ia,Ra,Ja,Ma,Ua,Da=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ha(t){if(Ro(t))return function(t){var e=t.iat||Da(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(qa(t));throw new vo("Token must be a string!")}Uo("HS256",["string"]),Uo(!1,["boolean","number","string"],(($a={})[h]="exp",$a[s]=!0,$a)),Uo(!1,["boolean","number","string"],((Na={})[h]="nbf",Na[s]=!0,Na)),Uo(!1,["boolean","string"],((za={})[h]="iss",za[s]=!0,za)),Uo(!1,["boolean","string"],((Fa={})[h]="sub",Fa[s]=!0,Fa)),Uo(!1,["boolean","string"],((Ia={})[h]="iss",Ia[s]=!0,Ia)),Uo(!1,["boolean"],((Ra={})[s]=!0,Ra)),Uo(!1,["boolean","string"],((Ja={})[s]=!0,Ja)),Uo(!1,["boolean","string"],((Ma={})[s]=!0,Ma)),Uo(!1,["boolean"],((Ua={})[s]=!0,Ua));var La=u[0],Ba=u[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Pn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Pn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Pn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Oa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Ro(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Oa(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Pn({},a,this.getAuthHeader(),this.extraHeader):Pn({},a,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Pn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(_o)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Jo(t)&&t.length>=2&&Reflect.apply(Ri.set,Ri,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ri.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ri.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ri.set,Ri,e)},r.jsonqlEndpoint.get=function(){var t=Ri.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ri.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ji.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ha)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Sa(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Sa(this.opts.contract)?this.opts.contract:Ri.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t){return j(t)?t:[t]},Wa=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,Ya(t))}),Reflect.apply(t,null,r))}};function Xa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Qa=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}},Za=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(wo)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},tu=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Mo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(wo)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},eu=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var ru=function(t,e,r,n){var o=function(t,e,r,n){return Wa(Za,tu,eu)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.3.3",o},nu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ou={hostname:Uo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Uo("jsonql",["string"]),loginHandlerName:Uo("login",["string"]),logoutHandlerName:Uo("logout",["string"]),enableJsonp:Uo(!1,["boolean"]),enableAuth:Uo(!1,["boolean"]),useJwt:Uo(!0,["boolean"]),useLocalstorage:Uo(!0,["boolean"]),storageKey:Uo("storageKey",["string"]),authKey:Uo("authKey",["string"]),contractExpired:Uo(0,["number"]),keepContract:Uo(!0,["boolean"]),exposeContract:Uo(!1,["boolean"]),showContractDesc:Uo(!1,["boolean"]),contractKey:Uo(!1,["boolean"]),contractKeyName:Uo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Uo(!1,["boolean"]),timeout:Uo(5e3,["number"]),returnInstance:Uo(!1,["boolean"]),allowReturnRawToken:Uo(!1,["boolean"]),debugOn:Uo(!1,["boolean"])};function iu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Do(t,ou,nu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return ru(r,n,e,t)}))}))}var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));function lu(t,e){var r;return iu((r=e.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}return function(t){return void 0===t&&(t={}),lu(o,t)}})); //# sourceMappingURL=jsonql-client.umd.js.map diff --git a/packages/http-client/dist/jsonql-client.umd.js.map b/packages/http-client/dist/jsonql-client.umd.js.map index 89bd7547..afdcdd37 100644 --- a/packages/http-client/dist/jsonql-client.umd.js.map +++ b/packages/http-client/dist/jsonql-client.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"jsonql-client.umd.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i { } /** - * Here just generate the methods calls - * @param {object} jsonqlInstance what it said - * @param {object} ee event emitter + * Break up the different type each - create query methods + * @param {object} obj to hold all the objects + * @param {object} jsonqlInstance jsonql class instance + * @param {object} ee eventEmitter * @param {object} config configuration - * @param {object} contract the map - * @return {object} with mapped methods + * @param {object} contract json + * @return {object} modified output for next op */ -export default function methodsGenerator(jsonqlInstance, ee, config, contract) { - let obj = {query: {}, mutation: {}} - // process the query first +const createQueryMethods = (obj, jsonqlInstance, ee, config, contract) => { + let query = {} for (let queryFn in contract.query) { // to keep it clean we use a param to id the auth method // const fn = (_contract.query[queryFn].auth === true) ? 'auth' : queryFn; // generate the query method - obj.query[queryFn] = (...args) => { + query = injectToFn(query, queryFn, function queryFnHandler(...args) { + // obj.query[queryFn] = (...args) => { const params = contract.query[queryFn].params; const _args = params.map((param, i) => args[i]) // debug('query', queryFn, _params); @@ -59,13 +61,29 @@ export default function methodsGenerator(jsonqlInstance, ee, config, contract) { .apply(jsonqlInstance, [queryFn, _args, header]) ) .catch(finalCatch) - } + }) } + obj.query = query; + return { obj, jsonqlInstance, ee, config, contract } +} + +/** + * create mutation methods + * @param {object} obj to hold all the objects + * @param {object} jsonqlInstance jsonql class instance + * @param {object} ee eventEmitter + * @param {object} config configuration + * @param {object} contract json + * @return {object} modified output for next op + */ +const createMutationMethods = (obj, jsonqlInstance, ee, config, contract) => { + let mutation = {} // process the mutation, the reason the mutation has a fixed number of parameters // there is only the payload, and conditions parameters // plus a header at the end for (let mutationFn in contract.mutation) { - obj.mutation[mutationFn] = (payload, conditions, header = {}) => { + mutation = injectToFn(mutation, mutationFn, function mutationFnHandler(payload, conditions, header = {}) { + //obj.mutation[mutationFn] = (payload, conditions, header = {}) => { const args = [payload, conditions]; const params = contract.mutation[mutationFn].params; return validateAsync(args, params) @@ -74,15 +92,28 @@ export default function methodsGenerator(jsonqlInstance, ee, config, contract) { .apply(jsonqlInstance, [mutationFn, payload, conditions, header]) ) .catch(finalCatch) - } + }) } - // there is only one call issuer we want here + obj.mutation = mutation; + return { obj, jsonqlInstance, ee, config, contract } +} + +/** + * create auth methods + * @param {object} obj to hold all the objects + * @param {object} jsonqlInstance jsonql class instance + * @param {object} ee eventEmitter + * @param {object} config configuration + * @param {object} contract json + * @return {object} modified output for next op + */ +const createAuthMethods = (obj, jsonqlInstance, ee, config, contract) => { if (config.enableAuth && contract.auth) { - obj.auth = {} // v1.3.1 add back the auth prop name + let auth = {} // v1.3.1 add back the auth prop name in contract const { loginHandlerName, logoutHandlerName } = config; if (contract.auth[loginHandlerName]) { // changing to the name the config specify - obj.auth[loginHandlerName] = (...args) => { + auth[loginHandlerName] = function loginHandlerFn(...args) { const fn = authMethodGenerator(jsonqlInstance, loginHandlerName, config, contract) return fn.apply(null, args) .then(jsonqlInstance.postLoginAction) @@ -93,7 +124,7 @@ export default function methodsGenerator(jsonqlInstance, ee, config, contract) { } } if (contract.auth[logoutHandlerName]) { - obj.auth[logoutHandlerName] = (...args) => { + auth[logoutHandlerName] = function logoutHandlerFn(...args) { const fn = authMethodGenerator(jsonqlInstance, logoutHandlerName, config, contract) return fn.apply(null, args) .then(jsonqlInstance.postLogoutAction) @@ -103,11 +134,26 @@ export default function methodsGenerator(jsonqlInstance, ee, config, contract) { }) } } else { - obj.auth[logoutHandlerName] = () => { + auth[logoutHandlerName] = function logoutHandlerFn() { jsonqlInstance.postLogoutAction(KEY_WORD) ee.$trigger(LOGOUT_NAME, KEY_WORD) } } + obj.auth = auth; } return obj; } + +/** + * Here just generate the methods calls + * @param {object} jsonqlInstance what it said + * @param {object} ee event emitter + * @param {object} config configuration + * @param {object} contract the map + * @return {object} with mapped methods + */ +export default function methodsGenerator(jsonqlInstance, ee, config, contract) { + let obj = {} + const executor = chainFns(createQueryMethods, createMutationMethods, createAuthMethods) + return executor(obj, jsonqlInstance, ee, config, contract) +} diff --git a/packages/http-client/static.js b/packages/http-client/static.js index ced05e4a..4c1fa037 100644 --- a/packages/http-client/static.js +++ b/packages/http-client/static.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="continue",o="type",i="optional",a="enumv",u="args",c="checker",s="alias",f="login",l="logout",p={desc:"y"},h="No message",d="onResult",v="onError";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&P(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&P(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||P(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&P(t)==_t}var jt=Object.prototype,St=jt.hasOwnProperty,Ot=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&St.call(t,"callee")&&!Ot.call(t,"callee")};var At="object"==typeof exports&&exports&&!exports.nodeType&&exports,kt=At&&"object"==typeof module&&module&&!module.nodeType&&module,Tt=kt&&kt.exports===At?m.Buffer:void 0,xt=(Tt?Tt.isBuffer:void 0)||function(){return!1},qt=9007199254740991,Pt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?qt:e)&&("number"==r||"symbol"!=r&&Pt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Ht=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[P(t)]},Dt=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&xt(t),i=!r&&!n&&!o&&Ht(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Se="__lodash_hash_undefined__",Oe=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var Ae="__lodash_hash_undefined__";function ke(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=On)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Sn);function Tn(t,e){return kn(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Qn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Xn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Qn(t))?!Xn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||h,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||h,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var So=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Qn(t)):return!Xn(e,r);default:return!Yn(t)(e.arg)}},Oo=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?Oo(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return So(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return So(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Ao=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ko=function(t){return!In(t)};function To(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return Tr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function xo(t,e){return Pn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Dn]&&ko(t[r])?qn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Hn]=e[Hn],o[Dn]=e[Dn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function qo(t,e){var r=function(t,e){var r=To(t,e);return{pristineValues:Pn(Fn(e,(function(t,e){return Ao(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!Ao(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[xo(n,r.checkAgainstAppProps),o]}var Po=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Hn]=Po(t[Hn]),r[Dn]=t[Dn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}function zo(t,e,r,n){return void 0===t&&(t={}),qn(function(t,e){var r=t[0],n=t[1],o=Pn(r,No(e));return qn(o,n)}(qo(t,e),n),r)}function Fo(t,e,r,n,f,l){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[u]=t,p[o]=e,!0===r&&(p[i]=!0),Wn(n)&&(p[a]=n),te(f)&&(p[c]=f),ct(l)&&(p[s]=l),p}var Io=Jn,Ro=Wn,Jo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Mo=function(t,e,r){void 0===r&&(r={});var n=r[i],o=r[a],u=r[c],f=r[s];return Fo.apply(null,[t,e,n,o,u,f])},Uo=function(t){return function(e,r,n){return void 0===n&&(n={}),zo(e,r,n,t)}}(Eo),Ho=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}};var Do=Array.isArray,Lo=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Bo="object"==typeof Lo&&Lo&&Lo.Object===Object&&Lo,Ko="object"==typeof self&&self&&self.Object===Object&&self,Vo=(Bo||Ko||Function("return this")()).Symbol,Go=Object.prototype,Yo=Go.hasOwnProperty,Wo=Go.toString,Qo=Vo?Vo.toStringTag:void 0;var Xo=Object.prototype.toString;var Zo="[object Null]",ti="[object Undefined]",ei=Vo?Vo.toStringTag:void 0;function ri(t){return null==t?void 0===t?ti:Zo:ei&&ei in Object(t)?function(t){var e=Yo.call(t,Qo),r=t[Qo];try{t[Qo]=void 0;var n=!0}catch(t){}var o=Wo.call(t);return n&&(e?t[Qo]=r:delete t[Qo]),o}(t):function(t){return Xo.call(t)}(t)}var ni=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function oi(t){return null!=t&&"object"==typeof t}var ii="[object Object]",ai=Function.prototype,ui=Object.prototype,ci=ai.toString,si=ui.hasOwnProperty,fi=ci.call(Object);var li=Vo?Vo.prototype:void 0,pi=(li&&li.toString,"[object String]");function hi(t){return"string"==typeof t||!Do(t)&&oi(t)&&ri(t)==pi}var di=function(t,e){return!!t.filter((function(t){return t===e})).length},vi=function(t,e){var r=Object.keys(t);return di(r,e)},gi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},yi=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},bi="query",mi="mutation",_i="socket",wi="payload",ji="condition",Si=function(){try{if(window||document)return!0}catch(t){}return!1},Oi=function(){try{if(!Si()&&Lo)return!0}catch(t){}return!1};var Ei=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Si()?"browser":Oi()?"node":"unknown"},e}(Error));var Ai=function(t){var e;return(e={}).args=t,e};var ki=function(t){return vi(t,"data")&&!vi(t,"error")?t.data:t},Ti=function(t){return function(t){if(!oi(t)||ri(t)!=ii)return!1;var e=ni(t);if(null===e)return!0;var r=si.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ci.call(r)==fi}(t)&&(vi(t,bi)||vi(t,mi)||vi(t,_i))},xi=function(t,e){return void 0===e&&(e={}),Ti(e)?Promise.resolve(e):t.getContract()},qi=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(gi(e,r,d),o),t.$only(gi(e,r,v),i),t.$trigger(e,{resolverName:r,args:n})}))}},Pi=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Ci(t,e,r,o){var i=function(t,e,r,o){var i={query:{},mutation:{}},a=function(e){i.query[e]=function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Jo(a,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}};for(var u in o.query)a(u);var c=function(e){i.mutation[e]=function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[e].params;return Jo(a,u).then((function(){return t.mutation.apply(t,[e,r,n,i])})).catch(wo)}};for(var s in o.mutation)c(s);if(r.enableAuth&&o.auth){i.auth={};var p=r.loginHandlerName,h=r.logoutHandlerName;o.auth[p]&&(i.auth[p]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ho(t,p,r,o);return a.apply(null,n).then(t.postLoginAction).then((function(t){return e.$trigger(f,t),t}))}),o.auth[h]?i.auth[h]=function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var a=Ho(t,h,r,o);return a.apply(null,n).then(t.postLogoutAction).then((function(t){return e.$trigger(l,t),t}))}:i.auth[h]=function(){t.postLogoutAction(n),e.$trigger(l,n)}}return i}(t,e,r,o);Pi(e,o,r);var a=function(t){e.$only(t,(function(r){var n=r.resolverName,o=r.args;i[t][n]?Reflect.apply(i[t][n],null,o).then((function(r){e.$trigger(gi(t,n,d),r)})).catch((function(r){e.$trigger(gi(t,n,v),r)})):console.error(n+" is not defined in the contract!")}))};for(var u in i)a(u);setTimeout((function(){e.$suspend=!1}),1)}var $i=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Ci(t,n,e,r)}));var o={query:qi(n,"query"),mutation:qi(n,"mutation"),auth:qi(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Ni="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var zi=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=na().key(e);t(oa(r),r)}},remove:function(t){return na().removeItem(t)},clearAll:function(){return na().clear()}};function na(){return ea.localStorage}function oa(t){return na().getItem(t)}var ia=Ji.trim,aa={name:"cookieStorage",read:function(t){if(!t||!fa(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(ua.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;ua.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:ca,remove:sa,clearAll:function(){ca((function(t,e){sa(e)}))}},ua=Ji.Global.document;function ca(t){for(var e=ua.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ia(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function sa(t){t&&fa(t)&&(ua.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function fa(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(ua.cookie)}var la=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var pa="expire_mixin",ha=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+pa);return{set:function(e,r,n,o){this.hasNamespace(pa)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(pa)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(pa)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var wa=[ra,aa],ja=[la,ha,ba,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=_a.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=_a.compress(this._serialize(r));t(e,n)}}}],Sa=Xi.createStore(wa,ja),Oa=Ji.Global;function Ea(){return Oa.sessionStorage}function Aa(t){return Ea().getItem(t)}var ka=[{name:"sessionStorage",read:Aa,write:function(t,e){return Ea().setItem(t,e)},each:function(t){for(var e=Ea().length-1;e>=0;e--){var r=Ea().key(e);t(Aa(r),r)}},remove:function(t){return Ea().removeItem(t)},clearAll:function(){return Ea().clear()}},aa],Ta=[la,ha],xa=Xi.createStore(ka,Ta),qa=Sa,Pa=xa,Ca="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function $a(t){this.message=t}$a.prototype=new Error,$a.prototype.name="InvalidCharacterError";var Na="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new $a("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ca.indexOf(n);return a};var za=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Na(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Na(e)}};function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidTokenError";var Ia=function(t,e){if("string"!=typeof t)throw new Fa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(za(t.split(".")[r]))}catch(t){throw new Fa("Invalid token specified: "+t.message)}},Ra=Fa;Ia.InvalidTokenError=Ra;var Ja,Ma,Ua,Ha,Da,La,Ba,Ka,Va,Ga=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ya(t){if(Io(t))return function(t){var e=t.iat||Ga(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(Ia(t));throw new vo("Token must be a string!")}Mo("HS256",["string"]),Mo(!1,["boolean","number","string"],((Ja={})[s]="exp",Ja[i]=!0,Ja)),Mo(!1,["boolean","number","string"],((Ma={})[s]="nbf",Ma[i]=!0,Ma)),Mo(!1,["boolean","string"],((Ua={})[s]="iss",Ua[i]=!0,Ua)),Mo(!1,["boolean","string"],((Ha={})[s]="sub",Ha[i]=!0,Ha)),Mo(!1,["boolean","string"],((Da={})[s]="iss",Da[i]=!0,Da)),Mo(!1,["boolean"],((La={})[i]=!0,La)),Mo(!1,["boolean","string"],((Ba={})[i]=!0,Ba)),Mo(!1,["boolean","string"],((Ka={})[i]=!0,Ka)),Mo(!1,["boolean"],((Va={})[i]=!0,Va));var Wa=r[0],Qa=r[1],Xa=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Za={headers:{configurable:!0}};Za.headers.set=function(t){this.extraHeader=t},Xa.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=qn({},{_cb:yi()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,qn({},{method:Wa,params:o},e))},Xa.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Xa.prototype.processJsonp=function(t){return ki(t)},Xa.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Io(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ki(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Xa.prototype.getHeaders=function(){return this.opts.enableAuth?qn({},e,this.getAuthHeader(),this.extraHeader):qn({},e,this.extraHeader)},Xa.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Xa.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=qn({},this.extraParams,p)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Xa.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),hi(t)&&Do(e)){var o=Ai(e);return!0===r?o:((n={})[t]=o,n)}throw new Ei("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Xa.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[wi]=e,i[ji]=r,!0===n)return i;if(hi(t))return(o={})[t]=i,o;throw new Ei("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Qa}).then(_o)},Object.defineProperties(Xa.prototype,Za);var tu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Ro(t)&&t.length>=2&&Reflect.apply(qa.set,qa,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=qa.get("endpoint")||[];di(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=qa.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!di(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=yi();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(qa.set,qa,e)},r.jsonqlEndpoint.get=function(){var t=qa.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(qa.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Pa.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ya)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Ti(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Ti(this.opts.contract)?this.opts.contract:qa.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Xa))),eu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ru={hostname:Mo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Mo("jsonql",["string"]),loginHandlerName:Mo(f,["string"]),logoutHandlerName:Mo(l,["string"]),enableJsonp:Mo(!1,["boolean"]),enableAuth:Mo(!1,["boolean"]),useJwt:Mo(!0,["boolean"]),useLocalstorage:Mo(!0,["boolean"]),storageKey:Mo("storageKey",["string"]),authKey:Mo("authKey",["string"]),contractExpired:Mo(0,["number"]),keepContract:Mo(!0,["boolean"]),exposeContract:Mo(!1,["boolean"]),showContractDesc:Mo(!1,["boolean"]),contractKey:Mo(!1,["boolean"]),contractKeyName:Mo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Mo(!1,["boolean"]),timeout:Mo(5e3,["number"]),returnInstance:Mo(!1,["boolean"]),allowReturnRawToken:Mo(!1,["boolean"]),debugOn:Mo(!1,["boolean"])};var nu=new WeakMap,ou=new WeakMap;var iu=function(){this.__suspend__=null,this.queueStore=new Set},au={$suspend:{configurable:!0},$queues:{configurable:!0}};au.$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)},iu.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__},au.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},iu.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(iu.prototype,au);var uu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){nu.set(this,t)},r.normalStore.get=function(){return nu.get(this)},r.lazyStore.set=function(t){ou.set(this,t)},r.lazyStore.get=function(){return ou.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}(iu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Uo(t,ru,eu)}(e),i=new tu(o,t),a=xi(i,n),u=(r=o.debugOn,new uu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=$i(i,o,a,u);return c.eventEmitter=u,c}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message",l="onResult",p="onError",h=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),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={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),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={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),g=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),y=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),b="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},m=function(){try{if(window||document)return!0}catch(t){}return!1},_=function(){try{if(!m()&&b)return!0}catch(t){}return!1};var w=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return m()?"browser":_()?"node":"unknown"},e}(Error),j=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,Error.captureStackTrace&&Error.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}(w),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},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"JsonqlTypeError"},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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},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,Error.captureStackTrace&&Error.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}(w),k=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,Error.captureStackTrace&&Error.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}(w),T=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),x=Object.freeze({__proto__:null,Jsonql406Error:h,Jsonql500Error:d,JsonqlAuthorisationError:v,JsonqlContractAuthError:g,JsonqlResolverAppError:y,JsonqlResolverNotFoundError:j,JsonqlEnumError:O,JsonqlTypeError:S,JsonqlCheckerError:E,JsonqlValidationError:A,JsonqlError:k,JsonqlServerError:T}),q=k,P=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function C(t){if(P(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&x[o])throw new x[r](i,a);throw new q(i,a)}return t}function $(t){if(Array.isArray(t))throw new A("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof h:throw new h(e,r);case t instanceof d:throw new d(e,r);case t instanceof v:throw new v(e,r);case t instanceof g:throw new g(e,r);case t instanceof y:throw new y(e,r);case t instanceof j:throw new j(e,r);case t instanceof O:throw new O(e,r);case t instanceof S:throw new S(e,r);case t instanceof E:throw new E(e,r);case t instanceof A:throw new A(e,r);case t instanceof T:throw new T(e,r);default:throw new k(e,r)}}var N="object"==typeof b&&b&&b.Object===Object&&b,z="object"==typeof self&&self&&self.Object===Object&&self,F=N||z||Function("return this")(),I=F.Symbol;function R(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&ot(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function _t(t){return void 0===t}var wt="[object Boolean]";var jt="[object Number]";function Ot(t){return function(t){return"number"==typeof t||Y(t)&&G(t)==jt}(t)&&t!=+t}var St="[object String]";function Et(t){return"string"==typeof t||!J(t)&&Y(t)&&G(t)==St}function At(t,e){return function(r){return t(e(r))}}var kt=At(Object.getPrototypeOf,Object),Tt="[object Object]",xt=Function.prototype,qt=Object.prototype,Pt=xt.toString,Ct=qt.hasOwnProperty,$t=Pt.call(Object);function Nt(t){if(!Y(t)||G(t)!=Tt)return!1;var e=kt(t);if(null===e)return!0;var r=Ct.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Pt.call(r)==$t}var zt,Ft=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[zt?a:++n];if(!1===e(o[u],u,o))break}return t};var It="[object Arguments]";function Rt(t){return Y(t)&&G(t)==It}var Jt=Object.prototype,Mt=Jt.hasOwnProperty,Ut=Jt.propertyIsEnumerable,Dt=Rt(function(){return arguments}())?Rt:function(t){return Y(t)&&Mt.call(t,"callee")&&!Ut.call(t,"callee")};var Ht="object"==typeof exports&&exports&&!exports.nodeType&&exports,Lt=Ht&&"object"==typeof module&&module&&!module.nodeType&&module,Bt=Lt&&Lt.exports===Ht?F.Buffer:void 0,Kt=(Bt?Bt.isBuffer:void 0)||function(){return!1},Vt=9007199254740991,Gt=/^(?:0|[1-9]\d*)$/;function Yt(t,e){var r=typeof t;return!!(e=null==e?Vt:e)&&("number"==r||"symbol"!=r&&Gt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Wt}var Xt={};Xt["[object Float32Array]"]=Xt["[object Float64Array]"]=Xt["[object Int8Array]"]=Xt["[object Int16Array]"]=Xt["[object Int32Array]"]=Xt["[object Uint8Array]"]=Xt["[object Uint8ClampedArray]"]=Xt["[object Uint16Array]"]=Xt["[object Uint32Array]"]=!0,Xt["[object Arguments]"]=Xt["[object Array]"]=Xt["[object ArrayBuffer]"]=Xt["[object Boolean]"]=Xt["[object DataView]"]=Xt["[object Date]"]=Xt["[object Error]"]=Xt["[object Function]"]=Xt["[object Map]"]=Xt["[object Number]"]=Xt["[object Object]"]=Xt["[object RegExp]"]=Xt["[object Set]"]=Xt["[object String]"]=Xt["[object WeakMap]"]=!1;var Zt,te="object"==typeof exports&&exports&&!exports.nodeType&&exports,ee=te&&"object"==typeof module&&module&&!module.nodeType&&module,re=ee&&ee.exports===te&&N.process,ne=function(){try{var t=ee&&ee.require&&ee.require("util").types;return t||re&&re.binding&&re.binding("util")}catch(t){}}(),oe=ne&&ne.isTypedArray,ie=oe?(Zt=oe,function(t){return Zt(t)}):function(t){return Y(t)&&Qt(t.length)&&!!Xt[G(t)]},ae=Object.prototype.hasOwnProperty;function ue(t,e){var r=J(t),n=!r&&Dt(t),o=!r&&!n&&Kt(t),i=!r&&!n&&!o&&ie(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Se.prototype.set=function(t,e){var r=this.__data__,n=je(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Ee,Ae=F["__core-js_shared__"],ke=(Ee=/[^.]+$/.exec(Ae&&Ae.keys&&Ae.keys.IE_PROTO||""))?"Symbol(src)_1."+Ee:"";var Te=Function.prototype.toString;function xe(t){if(null!=t){try{return Te.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var qe=/^\[object .+?Constructor\]$/,Pe=Function.prototype,Ce=Object.prototype,$e=Pe.toString,Ne=Ce.hasOwnProperty,ze=RegExp("^"+$e.call(Ne).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Fe(t){return!(!pe(t)||function(t){return!!ke&&ke in t}(t))&&(ye(t)?ze:qe).test(xe(t))}function Ie(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Fe(r)?r:void 0}var Re=Ie(F,"Map"),Je=Ie(Object,"create");var Me="__lodash_hash_undefined__",Ue=Object.prototype.hasOwnProperty;var De=Object.prototype.hasOwnProperty;var He="__lodash_hash_undefined__";function Le(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ze?new We:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Un)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Mn);function Bn(t,e){return Ln(function(t,e,r){return e=Jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!pe(r))return!1;var n=typeof e;return!!("number"==n?be(r)&&Yt(e,r.length):"string"==n&&e in r)&&we(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},go=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!po(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ho(r,t)})).length},yo=function(t,e){if(void 0===e&&(e=null),Nt(t)){if(!e)return!0;if(ho(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!_t(r)||(!1!==(e=vo(t))?!go({arg:r},e):!po(t)(r))})).length)})).length}return!1},bo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),yo.apply(null,n)};function mo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var _o=function(t,e){var r;switch(!0){case"object"===t:return!bo(e);case"array"===t:return!ho(e.arg);case!1!==(r=vo(t)):return!go(e,r);default:return!po(t)(e.arg)}},wo=function(t,e){return _t(t)?!0!==e.optional||_t(e.defaultvalue)?null:e.defaultvalue:t},jo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ho(e))throw new k("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ho(t))throw new k("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 mo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:mo(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:mo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?wo(t,a):t,index:r,param:a,optional:i}}));default:throw mo(5),new k("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!to(e)&&!(r.type.length>r.type.filter((function(e){return _o(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return _o(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},So=function(t){return!to(t)};function Eo(t,e){var r=Zn(e,(function(t,e){return!t[fo]}));return Br(r,{})?t:function(t,e){var r={};return e=bn(e),_e(t,(function(t,n,o){_n(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,bn((function(t){return t.alias===e})),_e)||e}))}function Ao(t,e){return Gn(e,(function(e,r){var n,o;return _t(t[r])||!0===e[ao]&&So(t[r])?Vn({},e,((n={})[lo]=!0,n)):((o={})[co]=t[r],o[io]=e[io],o[ao]=e[ao]||!1,o[uo]=e[uo]||!1,o[so]=e[so]||!1,o)}))}function ko(t,e){var r=function(t,e){var r=Eo(t,e);return{pristineValues:Gn(Zn(e,(function(t,e){return Oo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Zn(e,(function(t,e){return!Oo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ao(n,r.checkAgainstAppProps),o]}var To=function(t){return ho(t)?t:[t]};var xo=function(t,e){return!ho(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},qo=function(t,e){try{return!!ye(e)&&e.apply(null,[t])}catch(t){return!1}};function Po(t){return function(e,r){if(e[lo])return e[co];var n=function(t,e){var r,n=[[t[co]],[(r={},r[io]=To(t[io]),r[ao]=t[ao],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw mo("runValidationAction",r,e),new S(r,n);if(!1!==e[uo]&&!xo(e[co],e[uo]))throw mo(uo,e[uo]),new O(r);if(!1!==e[so]&&!qo(e[co],e[so]))throw mo(so,e[so]),new E(r);return e[co]}}function Co(t,e,r,n){return void 0===t&&(t={}),Vn(function(t,e){var r=t[0],n=t[1],o=Gn(r,Po(e));return Vn(o,n)}(ko(t,e),n),r)}function $o(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),ho(s)&&(p[i]=s),ye(f)&&(p[u]=f),Et(l)&&(p[c]=l),p}var No=ro,zo=ho,Fo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=jo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Io=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return $o.apply(null,[t,e,n,a,s,f])},Ro=function(t){return function(e,r,n){return void 0===n&&(n={}),Co(e,r,n,t)}}(jo),Jo=function(t){return J(t)?t:[t]},Mo=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,Jo(t))}),Reflect.apply(t,null,r))}};function Uo(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Do=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch($)}},Ho=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch($)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Lo=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Fo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch($)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Bo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Ko=Array.isArray,Vo=void 0!==b?b:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Go="object"==typeof Vo&&Vo&&Vo.Object===Object&&Vo,Yo="object"==typeof self&&self&&self.Object===Object&&self,Wo=(Go||Yo||Function("return this")()).Symbol,Qo=Object.prototype,Xo=Qo.hasOwnProperty,Zo=Qo.toString,ti=Wo?Wo.toStringTag:void 0;var ei=Object.prototype.toString;var ri="[object Null]",ni="[object Undefined]",oi=Wo?Wo.toStringTag:void 0;function ii(t){return null==t?void 0===t?ni:ri:oi&&oi in Object(t)?function(t){var e=Xo.call(t,ti),r=t[ti];try{t[ti]=void 0;var n=!0}catch(t){}var o=Zo.call(t);return n&&(e?t[ti]=r:delete t[ti]),o}(t):function(t){return ei.call(t)}(t)}var ai=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ui(t){return null!=t&&"object"==typeof t}var ci="[object Object]",si=Function.prototype,fi=Object.prototype,li=si.toString,pi=fi.hasOwnProperty,hi=li.call(Object);var di=Wo?Wo.prototype:void 0,vi=(di&&di.toString,"[object String]");function gi(t){return"string"==typeof t||!Ko(t)&&ui(t)&&ii(t)==vi}var yi=function(t,e){return!!t.filter((function(t){return t===e})).length},bi=function(t,e){var r=Object.keys(t);return yi(r,e)},mi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},_i=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},wi="query",ji="mutation",Oi="socket",Si="payload",Ei="condition",Ai=function(){try{if(window||document)return!0}catch(t){}return!1},ki=function(){try{if(!Ai()&&Vo)return!0}catch(t){}return!1};var Ti=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Ai()?"browser":ki()?"node":"unknown"},e}(Error));var xi=function(t){var e;return(e={}).args=t,e};var qi=function(t){return bi(t,"data")&&!bi(t,"error")?t.data:t},Pi=function(t){return function(t){if(!ui(t)||ii(t)!=ci)return!1;var e=ai(t);if(null===e)return!0;var r=pi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&li.call(r)==hi}(t)&&(bi(t,wi)||bi(t,ji)||bi(t,Oi))},Ci=function(t,e){return void 0===e&&(e={}),Pi(e)?Promise.resolve(e):t.getContract()},$i=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(mi(e,r,l),o),t.$only(mi(e,r,p),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ni=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function zi(t,e,r,n){var o=function(t,e,r,n){return Mo(Ho,Lo,Bo)({},t,e,r,n)}(t,e,r,n);Ni(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(mi(t,n,l),r)})).catch((function(r){e.$trigger(mi(t,n,p),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Fi=function(t,e,r,n){n.$suspend=!0,r.then((function(r){zi(t,n,e,r)}));var o={query:$i(n,"query"),mutation:$i(n,"mutation"),auth:$i(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Ii="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Ri=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=aa().key(e);t(ua(r),r)}},remove:function(t){return aa().removeItem(t)},clearAll:function(){return aa().clear()}};function aa(){return oa.localStorage}function ua(t){return aa().getItem(t)}var ca=Di.trim,sa={name:"cookieStorage",read:function(t){if(!t||!ha(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(fa.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;fa.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:la,remove:pa,clearAll:function(){la((function(t,e){pa(e)}))}},fa=Di.Global.document;function la(t){for(var e=fa.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ca(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function pa(t){t&&ha(t)&&(fa.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ha(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(fa.cookie)}var da=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var va="expire_mixin",ga=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+va);return{set:function(e,r,n,o){this.hasNamespace(va)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(va)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(va)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Sa=[ia,sa],Ea=[da,ga,wa,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Oa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Oa.compress(this._serialize(r));t(e,n)}}}],Aa=ea.createStore(Sa,Ea),ka=Di.Global;function Ta(){return ka.sessionStorage}function xa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:xa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(xa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},sa],Pa=[da,ga],Ca=ea.createStore(qa,Pa),$a=Aa,Na=Ca,za="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Fa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=za.indexOf(n);return a};var Ra=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ja(t){this.message=t}Ja.prototype=new Error,Ja.prototype.name="InvalidTokenError";var Ma=function(t,e){if("string"!=typeof t)throw new Ja("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ra(t.split(".")[r]))}catch(t){throw new Ja("Invalid token specified: "+t.message)}},Ua=Ja;Ma.InvalidTokenError=Ua;var Da,Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Xa(t){if(No(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new k("Token has expired on "+r,t)}return t}(Ma(t));throw new k("Token must be a string!")}Io("HS256",["string"]),Io(!1,["boolean","number","string"],((Da={})[c]="exp",Da[o]=!0,Da)),Io(!1,["boolean","number","string"],((Ha={})[c]="nbf",Ha[o]=!0,Ha)),Io(!1,["boolean","string"],((La={})[c]="iss",La[o]=!0,La)),Io(!1,["boolean","string"],((Ba={})[c]="sub",Ba[o]=!0,Ba)),Io(!1,["boolean","string"],((Ka={})[c]="iss",Ka[o]=!0,Ka)),Io(!1,["boolean"],((Va={})[o]=!0,Va)),Io(!1,["boolean","string"],((Ga={})[o]=!0,Ga)),Io(!1,["boolean","string"],((Ya={})[o]=!0,Ya)),Io(!1,["boolean"],((Wa={})[o]=!0,Wa));var Za=r[0],tu=r[1],eu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},ru={headers:{configurable:!0}};ru.headers.set=function(t){this.extraHeader=t},eu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Vn({},{_cb:_i()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Vn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Vn({},{method:Za,params:o},e))},eu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},eu.prototype.processJsonp=function(t){return qi(t)},eu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=No(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):qi(o)}),(function(t){throw e.cleanUp(),console.error(t),new T("Server side error",t)}))},eu.prototype.getHeaders=function(){return this.opts.enableAuth?Vn({},e,this.getAuthHeader(),this.extraHeader):Vn({},e,this.extraHeader)},eu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},eu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Vn({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(C).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},eu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),gi(t)&&Ko(e)){var o=xi(e);return!0===r?o:((n={})[t]=o,n)}throw new Ti("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(C)},eu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Si]=e,i[Ei]=r,!0===n)return i;if(gi(t))return(o={})[t]=i,o;throw new Ti("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:tu}).then(C)},Object.defineProperties(eu.prototype,ru);var nu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply($a.set,$a,t),new A("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=$a.get("endpoint")||[];yi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=$a.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!yi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=_i();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply($a.set,$a,e)},r.jsonqlEndpoint.get=function(){var t=$a.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return($a.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Na.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Xa)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Pi(t))throw new A("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Pi(this.opts.contract)?this.opts.contract:$a.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(eu))),ou={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},iu={hostname:Io([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Io("jsonql",["string"]),loginHandlerName:Io("login",["string"]),logoutHandlerName:Io("logout",["string"]),enableJsonp:Io(!1,["boolean"]),enableAuth:Io(!1,["boolean"]),useJwt:Io(!0,["boolean"]),useLocalstorage:Io(!0,["boolean"]),storageKey:Io("storageKey",["string"]),authKey:Io("authKey",["string"]),contractExpired:Io(0,["number"]),keepContract:Io(!0,["boolean"]),exposeContract:Io(!1,["boolean"]),showContractDesc:Io(!1,["boolean"]),contractKey:Io(!1,["boolean"]),contractKeyName:Io("X-JSONQL-CV-KEY",["string"]),enableTimeout:Io(!1,["boolean"]),timeout:Io(5e3,["number"]),returnInstance:Io(!1,["boolean"]),allowReturnRawToken:Io(!1,["boolean"]),debugOn:Io(!1,["boolean"])};var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ro(t,iu,ou)}(e),i=new nu(o,t),a=Ci(i,n),u=(r=o.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Fi(i,o,a,u);return c.eventEmitter=u,c}})); //# sourceMappingURL=static.js.map diff --git a/packages/http-client/static.js.map b/packages/http-client/static.js.map index 71d737cf..ce2e395c 100644 --- a/packages/http-client/static.js.map +++ b/packages/http-client/static.js.map @@ -1 +1 @@ -{"version":3,"file":"static.js","sources":["node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i Date: Sun, 27 Oct 2019 23:44:22 +0800 Subject: [PATCH 39/44] need to rewrote part of the build script to make it easier to debug in browser --- packages/http-client/core.js | 2 +- packages/http-client/dist/jsonql-client.static.js | 2 +- packages/http-client/dist/jsonql-client.umd.js | 2 +- packages/http-client/package.json | 2 +- packages/http-client/static.js | 2 +- packages/http-client/tests/qunit/run-qunit-setup.js | 5 +++-- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/http-client/core.js b/packages/http-client/core.js index 6c0aceaf..5fa43647 100644 --- a/packages/http-client/core.js +++ b/packages/http-client/core.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message";var l="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},p="object"==typeof l&&l&&l.Object===Object&&l,h="object"==typeof self&&self&&self.Object===Object&&self,d=p||h||Function("return this")(),v=d.Symbol;function g(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&F(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function X(t){return void 0===t}var Z="[object Boolean]";var tt="[object Number]";function et(t){return function(t){return"number"==typeof t||k(t)&&A(t)==tt}(t)&&t!=+t}var rt="[object String]";function nt(t){return"string"==typeof t||!y(t)&&k(t)&&A(t)==rt}function ot(t,e){return function(r){return t(e(r))}}var it=ot(Object.getPrototypeOf,Object),at="[object Object]",ut=Function.prototype,ct=Object.prototype,st=ut.toString,ft=ct.hasOwnProperty,lt=st.call(Object);function pt(t){if(!k(t)||A(t)!=at)return!1;var e=it(t);if(null===e)return!0;var r=ft.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&st.call(r)==lt}var ht,dt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[ht?a:++n];if(!1===e(o[u],u,o))break}return t};var vt="[object Arguments]";function gt(t){return k(t)&&A(t)==vt}var yt=Object.prototype,bt=yt.hasOwnProperty,mt=yt.propertyIsEnumerable,_t=gt(function(){return arguments}())?gt:function(t){return k(t)&&bt.call(t,"callee")&&!mt.call(t,"callee")};var wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,jt=wt&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=jt&&jt.exports===wt?d.Buffer:void 0,St=(Ot?Ot.isBuffer:void 0)||function(){return!1},Et=9007199254740991,At=/^(?:0|[1-9]\d*)$/;function kt(t,e){var r=typeof t;return!!(e=null==e?Et:e)&&("number"==r||"symbol"!=r&&At.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Tt}var qt={};qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Arguments]"]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object Boolean]"]=qt["[object DataView]"]=qt["[object Date]"]=qt["[object Error]"]=qt["[object Function]"]=qt["[object Map]"]=qt["[object Number]"]=qt["[object Object]"]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object WeakMap]"]=!1;var Pt,Ct="object"==typeof exports&&exports&&!exports.nodeType&&exports,$t=Ct&&"object"==typeof module&&module&&!module.nodeType&&module,zt=$t&&$t.exports===Ct&&p.process,Nt=function(){try{var t=$t&&$t.require&&$t.require("util").types;return t||zt&&zt.binding&&zt.binding("util")}catch(t){}}(),Ft=Nt&&Nt.isTypedArray,It=Ft?(Pt=Ft,function(t){return Pt(t)}):function(t){return k(t)&&xt(t.length)&&!!qt[A(t)]},Rt=Object.prototype.hasOwnProperty;function Jt(t,e){var r=y(t),n=!r&&_t(t),o=!r&&!n&&St(t),i=!r&&!n&&!o&&It(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ne,oe=d["__core-js_shared__"],ie=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ae=Function.prototype.toString;function ue(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,se=Function.prototype,fe=Object.prototype,le=se.toString,pe=fe.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(t){return!(!Lt(t)||function(t){return!!ie&&ie in t}(t))&&(Yt(t)?he:ce).test(ue(t))}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return de(r)?r:void 0}var ge=ve(d,"Map"),ye=ve(Object,"create");var be="__lodash_hash_undefined__",me=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Pe?new Te:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=mn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(bn);function On(t,e){return jn(function(t,e,r){return e=yn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=yn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Sn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Lt(r))return!1;var n=typeof e;return!!("number"==n?Wt(r)&&kt(e,r.length):"string"==n&&e in r)&&Zt(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Kn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Vn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ln(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bn(r,t)})).length},Gn=function(t,e){if(void 0===e&&(e=null),pt(t)){if(!e)return!0;if(Bn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!X(r)||(!1!==(e=Kn(t))?!Vn({arg:r},e):!Ln(t)(r))})).length)})).length}return!1},Yn=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Gn.apply(null,n)},Wn=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),Qn=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),Xn=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),Zn=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),to=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),eo=function(){try{if(window||document)return!0}catch(t){}return!1},ro=function(){try{if(!eo()&&l)return!0}catch(t){}return!1};var no=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return eo()?"browser":ro()?"node":"unknown"},e}(Error),oo=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,Error.captureStackTrace&&Error.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}(no),io=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),ao=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),uo=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),co=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,Error.captureStackTrace&&Error.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}(no),so=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,Error.captureStackTrace&&Error.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}(no),fo=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),lo=Object.freeze({__proto__:null,Jsonql406Error:Wn,Jsonql500Error:Qn,JsonqlAuthorisationError:Xn,JsonqlContractAuthError:Zn,JsonqlResolverAppError:to,JsonqlResolverNotFoundError:oo,JsonqlEnumError:io,JsonqlTypeError:ao,JsonqlCheckerError:uo,JsonqlValidationError:co,JsonqlError:so,JsonqlServerError:fo}),po=so,ho=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function vo(t){if(ho(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&lo[o])throw new lo[r](i,a);throw new po(i,a)}return t}function go(t){if(Array.isArray(t))throw new co("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof Wn:throw new Wn(e,r);case t instanceof Qn:throw new Qn(e,r);case t instanceof Xn:throw new Xn(e,r);case t instanceof Zn:throw new Zn(e,r);case t instanceof to:throw new to(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof fo:throw new fo(e,r);default:throw new so(e,r)}}function yo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var bo=function(t,e){var r;switch(!0){case"object"===t:return!Yn(e);case"array"===t:return!Bn(e.arg);case!1!==(r=Kn(t)):return!Vn(e,r);default:return!Ln(t)(e.arg)}},mo=function(t,e){return X(t)?!0!==e.optional||X(e.defaultvalue)?null:e.defaultvalue:t},_o=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Bn(e))throw new so("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Bn(t))throw new so("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 yo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:yo(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:yo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?mo(t,a):t,index:r,param:a,optional:i}}));default:throw yo(5),new so("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Cn(e)&&!(r.type.length>r.type.filter((function(e){return bo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return bo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},wo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},jo=function(t){return!Cn(t)};function Oo(t,e){var r=Pn(e,(function(t,e){return!t[Dn]}));return Or(r,{})?t:function(t,e){var r={};return e=Yr(e),Xt(t,(function(t,n,o){Qr(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,Yr((function(t){return t.alias===e})),Xt)||e}))}function So(t,e){return An(e,(function(e,r){var n,o;return X(t[r])||!0===e[Rn]&&jo(t[r])?En({},e,((n={})[Hn]=!0,n)):((o={})[Mn]=t[r],o[In]=e[In],o[Rn]=e[Rn]||!1,o[Jn]=e[Jn]||!1,o[Un]=e[Un]||!1,o)}))}function Eo(t,e){var r=function(t,e){var r=Oo(t,e);return{pristineValues:An(Pn(e,(function(t,e){return wo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Pn(e,(function(t,e){return!wo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[So(n,r.checkAgainstAppProps),o]}var Ao=function(t){return Bn(t)?t:[t]};var ko=function(t,e){return!Bn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},To=function(t,e){try{return!!Yt(e)&&e.apply(null,[t])}catch(t){return!1}};function xo(t){return function(e,r){if(e[Hn])return e[Mn];var n=function(t,e){var r,n=[[t[Mn]],[(r={},r[In]=Ao(t[In]),r[Rn]=t[Rn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw yo("runValidationAction",r,e),new ao(r,n);if(!1!==e[Jn]&&!ko(e[Mn],e[Jn]))throw yo(Jn,e[Jn]),new io(r);if(!1!==e[Un]&&!To(e[Mn],e[Un]))throw yo(Un,e[Un]),new uo(r);return e[Mn]}}var qo=function(t,e){return Promise.resolve(Eo(t,e))};function Po(t,e,r,n){return void 0===t&&(t={}),qo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=An(r,xo(e));return En(o,n)}(t,n)})).then((function(t){return En({},t,r)}))}function Co(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),Bn(s)&&(p[i]=s),Yt(f)&&(p[u]=f),nt(l)&&(p[c]=l),p}var $o=zn,zo=Bn,No=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=_o(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Fo=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return Co.apply(null,[t,e,n,a,s,f])},Io=function(t){return function(e,r,n){return void 0===n&&(n={}),Po(e,r,n,t)}}(_o),Ro="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Jo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ui().key(e);t(ci(r),r)}},remove:function(t){return ui().removeItem(t)},clearAll:function(){return ui().clear()}};function ui(){return ii.localStorage}function ci(t){return ui().getItem(t)}var si=Ho.trim,fi={name:"cookieStorage",read:function(t){if(!t||!di(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(li.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;li.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pi,remove:hi,clearAll:function(){pi((function(t,e){hi(e)}))}},li=Ho.Global.document;function pi(t){for(var e=li.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(si(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function hi(t){t&&di(t)&&(li.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function di(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(li.cookie)}var vi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var gi="expire_mixin",yi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+gi);return{set:function(e,r,n,o){this.hasNamespace(gi)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(gi)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(gi)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ei=[ai,fi],Ai=[vi,yi,ji,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Si.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Si.compress(this._serialize(r));t(e,n)}}}],ki=ri.createStore(Ei,Ai),Ti=Ho.Global;function xi(){return Ti.sessionStorage}function qi(t){return xi().getItem(t)}var Pi=[{name:"sessionStorage",read:qi,write:function(t,e){return xi().setItem(t,e)},each:function(t){for(var e=xi().length-1;e>=0;e--){var r=xi().key(e);t(qi(r),r)}},remove:function(t){return xi().removeItem(t)},clearAll:function(){return xi().clear()}},fi],Ci=[vi,yi],$i=ri.createStore(Pi,Ci),zi=ki,Ni=$i,Fi=Array.isArray,Ii=void 0!==l?l:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ri="object"==typeof Ii&&Ii&&Ii.Object===Object&&Ii,Ji="object"==typeof self&&self&&self.Object===Object&&self,Mi=(Ri||Ji||Function("return this")()).Symbol,Ui=Object.prototype,Di=Ui.hasOwnProperty,Hi=Ui.toString,Li=Mi?Mi.toStringTag:void 0;var Bi=Object.prototype.toString;var Ki="[object Null]",Vi="[object Undefined]",Gi=Mi?Mi.toStringTag:void 0;function Yi(t){return null==t?void 0===t?Vi:Ki:Gi&&Gi in Object(t)?function(t){var e=Di.call(t,Li),r=t[Li];try{t[Li]=void 0;var n=!0}catch(t){}var o=Hi.call(t);return n&&(e?t[Li]=r:delete t[Li]),o}(t):function(t){return Bi.call(t)}(t)}var Wi=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function Qi(t){return null!=t&&"object"==typeof t}var Xi="[object Object]",Zi=Function.prototype,ta=Object.prototype,ea=Zi.toString,ra=ta.hasOwnProperty,na=ea.call(Object);var oa=Mi?Mi.prototype:void 0,ia=(oa&&oa.toString,"[object String]");function aa(t){return"string"==typeof t||!Fi(t)&&Qi(t)&&Yi(t)==ia}var ua=function(t,e){return!!t.filter((function(t){return t===e})).length},ca=function(t,e){var r=Object.keys(t);return ua(r,e)},sa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},fa="query",la="mutation",pa="socket",ha="payload",da="condition",va=function(){try{if(window||document)return!0}catch(t){}return!1},ga=function(){try{if(!va()&&Ii)return!0}catch(t){}return!1};var ya=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return va()?"browser":ga()?"node":"unknown"},e}(Error));var ba=function(t){var e;return(e={}).args=t,e};var ma=function(t){return ca(t,"data")&&!ca(t,"error")?t.data:t},_a=function(t){return function(t){if(!Qi(t)||Yi(t)!=Xi)return!1;var e=Wi(t);if(null===e)return!0;var r=ra.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ea.call(r)==na}(t)&&(ca(t,fa)||ca(t,la)||ca(t,pa))},wa=function(t,e){return void 0===e&&(e={}),_a(e)?Promise.resolve(e):t.getContract()},ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Oa(t){this.message=t}Oa.prototype=new Error,Oa.prototype.name="InvalidCharacterError";var Sa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Oa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ja.indexOf(n);return a};var Ea=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Sa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Sa(e)}};function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidTokenError";var ka=function(t,e){if("string"!=typeof t)throw new Aa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ea(t.split(".")[r]))}catch(t){throw new Aa("Invalid token specified: "+t.message)}},Ta=Aa;ka.InvalidTokenError=Ta;var xa,qa,Pa,Ca,$a,za,Na,Fa,Ia,Ra=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ja(t){if($o(t))return function(t){var e=t.iat||Ra(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new so("Token has expired on "+r,t)}return t}(ka(t));throw new so("Token must be a string!")}Fo("HS256",["string"]),Fo(!1,["boolean","number","string"],((xa={})[c]="exp",xa[o]=!0,xa)),Fo(!1,["boolean","number","string"],((qa={})[c]="nbf",qa[o]=!0,qa)),Fo(!1,["boolean","string"],((Pa={})[c]="iss",Pa[o]=!0,Pa)),Fo(!1,["boolean","string"],((Ca={})[c]="sub",Ca[o]=!0,Ca)),Fo(!1,["boolean","string"],(($a={})[c]="iss",$a[o]=!0,$a)),Fo(!1,["boolean"],((za={})[o]=!0,za)),Fo(!1,["boolean","string"],((Na={})[o]=!0,Na)),Fo(!1,["boolean","string"],((Fa={})[o]=!0,Fa)),Fo(!1,["boolean"],((Ia={})[o]=!0,Ia));var Ma=r[0],Ua=r[1],Da=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Ha={headers:{configurable:!0}};Ha.headers.set=function(t){this.extraHeader=t},Da.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=En({},{_cb:sa()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=En({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,En({},{method:Ma,params:o},e))},Da.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Da.prototype.processJsonp=function(t){return ma(t)},Da.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=$o(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ma(o)}),(function(t){throw e.cleanUp(),console.error(t),new fo("Server side error",t)}))},Da.prototype.getHeaders=function(){return this.opts.enableAuth?En({},e,this.getAuthHeader(),this.extraHeader):En({},e,this.extraHeader)},Da.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Da.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=En({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(vo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Da.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),aa(t)&&Fi(e)){var o=ba(e);return!0===r?o:((n={})[t]=o,n)}throw new ya("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(vo)},Da.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ha]=e,i[da]=r,!0===n)return i;if(aa(t))return(o={})[t]=i,o;throw new ya("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ua}).then(vo)},Object.defineProperties(Da.prototype,Ha);var La=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply(zi.set,zi,t),new co("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=zi.get("endpoint")||[];ua(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=zi.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ua(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=sa();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(zi.set,zi,e)},r.jsonqlEndpoint.get=function(){var t=zi.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(zi.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ni.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ja)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!_a(t))throw new co("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return _a(this.opts.contract)?this.opts.contract:zi.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Da))),Ba=function(t){return y(t)?t:[t]},Ka=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,Ba(t))}),Reflect.apply(t,null,r))}};function Va(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Ga=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(go)}},Ya=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(go)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wa=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return No(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(go)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Qa=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xa=function(t,e,r,n){var o=function(t,e,r,n){return Ka(Ya,Wa,Qa)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.3.3",o},Za={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},tu={hostname:Fo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Fo("jsonql",["string"]),loginHandlerName:Fo("login",["string"]),logoutHandlerName:Fo("logout",["string"]),enableJsonp:Fo(!1,["boolean"]),enableAuth:Fo(!1,["boolean"]),useJwt:Fo(!0,["boolean"]),useLocalstorage:Fo(!0,["boolean"]),storageKey:Fo("storageKey",["string"]),authKey:Fo("authKey",["string"]),contractExpired:Fo(0,["number"]),keepContract:Fo(!0,["boolean"]),exposeContract:Fo(!1,["boolean"]),showContractDesc:Fo(!1,["boolean"]),contractKey:Fo(!1,["boolean"]),contractKeyName:Fo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Fo(!1,["boolean"]),timeout:Fo(5e3,["number"]),returnInstance:Fo(!1,["boolean"]),allowReturnRawToken:Fo(!1,["boolean"]),debugOn:Fo(!1,["boolean"])};function eu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Io(t,tu,Za).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new La(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return wa(r,n.contract).then((function(e){return Xa(r,n,e,t)}))}))}var ru=new WeakMap,nu=new WeakMap;var ou=function(){this.__suspend__=null,this.queueStore=new Set},iu={$suspend:{configurable:!0},$queues:{configurable:!0}};iu.$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)},ou.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__},iu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ou.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(ou.prototype,iu);var au=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ru.set(this,t)},r.normalStore.get=function(){return ru.get(this)},r.lazyStore.set=function(t){nu.set(this,t)},r.lazyStore.get=function(){return nu.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}(ou));return function(t,e){var r;return eu((r=e.debugOn,new au({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message";var l="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},p="object"==typeof l&&l&&l.Object===Object&&l,h="object"==typeof self&&self&&self.Object===Object&&self,d=p||h||Function("return this")(),v=d.Symbol;function g(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&F(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function X(t){return void 0===t}var Z="[object Boolean]";var tt="[object Number]";function et(t){return function(t){return"number"==typeof t||k(t)&&A(t)==tt}(t)&&t!=+t}var rt="[object String]";function nt(t){return"string"==typeof t||!y(t)&&k(t)&&A(t)==rt}function ot(t,e){return function(r){return t(e(r))}}var it=ot(Object.getPrototypeOf,Object),at="[object Object]",ut=Function.prototype,ct=Object.prototype,st=ut.toString,ft=ct.hasOwnProperty,lt=st.call(Object);function pt(t){if(!k(t)||A(t)!=at)return!1;var e=it(t);if(null===e)return!0;var r=ft.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&st.call(r)==lt}var ht,dt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[ht?a:++n];if(!1===e(o[u],u,o))break}return t};var vt="[object Arguments]";function gt(t){return k(t)&&A(t)==vt}var yt=Object.prototype,bt=yt.hasOwnProperty,mt=yt.propertyIsEnumerable,_t=gt(function(){return arguments}())?gt:function(t){return k(t)&&bt.call(t,"callee")&&!mt.call(t,"callee")};var wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,jt=wt&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=jt&&jt.exports===wt?d.Buffer:void 0,St=(Ot?Ot.isBuffer:void 0)||function(){return!1},Et=9007199254740991,At=/^(?:0|[1-9]\d*)$/;function kt(t,e){var r=typeof t;return!!(e=null==e?Et:e)&&("number"==r||"symbol"!=r&&At.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Tt}var qt={};qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Arguments]"]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object Boolean]"]=qt["[object DataView]"]=qt["[object Date]"]=qt["[object Error]"]=qt["[object Function]"]=qt["[object Map]"]=qt["[object Number]"]=qt["[object Object]"]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object WeakMap]"]=!1;var Pt,Ct="object"==typeof exports&&exports&&!exports.nodeType&&exports,$t=Ct&&"object"==typeof module&&module&&!module.nodeType&&module,zt=$t&&$t.exports===Ct&&p.process,Nt=function(){try{var t=$t&&$t.require&&$t.require("util").types;return t||zt&&zt.binding&&zt.binding("util")}catch(t){}}(),Ft=Nt&&Nt.isTypedArray,It=Ft?(Pt=Ft,function(t){return Pt(t)}):function(t){return k(t)&&xt(t.length)&&!!qt[A(t)]},Rt=Object.prototype.hasOwnProperty;function Jt(t,e){var r=y(t),n=!r&&_t(t),o=!r&&!n&&St(t),i=!r&&!n&&!o&&It(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ne,oe=d["__core-js_shared__"],ie=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ae=Function.prototype.toString;function ue(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,se=Function.prototype,fe=Object.prototype,le=se.toString,pe=fe.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(t){return!(!Lt(t)||function(t){return!!ie&&ie in t}(t))&&(Yt(t)?he:ce).test(ue(t))}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return de(r)?r:void 0}var ge=ve(d,"Map"),ye=ve(Object,"create");var be="__lodash_hash_undefined__",me=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Pe?new Te:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=mn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(bn);function On(t,e){return jn(function(t,e,r){return e=yn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=yn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Sn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Lt(r))return!1;var n=typeof e;return!!("number"==n?Wt(r)&&kt(e,r.length):"string"==n&&e in r)&&Zt(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Kn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Vn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ln(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bn(r,t)})).length},Gn=function(t,e){if(void 0===e&&(e=null),pt(t)){if(!e)return!0;if(Bn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!X(r)||(!1!==(e=Kn(t))?!Vn({arg:r},e):!Ln(t)(r))})).length)})).length}return!1},Yn=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Gn.apply(null,n)},Wn=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),Qn=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),Xn=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),Zn=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),to=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),eo=function(){try{if(window||document)return!0}catch(t){}return!1},ro=function(){try{if(!eo()&&l)return!0}catch(t){}return!1};var no=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return eo()?"browser":ro()?"node":"unknown"},e}(Error),oo=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,Error.captureStackTrace&&Error.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}(no),io=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),ao=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),uo=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),co=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,Error.captureStackTrace&&Error.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}(no),so=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,Error.captureStackTrace&&Error.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}(no),fo=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),lo=Object.freeze({__proto__:null,Jsonql406Error:Wn,Jsonql500Error:Qn,JsonqlAuthorisationError:Xn,JsonqlContractAuthError:Zn,JsonqlResolverAppError:to,JsonqlResolverNotFoundError:oo,JsonqlEnumError:io,JsonqlTypeError:ao,JsonqlCheckerError:uo,JsonqlValidationError:co,JsonqlError:so,JsonqlServerError:fo}),po=so,ho=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function vo(t){if(ho(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&lo[o])throw new lo[r](i,a);throw new po(i,a)}return t}function go(t){if(Array.isArray(t))throw new co("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof Wn:throw new Wn(e,r);case t instanceof Qn:throw new Qn(e,r);case t instanceof Xn:throw new Xn(e,r);case t instanceof Zn:throw new Zn(e,r);case t instanceof to:throw new to(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof fo:throw new fo(e,r);default:throw new so(e,r)}}function yo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var bo=function(t,e){var r;switch(!0){case"object"===t:return!Yn(e);case"array"===t:return!Bn(e.arg);case!1!==(r=Kn(t)):return!Vn(e,r);default:return!Ln(t)(e.arg)}},mo=function(t,e){return X(t)?!0!==e.optional||X(e.defaultvalue)?null:e.defaultvalue:t},_o=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Bn(e))throw new so("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Bn(t))throw new so("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 yo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:yo(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:yo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?mo(t,a):t,index:r,param:a,optional:i}}));default:throw yo(5),new so("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Cn(e)&&!(r.type.length>r.type.filter((function(e){return bo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return bo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},wo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},jo=function(t){return!Cn(t)};function Oo(t,e){var r=Pn(e,(function(t,e){return!t[Dn]}));return Or(r,{})?t:function(t,e){var r={};return e=Yr(e),Xt(t,(function(t,n,o){Qr(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,Yr((function(t){return t.alias===e})),Xt)||e}))}function So(t,e){return An(e,(function(e,r){var n,o;return X(t[r])||!0===e[Rn]&&jo(t[r])?En({},e,((n={})[Hn]=!0,n)):((o={})[Mn]=t[r],o[In]=e[In],o[Rn]=e[Rn]||!1,o[Jn]=e[Jn]||!1,o[Un]=e[Un]||!1,o)}))}function Eo(t,e){var r=function(t,e){var r=Oo(t,e);return{pristineValues:An(Pn(e,(function(t,e){return wo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Pn(e,(function(t,e){return!wo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[So(n,r.checkAgainstAppProps),o]}var Ao=function(t){return Bn(t)?t:[t]};var ko=function(t,e){return!Bn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},To=function(t,e){try{return!!Yt(e)&&e.apply(null,[t])}catch(t){return!1}};function xo(t){return function(e,r){if(e[Hn])return e[Mn];var n=function(t,e){var r,n=[[t[Mn]],[(r={},r[In]=Ao(t[In]),r[Rn]=t[Rn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw yo("runValidationAction",r,e),new ao(r,n);if(!1!==e[Jn]&&!ko(e[Mn],e[Jn]))throw yo(Jn,e[Jn]),new io(r);if(!1!==e[Un]&&!To(e[Mn],e[Un]))throw yo(Un,e[Un]),new uo(r);return e[Mn]}}var qo=function(t,e){return Promise.resolve(Eo(t,e))};function Po(t,e,r,n){return void 0===t&&(t={}),qo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=An(r,xo(e));return En(o,n)}(t,n)})).then((function(t){return En({},t,r)}))}function Co(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),Bn(s)&&(p[i]=s),Yt(f)&&(p[u]=f),nt(l)&&(p[c]=l),p}var $o=zn,zo=Bn,No=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=_o(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Fo=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return Co.apply(null,[t,e,n,a,s,f])},Io=function(t){return function(e,r,n){return void 0===n&&(n={}),Po(e,r,n,t)}}(_o),Ro="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Jo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ui().key(e);t(ci(r),r)}},remove:function(t){return ui().removeItem(t)},clearAll:function(){return ui().clear()}};function ui(){return ii.localStorage}function ci(t){return ui().getItem(t)}var si=Ho.trim,fi={name:"cookieStorage",read:function(t){if(!t||!di(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(li.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;li.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pi,remove:hi,clearAll:function(){pi((function(t,e){hi(e)}))}},li=Ho.Global.document;function pi(t){for(var e=li.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(si(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function hi(t){t&&di(t)&&(li.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function di(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(li.cookie)}var vi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var gi="expire_mixin",yi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+gi);return{set:function(e,r,n,o){this.hasNamespace(gi)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(gi)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(gi)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ei=[ai,fi],Ai=[vi,yi,ji,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Si.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Si.compress(this._serialize(r));t(e,n)}}}],ki=ri.createStore(Ei,Ai),Ti=Ho.Global;function xi(){return Ti.sessionStorage}function qi(t){return xi().getItem(t)}var Pi=[{name:"sessionStorage",read:qi,write:function(t,e){return xi().setItem(t,e)},each:function(t){for(var e=xi().length-1;e>=0;e--){var r=xi().key(e);t(qi(r),r)}},remove:function(t){return xi().removeItem(t)},clearAll:function(){return xi().clear()}},fi],Ci=[vi,yi],$i=ri.createStore(Pi,Ci),zi=ki,Ni=$i,Fi=Array.isArray,Ii=void 0!==l?l:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ri="object"==typeof Ii&&Ii&&Ii.Object===Object&&Ii,Ji="object"==typeof self&&self&&self.Object===Object&&self,Mi=(Ri||Ji||Function("return this")()).Symbol,Ui=Object.prototype,Di=Ui.hasOwnProperty,Hi=Ui.toString,Li=Mi?Mi.toStringTag:void 0;var Bi=Object.prototype.toString;var Ki="[object Null]",Vi="[object Undefined]",Gi=Mi?Mi.toStringTag:void 0;function Yi(t){return null==t?void 0===t?Vi:Ki:Gi&&Gi in Object(t)?function(t){var e=Di.call(t,Li),r=t[Li];try{t[Li]=void 0;var n=!0}catch(t){}var o=Hi.call(t);return n&&(e?t[Li]=r:delete t[Li]),o}(t):function(t){return Bi.call(t)}(t)}var Wi=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function Qi(t){return null!=t&&"object"==typeof t}var Xi="[object Object]",Zi=Function.prototype,ta=Object.prototype,ea=Zi.toString,ra=ta.hasOwnProperty,na=ea.call(Object);var oa=Mi?Mi.prototype:void 0,ia=(oa&&oa.toString,"[object String]");function aa(t){return"string"==typeof t||!Fi(t)&&Qi(t)&&Yi(t)==ia}var ua=function(t,e){return!!t.filter((function(t){return t===e})).length},ca=function(t,e){var r=Object.keys(t);return ua(r,e)},sa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},fa="query",la="mutation",pa="socket",ha="payload",da="condition",va=function(){try{if(window||document)return!0}catch(t){}return!1},ga=function(){try{if(!va()&&Ii)return!0}catch(t){}return!1};var ya=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return va()?"browser":ga()?"node":"unknown"},e}(Error));var ba=function(t){var e;return(e={}).args=t,e};var ma=function(t){return ca(t,"data")&&!ca(t,"error")?t.data:t},_a=function(t){return function(t){if(!Qi(t)||Yi(t)!=Xi)return!1;var e=Wi(t);if(null===e)return!0;var r=ra.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ea.call(r)==na}(t)&&(ca(t,fa)||ca(t,la)||ca(t,pa))},wa=function(t,e){return void 0===e&&(e={}),_a(e)?Promise.resolve(e):t.getContract()},ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Oa(t){this.message=t}Oa.prototype=new Error,Oa.prototype.name="InvalidCharacterError";var Sa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Oa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ja.indexOf(n);return a};var Ea=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Sa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Sa(e)}};function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidTokenError";var ka=function(t,e){if("string"!=typeof t)throw new Aa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ea(t.split(".")[r]))}catch(t){throw new Aa("Invalid token specified: "+t.message)}},Ta=Aa;ka.InvalidTokenError=Ta;var xa,qa,Pa,Ca,$a,za,Na,Fa,Ia,Ra=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ja(t){if($o(t))return function(t){var e=t.iat||Ra(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new so("Token has expired on "+r,t)}return t}(ka(t));throw new so("Token must be a string!")}Fo("HS256",["string"]),Fo(!1,["boolean","number","string"],((xa={})[c]="exp",xa[o]=!0,xa)),Fo(!1,["boolean","number","string"],((qa={})[c]="nbf",qa[o]=!0,qa)),Fo(!1,["boolean","string"],((Pa={})[c]="iss",Pa[o]=!0,Pa)),Fo(!1,["boolean","string"],((Ca={})[c]="sub",Ca[o]=!0,Ca)),Fo(!1,["boolean","string"],(($a={})[c]="iss",$a[o]=!0,$a)),Fo(!1,["boolean"],((za={})[o]=!0,za)),Fo(!1,["boolean","string"],((Na={})[o]=!0,Na)),Fo(!1,["boolean","string"],((Fa={})[o]=!0,Fa)),Fo(!1,["boolean"],((Ia={})[o]=!0,Ia));var Ma=r[0],Ua=r[1],Da=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Ha={headers:{configurable:!0}};Ha.headers.set=function(t){this.extraHeader=t},Da.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=En({},{_cb:sa()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=En({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,En({},{method:Ma,params:o},e))},Da.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Da.prototype.processJsonp=function(t){return ma(t)},Da.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=$o(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ma(o)}),(function(t){throw e.cleanUp(),console.error(t),new fo("Server side error",t)}))},Da.prototype.getHeaders=function(){return this.opts.enableAuth?En({},e,this.getAuthHeader(),this.extraHeader):En({},e,this.extraHeader)},Da.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Da.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=En({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(vo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Da.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),aa(t)&&Fi(e)){var o=ba(e);return!0===r?o:((n={})[t]=o,n)}throw new ya("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(vo)},Da.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ha]=e,i[da]=r,!0===n)return i;if(aa(t))return(o={})[t]=i,o;throw new ya("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ua}).then(vo)},Object.defineProperties(Da.prototype,Ha);var La=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply(zi.set,zi,t),new co("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=zi.get("endpoint")||[];ua(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=zi.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ua(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=sa();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(zi.set,zi,e)},r.jsonqlEndpoint.get=function(){var t=zi.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(zi.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ni.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ja)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!_a(t))throw new co("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return _a(this.opts.contract)?this.opts.contract:zi.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Da))),Ba=function(t){return y(t)?t:[t]},Ka=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,Ba(t))}),Reflect.apply(t,null,r))}};function Va(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Ga=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(go)}},Ya=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(go)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wa=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return No(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(go)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Qa=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xa=function(t,e,r,n){var o=function(t,e,r,n){return Ka(Ya,Wa,Qa)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.4.0",o},Za={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},tu={hostname:Fo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Fo("jsonql",["string"]),loginHandlerName:Fo("login",["string"]),logoutHandlerName:Fo("logout",["string"]),enableJsonp:Fo(!1,["boolean"]),enableAuth:Fo(!1,["boolean"]),useJwt:Fo(!0,["boolean"]),useLocalstorage:Fo(!0,["boolean"]),storageKey:Fo("storageKey",["string"]),authKey:Fo("authKey",["string"]),contractExpired:Fo(0,["number"]),keepContract:Fo(!0,["boolean"]),exposeContract:Fo(!1,["boolean"]),showContractDesc:Fo(!1,["boolean"]),contractKey:Fo(!1,["boolean"]),contractKeyName:Fo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Fo(!1,["boolean"]),timeout:Fo(5e3,["number"]),returnInstance:Fo(!1,["boolean"]),allowReturnRawToken:Fo(!1,["boolean"]),debugOn:Fo(!1,["boolean"])};function eu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Io(t,tu,Za).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new La(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return wa(r,n.contract).then((function(e){return Xa(r,n,e,t)}))}))}var ru=new WeakMap,nu=new WeakMap;var ou=function(){this.__suspend__=null,this.queueStore=new Set},iu={$suspend:{configurable:!0},$queues:{configurable:!0}};iu.$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)},ou.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__},iu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ou.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(ou.prototype,iu);var au=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ru.set(this,t)},r.normalStore.get=function(){return ru.get(this)},r.lazyStore.set=function(t){nu.set(this,t)},r.lazyStore.get=function(){return nu.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}(ou));return function(t,e){var r;return eu((r=e.debugOn,new au({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}})); //# sourceMappingURL=core.js.map diff --git a/packages/http-client/dist/jsonql-client.static.js b/packages/http-client/dist/jsonql-client.static.js index b20851eb..e7582322 100644 --- a/packages/http-client/dist/jsonql-client.static.js +++ b/packages/http-client/dist/jsonql-client.static.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message",g="onResult",y="onError",b=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),m=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),_=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),w=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),j=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),O="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},S=function(){try{if(window||document)return!0}catch(t){}return!1},E=function(){try{if(!S()&&O)return!0}catch(t){}return!1};var k=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return S()?"browser":E()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(k),x=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),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),P=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),q=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,Error.captureStackTrace&&Error.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}(k),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,Error.captureStackTrace&&Error.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}(k),$=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),N=Object.freeze({__proto__:null,Jsonql406Error:b,Jsonql500Error:m,JsonqlAuthorisationError:_,JsonqlContractAuthError:w,JsonqlResolverAppError:j,JsonqlResolverNotFoundError:A,JsonqlEnumError:x,JsonqlTypeError:T,JsonqlCheckerError:P,JsonqlValidationError:q,JsonqlError:C,JsonqlServerError:$}),z=C,F=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function R(t){if(F(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&N[o])throw new N[r](i,a);throw new z(i,a)}return t}function I(t){if(Array.isArray(t))throw new q("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof b:throw new b(e,r);case t instanceof m:throw new m(e,r);case t instanceof _:throw new _(e,r);case t instanceof w:throw new w(e,r);case t instanceof j:throw new j(e,r);case t instanceof A:throw new A(e,r);case t instanceof x:throw new x(e,r);case t instanceof T:throw new T(e,r);case t instanceof P:throw new P(e,r);case t instanceof q:throw new q(e,r);case t instanceof $:throw new $(e,r);default:throw new C(e,r)}}var J="object"==typeof O&&O&&O.Object===Object&&O,M="object"==typeof self&&self&&self.Object===Object&&self,U=J||M||Function("return this")(),D=U.Symbol;function H(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&st(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function Et(t){return void 0===t}var kt="[object Boolean]";var At="[object Number]";function xt(t){return function(t){return"number"==typeof t||tt(t)&&Z(t)==At}(t)&&t!=+t}var Tt="[object String]";function Pt(t){return"string"==typeof t||!L(t)&&tt(t)&&Z(t)==Tt}function qt(t,e){return function(r){return t(e(r))}}var Ct=qt(Object.getPrototypeOf,Object),$t="[object Object]",Nt=Function.prototype,zt=Object.prototype,Ft=Nt.toString,Rt=zt.hasOwnProperty,It=Ft.call(Object);function Jt(t){if(!tt(t)||Z(t)!=$t)return!1;var e=Ct(t);if(null===e)return!0;var r=Rt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Ft.call(r)==It}var Mt,Ut=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Mt?a:++n];if(!1===e(o[u],u,o))break}return t};var Dt="[object Arguments]";function Ht(t){return tt(t)&&Z(t)==Dt}var Lt=Object.prototype,Bt=Lt.hasOwnProperty,Kt=Lt.propertyIsEnumerable,Vt=Ht(function(){return arguments}())?Ht:function(t){return tt(t)&&Bt.call(t,"callee")&&!Kt.call(t,"callee")};var Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Yt=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Wt=Yt&&Yt.exports===Gt?U.Buffer:void 0,Xt=(Wt?Wt.isBuffer:void 0)||function(){return!1},Qt=9007199254740991,Zt=/^(?:0|[1-9]\d*)$/;function te(t,e){var r=typeof t;return!!(e=null==e?Qt:e)&&("number"==r||"symbol"!=r&&Zt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=ee}var ne={};ne["[object Float32Array]"]=ne["[object Float64Array]"]=ne["[object Int8Array]"]=ne["[object Int16Array]"]=ne["[object Int32Array]"]=ne["[object Uint8Array]"]=ne["[object Uint8ClampedArray]"]=ne["[object Uint16Array]"]=ne["[object Uint32Array]"]=!0,ne["[object Arguments]"]=ne["[object Array]"]=ne["[object ArrayBuffer]"]=ne["[object Boolean]"]=ne["[object DataView]"]=ne["[object Date]"]=ne["[object Error]"]=ne["[object Function]"]=ne["[object Map]"]=ne["[object Number]"]=ne["[object Object]"]=ne["[object RegExp]"]=ne["[object Set]"]=ne["[object String]"]=ne["[object WeakMap]"]=!1;var oe,ie="object"==typeof exports&&exports&&!exports.nodeType&&exports,ae=ie&&"object"==typeof module&&module&&!module.nodeType&&module,ue=ae&&ae.exports===ie&&J.process,ce=function(){try{var t=ae&&ae.require&&ae.require("util").types;return t||ue&&ue.binding&&ue.binding("util")}catch(t){}}(),se=ce&&ce.isTypedArray,fe=se?(oe=se,function(t){return oe(t)}):function(t){return tt(t)&&re(t.length)&&!!ne[Z(t)]},le=Object.prototype.hasOwnProperty;function pe(t,e){var r=L(t),n=!r&&Vt(t),o=!r&&!n&&Xt(t),i=!r&&!n&&!o&&fe(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Te.prototype.set=function(t,e){var r=this.__data__,n=Ae(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Pe,qe=U["__core-js_shared__"],Ce=(Pe=/[^.]+$/.exec(qe&&qe.keys&&qe.keys.IE_PROTO||""))?"Symbol(src)_1."+Pe:"";var $e=Function.prototype.toString;function Ne(t){if(null!=t){try{return $e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ze=/^\[object .+?Constructor\]$/,Fe=Function.prototype,Re=Object.prototype,Ie=Fe.toString,Je=Re.hasOwnProperty,Me=RegExp("^"+Ie.call(Je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ue(t){return!(!ye(t)||function(t){return!!Ce&&Ce in t}(t))&&(je(t)?Me:ze).test(Ne(t))}function De(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Ue(r)?r:void 0}var He=De(U,"Map"),Le=De(Object,"create");var Be="__lodash_hash_undefined__",Ke=Object.prototype.hasOwnProperty;var Ve=Object.prototype.hasOwnProperty;var Ge="__lodash_hash_undefined__";function Ye(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&or?new er:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Kn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Bn);function Wn(t,e){return Yn(function(t,e,r){return e=Ln(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Ln(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!ye(r))return!1;var n=typeof e;return!!("number"==n?Oe(r)&&te(e,r.length):"string"==n&&e in r)&&ke(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},_o=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!mo(r,t)})).length},jo=function(t,e){if(void 0===e&&(e=null),Jt(t)){if(!e)return!0;if(mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Et(r)||(!1!==(e=_o(t))?!wo({arg:r},e):!bo(t)(r))})).length)})).length}return!1},Oo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),jo.apply(null,n)};function So(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Eo=function(t,e){var r;switch(!0){case"object"===t:return!Oo(e);case"array"===t:return!mo(e.arg);case!1!==(r=_o(t)):return!wo(e,r);default:return!bo(t)(e.arg)}},ko=function(t,e){return Et(t)?!0!==e.optional||Et(e.defaultvalue)?null:e.defaultvalue:t},Ao=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!mo(e))throw new C("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!mo(t))throw new C("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 So(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:So(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:So(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?ko(t,a):t,index:r,param:a,optional:i}}));default:throw So(5),new C("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!io(e)&&!(r.type.length>r.type.filter((function(e){return Eo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Eo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},xo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},To=function(t){return!io(t)};function Po(t,e){var r=oo(e,(function(t,e){return!t[go]}));return Wr(r,{})?t:function(t,e){var r={};return e=On(e),Ee(t,(function(t,n,o){En(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,On((function(t){return t.alias===e})),Ee)||e}))}function qo(t,e){return Zn(e,(function(e,r){var n,o;return Et(t[r])||!0===e[lo]&&To(t[r])?Qn({},e,((n={})[yo]=!0,n)):((o={})[ho]=t[r],o[fo]=e[fo],o[lo]=e[lo]||!1,o[po]=e[po]||!1,o[vo]=e[vo]||!1,o)}))}function Co(t,e){var r=function(t,e){var r=Po(t,e);return{pristineValues:Zn(oo(e,(function(t,e){return xo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:oo(e,(function(t,e){return!xo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[qo(n,r.checkAgainstAppProps),o]}var $o=function(t){return mo(t)?t:[t]};var No=function(t,e){return!mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},zo=function(t,e){try{return!!je(e)&&e.apply(null,[t])}catch(t){return!1}};function Fo(t){return function(e,r){if(e[yo])return e[ho];var n=function(t,e){var r,n=[[t[ho]],[(r={},r[fo]=$o(t[fo]),r[lo]=t[lo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw So("runValidationAction",r,e),new T(r,n);if(!1!==e[po]&&!No(e[ho],e[po]))throw So(po,e[po]),new x(r);if(!1!==e[vo]&&!zo(e[ho],e[vo]))throw So(vo,e[vo]),new P(r);return e[ho]}}function Ro(t,e,r,n){return void 0===t&&(t={}),Qn(function(t,e){var r=t[0],n=t[1],o=Zn(r,Fo(e));return Qn(o,n)}(Co(t,e),n),r)}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),mo(n)&&(a[f]=n),je(o)&&(a[p]=o),Pt(i)&&(a[h]=i),a}var Jo=uo,Mo=mo,Uo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Ao(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Do=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Ho=function(t){return function(e,r,n){return void 0===n&&(n={}),Ro(e,r,n,t)}}(Ao),Lo=function(t){return L(t)?t:[t]},Bo=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,Lo(t))}),Reflect.apply(t,null,r))}};function Ko(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(I)}},Go=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(I)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Yo=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Uo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(I)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xo=Array.isArray,Qo=void 0!==O?O:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Zo="object"==typeof Qo&&Qo&&Qo.Object===Object&&Qo,ti="object"==typeof self&&self&&self.Object===Object&&self,ei=(Zo||ti||Function("return this")()).Symbol,ri=Object.prototype,ni=ri.hasOwnProperty,oi=ri.toString,ii=ei?ei.toStringTag:void 0;var ai=Object.prototype.toString;var ui="[object Null]",ci="[object Undefined]",si=ei?ei.toStringTag:void 0;function fi(t){return null==t?void 0===t?ci:ui:si&&si in Object(t)?function(t){var e=ni.call(t,ii),r=t[ii];try{t[ii]=void 0;var n=!0}catch(t){}var o=oi.call(t);return n&&(e?t[ii]=r:delete t[ii]),o}(t):function(t){return ai.call(t)}(t)}var li=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function pi(t){return null!=t&&"object"==typeof t}var hi="[object Object]",di=Function.prototype,vi=Object.prototype,gi=di.toString,yi=vi.hasOwnProperty,bi=gi.call(Object);var mi=ei?ei.prototype:void 0,_i=(mi&&mi.toString,"[object String]");function wi(t){return"string"==typeof t||!Xo(t)&&pi(t)&&fi(t)==_i}var ji=function(t,e){return!!t.filter((function(t){return t===e})).length},Oi=function(t,e){var r=Object.keys(t);return ji(r,e)},Si=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},Ei=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ki="query",Ai="mutation",xi="socket",Ti="payload",Pi="condition",qi=function(){try{if(window||document)return!0}catch(t){}return!1},Ci=function(){try{if(!qi()&&Qo)return!0}catch(t){}return!1};var $i=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return qi()?"browser":Ci()?"node":"unknown"},e}(Error));var Ni=function(t){var e;return(e={}).args=t,e};var zi=function(t){return Oi(t,"data")&&!Oi(t,"error")?t.data:t},Fi=function(t){return function(t){if(!pi(t)||fi(t)!=hi)return!1;var e=li(t);if(null===e)return!0;var r=yi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&gi.call(r)==bi}(t)&&(Oi(t,ki)||Oi(t,Ai)||Oi(t,xi))},Ri=function(t,e){return void 0===e&&(e={}),Fi(e)?Promise.resolve(e):t.getContract()},Ii=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(Si(e,r,g),o),t.$only(Si(e,r,y),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ji=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Mi(t,e,r,n){var o=function(t,e,r,n){return Bo(Go,Yo,Wo)({},t,e,r,n)}(t,e,r,n);Ji(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(Si(t,n,g),r)})).catch((function(r){e.$trigger(Si(t,n,y),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ui=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Mi(t,n,e,r)}));var o={query:Ii(n,"query"),mutation:Ii(n,"mutation"),auth:Ii(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Di=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=fa().key(e);t(la(r),r)}},remove:function(t){return fa().removeItem(t)},clearAll:function(){return fa().clear()}};function fa(){return ca.localStorage}function la(t){return fa().getItem(t)}var pa=Ki.trim,ha={name:"cookieStorage",read:function(t){if(!t||!ya(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(da.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;da.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:va,remove:ga,clearAll:function(){va((function(t,e){ga(e)}))}},da=Ki.Global.document;function va(t){for(var e=da.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(pa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ga(t){t&&ya(t)&&(da.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ya(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(da.cookie)}var ba=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ma="expire_mixin",_a=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ma);return{set:function(e,r,n,o){this.hasNamespace(ma)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ma)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ma)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var xa=[sa,ha],Ta=[ba,_a,Ea,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Aa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Aa.compress(this._serialize(r));t(e,n)}}}],Pa=ia.createStore(xa,Ta),qa=Ki.Global;function Ca(){return qa.sessionStorage}function $a(t){return Ca().getItem(t)}var Na=[{name:"sessionStorage",read:$a,write:function(t,e){return Ca().setItem(t,e)},each:function(t){for(var e=Ca().length-1;e>=0;e--){var r=Ca().key(e);t($a(r),r)}},remove:function(t){return Ca().removeItem(t)},clearAll:function(){return Ca().clear()}},ha],za=[ba,_a],Fa=ia.createStore(Na,za),Ra=Pa,Ia=Fa,Ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidCharacterError";var Ua="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ma("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ja.indexOf(n);return a};var Da=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ua(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ua(e)}};function Ha(t){this.message=t}Ha.prototype=new Error,Ha.prototype.name="InvalidTokenError";var La=function(t,e){if("string"!=typeof t)throw new Ha("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Da(t.split(".")[r]))}catch(t){throw new Ha("Invalid token specified: "+t.message)}},Ba=Ha;La.InvalidTokenError=Ba;var Ka,Va,Ga,Ya,Wa,Xa,Qa,Za,tu,eu=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function ru(t){if(Jo(t))return function(t){var e=t.iat||eu(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new C("Token has expired on "+r,t)}return t}(La(t));throw new C("Token must be a string!")}Do("HS256",["string"]),Do(!1,["boolean","number","string"],((Ka={})[h]="exp",Ka[s]=!0,Ka)),Do(!1,["boolean","number","string"],((Va={})[h]="nbf",Va[s]=!0,Va)),Do(!1,["boolean","string"],((Ga={})[h]="iss",Ga[s]=!0,Ga)),Do(!1,["boolean","string"],((Ya={})[h]="sub",Ya[s]=!0,Ya)),Do(!1,["boolean","string"],((Wa={})[h]="iss",Wa[s]=!0,Wa)),Do(!1,["boolean"],((Xa={})[s]=!0,Xa)),Do(!1,["boolean","string"],((Qa={})[s]=!0,Qa)),Do(!1,["boolean","string"],((Za={})[s]=!0,Za)),Do(!1,["boolean"],((tu={})[s]=!0,tu));var nu=u[0],ou=u[1],iu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},au={headers:{configurable:!0}};au.headers.set=function(t){this.extraHeader=t},iu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Qn({},{_cb:Ei()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Qn({},{method:nu,params:o},e))},iu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},iu.prototype.processJsonp=function(t){return zi(t)},iu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Jo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):zi(o)}),(function(t){throw e.cleanUp(),console.error(t),new $("Server side error",t)}))},iu.prototype.getHeaders=function(){return this.opts.enableAuth?Qn({},a,this.getAuthHeader(),this.extraHeader):Qn({},a,this.extraHeader)},iu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},iu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Qn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(R).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},iu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),wi(t)&&Xo(e)){var o=Ni(e);return!0===r?o:((n={})[t]=o,n)}throw new $i("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(R)},iu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Ti]=e,i[Pi]=r,!0===n)return i;if(wi(t))return(o={})[t]=i,o;throw new $i("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:ou}).then(R)},Object.defineProperties(iu.prototype,au);var uu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Mo(t)&&t.length>=2&&Reflect.apply(Ra.set,Ra,t),new q("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ra.get("endpoint")||[];ji(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ra.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ji(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=Ei();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ra.set,Ra,e)},r.jsonqlEndpoint.get=function(){var t=Ra.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ra.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ia.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=ru)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Fi(t))throw new q("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Fi(this.opts.contract)?this.opts.contract:Ra.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(iu))),cu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},su={hostname:Do([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Do("jsonql",["string"]),loginHandlerName:Do("login",["string"]),logoutHandlerName:Do("logout",["string"]),enableJsonp:Do(!1,["boolean"]),enableAuth:Do(!1,["boolean"]),useJwt:Do(!0,["boolean"]),useLocalstorage:Do(!0,["boolean"]),storageKey:Do("storageKey",["string"]),authKey:Do("authKey",["string"]),contractExpired:Do(0,["number"]),keepContract:Do(!0,["boolean"]),exposeContract:Do(!1,["boolean"]),showContractDesc:Do(!1,["boolean"]),contractKey:Do(!1,["boolean"]),contractKeyName:Do("X-JSONQL-CV-KEY",["string"]),enableTimeout:Do(!1,["boolean"]),timeout:Do(5e3,["number"]),returnInstance:Do(!1,["boolean"]),allowReturnRawToken:Do(!1,["boolean"]),debugOn:Do(!1,["boolean"])};var fu=new WeakMap,lu=new WeakMap;var pu=function(){this.__suspend__=null,this.queueStore=new Set},hu={$suspend:{configurable:!0},$queues:{configurable:!0}};hu.$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)},pu.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__},hu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},pu.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(pu.prototype,hu);var du=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){fu.set(this,t)},r.normalStore.get=function(){return fu.get(this)},r.lazyStore.set=function(t){lu.set(this,t)},r.lazyStore.get=function(){return lu.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}(pu));function vu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ho(t,su,cu)}(e),i=new uu(o,t),a=Ri(i,n),u=(r=o.debugOn,new du({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ui(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),vu(o,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message",g="onResult",y="onError",b=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),m=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),_=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),w=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),j=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),O="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},S=function(){try{if(window||document)return!0}catch(t){}return!1},E=function(){try{if(!S()&&O)return!0}catch(t){}return!1};var k=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return S()?"browser":E()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(k),x=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),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),P=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),q=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,Error.captureStackTrace&&Error.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}(k),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,Error.captureStackTrace&&Error.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}(k),$=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),N=Object.freeze({__proto__:null,Jsonql406Error:b,Jsonql500Error:m,JsonqlAuthorisationError:_,JsonqlContractAuthError:w,JsonqlResolverAppError:j,JsonqlResolverNotFoundError:A,JsonqlEnumError:x,JsonqlTypeError:T,JsonqlCheckerError:P,JsonqlValidationError:q,JsonqlError:C,JsonqlServerError:$}),z=C,F=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function R(t){if(F(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&N[o])throw new N[r](i,a);throw new z(i,a)}return t}function I(t){if(Array.isArray(t))throw new q("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof b:throw new b(e,r);case t instanceof m:throw new m(e,r);case t instanceof _:throw new _(e,r);case t instanceof w:throw new w(e,r);case t instanceof j:throw new j(e,r);case t instanceof A:throw new A(e,r);case t instanceof x:throw new x(e,r);case t instanceof T:throw new T(e,r);case t instanceof P:throw new P(e,r);case t instanceof q:throw new q(e,r);case t instanceof $:throw new $(e,r);default:throw new C(e,r)}}var J="object"==typeof O&&O&&O.Object===Object&&O,M="object"==typeof self&&self&&self.Object===Object&&self,U=J||M||Function("return this")(),D=U.Symbol;function H(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&st(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function Et(t){return void 0===t}var kt="[object Boolean]";var At="[object Number]";function xt(t){return function(t){return"number"==typeof t||tt(t)&&Z(t)==At}(t)&&t!=+t}var Tt="[object String]";function Pt(t){return"string"==typeof t||!L(t)&&tt(t)&&Z(t)==Tt}function qt(t,e){return function(r){return t(e(r))}}var Ct=qt(Object.getPrototypeOf,Object),$t="[object Object]",Nt=Function.prototype,zt=Object.prototype,Ft=Nt.toString,Rt=zt.hasOwnProperty,It=Ft.call(Object);function Jt(t){if(!tt(t)||Z(t)!=$t)return!1;var e=Ct(t);if(null===e)return!0;var r=Rt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Ft.call(r)==It}var Mt,Ut=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Mt?a:++n];if(!1===e(o[u],u,o))break}return t};var Dt="[object Arguments]";function Ht(t){return tt(t)&&Z(t)==Dt}var Lt=Object.prototype,Bt=Lt.hasOwnProperty,Kt=Lt.propertyIsEnumerable,Vt=Ht(function(){return arguments}())?Ht:function(t){return tt(t)&&Bt.call(t,"callee")&&!Kt.call(t,"callee")};var Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Yt=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Wt=Yt&&Yt.exports===Gt?U.Buffer:void 0,Xt=(Wt?Wt.isBuffer:void 0)||function(){return!1},Qt=9007199254740991,Zt=/^(?:0|[1-9]\d*)$/;function te(t,e){var r=typeof t;return!!(e=null==e?Qt:e)&&("number"==r||"symbol"!=r&&Zt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=ee}var ne={};ne["[object Float32Array]"]=ne["[object Float64Array]"]=ne["[object Int8Array]"]=ne["[object Int16Array]"]=ne["[object Int32Array]"]=ne["[object Uint8Array]"]=ne["[object Uint8ClampedArray]"]=ne["[object Uint16Array]"]=ne["[object Uint32Array]"]=!0,ne["[object Arguments]"]=ne["[object Array]"]=ne["[object ArrayBuffer]"]=ne["[object Boolean]"]=ne["[object DataView]"]=ne["[object Date]"]=ne["[object Error]"]=ne["[object Function]"]=ne["[object Map]"]=ne["[object Number]"]=ne["[object Object]"]=ne["[object RegExp]"]=ne["[object Set]"]=ne["[object String]"]=ne["[object WeakMap]"]=!1;var oe,ie="object"==typeof exports&&exports&&!exports.nodeType&&exports,ae=ie&&"object"==typeof module&&module&&!module.nodeType&&module,ue=ae&&ae.exports===ie&&J.process,ce=function(){try{var t=ae&&ae.require&&ae.require("util").types;return t||ue&&ue.binding&&ue.binding("util")}catch(t){}}(),se=ce&&ce.isTypedArray,fe=se?(oe=se,function(t){return oe(t)}):function(t){return tt(t)&&re(t.length)&&!!ne[Z(t)]},le=Object.prototype.hasOwnProperty;function pe(t,e){var r=L(t),n=!r&&Vt(t),o=!r&&!n&&Xt(t),i=!r&&!n&&!o&&fe(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Te.prototype.set=function(t,e){var r=this.__data__,n=Ae(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Pe,qe=U["__core-js_shared__"],Ce=(Pe=/[^.]+$/.exec(qe&&qe.keys&&qe.keys.IE_PROTO||""))?"Symbol(src)_1."+Pe:"";var $e=Function.prototype.toString;function Ne(t){if(null!=t){try{return $e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ze=/^\[object .+?Constructor\]$/,Fe=Function.prototype,Re=Object.prototype,Ie=Fe.toString,Je=Re.hasOwnProperty,Me=RegExp("^"+Ie.call(Je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ue(t){return!(!ye(t)||function(t){return!!Ce&&Ce in t}(t))&&(je(t)?Me:ze).test(Ne(t))}function De(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Ue(r)?r:void 0}var He=De(U,"Map"),Le=De(Object,"create");var Be="__lodash_hash_undefined__",Ke=Object.prototype.hasOwnProperty;var Ve=Object.prototype.hasOwnProperty;var Ge="__lodash_hash_undefined__";function Ye(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&or?new er:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Kn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Bn);function Wn(t,e){return Yn(function(t,e,r){return e=Ln(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Ln(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!ye(r))return!1;var n=typeof e;return!!("number"==n?Oe(r)&&te(e,r.length):"string"==n&&e in r)&&ke(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},_o=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!mo(r,t)})).length},jo=function(t,e){if(void 0===e&&(e=null),Jt(t)){if(!e)return!0;if(mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Et(r)||(!1!==(e=_o(t))?!wo({arg:r},e):!bo(t)(r))})).length)})).length}return!1},Oo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),jo.apply(null,n)};function So(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Eo=function(t,e){var r;switch(!0){case"object"===t:return!Oo(e);case"array"===t:return!mo(e.arg);case!1!==(r=_o(t)):return!wo(e,r);default:return!bo(t)(e.arg)}},ko=function(t,e){return Et(t)?!0!==e.optional||Et(e.defaultvalue)?null:e.defaultvalue:t},Ao=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!mo(e))throw new C("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!mo(t))throw new C("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 So(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:So(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:So(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?ko(t,a):t,index:r,param:a,optional:i}}));default:throw So(5),new C("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!io(e)&&!(r.type.length>r.type.filter((function(e){return Eo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Eo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},xo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},To=function(t){return!io(t)};function Po(t,e){var r=oo(e,(function(t,e){return!t[go]}));return Wr(r,{})?t:function(t,e){var r={};return e=On(e),Ee(t,(function(t,n,o){En(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,On((function(t){return t.alias===e})),Ee)||e}))}function qo(t,e){return Zn(e,(function(e,r){var n,o;return Et(t[r])||!0===e[lo]&&To(t[r])?Qn({},e,((n={})[yo]=!0,n)):((o={})[ho]=t[r],o[fo]=e[fo],o[lo]=e[lo]||!1,o[po]=e[po]||!1,o[vo]=e[vo]||!1,o)}))}function Co(t,e){var r=function(t,e){var r=Po(t,e);return{pristineValues:Zn(oo(e,(function(t,e){return xo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:oo(e,(function(t,e){return!xo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[qo(n,r.checkAgainstAppProps),o]}var $o=function(t){return mo(t)?t:[t]};var No=function(t,e){return!mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},zo=function(t,e){try{return!!je(e)&&e.apply(null,[t])}catch(t){return!1}};function Fo(t){return function(e,r){if(e[yo])return e[ho];var n=function(t,e){var r,n=[[t[ho]],[(r={},r[fo]=$o(t[fo]),r[lo]=t[lo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw So("runValidationAction",r,e),new T(r,n);if(!1!==e[po]&&!No(e[ho],e[po]))throw So(po,e[po]),new x(r);if(!1!==e[vo]&&!zo(e[ho],e[vo]))throw So(vo,e[vo]),new P(r);return e[ho]}}function Ro(t,e,r,n){return void 0===t&&(t={}),Qn(function(t,e){var r=t[0],n=t[1],o=Zn(r,Fo(e));return Qn(o,n)}(Co(t,e),n),r)}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),mo(n)&&(a[f]=n),je(o)&&(a[p]=o),Pt(i)&&(a[h]=i),a}var Jo=uo,Mo=mo,Uo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Ao(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Do=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Ho=function(t){return function(e,r,n){return void 0===n&&(n={}),Ro(e,r,n,t)}}(Ao),Lo=function(t){return L(t)?t:[t]},Bo=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,Lo(t))}),Reflect.apply(t,null,r))}};function Ko(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(I)}},Go=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(I)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Yo=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Uo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(I)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xo=Array.isArray,Qo=void 0!==O?O:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Zo="object"==typeof Qo&&Qo&&Qo.Object===Object&&Qo,ti="object"==typeof self&&self&&self.Object===Object&&self,ei=(Zo||ti||Function("return this")()).Symbol,ri=Object.prototype,ni=ri.hasOwnProperty,oi=ri.toString,ii=ei?ei.toStringTag:void 0;var ai=Object.prototype.toString;var ui="[object Null]",ci="[object Undefined]",si=ei?ei.toStringTag:void 0;function fi(t){return null==t?void 0===t?ci:ui:si&&si in Object(t)?function(t){var e=ni.call(t,ii),r=t[ii];try{t[ii]=void 0;var n=!0}catch(t){}var o=oi.call(t);return n&&(e?t[ii]=r:delete t[ii]),o}(t):function(t){return ai.call(t)}(t)}var li=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function pi(t){return null!=t&&"object"==typeof t}var hi="[object Object]",di=Function.prototype,vi=Object.prototype,gi=di.toString,yi=vi.hasOwnProperty,bi=gi.call(Object);var mi=ei?ei.prototype:void 0,_i=(mi&&mi.toString,"[object String]");function wi(t){return"string"==typeof t||!Xo(t)&&pi(t)&&fi(t)==_i}var ji=function(t,e){return!!t.filter((function(t){return t===e})).length},Oi=function(t,e){var r=Object.keys(t);return ji(r,e)},Si=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},Ei=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ki="query",Ai="mutation",xi="socket",Ti="payload",Pi="condition",qi=function(){try{if(window||document)return!0}catch(t){}return!1},Ci=function(){try{if(!qi()&&Qo)return!0}catch(t){}return!1};var $i=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return qi()?"browser":Ci()?"node":"unknown"},e}(Error));var Ni=function(t){var e;return(e={}).args=t,e};var zi=function(t){return Oi(t,"data")&&!Oi(t,"error")?t.data:t},Fi=function(t){return function(t){if(!pi(t)||fi(t)!=hi)return!1;var e=li(t);if(null===e)return!0;var r=yi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&gi.call(r)==bi}(t)&&(Oi(t,ki)||Oi(t,Ai)||Oi(t,xi))},Ri=function(t,e){return void 0===e&&(e={}),Fi(e)?Promise.resolve(e):t.getContract()},Ii=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(Si(e,r,g),o),t.$only(Si(e,r,y),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ji=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Mi(t,e,r,n){var o=function(t,e,r,n){return Bo(Go,Yo,Wo)({},t,e,r,n)}(t,e,r,n);Ji(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(Si(t,n,g),r)})).catch((function(r){e.$trigger(Si(t,n,y),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ui=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Mi(t,n,e,r)}));var o={query:Ii(n,"query"),mutation:Ii(n,"mutation"),auth:Ii(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.4.0",o},Di=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=fa().key(e);t(la(r),r)}},remove:function(t){return fa().removeItem(t)},clearAll:function(){return fa().clear()}};function fa(){return ca.localStorage}function la(t){return fa().getItem(t)}var pa=Ki.trim,ha={name:"cookieStorage",read:function(t){if(!t||!ya(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(da.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;da.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:va,remove:ga,clearAll:function(){va((function(t,e){ga(e)}))}},da=Ki.Global.document;function va(t){for(var e=da.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(pa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ga(t){t&&ya(t)&&(da.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ya(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(da.cookie)}var ba=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ma="expire_mixin",_a=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ma);return{set:function(e,r,n,o){this.hasNamespace(ma)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ma)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ma)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var xa=[sa,ha],Ta=[ba,_a,Ea,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Aa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Aa.compress(this._serialize(r));t(e,n)}}}],Pa=ia.createStore(xa,Ta),qa=Ki.Global;function Ca(){return qa.sessionStorage}function $a(t){return Ca().getItem(t)}var Na=[{name:"sessionStorage",read:$a,write:function(t,e){return Ca().setItem(t,e)},each:function(t){for(var e=Ca().length-1;e>=0;e--){var r=Ca().key(e);t($a(r),r)}},remove:function(t){return Ca().removeItem(t)},clearAll:function(){return Ca().clear()}},ha],za=[ba,_a],Fa=ia.createStore(Na,za),Ra=Pa,Ia=Fa,Ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidCharacterError";var Ua="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ma("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ja.indexOf(n);return a};var Da=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ua(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ua(e)}};function Ha(t){this.message=t}Ha.prototype=new Error,Ha.prototype.name="InvalidTokenError";var La=function(t,e){if("string"!=typeof t)throw new Ha("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Da(t.split(".")[r]))}catch(t){throw new Ha("Invalid token specified: "+t.message)}},Ba=Ha;La.InvalidTokenError=Ba;var Ka,Va,Ga,Ya,Wa,Xa,Qa,Za,tu,eu=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function ru(t){if(Jo(t))return function(t){var e=t.iat||eu(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new C("Token has expired on "+r,t)}return t}(La(t));throw new C("Token must be a string!")}Do("HS256",["string"]),Do(!1,["boolean","number","string"],((Ka={})[h]="exp",Ka[s]=!0,Ka)),Do(!1,["boolean","number","string"],((Va={})[h]="nbf",Va[s]=!0,Va)),Do(!1,["boolean","string"],((Ga={})[h]="iss",Ga[s]=!0,Ga)),Do(!1,["boolean","string"],((Ya={})[h]="sub",Ya[s]=!0,Ya)),Do(!1,["boolean","string"],((Wa={})[h]="iss",Wa[s]=!0,Wa)),Do(!1,["boolean"],((Xa={})[s]=!0,Xa)),Do(!1,["boolean","string"],((Qa={})[s]=!0,Qa)),Do(!1,["boolean","string"],((Za={})[s]=!0,Za)),Do(!1,["boolean"],((tu={})[s]=!0,tu));var nu=u[0],ou=u[1],iu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},au={headers:{configurable:!0}};au.headers.set=function(t){this.extraHeader=t},iu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Qn({},{_cb:Ei()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Qn({},{method:nu,params:o},e))},iu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},iu.prototype.processJsonp=function(t){return zi(t)},iu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Jo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):zi(o)}),(function(t){throw e.cleanUp(),console.error(t),new $("Server side error",t)}))},iu.prototype.getHeaders=function(){return this.opts.enableAuth?Qn({},a,this.getAuthHeader(),this.extraHeader):Qn({},a,this.extraHeader)},iu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},iu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Qn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(R).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},iu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),wi(t)&&Xo(e)){var o=Ni(e);return!0===r?o:((n={})[t]=o,n)}throw new $i("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(R)},iu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Ti]=e,i[Pi]=r,!0===n)return i;if(wi(t))return(o={})[t]=i,o;throw new $i("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:ou}).then(R)},Object.defineProperties(iu.prototype,au);var uu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Mo(t)&&t.length>=2&&Reflect.apply(Ra.set,Ra,t),new q("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ra.get("endpoint")||[];ji(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ra.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ji(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=Ei();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ra.set,Ra,e)},r.jsonqlEndpoint.get=function(){var t=Ra.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ra.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ia.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=ru)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Fi(t))throw new q("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Fi(this.opts.contract)?this.opts.contract:Ra.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(iu))),cu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},su={hostname:Do([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Do("jsonql",["string"]),loginHandlerName:Do("login",["string"]),logoutHandlerName:Do("logout",["string"]),enableJsonp:Do(!1,["boolean"]),enableAuth:Do(!1,["boolean"]),useJwt:Do(!0,["boolean"]),useLocalstorage:Do(!0,["boolean"]),storageKey:Do("storageKey",["string"]),authKey:Do("authKey",["string"]),contractExpired:Do(0,["number"]),keepContract:Do(!0,["boolean"]),exposeContract:Do(!1,["boolean"]),showContractDesc:Do(!1,["boolean"]),contractKey:Do(!1,["boolean"]),contractKeyName:Do("X-JSONQL-CV-KEY",["string"]),enableTimeout:Do(!1,["boolean"]),timeout:Do(5e3,["number"]),returnInstance:Do(!1,["boolean"]),allowReturnRawToken:Do(!1,["boolean"]),debugOn:Do(!1,["boolean"])};var fu=new WeakMap,lu=new WeakMap;var pu=function(){this.__suspend__=null,this.queueStore=new Set},hu={$suspend:{configurable:!0},$queues:{configurable:!0}};hu.$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)},pu.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__},hu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},pu.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(pu.prototype,hu);var du=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){fu.set(this,t)},r.normalStore.get=function(){return fu.get(this)},r.lazyStore.set=function(t){lu.set(this,t)},r.lazyStore.get=function(){return lu.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}(pu));function vu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ho(t,su,cu)}(e),i=new uu(o,t),a=Ri(i,n),u=(r=o.debugOn,new du({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ui(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),vu(o,t)}})); //# sourceMappingURL=jsonql-client.static.js.map diff --git a/packages/http-client/dist/jsonql-client.umd.js b/packages/http-client/dist/jsonql-client.umd.js index 0285876f..2ba68026 100644 --- a/packages/http-client/dist/jsonql-client.umd.js +++ b/packages/http-client/dist/jsonql-client.umd.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&q(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&q(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||q(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&q(t)==_t}var jt=Object.prototype,Ot=jt.hasOwnProperty,St=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&Ot.call(t,"callee")&&!St.call(t,"callee")};var kt="object"==typeof exports&&exports&&!exports.nodeType&&exports,At=kt&&"object"==typeof module&&module&&!module.nodeType&&module,xt=At&&At.exports===kt?m.Buffer:void 0,Tt=(xt?xt.isBuffer:void 0)||function(){return!1},Pt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?Pt:e)&&("number"==r||"symbol"!=r&&qt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Dt=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[q(t)]},Ht=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&Tt(t),i=!r&&!n&&!o&&Dt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Oe="__lodash_hash_undefined__",Se=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var ke="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Sn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(On);function xn(t,e){return An(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Tn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Xn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Qn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Xn(t))?!Qn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Oo=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Xn(t)):return!Qn(e,r);default:return!Yn(t)(e.arg)}},So=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?So(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return Oo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Oo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},ko=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ao=function(t){return!In(t)};function xo(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return xr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function To(t,e){return qn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Hn]&&Ao(t[r])?Pn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Dn]=e[Dn],o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function Po(t,e){var r=function(t,e){var r=xo(t,e);return{pristineValues:qn(Fn(e,(function(t,e){return ko(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!ko(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[To(n,r.checkAgainstAppProps),o]}var qo=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Dn]=qo(t[Dn]),r[Hn]=t[Hn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}var zo=function(t,e){return Promise.resolve(Po(t,e))};function Fo(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=qn(r,No(e));return Pn(o,n)}(t,n)})).then((function(t){return Pn({},t,r)}))}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),Wn(n)&&(a[f]=n),te(o)&&(a[p]=o),ct(i)&&(a[h]=i),a}var Ro=Jn,Jo=Wn,Mo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Uo=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Do=function(t){return function(e,r,n){return void 0===n&&(n={}),Fo(e,r,n,t)}}(Eo),Ho=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ti=[fi,di],Pi=[mi,wi,ki,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=xi.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=xi.compress(this._serialize(r));t(e,n)}}}],qi=ai.createStore(Ti,Pi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function Ni(t){return $i().getItem(t)}var zi=[{name:"sessionStorage",read:Ni,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(Ni(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(zi,Fi),Ri=qi,Ji=Ii,Mi=Array.isArray,Ui=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Di="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Hi="object"==typeof self&&self&&self.Object===Object&&self,Li=(Di||Hi||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Xi="[object Undefined]",Qi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Xi:Wi:Qi&&Qi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Oa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Sa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Sa(e)?Promise.resolve(e):t.getContract()},ka="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidCharacterError";var xa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Aa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ka.indexOf(n);return a};var Ta=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(xa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return xa(e)}};function Pa(t){this.message=t}Pa.prototype=new Error,Pa.prototype.name="InvalidTokenError";var qa=function(t,e){if("string"!=typeof t)throw new Pa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ta(t.split(".")[r]))}catch(t){throw new Pa("Invalid token specified: "+t.message)}},Ca=Pa;qa.InvalidTokenError=Ca;var $a,Na,za,Fa,Ia,Ra,Ja,Ma,Ua,Da=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ha(t){if(Ro(t))return function(t){var e=t.iat||Da(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(qa(t));throw new vo("Token must be a string!")}Uo("HS256",["string"]),Uo(!1,["boolean","number","string"],(($a={})[h]="exp",$a[s]=!0,$a)),Uo(!1,["boolean","number","string"],((Na={})[h]="nbf",Na[s]=!0,Na)),Uo(!1,["boolean","string"],((za={})[h]="iss",za[s]=!0,za)),Uo(!1,["boolean","string"],((Fa={})[h]="sub",Fa[s]=!0,Fa)),Uo(!1,["boolean","string"],((Ia={})[h]="iss",Ia[s]=!0,Ia)),Uo(!1,["boolean"],((Ra={})[s]=!0,Ra)),Uo(!1,["boolean","string"],((Ja={})[s]=!0,Ja)),Uo(!1,["boolean","string"],((Ma={})[s]=!0,Ma)),Uo(!1,["boolean"],((Ua={})[s]=!0,Ua));var La=u[0],Ba=u[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Pn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Pn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Pn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Oa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Ro(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Oa(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Pn({},a,this.getAuthHeader(),this.extraHeader):Pn({},a,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Pn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(_o)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Jo(t)&&t.length>=2&&Reflect.apply(Ri.set,Ri,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ri.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ri.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ri.set,Ri,e)},r.jsonqlEndpoint.get=function(){var t=Ri.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ri.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ji.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ha)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Sa(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Sa(this.opts.contract)?this.opts.contract:Ri.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t){return j(t)?t:[t]},Wa=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,Ya(t))}),Reflect.apply(t,null,r))}};function Xa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Qa=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}},Za=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(wo)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},tu=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Mo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(wo)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},eu=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var ru=function(t,e,r,n){var o=function(t,e,r,n){return Wa(Za,tu,eu)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.3.3",o},nu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ou={hostname:Uo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Uo("jsonql",["string"]),loginHandlerName:Uo("login",["string"]),logoutHandlerName:Uo("logout",["string"]),enableJsonp:Uo(!1,["boolean"]),enableAuth:Uo(!1,["boolean"]),useJwt:Uo(!0,["boolean"]),useLocalstorage:Uo(!0,["boolean"]),storageKey:Uo("storageKey",["string"]),authKey:Uo("authKey",["string"]),contractExpired:Uo(0,["number"]),keepContract:Uo(!0,["boolean"]),exposeContract:Uo(!1,["boolean"]),showContractDesc:Uo(!1,["boolean"]),contractKey:Uo(!1,["boolean"]),contractKeyName:Uo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Uo(!1,["boolean"]),timeout:Uo(5e3,["number"]),returnInstance:Uo(!1,["boolean"]),allowReturnRawToken:Uo(!1,["boolean"]),debugOn:Uo(!1,["boolean"])};function iu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Do(t,ou,nu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return ru(r,n,e,t)}))}))}var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));function lu(t,e){var r;return iu((r=e.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}return function(t){return void 0===t&&(t={}),lu(o,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&q(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&q(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||q(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&q(t)==_t}var jt=Object.prototype,Ot=jt.hasOwnProperty,St=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&Ot.call(t,"callee")&&!St.call(t,"callee")};var kt="object"==typeof exports&&exports&&!exports.nodeType&&exports,At=kt&&"object"==typeof module&&module&&!module.nodeType&&module,xt=At&&At.exports===kt?m.Buffer:void 0,Tt=(xt?xt.isBuffer:void 0)||function(){return!1},Pt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?Pt:e)&&("number"==r||"symbol"!=r&&qt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Dt=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[q(t)]},Ht=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&Tt(t),i=!r&&!n&&!o&&Dt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Oe="__lodash_hash_undefined__",Se=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var ke="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Sn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(On);function xn(t,e){return An(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Tn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Xn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Qn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Xn(t))?!Qn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Oo=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Xn(t)):return!Qn(e,r);default:return!Yn(t)(e.arg)}},So=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?So(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return Oo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Oo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},ko=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ao=function(t){return!In(t)};function xo(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return xr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function To(t,e){return qn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Hn]&&Ao(t[r])?Pn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Dn]=e[Dn],o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function Po(t,e){var r=function(t,e){var r=xo(t,e);return{pristineValues:qn(Fn(e,(function(t,e){return ko(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!ko(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[To(n,r.checkAgainstAppProps),o]}var qo=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Dn]=qo(t[Dn]),r[Hn]=t[Hn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}var zo=function(t,e){return Promise.resolve(Po(t,e))};function Fo(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=qn(r,No(e));return Pn(o,n)}(t,n)})).then((function(t){return Pn({},t,r)}))}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),Wn(n)&&(a[f]=n),te(o)&&(a[p]=o),ct(i)&&(a[h]=i),a}var Ro=Jn,Jo=Wn,Mo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Uo=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Do=function(t){return function(e,r,n){return void 0===n&&(n={}),Fo(e,r,n,t)}}(Eo),Ho=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ti=[fi,di],Pi=[mi,wi,ki,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=xi.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=xi.compress(this._serialize(r));t(e,n)}}}],qi=ai.createStore(Ti,Pi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function Ni(t){return $i().getItem(t)}var zi=[{name:"sessionStorage",read:Ni,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(Ni(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(zi,Fi),Ri=qi,Ji=Ii,Mi=Array.isArray,Ui=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Di="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Hi="object"==typeof self&&self&&self.Object===Object&&self,Li=(Di||Hi||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Xi="[object Undefined]",Qi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Xi:Wi:Qi&&Qi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Oa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Sa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Sa(e)?Promise.resolve(e):t.getContract()},ka="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidCharacterError";var xa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Aa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ka.indexOf(n);return a};var Ta=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(xa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return xa(e)}};function Pa(t){this.message=t}Pa.prototype=new Error,Pa.prototype.name="InvalidTokenError";var qa=function(t,e){if("string"!=typeof t)throw new Pa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ta(t.split(".")[r]))}catch(t){throw new Pa("Invalid token specified: "+t.message)}},Ca=Pa;qa.InvalidTokenError=Ca;var $a,Na,za,Fa,Ia,Ra,Ja,Ma,Ua,Da=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ha(t){if(Ro(t))return function(t){var e=t.iat||Da(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(qa(t));throw new vo("Token must be a string!")}Uo("HS256",["string"]),Uo(!1,["boolean","number","string"],(($a={})[h]="exp",$a[s]=!0,$a)),Uo(!1,["boolean","number","string"],((Na={})[h]="nbf",Na[s]=!0,Na)),Uo(!1,["boolean","string"],((za={})[h]="iss",za[s]=!0,za)),Uo(!1,["boolean","string"],((Fa={})[h]="sub",Fa[s]=!0,Fa)),Uo(!1,["boolean","string"],((Ia={})[h]="iss",Ia[s]=!0,Ia)),Uo(!1,["boolean"],((Ra={})[s]=!0,Ra)),Uo(!1,["boolean","string"],((Ja={})[s]=!0,Ja)),Uo(!1,["boolean","string"],((Ma={})[s]=!0,Ma)),Uo(!1,["boolean"],((Ua={})[s]=!0,Ua));var La=u[0],Ba=u[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Pn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Pn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Pn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Oa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Ro(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Oa(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Pn({},a,this.getAuthHeader(),this.extraHeader):Pn({},a,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Pn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(_o)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Jo(t)&&t.length>=2&&Reflect.apply(Ri.set,Ri,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ri.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ri.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ri.set,Ri,e)},r.jsonqlEndpoint.get=function(){var t=Ri.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ri.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ji.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ha)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Sa(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Sa(this.opts.contract)?this.opts.contract:Ri.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t){return j(t)?t:[t]},Wa=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,Ya(t))}),Reflect.apply(t,null,r))}};function Xa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Qa=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}},Za=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(wo)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},tu=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Mo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(wo)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},eu=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var ru=function(t,e,r,n){var o=function(t,e,r,n){return Wa(Za,tu,eu)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.4.0",o},nu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ou={hostname:Uo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Uo("jsonql",["string"]),loginHandlerName:Uo("login",["string"]),logoutHandlerName:Uo("logout",["string"]),enableJsonp:Uo(!1,["boolean"]),enableAuth:Uo(!1,["boolean"]),useJwt:Uo(!0,["boolean"]),useLocalstorage:Uo(!0,["boolean"]),storageKey:Uo("storageKey",["string"]),authKey:Uo("authKey",["string"]),contractExpired:Uo(0,["number"]),keepContract:Uo(!0,["boolean"]),exposeContract:Uo(!1,["boolean"]),showContractDesc:Uo(!1,["boolean"]),contractKey:Uo(!1,["boolean"]),contractKeyName:Uo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Uo(!1,["boolean"]),timeout:Uo(5e3,["number"]),returnInstance:Uo(!1,["boolean"]),allowReturnRawToken:Uo(!1,["boolean"]),debugOn:Uo(!1,["boolean"])};function iu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Do(t,ou,nu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return ru(r,n,e,t)}))}))}var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));function lu(t,e){var r;return iu((r=e.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}return function(t){return void 0===t&&(t={}),lu(o,t)}})); //# sourceMappingURL=jsonql-client.umd.js.map diff --git a/packages/http-client/package.json b/packages/http-client/package.json index ddca6adf..cbfb0bbe 100755 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-client", - "version": "1.3.3", + "version": "1.4.0", "description": "jsonql http browser client using Fly.js", "main": "core.js", "module": "index.js", diff --git a/packages/http-client/static.js b/packages/http-client/static.js index 4c1fa037..cdc2da98 100644 --- a/packages/http-client/static.js +++ b/packages/http-client/static.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message",l="onResult",p="onError",h=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),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={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),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={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),g=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),y=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),b="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},m=function(){try{if(window||document)return!0}catch(t){}return!1},_=function(){try{if(!m()&&b)return!0}catch(t){}return!1};var w=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return m()?"browser":_()?"node":"unknown"},e}(Error),j=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,Error.captureStackTrace&&Error.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}(w),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},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"JsonqlTypeError"},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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},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,Error.captureStackTrace&&Error.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}(w),k=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,Error.captureStackTrace&&Error.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}(w),T=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),x=Object.freeze({__proto__:null,Jsonql406Error:h,Jsonql500Error:d,JsonqlAuthorisationError:v,JsonqlContractAuthError:g,JsonqlResolverAppError:y,JsonqlResolverNotFoundError:j,JsonqlEnumError:O,JsonqlTypeError:S,JsonqlCheckerError:E,JsonqlValidationError:A,JsonqlError:k,JsonqlServerError:T}),q=k,P=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function C(t){if(P(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&x[o])throw new x[r](i,a);throw new q(i,a)}return t}function $(t){if(Array.isArray(t))throw new A("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof h:throw new h(e,r);case t instanceof d:throw new d(e,r);case t instanceof v:throw new v(e,r);case t instanceof g:throw new g(e,r);case t instanceof y:throw new y(e,r);case t instanceof j:throw new j(e,r);case t instanceof O:throw new O(e,r);case t instanceof S:throw new S(e,r);case t instanceof E:throw new E(e,r);case t instanceof A:throw new A(e,r);case t instanceof T:throw new T(e,r);default:throw new k(e,r)}}var N="object"==typeof b&&b&&b.Object===Object&&b,z="object"==typeof self&&self&&self.Object===Object&&self,F=N||z||Function("return this")(),I=F.Symbol;function R(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&ot(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function _t(t){return void 0===t}var wt="[object Boolean]";var jt="[object Number]";function Ot(t){return function(t){return"number"==typeof t||Y(t)&&G(t)==jt}(t)&&t!=+t}var St="[object String]";function Et(t){return"string"==typeof t||!J(t)&&Y(t)&&G(t)==St}function At(t,e){return function(r){return t(e(r))}}var kt=At(Object.getPrototypeOf,Object),Tt="[object Object]",xt=Function.prototype,qt=Object.prototype,Pt=xt.toString,Ct=qt.hasOwnProperty,$t=Pt.call(Object);function Nt(t){if(!Y(t)||G(t)!=Tt)return!1;var e=kt(t);if(null===e)return!0;var r=Ct.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Pt.call(r)==$t}var zt,Ft=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[zt?a:++n];if(!1===e(o[u],u,o))break}return t};var It="[object Arguments]";function Rt(t){return Y(t)&&G(t)==It}var Jt=Object.prototype,Mt=Jt.hasOwnProperty,Ut=Jt.propertyIsEnumerable,Dt=Rt(function(){return arguments}())?Rt:function(t){return Y(t)&&Mt.call(t,"callee")&&!Ut.call(t,"callee")};var Ht="object"==typeof exports&&exports&&!exports.nodeType&&exports,Lt=Ht&&"object"==typeof module&&module&&!module.nodeType&&module,Bt=Lt&&Lt.exports===Ht?F.Buffer:void 0,Kt=(Bt?Bt.isBuffer:void 0)||function(){return!1},Vt=9007199254740991,Gt=/^(?:0|[1-9]\d*)$/;function Yt(t,e){var r=typeof t;return!!(e=null==e?Vt:e)&&("number"==r||"symbol"!=r&&Gt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Wt}var Xt={};Xt["[object Float32Array]"]=Xt["[object Float64Array]"]=Xt["[object Int8Array]"]=Xt["[object Int16Array]"]=Xt["[object Int32Array]"]=Xt["[object Uint8Array]"]=Xt["[object Uint8ClampedArray]"]=Xt["[object Uint16Array]"]=Xt["[object Uint32Array]"]=!0,Xt["[object Arguments]"]=Xt["[object Array]"]=Xt["[object ArrayBuffer]"]=Xt["[object Boolean]"]=Xt["[object DataView]"]=Xt["[object Date]"]=Xt["[object Error]"]=Xt["[object Function]"]=Xt["[object Map]"]=Xt["[object Number]"]=Xt["[object Object]"]=Xt["[object RegExp]"]=Xt["[object Set]"]=Xt["[object String]"]=Xt["[object WeakMap]"]=!1;var Zt,te="object"==typeof exports&&exports&&!exports.nodeType&&exports,ee=te&&"object"==typeof module&&module&&!module.nodeType&&module,re=ee&&ee.exports===te&&N.process,ne=function(){try{var t=ee&&ee.require&&ee.require("util").types;return t||re&&re.binding&&re.binding("util")}catch(t){}}(),oe=ne&&ne.isTypedArray,ie=oe?(Zt=oe,function(t){return Zt(t)}):function(t){return Y(t)&&Qt(t.length)&&!!Xt[G(t)]},ae=Object.prototype.hasOwnProperty;function ue(t,e){var r=J(t),n=!r&&Dt(t),o=!r&&!n&&Kt(t),i=!r&&!n&&!o&&ie(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Se.prototype.set=function(t,e){var r=this.__data__,n=je(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Ee,Ae=F["__core-js_shared__"],ke=(Ee=/[^.]+$/.exec(Ae&&Ae.keys&&Ae.keys.IE_PROTO||""))?"Symbol(src)_1."+Ee:"";var Te=Function.prototype.toString;function xe(t){if(null!=t){try{return Te.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var qe=/^\[object .+?Constructor\]$/,Pe=Function.prototype,Ce=Object.prototype,$e=Pe.toString,Ne=Ce.hasOwnProperty,ze=RegExp("^"+$e.call(Ne).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Fe(t){return!(!pe(t)||function(t){return!!ke&&ke in t}(t))&&(ye(t)?ze:qe).test(xe(t))}function Ie(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Fe(r)?r:void 0}var Re=Ie(F,"Map"),Je=Ie(Object,"create");var Me="__lodash_hash_undefined__",Ue=Object.prototype.hasOwnProperty;var De=Object.prototype.hasOwnProperty;var He="__lodash_hash_undefined__";function Le(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ze?new We:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Un)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Mn);function Bn(t,e){return Ln(function(t,e,r){return e=Jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!pe(r))return!1;var n=typeof e;return!!("number"==n?be(r)&&Yt(e,r.length):"string"==n&&e in r)&&we(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},go=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!po(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ho(r,t)})).length},yo=function(t,e){if(void 0===e&&(e=null),Nt(t)){if(!e)return!0;if(ho(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!_t(r)||(!1!==(e=vo(t))?!go({arg:r},e):!po(t)(r))})).length)})).length}return!1},bo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),yo.apply(null,n)};function mo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var _o=function(t,e){var r;switch(!0){case"object"===t:return!bo(e);case"array"===t:return!ho(e.arg);case!1!==(r=vo(t)):return!go(e,r);default:return!po(t)(e.arg)}},wo=function(t,e){return _t(t)?!0!==e.optional||_t(e.defaultvalue)?null:e.defaultvalue:t},jo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ho(e))throw new k("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ho(t))throw new k("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 mo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:mo(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:mo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?wo(t,a):t,index:r,param:a,optional:i}}));default:throw mo(5),new k("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!to(e)&&!(r.type.length>r.type.filter((function(e){return _o(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return _o(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},So=function(t){return!to(t)};function Eo(t,e){var r=Zn(e,(function(t,e){return!t[fo]}));return Br(r,{})?t:function(t,e){var r={};return e=bn(e),_e(t,(function(t,n,o){_n(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,bn((function(t){return t.alias===e})),_e)||e}))}function Ao(t,e){return Gn(e,(function(e,r){var n,o;return _t(t[r])||!0===e[ao]&&So(t[r])?Vn({},e,((n={})[lo]=!0,n)):((o={})[co]=t[r],o[io]=e[io],o[ao]=e[ao]||!1,o[uo]=e[uo]||!1,o[so]=e[so]||!1,o)}))}function ko(t,e){var r=function(t,e){var r=Eo(t,e);return{pristineValues:Gn(Zn(e,(function(t,e){return Oo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Zn(e,(function(t,e){return!Oo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ao(n,r.checkAgainstAppProps),o]}var To=function(t){return ho(t)?t:[t]};var xo=function(t,e){return!ho(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},qo=function(t,e){try{return!!ye(e)&&e.apply(null,[t])}catch(t){return!1}};function Po(t){return function(e,r){if(e[lo])return e[co];var n=function(t,e){var r,n=[[t[co]],[(r={},r[io]=To(t[io]),r[ao]=t[ao],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw mo("runValidationAction",r,e),new S(r,n);if(!1!==e[uo]&&!xo(e[co],e[uo]))throw mo(uo,e[uo]),new O(r);if(!1!==e[so]&&!qo(e[co],e[so]))throw mo(so,e[so]),new E(r);return e[co]}}function Co(t,e,r,n){return void 0===t&&(t={}),Vn(function(t,e){var r=t[0],n=t[1],o=Gn(r,Po(e));return Vn(o,n)}(ko(t,e),n),r)}function $o(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),ho(s)&&(p[i]=s),ye(f)&&(p[u]=f),Et(l)&&(p[c]=l),p}var No=ro,zo=ho,Fo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=jo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Io=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return $o.apply(null,[t,e,n,a,s,f])},Ro=function(t){return function(e,r,n){return void 0===n&&(n={}),Co(e,r,n,t)}}(jo),Jo=function(t){return J(t)?t:[t]},Mo=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,Jo(t))}),Reflect.apply(t,null,r))}};function Uo(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Do=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch($)}},Ho=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch($)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Lo=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Fo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch($)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Bo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Ko=Array.isArray,Vo=void 0!==b?b:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Go="object"==typeof Vo&&Vo&&Vo.Object===Object&&Vo,Yo="object"==typeof self&&self&&self.Object===Object&&self,Wo=(Go||Yo||Function("return this")()).Symbol,Qo=Object.prototype,Xo=Qo.hasOwnProperty,Zo=Qo.toString,ti=Wo?Wo.toStringTag:void 0;var ei=Object.prototype.toString;var ri="[object Null]",ni="[object Undefined]",oi=Wo?Wo.toStringTag:void 0;function ii(t){return null==t?void 0===t?ni:ri:oi&&oi in Object(t)?function(t){var e=Xo.call(t,ti),r=t[ti];try{t[ti]=void 0;var n=!0}catch(t){}var o=Zo.call(t);return n&&(e?t[ti]=r:delete t[ti]),o}(t):function(t){return ei.call(t)}(t)}var ai=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ui(t){return null!=t&&"object"==typeof t}var ci="[object Object]",si=Function.prototype,fi=Object.prototype,li=si.toString,pi=fi.hasOwnProperty,hi=li.call(Object);var di=Wo?Wo.prototype:void 0,vi=(di&&di.toString,"[object String]");function gi(t){return"string"==typeof t||!Ko(t)&&ui(t)&&ii(t)==vi}var yi=function(t,e){return!!t.filter((function(t){return t===e})).length},bi=function(t,e){var r=Object.keys(t);return yi(r,e)},mi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},_i=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},wi="query",ji="mutation",Oi="socket",Si="payload",Ei="condition",Ai=function(){try{if(window||document)return!0}catch(t){}return!1},ki=function(){try{if(!Ai()&&Vo)return!0}catch(t){}return!1};var Ti=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Ai()?"browser":ki()?"node":"unknown"},e}(Error));var xi=function(t){var e;return(e={}).args=t,e};var qi=function(t){return bi(t,"data")&&!bi(t,"error")?t.data:t},Pi=function(t){return function(t){if(!ui(t)||ii(t)!=ci)return!1;var e=ai(t);if(null===e)return!0;var r=pi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&li.call(r)==hi}(t)&&(bi(t,wi)||bi(t,ji)||bi(t,Oi))},Ci=function(t,e){return void 0===e&&(e={}),Pi(e)?Promise.resolve(e):t.getContract()},$i=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(mi(e,r,l),o),t.$only(mi(e,r,p),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ni=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function zi(t,e,r,n){var o=function(t,e,r,n){return Mo(Ho,Lo,Bo)({},t,e,r,n)}(t,e,r,n);Ni(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(mi(t,n,l),r)})).catch((function(r){e.$trigger(mi(t,n,p),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Fi=function(t,e,r,n){n.$suspend=!0,r.then((function(r){zi(t,n,e,r)}));var o={query:$i(n,"query"),mutation:$i(n,"mutation"),auth:$i(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.3.3",o},Ii="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Ri=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=aa().key(e);t(ua(r),r)}},remove:function(t){return aa().removeItem(t)},clearAll:function(){return aa().clear()}};function aa(){return oa.localStorage}function ua(t){return aa().getItem(t)}var ca=Di.trim,sa={name:"cookieStorage",read:function(t){if(!t||!ha(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(fa.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;fa.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:la,remove:pa,clearAll:function(){la((function(t,e){pa(e)}))}},fa=Di.Global.document;function la(t){for(var e=fa.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ca(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function pa(t){t&&ha(t)&&(fa.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ha(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(fa.cookie)}var da=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var va="expire_mixin",ga=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+va);return{set:function(e,r,n,o){this.hasNamespace(va)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(va)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(va)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Sa=[ia,sa],Ea=[da,ga,wa,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Oa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Oa.compress(this._serialize(r));t(e,n)}}}],Aa=ea.createStore(Sa,Ea),ka=Di.Global;function Ta(){return ka.sessionStorage}function xa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:xa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(xa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},sa],Pa=[da,ga],Ca=ea.createStore(qa,Pa),$a=Aa,Na=Ca,za="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Fa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=za.indexOf(n);return a};var Ra=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ja(t){this.message=t}Ja.prototype=new Error,Ja.prototype.name="InvalidTokenError";var Ma=function(t,e){if("string"!=typeof t)throw new Ja("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ra(t.split(".")[r]))}catch(t){throw new Ja("Invalid token specified: "+t.message)}},Ua=Ja;Ma.InvalidTokenError=Ua;var Da,Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Xa(t){if(No(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new k("Token has expired on "+r,t)}return t}(Ma(t));throw new k("Token must be a string!")}Io("HS256",["string"]),Io(!1,["boolean","number","string"],((Da={})[c]="exp",Da[o]=!0,Da)),Io(!1,["boolean","number","string"],((Ha={})[c]="nbf",Ha[o]=!0,Ha)),Io(!1,["boolean","string"],((La={})[c]="iss",La[o]=!0,La)),Io(!1,["boolean","string"],((Ba={})[c]="sub",Ba[o]=!0,Ba)),Io(!1,["boolean","string"],((Ka={})[c]="iss",Ka[o]=!0,Ka)),Io(!1,["boolean"],((Va={})[o]=!0,Va)),Io(!1,["boolean","string"],((Ga={})[o]=!0,Ga)),Io(!1,["boolean","string"],((Ya={})[o]=!0,Ya)),Io(!1,["boolean"],((Wa={})[o]=!0,Wa));var Za=r[0],tu=r[1],eu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},ru={headers:{configurable:!0}};ru.headers.set=function(t){this.extraHeader=t},eu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Vn({},{_cb:_i()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Vn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Vn({},{method:Za,params:o},e))},eu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},eu.prototype.processJsonp=function(t){return qi(t)},eu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=No(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):qi(o)}),(function(t){throw e.cleanUp(),console.error(t),new T("Server side error",t)}))},eu.prototype.getHeaders=function(){return this.opts.enableAuth?Vn({},e,this.getAuthHeader(),this.extraHeader):Vn({},e,this.extraHeader)},eu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},eu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Vn({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(C).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},eu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),gi(t)&&Ko(e)){var o=xi(e);return!0===r?o:((n={})[t]=o,n)}throw new Ti("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(C)},eu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Si]=e,i[Ei]=r,!0===n)return i;if(gi(t))return(o={})[t]=i,o;throw new Ti("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:tu}).then(C)},Object.defineProperties(eu.prototype,ru);var nu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply($a.set,$a,t),new A("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=$a.get("endpoint")||[];yi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=$a.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!yi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=_i();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply($a.set,$a,e)},r.jsonqlEndpoint.get=function(){var t=$a.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return($a.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Na.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Xa)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Pi(t))throw new A("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Pi(this.opts.contract)?this.opts.contract:$a.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(eu))),ou={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},iu={hostname:Io([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Io("jsonql",["string"]),loginHandlerName:Io("login",["string"]),logoutHandlerName:Io("logout",["string"]),enableJsonp:Io(!1,["boolean"]),enableAuth:Io(!1,["boolean"]),useJwt:Io(!0,["boolean"]),useLocalstorage:Io(!0,["boolean"]),storageKey:Io("storageKey",["string"]),authKey:Io("authKey",["string"]),contractExpired:Io(0,["number"]),keepContract:Io(!0,["boolean"]),exposeContract:Io(!1,["boolean"]),showContractDesc:Io(!1,["boolean"]),contractKey:Io(!1,["boolean"]),contractKeyName:Io("X-JSONQL-CV-KEY",["string"]),enableTimeout:Io(!1,["boolean"]),timeout:Io(5e3,["number"]),returnInstance:Io(!1,["boolean"]),allowReturnRawToken:Io(!1,["boolean"]),debugOn:Io(!1,["boolean"])};var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ro(t,iu,ou)}(e),i=new nu(o,t),a=Ci(i,n),u=(r=o.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Fi(i,o,a,u);return c.eventEmitter=u,c}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message",l="onResult",p="onError",h=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),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={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),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={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),g=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),y=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),b="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},m=function(){try{if(window||document)return!0}catch(t){}return!1},_=function(){try{if(!m()&&b)return!0}catch(t){}return!1};var w=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return m()?"browser":_()?"node":"unknown"},e}(Error),j=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,Error.captureStackTrace&&Error.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}(w),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},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"JsonqlTypeError"},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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},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,Error.captureStackTrace&&Error.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}(w),k=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,Error.captureStackTrace&&Error.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}(w),T=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),x=Object.freeze({__proto__:null,Jsonql406Error:h,Jsonql500Error:d,JsonqlAuthorisationError:v,JsonqlContractAuthError:g,JsonqlResolverAppError:y,JsonqlResolverNotFoundError:j,JsonqlEnumError:O,JsonqlTypeError:S,JsonqlCheckerError:E,JsonqlValidationError:A,JsonqlError:k,JsonqlServerError:T}),q=k,P=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function C(t){if(P(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&x[o])throw new x[r](i,a);throw new q(i,a)}return t}function $(t){if(Array.isArray(t))throw new A("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof h:throw new h(e,r);case t instanceof d:throw new d(e,r);case t instanceof v:throw new v(e,r);case t instanceof g:throw new g(e,r);case t instanceof y:throw new y(e,r);case t instanceof j:throw new j(e,r);case t instanceof O:throw new O(e,r);case t instanceof S:throw new S(e,r);case t instanceof E:throw new E(e,r);case t instanceof A:throw new A(e,r);case t instanceof T:throw new T(e,r);default:throw new k(e,r)}}var N="object"==typeof b&&b&&b.Object===Object&&b,z="object"==typeof self&&self&&self.Object===Object&&self,F=N||z||Function("return this")(),I=F.Symbol;function R(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&ot(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function _t(t){return void 0===t}var wt="[object Boolean]";var jt="[object Number]";function Ot(t){return function(t){return"number"==typeof t||Y(t)&&G(t)==jt}(t)&&t!=+t}var St="[object String]";function Et(t){return"string"==typeof t||!J(t)&&Y(t)&&G(t)==St}function At(t,e){return function(r){return t(e(r))}}var kt=At(Object.getPrototypeOf,Object),Tt="[object Object]",xt=Function.prototype,qt=Object.prototype,Pt=xt.toString,Ct=qt.hasOwnProperty,$t=Pt.call(Object);function Nt(t){if(!Y(t)||G(t)!=Tt)return!1;var e=kt(t);if(null===e)return!0;var r=Ct.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Pt.call(r)==$t}var zt,Ft=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[zt?a:++n];if(!1===e(o[u],u,o))break}return t};var It="[object Arguments]";function Rt(t){return Y(t)&&G(t)==It}var Jt=Object.prototype,Mt=Jt.hasOwnProperty,Ut=Jt.propertyIsEnumerable,Dt=Rt(function(){return arguments}())?Rt:function(t){return Y(t)&&Mt.call(t,"callee")&&!Ut.call(t,"callee")};var Ht="object"==typeof exports&&exports&&!exports.nodeType&&exports,Lt=Ht&&"object"==typeof module&&module&&!module.nodeType&&module,Bt=Lt&&Lt.exports===Ht?F.Buffer:void 0,Kt=(Bt?Bt.isBuffer:void 0)||function(){return!1},Vt=9007199254740991,Gt=/^(?:0|[1-9]\d*)$/;function Yt(t,e){var r=typeof t;return!!(e=null==e?Vt:e)&&("number"==r||"symbol"!=r&&Gt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Wt}var Xt={};Xt["[object Float32Array]"]=Xt["[object Float64Array]"]=Xt["[object Int8Array]"]=Xt["[object Int16Array]"]=Xt["[object Int32Array]"]=Xt["[object Uint8Array]"]=Xt["[object Uint8ClampedArray]"]=Xt["[object Uint16Array]"]=Xt["[object Uint32Array]"]=!0,Xt["[object Arguments]"]=Xt["[object Array]"]=Xt["[object ArrayBuffer]"]=Xt["[object Boolean]"]=Xt["[object DataView]"]=Xt["[object Date]"]=Xt["[object Error]"]=Xt["[object Function]"]=Xt["[object Map]"]=Xt["[object Number]"]=Xt["[object Object]"]=Xt["[object RegExp]"]=Xt["[object Set]"]=Xt["[object String]"]=Xt["[object WeakMap]"]=!1;var Zt,te="object"==typeof exports&&exports&&!exports.nodeType&&exports,ee=te&&"object"==typeof module&&module&&!module.nodeType&&module,re=ee&&ee.exports===te&&N.process,ne=function(){try{var t=ee&&ee.require&&ee.require("util").types;return t||re&&re.binding&&re.binding("util")}catch(t){}}(),oe=ne&&ne.isTypedArray,ie=oe?(Zt=oe,function(t){return Zt(t)}):function(t){return Y(t)&&Qt(t.length)&&!!Xt[G(t)]},ae=Object.prototype.hasOwnProperty;function ue(t,e){var r=J(t),n=!r&&Dt(t),o=!r&&!n&&Kt(t),i=!r&&!n&&!o&&ie(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Se.prototype.set=function(t,e){var r=this.__data__,n=je(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Ee,Ae=F["__core-js_shared__"],ke=(Ee=/[^.]+$/.exec(Ae&&Ae.keys&&Ae.keys.IE_PROTO||""))?"Symbol(src)_1."+Ee:"";var Te=Function.prototype.toString;function xe(t){if(null!=t){try{return Te.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var qe=/^\[object .+?Constructor\]$/,Pe=Function.prototype,Ce=Object.prototype,$e=Pe.toString,Ne=Ce.hasOwnProperty,ze=RegExp("^"+$e.call(Ne).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Fe(t){return!(!pe(t)||function(t){return!!ke&&ke in t}(t))&&(ye(t)?ze:qe).test(xe(t))}function Ie(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Fe(r)?r:void 0}var Re=Ie(F,"Map"),Je=Ie(Object,"create");var Me="__lodash_hash_undefined__",Ue=Object.prototype.hasOwnProperty;var De=Object.prototype.hasOwnProperty;var He="__lodash_hash_undefined__";function Le(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ze?new We:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Un)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Mn);function Bn(t,e){return Ln(function(t,e,r){return e=Jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!pe(r))return!1;var n=typeof e;return!!("number"==n?be(r)&&Yt(e,r.length):"string"==n&&e in r)&&we(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},go=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!po(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ho(r,t)})).length},yo=function(t,e){if(void 0===e&&(e=null),Nt(t)){if(!e)return!0;if(ho(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!_t(r)||(!1!==(e=vo(t))?!go({arg:r},e):!po(t)(r))})).length)})).length}return!1},bo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),yo.apply(null,n)};function mo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var _o=function(t,e){var r;switch(!0){case"object"===t:return!bo(e);case"array"===t:return!ho(e.arg);case!1!==(r=vo(t)):return!go(e,r);default:return!po(t)(e.arg)}},wo=function(t,e){return _t(t)?!0!==e.optional||_t(e.defaultvalue)?null:e.defaultvalue:t},jo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ho(e))throw new k("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ho(t))throw new k("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 mo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:mo(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:mo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?wo(t,a):t,index:r,param:a,optional:i}}));default:throw mo(5),new k("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!to(e)&&!(r.type.length>r.type.filter((function(e){return _o(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return _o(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},So=function(t){return!to(t)};function Eo(t,e){var r=Zn(e,(function(t,e){return!t[fo]}));return Br(r,{})?t:function(t,e){var r={};return e=bn(e),_e(t,(function(t,n,o){_n(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,bn((function(t){return t.alias===e})),_e)||e}))}function Ao(t,e){return Gn(e,(function(e,r){var n,o;return _t(t[r])||!0===e[ao]&&So(t[r])?Vn({},e,((n={})[lo]=!0,n)):((o={})[co]=t[r],o[io]=e[io],o[ao]=e[ao]||!1,o[uo]=e[uo]||!1,o[so]=e[so]||!1,o)}))}function ko(t,e){var r=function(t,e){var r=Eo(t,e);return{pristineValues:Gn(Zn(e,(function(t,e){return Oo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Zn(e,(function(t,e){return!Oo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ao(n,r.checkAgainstAppProps),o]}var To=function(t){return ho(t)?t:[t]};var xo=function(t,e){return!ho(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},qo=function(t,e){try{return!!ye(e)&&e.apply(null,[t])}catch(t){return!1}};function Po(t){return function(e,r){if(e[lo])return e[co];var n=function(t,e){var r,n=[[t[co]],[(r={},r[io]=To(t[io]),r[ao]=t[ao],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw mo("runValidationAction",r,e),new S(r,n);if(!1!==e[uo]&&!xo(e[co],e[uo]))throw mo(uo,e[uo]),new O(r);if(!1!==e[so]&&!qo(e[co],e[so]))throw mo(so,e[so]),new E(r);return e[co]}}function Co(t,e,r,n){return void 0===t&&(t={}),Vn(function(t,e){var r=t[0],n=t[1],o=Gn(r,Po(e));return Vn(o,n)}(ko(t,e),n),r)}function $o(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),ho(s)&&(p[i]=s),ye(f)&&(p[u]=f),Et(l)&&(p[c]=l),p}var No=ro,zo=ho,Fo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=jo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Io=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return $o.apply(null,[t,e,n,a,s,f])},Ro=function(t){return function(e,r,n){return void 0===n&&(n={}),Co(e,r,n,t)}}(jo),Jo=function(t){return J(t)?t:[t]},Mo=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,Jo(t))}),Reflect.apply(t,null,r))}};function Uo(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Do=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch($)}},Ho=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch($)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Lo=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Fo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch($)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Bo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Ko=Array.isArray,Vo=void 0!==b?b:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Go="object"==typeof Vo&&Vo&&Vo.Object===Object&&Vo,Yo="object"==typeof self&&self&&self.Object===Object&&self,Wo=(Go||Yo||Function("return this")()).Symbol,Qo=Object.prototype,Xo=Qo.hasOwnProperty,Zo=Qo.toString,ti=Wo?Wo.toStringTag:void 0;var ei=Object.prototype.toString;var ri="[object Null]",ni="[object Undefined]",oi=Wo?Wo.toStringTag:void 0;function ii(t){return null==t?void 0===t?ni:ri:oi&&oi in Object(t)?function(t){var e=Xo.call(t,ti),r=t[ti];try{t[ti]=void 0;var n=!0}catch(t){}var o=Zo.call(t);return n&&(e?t[ti]=r:delete t[ti]),o}(t):function(t){return ei.call(t)}(t)}var ai=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ui(t){return null!=t&&"object"==typeof t}var ci="[object Object]",si=Function.prototype,fi=Object.prototype,li=si.toString,pi=fi.hasOwnProperty,hi=li.call(Object);var di=Wo?Wo.prototype:void 0,vi=(di&&di.toString,"[object String]");function gi(t){return"string"==typeof t||!Ko(t)&&ui(t)&&ii(t)==vi}var yi=function(t,e){return!!t.filter((function(t){return t===e})).length},bi=function(t,e){var r=Object.keys(t);return yi(r,e)},mi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},_i=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},wi="query",ji="mutation",Oi="socket",Si="payload",Ei="condition",Ai=function(){try{if(window||document)return!0}catch(t){}return!1},ki=function(){try{if(!Ai()&&Vo)return!0}catch(t){}return!1};var Ti=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Ai()?"browser":ki()?"node":"unknown"},e}(Error));var xi=function(t){var e;return(e={}).args=t,e};var qi=function(t){return bi(t,"data")&&!bi(t,"error")?t.data:t},Pi=function(t){return function(t){if(!ui(t)||ii(t)!=ci)return!1;var e=ai(t);if(null===e)return!0;var r=pi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&li.call(r)==hi}(t)&&(bi(t,wi)||bi(t,ji)||bi(t,Oi))},Ci=function(t,e){return void 0===e&&(e={}),Pi(e)?Promise.resolve(e):t.getContract()},$i=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(mi(e,r,l),o),t.$only(mi(e,r,p),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ni=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function zi(t,e,r,n){var o=function(t,e,r,n){return Mo(Ho,Lo,Bo)({},t,e,r,n)}(t,e,r,n);Ni(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(mi(t,n,l),r)})).catch((function(r){e.$trigger(mi(t,n,p),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Fi=function(t,e,r,n){n.$suspend=!0,r.then((function(r){zi(t,n,e,r)}));var o={query:$i(n,"query"),mutation:$i(n,"mutation"),auth:$i(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.4.0",o},Ii="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Ri=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=aa().key(e);t(ua(r),r)}},remove:function(t){return aa().removeItem(t)},clearAll:function(){return aa().clear()}};function aa(){return oa.localStorage}function ua(t){return aa().getItem(t)}var ca=Di.trim,sa={name:"cookieStorage",read:function(t){if(!t||!ha(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(fa.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;fa.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:la,remove:pa,clearAll:function(){la((function(t,e){pa(e)}))}},fa=Di.Global.document;function la(t){for(var e=fa.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ca(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function pa(t){t&&ha(t)&&(fa.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ha(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(fa.cookie)}var da=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var va="expire_mixin",ga=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+va);return{set:function(e,r,n,o){this.hasNamespace(va)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(va)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(va)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Sa=[ia,sa],Ea=[da,ga,wa,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Oa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Oa.compress(this._serialize(r));t(e,n)}}}],Aa=ea.createStore(Sa,Ea),ka=Di.Global;function Ta(){return ka.sessionStorage}function xa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:xa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(xa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},sa],Pa=[da,ga],Ca=ea.createStore(qa,Pa),$a=Aa,Na=Ca,za="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Fa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=za.indexOf(n);return a};var Ra=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ja(t){this.message=t}Ja.prototype=new Error,Ja.prototype.name="InvalidTokenError";var Ma=function(t,e){if("string"!=typeof t)throw new Ja("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ra(t.split(".")[r]))}catch(t){throw new Ja("Invalid token specified: "+t.message)}},Ua=Ja;Ma.InvalidTokenError=Ua;var Da,Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Xa(t){if(No(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new k("Token has expired on "+r,t)}return t}(Ma(t));throw new k("Token must be a string!")}Io("HS256",["string"]),Io(!1,["boolean","number","string"],((Da={})[c]="exp",Da[o]=!0,Da)),Io(!1,["boolean","number","string"],((Ha={})[c]="nbf",Ha[o]=!0,Ha)),Io(!1,["boolean","string"],((La={})[c]="iss",La[o]=!0,La)),Io(!1,["boolean","string"],((Ba={})[c]="sub",Ba[o]=!0,Ba)),Io(!1,["boolean","string"],((Ka={})[c]="iss",Ka[o]=!0,Ka)),Io(!1,["boolean"],((Va={})[o]=!0,Va)),Io(!1,["boolean","string"],((Ga={})[o]=!0,Ga)),Io(!1,["boolean","string"],((Ya={})[o]=!0,Ya)),Io(!1,["boolean"],((Wa={})[o]=!0,Wa));var Za=r[0],tu=r[1],eu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},ru={headers:{configurable:!0}};ru.headers.set=function(t){this.extraHeader=t},eu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Vn({},{_cb:_i()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Vn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Vn({},{method:Za,params:o},e))},eu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},eu.prototype.processJsonp=function(t){return qi(t)},eu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=No(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):qi(o)}),(function(t){throw e.cleanUp(),console.error(t),new T("Server side error",t)}))},eu.prototype.getHeaders=function(){return this.opts.enableAuth?Vn({},e,this.getAuthHeader(),this.extraHeader):Vn({},e,this.extraHeader)},eu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},eu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Vn({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(C).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},eu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),gi(t)&&Ko(e)){var o=xi(e);return!0===r?o:((n={})[t]=o,n)}throw new Ti("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(C)},eu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Si]=e,i[Ei]=r,!0===n)return i;if(gi(t))return(o={})[t]=i,o;throw new Ti("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:tu}).then(C)},Object.defineProperties(eu.prototype,ru);var nu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply($a.set,$a,t),new A("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=$a.get("endpoint")||[];yi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=$a.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!yi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=_i();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply($a.set,$a,e)},r.jsonqlEndpoint.get=function(){var t=$a.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return($a.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Na.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Xa)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Pi(t))throw new A("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Pi(this.opts.contract)?this.opts.contract:$a.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(eu))),ou={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},iu={hostname:Io([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Io("jsonql",["string"]),loginHandlerName:Io("login",["string"]),logoutHandlerName:Io("logout",["string"]),enableJsonp:Io(!1,["boolean"]),enableAuth:Io(!1,["boolean"]),useJwt:Io(!0,["boolean"]),useLocalstorage:Io(!0,["boolean"]),storageKey:Io("storageKey",["string"]),authKey:Io("authKey",["string"]),contractExpired:Io(0,["number"]),keepContract:Io(!0,["boolean"]),exposeContract:Io(!1,["boolean"]),showContractDesc:Io(!1,["boolean"]),contractKey:Io(!1,["boolean"]),contractKeyName:Io("X-JSONQL-CV-KEY",["string"]),enableTimeout:Io(!1,["boolean"]),timeout:Io(5e3,["number"]),returnInstance:Io(!1,["boolean"]),allowReturnRawToken:Io(!1,["boolean"]),debugOn:Io(!1,["boolean"])};var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ro(t,iu,ou)}(e),i=new nu(o,t),a=Ci(i,n),u=(r=o.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Fi(i,o,a,u);return c.eventEmitter=u,c}})); //# sourceMappingURL=static.js.map diff --git a/packages/http-client/tests/qunit/run-qunit-setup.js b/packages/http-client/tests/qunit/run-qunit-setup.js index 45bd02a1..39c88914 100644 --- a/packages/http-client/tests/qunit/run-qunit-setup.js +++ b/packages/http-client/tests/qunit/run-qunit-setup.js @@ -3,9 +3,10 @@ const glob = require('glob') const { join, resolve } = require('path') const serverIoCore = require('server-io-core') -const jsonqlKoaMiddleware = require('@jsonql/koa') const jsonqlKoaDir = join(__dirname, '..', 'fixtures') -const jsonqlKoa = jsonqlKoaMiddleware.default + +const { jsonqlKoa } = require('jsonql-koa') +// const jsonqlKoa = jsonqlKoaMiddleware.default /** * @param {object} config configuration * @return {object} promise resolve the config for server-io-core -- Gitee From 3f1ed8747f8c9cfeeb719dacb46dbe1ee290c711 Mon Sep 17 00:00:00 2001 From: joelchu Date: Mon, 28 Oct 2019 17:42:42 +0800 Subject: [PATCH 40/44] The base implementation for module done for new socketClient handler --- packages/http-client/module.js | 40 ++++++++++++------- packages/http-client/package.json | 2 +- .../src/core/jsonql-api-generator.js | 17 ++++---- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/packages/http-client/module.js b/packages/http-client/module.js index 184f8d41..396c662a 100644 --- a/packages/http-client/module.js +++ b/packages/http-client/module.js @@ -4,6 +4,23 @@ import { jsonqlAsync, jsonqlSync, ee as getEventEmitter } from './src' import { isContract, isObjectHasKey, getContractFromConfig, hasProp } from './src/utils' import { isObject } from 'jsonql-params-validator' import { SOCKET_NAME } from 'jsonql-constants' +import { JsonqlError } from 'jsonql-errors' + +const initSocketClient = function(client, contract, config, socketClient) { + if (isObjectHasKey(contract, SOCKET_NAME) && hasProp(contract[SOCKET_NAME])) { + if (socketClient) { + config.eventEmitter = client.eventEmitter; + return socketClient(config) + .then(sc => { + client[SOCKET_NAME] = sc; + return client; + }) + } else { + throw new JsonqlError(`initSocketClient`, `socketClient is missing!`) + } + } + return client; +} /** * When pass a static contract then it return a static interface @@ -16,20 +33,13 @@ export default function jsonqlClient(Fly, config) { // @NOTE we pass the socket client via the config, that save us the headache to try to dynamicly load the dep const { contract, socketClient, debugOn } = config; const ee = getEventEmitter(debugOn) - if (contract && isContract(contract)) { - return jsonqlAync(ee, config, Fly) - .then(client => { - if (isObjectHasKey(contract, SOCKET_NAME) && hasProp(contract[SOCKET_NAME])) { - config.eventEmitter = ee; // pass the event emitter - return socketClient(config) - .then(sc => { - - }) - - } - return client; - }) - } - // @TODO we need to break this up! + // this one try to get the contract dynamicly so we need to call the getContract here return jsonqlAsync(ee, config, Fly) + .then(client => ( + { + client, + contract: contract && isContract(contract) ? contract : client.getContract() + }) + ) + .then(({client, contract}) => initSocketClient(client, contract, config, socketClient)) } diff --git a/packages/http-client/package.json b/packages/http-client/package.json index cbfb0bbe..13407466 100755 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -78,7 +78,7 @@ "nyc": "^14.1.1", "promise-polyfill": "8.1.3", "qunit": "^2.9.3", - "rollup": "^1.25.2", + "rollup": "^1.26.0", "rollup-plugin-alias": "^2.2.0", "rollup-plugin-analyzer": "^3.2.1", "rollup-plugin-async": "^1.2.0", diff --git a/packages/http-client/src/core/jsonql-api-generator.js b/packages/http-client/src/core/jsonql-api-generator.js index 97e652b1..a299b4aa 100644 --- a/packages/http-client/src/core/jsonql-api-generator.js +++ b/packages/http-client/src/core/jsonql-api-generator.js @@ -26,28 +26,29 @@ import methodsGenerator from './methods-generator' */ const generator = (jsonqlInstance, config, contract, ee) => { // V1.3.0 - now everything wrap inside this method - let obj = methodsGenerator(jsonqlInstance, ee, config, contract) + let client = methodsGenerator(jsonqlInstance, ee, config, contract) // create the rest of the methods if (config.enableAuth) { /** * new method to allow retrieve the current login user data * @return {*} userdata */ - obj.userdata = () => jsonqlInstance.userdata; + client.userdata = () => jsonqlInstance.userdata; } // allow getting the token for valdiate agains the socket - obj.getToken = () => jsonqlInstance.rawAuthToken; + client.getToken = () => jsonqlInstance.rawAuthToken; // this will pass to the ws-client if needed - // obj.eventEmitter = ee; + // client.eventEmitter = ee; // this will require a param if (config.exposeContract) { - obj.getContract = () => jsonqlInstance.get() + // 1.4.0 change from the get (raw) to the getContract cache and raw version + client.getContract = () => jsonqlInstance.getContract() } // this is for the ws to use later - obj.eventEmitter = ee; - obj.version = '__VERSION__'; + client.eventEmitter = ee; + client.version = '__VERSION__'; // output - return obj; + return client; }; export default generator; -- Gitee From 22ec456f2cf30ee5be811fa4e781401cc3ada208 Mon Sep 17 00:00:00 2001 From: joelchu Date: Mon, 28 Oct 2019 19:25:07 +0800 Subject: [PATCH 41/44] update build script to have an uncompress version for testing --- packages/http-client/core.js | 2 +- packages/http-client/dist/jsonql-client.umd.js | 2 +- packages/http-client/package.json | 8 ++++---- packages/http-client/rollup.config.js | 5 ++++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/http-client/core.js b/packages/http-client/core.js index 5fa43647..38345a40 100644 --- a/packages/http-client/core.js +++ b/packages/http-client/core.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message";var l="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},p="object"==typeof l&&l&&l.Object===Object&&l,h="object"==typeof self&&self&&self.Object===Object&&self,d=p||h||Function("return this")(),v=d.Symbol;function g(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&F(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function X(t){return void 0===t}var Z="[object Boolean]";var tt="[object Number]";function et(t){return function(t){return"number"==typeof t||k(t)&&A(t)==tt}(t)&&t!=+t}var rt="[object String]";function nt(t){return"string"==typeof t||!y(t)&&k(t)&&A(t)==rt}function ot(t,e){return function(r){return t(e(r))}}var it=ot(Object.getPrototypeOf,Object),at="[object Object]",ut=Function.prototype,ct=Object.prototype,st=ut.toString,ft=ct.hasOwnProperty,lt=st.call(Object);function pt(t){if(!k(t)||A(t)!=at)return!1;var e=it(t);if(null===e)return!0;var r=ft.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&st.call(r)==lt}var ht,dt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[ht?a:++n];if(!1===e(o[u],u,o))break}return t};var vt="[object Arguments]";function gt(t){return k(t)&&A(t)==vt}var yt=Object.prototype,bt=yt.hasOwnProperty,mt=yt.propertyIsEnumerable,_t=gt(function(){return arguments}())?gt:function(t){return k(t)&&bt.call(t,"callee")&&!mt.call(t,"callee")};var wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,jt=wt&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=jt&&jt.exports===wt?d.Buffer:void 0,St=(Ot?Ot.isBuffer:void 0)||function(){return!1},Et=9007199254740991,At=/^(?:0|[1-9]\d*)$/;function kt(t,e){var r=typeof t;return!!(e=null==e?Et:e)&&("number"==r||"symbol"!=r&&At.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Tt}var qt={};qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Arguments]"]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object Boolean]"]=qt["[object DataView]"]=qt["[object Date]"]=qt["[object Error]"]=qt["[object Function]"]=qt["[object Map]"]=qt["[object Number]"]=qt["[object Object]"]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object WeakMap]"]=!1;var Pt,Ct="object"==typeof exports&&exports&&!exports.nodeType&&exports,$t=Ct&&"object"==typeof module&&module&&!module.nodeType&&module,zt=$t&&$t.exports===Ct&&p.process,Nt=function(){try{var t=$t&&$t.require&&$t.require("util").types;return t||zt&&zt.binding&&zt.binding("util")}catch(t){}}(),Ft=Nt&&Nt.isTypedArray,It=Ft?(Pt=Ft,function(t){return Pt(t)}):function(t){return k(t)&&xt(t.length)&&!!qt[A(t)]},Rt=Object.prototype.hasOwnProperty;function Jt(t,e){var r=y(t),n=!r&&_t(t),o=!r&&!n&&St(t),i=!r&&!n&&!o&&It(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ne,oe=d["__core-js_shared__"],ie=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ae=Function.prototype.toString;function ue(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,se=Function.prototype,fe=Object.prototype,le=se.toString,pe=fe.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(t){return!(!Lt(t)||function(t){return!!ie&&ie in t}(t))&&(Yt(t)?he:ce).test(ue(t))}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return de(r)?r:void 0}var ge=ve(d,"Map"),ye=ve(Object,"create");var be="__lodash_hash_undefined__",me=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Pe?new Te:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=mn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(bn);function On(t,e){return jn(function(t,e,r){return e=yn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=yn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Sn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Lt(r))return!1;var n=typeof e;return!!("number"==n?Wt(r)&&kt(e,r.length):"string"==n&&e in r)&&Zt(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Kn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Vn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ln(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bn(r,t)})).length},Gn=function(t,e){if(void 0===e&&(e=null),pt(t)){if(!e)return!0;if(Bn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!X(r)||(!1!==(e=Kn(t))?!Vn({arg:r},e):!Ln(t)(r))})).length)})).length}return!1},Yn=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Gn.apply(null,n)},Wn=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),Qn=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),Xn=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),Zn=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),to=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),eo=function(){try{if(window||document)return!0}catch(t){}return!1},ro=function(){try{if(!eo()&&l)return!0}catch(t){}return!1};var no=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return eo()?"browser":ro()?"node":"unknown"},e}(Error),oo=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,Error.captureStackTrace&&Error.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}(no),io=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),ao=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),uo=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),co=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,Error.captureStackTrace&&Error.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}(no),so=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,Error.captureStackTrace&&Error.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}(no),fo=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),lo=Object.freeze({__proto__:null,Jsonql406Error:Wn,Jsonql500Error:Qn,JsonqlAuthorisationError:Xn,JsonqlContractAuthError:Zn,JsonqlResolverAppError:to,JsonqlResolverNotFoundError:oo,JsonqlEnumError:io,JsonqlTypeError:ao,JsonqlCheckerError:uo,JsonqlValidationError:co,JsonqlError:so,JsonqlServerError:fo}),po=so,ho=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function vo(t){if(ho(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&lo[o])throw new lo[r](i,a);throw new po(i,a)}return t}function go(t){if(Array.isArray(t))throw new co("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof Wn:throw new Wn(e,r);case t instanceof Qn:throw new Qn(e,r);case t instanceof Xn:throw new Xn(e,r);case t instanceof Zn:throw new Zn(e,r);case t instanceof to:throw new to(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof fo:throw new fo(e,r);default:throw new so(e,r)}}function yo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var bo=function(t,e){var r;switch(!0){case"object"===t:return!Yn(e);case"array"===t:return!Bn(e.arg);case!1!==(r=Kn(t)):return!Vn(e,r);default:return!Ln(t)(e.arg)}},mo=function(t,e){return X(t)?!0!==e.optional||X(e.defaultvalue)?null:e.defaultvalue:t},_o=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Bn(e))throw new so("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Bn(t))throw new so("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 yo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:yo(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:yo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?mo(t,a):t,index:r,param:a,optional:i}}));default:throw yo(5),new so("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Cn(e)&&!(r.type.length>r.type.filter((function(e){return bo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return bo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},wo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},jo=function(t){return!Cn(t)};function Oo(t,e){var r=Pn(e,(function(t,e){return!t[Dn]}));return Or(r,{})?t:function(t,e){var r={};return e=Yr(e),Xt(t,(function(t,n,o){Qr(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,Yr((function(t){return t.alias===e})),Xt)||e}))}function So(t,e){return An(e,(function(e,r){var n,o;return X(t[r])||!0===e[Rn]&&jo(t[r])?En({},e,((n={})[Hn]=!0,n)):((o={})[Mn]=t[r],o[In]=e[In],o[Rn]=e[Rn]||!1,o[Jn]=e[Jn]||!1,o[Un]=e[Un]||!1,o)}))}function Eo(t,e){var r=function(t,e){var r=Oo(t,e);return{pristineValues:An(Pn(e,(function(t,e){return wo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Pn(e,(function(t,e){return!wo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[So(n,r.checkAgainstAppProps),o]}var Ao=function(t){return Bn(t)?t:[t]};var ko=function(t,e){return!Bn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},To=function(t,e){try{return!!Yt(e)&&e.apply(null,[t])}catch(t){return!1}};function xo(t){return function(e,r){if(e[Hn])return e[Mn];var n=function(t,e){var r,n=[[t[Mn]],[(r={},r[In]=Ao(t[In]),r[Rn]=t[Rn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw yo("runValidationAction",r,e),new ao(r,n);if(!1!==e[Jn]&&!ko(e[Mn],e[Jn]))throw yo(Jn,e[Jn]),new io(r);if(!1!==e[Un]&&!To(e[Mn],e[Un]))throw yo(Un,e[Un]),new uo(r);return e[Mn]}}var qo=function(t,e){return Promise.resolve(Eo(t,e))};function Po(t,e,r,n){return void 0===t&&(t={}),qo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=An(r,xo(e));return En(o,n)}(t,n)})).then((function(t){return En({},t,r)}))}function Co(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),Bn(s)&&(p[i]=s),Yt(f)&&(p[u]=f),nt(l)&&(p[c]=l),p}var $o=zn,zo=Bn,No=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=_o(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Fo=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return Co.apply(null,[t,e,n,a,s,f])},Io=function(t){return function(e,r,n){return void 0===n&&(n={}),Po(e,r,n,t)}}(_o),Ro="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Jo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ui().key(e);t(ci(r),r)}},remove:function(t){return ui().removeItem(t)},clearAll:function(){return ui().clear()}};function ui(){return ii.localStorage}function ci(t){return ui().getItem(t)}var si=Ho.trim,fi={name:"cookieStorage",read:function(t){if(!t||!di(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(li.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;li.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pi,remove:hi,clearAll:function(){pi((function(t,e){hi(e)}))}},li=Ho.Global.document;function pi(t){for(var e=li.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(si(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function hi(t){t&&di(t)&&(li.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function di(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(li.cookie)}var vi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var gi="expire_mixin",yi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+gi);return{set:function(e,r,n,o){this.hasNamespace(gi)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(gi)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(gi)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ei=[ai,fi],Ai=[vi,yi,ji,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Si.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Si.compress(this._serialize(r));t(e,n)}}}],ki=ri.createStore(Ei,Ai),Ti=Ho.Global;function xi(){return Ti.sessionStorage}function qi(t){return xi().getItem(t)}var Pi=[{name:"sessionStorage",read:qi,write:function(t,e){return xi().setItem(t,e)},each:function(t){for(var e=xi().length-1;e>=0;e--){var r=xi().key(e);t(qi(r),r)}},remove:function(t){return xi().removeItem(t)},clearAll:function(){return xi().clear()}},fi],Ci=[vi,yi],$i=ri.createStore(Pi,Ci),zi=ki,Ni=$i,Fi=Array.isArray,Ii=void 0!==l?l:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ri="object"==typeof Ii&&Ii&&Ii.Object===Object&&Ii,Ji="object"==typeof self&&self&&self.Object===Object&&self,Mi=(Ri||Ji||Function("return this")()).Symbol,Ui=Object.prototype,Di=Ui.hasOwnProperty,Hi=Ui.toString,Li=Mi?Mi.toStringTag:void 0;var Bi=Object.prototype.toString;var Ki="[object Null]",Vi="[object Undefined]",Gi=Mi?Mi.toStringTag:void 0;function Yi(t){return null==t?void 0===t?Vi:Ki:Gi&&Gi in Object(t)?function(t){var e=Di.call(t,Li),r=t[Li];try{t[Li]=void 0;var n=!0}catch(t){}var o=Hi.call(t);return n&&(e?t[Li]=r:delete t[Li]),o}(t):function(t){return Bi.call(t)}(t)}var Wi=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function Qi(t){return null!=t&&"object"==typeof t}var Xi="[object Object]",Zi=Function.prototype,ta=Object.prototype,ea=Zi.toString,ra=ta.hasOwnProperty,na=ea.call(Object);var oa=Mi?Mi.prototype:void 0,ia=(oa&&oa.toString,"[object String]");function aa(t){return"string"==typeof t||!Fi(t)&&Qi(t)&&Yi(t)==ia}var ua=function(t,e){return!!t.filter((function(t){return t===e})).length},ca=function(t,e){var r=Object.keys(t);return ua(r,e)},sa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},fa="query",la="mutation",pa="socket",ha="payload",da="condition",va=function(){try{if(window||document)return!0}catch(t){}return!1},ga=function(){try{if(!va()&&Ii)return!0}catch(t){}return!1};var ya=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return va()?"browser":ga()?"node":"unknown"},e}(Error));var ba=function(t){var e;return(e={}).args=t,e};var ma=function(t){return ca(t,"data")&&!ca(t,"error")?t.data:t},_a=function(t){return function(t){if(!Qi(t)||Yi(t)!=Xi)return!1;var e=Wi(t);if(null===e)return!0;var r=ra.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ea.call(r)==na}(t)&&(ca(t,fa)||ca(t,la)||ca(t,pa))},wa=function(t,e){return void 0===e&&(e={}),_a(e)?Promise.resolve(e):t.getContract()},ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Oa(t){this.message=t}Oa.prototype=new Error,Oa.prototype.name="InvalidCharacterError";var Sa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Oa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ja.indexOf(n);return a};var Ea=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Sa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Sa(e)}};function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidTokenError";var ka=function(t,e){if("string"!=typeof t)throw new Aa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ea(t.split(".")[r]))}catch(t){throw new Aa("Invalid token specified: "+t.message)}},Ta=Aa;ka.InvalidTokenError=Ta;var xa,qa,Pa,Ca,$a,za,Na,Fa,Ia,Ra=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ja(t){if($o(t))return function(t){var e=t.iat||Ra(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new so("Token has expired on "+r,t)}return t}(ka(t));throw new so("Token must be a string!")}Fo("HS256",["string"]),Fo(!1,["boolean","number","string"],((xa={})[c]="exp",xa[o]=!0,xa)),Fo(!1,["boolean","number","string"],((qa={})[c]="nbf",qa[o]=!0,qa)),Fo(!1,["boolean","string"],((Pa={})[c]="iss",Pa[o]=!0,Pa)),Fo(!1,["boolean","string"],((Ca={})[c]="sub",Ca[o]=!0,Ca)),Fo(!1,["boolean","string"],(($a={})[c]="iss",$a[o]=!0,$a)),Fo(!1,["boolean"],((za={})[o]=!0,za)),Fo(!1,["boolean","string"],((Na={})[o]=!0,Na)),Fo(!1,["boolean","string"],((Fa={})[o]=!0,Fa)),Fo(!1,["boolean"],((Ia={})[o]=!0,Ia));var Ma=r[0],Ua=r[1],Da=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Ha={headers:{configurable:!0}};Ha.headers.set=function(t){this.extraHeader=t},Da.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=En({},{_cb:sa()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=En({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,En({},{method:Ma,params:o},e))},Da.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Da.prototype.processJsonp=function(t){return ma(t)},Da.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=$o(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ma(o)}),(function(t){throw e.cleanUp(),console.error(t),new fo("Server side error",t)}))},Da.prototype.getHeaders=function(){return this.opts.enableAuth?En({},e,this.getAuthHeader(),this.extraHeader):En({},e,this.extraHeader)},Da.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Da.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=En({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(vo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Da.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),aa(t)&&Fi(e)){var o=ba(e);return!0===r?o:((n={})[t]=o,n)}throw new ya("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(vo)},Da.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ha]=e,i[da]=r,!0===n)return i;if(aa(t))return(o={})[t]=i,o;throw new ya("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ua}).then(vo)},Object.defineProperties(Da.prototype,Ha);var La=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply(zi.set,zi,t),new co("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=zi.get("endpoint")||[];ua(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=zi.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ua(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=sa();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(zi.set,zi,e)},r.jsonqlEndpoint.get=function(){var t=zi.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(zi.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ni.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ja)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!_a(t))throw new co("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return _a(this.opts.contract)?this.opts.contract:zi.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Da))),Ba=function(t){return y(t)?t:[t]},Ka=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,Ba(t))}),Reflect.apply(t,null,r))}};function Va(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Ga=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(go)}},Ya=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(go)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wa=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return No(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(go)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Qa=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xa=function(t,e,r,n){var o=function(t,e,r,n){return Ka(Ya,Wa,Qa)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.4.0",o},Za={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},tu={hostname:Fo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Fo("jsonql",["string"]),loginHandlerName:Fo("login",["string"]),logoutHandlerName:Fo("logout",["string"]),enableJsonp:Fo(!1,["boolean"]),enableAuth:Fo(!1,["boolean"]),useJwt:Fo(!0,["boolean"]),useLocalstorage:Fo(!0,["boolean"]),storageKey:Fo("storageKey",["string"]),authKey:Fo("authKey",["string"]),contractExpired:Fo(0,["number"]),keepContract:Fo(!0,["boolean"]),exposeContract:Fo(!1,["boolean"]),showContractDesc:Fo(!1,["boolean"]),contractKey:Fo(!1,["boolean"]),contractKeyName:Fo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Fo(!1,["boolean"]),timeout:Fo(5e3,["number"]),returnInstance:Fo(!1,["boolean"]),allowReturnRawToken:Fo(!1,["boolean"]),debugOn:Fo(!1,["boolean"])};function eu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Io(t,tu,Za).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new La(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return wa(r,n.contract).then((function(e){return Xa(r,n,e,t)}))}))}var ru=new WeakMap,nu=new WeakMap;var ou=function(){this.__suspend__=null,this.queueStore=new Set},iu={$suspend:{configurable:!0},$queues:{configurable:!0}};iu.$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)},ou.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__},iu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ou.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(ou.prototype,iu);var au=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ru.set(this,t)},r.normalStore.get=function(){return ru.get(this)},r.lazyStore.set=function(t){nu.set(this,t)},r.lazyStore.get=function(){return nu.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}(ou));return function(t,e){var r;return eu((r=e.debugOn,new au({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message";var l="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},p="object"==typeof l&&l&&l.Object===Object&&l,h="object"==typeof self&&self&&self.Object===Object&&self,d=p||h||Function("return this")(),v=d.Symbol;function g(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&F(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function X(t){return void 0===t}var Z="[object Boolean]";var tt="[object Number]";function et(t){return function(t){return"number"==typeof t||k(t)&&A(t)==tt}(t)&&t!=+t}var rt="[object String]";function nt(t){return"string"==typeof t||!y(t)&&k(t)&&A(t)==rt}function ot(t,e){return function(r){return t(e(r))}}var it=ot(Object.getPrototypeOf,Object),at="[object Object]",ut=Function.prototype,ct=Object.prototype,st=ut.toString,ft=ct.hasOwnProperty,lt=st.call(Object);function pt(t){if(!k(t)||A(t)!=at)return!1;var e=it(t);if(null===e)return!0;var r=ft.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&st.call(r)==lt}var ht,dt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[ht?a:++n];if(!1===e(o[u],u,o))break}return t};var vt="[object Arguments]";function gt(t){return k(t)&&A(t)==vt}var yt=Object.prototype,bt=yt.hasOwnProperty,mt=yt.propertyIsEnumerable,_t=gt(function(){return arguments}())?gt:function(t){return k(t)&&bt.call(t,"callee")&&!mt.call(t,"callee")};var wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,jt=wt&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=jt&&jt.exports===wt?d.Buffer:void 0,St=(Ot?Ot.isBuffer:void 0)||function(){return!1},Et=9007199254740991,At=/^(?:0|[1-9]\d*)$/;function kt(t,e){var r=typeof t;return!!(e=null==e?Et:e)&&("number"==r||"symbol"!=r&&At.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Tt}var qt={};qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Arguments]"]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object Boolean]"]=qt["[object DataView]"]=qt["[object Date]"]=qt["[object Error]"]=qt["[object Function]"]=qt["[object Map]"]=qt["[object Number]"]=qt["[object Object]"]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object WeakMap]"]=!1;var Pt,Ct="object"==typeof exports&&exports&&!exports.nodeType&&exports,$t=Ct&&"object"==typeof module&&module&&!module.nodeType&&module,zt=$t&&$t.exports===Ct&&p.process,Nt=function(){try{var t=$t&&$t.require&&$t.require("util").types;return t||zt&&zt.binding&&zt.binding("util")}catch(t){}}(),Ft=Nt&&Nt.isTypedArray,It=Ft?(Pt=Ft,function(t){return Pt(t)}):function(t){return k(t)&&xt(t.length)&&!!qt[A(t)]},Rt=Object.prototype.hasOwnProperty;function Jt(t,e){var r=y(t),n=!r&&_t(t),o=!r&&!n&&St(t),i=!r&&!n&&!o&&It(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ne,oe=d["__core-js_shared__"],ie=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ae=Function.prototype.toString;function ue(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,se=Function.prototype,fe=Object.prototype,le=se.toString,pe=fe.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(t){return!(!Lt(t)||function(t){return!!ie&&ie in t}(t))&&(Yt(t)?he:ce).test(ue(t))}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return de(r)?r:void 0}var ge=ve(d,"Map"),ye=ve(Object,"create");var be="__lodash_hash_undefined__",me=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Pe?new Te:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=mn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(bn);function On(t,e){return jn(function(t,e,r){return e=yn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=yn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Sn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Lt(r))return!1;var n=typeof e;return!!("number"==n?Wt(r)&&kt(e,r.length):"string"==n&&e in r)&&Zt(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Kn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Vn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ln(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bn(r,t)})).length},Gn=function(t,e){if(void 0===e&&(e=null),pt(t)){if(!e)return!0;if(Bn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!X(r)||(!1!==(e=Kn(t))?!Vn({arg:r},e):!Ln(t)(r))})).length)})).length}return!1},Yn=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Gn.apply(null,n)},Wn=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),Qn=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),Xn=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),Zn=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),to=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),eo=function(){try{if(window||document)return!0}catch(t){}return!1},ro=function(){try{if(!eo()&&l)return!0}catch(t){}return!1};var no=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return eo()?"browser":ro()?"node":"unknown"},e}(Error),oo=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,Error.captureStackTrace&&Error.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}(no),io=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),ao=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),uo=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),co=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,Error.captureStackTrace&&Error.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}(no),so=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,Error.captureStackTrace&&Error.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}(no),fo=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),lo=Object.freeze({__proto__:null,Jsonql406Error:Wn,Jsonql500Error:Qn,JsonqlAuthorisationError:Xn,JsonqlContractAuthError:Zn,JsonqlResolverAppError:to,JsonqlResolverNotFoundError:oo,JsonqlEnumError:io,JsonqlTypeError:ao,JsonqlCheckerError:uo,JsonqlValidationError:co,JsonqlError:so,JsonqlServerError:fo}),po=so,ho=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function vo(t){if(ho(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&lo[o])throw new lo[r](i,a);throw new po(i,a)}return t}function go(t){if(Array.isArray(t))throw new co("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof Wn:throw new Wn(e,r);case t instanceof Qn:throw new Qn(e,r);case t instanceof Xn:throw new Xn(e,r);case t instanceof Zn:throw new Zn(e,r);case t instanceof to:throw new to(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof fo:throw new fo(e,r);default:throw new so(e,r)}}function yo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var bo=function(t,e){var r;switch(!0){case"object"===t:return!Yn(e);case"array"===t:return!Bn(e.arg);case!1!==(r=Kn(t)):return!Vn(e,r);default:return!Ln(t)(e.arg)}},mo=function(t,e){return X(t)?!0!==e.optional||X(e.defaultvalue)?null:e.defaultvalue:t},_o=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Bn(e))throw new so("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Bn(t))throw new so("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 yo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:yo(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:yo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?mo(t,a):t,index:r,param:a,optional:i}}));default:throw yo(5),new so("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Cn(e)&&!(r.type.length>r.type.filter((function(e){return bo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return bo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},wo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},jo=function(t){return!Cn(t)};function Oo(t,e){var r=Pn(e,(function(t,e){return!t[Dn]}));return Or(r,{})?t:function(t,e){var r={};return e=Yr(e),Xt(t,(function(t,n,o){Qr(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,Yr((function(t){return t.alias===e})),Xt)||e}))}function So(t,e){return An(e,(function(e,r){var n,o;return X(t[r])||!0===e[Rn]&&jo(t[r])?En({},e,((n={})[Hn]=!0,n)):((o={})[Mn]=t[r],o[In]=e[In],o[Rn]=e[Rn]||!1,o[Jn]=e[Jn]||!1,o[Un]=e[Un]||!1,o)}))}function Eo(t,e){var r=function(t,e){var r=Oo(t,e);return{pristineValues:An(Pn(e,(function(t,e){return wo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Pn(e,(function(t,e){return!wo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[So(n,r.checkAgainstAppProps),o]}var Ao=function(t){return Bn(t)?t:[t]};var ko=function(t,e){return!Bn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},To=function(t,e){try{return!!Yt(e)&&e.apply(null,[t])}catch(t){return!1}};function xo(t){return function(e,r){if(e[Hn])return e[Mn];var n=function(t,e){var r,n=[[t[Mn]],[(r={},r[In]=Ao(t[In]),r[Rn]=t[Rn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw yo("runValidationAction",r,e),new ao(r,n);if(!1!==e[Jn]&&!ko(e[Mn],e[Jn]))throw yo(Jn,e[Jn]),new io(r);if(!1!==e[Un]&&!To(e[Mn],e[Un]))throw yo(Un,e[Un]),new uo(r);return e[Mn]}}var qo=function(t,e){return Promise.resolve(Eo(t,e))};function Po(t,e,r,n){return void 0===t&&(t={}),qo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=An(r,xo(e));return En(o,n)}(t,n)})).then((function(t){return En({},t,r)}))}function Co(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),Bn(s)&&(p[i]=s),Yt(f)&&(p[u]=f),nt(l)&&(p[c]=l),p}var $o=zn,zo=Bn,No=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=_o(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Fo=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return Co.apply(null,[t,e,n,a,s,f])},Io=function(t){return function(e,r,n){return void 0===n&&(n={}),Po(e,r,n,t)}}(_o),Ro="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Jo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ui().key(e);t(ci(r),r)}},remove:function(t){return ui().removeItem(t)},clearAll:function(){return ui().clear()}};function ui(){return ii.localStorage}function ci(t){return ui().getItem(t)}var si=Ho.trim,fi={name:"cookieStorage",read:function(t){if(!t||!di(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(li.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;li.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pi,remove:hi,clearAll:function(){pi((function(t,e){hi(e)}))}},li=Ho.Global.document;function pi(t){for(var e=li.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(si(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function hi(t){t&&di(t)&&(li.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function di(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(li.cookie)}var vi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var gi="expire_mixin",yi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+gi);return{set:function(e,r,n,o){this.hasNamespace(gi)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(gi)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(gi)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ei=[ai,fi],Ai=[vi,yi,ji,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Si.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Si.compress(this._serialize(r));t(e,n)}}}],ki=ri.createStore(Ei,Ai),Ti=Ho.Global;function xi(){return Ti.sessionStorage}function qi(t){return xi().getItem(t)}var Pi=[{name:"sessionStorage",read:qi,write:function(t,e){return xi().setItem(t,e)},each:function(t){for(var e=xi().length-1;e>=0;e--){var r=xi().key(e);t(qi(r),r)}},remove:function(t){return xi().removeItem(t)},clearAll:function(){return xi().clear()}},fi],Ci=[vi,yi],$i=ri.createStore(Pi,Ci),zi=ki,Ni=$i,Fi=Array.isArray,Ii=void 0!==l?l:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ri="object"==typeof Ii&&Ii&&Ii.Object===Object&&Ii,Ji="object"==typeof self&&self&&self.Object===Object&&self,Mi=(Ri||Ji||Function("return this")()).Symbol,Ui=Object.prototype,Di=Ui.hasOwnProperty,Hi=Ui.toString,Li=Mi?Mi.toStringTag:void 0;var Bi=Object.prototype.toString;var Ki="[object Null]",Vi="[object Undefined]",Gi=Mi?Mi.toStringTag:void 0;function Yi(t){return null==t?void 0===t?Vi:Ki:Gi&&Gi in Object(t)?function(t){var e=Di.call(t,Li),r=t[Li];try{t[Li]=void 0;var n=!0}catch(t){}var o=Hi.call(t);return n&&(e?t[Li]=r:delete t[Li]),o}(t):function(t){return Bi.call(t)}(t)}var Wi=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function Qi(t){return null!=t&&"object"==typeof t}var Xi="[object Object]",Zi=Function.prototype,ta=Object.prototype,ea=Zi.toString,ra=ta.hasOwnProperty,na=ea.call(Object);var oa=Mi?Mi.prototype:void 0,ia=(oa&&oa.toString,"[object String]");function aa(t){return"string"==typeof t||!Fi(t)&&Qi(t)&&Yi(t)==ia}var ua=function(t,e){return!!t.filter((function(t){return t===e})).length},ca=function(t,e){var r=Object.keys(t);return ua(r,e)},sa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},fa="query",la="mutation",pa="socket",ha="payload",da="condition",va=function(){try{if(window||document)return!0}catch(t){}return!1},ga=function(){try{if(!va()&&Ii)return!0}catch(t){}return!1};var ya=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return va()?"browser":ga()?"node":"unknown"},e}(Error));var ba=function(t){var e;return(e={}).args=t,e};var ma=function(t){return ca(t,"data")&&!ca(t,"error")?t.data:t},_a=function(t){return function(t){if(!Qi(t)||Yi(t)!=Xi)return!1;var e=Wi(t);if(null===e)return!0;var r=ra.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ea.call(r)==na}(t)&&(ca(t,fa)||ca(t,la)||ca(t,pa))},wa=function(t,e){return void 0===e&&(e={}),_a(e)?Promise.resolve(e):t.getContract()},ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Oa(t){this.message=t}Oa.prototype=new Error,Oa.prototype.name="InvalidCharacterError";var Sa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Oa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ja.indexOf(n);return a};var Ea=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Sa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Sa(e)}};function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidTokenError";var ka=function(t,e){if("string"!=typeof t)throw new Aa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ea(t.split(".")[r]))}catch(t){throw new Aa("Invalid token specified: "+t.message)}},Ta=Aa;ka.InvalidTokenError=Ta;var xa,qa,Pa,Ca,$a,za,Na,Fa,Ia,Ra=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ja(t){if($o(t))return function(t){var e=t.iat||Ra(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new so("Token has expired on "+r,t)}return t}(ka(t));throw new so("Token must be a string!")}Fo("HS256",["string"]),Fo(!1,["boolean","number","string"],((xa={})[c]="exp",xa[o]=!0,xa)),Fo(!1,["boolean","number","string"],((qa={})[c]="nbf",qa[o]=!0,qa)),Fo(!1,["boolean","string"],((Pa={})[c]="iss",Pa[o]=!0,Pa)),Fo(!1,["boolean","string"],((Ca={})[c]="sub",Ca[o]=!0,Ca)),Fo(!1,["boolean","string"],(($a={})[c]="iss",$a[o]=!0,$a)),Fo(!1,["boolean"],((za={})[o]=!0,za)),Fo(!1,["boolean","string"],((Na={})[o]=!0,Na)),Fo(!1,["boolean","string"],((Fa={})[o]=!0,Fa)),Fo(!1,["boolean"],((Ia={})[o]=!0,Ia));var Ma=r[0],Ua=r[1],Da=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Ha={headers:{configurable:!0}};Ha.headers.set=function(t){this.extraHeader=t},Da.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=En({},{_cb:sa()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=En({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,En({},{method:Ma,params:o},e))},Da.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Da.prototype.processJsonp=function(t){return ma(t)},Da.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=$o(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ma(o)}),(function(t){throw e.cleanUp(),console.error(t),new fo("Server side error",t)}))},Da.prototype.getHeaders=function(){return this.opts.enableAuth?En({},e,this.getAuthHeader(),this.extraHeader):En({},e,this.extraHeader)},Da.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Da.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=En({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(vo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Da.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),aa(t)&&Fi(e)){var o=ba(e);return!0===r?o:((n={})[t]=o,n)}throw new ya("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(vo)},Da.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ha]=e,i[da]=r,!0===n)return i;if(aa(t))return(o={})[t]=i,o;throw new ya("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ua}).then(vo)},Object.defineProperties(Da.prototype,Ha);var La=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply(zi.set,zi,t),new co("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=zi.get("endpoint")||[];ua(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=zi.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ua(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=sa();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(zi.set,zi,e)},r.jsonqlEndpoint.get=function(){var t=zi.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(zi.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ni.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ja)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!_a(t))throw new co("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return _a(this.opts.contract)?this.opts.contract:zi.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Da))),Ba=function(t){return y(t)?t:[t]},Ka=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,Ba(t))}),Reflect.apply(t,null,r))}};function Va(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Ga=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(go)}},Ya=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(go)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wa=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return No(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(go)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Qa=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xa=function(t,e,r,n){var o=function(t,e,r,n){return Ka(Ya,Wa,Qa)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.getContract()}),o.eventEmitter=n,o.version="1.4.0",o},Za={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},tu={hostname:Fo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Fo("jsonql",["string"]),loginHandlerName:Fo("login",["string"]),logoutHandlerName:Fo("logout",["string"]),enableJsonp:Fo(!1,["boolean"]),enableAuth:Fo(!1,["boolean"]),useJwt:Fo(!0,["boolean"]),useLocalstorage:Fo(!0,["boolean"]),storageKey:Fo("storageKey",["string"]),authKey:Fo("authKey",["string"]),contractExpired:Fo(0,["number"]),keepContract:Fo(!0,["boolean"]),exposeContract:Fo(!1,["boolean"]),showContractDesc:Fo(!1,["boolean"]),contractKey:Fo(!1,["boolean"]),contractKeyName:Fo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Fo(!1,["boolean"]),timeout:Fo(5e3,["number"]),returnInstance:Fo(!1,["boolean"]),allowReturnRawToken:Fo(!1,["boolean"]),debugOn:Fo(!1,["boolean"])};function eu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Io(t,tu,Za).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new La(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return wa(r,n.contract).then((function(e){return Xa(r,n,e,t)}))}))}var ru=new WeakMap,nu=new WeakMap;var ou=function(){this.__suspend__=null,this.queueStore=new Set},iu={$suspend:{configurable:!0},$queues:{configurable:!0}};iu.$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)},ou.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__},iu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ou.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(ou.prototype,iu);var au=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ru.set(this,t)},r.normalStore.get=function(){return ru.get(this)},r.lazyStore.set=function(t){nu.set(this,t)},r.lazyStore.get=function(){return nu.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}(ou));return function(t,e){var r;return eu((r=e.debugOn,new au({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}})); //# sourceMappingURL=core.js.map diff --git a/packages/http-client/dist/jsonql-client.umd.js b/packages/http-client/dist/jsonql-client.umd.js index 2ba68026..ef8ae317 100644 --- a/packages/http-client/dist/jsonql-client.umd.js +++ b/packages/http-client/dist/jsonql-client.umd.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&q(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&q(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||q(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&q(t)==_t}var jt=Object.prototype,Ot=jt.hasOwnProperty,St=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&Ot.call(t,"callee")&&!St.call(t,"callee")};var kt="object"==typeof exports&&exports&&!exports.nodeType&&exports,At=kt&&"object"==typeof module&&module&&!module.nodeType&&module,xt=At&&At.exports===kt?m.Buffer:void 0,Tt=(xt?xt.isBuffer:void 0)||function(){return!1},Pt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?Pt:e)&&("number"==r||"symbol"!=r&&qt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Dt=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[q(t)]},Ht=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&Tt(t),i=!r&&!n&&!o&&Dt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Oe="__lodash_hash_undefined__",Se=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var ke="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Sn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(On);function xn(t,e){return An(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Tn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Xn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Qn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Xn(t))?!Qn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Oo=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Xn(t)):return!Qn(e,r);default:return!Yn(t)(e.arg)}},So=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?So(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return Oo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Oo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},ko=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ao=function(t){return!In(t)};function xo(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return xr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function To(t,e){return qn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Hn]&&Ao(t[r])?Pn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Dn]=e[Dn],o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function Po(t,e){var r=function(t,e){var r=xo(t,e);return{pristineValues:qn(Fn(e,(function(t,e){return ko(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!ko(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[To(n,r.checkAgainstAppProps),o]}var qo=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Dn]=qo(t[Dn]),r[Hn]=t[Hn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}var zo=function(t,e){return Promise.resolve(Po(t,e))};function Fo(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=qn(r,No(e));return Pn(o,n)}(t,n)})).then((function(t){return Pn({},t,r)}))}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),Wn(n)&&(a[f]=n),te(o)&&(a[p]=o),ct(i)&&(a[h]=i),a}var Ro=Jn,Jo=Wn,Mo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Uo=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Do=function(t){return function(e,r,n){return void 0===n&&(n={}),Fo(e,r,n,t)}}(Eo),Ho=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ti=[fi,di],Pi=[mi,wi,ki,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=xi.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=xi.compress(this._serialize(r));t(e,n)}}}],qi=ai.createStore(Ti,Pi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function Ni(t){return $i().getItem(t)}var zi=[{name:"sessionStorage",read:Ni,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(Ni(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(zi,Fi),Ri=qi,Ji=Ii,Mi=Array.isArray,Ui=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Di="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Hi="object"==typeof self&&self&&self.Object===Object&&self,Li=(Di||Hi||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Xi="[object Undefined]",Qi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Xi:Wi:Qi&&Qi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Oa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Sa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Sa(e)?Promise.resolve(e):t.getContract()},ka="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidCharacterError";var xa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Aa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ka.indexOf(n);return a};var Ta=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(xa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return xa(e)}};function Pa(t){this.message=t}Pa.prototype=new Error,Pa.prototype.name="InvalidTokenError";var qa=function(t,e){if("string"!=typeof t)throw new Pa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ta(t.split(".")[r]))}catch(t){throw new Pa("Invalid token specified: "+t.message)}},Ca=Pa;qa.InvalidTokenError=Ca;var $a,Na,za,Fa,Ia,Ra,Ja,Ma,Ua,Da=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ha(t){if(Ro(t))return function(t){var e=t.iat||Da(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(qa(t));throw new vo("Token must be a string!")}Uo("HS256",["string"]),Uo(!1,["boolean","number","string"],(($a={})[h]="exp",$a[s]=!0,$a)),Uo(!1,["boolean","number","string"],((Na={})[h]="nbf",Na[s]=!0,Na)),Uo(!1,["boolean","string"],((za={})[h]="iss",za[s]=!0,za)),Uo(!1,["boolean","string"],((Fa={})[h]="sub",Fa[s]=!0,Fa)),Uo(!1,["boolean","string"],((Ia={})[h]="iss",Ia[s]=!0,Ia)),Uo(!1,["boolean"],((Ra={})[s]=!0,Ra)),Uo(!1,["boolean","string"],((Ja={})[s]=!0,Ja)),Uo(!1,["boolean","string"],((Ma={})[s]=!0,Ma)),Uo(!1,["boolean"],((Ua={})[s]=!0,Ua));var La=u[0],Ba=u[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Pn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Pn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Pn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Oa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Ro(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Oa(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Pn({},a,this.getAuthHeader(),this.extraHeader):Pn({},a,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Pn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(_o)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Jo(t)&&t.length>=2&&Reflect.apply(Ri.set,Ri,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ri.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ri.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ri.set,Ri,e)},r.jsonqlEndpoint.get=function(){var t=Ri.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ri.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ji.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ha)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Sa(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Sa(this.opts.contract)?this.opts.contract:Ri.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t){return j(t)?t:[t]},Wa=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,Ya(t))}),Reflect.apply(t,null,r))}};function Xa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Qa=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}},Za=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(wo)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},tu=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Mo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(wo)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},eu=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var ru=function(t,e,r,n){var o=function(t,e,r,n){return Wa(Za,tu,eu)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.get()}),o.eventEmitter=n,o.version="1.4.0",o},nu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ou={hostname:Uo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Uo("jsonql",["string"]),loginHandlerName:Uo("login",["string"]),logoutHandlerName:Uo("logout",["string"]),enableJsonp:Uo(!1,["boolean"]),enableAuth:Uo(!1,["boolean"]),useJwt:Uo(!0,["boolean"]),useLocalstorage:Uo(!0,["boolean"]),storageKey:Uo("storageKey",["string"]),authKey:Uo("authKey",["string"]),contractExpired:Uo(0,["number"]),keepContract:Uo(!0,["boolean"]),exposeContract:Uo(!1,["boolean"]),showContractDesc:Uo(!1,["boolean"]),contractKey:Uo(!1,["boolean"]),contractKeyName:Uo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Uo(!1,["boolean"]),timeout:Uo(5e3,["number"]),returnInstance:Uo(!1,["boolean"]),allowReturnRawToken:Uo(!1,["boolean"]),debugOn:Uo(!1,["boolean"])};function iu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Do(t,ou,nu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return ru(r,n,e,t)}))}))}var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));function lu(t,e){var r;return iu((r=e.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}return function(t){return void 0===t&&(t={}),lu(o,t)}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&q(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&q(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||q(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&q(t)==_t}var jt=Object.prototype,Ot=jt.hasOwnProperty,St=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&Ot.call(t,"callee")&&!St.call(t,"callee")};var kt="object"==typeof exports&&exports&&!exports.nodeType&&exports,At=kt&&"object"==typeof module&&module&&!module.nodeType&&module,xt=At&&At.exports===kt?m.Buffer:void 0,Tt=(xt?xt.isBuffer:void 0)||function(){return!1},Pt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?Pt:e)&&("number"==r||"symbol"!=r&&qt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Dt=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[q(t)]},Ht=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&Tt(t),i=!r&&!n&&!o&&Dt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Oe="__lodash_hash_undefined__",Se=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var ke="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Sn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(On);function xn(t,e){return An(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Tn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Xn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Qn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Xn(t))?!Qn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Oo=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Xn(t)):return!Qn(e,r);default:return!Yn(t)(e.arg)}},So=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?So(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return Oo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Oo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},ko=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ao=function(t){return!In(t)};function xo(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return xr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function To(t,e){return qn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Hn]&&Ao(t[r])?Pn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Dn]=e[Dn],o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function Po(t,e){var r=function(t,e){var r=xo(t,e);return{pristineValues:qn(Fn(e,(function(t,e){return ko(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!ko(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[To(n,r.checkAgainstAppProps),o]}var qo=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Dn]=qo(t[Dn]),r[Hn]=t[Hn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}var zo=function(t,e){return Promise.resolve(Po(t,e))};function Fo(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=qn(r,No(e));return Pn(o,n)}(t,n)})).then((function(t){return Pn({},t,r)}))}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),Wn(n)&&(a[f]=n),te(o)&&(a[p]=o),ct(i)&&(a[h]=i),a}var Ro=Jn,Jo=Wn,Mo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Uo=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Do=function(t){return function(e,r,n){return void 0===n&&(n={}),Fo(e,r,n,t)}}(Eo),Ho=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ti=[fi,di],Pi=[mi,wi,ki,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=xi.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=xi.compress(this._serialize(r));t(e,n)}}}],qi=ai.createStore(Ti,Pi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function Ni(t){return $i().getItem(t)}var zi=[{name:"sessionStorage",read:Ni,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(Ni(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(zi,Fi),Ri=qi,Ji=Ii,Mi=Array.isArray,Ui=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Di="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Hi="object"==typeof self&&self&&self.Object===Object&&self,Li=(Di||Hi||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Xi="[object Undefined]",Qi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Xi:Wi:Qi&&Qi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Oa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Sa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Sa(e)?Promise.resolve(e):t.getContract()},ka="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidCharacterError";var xa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Aa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ka.indexOf(n);return a};var Ta=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(xa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return xa(e)}};function Pa(t){this.message=t}Pa.prototype=new Error,Pa.prototype.name="InvalidTokenError";var qa=function(t,e){if("string"!=typeof t)throw new Pa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ta(t.split(".")[r]))}catch(t){throw new Pa("Invalid token specified: "+t.message)}},Ca=Pa;qa.InvalidTokenError=Ca;var $a,Na,za,Fa,Ia,Ra,Ja,Ma,Ua,Da=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ha(t){if(Ro(t))return function(t){var e=t.iat||Da(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(qa(t));throw new vo("Token must be a string!")}Uo("HS256",["string"]),Uo(!1,["boolean","number","string"],(($a={})[h]="exp",$a[s]=!0,$a)),Uo(!1,["boolean","number","string"],((Na={})[h]="nbf",Na[s]=!0,Na)),Uo(!1,["boolean","string"],((za={})[h]="iss",za[s]=!0,za)),Uo(!1,["boolean","string"],((Fa={})[h]="sub",Fa[s]=!0,Fa)),Uo(!1,["boolean","string"],((Ia={})[h]="iss",Ia[s]=!0,Ia)),Uo(!1,["boolean"],((Ra={})[s]=!0,Ra)),Uo(!1,["boolean","string"],((Ja={})[s]=!0,Ja)),Uo(!1,["boolean","string"],((Ma={})[s]=!0,Ma)),Uo(!1,["boolean"],((Ua={})[s]=!0,Ua));var La=u[0],Ba=u[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Pn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Pn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Pn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Oa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Ro(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Oa(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Pn({},a,this.getAuthHeader(),this.extraHeader):Pn({},a,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Pn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(_o)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Jo(t)&&t.length>=2&&Reflect.apply(Ri.set,Ri,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ri.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ri.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ri.set,Ri,e)},r.jsonqlEndpoint.get=function(){var t=Ri.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ri.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ji.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ha)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Sa(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Sa(this.opts.contract)?this.opts.contract:Ri.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t){return j(t)?t:[t]},Wa=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,Ya(t))}),Reflect.apply(t,null,r))}};function Xa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Qa=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}},Za=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(wo)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},tu=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Mo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(wo)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},eu=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var ru=function(t,e,r,n){var o=function(t,e,r,n){return Wa(Za,tu,eu)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.getContract()}),o.eventEmitter=n,o.version="1.4.0",o},nu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ou={hostname:Uo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Uo("jsonql",["string"]),loginHandlerName:Uo("login",["string"]),logoutHandlerName:Uo("logout",["string"]),enableJsonp:Uo(!1,["boolean"]),enableAuth:Uo(!1,["boolean"]),useJwt:Uo(!0,["boolean"]),useLocalstorage:Uo(!0,["boolean"]),storageKey:Uo("storageKey",["string"]),authKey:Uo("authKey",["string"]),contractExpired:Uo(0,["number"]),keepContract:Uo(!0,["boolean"]),exposeContract:Uo(!1,["boolean"]),showContractDesc:Uo(!1,["boolean"]),contractKey:Uo(!1,["boolean"]),contractKeyName:Uo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Uo(!1,["boolean"]),timeout:Uo(5e3,["number"]),returnInstance:Uo(!1,["boolean"]),allowReturnRawToken:Uo(!1,["boolean"]),debugOn:Uo(!1,["boolean"])};function iu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Do(t,ou,nu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return ru(r,n,e,t)}))}))}var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));function lu(t,e){var r;return iu((r=e.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}return function(t){return void 0===t&&(t={}),lu(o,t)}})); //# sourceMappingURL=jsonql-client.umd.js.map diff --git a/packages/http-client/package.json b/packages/http-client/package.json index 13407466..be8ceb75 100755 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -18,7 +18,7 @@ "scripts": { "test": "npm run build && npm run test:browser", "_publish": "npm publish --access public", - "prepare": "npm run build", + "prepare": "NODE_ENV=production npm run build", "test:utils": "node ./main.js", "test:node": "DEBUG=jsonql* ava --verbose", "test:contract": "DEBUG=jsonql-* ava ./tests/contract-lock.test.js", @@ -28,9 +28,9 @@ "start": "rollup -c -w --environment NODE_ENV:dev", "build": "npm run build:umd && npm run build:browser && npm run build:static && npm run build:full", "build:umd": "rollup -c", - "build:browser": "NODE_ENV=BROWSER rollup -c", - "build:static": "NODE_ENV=STATIC rollup -c", - "build:full": "NODE_ENV=FULL rollup -c", + "build:browser": "TARGET=BROWSER rollup -c", + "build:static": "TARGET=STATIC rollup -c", + "build:full": "TARGET=FULL rollup -c", "_build:stores": "NODE_ENV=stores rollup --config ./rollup.test.config.js", "contract:file": "node ./tests/fixtures/contract.js", "contract": "npm run contract:base && npm run contract:public", diff --git a/packages/http-client/rollup.config.js b/packages/http-client/rollup.config.js index 2d2f51bf..dcedba3f 100644 --- a/packages/http-client/rollup.config.js +++ b/packages/http-client/rollup.config.js @@ -15,6 +15,7 @@ import async from 'rollup-plugin-async' import pkg from './package.json' const env = process.env.NODE_ENV; +const target = process.env.TARGET; // 1.4.0 add new prop to control the build let plugins = [ buble({ @@ -73,7 +74,9 @@ switch (env) { sourceFile = 'index.js' } -plugins.push(terser()) +if (env === 'production') { + plugins.push(terser()) +} plugins.push(size()) let config = { -- Gitee From 804d544841a6248d8535b2feb50287014abd395b Mon Sep 17 00:00:00 2001 From: joelchu Date: Mon, 28 Oct 2019 22:12:32 +0800 Subject: [PATCH 42/44] clean up and change the test build script --- packages/http-client/core.js | 9316 ++++++++++++++++- packages/http-client/core.js.map | 2 +- .../http-client/dist/jsonql-client.static.js | 2 - .../dist/jsonql-client.static.js.map | 1 - .../http-client/dist/jsonql-client.umd.js | 2 - .../http-client/dist/jsonql-client.umd.js.map | 1 - packages/http-client/package.json | 7 +- 7 files changed, 9320 insertions(+), 11 deletions(-) delete mode 100644 packages/http-client/dist/jsonql-client.static.js delete mode 100644 packages/http-client/dist/jsonql-client.static.js.map delete mode 100644 packages/http-client/dist/jsonql-client.umd.js delete mode 100644 packages/http-client/dist/jsonql-client.umd.js.map diff --git a/packages/http-client/core.js b/packages/http-client/core.js index 38345a40..1c68b846 100644 --- a/packages/http-client/core.js +++ b/packages/http-client/core.js @@ -1,2 +1,9316 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClient=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message";var l="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},p="object"==typeof l&&l&&l.Object===Object&&l,h="object"==typeof self&&self&&self.Object===Object&&self,d=p||h||Function("return this")(),v=d.Symbol;function g(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&F(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function X(t){return void 0===t}var Z="[object Boolean]";var tt="[object Number]";function et(t){return function(t){return"number"==typeof t||k(t)&&A(t)==tt}(t)&&t!=+t}var rt="[object String]";function nt(t){return"string"==typeof t||!y(t)&&k(t)&&A(t)==rt}function ot(t,e){return function(r){return t(e(r))}}var it=ot(Object.getPrototypeOf,Object),at="[object Object]",ut=Function.prototype,ct=Object.prototype,st=ut.toString,ft=ct.hasOwnProperty,lt=st.call(Object);function pt(t){if(!k(t)||A(t)!=at)return!1;var e=it(t);if(null===e)return!0;var r=ft.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&st.call(r)==lt}var ht,dt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[ht?a:++n];if(!1===e(o[u],u,o))break}return t};var vt="[object Arguments]";function gt(t){return k(t)&&A(t)==vt}var yt=Object.prototype,bt=yt.hasOwnProperty,mt=yt.propertyIsEnumerable,_t=gt(function(){return arguments}())?gt:function(t){return k(t)&&bt.call(t,"callee")&&!mt.call(t,"callee")};var wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,jt=wt&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=jt&&jt.exports===wt?d.Buffer:void 0,St=(Ot?Ot.isBuffer:void 0)||function(){return!1},Et=9007199254740991,At=/^(?:0|[1-9]\d*)$/;function kt(t,e){var r=typeof t;return!!(e=null==e?Et:e)&&("number"==r||"symbol"!=r&&At.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Tt}var qt={};qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Arguments]"]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object Boolean]"]=qt["[object DataView]"]=qt["[object Date]"]=qt["[object Error]"]=qt["[object Function]"]=qt["[object Map]"]=qt["[object Number]"]=qt["[object Object]"]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object WeakMap]"]=!1;var Pt,Ct="object"==typeof exports&&exports&&!exports.nodeType&&exports,$t=Ct&&"object"==typeof module&&module&&!module.nodeType&&module,zt=$t&&$t.exports===Ct&&p.process,Nt=function(){try{var t=$t&&$t.require&&$t.require("util").types;return t||zt&&zt.binding&&zt.binding("util")}catch(t){}}(),Ft=Nt&&Nt.isTypedArray,It=Ft?(Pt=Ft,function(t){return Pt(t)}):function(t){return k(t)&&xt(t.length)&&!!qt[A(t)]},Rt=Object.prototype.hasOwnProperty;function Jt(t,e){var r=y(t),n=!r&&_t(t),o=!r&&!n&&St(t),i=!r&&!n&&!o&&It(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},re.prototype.set=function(t,e){var r=this.__data__,n=te(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ne,oe=d["__core-js_shared__"],ie=(ne=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+ne:"";var ae=Function.prototype.toString;function ue(t){if(null!=t){try{return ae.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ce=/^\[object .+?Constructor\]$/,se=Function.prototype,fe=Object.prototype,le=se.toString,pe=fe.hasOwnProperty,he=RegExp("^"+le.call(pe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(t){return!(!Lt(t)||function(t){return!!ie&&ie in t}(t))&&(Yt(t)?he:ce).test(ue(t))}function ve(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return de(r)?r:void 0}var ge=ve(d,"Map"),ye=ve(Object,"create");var be="__lodash_hash_undefined__",me=Object.prototype.hasOwnProperty;var _e=Object.prototype.hasOwnProperty;var we="__lodash_hash_undefined__";function je(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Pe?new Te:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=mn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(bn);function On(t,e){return jn(function(t,e,r){return e=yn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=yn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Sn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Lt(r))return!1;var n=typeof e;return!!("number"==n?Wt(r)&&kt(e,r.length):"string"==n&&e in r)&&Zt(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Kn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Vn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Ln(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bn(r,t)})).length},Gn=function(t,e){if(void 0===e&&(e=null),pt(t)){if(!e)return!0;if(Bn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!X(r)||(!1!==(e=Kn(t))?!Vn({arg:r},e):!Ln(t)(r))})).length)})).length}return!1},Yn=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Gn.apply(null,n)},Wn=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),Qn=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),Xn=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),Zn=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),to=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),eo=function(){try{if(window||document)return!0}catch(t){}return!1},ro=function(){try{if(!eo()&&l)return!0}catch(t){}return!1};var no=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return eo()?"browser":ro()?"node":"unknown"},e}(Error),oo=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,Error.captureStackTrace&&Error.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}(no),io=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),ao=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),uo=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),co=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,Error.captureStackTrace&&Error.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}(no),so=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,Error.captureStackTrace&&Error.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}(no),fo=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),lo=Object.freeze({__proto__:null,Jsonql406Error:Wn,Jsonql500Error:Qn,JsonqlAuthorisationError:Xn,JsonqlContractAuthError:Zn,JsonqlResolverAppError:to,JsonqlResolverNotFoundError:oo,JsonqlEnumError:io,JsonqlTypeError:ao,JsonqlCheckerError:uo,JsonqlValidationError:co,JsonqlError:so,JsonqlServerError:fo}),po=so,ho=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function vo(t){if(ho(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&lo[o])throw new lo[r](i,a);throw new po(i,a)}return t}function go(t){if(Array.isArray(t))throw new co("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof Wn:throw new Wn(e,r);case t instanceof Qn:throw new Qn(e,r);case t instanceof Xn:throw new Xn(e,r);case t instanceof Zn:throw new Zn(e,r);case t instanceof to:throw new to(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof ao:throw new ao(e,r);case t instanceof uo:throw new uo(e,r);case t instanceof co:throw new co(e,r);case t instanceof fo:throw new fo(e,r);default:throw new so(e,r)}}function yo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var bo=function(t,e){var r;switch(!0){case"object"===t:return!Yn(e);case"array"===t:return!Bn(e.arg);case!1!==(r=Kn(t)):return!Vn(e,r);default:return!Ln(t)(e.arg)}},mo=function(t,e){return X(t)?!0!==e.optional||X(e.defaultvalue)?null:e.defaultvalue:t},_o=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Bn(e))throw new so("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Bn(t))throw new so("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 yo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:yo(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:yo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?mo(t,a):t,index:r,param:a,optional:i}}));default:throw yo(5),new so("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Cn(e)&&!(r.type.length>r.type.filter((function(e){return bo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return bo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},wo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},jo=function(t){return!Cn(t)};function Oo(t,e){var r=Pn(e,(function(t,e){return!t[Dn]}));return Or(r,{})?t:function(t,e){var r={};return e=Yr(e),Xt(t,(function(t,n,o){Qr(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,Yr((function(t){return t.alias===e})),Xt)||e}))}function So(t,e){return An(e,(function(e,r){var n,o;return X(t[r])||!0===e[Rn]&&jo(t[r])?En({},e,((n={})[Hn]=!0,n)):((o={})[Mn]=t[r],o[In]=e[In],o[Rn]=e[Rn]||!1,o[Jn]=e[Jn]||!1,o[Un]=e[Un]||!1,o)}))}function Eo(t,e){var r=function(t,e){var r=Oo(t,e);return{pristineValues:An(Pn(e,(function(t,e){return wo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Pn(e,(function(t,e){return!wo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[So(n,r.checkAgainstAppProps),o]}var Ao=function(t){return Bn(t)?t:[t]};var ko=function(t,e){return!Bn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},To=function(t,e){try{return!!Yt(e)&&e.apply(null,[t])}catch(t){return!1}};function xo(t){return function(e,r){if(e[Hn])return e[Mn];var n=function(t,e){var r,n=[[t[Mn]],[(r={},r[In]=Ao(t[In]),r[Rn]=t[Rn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw yo("runValidationAction",r,e),new ao(r,n);if(!1!==e[Jn]&&!ko(e[Mn],e[Jn]))throw yo(Jn,e[Jn]),new io(r);if(!1!==e[Un]&&!To(e[Mn],e[Un]))throw yo(Un,e[Un]),new uo(r);return e[Mn]}}var qo=function(t,e){return Promise.resolve(Eo(t,e))};function Po(t,e,r,n){return void 0===t&&(t={}),qo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=An(r,xo(e));return En(o,n)}(t,n)})).then((function(t){return En({},t,r)}))}function Co(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),Bn(s)&&(p[i]=s),Yt(f)&&(p[u]=f),nt(l)&&(p[c]=l),p}var $o=zn,zo=Bn,No=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=_o(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Fo=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return Co.apply(null,[t,e,n,a,s,f])},Io=function(t){return function(e,r,n){return void 0===n&&(n={}),Po(e,r,n,t)}}(_o),Ro="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Jo=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=ui().key(e);t(ci(r),r)}},remove:function(t){return ui().removeItem(t)},clearAll:function(){return ui().clear()}};function ui(){return ii.localStorage}function ci(t){return ui().getItem(t)}var si=Ho.trim,fi={name:"cookieStorage",read:function(t){if(!t||!di(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(li.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;li.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pi,remove:hi,clearAll:function(){pi((function(t,e){hi(e)}))}},li=Ho.Global.document;function pi(t){for(var e=li.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(si(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function hi(t){t&&di(t)&&(li.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function di(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(li.cookie)}var vi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var gi="expire_mixin",yi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+gi);return{set:function(e,r,n,o){this.hasNamespace(gi)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(gi)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(gi)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ei=[ai,fi],Ai=[vi,yi,ji,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Si.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Si.compress(this._serialize(r));t(e,n)}}}],ki=ri.createStore(Ei,Ai),Ti=Ho.Global;function xi(){return Ti.sessionStorage}function qi(t){return xi().getItem(t)}var Pi=[{name:"sessionStorage",read:qi,write:function(t,e){return xi().setItem(t,e)},each:function(t){for(var e=xi().length-1;e>=0;e--){var r=xi().key(e);t(qi(r),r)}},remove:function(t){return xi().removeItem(t)},clearAll:function(){return xi().clear()}},fi],Ci=[vi,yi],$i=ri.createStore(Pi,Ci),zi=ki,Ni=$i,Fi=Array.isArray,Ii=void 0!==l?l:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ri="object"==typeof Ii&&Ii&&Ii.Object===Object&&Ii,Ji="object"==typeof self&&self&&self.Object===Object&&self,Mi=(Ri||Ji||Function("return this")()).Symbol,Ui=Object.prototype,Di=Ui.hasOwnProperty,Hi=Ui.toString,Li=Mi?Mi.toStringTag:void 0;var Bi=Object.prototype.toString;var Ki="[object Null]",Vi="[object Undefined]",Gi=Mi?Mi.toStringTag:void 0;function Yi(t){return null==t?void 0===t?Vi:Ki:Gi&&Gi in Object(t)?function(t){var e=Di.call(t,Li),r=t[Li];try{t[Li]=void 0;var n=!0}catch(t){}var o=Hi.call(t);return n&&(e?t[Li]=r:delete t[Li]),o}(t):function(t){return Bi.call(t)}(t)}var Wi=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function Qi(t){return null!=t&&"object"==typeof t}var Xi="[object Object]",Zi=Function.prototype,ta=Object.prototype,ea=Zi.toString,ra=ta.hasOwnProperty,na=ea.call(Object);var oa=Mi?Mi.prototype:void 0,ia=(oa&&oa.toString,"[object String]");function aa(t){return"string"==typeof t||!Fi(t)&&Qi(t)&&Yi(t)==ia}var ua=function(t,e){return!!t.filter((function(t){return t===e})).length},ca=function(t,e){var r=Object.keys(t);return ua(r,e)},sa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},fa="query",la="mutation",pa="socket",ha="payload",da="condition",va=function(){try{if(window||document)return!0}catch(t){}return!1},ga=function(){try{if(!va()&&Ii)return!0}catch(t){}return!1};var ya=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return va()?"browser":ga()?"node":"unknown"},e}(Error));var ba=function(t){var e;return(e={}).args=t,e};var ma=function(t){return ca(t,"data")&&!ca(t,"error")?t.data:t},_a=function(t){return function(t){if(!Qi(t)||Yi(t)!=Xi)return!1;var e=Wi(t);if(null===e)return!0;var r=ra.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ea.call(r)==na}(t)&&(ca(t,fa)||ca(t,la)||ca(t,pa))},wa=function(t,e){return void 0===e&&(e={}),_a(e)?Promise.resolve(e):t.getContract()},ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Oa(t){this.message=t}Oa.prototype=new Error,Oa.prototype.name="InvalidCharacterError";var Sa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Oa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ja.indexOf(n);return a};var Ea=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Sa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Sa(e)}};function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidTokenError";var ka=function(t,e){if("string"!=typeof t)throw new Aa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ea(t.split(".")[r]))}catch(t){throw new Aa("Invalid token specified: "+t.message)}},Ta=Aa;ka.InvalidTokenError=Ta;var xa,qa,Pa,Ca,$a,za,Na,Fa,Ia,Ra=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ja(t){if($o(t))return function(t){var e=t.iat||Ra(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new so("Token has expired on "+r,t)}return t}(ka(t));throw new so("Token must be a string!")}Fo("HS256",["string"]),Fo(!1,["boolean","number","string"],((xa={})[c]="exp",xa[o]=!0,xa)),Fo(!1,["boolean","number","string"],((qa={})[c]="nbf",qa[o]=!0,qa)),Fo(!1,["boolean","string"],((Pa={})[c]="iss",Pa[o]=!0,Pa)),Fo(!1,["boolean","string"],((Ca={})[c]="sub",Ca[o]=!0,Ca)),Fo(!1,["boolean","string"],(($a={})[c]="iss",$a[o]=!0,$a)),Fo(!1,["boolean"],((za={})[o]=!0,za)),Fo(!1,["boolean","string"],((Na={})[o]=!0,Na)),Fo(!1,["boolean","string"],((Fa={})[o]=!0,Fa)),Fo(!1,["boolean"],((Ia={})[o]=!0,Ia));var Ma=r[0],Ua=r[1],Da=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Ha={headers:{configurable:!0}};Ha.headers.set=function(t){this.extraHeader=t},Da.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=En({},{_cb:sa()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=En({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,En({},{method:Ma,params:o},e))},Da.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Da.prototype.processJsonp=function(t){return ma(t)},Da.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=$o(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):ma(o)}),(function(t){throw e.cleanUp(),console.error(t),new fo("Server side error",t)}))},Da.prototype.getHeaders=function(){return this.opts.enableAuth?En({},e,this.getAuthHeader(),this.extraHeader):En({},e,this.extraHeader)},Da.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Da.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=En({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(vo).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Da.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),aa(t)&&Fi(e)){var o=ba(e);return!0===r?o:((n={})[t]=o,n)}throw new ya("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(vo)},Da.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ha]=e,i[da]=r,!0===n)return i;if(aa(t))return(o={})[t]=i,o;throw new ya("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ua}).then(vo)},Object.defineProperties(Da.prototype,Ha);var La=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply(zi.set,zi,t),new co("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=zi.get("endpoint")||[];ua(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=zi.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ua(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=sa();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(zi.set,zi,e)},r.jsonqlEndpoint.get=function(){var t=zi.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(zi.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ni.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ja)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!_a(t))throw new co("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return _a(this.opts.contract)?this.opts.contract:zi.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Da))),Ba=function(t){return y(t)?t:[t]},Ka=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,Ba(t))}),Reflect.apply(t,null,r))}};function Va(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Ga=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(go)}},Ya=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return No(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(go)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wa=function(t,e,r,n,o){var i={},a=function(t){i=Va(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return No(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(go)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Qa=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xa=function(t,e,r,n){var o=function(t,e,r,n){return Ka(Ya,Wa,Qa)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.getContract()}),o.eventEmitter=n,o.version="1.4.0",o},Za={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},tu={hostname:Fo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Fo("jsonql",["string"]),loginHandlerName:Fo("login",["string"]),logoutHandlerName:Fo("logout",["string"]),enableJsonp:Fo(!1,["boolean"]),enableAuth:Fo(!1,["boolean"]),useJwt:Fo(!0,["boolean"]),useLocalstorage:Fo(!0,["boolean"]),storageKey:Fo("storageKey",["string"]),authKey:Fo("authKey",["string"]),contractExpired:Fo(0,["number"]),keepContract:Fo(!0,["boolean"]),exposeContract:Fo(!1,["boolean"]),showContractDesc:Fo(!1,["boolean"]),contractKey:Fo(!1,["boolean"]),contractKeyName:Fo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Fo(!1,["boolean"]),timeout:Fo(5e3,["number"]),returnInstance:Fo(!1,["boolean"]),allowReturnRawToken:Fo(!1,["boolean"]),debugOn:Fo(!1,["boolean"])};function eu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Io(t,tu,Za).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new La(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return wa(r,n.contract).then((function(e){return Xa(r,n,e,t)}))}))}var ru=new WeakMap,nu=new WeakMap;var ou=function(){this.__suspend__=null,this.queueStore=new Set},iu={$suspend:{configurable:!0},$queues:{configurable:!0}};iu.$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)},ou.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__},iu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ou.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(ou.prototype,iu);var au=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ru.set(this,t)},r.normalStore.get=function(){return ru.get(this)},r.lazyStore.set=function(t){nu.set(this,t)},r.lazyStore.get=function(){return nu.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}(ou));return function(t,e){var r;return eu((r=e.debugOn,new au({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}})); +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.jsonqlClient = factory()); +}(this, (function () { 'use strict'; + + // the core stuff to id if it's calling with jsonql + var DATA_KEY = 'data'; + var ERROR_KEY = 'error'; + + var JSONQL_PATH = 'jsonql'; + // according to the json query spec + var CONTENT_TYPE = 'application/vnd.api+json'; + var CHARSET = 'charset=utf-8'; + var DEFAULT_HEADER = { + 'Accept': CONTENT_TYPE, + 'Content-Type': [ CONTENT_TYPE, CHARSET ].join(';') + }; + + // export const INDEX = 'index'; use INDEX_KEY instead + var DEFAULT_TYPE = 'any'; + // new jsonp + var JSONP_CALLBACK_NAME = 'jsonqlJsonpCallback'; + + // methods allow + var API_REQUEST_METHODS = ['POST', 'PUT']; + // for contract-cli + var KEY_WORD = 'continue'; + + var TYPE_KEY = 'type'; + var OPTIONAL_KEY = 'optional'; + var ENUM_KEY = 'enumv'; // need to change this because enum is a reserved word + var ARGS_KEY = 'args'; + var CHECKER_KEY = 'checker'; + var ALIAS_KEY = 'alias'; + var LOGIN_NAME = 'login'; + var ISSUER_NAME = LOGIN_NAME; // legacy issue need to replace them later + var LOGOUT_NAME = 'logout'; + + var AUTH_HEADER = 'Authorization'; + var BEARER = 'Bearer'; + + // for client use @TODO need to clean this up some of them are not in use + var CREDENTIAL_STORAGE_KEY = 'credential'; + var CLIENT_STORAGE_KEY = 'storageKey'; + var CLIENT_AUTH_KEY = 'authKey'; + // contract key + var CONTRACT_KEY_NAME = 'X-JSONQL-CV-KEY'; + var SHOW_CONTRACT_DESC_PARAM = {desc: 'y'}; + + var OR_SEPERATOR = '|'; + + var STRING_TYPE = 'string'; + var BOOLEAN_TYPE = 'boolean'; + var ARRAY_TYPE = 'array'; + var OBJECT_TYPE = 'object'; + + var NUMBER_TYPE = 'number'; + var ARRAY_TYPE_LFT = 'array.<'; + var ARRAY_TYPE_RGT = '>'; + + var NO_ERROR_MSG = 'No message'; + var NO_STATUS_CODE = -1; + var HSA_ALGO = 'HS256'; + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + var global$1 = (typeof global !== "undefined" ? global : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}); + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global$1 == 'object' && global$1 && global$1.Object === Object && global$1; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Built-in value references. */ + var Symbol = root.Symbol; + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Built-in value references. */ + var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** Used for built-in method references. */ + var objectProto$1 = Object.prototype; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString$1 = objectProto$1.toString; + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString$1.call(value); + } + + /** `Object#toString` result references. */ + var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + + /** Built-in value references. */ + var symToStringTag$1 = Symbol ? Symbol.toStringTag : undefined; + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag$1 && symToStringTag$1 in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** `Object#toString` result references. */ + var symbolTag = '[object Symbol]'; + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0; + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + + /** Used to compose unicode capture groups. */ + var rsZWJ = '\\u200d'; + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** Used to compose unicode character classes. */ + 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'; + + /** Used to compose unicode capture groups. */ + var 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'; + + /** Used to compose unicode regexes. */ + var 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('|') + ')'; + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /** Used to match leading and trailing whitespace. */ + var reTrim = /^\s+|\s+$/g; + + /** + * Removes leading and trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trim(' abc '); + * // => 'abc' + * + * _.trim('-_-abc-_-', '_-'); + * // => 'abc' + * + * _.map([' foo ', ' bar '], _.trim); + * // => ['foo', 'bar'] + */ + function trim(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrim, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + chrSymbols = stringToArray(chars), + start = charsStartIndex(strSymbols, chrSymbols), + end = charsEndIndex(strSymbols, chrSymbols) + 1; + + return castSlice(strSymbols, start, end).join(''); + } + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** `Object#toString` result references. */ + var boolTag = '[object Boolean]'; + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** `Object#toString` result references. */ + var numberTag = '[object Number]'; + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN$1(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** `Object#toString` result references. */ + var stringTag = '[object String]'; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** Built-in value references. */ + var getPrototype = overArg(Object.getPrototypeOf, Object); + + /** `Object#toString` result references. */ + var objectTag = '[object Object]'; + + /** Used for built-in method references. */ + var funcProto = Function.prototype, + objectProto$2 = Object.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty$1 = objectProto$2.hasOwnProperty; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty$1.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]'; + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** Used for built-in method references. */ + var objectProto$3 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$2 = objectProto$3.hasOwnProperty; + + /** Built-in value references. */ + var propertyIsEnumerable = objectProto$3.propertyIsEnumerable; + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Built-in value references. */ + var Buffer = moduleExports ? root.Buffer : undefined; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER$1 = 9007199254740991; + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1; + } + + /** `Object#toString` result references. */ + var argsTag$1 = '[object Arguments]', + arrayTag = '[object Array]', + boolTag$1 = '[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]'; + + var 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]'; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag$1] = + 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] = false; + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** Detect free variable `exports`. */ + var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports$1 && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** Used for built-in method references. */ + var objectProto$4 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$3 = objectProto$4.hasOwnProperty; + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty$3.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** Used for built-in method references. */ + var objectProto$5 = Object.prototype; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5; + + return value === proto; + } + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeKeys = overArg(Object.keys, Object); + + /** Used for built-in method references. */ + var objectProto$6 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$4 = objectProto$6.hasOwnProperty; + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty$4.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** `Object#toString` result references. */ + var asyncTag = '[object AsyncFunction]', + funcTag$1 = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** Used for built-in method references. */ + var arrayProto = Array.prototype; + + /** Built-in value references. */ + var splice = arrayProto.splice; + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** Used to detect overreaching core-js shims. */ + var coreJsData = root['__core-js_shared__']; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** Used for built-in method references. */ + var funcProto$1 = Function.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString$1 = funcProto$1.toString; + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString$1.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used for built-in method references. */ + var funcProto$2 = Function.prototype, + objectProto$7 = Object.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString$2 = funcProto$2.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty$5 = objectProto$7.hasOwnProperty; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString$2.call(hasOwnProperty$5).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /* Built-in method references that are verified to be native. */ + var Map$1 = getNative(root, 'Map'); + + /* Built-in method references that are verified to be native. */ + var nativeCreate = getNative(Object, 'create'); + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used for built-in method references. */ + var objectProto$8 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$6 = objectProto$8.hasOwnProperty; + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty$6.call(data, key) ? data[key] : undefined; + } + + /** Used for built-in method references. */ + var objectProto$9 = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$7 = objectProto$9.hasOwnProperty; + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty$7.call(data, key); + } + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED$1 = '__lodash_hash_undefined__'; + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value; + return this; + } + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map$1 || ListCache), + 'string': new Hash + }; + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map$1 || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED$2 = '__lodash_hash_undefined__'; + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED$2); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** Built-in value references. */ + var Uint8Array$1 = root.Uint8Array; + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$1 = 1, + COMPARE_UNORDERED_FLAG$1 = 2; + + /** `Object#toString` result references. */ + var boolTag$2 = '[object Boolean]', + dateTag$1 = '[object Date]', + errorTag$1 = '[object Error]', + mapTag$1 = '[object Map]', + numberTag$2 = '[object Number]', + regexpTag$1 = '[object RegExp]', + setTag$1 = '[object Set]', + stringTag$2 = '[object String]', + symbolTag$1 = '[object Symbol]'; + + var arrayBufferTag$1 = '[object ArrayBuffer]', + dataViewTag$1 = '[object DataView]'; + + /** Used to convert symbols to primitives and strings. */ + var symbolProto$1 = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : undefined; + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag$1: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag$1: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) { + return false; + } + return true; + + case boolTag$2: + case dateTag$1: + case numberTag$2: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag$1: + return object.name == other.name && object.message == other.message; + + case regexpTag$1: + case stringTag$2: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag$1: + var convert = mapToArray; + + case setTag$1: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG$1; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag$1: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + + /** Used for built-in method references. */ + var objectProto$a = Object.prototype; + + /** Built-in value references. */ + var propertyIsEnumerable$1 = objectProto$a.propertyIsEnumerable; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeGetSymbols = Object.getOwnPropertySymbols; + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable$1.call(object, symbol); + }); + }; + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$2 = 1; + + /** Used for built-in method references. */ + var objectProto$b = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$8 = objectProto$b.hasOwnProperty; + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty$8.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(root, 'DataView'); + + /* Built-in method references that are verified to be native. */ + var Promise$1 = getNative(root, 'Promise'); + + /* Built-in method references that are verified to be native. */ + var Set$1 = getNative(root, 'Set'); + + /* Built-in method references that are verified to be native. */ + var WeakMap$1 = getNative(root, 'WeakMap'); + + /** `Object#toString` result references. */ + var mapTag$2 = '[object Map]', + objectTag$2 = '[object Object]', + promiseTag = '[object Promise]', + setTag$2 = '[object Set]', + weakMapTag$1 = '[object WeakMap]'; + + var dataViewTag$2 = '[object DataView]'; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map$1), + promiseCtorString = toSource(Promise$1), + setCtorString = toSource(Set$1), + weakMapCtorString = toSource(WeakMap$1); + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$2) || + (Map$1 && getTag(new Map$1) != mapTag$2) || + (Promise$1 && getTag(Promise$1.resolve()) != promiseTag) || + (Set$1 && getTag(new Set$1) != setTag$2) || + (WeakMap$1 && getTag(new WeakMap$1) != weakMapTag$1)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag$2 ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag$2; + case mapCtorString: return mapTag$2; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag$2; + case weakMapCtorString: return weakMapTag$1; + } + } + return result; + }; + } + + var getTag$1 = getTag; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$3 = 1; + + /** `Object#toString` result references. */ + var argsTag$2 = '[object Arguments]', + arrayTag$1 = '[object Array]', + objectTag$3 = '[object Object]'; + + /** Used for built-in method references. */ + var objectProto$c = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$9 = objectProto$c.hasOwnProperty; + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag$1 : getTag$1(object), + othTag = othIsArr ? arrayTag$1 : getTag$1(other); + + objTag = objTag == argsTag$2 ? objectTag$3 : objTag; + othTag = othTag == argsTag$2 ? objectTag$3 : othTag; + + var objIsObj = objTag == objectTag$3, + othIsObj = othTag == objectTag$3, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) { + var objIsWrapped = objIsObj && hasOwnProperty$9.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty$9.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$4 = 1, + COMPARE_UNORDERED_FLAG$2 = 2; + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** Error message constants. */ + var FUNC_ERROR_TEXT = 'Expected a function'; + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** Used to match property names within property paths. */ + var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** Used as references for various `Number` constants. */ + var INFINITY$1 = 1 / 0; + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result; + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG$5 = 1, + COMPARE_UNORDERED_FLAG$3 = 2; + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3); + }; + } + + /** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** Detect free variable `exports`. */ + var freeExports$2 = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule$2 = freeExports$2 && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2; + + /** Built-in value references. */ + var Buffer$1 = moduleExports$2 ? root.Buffer : undefined, + allocUnsafe = Buffer$1 ? Buffer$1.allocUnsafe : undefined; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** Built-in value references. */ + var objectCreate = Object.create; + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; + } + + /** Used for built-in method references. */ + var objectProto$d = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$a = objectProto$d.hasOwnProperty; + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty$a.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** Used for built-in method references. */ + var objectProto$e = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$b = objectProto$e.hasOwnProperty; + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty$b.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeMax = Math.max; + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeNow = Date.now; + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** Error message constants. */ + var FUNC_ERROR_TEXT$1 = 'Expected a function'; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT$1); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeGetSymbols$1 = Object.getOwnPropertySymbols; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols$1 ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = baseIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(baseIteratee(predicate))); + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, baseIteratee(predicate), baseForOwn); + } + + /** + * Check several parameter that there is something in the param + * @param {*} param input + * @return {boolean} + */ + + function notEmpty (a) { + if (isArray(a)) { + return true; + } + return a !== undefined && a !== null && trim(a) !== ''; + } + + // validator numbers + /** + * @2015-05-04 found a problem if the value is a number like string + * it will pass, so add a check if it's string before we pass to next + * @param {number} value expected value + * @return {boolean} true if OK + */ + var checkIsNumber = function(value) { + return isString(value) ? false : !isNaN$1( parseFloat(value) ) + }; + + // validate string type + /** + * @param {string} value expected value + * @return {boolean} true if OK + */ + var checkIsString = function(value) { + return (trim(value) !== '') ? isString(value) : false; + }; + + // check for boolean + /** + * @param {boolean} value expected + * @return {boolean} true if OK + */ + var checkIsBoolean = function(value) { + return isBoolean(value); + }; + + // validate any thing only check if there is something + /** + * @param {*} value the value + * @param {boolean} [checkNull=true] strict check if there is null value + * @return {boolean} true is OK + */ + var checkIsAny = function(value, checkNull) { + if ( checkNull === void 0 ) checkNull = true; + + if (!isUndefined(value) && value !== '' && trim(value) !== '') { + if (checkNull === false || (checkNull === true && !isNull(value))) { + return true; + } + } + return false; + }; + + // Good practice rule - No magic number + + var 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)"; + var PARAMS_NOT_ARRAY_ERR = "params is not an array! Did something gone wrong when you generate the contract.json?"; + var EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!'; + // @TODO the jsdoc return array. and we should also allow array syntax + var DEFAULT_TYPE$1 = DEFAULT_TYPE; + var ARRAY_TYPE_LFT$1 = ARRAY_TYPE_LFT; + var ARRAY_TYPE_RGT$1 = ARRAY_TYPE_RGT; + + var TYPE_KEY$1 = TYPE_KEY; + var OPTIONAL_KEY$1 = OPTIONAL_KEY; + var ENUM_KEY$1 = ENUM_KEY; + var ARGS_KEY$1 = ARGS_KEY; + var CHECKER_KEY$1 = CHECKER_KEY; + var ALIAS_KEY$1 = ALIAS_KEY; + + var ARRAY_TYPE$1 = ARRAY_TYPE; + var OBJECT_TYPE$1 = OBJECT_TYPE; + var STRING_TYPE$1 = STRING_TYPE; + var BOOLEAN_TYPE$1 = BOOLEAN_TYPE; + var NUMBER_TYPE$1 = NUMBER_TYPE; + var KEY_WORD$1 = KEY_WORD; + var OR_SEPERATOR$1 = OR_SEPERATOR; + + // not actually in use + // export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES; + + // primitive types + + /** + * this is a wrapper method to call different one based on their type + * @param {string} type to check + * @return {function} a function to handle the type + */ + var combineFn = function(type) { + switch (type) { + case NUMBER_TYPE$1: + return checkIsNumber; + case STRING_TYPE$1: + return checkIsString; + case BOOLEAN_TYPE$1: + return checkIsBoolean; + default: + return checkIsAny; + } + }; + + // validate array type + + /** + * @param {array} value expected + * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well + * @return {boolean} true if OK + */ + var checkIsArray = function(value, type) { + if ( type === void 0 ) type=''; + + if (isArray(value)) { + if (type === '' || trim(type)==='') { + return true; + } + // we test it in reverse + // @TODO if the type is an array (OR) then what? + // we need to take into account this could be an array + var c = value.filter(function (v) { return !combineFn(type)(v); }); + return !(c.length > 0) + } + return false; + }; + + /** + * check if it matches the array. pattern + * @param {string} type + * @return {boolean|array} false means NO, always return array + */ + var isArrayLike$1 = function(type) { + // @TODO could that have something like array<> instead of array.<>? missing the dot? + // because type script is Array without the dot + if (type.indexOf(ARRAY_TYPE_LFT$1) > -1 && type.indexOf(ARRAY_TYPE_RGT$1) > -1) { + var _type = type.replace(ARRAY_TYPE_LFT$1, '').replace(ARRAY_TYPE_RGT$1, ''); + if (_type.indexOf(OR_SEPERATOR$1)) { + return _type.split(OR_SEPERATOR$1) + } + return [_type] + } + return false; + }; + + /** + * we might encounter something like array. then we need to take it apart + * @param {object} p the prepared object for processing + * @param {string|array} type the type came from + * @return {boolean} for the filter to operate on + */ + var arrayTypeHandler = function(p, type) { + var arg = p.arg; + // need a special case to handle the OR type + // we need to test the args instead of the type(s) + if (type.length > 1) { + return !arg.filter(function (v) { return ( + !(type.length > type.filter(function (t) { return !combineFn(t)(v); }).length) + ); }).length; + } + // type is array so this will be or! + return type.length > type.filter(function (t) { return !checkIsArray(arg, t); }).length; + }; + + // validate object type + /** + * @TODO if provide with the keys then we need to check if the key:value type as well + * @param {object} value expected + * @param {array} [keys=null] if it has the keys array to compare as well + * @return {boolean} true if OK + */ + var checkIsObject = function(value, keys) { + if ( keys === void 0 ) keys=null; + + if (isPlainObject(value)) { + if (!keys) { + return true; + } + if (checkIsArray(keys)) { + // please note we DON'T care if some is optional + // plese refer to the contract.json for the keys + return !keys.filter(function (key) { + var _value = value[key.name]; + return !(key.type.length > key.type.filter(function (type) { + var tmp; + if (!isUndefined(_value)) { + if ((tmp = isArrayLike$1(type)) !== false) { + return !arrayTypeHandler({arg: _value}, tmp) + // return tmp.filter(t => !checkIsArray(_value, t)).length; + // @TODO there might be an object within an object with keys as well :S + } + return !combineFn(type)(_value) + } + return true; + }).length) + }).length; + } + } + return false; + }; + + /** + * fold this into it's own function to handler different object type + * @param {object} p the prepared object for process + * @return {boolean} + */ + var objectTypeHandler = function(p) { + var arg = p.arg; + var param = p.param; + var _args = [arg]; + if (Array.isArray(param.keys) && param.keys.length) { + _args.push(param.keys); + } + // just simple check + return checkIsObject.apply(null, _args) + }; + + /** + * This is a custom error to throw when server throw a 406 + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ + var Jsonql406Error = /*@__PURE__*/(function (Error) { + function Jsonql406Error() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + // We can't access the static name from an instance + // but we can do it like this + this.className = Jsonql406Error.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, Jsonql406Error); + } + } + + if ( Error ) Jsonql406Error.__proto__ = Error; + Jsonql406Error.prototype = Object.create( Error && Error.prototype ); + Jsonql406Error.prototype.constructor = Jsonql406Error; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 406; + }; + + staticAccessors.name.get = function () { + return 'Jsonql406Error'; + }; + + Object.defineProperties( Jsonql406Error, staticAccessors ); + + return Jsonql406Error; + }(Error)); + + /** + * This is a custom error to throw when server throw a 500 + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ + var Jsonql500Error = /*@__PURE__*/(function (Error) { + function Jsonql500Error() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = Jsonql500Error.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, Jsonql500Error); + } + } + + if ( Error ) Jsonql500Error.__proto__ = Error; + Jsonql500Error.prototype = Object.create( Error && Error.prototype ); + Jsonql500Error.prototype.constructor = Jsonql500Error; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 500; + }; + + staticAccessors.name.get = function () { + return 'Jsonql500Error'; + }; + + Object.defineProperties( Jsonql500Error, staticAccessors ); + + return Jsonql500Error; + }(Error)); + + /** + * This is a custom error to throw when pass credential but fail + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ + var JsonqlAuthorisationError = /*@__PURE__*/(function (Error) { + function JsonqlAuthorisationError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlAuthorisationError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlAuthorisationError); + } + } + + if ( Error ) JsonqlAuthorisationError.__proto__ = Error; + JsonqlAuthorisationError.prototype = Object.create( Error && Error.prototype ); + JsonqlAuthorisationError.prototype.constructor = JsonqlAuthorisationError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 401; + }; + + staticAccessors.name.get = function () { + return 'JsonqlAuthorisationError'; + }; + + Object.defineProperties( JsonqlAuthorisationError, staticAccessors ); + + return JsonqlAuthorisationError; + }(Error)); + + /** + * This is a custom error when not supply the credential and try to get contract + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ + var JsonqlContractAuthError = /*@__PURE__*/(function (Error) { + function JsonqlContractAuthError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlContractAuthError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlContractAuthError); + } + } + + if ( Error ) JsonqlContractAuthError.__proto__ = Error; + JsonqlContractAuthError.prototype = Object.create( Error && Error.prototype ); + JsonqlContractAuthError.prototype.constructor = JsonqlContractAuthError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 401; + }; + + staticAccessors.name.get = function () { + return 'JsonqlContractAuthError'; + }; + + Object.defineProperties( JsonqlContractAuthError, staticAccessors ); + + return JsonqlContractAuthError; + }(Error)); + + /** + * This is a custom error to throw when the resolver throw error and capture inside the middleware + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ + var JsonqlResolverAppError = /*@__PURE__*/(function (Error) { + function JsonqlResolverAppError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlResolverAppError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlResolverAppError); + } + } + + if ( Error ) JsonqlResolverAppError.__proto__ = Error; + JsonqlResolverAppError.prototype = Object.create( Error && Error.prototype ); + JsonqlResolverAppError.prototype.constructor = JsonqlResolverAppError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 500; + }; + + staticAccessors.name.get = function () { + return 'JsonqlResolverAppError'; + }; + + Object.defineProperties( JsonqlResolverAppError, staticAccessors ); + + return JsonqlResolverAppError; + }(Error)); + + /** + * some time it's hard to tell where the error is throw from + * because client server throw the same, therefore this util fn + * to add a property to the error object to tell if it's throw + * from client or server + * + */ + + var isBrowser = function () { + try { + if (window || document) { + return true; + } + } catch(e) {} + return false; + }; + + var isNode = function () { + try { + if (!isBrowser() && global$1) { + return true; + } + } catch(e) {} + return false; + }; + + function whereAmI() { + if (isBrowser()) { + return 'browser' + } + if (isNode()) { + return 'node' + } + return 'unknown' + } + + // The base Error of all + + var JsonqlBaseError = /*@__PURE__*/(function (Error) { + function JsonqlBaseError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + } + + if ( Error ) JsonqlBaseError.__proto__ = Error; + JsonqlBaseError.prototype = Object.create( Error && Error.prototype ); + JsonqlBaseError.prototype.constructor = JsonqlBaseError; + + JsonqlBaseError.where = function where () { + return whereAmI() + }; + + return JsonqlBaseError; + }(Error)); + + /** + * This is a custom error to throw when could not find the resolver + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ + var JsonqlResolverNotFoundError = /*@__PURE__*/(function (JsonqlBaseError) { + function JsonqlResolverNotFoundError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + JsonqlBaseError.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlResolverNotFoundError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlResolverNotFoundError); + } + } + + if ( JsonqlBaseError ) JsonqlResolverNotFoundError.__proto__ = JsonqlBaseError; + JsonqlResolverNotFoundError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); + JsonqlResolverNotFoundError.prototype.constructor = JsonqlResolverNotFoundError; + + var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; + + staticAccessors.statusCode.get = function () { + return 404; + }; + + staticAccessors.name.get = function () { + return 'JsonqlResolverNotFoundError'; + }; + + Object.defineProperties( JsonqlResolverNotFoundError, staticAccessors ); + + return JsonqlResolverNotFoundError; + }(JsonqlBaseError)); + + // this get throw from within the checkOptions when run through the enum failed + var JsonqlEnumError = /*@__PURE__*/(function (Error) { + function JsonqlEnumError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlEnumError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlEnumError); + } + } + + if ( Error ) JsonqlEnumError.__proto__ = Error; + JsonqlEnumError.prototype = Object.create( Error && Error.prototype ); + JsonqlEnumError.prototype.constructor = JsonqlEnumError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlEnumError'; + }; + + Object.defineProperties( JsonqlEnumError, staticAccessors ); + + return JsonqlEnumError; + }(Error)); + + // this will throw from inside the checkOptions + var JsonqlTypeError = /*@__PURE__*/(function (Error) { + function JsonqlTypeError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlTypeError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlTypeError); + } + } + + if ( Error ) JsonqlTypeError.__proto__ = Error; + JsonqlTypeError.prototype = Object.create( Error && Error.prototype ); + JsonqlTypeError.prototype.constructor = JsonqlTypeError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlTypeError'; + }; + + Object.defineProperties( JsonqlTypeError, staticAccessors ); + + return JsonqlTypeError; + }(Error)); + + // allow supply a custom checker function + // if that failed then we throw this error + var JsonqlCheckerError = /*@__PURE__*/(function (Error) { + function JsonqlCheckerError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + Error.apply(this, args); + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlCheckerError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlCheckerError); + } + } + + if ( Error ) JsonqlCheckerError.__proto__ = Error; + JsonqlCheckerError.prototype = Object.create( Error && Error.prototype ); + JsonqlCheckerError.prototype.constructor = JsonqlCheckerError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlCheckerError'; + }; + + Object.defineProperties( JsonqlCheckerError, staticAccessors ); + + return JsonqlCheckerError; + }(Error)); + + // custom validation error class + // when validaton failed + var JsonqlValidationError = /*@__PURE__*/(function (JsonqlBaseError) { + function JsonqlValidationError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + JsonqlBaseError.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlValidationError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlValidationError); + } + } + + if ( JsonqlBaseError ) JsonqlValidationError.__proto__ = JsonqlBaseError; + JsonqlValidationError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); + JsonqlValidationError.prototype.constructor = JsonqlValidationError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlValidationError'; + }; + + Object.defineProperties( JsonqlValidationError, staticAccessors ); + + return JsonqlValidationError; + }(JsonqlBaseError)); + + /** + * This is a custom error to throw whenever a error happen inside the jsonql + * This help us to capture the right error, due to the call happens in sequence + * @param {string} message to tell what happen + * @param {mixed} extra things we want to add, 500? + */ + var JsonqlError = /*@__PURE__*/(function (JsonqlBaseError) { + function JsonqlError() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + JsonqlBaseError.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlError); + // this.detail = this.stack; + } + } + + if ( JsonqlBaseError ) JsonqlError.__proto__ = JsonqlBaseError; + JsonqlError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); + JsonqlError.prototype.constructor = JsonqlError; + + var staticAccessors = { name: { configurable: true },statusCode: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlError'; + }; + + staticAccessors.statusCode.get = function () { + return NO_STATUS_CODE; + }; + + Object.defineProperties( JsonqlError, staticAccessors ); + + return JsonqlError; + }(JsonqlBaseError)); + + // this is from an example from Koa team to use for internal middleware ctx.throw + // but after the test the res.body part is unable to extract the required data + // I keep this one here for future reference + + var JsonqlServerError = /*@__PURE__*/(function (Error) { + function JsonqlServerError(statusCode, message) { + Error.call(this, message); + this.statusCode = statusCode; + this.className = JsonqlServerError.name; + } + + if ( Error ) JsonqlServerError.__proto__ = Error; + JsonqlServerError.prototype = Object.create( Error && Error.prototype ); + JsonqlServerError.prototype.constructor = JsonqlServerError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlServerError'; + }; + + Object.defineProperties( JsonqlServerError, staticAccessors ); + + return JsonqlServerError; + }(Error)); + + // server side + + var errors = /*#__PURE__*/Object.freeze({ + __proto__: null, + Jsonql406Error: Jsonql406Error, + Jsonql500Error: Jsonql500Error, + JsonqlAuthorisationError: JsonqlAuthorisationError, + JsonqlContractAuthError: JsonqlContractAuthError, + JsonqlResolverAppError: JsonqlResolverAppError, + JsonqlResolverNotFoundError: JsonqlResolverNotFoundError, + JsonqlEnumError: JsonqlEnumError, + JsonqlTypeError: JsonqlTypeError, + JsonqlCheckerError: JsonqlCheckerError, + JsonqlValidationError: JsonqlValidationError, + JsonqlError: JsonqlError, + JsonqlServerError: JsonqlServerError + }); + + // this will add directly to the then call in each http call + var JsonqlError$1 = JsonqlError; + + /** + * We can not just check something like result.data what if the result if false? + * @param {object} obj the result object + * @param {string} key we want to check if its exist or not + * @return {boolean} true on found + */ + var isKeyInObject = function (obj, key) { + var keys = Object.keys(obj); + return !!keys.filter(function (k) { return key === k; }).length; + }; + + /** + * It will ONLY have our own jsonql specific implement check + * @param {object} result the server return result + * @return {object} this will just throw error + */ + function clientErrorsHandler(result) { + if (isKeyInObject(result, 'error')) { + var error = result.error; + var className = error.className; + var name = error.name; + var errorName = className || name; + // just throw the whole thing back + var msg = error.message || NO_ERROR_MSG; + var detail = error.detail || error; + if (errorName && errors[errorName]) { + throw new errors[className](msg, detail) + } + throw new JsonqlError$1(msg, detail) + } + // pass through to the next + return result; + } + + /** + * this will put into generator call at the very end and catch + * the error throw from inside then throw again + * this is necessary because we split calls inside and the throw + * will not reach the actual client unless we do it this way + * @param {object} e Error + * @return {void} just throw + */ + function finalCatch(e) { + // this is a hack to get around the validateAsync not actually throw error + // instead it just rejected it with the array of failed parameters + if (Array.isArray(e)) { + // if we want the message then I will have to create yet another function + // to wrap this function to provide the name prop + throw new JsonqlValidationError('', e) + } + var msg = e.message || NO_ERROR_MSG; + var detail = e.detail || e; + switch (true) { + case e instanceof Jsonql406Error: + throw new Jsonql406Error(msg, detail) + case e instanceof Jsonql500Error: + throw new Jsonql500Error(msg, detail) + case e instanceof JsonqlAuthorisationError: + throw new JsonqlAuthorisationError(msg, detail) + case e instanceof JsonqlContractAuthError: + throw new JsonqlContractAuthError(msg, detail) + case e instanceof JsonqlResolverAppError: + throw new JsonqlResolverAppError(msg, detail) + case e instanceof JsonqlResolverNotFoundError: + throw new JsonqlResolverNotFoundError(msg, detail) + case e instanceof JsonqlEnumError: + throw new JsonqlEnumError(msg, detail) + case e instanceof JsonqlTypeError: + throw new JsonqlTypeError(msg, detail) + case e instanceof JsonqlCheckerError: + throw new JsonqlCheckerError(msg, detail) + case e instanceof JsonqlValidationError: + throw new JsonqlValidationError(msg, detail) + case e instanceof JsonqlServerError: + throw new JsonqlServerError(msg, detail) + default: + throw new JsonqlError(msg, detail) + } + } + + /** + * just a simple util for helping to debug + * @param {array} args arguments + * @return {void} + */ + function log() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + if (window && window.console) { + Reflect.apply(console.log, console, args); + } + } catch(e) {} + } + + // move the index.js code here that make more sense to find where things are + // import debug from 'debug' + // const debugFn = debug('jsonql-params-validator:validator') + // also export this for use in other places + + /** + * We need to handle those optional parameter without a default value + * @param {object} params from contract.json + * @return {boolean} for filter operation false is actually OK + */ + var optionalHandler = function( params ) { + var arg = params.arg; + var param = params.param; + if (notEmpty(arg)) { + // debug('call optional handler', arg, params); + // loop through the type in param + return !(param.type.length > param.type.filter(function (type) { return validateHandler(type, params); } + ).length) + } + return false; + }; + + /** + * actually picking the validator + * @param {*} type for checking + * @param {*} value for checking + * @return {boolean} true on OK + */ + var validateHandler = function(type, value) { + var tmp; + switch (true) { + case type === OBJECT_TYPE$1: + // debugFn('call OBJECT_TYPE') + return !objectTypeHandler(value) + case type === ARRAY_TYPE$1: + // debugFn('call ARRAY_TYPE') + return !checkIsArray(value.arg) + // @TODO when the type is not present, it always fall through here + // so we need to find a way to actually pre-check the type first + // AKA check the contract.json map before running here + case (tmp = isArrayLike$1(type)) !== false: + // debugFn('call ARRAY_LIKE: %O', value) + return !arrayTypeHandler(value, tmp) + default: + return !combineFn(type)(value.arg) + } + }; + + /** + * it get too longer to fit in one line so break it out from the fn below + * @param {*} arg value + * @param {object} param config + * @return {*} value or apply default value + */ + var getOptionalValue = function(arg, param) { + if (!isUndefined(arg)) { + return arg; + } + return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null) + }; + + /** + * padding the arguments with defaultValue if the arguments did not provide the value + * this will be the name export + * @param {array} args normalized arguments + * @param {array} params from contract.json + * @return {array} merge the two together + */ + var normalizeArgs = function(args, params) { + // first we should check if this call require a validation at all + // there will be situation where the function doesn't need args and params + if (!checkIsArray(params)) { + // debugFn('params value', params) + throw new JsonqlError(PARAMS_NOT_ARRAY_ERR) + } + if (params.length === 0) { + return []; + } + if (!checkIsArray(args)) { + throw new JsonqlError(ARGS_NOT_ARRAY_ERR) + } + // debugFn(args, params); + // fall through switch + switch(true) { + case args.length == params.length: // standard + log(1); + return args.map(function (arg, i) { return ( + { + arg: arg, + index: i, + param: params[i] + } + ); }) + case params[0].variable === true: // using spread syntax + log(2); + var type = params[0].type; + return args.map(function (arg, i) { return ( + { + arg: arg, + index: i, // keep the index for reference + param: params[i] || { type: type, name: '_' } + } + ); }) + // with optional defaultValue parameters + case args.length < params.length: + log(3); + return params.map(function (param, i) { return ( + { + param: param, + index: i, + arg: getOptionalValue(args[i], param), + optional: param.optional || false + } + ); }) + // this one pass more than it should have anything after the args.length will be cast as any type + case args.length > params.length: + log(4); + var ctn = params.length; + // this happens when we have those array. type + var _type = [ DEFAULT_TYPE$1 ]; + // we only looking at the first one, this might be a @BUG + /* + if ((tmp = isArrayLike(params[0].type[0])) !== false) { + _type = tmp; + } */ + // if we use the params as guide then the rest will get throw out + // which is not what we want, instead, anything without the param + // will get a any type and optional flag + return args.map(function (arg, i) { + var optional = i >= ctn ? true : !!params[i].optional; + var param = params[i] || { type: _type, name: ("_" + i) }; + return { + arg: optional ? getOptionalValue(arg, param) : arg, + index: i, + param: param, + optional: optional + } + }) + // @TODO find out if there is more cases not cover + default: // this should never happen + log(5); + // debugFn('args', args) + // debugFn('params', params) + // this is unknown therefore we just throw it! + throw new JsonqlError(EXCEPTION_CASE_ERR, { args: args, params: params }) + } + }; + + // what we want is after the validaton we also get the normalized result + // which is with the optional property if the argument didn't provide it + /** + * process the array of params back to their arguments + * @param {array} result the params result + * @return {array} arguments + */ + var processReturn = function (result) { return result.map(function (r) { return r.arg; }); }; + + /** + * validator main interface + * @param {array} args the arguments pass to the method call + * @param {array} params from the contract for that method + * @param {boolean} [withResul=false] if true then this will return the normalize result as well + * @return {array} empty array on success, or failed parameter and reasons + */ + var validateSync = function(args, params, withResult) { + var obj; + + if ( withResult === void 0 ) withResult = false; + var cleanArgs = normalizeArgs(args, params); + var checkResult = cleanArgs.filter(function (p) { + // v1.4.4 this fixed the problem, the root level optional is from the last fn + if (p.optional === true || p.param.optional === true) { + return optionalHandler(p) + } + // because array of types means OR so if one pass means pass + return !(p.param.type.length > p.param.type.filter( + function (type) { return validateHandler(type, p); } + ).length) + }); + // using the same convention we been using all this time + return !withResult ? checkResult : ( obj = {}, obj[ERROR_KEY] = checkResult, obj[DATA_KEY] = processReturn(cleanArgs), obj ) + }; + + /** + * A wrapper method that return promise + * @param {array} args arguments + * @param {array} params from contract.json + * @param {boolean} [withResul=false] if true then this will return the normalize result as well + * @return {object} promise.then or catch + */ + var validateAsync = function(args, params, withResult) { + if ( withResult === void 0 ) withResult = false; + + return new Promise(function (resolver, rejecter) { + var result = validateSync(args, params, withResult); + if (withResult) { + return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY]) + : resolver(result[DATA_KEY]) + } + // the different is just in the then or catch phrase + return result.length ? rejecter(result) : resolver([]) + }) + }; + + /** + * @param {array} arr Array for check + * @param {*} value target + * @return {boolean} true on successs + */ + var isInArray = function(arr, value) { + return !!arr.filter(function (a) { return a === value; }).length; + }; + + var isKeyInObject$1 = function(obj, key) { + var keys = Object.keys(obj); + return isInArray(keys, key) + }; + + // just not to make my head hurt + var isEmpty = function (value) { return !notEmpty(value); }; + + /** + * Map the alias to their key then grab their value over + * @param {object} config the user supplied config + * @param {object} appProps the default option map + * @return {object} the config keys replaced with the appProps key by the ALIAS + */ + function mapAliasConfigKeys(config, appProps) { + // need to do two steps + // 1. take key with alias key + var aliasMap = omitBy(appProps, function (value, k) { return !value[ALIAS_KEY$1]; } ); + if (isEqual(aliasMap, {})) { + return config; + } + return mapKeys(config, function (v, key) { return findKey(aliasMap, function (o) { return o.alias === key; }) || key; }) + } + + /** + * We only want to run the valdiation against the config (user supplied) value + * but keep the defaultOptions untouch + * @param {object} config configuraton supplied by user + * @param {object} appProps the default options map + * @return {object} the pristine values that will add back to the final output + */ + function preservePristineValues(config, appProps) { + // @BUG this will filter out those that is alias key + // we need to first map the alias keys back to their full key + var _config = mapAliasConfigKeys(config, appProps); + // take the default value out + var pristineValues = mapValues( + omitBy(appProps, function (value, key) { return isKeyInObject$1(_config, key); }), + function (value) { return value.args; } + ); + // for testing the value + var checkAgainstAppProps = omitBy(appProps, function (value, key) { return !isKeyInObject$1(_config, key); }); + // output + return { + pristineValues: pristineValues, + checkAgainstAppProps: checkAgainstAppProps, + config: _config // passing this correct values back + } + } + + /** + * This will take the value that is ONLY need to check + * @param {object} config that one + * @param {object} props map for creating checking + * @return {object} put that arg into the args + */ + function processConfigAction(config, props) { + // debugFn('processConfigAction', props) + // v.1.2.0 add checking if its mark optional and the value is empty then pass + return mapValues(props, function (value, key) { + var obj, obj$1; + + return ( + isUndefined(config[key]) || (value[OPTIONAL_KEY$1] === true && isEmpty(config[key])) + ? merge({}, value, ( obj = {}, obj[KEY_WORD$1] = true, obj )) + : ( obj$1 = {}, obj$1[ARGS_KEY$1] = config[key], obj$1[TYPE_KEY$1] = value[TYPE_KEY$1], obj$1[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1] || false, obj$1[ENUM_KEY$1] = value[ENUM_KEY$1] || false, obj$1[CHECKER_KEY$1] = value[CHECKER_KEY$1] || false, obj$1 ) + ); + } + ) + } + + /** + * Quick transform + * @TODO we should only validate those that is pass from the config + * and pass through those values that is from the defaultOptions + * @param {object} opts that one + * @param {object} appProps mutation configuration options + * @return {object} put that arg into the args + */ + function prepareArgsForValidation(opts, appProps) { + var ref = preservePristineValues(opts, appProps); + var config = ref.config; + var pristineValues = ref.pristineValues; + var checkAgainstAppProps = ref.checkAgainstAppProps; + // output + return [ + processConfigAction(config, checkAgainstAppProps), + pristineValues + ] + } + + // breaking the whole thing up to see what cause the multiple calls issue + + // import debug from 'debug'; + // const debugFn = debug('jsonql-params-validator:options:validation') + + /** + * just make sure it returns an array to use + * @param {*} arg input + * @return {array} output + */ + var toArray = function (arg) { return checkIsArray(arg) ? arg : [arg]; }; + + /** + * DIY in array + * @param {array} arr to check against + * @param {*} value to check + * @return {boolean} true on OK + */ + var inArray = function (arr, value) { return ( + !!arr.filter(function (v) { return v === value; }).length + ); }; + + /** + * break out to make the code easier to read + * @param {object} value to process + * @param {function} cb the validateSync + * @return {array} empty on success + */ + function validateHandler$1(value, cb) { + var obj; + + // cb is the validateSync methods + var args = [ + [ value[ARGS_KEY$1] ], + [( obj = {}, obj[TYPE_KEY$1] = toArray(value[TYPE_KEY$1]), obj[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1], obj )] + ]; + // debugFn('validateHandler', args) + return Reflect.apply(cb, null, args) + } + + /** + * Check against the enum value if it's provided + * @param {*} value to check + * @param {*} enumv to check against if it's not false + * @return {boolean} true on OK + */ + var enumHandler = function (value, enumv) { + if (checkIsArray(enumv)) { + return inArray(enumv, value) + } + return true; + }; + + /** + * Allow passing a function to check the value + * There might be a problem here if the function is incorrect + * and that will makes it hard to debug what is going on inside + * @TODO there could be a few feature add to this one under different circumstance + * @param {*} value to check + * @param {function} checker for checking + */ + var checkerHandler = function (value, checker) { + try { + return isFunction(checker) ? checker.apply(null, [value]) : false; + } catch (e) { + return false; + } + }; + + /** + * Taken out from the runValidaton this only validate the required values + * @param {array} args from the config2argsAction + * @param {function} cb validateSync + * @return {array} of configuration values + */ + function runValidationAction(cb) { + return function (value, key) { + // debugFn('runValidationAction', key, value) + if (value[KEY_WORD$1]) { + return value[ARGS_KEY$1] + } + var check = validateHandler$1(value, cb); + if (check.length) { + log('runValidationAction', key, value); + throw new JsonqlTypeError(key, check) + } + if (value[ENUM_KEY$1] !== false && !enumHandler(value[ARGS_KEY$1], value[ENUM_KEY$1])) { + log(ENUM_KEY$1, value[ENUM_KEY$1]); + throw new JsonqlEnumError(key) + } + if (value[CHECKER_KEY$1] !== false && !checkerHandler(value[ARGS_KEY$1], value[CHECKER_KEY$1])) { + log(CHECKER_KEY$1, value[CHECKER_KEY$1]); + throw new JsonqlCheckerError(key) + } + return value[ARGS_KEY$1] + } + } + + /** + * @param {object} args from the config2argsAction + * @param {function} cb validateSync + * @return {object} of configuration values + */ + function runValidation(args, cb) { + var argsForValidate = args[0]; + var pristineValues = args[1]; + // turn the thing into an array and see what happen here + // debugFn('_args', argsForValidate) + var result = mapValues(argsForValidate, runValidationAction(cb)); + return merge(result, pristineValues) + } + + /// this is port back from the client to share across all projects + + // import debug from 'debug' + // const debugFn = debug('jsonql-params-validator:check-options-async') + + /** + * Quick transform + * @param {object} config that one + * @param {object} appProps mutation configuration options + * @return {object} put that arg into the args + */ + var configToArgs = function (config, appProps) { + return Promise.resolve( + prepareArgsForValidation(config, appProps) + ) + }; + + /** + * @param {object} config user provide configuration option + * @param {object} appProps mutation configuration options + * @param {object} constProps the immutable configuration options + * @param {function} cb the validateSync method + * @return {object} Promise resolve merge config object + */ + function checkOptionsAsync(config, appProps, constProps, cb) { + if ( config === void 0 ) config = {}; + + return configToArgs(config, appProps) + .then(function (args1) { + // debugFn('args', args1) + return runValidation(args1, cb) + }) + // next if every thing good then pass to final merging + .then(function (args2) { return merge({}, args2, constProps); }) + } + + // create function to construct the config entry so we don't need to keep building object + // import debug from 'debug'; + // const debugFn = debug('jsonql-params-validator:construct-config'); + /** + * @param {*} args value + * @param {string} type for value + * @param {boolean} [optional=false] + * @param {boolean|array} [enumv=false] + * @param {boolean|function} [checker=false] + * @return {object} config entry + */ + function constructConfigFn(args, type, optional, enumv, checker, alias) { + if ( optional === void 0 ) optional=false; + if ( enumv === void 0 ) enumv=false; + if ( checker === void 0 ) checker=false; + if ( alias === void 0 ) alias=false; + + var base = {}; + base[ARGS_KEY] = args; + base[TYPE_KEY] = type; + if (optional === true) { + base[OPTIONAL_KEY] = true; + } + if (checkIsArray(enumv)) { + base[ENUM_KEY] = enumv; + } + if (isFunction(checker)) { + base[CHECKER_KEY] = checker; + } + if (isString(alias)) { + base[ALIAS_KEY] = alias; + } + return base; + } + + // export also create wrapper methods + + // import debug from 'debug'; + // const debugFn = debug('jsonql-params-validator:options:index'); + + /** + * This has a different interface + * @param {*} value to supply + * @param {string|array} type for checking + * @param {object} params to map against the config check + * @param {array} params.enumv NOT enum + * @param {boolean} params.optional false then nothing + * @param {function} params.checker need more work on this one later + * @param {string} params.alias mostly for cmd + */ + var createConfig = function (value, type, params) { + if ( params === void 0 ) params = {}; + + // Note the enumv not ENUM + // const { enumv, optional, checker, alias } = params; + // let args = [value, type, optional, enumv, checker, alias]; + var o = params[OPTIONAL_KEY]; + var e = params[ENUM_KEY]; + var c = params[CHECKER_KEY]; + var a = params[ALIAS_KEY]; + return constructConfigFn.apply(null, [value, type, o, e, c, a]) + }; + + /** + * We recreate the method here to avoid the circlar import + * @param {object} config user supply configuration + * @param {object} appProps mutation options + * @param {object} [constantProps={}] optional: immutation options + * @return {object} all checked configuration + */ + var checkConfigAsync = function(validateSync) { + return function(config, appProps, constantProps) { + if ( constantProps === void 0 ) constantProps= {}; + + return checkOptionsAsync(config, appProps, constantProps, validateSync) + } + }; + + // export + var isString$1 = checkIsString; + var isArray$1 = checkIsArray; + var validateAsync$1 = validateAsync; + + var createConfig$1 = createConfig; + + var checkConfigAsync$1 = checkConfigAsync(validateSync); + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var assign = make_assign(); + var create = make_create(); + var trim$1 = make_trim(); + var Global = (typeof window !== 'undefined' ? window : commonjsGlobal); + + var util = { + assign: assign, + create: create, + trim: trim$1, + bind: bind, + slice: slice, + each: each, + map: map, + pluck: pluck, + isList: isList, + isFunction: isFunction$1, + isObject: isObject$1, + Global: Global + }; + + function make_assign() { + if (Object.assign) { + return Object.assign + } else { + return function shimAssign(obj, props1, props2, etc) { + var arguments$1 = arguments; + + for (var i = 1; i < arguments.length; i++) { + each(Object(arguments$1[i]), function(val, key) { + obj[key] = val; + }); + } + return obj + } + } + } + + function make_create() { + if (Object.create) { + return function create(obj, assignProps1, assignProps2, etc) { + var assignArgsList = slice(arguments, 1); + return assign.apply(this, [Object.create(obj)].concat(assignArgsList)) + } + } else { + function F() {} // eslint-disable-line no-inner-declarations + return function create(obj, assignProps1, assignProps2, etc) { + var assignArgsList = slice(arguments, 1); + F.prototype = obj; + return assign.apply(this, [new F()].concat(assignArgsList)) + } + } + } + + function make_trim() { + if (String.prototype.trim) { + return function trim(str) { + return String.prototype.trim.call(str) + } + } else { + return function trim(str) { + return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '') + } + } + } + + function bind(obj, fn) { + return function() { + return fn.apply(obj, Array.prototype.slice.call(arguments, 0)) + } + } + + function slice(arr, index) { + return Array.prototype.slice.call(arr, index || 0) + } + + function each(obj, fn) { + pluck(obj, function(val, key) { + fn(val, key); + return false + }); + } + + function map(obj, fn) { + var res = (isList(obj) ? [] : {}); + pluck(obj, function(v, k) { + res[k] = fn(v, k); + return false + }); + return res + } + + function pluck(obj, fn) { + if (isList(obj)) { + for (var i=0; i= 0; i--) { + var key = localStorage$1().key(i); + fn(read(key), key); + } + } + + function remove(key) { + return localStorage$1().removeItem(key) + } + + function clearAll() { + return localStorage$1().clear() + } + + // cookieStorage is useful Safari private browser mode, where localStorage + // doesn't work but cookies do. This implementation is adopted from + // https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage + + + var Global$2 = util.Global; + var trim$2 = util.trim; + + var cookieStorage = { + name: 'cookieStorage', + read: read$1, + write: write$1, + each: each$3, + remove: remove$1, + clearAll: clearAll$1, + }; + + var doc = Global$2.document; + + function read$1(key) { + if (!key || !_has(key)) { return null } + var regexpStr = "(?:^|.*;\\s*)" + + escape(key).replace(/[\-\.\+\*]/g, "\\$&") + + "\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"; + return unescape(doc.cookie.replace(new RegExp(regexpStr), "$1")) + } + + function each$3(callback) { + var cookies = doc.cookie.split(/; ?/g); + for (var i = cookies.length - 1; i >= 0; i--) { + if (!trim$2(cookies[i])) { + continue + } + var kvp = cookies[i].split('='); + var key = unescape(kvp[0]); + var val = unescape(kvp[1]); + callback(val, key); + } + } + + function write$1(key, data) { + if(!key) { return } + doc.cookie = escape(key) + "=" + escape(data) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"; + } + + function remove$1(key) { + if (!key || !_has(key)) { + return + } + doc.cookie = escape(key) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; + } + + function clearAll$1() { + each$3(function(_, key) { + remove$1(key); + }); + } + + function _has(key) { + return (new RegExp("(?:^|;\\s*)" + escape(key).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(doc.cookie) + } + + var defaults = defaultsPlugin; + + function defaultsPlugin() { + var defaultValues = {}; + + return { + defaults: defaults, + get: get + } + + function defaults(_, values) { + defaultValues = values; + } + + function get(super_fn, key) { + var val = super_fn(); + return (val !== undefined ? val : defaultValues[key]) + } + } + + var namespace = 'expire_mixin'; + + var expire = expirePlugin; + + function expirePlugin() { + var expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace); + + return { + set: expire_set, + get: expire_get, + remove: expire_remove, + getExpiration: getExpiration, + removeExpiredKeys: removeExpiredKeys + } + + function expire_set(super_fn, key, val, expiration) { + if (!this.hasNamespace(namespace)) { + expirations.set(key, expiration); + } + return super_fn() + } + + function expire_get(super_fn, key) { + if (!this.hasNamespace(namespace)) { + _checkExpiration.call(this, key); + } + return super_fn() + } + + function expire_remove(super_fn, key) { + if (!this.hasNamespace(namespace)) { + expirations.remove(key); + } + return super_fn() + } + + function getExpiration(_, key) { + return expirations.get(key) + } + + function removeExpiredKeys(_) { + var keys = []; + this.each(function(val, key) { + keys.push(key); + }); + for (var i=0; i + // This work is free. You can redistribute it and/or modify it + // under the terms of the WTFPL, Version 2 + // For more information see LICENSE.txt or http://www.wtfpl.net/ + // + // For more information, the home page: + // http://pieroxy.net/blog/pages/lz-string/testing.html + // + // LZ-based compression algorithm, version 1.4.4 + var LZString = (function() { + + // private property + var f = String.fromCharCode; + var keyStrBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var keyStrUriSafe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$"; + var baseReverseDic = {}; + + function getBaseValue(alphabet, character) { + if (!baseReverseDic[alphabet]) { + baseReverseDic[alphabet] = {}; + for (var i=0 ; i>> 8; + buf[i*2+1] = current_value % 256; + } + return buf; + }, + + //decompress from uint8array (UCS-2 big endian format) + decompressFromUint8Array:function (compressed) { + if (compressed===null || compressed===undefined){ + return LZString.decompress(compressed); + } else { + var buf=new Array(compressed.length/2); // 2 bytes per character + for (var i=0, TotalLen=buf.length; i> 1; + } + } else { + value = 1; + for (i=0 ; i> 1; + } + } + context_enlargeIn--; + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + delete context_dictionaryToCreate[context_w]; + } else { + value = context_dictionary[context_w]; + for (i=0 ; i> 1; + } + + + } + context_enlargeIn--; + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + // Add wc to the dictionary. + context_dictionary[context_wc] = context_dictSize++; + context_w = String(context_c); + } + } + + // Output the code for w. + if (context_w !== "") { + if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) { + if (context_w.charCodeAt(0)<256) { + for (i=0 ; i> 1; + } + } else { + value = 1; + for (i=0 ; i> 1; + } + } + context_enlargeIn--; + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + delete context_dictionaryToCreate[context_w]; + } else { + value = context_dictionary[context_w]; + for (i=0 ; i> 1; + } + + + } + context_enlargeIn--; + if (context_enlargeIn == 0) { + context_enlargeIn = Math.pow(2, context_numBits); + context_numBits++; + } + } + + // Mark the end of the stream + value = 2; + for (i=0 ; i> 1; + } + + // Flush the last char + while (true) { + context_data_val = (context_data_val << 1); + if (context_data_position == bitsPerChar-1) { + context_data.push(getCharFromInt(context_data_val)); + break; + } + else { context_data_position++; } + } + return context_data.join(''); + }, + + decompress: function (compressed) { + if (compressed == null) { return ""; } + if (compressed == "") { return null; } + return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); }); + }, + + _decompress: function (length, resetValue, getNextValue) { + var dictionary = [], + next, + enlargeIn = 4, + dictSize = 4, + numBits = 3, + entry = "", + result = [], + i, + w, + bits, resb, maxpower, power, + c, + data = {val:getNextValue(0), position:resetValue, index:1}; + + for (i = 0; i < 3; i += 1) { + dictionary[i] = i; + } + + bits = 0; + maxpower = Math.pow(2,2); + power=1; + while (power!=maxpower) { + resb = data.val & data.position; + data.position >>= 1; + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + bits |= (resb>0 ? 1 : 0) * power; + power <<= 1; + } + + switch (next = bits) { + case 0: + bits = 0; + maxpower = Math.pow(2,8); + power=1; + while (power!=maxpower) { + resb = data.val & data.position; + data.position >>= 1; + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + bits |= (resb>0 ? 1 : 0) * power; + power <<= 1; + } + c = f(bits); + break; + case 1: + bits = 0; + maxpower = Math.pow(2,16); + power=1; + while (power!=maxpower) { + resb = data.val & data.position; + data.position >>= 1; + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + bits |= (resb>0 ? 1 : 0) * power; + power <<= 1; + } + c = f(bits); + break; + case 2: + return ""; + } + dictionary[3] = c; + w = c; + result.push(c); + while (true) { + if (data.index > length) { + return ""; + } + + bits = 0; + maxpower = Math.pow(2,numBits); + power=1; + while (power!=maxpower) { + resb = data.val & data.position; + data.position >>= 1; + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + bits |= (resb>0 ? 1 : 0) * power; + power <<= 1; + } + + switch (c = bits) { + case 0: + bits = 0; + maxpower = Math.pow(2,8); + power=1; + while (power!=maxpower) { + resb = data.val & data.position; + data.position >>= 1; + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + bits |= (resb>0 ? 1 : 0) * power; + power <<= 1; + } + + dictionary[dictSize++] = f(bits); + c = dictSize-1; + enlargeIn--; + break; + case 1: + bits = 0; + maxpower = Math.pow(2,16); + power=1; + while (power!=maxpower) { + resb = data.val & data.position; + data.position >>= 1; + if (data.position == 0) { + data.position = resetValue; + data.val = getNextValue(data.index++); + } + bits |= (resb>0 ? 1 : 0) * power; + power <<= 1; + } + dictionary[dictSize++] = f(bits); + c = dictSize-1; + enlargeIn--; + break; + case 2: + return result.join(''); + } + + if (enlargeIn == 0) { + enlargeIn = Math.pow(2, numBits); + numBits++; + } + + if (dictionary[c]) { + entry = dictionary[c]; + } else { + if (c === dictSize) { + entry = w + w.charAt(0); + } else { + return null; + } + } + result.push(entry); + + // Add w+entry[0] to the dictionary. + dictionary[dictSize++] = w + entry.charAt(0); + enlargeIn--; + + w = entry; + + if (enlargeIn == 0) { + enlargeIn = Math.pow(2, numBits); + numBits++; + } + + } + } + }; + return LZString; + })(); + + if( module != null ) { + module.exports = LZString; + } + }); + + var compression = compressionPlugin; + + function compressionPlugin() { + return { + get: get, + set: set, + } + + function get(super_fn, key) { + var val = super_fn(key); + if (!val) { return val } + var decompressed = lzString.decompress(val); + // fallback to existing values that are not compressed + return (decompressed == null) ? val : this._deserialize(decompressed) + } + + function set(super_fn, key, val) { + var compressed = lzString.compress(this._serialize(val)); + super_fn(key, compressed); + } + } + + // sort of persist on the user side + + var storages = [localStorage_1, cookieStorage]; + var plugins = [defaults, expire, events, compression]; + + var localStore = storeEngine.createStore(storages, plugins); + + var Global$3 = util.Global; + + var sessionStorage_1 = { + name: 'sessionStorage', + read: read$2, + write: write$2, + each: each$5, + remove: remove$2, + clearAll: clearAll$2 + }; + + function sessionStorage() { + return Global$3.sessionStorage + } + + function read$2(key) { + return sessionStorage().getItem(key) + } + + function write$2(key, data) { + return sessionStorage().setItem(key, data) + } + + function each$5(fn) { + for (var i = sessionStorage().length - 1; i >= 0; i--) { + var key = sessionStorage().key(i); + fn(read$2(key), key); + } + } + + function remove$2(key) { + return sessionStorage().removeItem(key) + } + + function clearAll$2() { + return sessionStorage().clear() + } + + // session store with watch + + var storages$1 = [sessionStorage_1, cookieStorage]; + var plugins$1 = [defaults, expire]; + + var sessionStore = storeEngine.createStore(storages$1, plugins$1); + + // export store interface + + // export back the raw version for development purposes + var localStore$1 = localStore; + var sessionStore$1 = sessionStore; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray$2 = Array.isArray; + + var global$1$1 = (typeof global$1 !== "undefined" ? global$1 : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}); + + /** Detect free variable `global` from Node.js. */ + var freeGlobal$1 = typeof global$1$1 == 'object' && global$1$1 && global$1$1.Object === Object && global$1$1; + + /** Detect free variable `self`. */ + var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')(); + + /** Built-in value references. */ + var Symbol$1 = root$1.Symbol; + + /** Used for built-in method references. */ + var objectProto$f = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty$c = objectProto$f.hasOwnProperty; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString$2 = objectProto$f.toString; + + /** Built-in value references. */ + var symToStringTag$2 = Symbol$1 ? Symbol$1.toStringTag : undefined; + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag$1(value) { + var isOwn = hasOwnProperty$c.call(value, symToStringTag$2), + tag = value[symToStringTag$2]; + + try { + value[symToStringTag$2] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString$2.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag$2] = tag; + } else { + delete value[symToStringTag$2]; + } + } + return result; + } + + /** Used for built-in method references. */ + var objectProto$1$1 = Object.prototype; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString$1$1 = objectProto$1$1.toString; + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString$1(value) { + return nativeObjectToString$1$1.call(value); + } + + /** `Object#toString` result references. */ + var nullTag$1 = '[object Null]', + undefinedTag$1 = '[object Undefined]'; + + /** Built-in value references. */ + var symToStringTag$1$1 = Symbol$1 ? Symbol$1.toStringTag : undefined; + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag$1(value) { + if (value == null) { + return value === undefined ? undefinedTag$1 : nullTag$1; + } + return (symToStringTag$1$1 && symToStringTag$1$1 in Object(value)) + ? getRawTag$1(value) + : objectToString$1(value); + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg$1(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** Built-in value references. */ + var getPrototype$1 = overArg$1(Object.getPrototypeOf, Object); + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike$1(value) { + return value != null && typeof value == 'object'; + } + + /** `Object#toString` result references. */ + var objectTag$4 = '[object Object]'; + + /** Used for built-in method references. */ + var funcProto$3 = Function.prototype, + objectProto$2$1 = Object.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString$3 = funcProto$3.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty$1$1 = objectProto$2$1.hasOwnProperty; + + /** Used to infer the `Object` constructor. */ + var objectCtorString$1 = funcToString$3.call(Object); + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject$1(value) { + if (!isObjectLike$1(value) || baseGetTag$1(value) != objectTag$4) { + return false; + } + var proto = getPrototype$1(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty$1$1.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString$3.call(Ctor) == objectCtorString$1; + } + + /** Used to convert symbols to primitives and strings. */ + var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : undefined, + symbolToString$1 = symbolProto$2 ? symbolProto$2.toString : undefined; + + /** `Object#toString` result references. */ + var stringTag$3 = '[object String]'; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString$2(value) { + return typeof value == 'string' || + (!isArray$2(value) && isObjectLike$1(value) && baseGetTag$1(value) == stringTag$3); + } + + // bunch of generic helpers + + /** + * DIY in Array + * @param {array} arr to check from + * @param {*} value to check against + * @return {boolean} true on found + */ + var inArray$1 = function (arr, value) { return !!arr.filter(function (a) { return a === value; }).length; }; + + /** + * @param {object} obj for search + * @param {string} key target + * @return {boolean} true on success + */ + var isObjectHasKey = function(obj, key) { + var keys = Object.keys(obj); + return inArray$1(keys, key) + }; + + /** + * @param {boolean} sec return in second or not + * @return {number} timestamp + */ + var timestamp = function (sec) { + if ( sec === void 0 ) { sec = false; } + + var time = Date.now(); + return sec ? Math.floor( time / 1000 ) : time; + }; + + /** + * @return {object} _cb as key with timestamp + */ + var cacheBurst = function () { return ({ _cb: timestamp() }); }; + + // the core stuff to id if it's calling with jsonql + var DATA_KEY$1 = 'data'; + var ERROR_KEY$1 = 'error'; + + // @TODO remove this is not in use + // export const CLIENT_CONFIG_FILE = '.clients.json'; + // export const CONTRACT_CONFIG_FILE = 'jsonql-contract-config.js'; + // type of resolvers + var QUERY_NAME = 'query'; + var MUTATION_NAME = 'mutation'; + var SOCKET_NAME = 'socket'; + // for calling the mutation + var PAYLOAD_PARAM_NAME = 'payload'; + var CONDITION_PARAM_NAME = 'condition'; + var QUERY_ARG_NAME = 'args'; + + /** + * some time it's hard to tell where the error is throw from + * because client server throw the same, therefore this util fn + * to add a property to the error object to tell if it's throw + * from client or server + * + */ + + var isBrowser$1 = function () { + try { + if (window || document) { + return true; + } + } catch(e) {} + return false; + }; + + var isNode$1 = function () { + try { + if (!isBrowser$1() && global$1$1) { + return true; + } + } catch(e) {} + return false; + }; + + function whereAmI$1() { + if (isBrowser$1()) { + return 'browser' + } + if (isNode$1()) { + return 'node' + } + return 'unknown' + } + + // The base Error of all + + var JsonqlBaseError$1 = /*@__PURE__*/(function (Error) { + function JsonqlBaseError() { + var arguments$1 = arguments; + + var args = [], len = arguments.length; + while ( len-- ) { args[ len ] = arguments$1[ len ]; } + + Error.apply(this, args); + } + + if ( Error ) { JsonqlBaseError.__proto__ = Error; } + JsonqlBaseError.prototype = Object.create( Error && Error.prototype ); + JsonqlBaseError.prototype.constructor = JsonqlBaseError; + + JsonqlBaseError.where = function where () { + return whereAmI$1() + }; + + return JsonqlBaseError; + }(Error)); + + // custom validation error class + // when validaton failed + var JsonqlValidationError$1 = /*@__PURE__*/(function (JsonqlBaseError) { + function JsonqlValidationError() { + var arguments$1 = arguments; + + var args = [], len = arguments.length; + while ( len-- ) { args[ len ] = arguments$1[ len ]; } + + JsonqlBaseError.apply(this, args); + + this.message = args[0]; + this.detail = args[1]; + + this.className = JsonqlValidationError.name; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, JsonqlValidationError); + } + } + + if ( JsonqlBaseError ) { JsonqlValidationError.__proto__ = JsonqlBaseError; } + JsonqlValidationError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); + JsonqlValidationError.prototype.constructor = JsonqlValidationError; + + var staticAccessors = { name: { configurable: true } }; + + staticAccessors.name.get = function () { + return 'JsonqlValidationError'; + }; + + Object.defineProperties( JsonqlValidationError, staticAccessors ); + + return JsonqlValidationError; + }(JsonqlBaseError$1)); + + // split the contract into the node side and the generic side + /** + * Check if the json is a contract file or not + * @param {object} contract json object + * @return {boolean} true + */ + function checkIsContract(contract) { + return isPlainObject$1(contract) + && ( + isObjectHasKey(contract, QUERY_NAME) + || isObjectHasKey(contract, MUTATION_NAME) + || isObjectHasKey(contract, SOCKET_NAME) + ) + } + + /** + * @param {*} args arguments to send + *@return {object} formatted payload + */ + var formatPayload = function (args) { + var obj; + + return ( + ( obj = {}, obj[QUERY_ARG_NAME] = args, obj ) + ); + }; + + /** + * Get name from the payload (ported back from jsonql-koa) + * @param {*} payload to extract from + * @return {string} name + */ + function getNameFromPayload(payload) { + return Object.keys(payload)[0] + } + + /** + * @param {string} resolverName name of function + * @param {array} [args=[]] from the ...args + * @param {boolean} [jsonp = false] add v1.3.0 to koa + * @return {object} formatted argument + */ + function createQuery(resolverName, args, jsonp) { + var obj; + + if ( args === void 0 ) { args = []; } + if ( jsonp === void 0 ) { jsonp = false; } + if (isString$2(resolverName) && isArray$2(args)) { + var payload = formatPayload(args); + if (jsonp === true) { + return payload; + } + return ( obj = {}, obj[resolverName] = payload, obj ) + } + throw new JsonqlValidationError$1("[createQuery] expect resolverName to be string and args to be array!", { resolverName: resolverName, args: args }) + } + + /** + * @param {string} resolverName name of function + * @param {*} payload to send + * @param {object} [condition={}] for what + * @param {boolean} [jsonp = false] add v1.3.0 to koa + * @return {object} formatted argument + */ + function createMutation(resolverName, payload, condition, jsonp) { + var obj; + + if ( condition === void 0 ) { condition = {}; } + if ( jsonp === void 0 ) { jsonp = false; } + var _payload = {}; + _payload[PAYLOAD_PARAM_NAME] = payload; + _payload[CONDITION_PARAM_NAME] = condition; + if (jsonp === true) { + return _payload; + } + if (isString$2(resolverName)) { + return ( obj = {}, obj[resolverName] = _payload, obj ) + } + throw new JsonqlValidationError$1("[createMutation] expect resolverName to be string!", { resolverName: resolverName, payload: payload, condition: condition }) + } + + // ported from http-client + + /** + * handle the return data + * @param {object} result return from server + * @return {object} strip the data part out, or if the error is presented + */ + var resultHandler = function (result) { return ( + (isObjectHasKey(result, DATA_KEY$1) && !isObjectHasKey(result, ERROR_KEY$1)) ? result[DATA_KEY$1] : result + ); }; + + // exportfor ES modules + + // alias + var isContract = checkIsContract; + + // take only the module part which is what we use here + + /** + * @param {object} jsonqlInstance the init instance of jsonql client + * @param {object} contract the static contract + * @return {object} contract may be from server + */ + var getContractFromConfig = function(jsonqlInstance, contract) { + if ( contract === void 0 ) contract = {}; + + if (isContract(contract)) { + return Promise.resolve(contract) + } + return jsonqlInstance.getContract() + }; + + // export some constants as well + // since it's only use here there is no point of adding it to the constants module + // or may be we add it back later + var ENDPOINT_TABLE = 'endpoint'; + var USERDATA_TABLE = 'userdata'; + + /** + * The code was extracted from: + * https://github.com/davidchambers/Base64.js + */ + + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + + function InvalidCharacterError(message) { + this.message = message; + } + + InvalidCharacterError.prototype = new Error(); + InvalidCharacterError.prototype.name = 'InvalidCharacterError'; + + function polyfill (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); + } + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + } + + + var atob = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill; + + function b64DecodeUnicode(str) { + return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) { + var code = p.charCodeAt(0).toString(16).toUpperCase(); + if (code.length < 2) { + code = '0' + code; + } + return '%' + code; + })); + } + + var base64_url_decode = function(str) { + var output = str.replace(/-/g, "+").replace(/_/g, "/"); + switch (output.length % 4) { + case 0: + break; + case 2: + output += "=="; + break; + case 3: + output += "="; + break; + default: + throw "Illegal base64url string!"; + } + + try{ + return b64DecodeUnicode(output); + } catch (err) { + return atob(output); + } + }; + + function InvalidTokenError(message) { + this.message = message; + } + + InvalidTokenError.prototype = new Error(); + InvalidTokenError.prototype.name = 'InvalidTokenError'; + + var lib = function (token,options) { + if (typeof token !== 'string') { + throw new InvalidTokenError('Invalid token specified'); + } + + options = options || {}; + var pos = options.header === true ? 0 : 1; + try { + return JSON.parse(base64_url_decode(token.split('.')[pos])); + } catch (e) { + throw new InvalidTokenError('Invalid token specified: ' + e.message); + } + }; + + var InvalidTokenError_1 = InvalidTokenError; + lib.InvalidTokenError = InvalidTokenError_1; + + // when the user is login with the jwt + + var timestamp$1 = function (sec) { + if ( sec === void 0 ) { sec = false; } + + var time = Date.now(); + return sec ? Math.floor( time / 1000 ) : time; + }; + + /** + * We only check the nbf and exp + * @param {object} token for checking + * @return {object} token on success + */ + function validate(token) { + var start = token.iat || timestamp$1(true); + // we only check the exp for the time being + if (token.exp) { + if (start >= token.exp) { + var expired = new Date(token.exp).toISOString(); + throw new JsonqlError(("Token has expired on " + expired), token) + } + } + return token; + } + + /** + * The browser client version it has far fewer options and it doesn't verify it + * because it couldn't this is the job for the server + * @TODO we need to add some extra proessing here to check for the exp field + * @param {string} token to decrypted + * @return {object} decrypted object + */ + function jwtDecode(token) { + if (isString$1(token)) { + var t = lib(token); + return validate(t) + } + throw new JsonqlError('Token must be a string!') + } + + var obj, obj$1, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8; + + var appProps = { + algorithm: createConfig$1(HSA_ALGO, [STRING_TYPE]), + expiresIn: createConfig$1(false, [BOOLEAN_TYPE, NUMBER_TYPE, STRING_TYPE], ( obj = {}, obj[ALIAS_KEY] = 'exp', obj[OPTIONAL_KEY] = true, obj )), + notBefore: createConfig$1(false, [BOOLEAN_TYPE, NUMBER_TYPE, STRING_TYPE], ( obj$1 = {}, obj$1[ALIAS_KEY] = 'nbf', obj$1[OPTIONAL_KEY] = true, obj$1 )), + audience: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$2 = {}, obj$2[ALIAS_KEY] = 'iss', obj$2[OPTIONAL_KEY] = true, obj$2 )), + subject: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$3 = {}, obj$3[ALIAS_KEY] = 'sub', obj$3[OPTIONAL_KEY] = true, obj$3 )), + issuer: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$4 = {}, obj$4[ALIAS_KEY] = 'iss', obj$4[OPTIONAL_KEY] = true, obj$4 )), + noTimestamp: createConfig$1(false, [BOOLEAN_TYPE], ( obj$5 = {}, obj$5[OPTIONAL_KEY] = true, obj$5 )), + header: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$6 = {}, obj$6[OPTIONAL_KEY] = true, obj$6 )), + keyid: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$7 = {}, obj$7[OPTIONAL_KEY] = true, obj$7 )), + mutatePayload: createConfig$1(false, [BOOLEAN_TYPE], ( obj$8 = {}, obj$8[OPTIONAL_KEY] = true, obj$8 )) + }; + + // base HttpClass + + // extract the one we need + var POST = API_REQUEST_METHODS[0]; + var PUT = API_REQUEST_METHODS[1]; + + var _log = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + if (window && window.console) { + Reflect.apply(console.log, null, args); + } + } catch(e) {} + }; + + var HttpClass = function HttpClass(opts) { + // change the way how we init Fly + // flyio now become external depedencies and it makes it easier to switch + // @BUG should we run test to check if we have the windows object? + _log(opts); + this.fly = opts.Fly ? new opts.Fly() : new Fly(); + // to a different environment like WeChat mini app + this.opts = opts; + this.extraHeader = {}; + // @1.2.1 for adding query to the call on the fly + this.extraParams = {}; + // this.log('start up opts', opts); + this.reqInterceptor(); + this.resInterceptor(); + }; + + var prototypeAccessors = { headers: { configurable: true } }; + + // set headers for that one call + prototypeAccessors.headers.set = function (header) { + this.extraHeader = header; + }; + + /** + * Create the reusage request method + * @param {object} payload jsonql payload + * @param {object} options extra options add the request + * @param {object} headers extra headers add to the call + * @return {object} the fly request instance + */ + HttpClass.prototype.request = function request (payload, options, headers) { + var obj; + + if ( options === void 0 ) options = {}; + if ( headers === void 0 ) headers = {}; + this.headers = headers; + var params = merge({}, cacheBurst(), this.extraParams); + // @TODO need to add a jsonp url and payload + if (this.opts.enableJsonp) { + var resolverName = getNameFromPayload(payload); + params = merge({}, params, ( obj = {}, obj[JSONP_CALLBACK_NAME] = resolverName, obj )); + payload = payload[resolverName]; + } + return this.fly.request( + this.jsonqlEndpoint, + payload, + merge({}, { method: POST, params: params }, options) + ) + }; + + /** + * This will replace the create baseRequest method + * + */ + HttpClass.prototype.reqInterceptor = function reqInterceptor () { + var this$1 = this; + + this.fly.interceptors.request.use( + function (req) { + var headers = this$1.getHeaders(); + this$1.log('request interceptor call', headers); + + for (var key in headers) { + req.headers[key] = headers[key]; + } + return req; + } + ); + }; + + // @TODO + HttpClass.prototype.processJsonp = function processJsonp (result) { + return resultHandler(result) + }; + + /** + * This will be replacement of the first then call + * + */ + HttpClass.prototype.resInterceptor = function resInterceptor () { + var this$1 = this; + + var self = this; + var jsonp = self.opts.enableJsonp; + this.fly.interceptors.response.use( + function (res) { + this$1.log('response interceptor call'); + self.cleanUp(); + // now more processing here + // there is a problem if we throw the result.error here + // the original data is lost, so we need to do what we did before + // deal with that error in the first then instead + var result = isString$1(res.data) ? JSON.parse(res.data) : res.data; + if (jsonp) { + return self.processJsonp(result) + } + return resultHandler(result) + }, + // this get call when it's not 200 + function (err) { + self.cleanUp(); + console.error(err); + throw new JsonqlServerError('Server side error', err) + } + ); + }; + + /** + * Get the headers inject into the call + * @return {object} headers + */ + HttpClass.prototype.getHeaders = function getHeaders () { + if (this.opts.enableAuth) { + return merge({}, DEFAULT_HEADER, this.getAuthHeader(), this.extraHeader) + } + return merge({}, DEFAULT_HEADER, this.extraHeader) + }; + + /** + * Post http call operation to clean up things we need + */ + HttpClass.prototype.cleanUp = function cleanUp () { + this.extraHeader = {}; + this.extraParams = {}; + }; + + /** + * GET for contract only + */ + HttpClass.prototype.get = function get () { + var this$1 = this; + + if (this.opts.showContractDesc) { + this.extraParams = merge({}, this.extraParams, SHOW_CONTRACT_DESC_PARAM); + } + return this.request({}, {method: 'GET'}, this.contractHeader) + .then(clientErrorsHandler) + .then(function (result) { + this$1.log('get contract result', result); + // when refresh the window the result is different! + // @TODO need to check the Koa side about why is that + // also it should set a flag if we want the description or not + if (result.cache && result.contract) { + return result.contract; + } + // just the normal result + return result + }) + }; + + /** + * POST to server - query + * @param {object} name of the resolver + * @param {array} args arguments + * @return {object} promise resolve to the resolver return + */ + HttpClass.prototype.query = function query (name, args) { + if ( args === void 0 ) args = []; + + return this.request(createQuery(name, args)) + .then(clientErrorsHandler) + }; + + /** + * PUT to server - mutation + * @param {string} name of resolver + * @param {object} payload what it said + * @param {object} conditions what it said + * @return {object} promise resolve to the resolver return + */ + HttpClass.prototype.mutation = function mutation (name, payload, conditions) { + if ( payload === void 0 ) payload = {}; + if ( conditions === void 0 ) conditions = {}; + + return this.request(createMutation(name, payload, conditions), {method: PUT}) + .then(clientErrorsHandler) + }; + + Object.defineProperties( HttpClass.prototype, prototypeAccessors ); + + // all the contract related methods will be here + + // export + var ContractClass = /*@__PURE__*/(function (HttpClass) { + function ContractClass(opts) { + HttpClass.call(this, opts); + } + + if ( HttpClass ) ContractClass.__proto__ = HttpClass; + ContractClass.prototype = Object.create( HttpClass && HttpClass.prototype ); + ContractClass.prototype.constructor = ContractClass; + + var prototypeAccessors = { contractHeader: { configurable: true } }; + + /** + * return the contract public api + * @return {object} contract + */ + ContractClass.prototype.getContract = function getContract () { + var contracts = this.readContract(); + this.log('getContract first call', contracts); + if (contracts && Array.isArray(contracts)) { + var contract = contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ]; + if (contract) { + return Promise.resolve(contract) + } + } + return this.get() + .then( this.storeContract.bind(this) ) + }; + + /** + * We are changing the way how to auth to get the contract.json + * Instead of in the url, we will be putting that key value in the header + * @return {object} header + */ + prototypeAccessors.contractHeader.get = function () { + var base = {}; + if (this.opts.contractKey !== false) { + base[this.opts.contractKeyName] = this.opts.contractKey; + } + return base; + }; + + /** + * Save the contract to local store + * @param {object} contract to save + * @return {object|boolean} false when its not a contract or contract on OK + */ + ContractClass.prototype.storeContract = function storeContract (contract) { + // first need to check if the contract is a contract + if (!isContract(contract)) { + throw new JsonqlValidationError("Contract is malformed!") + //return false; + } + var args = [contract]; + if (this.opts.contractExpired) { + var expired = parseFloat(this.opts.contractExpired); + if (!isNaN(expired) && expired > 0) { + args.push(expired); + } + } + // calling the setter + this.jsonqlContract = args; + // return it + this.log('storeContract return result', contract); + return contract; + }; + + /** + * return the contract from options or localStore + * @return {object} contract + */ + ContractClass.prototype.readContract = function readContract () { + var contract = isContract(this.opts.contract); + return contract ? this.opts.contract : localStore$1.get(this.opts.storageKey) + }; + + Object.defineProperties( ContractClass.prototype, prototypeAccessors ); + + return ContractClass; + }(HttpClass)); + + // this is the new auth class that integrate with the jsonql-jwt + // export + var AuthClass = /*@__PURE__*/(function (ContractClass) { + function AuthClass(opts) { + ContractClass.call(this, opts); + if (opts.enableAuth && opts.useJwt) { + this.setDecoder = jwtDecode; + } + } + + if ( ContractClass ) AuthClass.__proto__ = ContractClass; + AuthClass.prototype = Object.create( ContractClass && ContractClass.prototype ); + AuthClass.prototype.constructor = AuthClass; + + var prototypeAccessors = { userdata: { configurable: true },rawAuthToken: { configurable: true },setDecoder: { configurable: true } }; + + /** + * Getter to get the login userdata + * @return {mixed} userdata + */ + prototypeAccessors.userdata.get = function () { + return this.jsonqlUserdata; // see base-cls + }; + + /** + * Return the token from session store + * @return {string} token + */ + prototypeAccessors.rawAuthToken.get = function () { + // this should return from the base + return this.jsonqlToken; // see base-cls + }; + + /** + * Setter to add a decoder when retrieve user token + * @param {function} d a decoder + */ + prototypeAccessors.setDecoder.set = function (d) { + if (typeof d === 'function') { + this.decoder = d; + } + }; + + /** + * Setter after login success + * @TODO this move to a new class to handle multiple login + * @param {string} token to store + * @return {*} success store + */ + AuthClass.prototype.storeToken = function storeToken (token) { + return this.jsonqlToken = token; + }; + + /** + * for overwrite + * @param {string} token stored token + * @return {string} token + */ + AuthClass.prototype.decoder = function decoder (token) { + return token; + }; + + /** + * Construct the auth header + * @return {object} header + */ + AuthClass.prototype.getAuthHeader = function getAuthHeader () { + var obj; + + var token = this.rawAuthToken; + return token ? ( obj = {}, obj[this.opts.AUTH_HEADER] = (BEARER + " " + token), obj ) : {}; + }; + + Object.defineProperties( AuthClass.prototype, prototypeAccessors ); + + return AuthClass; + }(ContractClass)); + + // this the core of the internal storage management + + // This class will only focus on the storage system + var JsonqlBaseClient = /*@__PURE__*/(function (AuthCls) { + function JsonqlBaseClient(opts, Fly) { + if ( Fly === void 0 ) Fly = null; + + if (Fly) { + opts.Fly = Fly; + } + AuthCls.call(this, opts); + } + + if ( AuthCls ) JsonqlBaseClient.__proto__ = AuthCls; + JsonqlBaseClient.prototype = Object.create( AuthCls && AuthCls.prototype ); + JsonqlBaseClient.prototype.constructor = JsonqlBaseClient; + + var prototypeAccessors = { storeIt: { configurable: true },jsonqlEndpoint: { configurable: true },jsonqlContract: { configurable: true },jsonqlToken: { configurable: true },jsonqlUserdata: { configurable: true } }; + + // @TODO + prototypeAccessors.storeIt.set = function (args) { + console.info('storeIt', args); + // the args MUST contain [0] the key , [1] the content [2] optional expired in + if (isArray$1(args) && args.length >= 2) { + Reflect.apply(localStore$1.set, localStore$1, args); + } + throw new JsonqlValidationError("Expect argument to be array and least 2 items!") + }; + + // this table index key will drive the contract + // also it should not allow to change dynamicly + // because this is how different client can id itself + // OK this could be self manage because when init a new client + // it will add a new endpoint and we will know if they are the same or not + // but the check here + prototypeAccessors.jsonqlEndpoint.set = function (endpoint) { + var urls = localStore$1.get(ENDPOINT_TABLE) || []; + // should check if this url already existed? + if (!inArray$1(urls, endpoint)) { + urls.push(endpoint); + this.storeId = [ENDPOINT_TABLE, urls]; + this[ENDPOINT_TABLE + 'Index'] = urls.length - 1; + } + }; + + // by the time it call the save contract already been checked + prototypeAccessors.jsonqlContract.set = function (args) { + var key = this.opts.storageKey; + var _args = [ key ]; + var contract = args[0]; + var expired = args[1]; + // get the endpoint index + var contracts = localStore$1.get(key) || []; + contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ] = contract; + _args.push(contracts); + if (expired) { + _args.push(expired); + } + if (this.opts.keepContract) { + this.storeIt = _args; + } + }; + + /** + * save token + * @param {string} token to store + * @return {string|boolean} false on failed + */ + prototypeAccessors.jsonqlToken.set = function (token) { + var key = CREDENTIAL_STORAGE_KEY; + var tokens = localStorage.get(key) || []; + if (!inArray$1(tokens, token)) { + var index = tokens.length - 1; + tokens[ index ] = token; + this[key + 'Index'] = index; + var args = [key, tokens]; + if (this.opts.tokenExpired) { + var expired = parseFloat(this.opts.tokenExpired); + if (!isNaN(expired) && expired > 0) { + var ts = timestamp(); + args.push( ts + parseFloat(expired) ); + } + } + this.storeIt = args; + // now decode it and store in the userdata + this.jsonqlUserdata = this.decoder(token); + return token; + } + return false; + }; + + /** + * this one will use the sessionStore + * basically we hook this onto the token store and decode it to store here + */ + prototypeAccessors.jsonqlUserdata.set = function (userdata) { + var args = [USERDATA_TABLE, userdata]; + if (userdata.exp) { + args.push(userdata.exp); + } + return Reflect.apply(localStore$1.set, localStore$1, args) + }; + + /** + * This also manage the index internally + * There is NO need to store them in an array + * because each instance contain one end point + * @return {string} the end point to call + */ + prototypeAccessors.jsonqlEndpoint.get = function () { + var urls = localStore$1.get(ENDPOINT_TABLE); + if (!urls) { + var ref = this.opts; + var hostname = ref.hostname; + var jsonqlPath = ref.jsonqlPath; + var url = [hostname, jsonqlPath].join('/'); + this.jsonqlEndpoint = url; + return url; + } + return urls[this[ENDPOINT_TABLE + 'Index']] + }; + + /** + * If already stored then return it by the end point index + * or false when there is none + * 1.2.0 start using the keepContract option (replace the useLocalStorage) + * @return {object|boolean} as described above + */ + prototypeAccessors.jsonqlContract.get = function () { + var key = this.opts.storageKey; + var contracts = localStore$1.get(key) || []; + return contracts[ this[ENDPOINT_TABLE + 'Index'] ] || false + }; + + /** + * Jsonql token getter + * @return {string|boolean} false when failed + */ + prototypeAccessors.jsonqlToken.get = function () { + var key = CREDENTIAL_STORAGE_KEY; + var tokens = localStorage.get(key); + if (tokens) { + return tokens[ this[key + 'Index'] ] + } + return false; + }; + + /** + * this one store in the session store + * get login userdata decoded jwt + * @return {object|null} + */ + prototypeAccessors.jsonqlUserdata.get = function () { + return sessionStore$1.get(USERDATA_TABLE) + }; + + /** + * simple log + */ + JsonqlBaseClient.prototype.log = function log () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (this.opts.debugOn === true) { + Reflect.apply(console.info, console, args); + } + }; + + Object.defineProperties( JsonqlBaseClient.prototype, prototypeAccessors ); + + return JsonqlBaseClient; + }(AuthClass)); + + // export interface + + // bunch of generic helpers + + // quick and dirty to turn non array to array + var toArray$1 = function (arg) { return isArray(arg) ? arg : [arg]; }; + + /** + * using just the map reduce to chain multiple functions together + * @param {function} mainFn the init function + * @param {array} moreFns as many as you want to take the last value and return a new one + * @return {function} accept value for the mainFn + */ + var chainFns = function (mainFn) { + var moreFns = [], len = arguments.length - 1; + while ( len-- > 0 ) moreFns[ len ] = arguments[ len + 1 ]; + + return ( + function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return ( + moreFns.reduce(function (value, nextFn) { return ( + // change here to check if the return value is array then we spread it + Reflect.apply(nextFn, null, toArray$1(value)) + ); }, Reflect.apply(mainFn, null, args)) + ); + } + ); + }; + + /** + * After the user login we will use this Object.define add a new property + * to the resolver with the decoded user data + * @param {function} resolver target resolver + * @param {string} name the name of the object to get inject also for checking + * @param {object} data to inject into the function static interface + * @param {boolean} [overwrite=false] if we want to overwrite the existing data + * @return {function} added property resolver + */ + function injectToFn(resolver, name, data, overwrite) { + if ( overwrite === void 0 ) overwrite = false; + + var check = Object.getOwnPropertyDescriptor(resolver, name); + if (overwrite === false && check !== undefined) { + // console.info(`NOT INJECTED`) + return resolver; + } + /* this will throw error! + if (overwrite === true && check !== undefined) { + delete resolver[name] // delete this property + } + */ + // console.info(`INJECTED`) + Object.defineProperty(resolver, name, { + value: data, + writable: overwrite // if its set to true then we should able to overwrite it + }); + + return resolver; + } + + // breaking out the inner methods generator in here + + /** + * generate authorisation specific methods + * @param {object} jsonqlInstance instance of this + * @param {string} name of method + * @param {object} opts configuration + * @param {object} contract to match + * @return {function} for use + */ + var authMethodGenerator = function (jsonqlInstance, name, opts, contract) { + return function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var params = contract.auth[name].params; + var values = params.map(function (p, i) { return args[i]; }); + var header = args[params.length] || {}; + return validateAsync$1(args, params) + .then(function () { return jsonqlInstance + .query + .apply(jsonqlInstance, [name, values, header]); } + ) + .catch(finalCatch) + } + }; + + /** + * Break up the different type each - create query methods + * @param {object} obj to hold all the objects + * @param {object} jsonqlInstance jsonql class instance + * @param {object} ee eventEmitter + * @param {object} config configuration + * @param {object} contract json + * @return {object} modified output for next op + */ + var createQueryMethods = function (obj, jsonqlInstance, ee, config, contract) { + var query = {}; + var loop = function ( queryFn ) { + // to keep it clean we use a param to id the auth method + // const fn = (_contract.query[queryFn].auth === true) ? 'auth' : queryFn; + // generate the query method + query = injectToFn(query, queryFn, function queryFnHandler() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + // obj.query[queryFn] = (...args) => { + var params = contract.query[queryFn].params; + var _args = params.map(function (param, i) { return args[i]; }); + // debug('query', queryFn, _params); + // @TODO this need to change + // the +1 parameter is the extra headers we want to pass + var header = args[params.length] || {}; + // @TODO validate against the type + return validateAsync$1(_args, params) + .then(function () { return jsonqlInstance + .query + .apply(jsonqlInstance, [queryFn, _args, header]); } + ) + .catch(finalCatch) + }); + }; + + for (var queryFn in contract.query) loop( queryFn ); + obj.query = query; + return { obj: obj, jsonqlInstance: jsonqlInstance, ee: ee, config: config, contract: contract } + }; + + /** + * create mutation methods + * @param {object} obj to hold all the objects + * @param {object} jsonqlInstance jsonql class instance + * @param {object} ee eventEmitter + * @param {object} config configuration + * @param {object} contract json + * @return {object} modified output for next op + */ + var createMutationMethods = function (obj, jsonqlInstance, ee, config, contract) { + var mutation = {}; + // process the mutation, the reason the mutation has a fixed number of parameters + // there is only the payload, and conditions parameters + // plus a header at the end + var loop = function ( mutationFn ) { + mutation = injectToFn(mutation, mutationFn, function mutationFnHandler(payload, conditions, header) { + if ( header === void 0 ) header = {}; + + //obj.mutation[mutationFn] = (payload, conditions, header = {}) => { + var args = [payload, conditions]; + var params = contract.mutation[mutationFn].params; + return validateAsync$1(args, params) + .then(function () { return jsonqlInstance + .mutation + .apply(jsonqlInstance, [mutationFn, payload, conditions, header]); } + ) + .catch(finalCatch) + }); + }; + + for (var mutationFn in contract.mutation) loop( mutationFn ); + obj.mutation = mutation; + return { obj: obj, jsonqlInstance: jsonqlInstance, ee: ee, config: config, contract: contract } + }; + + /** + * create auth methods + * @param {object} obj to hold all the objects + * @param {object} jsonqlInstance jsonql class instance + * @param {object} ee eventEmitter + * @param {object} config configuration + * @param {object} contract json + * @return {object} modified output for next op + */ + var createAuthMethods = function (obj, jsonqlInstance, ee, config, contract) { + if (config.enableAuth && contract.auth) { + var auth = {}; // v1.3.1 add back the auth prop name in contract + var loginHandlerName = config.loginHandlerName; + var logoutHandlerName = config.logoutHandlerName; + if (contract.auth[loginHandlerName]) { + // changing to the name the config specify + auth[loginHandlerName] = function loginHandlerFn() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var fn = authMethodGenerator(jsonqlInstance, loginHandlerName, config, contract); + return fn.apply(null, args) + .then(jsonqlInstance.postLoginAction) + .then(function (token) { + ee.$trigger(ISSUER_NAME, token); + return token; + }) + }; + } + if (contract.auth[logoutHandlerName]) { + auth[logoutHandlerName] = function logoutHandlerFn() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var fn = authMethodGenerator(jsonqlInstance, logoutHandlerName, config, contract); + return fn.apply(null, args) + .then(jsonqlInstance.postLogoutAction) + .then(function (r) { + ee.$trigger(LOGOUT_NAME, r); + return r; + }) + }; + } else { + auth[logoutHandlerName] = function logoutHandlerFn() { + jsonqlInstance.postLogoutAction(KEY_WORD); + ee.$trigger(LOGOUT_NAME, KEY_WORD); + }; + } + obj.auth = auth; + } + return obj; + }; + + /** + * Here just generate the methods calls + * @param {object} jsonqlInstance what it said + * @param {object} ee event emitter + * @param {object} config configuration + * @param {object} contract the map + * @return {object} with mapped methods + */ + function methodsGenerator(jsonqlInstance, ee, config, contract) { + var obj = {}; + var executor = chainFns(createQueryMethods, createMutationMethods, createAuthMethods); + return executor(obj, jsonqlInstance, ee, config, contract) + } + + // Generate the resolver for developer to use + + /** + * @param {object} jsonqlInstance jsonql class instance + * @param {object} config options + * @param {object} contract the contract + * @param {object} ee eventEmitter + * @return {object} constructed functions call + */ + var generator = function (jsonqlInstance, config, contract, ee) { + // V1.3.0 - now everything wrap inside this method + var client = methodsGenerator(jsonqlInstance, ee, config, contract); + // create the rest of the methods + if (config.enableAuth) { + /** + * new method to allow retrieve the current login user data + * @return {*} userdata + */ + client.userdata = function () { return jsonqlInstance.userdata; }; + } + // allow getting the token for valdiate agains the socket + client.getToken = function () { return jsonqlInstance.rawAuthToken; }; + // this will pass to the ws-client if needed + // client.eventEmitter = ee; + // this will require a param + if (config.exposeContract) { + // 1.4.0 change from the get (raw) to the getContract cache and raw version + client.getContract = function () { return jsonqlInstance.getContract(); }; + } + // this is for the ws to use later + client.eventEmitter = ee; + client.version = '1.4.0'; + // output + return client; + }; + + // all the client configuration options here + var constProps = { + contract: false, + MUTATION_ARGS: ['name', 'payload', 'conditions'], // this seems wrong? + CONTENT_TYPE: CONTENT_TYPE, + BEARER: BEARER, + AUTH_HEADER: AUTH_HEADER + }; + + // grab the localhost name and put into the hostname as default + var getHostName = function () { return ( + [window.location.protocol, window.location.host].join('//') + ); }; + + var appProps$1 = { + + hostname: createConfig$1(getHostName(), [STRING_TYPE]), // required the hostname + jsonqlPath: createConfig$1(JSONQL_PATH, [STRING_TYPE]), // The path on the server + + loginHandlerName: createConfig$1(ISSUER_NAME, [STRING_TYPE]), + logoutHandlerName: createConfig$1(LOGOUT_NAME, [STRING_TYPE]), + // add to koa v1.3.0 - this might remove in the future + enableJsonp: createConfig$1(false, [BOOLEAN_TYPE]), + enableAuth: createConfig$1(false, [BOOLEAN_TYPE]), + // enable useJwt by default + useJwt: createConfig$1(true, [BOOLEAN_TYPE]), + + // the header + // v1.2.0 we are using this option during the dev + // so it won't save anything to the localstorage and fetch a new contract + // whenever the browser reload + useLocalstorage: createConfig$1(true, [BOOLEAN_TYPE]), // should we store the contract into localStorage + storageKey: createConfig$1(CLIENT_STORAGE_KEY, [STRING_TYPE]),// the key to use when store into localStorage + authKey: createConfig$1(CLIENT_AUTH_KEY, [STRING_TYPE]),// the key to use when store into the sessionStorage + contractExpired: createConfig$1(0, [NUMBER_TYPE]),// -1 always fetch contract, + // 0 never expired, + // > 0 then compare the timestamp with the current one to see if we need to get contract again + // useful during development + keepContract: createConfig$1(true, [BOOLEAN_TYPE]), + exposeContract: createConfig$1(false, [BOOLEAN_TYPE]), + // @1.2.1 new option for the contract-console to fetch the contract with description + showContractDesc: createConfig$1(false, [BOOLEAN_TYPE]), + contractKey: createConfig$1(false, [BOOLEAN_TYPE]), // if the server side is lock by the key you need this + contractKeyName: createConfig$1(CONTRACT_KEY_NAME, [STRING_TYPE]), // same as above they go in pairs + enableTimeout: createConfig$1(false, [BOOLEAN_TYPE]), // @TODO + timeout: createConfig$1(5000, [NUMBER_TYPE]), // 5 seconds + returnInstance: createConfig$1(false, [BOOLEAN_TYPE]), + allowReturnRawToken: createConfig$1(false, [BOOLEAN_TYPE]), + debugOn: createConfig$1(false, [BOOLEAN_TYPE]) + }; + + // we must ensure the user passing the correct options + + function checkOptionsAsync$1(config) { + var contract = config.contract; + return checkConfigAsync$1(config, appProps$1, constProps) + .then(function (opts) { + opts.contract = contract; + return opts; + }) + } + + // this is new for the flyio and normalize the name from now on + + /** + * Main interface for jsonql fetch api + * @param {object} config + * @param {object} Fly this is really pain in the backside ... long story + * @return {object} jsonql client + */ + function jsonqlAsync(ee, config, Fly) { + if ( config === void 0 ) config = {}; + if ( Fly === void 0 ) Fly = null; + + return checkOptionsAsync$1(config) + .then(function (opts) { return ( + { + baseClient: new JsonqlBaseClient(opts, Fly), + opts: opts + } + ); }) + .then( function (ref) { + var baseClient = ref.baseClient; + var opts = ref.opts; + + return ( + getContractFromConfig(baseClient, opts.contract) + .then(function (contract) { return generator(baseClient, opts, contract, ee); } + ) + ); + } + ) + } + + var NB_EVENT_SERVICE_PRIVATE_STORE = new WeakMap(); + var NB_EVENT_SERVICE_PRIVATE_LAZY = new WeakMap(); + + /** + * generate a 32bit hash based on the function.toString() + * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery + * @param {string} s the converted to string function + * @return {string} the hashed function string + */ + function hashCode(s) { + return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0) + } + + // making all the functionality on it's own + // import { WatchClass } from './watch' + + var SuspendClass = function SuspendClass() { + // suspend, release and queue + this.__suspend__ = null; + this.queueStore = new Set(); + /* + this.watch('suspend', function(value, prop, oldValue) { + this.logger(`${prop} set from ${oldValue} to ${value}`) + // it means it set the suspend = true then release it + if (oldValue === true && value === false) { + // we want this happen after the return happens + setTimeout(() => { + this.release() + }, 1) + } + return value; // we need to return the value to store it + }) + */ + }; + + var prototypeAccessors$1 = { $suspend: { configurable: true },$queues: { configurable: true } }; + + /** + * setter to set the suspend and check if it's boolean value + * @param {boolean} value to trigger + */ + prototypeAccessors$1.$suspend.set = function (value) { + var this$1 = this; + + if (typeof value === 'boolean') { + var lastValue = this.__suspend__; + this.__suspend__ = value; + this.logger('($suspend)', ("Change from " + lastValue + " --> " + value)); + if (lastValue === true && value === false) { + setTimeout(function () { + this$1.release(); + }, 1); + } + } else { + throw new Error("$suspend only accept Boolean value!") + } + }; + + /** + * queuing call up when it's in suspend mode + * @param {any} value + * @return {Boolean} true when added or false when it's not + */ + SuspendClass.prototype.$queue = function $queue () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (this.__suspend__ === true) { + this.logger('($queue)', 'added to $queue', args); + // there shouldn't be any duplicate ... + this.queueStore.add(args); + } + return this.__suspend__; + }; + + /** + * a getter to get all the store queue + * @return {array} Set turn into Array before return + */ + prototypeAccessors$1.$queues.get = function () { + var size = this.queueStore.size; + this.logger('($queues)', ("size: " + size)); + if (size > 0) { + return Array.from(this.queueStore) + } + return [] + }; + + /** + * Release the queue + * @return {int} size if any + */ + SuspendClass.prototype.release = function release () { + var this$1 = this; + + var size = this.queueStore.size; + this.logger('(release)', ("Release was called " + size)); + if (size > 0) { + var queue = Array.from(this.queueStore); + this.queueStore.clear(); + this.logger('queue', queue); + queue.forEach(function (args) { + this$1.logger(args); + Reflect.apply(this$1.$trigger, this$1, args); + }); + this.logger(("Release size " + (this.queueStore.size))); + } + }; + + Object.defineProperties( SuspendClass.prototype, prototypeAccessors$1 ); + + // break up the main file because its getting way too long + + var NbEventServiceBase = /*@__PURE__*/(function (SuspendClass) { + function NbEventServiceBase(config) { + if ( config === void 0 ) config = {}; + + SuspendClass.call(this); + if (config.logger && typeof config.logger === 'function') { + this.logger = config.logger; + } + this.keep = config.keep; + // for the $done setter + this.result = config.keep ? [] : null; + // we need to init the store first otherwise it could be a lot of checking later + this.normalStore = new Map(); + this.lazyStore = new Map(); + } + + if ( SuspendClass ) NbEventServiceBase.__proto__ = SuspendClass; + NbEventServiceBase.prototype = Object.create( SuspendClass && SuspendClass.prototype ); + NbEventServiceBase.prototype.constructor = NbEventServiceBase; + + var prototypeAccessors = { normalStore: { configurable: true },lazyStore: { configurable: true } }; + + /** + * validate the event name(s) + * @param {string[]} evt event name + * @return {boolean} true when OK + */ + NbEventServiceBase.prototype.validateEvt = function validateEvt () { + var this$1 = this; + var evt = [], len = arguments.length; + while ( len-- ) evt[ len ] = arguments[ len ]; + + evt.forEach(function (e) { + if (typeof e !== 'string') { + this$1.logger('(validateEvt)', e); + throw new Error("event name must be string type!") + } + }); + return true; + }; + + /** + * Simple quick check on the two main parameters + * @param {string} evt event name + * @param {function} callback function to call + * @return {boolean} true when OK + */ + NbEventServiceBase.prototype.validate = function validate (evt, callback) { + if (this.validateEvt(evt)) { + if (typeof callback === 'function') { + return true; + } + } + throw new Error("callback required to be function type!") + }; + + /** + * Check if this type is correct or not added in V1.5.0 + * @param {string} type for checking + * @return {boolean} true on OK + */ + NbEventServiceBase.prototype.validateType = function validateType (type) { + var types = ['on', 'only', 'once', 'onlyOnce']; + return !!types.filter(function (t) { return type === t; }).length; + }; + + /** + * Run the callback + * @param {function} callback function to execute + * @param {array} payload for callback + * @param {object} ctx context or null + * @return {void} the result store in $done + */ + NbEventServiceBase.prototype.run = function run (callback, payload, ctx) { + this.logger('(run)', callback, payload, ctx); + this.$done = Reflect.apply(callback, ctx, this.toArray(payload)); + }; + + /** + * Take the content out and remove it from store id by the name + * @param {string} evt event name + * @param {string} [storeName = lazyStore] name of store + * @return {object|boolean} content or false on not found + */ + NbEventServiceBase.prototype.takeFromStore = function takeFromStore (evt, storeName) { + if ( storeName === void 0 ) storeName = 'lazyStore'; + + var store = this[storeName]; // it could be empty at this point + if (store) { + this.logger('(takeFromStore)', storeName, store); + if (store.has(evt)) { + var content = store.get(evt); + this.logger('(takeFromStore)', ("has " + evt), content); + store.delete(evt); + return content; + } + return false; + } + throw new Error((storeName + " is not supported!")) + }; + + /** + * The add to store step is similar so make it generic for resuse + * @param {object} store which store to use + * @param {string} evt event name + * @param {spread} args because the lazy store and normal store store different things + * @return {array} store and the size of the store + */ + NbEventServiceBase.prototype.addToStore = function addToStore (store, evt) { + var args = [], len = arguments.length - 2; + while ( len-- > 0 ) args[ len ] = arguments[ len + 2 ]; + + var fnSet; + if (store.has(evt)) { + this.logger('(addToStore)', (evt + " existed")); + fnSet = store.get(evt); + } else { + this.logger('(addToStore)', ("create new Set for " + evt)); + // this is new + fnSet = new Set(); + } + // lazy only store 2 items - this is not the case in V1.6.0 anymore + // we need to check the first parameter is string or not + if (args.length > 2) { + if (Array.isArray(args[0])) { // lazy store + // check if this type of this event already register in the lazy store + var t = args[2]; + if (!this.checkTypeInLazyStore(evt, t)) { + fnSet.add(args); + } + } else { + if (!this.checkContentExist(args, fnSet)) { + this.logger('(addToStore)', "insert new", args); + fnSet.add(args); + } + } + } else { // add straight to lazy store + fnSet.add(args); + } + store.set(evt, fnSet); + return [store, fnSet.size] + }; + + /** + * @param {array} args for compare + * @param {object} fnSet A Set to search from + * @return {boolean} true on exist + */ + NbEventServiceBase.prototype.checkContentExist = function checkContentExist (args, fnSet) { + var list = Array.from(fnSet); + return !!list.filter(function (l) { + var hash = l[0]; + if (hash === args[0]) { + return true; + } + return false; + }).length; + }; + + /** + * get the existing type to make sure no mix type add to the same store + * @param {string} evtName event name + * @param {string} type the type to check + * @return {boolean} true you can add, false then you can't add this type + */ + NbEventServiceBase.prototype.checkTypeInStore = function checkTypeInStore (evtName, type) { + this.validateEvt(evtName, type); + var all = this.$get(evtName, true); + if (all === false) { + // pristine it means you can add + return true; + } + // it should only have ONE type in ONE event store + return !all.filter(function (list) { + var t = list[3]; + return type !== t; + }).length; + }; + + /** + * This is checking just the lazy store because the structure is different + * therefore we need to use a new method to check it + */ + NbEventServiceBase.prototype.checkTypeInLazyStore = function checkTypeInLazyStore (evtName, type) { + this.validateEvt(evtName, type); + var store = this.lazyStore.get(evtName); + this.logger('(checkTypeInLazyStore)', store); + if (store) { + return !!Array + .from(store) + .filter(function (l) { + var t = l[2]; + return t !== type; + }).length + } + return false; + }; + + /** + * wrapper to re-use the addToStore, + * V1.3.0 add extra check to see if this type can add to this evt + * @param {string} evt event name + * @param {string} type on or once + * @param {function} callback function + * @param {object} context the context the function execute in or null + * @return {number} size of the store + */ + NbEventServiceBase.prototype.addToNormalStore = function addToNormalStore (evt, type, callback, context) { + if ( context === void 0 ) context = null; + + this.logger('(addToNormalStore)', evt, type, 'try to add to normal store'); + // @TODO we need to check the existing store for the type first! + if (this.checkTypeInStore(evt, type)) { + this.logger('(addToNormalStore)', (type + " can add to " + evt + " normal store")); + var key = this.hashFnToKey(callback); + var args = [this.normalStore, evt, key, callback, context, type]; + var ref = Reflect.apply(this.addToStore, this, args); + var _store = ref[0]; + var size = ref[1]; + this.normalStore = _store; + return size; + } + return false; + }; + + /** + * Add to lazy store this get calls when the callback is not register yet + * so we only get a payload object or even nothing + * @param {string} evt event name + * @param {array} payload of arguments or empty if there is none + * @param {object} [context=null] the context the callback execute in + * @param {string} [type=false] register a type so no other type can add to this evt + * @return {number} size of the store + */ + NbEventServiceBase.prototype.addToLazyStore = function addToLazyStore (evt, payload, context, type) { + if ( payload === void 0 ) payload = []; + if ( context === void 0 ) context = null; + if ( type === void 0 ) type = false; + + // this is add in V1.6.0 + // when there is type then we will need to check if this already added in lazy store + // and no other type can add to this lazy store + var args = [this.lazyStore, evt, this.toArray(payload), context]; + if (type) { + args.push(type); + } + var ref = Reflect.apply(this.addToStore, this, args); + var _store = ref[0]; + var size = ref[1]; + this.lazyStore = _store; + return size; + }; + + /** + * make sure we store the argument correctly + * @param {*} arg could be array + * @return {array} make sured + */ + NbEventServiceBase.prototype.toArray = function toArray (arg) { + return Array.isArray(arg) ? arg : [arg]; + }; + + /** + * setter to store the Set in private + * @param {object} obj a Set + */ + prototypeAccessors.normalStore.set = function (obj) { + NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj); + }; + + /** + * @return {object} Set object + */ + prototypeAccessors.normalStore.get = function () { + return NB_EVENT_SERVICE_PRIVATE_STORE.get(this) + }; + + /** + * setter to store the Set in lazy store + * @param {object} obj a Set + */ + prototypeAccessors.lazyStore.set = function (obj) { + NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj); + }; + + /** + * @return {object} the lazy store Set + */ + prototypeAccessors.lazyStore.get = function () { + return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this) + }; + + /** + * generate a hashKey to identify the function call + * The build-in store some how could store the same values! + * @param {function} fn the converted to string function + * @return {string} hashKey + */ + NbEventServiceBase.prototype.hashFnToKey = function hashFnToKey (fn) { + return hashCode(fn.toString()) + ''; + }; + + Object.defineProperties( NbEventServiceBase.prototype, prototypeAccessors ); + + return NbEventServiceBase; + }(SuspendClass)); + + // The top level + // export + var EventService = /*@__PURE__*/(function (NbStoreService) { + function EventService(config) { + if ( config === void 0 ) config = {}; + + NbStoreService.call(this, config); + } + + if ( NbStoreService ) EventService.__proto__ = NbStoreService; + EventService.prototype = Object.create( NbStoreService && NbStoreService.prototype ); + EventService.prototype.constructor = EventService; + + var prototypeAccessors = { $done: { configurable: true } }; + + /** + * logger function for overwrite + */ + EventService.prototype.logger = function logger () {}; + + ////////////////////////// + // PUBLIC METHODS // + ////////////////////////// + + /** + * Register your evt handler, note we don't check the type here, + * we expect you to be sensible and know what you are doing. + * @param {string} evt name of event + * @param {function} callback bind method --> if it's array or not + * @param {object} [context=null] to execute this call in + * @return {number} the size of the store + */ + EventService.prototype.$on = function $on (evt , callback , context) { + var this$1 = this; + if ( context === void 0 ) context = null; + + var type = 'on'; + this.validate(evt, callback); + // first need to check if this evt is in lazy store + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register first then call later + if (lazyStoreContent === false) { + this.logger('($on)', (evt + " callback is not in lazy store")); + // @TODO we need to check if there was other listener to this + // event and are they the same type then we could solve that + // register the different type to the same event name + + return this.addToNormalStore(evt, type, callback, context) + } + this.logger('($on)', (evt + " found in lazy store")); + // this is when they call $trigger before register this callback + var size = 0; + lazyStoreContent.forEach(function (content) { + var payload = content[0]; + var ctx = content[1]; + var t = content[2]; + if (t && t !== type) { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this$1.logger("($on)", ("call run on " + evt)); + this$1.run(callback, payload, context || ctx); + size += this$1.addToNormalStore(evt, type, callback, context || ctx); + }); + return size; + }; + + /** + * once only registered it once, there is no overwrite option here + * @NOTE change in v1.3.0 $once can add multiple listeners + * but once the event fired, it will remove this event (see $only) + * @param {string} evt name + * @param {function} callback to execute + * @param {object} [context=null] the handler execute in + * @return {boolean} result + */ + EventService.prototype.$once = function $once (evt , callback , context) { + if ( context === void 0 ) context = null; + + this.validate(evt, callback); + var type = 'once'; + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register before call $trigger + var nStore = this.normalStore; + if (lazyStoreContent === false) { + this.logger('($once)', (evt + " not in the lazy store")); + // v1.3.0 $once now allow to add multiple listeners + return this.addToNormalStore(evt, type, callback, context) + } else { + // now this is the tricky bit + // there is a potential bug here that cause by the developer + // if they call $trigger first, the lazy won't know it's a once call + // so if in the middle they register any call with the same evt name + // then this $once call will be fucked - add this to the documentation + this.logger('($once)', lazyStoreContent); + var list = Array.from(lazyStoreContent); + // should never have more than 1 + var ref = list[0]; + var payload = ref[0]; + var ctx = ref[1]; + var t = ref[2]; + if (t && t !== type) { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this.logger('($once)', ("call run for " + evt)); + this.run(callback, payload, context || ctx); + // remove this evt from store + this.$off(evt); + } + }; + + /** + * This one event can only bind one callbackback + * @param {string} evt event name + * @param {function} callback event handler + * @param {object} [context=null] the context the event handler execute in + * @return {boolean} true bind for first time, false already existed + */ + EventService.prototype.$only = function $only (evt, callback, context) { + var this$1 = this; + if ( context === void 0 ) context = null; + + this.validate(evt, callback); + var type = 'only'; + var added = false; + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register before call $trigger + var nStore = this.normalStore; + if (!nStore.has(evt)) { + this.logger("($only)", (evt + " add to store")); + added = this.addToNormalStore(evt, type, callback, context); + } + if (lazyStoreContent !== false) { + // there are data store in lazy store + this.logger('($only)', (evt + " found data in lazy store to execute")); + var list = Array.from(lazyStoreContent); + // $only allow to trigger this multiple time on the single handler + list.forEach( function (l) { + var payload = l[0]; + var ctx = l[1]; + var t = l[2]; + if (t && t !== type) { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this$1.logger("($only)", ("call run for " + evt)); + this$1.run(callback, payload, context || ctx); + }); + } + return added; + }; + + /** + * $only + $once this is because I found a very subtile bug when we pass a + * resolver, rejecter - and it never fire because that's OLD added in v1.4.0 + * @param {string} evt event name + * @param {function} callback to call later + * @param {object} [context=null] exeucte context + * @return {void} + */ + EventService.prototype.$onlyOnce = function $onlyOnce (evt, callback, context) { + if ( context === void 0 ) context = null; + + this.validate(evt, callback); + var type = 'onlyOnce'; + var added = false; + var lazyStoreContent = this.takeFromStore(evt); + // this is normal register before call $trigger + var nStore = this.normalStore; + if (!nStore.has(evt)) { + this.logger("($onlyOnce)", (evt + " add to store")); + added = this.addToNormalStore(evt, type, callback, context); + } + if (lazyStoreContent !== false) { + // there are data store in lazy store + this.logger('($onlyOnce)', lazyStoreContent); + var list = Array.from(lazyStoreContent); + // should never have more than 1 + var ref = list[0]; + var payload = ref[0]; + var ctx = ref[1]; + var t = ref[2]; + if (t && t !== 'onlyOnce') { + throw new Error(("You are trying to register an event already been taken by other type: " + t)) + } + this.logger("($onlyOnce)", ("call run for " + evt)); + this.run(callback, payload, context || ctx); + // remove this evt from store + this.$off(evt); + } + return added; + }; + + /** + * This is a shorthand of $off + $on added in V1.5.0 + * @param {string} evt event name + * @param {function} callback to exeucte + * @param {object} [context = null] or pass a string as type + * @param {string} [type=on] what type of method to replace + * @return {} + */ + EventService.prototype.$replace = function $replace (evt, callback, context, type) { + if ( context === void 0 ) context = null; + if ( type === void 0 ) type = 'on'; + + if (this.validateType(type)) { + this.$off(evt); + var method = this['$' + type]; + this.logger("($replace)", evt, callback); + return Reflect.apply(method, this, [evt, callback, context]) + } + throw new Error((type + " is not supported!")) + }; + + /** + * trigger the event + * @param {string} evt name NOT allow array anymore! + * @param {mixed} [payload = []] pass to fn + * @param {object|string} [context = null] overwrite what stored + * @param {string} [type=false] if pass this then we need to add type to store too + * @return {number} if it has been execute how many times + */ + EventService.prototype.$trigger = function $trigger (evt , payload , context, type) { + if ( payload === void 0 ) payload = []; + if ( context === void 0 ) context = null; + if ( type === void 0 ) type = false; + + this.validateEvt(evt); + var found = 0; + // first check the normal store + var nStore = this.normalStore; + this.logger('($trigger)', 'normalStore', nStore); + if (nStore.has(evt)) { + // @1.8.0 to add the suspend queue + var added = this.$queue(evt, payload, context, type); + this.logger('($trigger)', evt, 'found; add to queue: ', added); + if (added === true) { + this.logger('($trigger)', evt, 'not executed. Exit now.'); + return false; // not executed + } + var nSet = Array.from(nStore.get(evt)); + var ctn = nSet.length; + var hasOnce = false; + for (var i=0; i < ctn; ++i) { + ++found; + // this.logger('found', found) + var ref = nSet[i]; + var _ = ref[0]; + var callback = ref[1]; + var ctx = ref[2]; + var type$1 = ref[3]; + this.logger("($trigger)", ("call run for " + evt)); + this.run(callback, payload, context || ctx); + if (type$1 === 'once' || type$1 === 'onlyOnce') { + hasOnce = true; + } + } + if (hasOnce) { + nStore.delete(evt); + } + return found; + } + // now this is not register yet + this.addToLazyStore(evt, payload, context, type); + return found; + }; + + /** + * this is an alias to the $trigger + * @NOTE breaking change in V1.6.0 we swap the parameter around + * @param {string} evt event name + * @param {*} params pass to the callback + * @param {string} type of call + * @param {object} context what context callback execute in + * @return {*} from $trigger + */ + EventService.prototype.$call = function $call (evt, params, type, context) { + if ( type === void 0 ) type = false; + if ( context === void 0 ) context = null; + + var args = [evt, params, context, type]; + return Reflect.apply(this.$trigger, this, args) + }; + + /** + * remove the evt from all the stores + * @param {string} evt name + * @return {boolean} true actually delete something + */ + EventService.prototype.$off = function $off (evt) { + var this$1 = this; + + this.validateEvt(evt); + var stores = [ this.lazyStore, this.normalStore ]; + var found = false; + stores.forEach(function (store) { + if (store.has(evt)) { + found = true; + this$1.logger('($off)', evt); + store.delete(evt); + } + }); + return found; + }; + + /** + * return all the listener from the event + * @param {string} evtName event name + * @param {boolean} [full=false] if true then return the entire content + * @return {array|boolean} listerner(s) or false when not found + */ + EventService.prototype.$get = function $get (evt, full) { + if ( full === void 0 ) full = false; + + this.validateEvt(evt); + var store = this.normalStore; + if (store.has(evt)) { + return Array + .from(store.get(evt)) + .map( function (l) { + if (full) { + return l; + } + var key = l[0]; + var callback = l[1]; + return callback; + }) + } + return false; + }; + + /** + * store the return result from the run + * @param {*} value whatever return from callback + */ + prototypeAccessors.$done.set = function (value) { + this.logger('($done)', 'value: ', value); + if (this.keep) { + this.result.push(value); + } else { + this.result = value; + } + }; + + /** + * @TODO is there any real use with the keep prop? + * getter for $done + * @return {*} whatever last store result + */ + prototypeAccessors.$done.get = function () { + if (this.keep) { + this.logger('(get $done)', this.result); + return this.result[this.result.length - 1] + } + return this.result; + }; + + Object.defineProperties( EventService.prototype, prototypeAccessors ); + + return EventService; + }(NbEventServiceBase)); + + // default + + // this will generate a event emitter and will be use everywhere + // output + function getEventEmitter(debugOn) { + var logger = debugOn ? function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args.unshift('[NBS]'); + console.log.apply(null, args); + }: undefined; + return new EventService({ logger: logger }) + } + + // this one will use the esm module + + /** + * When pass a static contract then it return a static interface + * otherwise it will become the async interface + * @param {object} Fly the http engine + * @param {object} config configuration + * @return {object} jsonqlClient + */ + function jsonqlClient(Fly, config) { + var ee = getEventEmitter(config.debugOn); + return jsonqlAsync(ee, config, Fly) + } + + return jsonqlClient; + +}))); //# sourceMappingURL=core.js.map diff --git a/packages/http-client/core.js.map b/packages/http-client/core.js.map index 1ca5f5bd..728ed2bc 100644 --- a/packages/http-client/core.js.map +++ b/packages/http-client/core.js.map @@ -1 +1 @@ -{"version":3,"file":"core.js","sources":["node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n","/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n}\n\nexport default baseFindKey;\n","/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nimport { trim, isArray } from './lodash'\n\nexport default a => {\n if (isArray(a)) {\n return true;\n }\n return a !== undefined && a !== null && trim(a) !== '';\n}\n","// validator numbers\n// import { NUMBER_TYPES } from './constants';\nimport { isNaN, isString } from './lodash'\n/**\n * @2015-05-04 found a problem if the value is a number like string\n * it will pass, so add a check if it's string before we pass to next\n * @param {number} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsNumber = function(value) {\n return isString(value) ? false : !isNaN( parseFloat(value) )\n}\n\nexport default checkIsNumber\n","// validate string type\nimport { isString, trim } from './lodash'\n/**\n * @param {string} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsString = function(value) {\n return (trim(value) !== '') ? isString(value) : false;\n}\n\nexport default checkIsString;\n","// check for boolean\nimport { isBoolean } from './lodash'\n/**\n * @param {boolean} value expected\n * @return {boolean} true if OK\n */\nconst checkIsBoolean = function(value) {\n return isBoolean(value);\n};\n\nexport default checkIsBoolean\n","// validate any thing only check if there is something\n\nimport { isNull, trim, isUndefined } from './lodash'\n/**\n * @param {*} value the value\n * @param {boolean} [checkNull=true] strict check if there is null value\n * @return {boolean} true is OK\n */\nconst checkIsAny = function(value, checkNull = true) {\n if (!isUndefined(value) && value !== '' && trim(value) !== '') {\n if (checkNull === false || (checkNull === true && !isNull(value))) {\n return true;\n }\n }\n return false;\n};\n\nexport default checkIsAny\n","// Good practice rule - No magic number\n\nexport const 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)`;\nexport const PARAMS_NOT_ARRAY_ERR = `params is not an array! Did something gone wrong when you generate the contract.json?`;\nexport const EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!';\nexport const UNUSUAL_CASE_ERR = 'This is an unusual situation where the arguments are more than the params, but not mark as spread';\n\n// re-export\nimport * as JSONQL_CONSTANTS from 'jsonql-constants';\n// @TODO the jsdoc return array. and we should also allow array syntax\nexport const DEFAULT_TYPE = JSONQL_CONSTANTS.DEFAULT_TYPE;\nexport const ARRAY_TYPE_LFT = JSONQL_CONSTANTS.ARRAY_TYPE_LFT;\nexport const ARRAY_TYPE_RGT = JSONQL_CONSTANTS.ARRAY_TYPE_RGT;\n\nexport const TYPE_KEY = JSONQL_CONSTANTS.TYPE_KEY;\nexport const OPTIONAL_KEY = JSONQL_CONSTANTS.OPTIONAL_KEY;\nexport const ENUM_KEY = JSONQL_CONSTANTS.ENUM_KEY;\nexport const ARGS_KEY = JSONQL_CONSTANTS.ARGS_KEY;\nexport const CHECKER_KEY = JSONQL_CONSTANTS.CHECKER_KEY;\nexport const ALIAS_KEY = JSONQL_CONSTANTS.ALIAS_KEY;\n\nexport const ARRAY_TYPE = JSONQL_CONSTANTS.ARRAY_TYPE;\nexport const OBJECT_TYPE = JSONQL_CONSTANTS.OBJECT_TYPE;\nexport const STRING_TYPE = JSONQL_CONSTANTS.STRING_TYPE;\nexport const BOOLEAN_TYPE = JSONQL_CONSTANTS.BOOLEAN_TYPE;\nexport const NUMBER_TYPE = JSONQL_CONSTANTS.NUMBER_TYPE;\nexport const KEY_WORD = JSONQL_CONSTANTS.KEY_WORD;\nexport const OR_SEPERATOR = JSONQL_CONSTANTS.OR_SEPERATOR;\n\n// not actually in use\n// export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES;\n","// primitive types\nimport checkIsNumber from './number'\nimport checkIsString from './string'\nimport checkIsBoolean from './boolean'\nimport checkIsAny from './any'\nimport { NUMBER_TYPE, STRING_TYPE, BOOLEAN_TYPE } from './constants'\n\n/**\n * this is a wrapper method to call different one based on their type\n * @param {string} type to check\n * @return {function} a function to handle the type\n */\nconst combineFn = function(type) {\n switch (type) {\n case NUMBER_TYPE:\n return checkIsNumber;\n case STRING_TYPE:\n return checkIsString;\n case BOOLEAN_TYPE:\n return checkIsBoolean;\n default:\n return checkIsAny;\n }\n}\n\nexport default combineFn\n","// validate array type\nimport { isArray, trim } from './lodash'\nimport combineFn from './combine'\nimport {\n ARRAY_TYPE_LFT,\n ARRAY_TYPE_RGT,\n OR_SEPERATOR\n} from './constants'\n\n/**\n * @param {array} value expected\n * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well\n * @return {boolean} true if OK\n */\nexport const checkIsArray = function(value, type='') {\n if (isArray(value)) {\n if (type === '' || trim(type)==='') {\n return true;\n }\n // we test it in reverse\n // @TODO if the type is an array (OR) then what?\n // we need to take into account this could be an array\n const c = value.filter(v => !combineFn(type)(v))\n return !(c.length > 0)\n }\n return false;\n}\n\n/**\n * check if it matches the array. pattern\n * @param {string} type\n * @return {boolean|array} false means NO, always return array\n */\nexport const isArrayLike = function(type) {\n // @TODO could that have something like array<> instead of array.<>? missing the dot?\n // because type script is Array without the dot\n if (type.indexOf(ARRAY_TYPE_LFT) > -1 && type.indexOf(ARRAY_TYPE_RGT) > -1) {\n const _type = type.replace(ARRAY_TYPE_LFT, '').replace(ARRAY_TYPE_RGT, '')\n if (_type.indexOf(OR_SEPERATOR)) {\n return _type.split(OR_SEPERATOR)\n }\n return [_type]\n }\n return false;\n}\n\n/**\n * we might encounter something like array. then we need to take it apart\n * @param {object} p the prepared object for processing\n * @param {string|array} type the type came from \n * @return {boolean} for the filter to operate on\n */\nexport const arrayTypeHandler = function(p, type) {\n const { arg } = p;\n // need a special case to handle the OR type\n // we need to test the args instead of the type(s)\n if (type.length > 1) {\n return !arg.filter(v => (\n !(type.length > type.filter(t => !combineFn(t)(v)).length)\n )).length;\n }\n // type is array so this will be or!\n return type.length > type.filter(t => !checkIsArray(arg, t)).length;\n}\n","// validate object type\nimport { isPlainObject, isUndefined, filter } from './lodash'\nimport combineFn from './combine'\nimport { checkIsArray, isArrayLike, arrayTypeHandler } from './array'\n/**\n * @TODO if provide with the keys then we need to check if the key:value type as well\n * @param {object} value expected\n * @param {array} [keys=null] if it has the keys array to compare as well\n * @return {boolean} true if OK\n */\nexport const checkIsObject = function(value, keys=null) {\n if (isPlainObject(value)) {\n if (!keys) {\n return true;\n }\n if (checkIsArray(keys)) {\n // please note we DON'T care if some is optional\n // plese refer to the contract.json for the keys\n return !keys.filter(key => {\n let _value = value[key.name];\n return !(key.type.length > key.type.filter(type => {\n let tmp;\n if (!isUndefined(_value)) {\n if ((tmp = isArrayLike(type)) !== false) {\n return !arrayTypeHandler({arg: _value}, tmp)\n // return tmp.filter(t => !checkIsArray(_value, t)).length;\n // @TODO there might be an object within an object with keys as well :S\n }\n return !combineFn(type)(_value)\n }\n return true;\n }).length)\n }).length;\n }\n }\n return false;\n}\n\n/**\n * fold this into it's own function to handler different object type\n * @param {object} p the prepared object for process\n * @return {boolean}\n */\nexport const objectTypeHandler = function(p) {\n const { arg, param } = p;\n let _args = [arg];\n if (Array.isArray(param.keys) && param.keys.length) {\n _args.push(param.keys)\n }\n // just simple check\n return checkIsObject.apply(null, _args)\n}\n","/**\n * This is a custom error to throw when server throw a 500\n * This help us to capture the right error, due to the call happens in sequence\n * @param {string} message to tell what happen\n * @param {mixed} extra things we want to add, 500?\n */\nexport default class Jsonql500Error extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = Jsonql500Error.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Jsonql500Error);\n }\n }\n\n static get statusCode() {\n return 500;\n }\n\n static get name() {\n return 'Jsonql500Error';\n }\n\n}\n","// The base Error of all\nimport whereAmI from './where-am-i'\n\nexport default class JsonqlBaseError extends Error {\n constructor(...args) {\n super(...args)\n }\n\n static where() {\n return whereAmI()\n }\n \n}\n","// this get throw from within the checkOptions when run through the enum failed\nexport default class JsonqlEnumError extends Error {\n constructor(...args) {\n super(...args);\n \n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlEnumError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlEnumError);\n }\n }\n\n static get name() {\n return 'JsonqlEnumError';\n }\n}\n","// this will throw from inside the checkOptions\nexport default class JsonqlTypeError extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlTypeError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlTypeError);\n }\n }\n\n static get name() {\n return 'JsonqlTypeError';\n }\n}\n","// allow supply a custom checker function\n// if that failed then we throw this error\nexport default class JsonqlCheckerError extends Error {\n constructor(...args) {\n super(...args);\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlCheckerError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlCheckerError);\n }\n }\n\n static get name() {\n return 'JsonqlCheckerError';\n }\n}\n","// custom validation error class\nimport JsonqlBaseError from './error-base'\n// when validaton failed\nexport default class JsonqlValidationError extends JsonqlBaseError {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlValidationError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlValidationError);\n }\n }\n\n static get name() {\n return 'JsonqlValidationError';\n }\n}\n","// this is from an example from Koa team to use for internal middleware ctx.throw\n// but after the test the res.body part is unable to extract the required data\n// I keep this one here for future reference\n\nexport default class JsonqlServerError extends Error {\n\n constructor(statusCode, message) {\n super(message);\n this.statusCode = statusCode;\n this.className = JsonqlServerError.name;\n }\n\n static get name() {\n return 'JsonqlServerError';\n }\n}\n","// server side\nimport Jsonql406Error from './406-error';\nimport Jsonql500Error from './500-error';\nimport JsonqlAuthorisationError from './authorisation-error';\nimport JsonqlContractAuthError from './contract-auth-error';\nimport JsonqlResolverAppError from './resolver-app-error';\nimport JsonqlResolverNotFoundError from './resolver-not-found-error';\n\n// check options error\nimport JsonqlEnumError from './enum-error';\nimport JsonqlTypeError from './type-error';\nimport JsonqlCheckerError from './checker-error';\n// share\nimport JsonqlValidationError from './validation-error';\nimport JsonqlError from './error';\n\nimport JsonqlServerError from './server-error';\n\nexport {\n Jsonql406Error,\n Jsonql500Error,\n JsonqlAuthorisationError,\n JsonqlContractAuthError,\n JsonqlResolverAppError,\n JsonqlResolverNotFoundError,\n\n JsonqlEnumError,\n JsonqlTypeError,\n JsonqlCheckerError,\n\n JsonqlValidationError,\n JsonqlError,\n\n JsonqlServerError\n};\n","// this will add directly to the then call in each http call\n\nimport * as errors from './index';\nimport getErrorByStatus from './get-error-by-status';\nimport { NO_ERROR_MSG } from 'jsonql-constants';\nconst { JsonqlError } = errors;\n\n/**\n * We can not just check something like result.data what if the result if false?\n * @param {object} obj the result object\n * @param {string} key we want to check if its exist or not\n * @return {boolean} true on found\n */\nconst isKeyInObject = (obj, key) => {\n const keys = Object.keys(obj)\n return !!keys.filter(k => key === k).length;\n}\n\n/**\n * It will ONLY have our own jsonql specific implement check\n * @param {object} result the server return result\n * @return {object} this will just throw error\n */\nexport default function clientErrorsHandler(result) {\n if (isKeyInObject(result, 'error')) {\n const { error } = result;\n const { className, name } = error;\n const errorName = className || name;\n // just throw the whole thing back\n const msg = error.message || NO_ERROR_MSG;\n const detail = error.detail || error;\n if (errorName && errors[errorName]) {\n throw new errors[className](msg, detail)\n }\n throw new JsonqlError(msg, detail)\n }\n // pass through to the next\n return result;\n}\n","/**\n * just a simple util for helping to debug\n * @param {array} args arguments\n * @return {void}\n */\nexport default function log(...args) {\n try {\n if (window && window.console) {\n Reflect.apply(console.log, console, args)\n }\n } catch(e) {}\n}\n","// move the index.js code here that make more sense to find where things are\nimport { isUndefined } from './lodash'\nimport {\n checkIsArray,\n isArrayLike,\n arrayTypeHandler,\n objectTypeHandler,\n checkIsObject,\n combineFn,\n notEmpty\n} from './index'\nimport {\n DEFAULT_TYPE,\n ARRAY_TYPE,\n OBJECT_TYPE,\n ARGS_NOT_ARRAY_ERR,\n PARAMS_NOT_ARRAY_ERR,\n EXCEPTION_CASE_ERR,\n UNUSUAL_CASE_ERR\n} from './constants'\nimport { DATA_KEY, ERROR_KEY } from 'jsonql-constants'\nimport { JsonqlError } from 'jsonql-errors'\nimport log from './log'\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:validator')\n// also export this for use in other places\n\n/**\n * We need to handle those optional parameter without a default value\n * @param {object} params from contract.json\n * @return {boolean} for filter operation false is actually OK\n */\nconst optionalHandler = function( params ) {\n const { arg, param } = params;\n if (notEmpty(arg)) {\n // debug('call optional handler', arg, params);\n // loop through the type in param\n return !(param.type.length > param.type.filter(type =>\n validateHandler(type, params)\n ).length)\n }\n return false;\n}\n\n/**\n * actually picking the validator\n * @param {*} type for checking\n * @param {*} value for checking\n * @return {boolean} true on OK\n */\nconst validateHandler = function(type, value) {\n let tmp;\n switch (true) {\n case type === OBJECT_TYPE:\n // debugFn('call OBJECT_TYPE')\n return !objectTypeHandler(value)\n case type === ARRAY_TYPE:\n // debugFn('call ARRAY_TYPE')\n return !checkIsArray(value.arg)\n // @TODO when the type is not present, it always fall through here\n // so we need to find a way to actually pre-check the type first\n // AKA check the contract.json map before running here\n case (tmp = isArrayLike(type)) !== false:\n // debugFn('call ARRAY_LIKE: %O', value)\n return !arrayTypeHandler(value, tmp)\n default:\n return !combineFn(type)(value.arg)\n }\n}\n\n/**\n * it get too longer to fit in one line so break it out from the fn below\n * @param {*} arg value\n * @param {object} param config\n * @return {*} value or apply default value\n */\nconst getOptionalValue = function(arg, param) {\n if (!isUndefined(arg)) {\n return arg;\n }\n return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null)\n}\n\n/**\n * padding the arguments with defaultValue if the arguments did not provide the value\n * this will be the name export\n * @param {array} args normalized arguments\n * @param {array} params from contract.json\n * @return {array} merge the two together\n */\nexport const normalizeArgs = function(args, params) {\n // first we should check if this call require a validation at all\n // there will be situation where the function doesn't need args and params\n if (!checkIsArray(params)) {\n // debugFn('params value', params)\n throw new JsonqlError(PARAMS_NOT_ARRAY_ERR)\n }\n if (params.length === 0) {\n return [];\n }\n if (!checkIsArray(args)) {\n throw new JsonqlError(ARGS_NOT_ARRAY_ERR)\n }\n // debugFn(args, params);\n // fall through switch\n switch(true) {\n case args.length == params.length: // standard\n log(1)\n return args.map((arg, i) => (\n {\n arg,\n index: i,\n param: params[i]\n }\n ))\n case params[0].variable === true: // using spread syntax\n log(2)\n const type = params[0].type;\n return args.map((arg, i) => (\n {\n arg,\n index: i, // keep the index for reference\n param: params[i] || { type, name: '_' }\n }\n ))\n // with optional defaultValue parameters\n case args.length < params.length:\n log(3)\n return params.map((param, i) => (\n {\n param,\n index: i,\n arg: getOptionalValue(args[i], param),\n optional: param.optional || false\n }\n ))\n // this one pass more than it should have anything after the args.length will be cast as any type\n case args.length > params.length:\n log(4)\n let ctn = params.length;\n // this happens when we have those array. type\n let _type = [ DEFAULT_TYPE ]\n // we only looking at the first one, this might be a @BUG\n /*\n if ((tmp = isArrayLike(params[0].type[0])) !== false) {\n _type = tmp;\n } */\n // if we use the params as guide then the rest will get throw out\n // which is not what we want, instead, anything without the param\n // will get a any type and optional flag\n return args.map((arg, i) => {\n let optional = i >= ctn ? true : !!params[i].optional\n let param = params[i] || { type: _type, name: `_${i}` }\n return {\n arg: optional ? getOptionalValue(arg, param) : arg,\n index: i,\n param,\n optional\n }\n })\n // @TODO find out if there is more cases not cover\n default: // this should never happen\n log(5)\n // debugFn('args', args)\n // debugFn('params', params)\n // this is unknown therefore we just throw it!\n throw new JsonqlError(EXCEPTION_CASE_ERR, { args, params })\n }\n}\n\n// what we want is after the validaton we also get the normalized result\n// which is with the optional property if the argument didn't provide it\n/**\n * process the array of params back to their arguments\n * @param {array} result the params result\n * @return {array} arguments\n */\nconst processReturn = result => result.map(r => r.arg)\n\n/**\n * validator main interface\n * @param {array} args the arguments pass to the method call\n * @param {array} params from the contract for that method\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {array} empty array on success, or failed parameter and reasons\n */\nexport const validateSync = function(args, params, withResult = false) {\n let cleanArgs = normalizeArgs(args, params)\n let checkResult = cleanArgs.filter(p => {\n // v1.4.4 this fixed the problem, the root level optional is from the last fn\n if (p.optional === true || p.param.optional === true) {\n return optionalHandler(p)\n }\n // because array of types means OR so if one pass means pass\n return !(p.param.type.length > p.param.type.filter(\n type => validateHandler(type, p)\n ).length)\n })\n // using the same convention we been using all this time\n return !withResult ? checkResult : {\n [ERROR_KEY]: checkResult,\n [DATA_KEY]: processReturn(cleanArgs)\n }\n}\n\n/**\n * A wrapper method that return promise\n * @param {array} args arguments\n * @param {array} params from contract.json\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {object} promise.then or catch\n */\nexport const validateAsync = function(args, params, withResult = false) {\n return new Promise((resolver, rejecter) => {\n const result = validateSync(args, params, withResult)\n if (withResult) {\n return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY])\n : resolver(result[DATA_KEY])\n }\n // the different is just in the then or catch phrase\n return result.length ? rejecter(result) : resolver([])\n })\n}\n","/**\n * @param {array} arr Array for check\n * @param {*} value target\n * @return {boolean} true on successs\n */\nconst isInArray = function(arr, value) {\n return !!arr.filter(a => a === value).length;\n}\n\nexport default isInArray\n","// breaking the whole thing up to see what cause the multiple calls issue\n\nimport { isFunction, merge, mapValues } from '../lodash'\nimport {\n JsonqlEnumError,\n JsonqlTypeError,\n JsonqlCheckerError\n} from 'jsonql-errors'\nimport log from '../log'\nimport {\n TYPE_KEY,\n OPTIONAL_KEY,\n ENUM_KEY,\n ARGS_KEY,\n CHECKER_KEY,\n KEY_WORD\n} from '../constants'\nimport { checkIsArray } from '../array'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:validation')\n\n/**\n * just make sure it returns an array to use\n * @param {*} arg input\n * @return {array} output\n */\nconst toArray = arg => checkIsArray(arg) ? arg : [arg]\n\n/**\n * DIY in array\n * @param {array} arr to check against\n * @param {*} value to check\n * @return {boolean} true on OK\n */\nconst inArray = (arr, value) => (\n !!arr.filter(v => v === value).length\n)\n\n/**\n * break out to make the code easier to read\n * @param {object} value to process\n * @param {function} cb the validateSync\n * @return {array} empty on success\n */\nfunction validateHandler(value, cb) {\n // cb is the validateSync methods\n let args = [\n [ value[ARGS_KEY] ],\n [{\n [TYPE_KEY]: toArray(value[TYPE_KEY]),\n [OPTIONAL_KEY]: value[OPTIONAL_KEY]\n }]\n ]\n // debugFn('validateHandler', args)\n return Reflect.apply(cb, null, args)\n}\n\n/**\n * Check against the enum value if it's provided\n * @param {*} value to check\n * @param {*} enumv to check against if it's not false\n * @return {boolean} true on OK\n */\nconst enumHandler = (value, enumv) => {\n if (checkIsArray(enumv)) {\n return inArray(enumv, value)\n }\n return true;\n}\n\n/**\n * Allow passing a function to check the value\n * There might be a problem here if the function is incorrect\n * and that will makes it hard to debug what is going on inside\n * @TODO there could be a few feature add to this one under different circumstance\n * @param {*} value to check\n * @param {function} checker for checking\n */\nconst checkerHandler = (value, checker) => {\n try {\n return isFunction(checker) ? checker.apply(null, [value]) : false;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Taken out from the runValidaton this only validate the required values\n * @param {array} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {array} of configuration values\n */\nfunction runValidationAction(cb) {\n return (value, key) => {\n // debugFn('runValidationAction', key, value)\n if (value[KEY_WORD]) {\n return value[ARGS_KEY]\n }\n const check = validateHandler(value, cb)\n if (check.length) {\n log('runValidationAction', key, value)\n throw new JsonqlTypeError(key, check)\n }\n if (value[ENUM_KEY] !== false && !enumHandler(value[ARGS_KEY], value[ENUM_KEY])) {\n log(ENUM_KEY, value[ENUM_KEY])\n throw new JsonqlEnumError(key)\n }\n if (value[CHECKER_KEY] !== false && !checkerHandler(value[ARGS_KEY], value[CHECKER_KEY])) {\n log(CHECKER_KEY, value[CHECKER_KEY])\n throw new JsonqlCheckerError(key)\n }\n return value[ARGS_KEY]\n }\n}\n\n/**\n * @param {object} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {object} of configuration values\n */\nexport default function runValidation(args, cb) {\n const [ argsForValidate, pristineValues ] = args;\n // turn the thing into an array and see what happen here\n // debugFn('_args', argsForValidate)\n const result = mapValues(argsForValidate, runValidationAction(cb))\n return merge(result, pristineValues)\n}\n","/// this is port back from the client to share across all projects\nimport { merge } from '../lodash'\nimport { prepareArgsForValidation } from './prepare-args-for-validation'\nimport runValidation from './run-validation'\n\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:check-options-async')\n\n/**\n * Quick transform\n * @param {object} config that one\n * @param {object} appProps mutation configuration options\n * @return {object} put that arg into the args\n */\nconst configToArgs = (config, appProps) => {\n return Promise.resolve(\n prepareArgsForValidation(config, appProps)\n )\n}\n\n/**\n * @param {object} config user provide configuration option\n * @param {object} appProps mutation configuration options\n * @param {object} constProps the immutable configuration options\n * @param {function} cb the validateSync method\n * @return {object} Promise resolve merge config object\n */\nexport default function(config = {}, appProps, constProps, cb) {\n return configToArgs(config, appProps)\n .then(args1 => {\n // debugFn('args', args1)\n return runValidation(args1, cb)\n })\n // next if every thing good then pass to final merging\n .then(args2 => merge({}, args2, constProps))\n}\n","// create function to construct the config entry so we don't need to keep building object\nimport { isFunction, isString } from '../lodash'\nimport {\n ARGS_KEY,\n TYPE_KEY,\n CHECKER_KEY,\n ENUM_KEY,\n OPTIONAL_KEY,\n ALIAS_KEY\n} from 'jsonql-constants'\n\nimport { checkIsArray } from '../array'\nimport checkIsBoolean from '../boolean'\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:construct-config');\n/**\n * @param {*} args value\n * @param {string} type for value\n * @param {boolean} [optional=false]\n * @param {boolean|array} [enumv=false]\n * @param {boolean|function} [checker=false]\n * @return {object} config entry\n */\nexport default function(args, type, optional=false, enumv=false, checker=false, alias=false) {\n let base = {\n [ARGS_KEY]: args,\n [TYPE_KEY]: type\n };\n if (optional === true) {\n base[OPTIONAL_KEY] = true;\n }\n if (checkIsArray(enumv)) {\n base[ENUM_KEY] = enumv;\n }\n if (isFunction(checker)) {\n base[CHECKER_KEY] = checker;\n }\n if (isString(alias)) {\n base[ALIAS_KEY] = alias;\n }\n return base;\n}\n","// export also create wrapper methods\nimport checkOptionsAsync from './check-options-async'\nimport checkOptionsSync from './check-options-sync'\nimport constructConfigFn from './construct-config'\nimport {\n ENUM_KEY,\n CHECKER_KEY,\n ALIAS_KEY,\n OPTIONAL_KEY\n} from 'jsonql-constants'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:index');\n\n/**\n * This has a different interface\n * @param {*} value to supply\n * @param {string|array} type for checking\n * @param {object} params to map against the config check\n * @param {array} params.enumv NOT enum\n * @param {boolean} params.optional false then nothing\n * @param {function} params.checker need more work on this one later\n * @param {string} params.alias mostly for cmd\n */\nconst createConfig = (value, type, params = {}) => {\n // Note the enumv not ENUM\n // const { enumv, optional, checker, alias } = params;\n // let args = [value, type, optional, enumv, checker, alias];\n const {\n [OPTIONAL_KEY]: o,\n [ENUM_KEY]: e,\n [CHECKER_KEY]: c,\n [ALIAS_KEY]: a\n } = params;\n return constructConfigFn.apply(null, [value, type, o, e, c, a])\n}\n\n// for testing purpose\nconst JSONQL_PARAMS_VALIDATOR_INFO = '__PLACEHOLDER__';\n\n/**\n * We recreate the method here to avoid the circlar import\n * @param {object} config user supply configuration\n * @param {object} appProps mutation options\n * @param {object} [constantProps={}] optional: immutation options\n * @return {object} all checked configuration\n */\nconst checkConfigAsync = function(validateSync) {\n return function(config, appProps, constantProps= {}) {\n return checkOptionsAsync(config, appProps, constantProps, validateSync)\n }\n}\n\n// copy of above but it's sync\nconst checkConfig = function(validateSync) {\n return function(config, appProps, constantProps = {}) {\n return checkOptionsSync(config, appProps, constantProps, validateSync)\n }\n}\n\n// re-export\nexport {\n createConfig,\n constructConfigFn,\n checkConfigAsync,\n checkConfig,\n JSONQL_PARAMS_VALIDATOR_INFO\n}\n","// export\nimport {\n checkIsObject,\n notEmpty,\n checkIsAny,\n checkIsString,\n checkIsBoolean,\n checkIsNumber,\n checkIsArray\n} from './src'\n// PIA syntax\nexport const isObject = checkIsObject;\nexport const isAny = checkIsAny;\nexport const isString = checkIsString;\nexport const isBoolean = checkIsBoolean;\nexport const isNumber = checkIsNumber;\nexport const isArray = checkIsArray;\nexport const isNotEmpty = notEmpty;\n\nimport * as validator from './src/validator'\n\nexport const normalizeArgs = validator.normalizeArgs;\nexport const validateSync = validator.validateSync;\nexport const validateAsync = validator.validateAsync;\n\n// configuration checking\n\nimport * as jsonqlOptions from './src/options'\n\nexport const JSONQL_PARAMS_VALIDATOR_INFO = jsonqlOptions.JSONQL_PARAMS_VALIDATOR_INFO;\n\nexport const createConfig = jsonqlOptions.createConfig;\nexport const constructConfig = jsonqlOptions.constructConfigFn;\n\nexport const checkConfigAsync = jsonqlOptions.checkConfigAsync(validator.validateSync)\nexport const checkConfig = jsonqlOptions.checkConfig(validator.validateSync)\n\n// export the two extra functions\nimport isInArray from './src/is-in-array'\nimport isKeyInObjectFn from './src/is-key-in-object'\n\nexport const inArray = isInArray;\nexport const isKeyInObject = isKeyInObjectFn;\n","module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i isObject(obj) && Object.keys(obj).length\n\n// export\nexport {\n getContractFromConfig,\n ENDPOINT_TABLE,\n USERDATA_TABLE,\n createEvt,\n\n createQuery,\n createMutation,\n getNameFromPayload,\n cacheBurst,\n urlParams,\n resultHandler,\n\n isContract,\n timestamp,\n inArray,\n isObjectHasKey,\n hasProp\n}\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n","// when the user is login with the jwt\n// we use call this to decode the token and then add the payload\n// to the resolver so the user can call ResolverName.userdata\n// and get back the payload\nimport jwt_decode from 'jwt-decode'\nimport { isString } from 'jsonql-params-validator'\nimport { JsonqlError } from 'jsonql-errors'\n\nconst timestamp = function (sec) {\n if ( sec === void 0 ) sec = false;\n\n var time = Date.now();\n return sec ? Math.floor( time / 1000 ) : time;\n}\n\n/**\n * We only check the nbf and exp\n * @param {object} token for checking\n * @return {object} token on success\n */\nfunction validate(token) {\n const start = token.iat || timestamp(true)\n // we only check the exp for the time being\n if (token.exp) {\n if (start >= token.exp) {\n const expired = new Date(token.exp).toISOString()\n throw new JsonqlError(`Token has expired on ${expired}`, token)\n }\n }\n return token;\n}\n\n/**\n * The browser client version it has far fewer options and it doesn't verify it\n * because it couldn't this is the job for the server\n * @TODO we need to add some extra proessing here to check for the exp field\n * @param {string} token to decrypted\n * @return {object} decrypted object\n */\nexport default function jwtDecode(token) {\n if (isString(token)) {\n const t = jwt_decode(token)\n return validate(t)\n }\n throw new JsonqlError('Token must be a string!')\n}\n","// base HttpClass\nimport merge from 'lodash-es/merge'\nimport {\n createQuery,\n createMutation,\n getNameFromPayload,\n cacheBurst,\n urlParams,\n resultHandler\n} from '../utils'\nimport {\n isObject,\n isString\n} from 'jsonql-params-validator'\nimport {\n JsonqlValidationError,\n JsonqlServerError,\n clientErrorsHandler\n} from 'jsonql-errors'\nimport {\n API_REQUEST_METHODS,\n DEFAULT_HEADER,\n JSONP_CALLBACK_NAME,\n SHOW_CONTRACT_DESC_PARAM\n} from 'jsonql-constants'\n\n// extract the one we need\nconst [ POST, PUT ] = API_REQUEST_METHODS\n\nconst _log = (...args) => {\n try {\n if (window && window.console) {\n Reflect.apply(console.log, null, args)\n }\n } catch(e) {}\n}\n\nexport default class HttpClass {\n /**\n * The opts has been check at the init stage\n * @param {object} opts configuration options\n */\n constructor(opts) {\n // change the way how we init Fly\n // flyio now become external depedencies and it makes it easier to switch\n // @BUG should we run test to check if we have the windows object?\n _log(opts)\n this.fly = opts.Fly ? new opts.Fly() : new Fly()\n // to a different environment like WeChat mini app\n this.opts = opts;\n this.extraHeader = {};\n // @1.2.1 for adding query to the call on the fly\n this.extraParams = {};\n // this.log('start up opts', opts);\n this.reqInterceptor()\n this.resInterceptor()\n }\n\n // set headers for that one call\n set headers(header) {\n this.extraHeader = header;\n }\n\n /**\n * Create the reusage request method\n * @param {object} payload jsonql payload\n * @param {object} options extra options add the request\n * @param {object} headers extra headers add to the call\n * @return {object} the fly request instance\n */\n request(payload, options = {}, headers = {}) {\n this.headers = headers;\n let params = merge({}, cacheBurst(), this.extraParams)\n // @TODO need to add a jsonp url and payload\n if (this.opts.enableJsonp) {\n let resolverName = getNameFromPayload(payload)\n params = merge({}, params, {[JSONP_CALLBACK_NAME]: resolverName})\n payload = payload[resolverName]\n }\n return this.fly.request(\n this.jsonqlEndpoint,\n payload,\n merge({}, { method: POST, params }, options)\n )\n }\n\n /**\n * This will replace the create baseRequest method\n *\n */\n reqInterceptor() {\n this.fly.interceptors.request.use(\n req => {\n const headers = this.getHeaders();\n this.log('request interceptor call', headers)\n\n for (let key in headers) {\n req.headers[key] = headers[key];\n }\n return req;\n }\n )\n }\n\n // @TODO\n processJsonp(result) {\n return resultHandler(result)\n }\n\n /**\n * This will be replacement of the first then call\n *\n */\n resInterceptor() {\n const self = this;\n const jsonp = self.opts.enableJsonp;\n this.fly.interceptors.response.use(\n res => {\n this.log('response interceptor call')\n self.cleanUp()\n // now more processing here\n // there is a problem if we throw the result.error here\n // the original data is lost, so we need to do what we did before\n // deal with that error in the first then instead\n const result = isString(res.data) ? JSON.parse(res.data) : res.data;\n if (jsonp) {\n return self.processJsonp(result)\n }\n return resultHandler(result)\n },\n // this get call when it's not 200\n err => {\n self.cleanUp()\n console.error(err)\n throw new JsonqlServerError('Server side error', err)\n }\n )\n }\n\n /**\n * Get the headers inject into the call\n * @return {object} headers\n */\n getHeaders() {\n if (this.opts.enableAuth) {\n return merge({}, DEFAULT_HEADER, this.getAuthHeader(), this.extraHeader)\n }\n return merge({}, DEFAULT_HEADER, this.extraHeader)\n }\n\n /**\n * Post http call operation to clean up things we need\n */\n cleanUp() {\n this.extraHeader = {}\n this.extraParams = {}\n }\n\n /**\n * GET for contract only\n */\n get() {\n if (this.opts.showContractDesc) {\n this.extraParams = merge({}, this.extraParams, SHOW_CONTRACT_DESC_PARAM)\n }\n return this.request({}, {method: 'GET'}, this.contractHeader)\n .then(clientErrorsHandler)\n .then(result => {\n this.log('get contract result', result)\n // when refresh the window the result is different!\n // @TODO need to check the Koa side about why is that\n // also it should set a flag if we want the description or not\n if (result.cache && result.contract) {\n return result.contract;\n }\n // just the normal result\n return result\n })\n }\n\n /**\n * POST to server - query\n * @param {object} name of the resolver\n * @param {array} args arguments\n * @return {object} promise resolve to the resolver return\n */\n query(name, args = []) {\n return this.request(createQuery(name, args))\n .then(clientErrorsHandler)\n }\n\n /**\n * PUT to server - mutation\n * @param {string} name of resolver\n * @param {object} payload what it said\n * @param {object} conditions what it said\n * @return {object} promise resolve to the resolver return\n */\n mutation(name, payload = {}, conditions = {}) {\n return this.request(createMutation(name, payload, conditions), {method: PUT})\n .then(clientErrorsHandler)\n }\n\n}\n","// all the contract related methods will be here\nimport { JsonqlValidationError } from 'jsonql-errors'\n\nimport { timestamp, isContract, ENDPOINT_TABLE } from '../utils'\nimport { localStore } from '../stores'\n\nimport HttpClass from './http-cls';\n\n// export\nexport default class ContractClass extends HttpClass {\n\n constructor(opts) {\n super(opts)\n }\n\n /**\n * return the contract public api\n * @return {object} contract\n */\n getContract() {\n const contracts = this.readContract()\n this.log('getContract first call', contracts)\n if (contracts && Array.isArray(contracts)) {\n const contract = contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ]\n if (contract) {\n return Promise.resolve(contract)\n }\n }\n return this.get()\n .then( this.storeContract.bind(this) )\n }\n\n /**\n * We are changing the way how to auth to get the contract.json\n * Instead of in the url, we will be putting that key value in the header\n * @return {object} header\n */\n get contractHeader() {\n let base = {};\n if (this.opts.contractKey !== false) {\n base[this.opts.contractKeyName] = this.opts.contractKey;\n }\n return base;\n }\n\n /**\n * Save the contract to local store\n * @param {object} contract to save\n * @return {object|boolean} false when its not a contract or contract on OK\n */\n storeContract(contract) {\n // first need to check if the contract is a contract\n if (!isContract(contract)) {\n throw new JsonqlValidationError(`Contract is malformed!`)\n //return false;\n }\n let args = [contract]\n if (this.opts.contractExpired) {\n let expired = parseFloat(this.opts.contractExpired)\n if (!isNaN(expired) && expired > 0) {\n args.push(expired)\n }\n }\n // calling the setter\n this.jsonqlContract = args;\n // return it\n this.log('storeContract return result', contract)\n return contract;\n }\n\n /**\n * return the contract from options or localStore\n * @return {object} contract\n */\n readContract() {\n let contract = isContract(this.opts.contract)\n return contract ? this.opts.contract : localStore.get(this.opts.storageKey)\n }\n}\n","// this is the new auth class that integrate with the jsonql-jwt\n// all the auth related methods will be here\nimport { decodeToken } from 'jsonql-jwt'\nimport {\n CREDENTIAL_STORAGE_KEY,\n AUTH_HEADER,\n BEARER\n} from 'jsonql-constants'\n// chain\nimport ContractClass from './contract-cls'\n// export\nexport default class AuthClass extends ContractClass {\n\n constructor(opts) {\n super(opts)\n if (opts.enableAuth && opts.useJwt) {\n this.setDecoder = decodeToken;\n }\n }\n\n /**\n * Getter to get the login userdata\n * @return {mixed} userdata\n */\n get userdata() {\n return this.jsonqlUserdata; // see base-cls\n }\n\n /**\n * Return the token from session store\n * @return {string} token\n */\n get rawAuthToken() {\n // this should return from the base\n return this.jsonqlToken; // see base-cls\n }\n\n /**\n * Setter to add a decoder when retrieve user token\n * @param {function} d a decoder\n */\n set setDecoder(d) {\n if (typeof d === 'function') {\n this.decoder = d;\n }\n }\n\n /**\n * Setter after login success\n * @TODO this move to a new class to handle multiple login\n * @param {string} token to store\n * @return {*} success store\n */\n storeToken(token) {\n return this.jsonqlToken = token;\n }\n\n /**\n * for overwrite\n * @param {string} token stored token\n * @return {string} token\n */\n decoder(token) {\n return token;\n }\n\n /**\n * Construct the auth header\n * @return {object} header\n */\n getAuthHeader() {\n const token = this.rawAuthToken;\n return token ? {[this.opts.AUTH_HEADER]: `${BEARER} ${token}`} : {};\n }\n\n}\n","// this the core of the internal storage management\nimport { CREDENTIAL_STORAGE_KEY } from 'jsonql-constants'\nimport { isObject, isArray } from 'jsonql-params-validator'\nimport { JsonqlValidationError } from 'jsonql-errors'\n// chaining into the classes\nimport { localStore, sessionStore } from '../stores'\nimport { timestamp, inArray, ENDPOINT_TABLE, USERDATA_TABLE } from '../utils'\n\nimport AuthCls from './auth-cls'\n\n// This class will only focus on the storage system\nexport default class JsonqlBaseClient extends AuthCls {\n\n constructor(opts, Fly = null) {\n if (Fly) {\n opts.Fly = Fly;\n }\n super(opts)\n }\n\n // @TODO\n set storeIt(args) {\n console.info('storeIt', args)\n // the args MUST contain [0] the key , [1] the content [2] optional expired in\n if (isArray(args) && args.length >= 2) {\n Reflect.apply(localStore.set, localStore, args)\n }\n throw new JsonqlValidationError(`Expect argument to be array and least 2 items!`)\n }\n\n // this table index key will drive the contract\n // also it should not allow to change dynamicly\n // because this is how different client can id itself\n // OK this could be self manage because when init a new client\n // it will add a new endpoint and we will know if they are the same or not\n // but the check here\n set jsonqlEndpoint(endpoint) {\n let urls = localStore.get(ENDPOINT_TABLE) || []\n // should check if this url already existed?\n if (!inArray(urls, endpoint)) {\n urls.push(endpoint)\n this.storeId = [ENDPOINT_TABLE, urls]\n this[ENDPOINT_TABLE + 'Index'] = urls.length - 1;\n }\n }\n\n // by the time it call the save contract already been checked\n set jsonqlContract(args) {\n const key = this.opts.storageKey;\n let _args = [ key ]\n let [ contract, expired ] = args;\n // get the endpoint index\n let contracts = localStore.get(key) || []\n contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ] = contract;\n _args.push(contracts)\n if (expired) {\n _args.push(expired)\n }\n if (this.opts.keepContract) {\n this.storeIt = _args;\n }\n }\n\n /**\n * save token\n * @param {string} token to store\n * @return {string|boolean} false on failed\n */\n set jsonqlToken(token) {\n const key = CREDENTIAL_STORAGE_KEY;\n let tokens = localStorage.get(key) || []\n if (!inArray(tokens, token)) {\n let index = tokens.length - 1;\n tokens[ index ] = token;\n this[key + 'Index'] = index;\n let args = [key, tokens]\n if (this.opts.tokenExpired) {\n const expired = parseFloat(this.opts.tokenExpired)\n if (!isNaN(expired) && expired > 0) {\n const ts = timestamp()\n args.push( ts + parseFloat(expired) )\n }\n }\n this.storeIt = args;\n // now decode it and store in the userdata\n this.jsonqlUserdata = this.decoder(token)\n return token;\n }\n return false;\n }\n\n /**\n * this one will use the sessionStore\n * basically we hook this onto the token store and decode it to store here\n */\n set jsonqlUserdata(userdata) {\n const args = [USERDATA_TABLE, userdata]\n if (userdata.exp) {\n args.push(userdata.exp)\n }\n return Reflect.apply(localStore.set, localStore, args)\n }\n\n /**\n * This also manage the index internally\n * There is NO need to store them in an array\n * because each instance contain one end point\n * @return {string} the end point to call\n */\n get jsonqlEndpoint() {\n let urls = localStore.get(ENDPOINT_TABLE)\n if (!urls) {\n const { hostname, jsonqlPath } = this.opts;\n let url = [hostname, jsonqlPath].join('/')\n this.jsonqlEndpoint = url;\n return url;\n }\n return urls[this[ENDPOINT_TABLE + 'Index']]\n }\n\n /**\n * If already stored then return it by the end point index\n * or false when there is none\n * 1.2.0 start using the keepContract option (replace the useLocalStorage)\n * @return {object|boolean} as described above\n */\n get jsonqlContract() {\n const key = this.opts.storageKey\n let contracts = localStore.get(key) || []\n return contracts[ this[ENDPOINT_TABLE + 'Index'] ] || false\n }\n\n /**\n * Jsonql token getter\n * @return {string|boolean} false when failed\n */\n get jsonqlToken() {\n const key = CREDENTIAL_STORAGE_KEY;\n let tokens = localStorage.get(key)\n if (tokens) {\n return tokens[ this[key + 'Index'] ]\n }\n return false;\n }\n\n /**\n * this one store in the session store\n * get login userdata decoded jwt\n * @return {object|null}\n */\n get jsonqlUserdata() {\n return sessionStore.get(USERDATA_TABLE)\n }\n\n /**\n * simple log\n */\n log(...args) {\n if (this.opts.debugOn === true) {\n Reflect.apply(console.info, console, args)\n }\n }\n\n}\n","// export interface\n// @public\nimport JsonqlBaseClient from './base-cls'\n\nexport default JsonqlBaseClient\n","// bunch of generic helpers\n\nimport isArray from 'lodash-es/isArray'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport trim from 'lodash-es/trim'\n\n/**\n * DIY in Array\n * @param {array} arr to check from\n * @param {*} value to check against\n * @return {boolean} true on found\n */\nexport const inArray = (arr, value) => !!arr.filter(a => a === value).length;\n\n// quick and dirty to turn non array to array\nexport const toArray = (arg) => isArray(arg) ? arg : [arg];\n\n/**\n * parse string to json or just return the original value if error happened\n * @param {*} n input\n * @return {*} json object on success\n */\nconst parse = function(n) {\n try {\n return JSON.parse(n)\n } catch(e) {\n return n;\n }\n}\n\n\n/**\n * @param {object} obj for search\n * @param {string} key target\n * @return {boolean} true on success\n */\nexport const isObjectHasKey = function(obj, key) {\n const keys = Object.keys(obj)\n return inArray(keys, key)\n}\n\n/**\n * create a event name\n * @param {string[]} args\n * @return {string} event name for use\n */\nexport const createEvt = (...args) => args.join('_')\n\n/**\n * @param {boolean} sec return in second or not\n * @return {number} timestamp\n */\nexport const timestamp = (sec = false) => {\n let time = Date.now()\n return sec ? Math.floor( time / 1000 ) : time;\n}\n\n/**\n * construct a url with query parameters\n * @param {string} url to append\n * @param {object} params to append to url\n * @return {string} url with appended params\n */\nexport const urlParams = (url, params) => {\n let parts = [];\n for (let key in params) {\n parts.push( [key, params[key]].join('=') )\n }\n return [url, parts.join('&')].join('?')\n}\n\n/**\n * construct a url with cache burster\n * @param {string} url to append to\n * @return {object} _cb key timestamp\n */\nexport const cacheBurstUrl = url => urlParams(url, cacheBurst())\n\n/**\n * @return {object} _cb as key with timestamp\n */\nexport const cacheBurst = () => ({ _cb: timestamp() })\n\n/**\n * From underscore.string library\n * @BUG there is a bug here with the non-standard name start with _\n * @param {string} str string\n * @return {string} dasherize string\n */\nexport const dasherize = str => (\n trim(str)\n .replace(/([A-Z])/g, '-$1')\n .replace(/[-_\\s]+/g, '-')\n .toLowerCase()\n)\n\n/**\n * simple util method to get the value\n * @param {string} name of the key\n * @param {object} obj to take value from\n * @return {*} the object value id by name or undefined\n */\nexport const getConfigValue = (name, obj) => (\n obj && isPlainObject(obj) ? ( (name in obj) ? obj[name] : undefined ) : undefined\n)\n\n/**\n * small util to make sure the return value is valid JSON object\n * @param {*} n input\n * @return {object} correct JSON object\n */\nexport const toJson = (n) => {\n if (typeof n === 'string') {\n return parse(n)\n }\n return JSON.parse(JSON.stringify(n))\n}\n\n/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nexport const isNotEmpty = function(param) {\n return param !== undefined && param !== false && param !== null && trim(param) !== '';\n}\n\n/**\n * Simple check if the prop is function\n * @param {*} prop input\n * @return {boolean} true on success\n */\nexport const isFunc = prop => {\n if (typeof prop === 'function') {\n return true;\n }\n console.error(`Expect to be Function type!`)\n}\n","// breaking out the inner methods generator in here\nimport {\n JsonqlValidationError,\n JsonqlError,\n clientErrorsHandler,\n finalCatch\n} from 'jsonql-errors'\nimport { validateAsync } from 'jsonql-params-validator'\nimport { LOGOUT_NAME, ISSUER_NAME, KEY_WORD } from 'jsonql-constants'\nimport { injectToFn, chainFns } from 'jsonql-utils/module'\n\n/**\n * generate authorisation specific methods\n * @param {object} jsonqlInstance instance of this\n * @param {string} name of method\n * @param {object} opts configuration\n * @param {object} contract to match\n * @return {function} for use\n */\nconst authMethodGenerator = (jsonqlInstance, name, opts, contract) => {\n return (...args) => {\n const params = contract.auth[name].params;\n const values = params.map((p, i) => args[i])\n const header = args[params.length] || {};\n return validateAsync(args, params)\n .then(() => jsonqlInstance\n .query\n .apply(jsonqlInstance, [name, values, header])\n )\n .catch(finalCatch)\n }\n}\n\n/**\n * Break up the different type each - create query methods\n * @param {object} obj to hold all the objects\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} ee eventEmitter\n * @param {object} config configuration\n * @param {object} contract json\n * @return {object} modified output for next op\n */\nconst createQueryMethods = (obj, jsonqlInstance, ee, config, contract) => {\n let query = {}\n for (let queryFn in contract.query) {\n // to keep it clean we use a param to id the auth method\n // const fn = (_contract.query[queryFn].auth === true) ? 'auth' : queryFn;\n // generate the query method\n query = injectToFn(query, queryFn, function queryFnHandler(...args) {\n // obj.query[queryFn] = (...args) => {\n const params = contract.query[queryFn].params;\n const _args = params.map((param, i) => args[i])\n // debug('query', queryFn, _params);\n // @TODO this need to change\n // the +1 parameter is the extra headers we want to pass\n const header = args[params.length] || {};\n // @TODO validate against the type\n return validateAsync(_args, params)\n .then(() => jsonqlInstance\n .query\n .apply(jsonqlInstance, [queryFn, _args, header])\n )\n .catch(finalCatch)\n })\n }\n obj.query = query;\n return { obj, jsonqlInstance, ee, config, contract }\n}\n\n/**\n * create mutation methods\n * @param {object} obj to hold all the objects\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} ee eventEmitter\n * @param {object} config configuration\n * @param {object} contract json\n * @return {object} modified output for next op\n */\nconst createMutationMethods = (obj, jsonqlInstance, ee, config, contract) => {\n let mutation = {}\n // process the mutation, the reason the mutation has a fixed number of parameters\n // there is only the payload, and conditions parameters\n // plus a header at the end\n for (let mutationFn in contract.mutation) {\n mutation = injectToFn(mutation, mutationFn, function mutationFnHandler(payload, conditions, header = {}) {\n //obj.mutation[mutationFn] = (payload, conditions, header = {}) => {\n const args = [payload, conditions];\n const params = contract.mutation[mutationFn].params;\n return validateAsync(args, params)\n .then(() => jsonqlInstance\n .mutation\n .apply(jsonqlInstance, [mutationFn, payload, conditions, header])\n )\n .catch(finalCatch)\n })\n }\n obj.mutation = mutation;\n return { obj, jsonqlInstance, ee, config, contract }\n}\n\n/**\n * create auth methods\n * @param {object} obj to hold all the objects\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} ee eventEmitter\n * @param {object} config configuration\n * @param {object} contract json\n * @return {object} modified output for next op\n */\nconst createAuthMethods = (obj, jsonqlInstance, ee, config, contract) => {\n if (config.enableAuth && contract.auth) {\n let auth = {} // v1.3.1 add back the auth prop name in contract\n const { loginHandlerName, logoutHandlerName } = config;\n if (contract.auth[loginHandlerName]) {\n // changing to the name the config specify\n auth[loginHandlerName] = function loginHandlerFn(...args) {\n const fn = authMethodGenerator(jsonqlInstance, loginHandlerName, config, contract)\n return fn.apply(null, args)\n .then(jsonqlInstance.postLoginAction)\n .then(token => {\n ee.$trigger(ISSUER_NAME, token)\n return token;\n })\n }\n }\n if (contract.auth[logoutHandlerName]) {\n auth[logoutHandlerName] = function logoutHandlerFn(...args) {\n const fn = authMethodGenerator(jsonqlInstance, logoutHandlerName, config, contract)\n return fn.apply(null, args)\n .then(jsonqlInstance.postLogoutAction)\n .then(r => {\n ee.$trigger(LOGOUT_NAME, r)\n return r;\n })\n }\n } else {\n auth[logoutHandlerName] = function logoutHandlerFn() {\n jsonqlInstance.postLogoutAction(KEY_WORD)\n ee.$trigger(LOGOUT_NAME, KEY_WORD)\n }\n }\n obj.auth = auth;\n }\n return obj;\n}\n\n/**\n * Here just generate the methods calls\n * @param {object} jsonqlInstance what it said\n * @param {object} ee event emitter\n * @param {object} config configuration\n * @param {object} contract the map\n * @return {object} with mapped methods\n */\nexport default function methodsGenerator(jsonqlInstance, ee, config, contract) {\n let obj = {}\n const executor = chainFns(createQueryMethods, createMutationMethods, createAuthMethods)\n return executor(obj, jsonqlInstance, ee, config, contract)\n}\n","// Generate the resolver for developer to use\n\n// @TODO when enableAuth we need to add one extra check\n// before the resolver call make it to the core\n// which is checking the login state, if the developer\n// is calling a private method without logging in\n// then we should throw the JsonqlForbiddenError at this point\n// instead of making a round trip to the server\nimport { LOGOUT_NAME, ISSUER_NAME, KEY_WORD } from 'jsonql-constants'\nimport { validateAsync } from 'jsonql-params-validator'\nimport {\n JsonqlValidationError,\n JsonqlError,\n clientErrorsHandler,\n finalCatch\n} from 'jsonql-errors'\n\nimport methodsGenerator from './methods-generator'\n\n/**\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} config options\n * @param {object} contract the contract\n * @param {object} ee eventEmitter\n * @return {object} constructed functions call\n */\nconst generator = (jsonqlInstance, config, contract, ee) => {\n // V1.3.0 - now everything wrap inside this method\n let client = methodsGenerator(jsonqlInstance, ee, config, contract)\n // create the rest of the methods\n if (config.enableAuth) {\n /**\n * new method to allow retrieve the current login user data\n * @return {*} userdata\n */\n client.userdata = () => jsonqlInstance.userdata;\n }\n // allow getting the token for valdiate agains the socket\n client.getToken = () => jsonqlInstance.rawAuthToken;\n // this will pass to the ws-client if needed\n // client.eventEmitter = ee;\n // this will require a param\n if (config.exposeContract) {\n // 1.4.0 change from the get (raw) to the getContract cache and raw version\n client.getContract = () => jsonqlInstance.getContract()\n }\n // this is for the ws to use later\n client.eventEmitter = ee;\n client.version = '__VERSION__';\n // output\n return client;\n};\n\nexport default generator;\n","// all the client configuration options here\nimport {\n JSONQL_PATH,\n CONTENT_TYPE,\n BEARER,\n CLIENT_STORAGE_KEY,\n CLIENT_AUTH_KEY,\n CONTRACT_KEY_NAME,\n AUTH_HEADER,\n ISSUER_NAME,\n LOGOUT_NAME,\n BOOLEAN_TYPE,\n STRING_TYPE,\n NUMBER_TYPE,\n DEFAULT_HEADER\n} from 'jsonql-constants'\nimport { createConfig } from 'jsonql-params-validator'\nexport const constProps = {\n contract: false,\n MUTATION_ARGS: ['name', 'payload', 'conditions'], // this seems wrong?\n CONTENT_TYPE,\n BEARER,\n AUTH_HEADER\n}\n\n// grab the localhost name and put into the hostname as default\nconst getHostName = () => (\n [window.location.protocol, window.location.host].join('//')\n)\n\nexport const appProps = {\n\n hostname: createConfig(getHostName(), [STRING_TYPE]), // required the hostname\n jsonqlPath: createConfig(JSONQL_PATH, [STRING_TYPE]), // The path on the server\n\n loginHandlerName: createConfig(ISSUER_NAME, [STRING_TYPE]),\n logoutHandlerName: createConfig(LOGOUT_NAME, [STRING_TYPE]),\n // add to koa v1.3.0 - this might remove in the future\n enableJsonp: createConfig(false, [BOOLEAN_TYPE]),\n enableAuth: createConfig(false, [BOOLEAN_TYPE]),\n // enable useJwt by default\n useJwt: createConfig(true, [BOOLEAN_TYPE]),\n\n // the header\n // v1.2.0 we are using this option during the dev\n // so it won't save anything to the localstorage and fetch a new contract\n // whenever the browser reload\n useLocalstorage: createConfig(true, [BOOLEAN_TYPE]), // should we store the contract into localStorage\n storageKey: createConfig(CLIENT_STORAGE_KEY, [STRING_TYPE]),// the key to use when store into localStorage\n authKey: createConfig(CLIENT_AUTH_KEY, [STRING_TYPE]),// the key to use when store into the sessionStorage\n contractExpired: createConfig(0, [NUMBER_TYPE]),// -1 always fetch contract,\n // 0 never expired,\n // > 0 then compare the timestamp with the current one to see if we need to get contract again\n // useful during development\n keepContract: createConfig(true, [BOOLEAN_TYPE]),\n exposeContract: createConfig(false, [BOOLEAN_TYPE]),\n // @1.2.1 new option for the contract-console to fetch the contract with description\n showContractDesc: createConfig(false, [BOOLEAN_TYPE]),\n contractKey: createConfig(false, [BOOLEAN_TYPE]), // if the server side is lock by the key you need this\n contractKeyName: createConfig(CONTRACT_KEY_NAME, [STRING_TYPE]), // same as above they go in pairs\n enableTimeout: createConfig(false, [BOOLEAN_TYPE]), // @TODO\n timeout: createConfig(5000, [NUMBER_TYPE]), // 5 seconds\n returnInstance: createConfig(false, [BOOLEAN_TYPE]),\n allowReturnRawToken: createConfig(false, [BOOLEAN_TYPE]),\n debugOn: createConfig(false, [BOOLEAN_TYPE])\n}\n","// we must ensure the user passing the correct options\n// therefore we need to validate against the properties as well\n\nimport { appProps, constProps } from './base-options'\nimport { checkConfigAsync } from 'jsonql-params-validator'\n\nexport default function checkOptionsAsync(config) {\n let { contract } = config;\n return checkConfigAsync(config, appProps, constProps)\n .then(opts => {\n opts.contract = contract;\n return opts;\n })\n}\n","// this is new for the flyio and normalize the name from now on\nimport JsonqlBaseClient from './base'\nimport generator from './core/jsonql-api-generator'\nimport { checkOptionsAsync } from './options'\nimport { getContractFromConfig } from './utils'\n\n/**\n * Main interface for jsonql fetch api\n * @param {object} config\n * @param {object} Fly this is really pain in the backside ... long story\n * @return {object} jsonql client\n */\nexport default function(ee, config = {}, Fly = null) {\n return checkOptionsAsync(config)\n .then(opts => (\n {\n baseClient: new JsonqlBaseClient(opts, Fly),\n opts: opts\n }\n ))\n .then( ({baseClient, opts}) => (\n getContractFromConfig(baseClient, opts.contract)\n .then(contract => generator(baseClient, opts, contract, ee)\n )\n )\n )\n}\n","/**\n * generate a 32bit hash based on the function.toString()\n * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery\n * @param {string} s the converted to string function\n * @return {string} the hashed function string\n */\nexport default function hashCode(s) {\n\treturn s.split(\"\").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0)\n}\n","// making all the functionality on it's own\n// import { WatchClass } from './watch'\n\nexport default class SuspendClass {\n\n constructor() {\n // suspend, release and queue\n this.__suspend__ = null;\n this.queueStore = new Set()\n /*\n this.watch('suspend', function(value, prop, oldValue) {\n this.logger(`${prop} set from ${oldValue} to ${value}`)\n // it means it set the suspend = true then release it\n if (oldValue === true && value === false) {\n // we want this happen after the return happens\n setTimeout(() => {\n this.release()\n }, 1)\n }\n return value; // we need to return the value to store it\n })\n */\n }\n\n /**\n * setter to set the suspend and check if it's boolean value\n * @param {boolean} value to trigger\n */\n set $suspend(value) {\n if (typeof value === 'boolean') {\n const lastValue = this.__suspend__;\n this.__suspend__ = value;\n this.logger('($suspend)', `Change from ${lastValue} --> ${value}`)\n if (lastValue === true && value === false) {\n setTimeout(() => {\n this.release()\n }, 1)\n }\n } else {\n throw new Error(`$suspend only accept Boolean value!`)\n }\n }\n\n /**\n * queuing call up when it's in suspend mode\n * @param {any} value\n * @return {Boolean} true when added or false when it's not\n */\n $queue(...args) {\n if (this.__suspend__ === true) {\n this.logger('($queue)', 'added to $queue', args)\n // there shouldn't be any duplicate ...\n this.queueStore.add(args)\n }\n return this.__suspend__;\n }\n\n /**\n * a getter to get all the store queue\n * @return {array} Set turn into Array before return\n */\n get $queues() {\n let size = this.queueStore.size;\n this.logger('($queues)', `size: ${size}`)\n if (size > 0) {\n return Array.from(this.queueStore)\n }\n return []\n }\n\n /**\n * Release the queue\n * @return {int} size if any\n */\n release() {\n let size = this.queueStore.size\n this.logger('(release)', `Release was called ${size}`)\n if (size > 0) {\n const queue = Array.from(this.queueStore)\n this.queueStore.clear()\n this.logger('queue', queue)\n queue.forEach(args => {\n this.logger(args)\n Reflect.apply(this.$trigger, this, args)\n })\n this.logger(`Release size ${this.queueStore.size}`)\n }\n }\n}\n","// break up the main file because its getting way too long\nimport {\n NB_EVENT_SERVICE_PRIVATE_STORE,\n NB_EVENT_SERVICE_PRIVATE_LAZY\n} from './store'\nimport genHaskKey from './hash-code'\nimport SuspendClass from './suspend'\n\nexport default class NbEventServiceBase extends SuspendClass {\n\n constructor(config = {}) {\n super()\n if (config.logger && typeof config.logger === 'function') {\n this.logger = config.logger;\n }\n this.keep = config.keep;\n // for the $done setter\n this.result = config.keep ? [] : null;\n // we need to init the store first otherwise it could be a lot of checking later\n this.normalStore = new Map()\n this.lazyStore = new Map()\n }\n\n /**\n * validate the event name(s)\n * @param {string[]} evt event name\n * @return {boolean} true when OK\n */\n validateEvt(...evt) {\n evt.forEach(e => {\n if (typeof e !== 'string') {\n this.logger('(validateEvt)', e)\n throw new Error(`event name must be string type!`)\n }\n })\n return true;\n }\n\n /**\n * Simple quick check on the two main parameters\n * @param {string} evt event name\n * @param {function} callback function to call\n * @return {boolean} true when OK\n */\n validate(evt, callback) {\n if (this.validateEvt(evt)) {\n if (typeof callback === 'function') {\n return true;\n }\n }\n throw new Error(`callback required to be function type!`)\n }\n\n /**\n * Check if this type is correct or not added in V1.5.0\n * @param {string} type for checking\n * @return {boolean} true on OK\n */\n validateType(type) {\n const types = ['on', 'only', 'once', 'onlyOnce']\n return !!types.filter(t => type === t).length;\n }\n\n /**\n * Run the callback\n * @param {function} callback function to execute\n * @param {array} payload for callback\n * @param {object} ctx context or null\n * @return {void} the result store in $done\n */\n run(callback, payload, ctx) {\n this.logger('(run)', callback, payload, ctx)\n this.$done = Reflect.apply(callback, ctx, this.toArray(payload))\n }\n\n /**\n * Take the content out and remove it from store id by the name\n * @param {string} evt event name\n * @param {string} [storeName = lazyStore] name of store\n * @return {object|boolean} content or false on not found\n */\n takeFromStore(evt, storeName = 'lazyStore') {\n let store = this[storeName]; // it could be empty at this point\n if (store) {\n this.logger('(takeFromStore)', storeName, store)\n if (store.has(evt)) {\n let content = store.get(evt)\n this.logger('(takeFromStore)', `has ${evt}`, content)\n store.delete(evt)\n return content;\n }\n return false;\n }\n throw new Error(`${storeName} is not supported!`)\n }\n\n /**\n * The add to store step is similar so make it generic for resuse\n * @param {object} store which store to use\n * @param {string} evt event name\n * @param {spread} args because the lazy store and normal store store different things\n * @return {array} store and the size of the store\n */\n addToStore(store, evt, ...args) {\n let fnSet;\n if (store.has(evt)) {\n this.logger('(addToStore)', `${evt} existed`)\n fnSet = store.get(evt)\n } else {\n this.logger('(addToStore)', `create new Set for ${evt}`)\n // this is new\n fnSet = new Set()\n }\n // lazy only store 2 items - this is not the case in V1.6.0 anymore\n // we need to check the first parameter is string or not\n if (args.length > 2) {\n if (Array.isArray(args[0])) { // lazy store\n // check if this type of this event already register in the lazy store\n let [,,t] = args;\n if (!this.checkTypeInLazyStore(evt, t)) {\n fnSet.add(args)\n }\n } else {\n if (!this.checkContentExist(args, fnSet)) {\n this.logger('(addToStore)', `insert new`, args)\n fnSet.add(args)\n }\n }\n } else { // add straight to lazy store\n fnSet.add(args)\n }\n store.set(evt, fnSet)\n return [store, fnSet.size]\n }\n\n /**\n * @param {array} args for compare\n * @param {object} fnSet A Set to search from\n * @return {boolean} true on exist\n */\n checkContentExist(args, fnSet) {\n let list = Array.from(fnSet)\n return !!list.filter(l => {\n let [hash,] = l;\n if (hash === args[0]) {\n return true;\n }\n return false;\n }).length;\n }\n\n /**\n * get the existing type to make sure no mix type add to the same store\n * @param {string} evtName event name\n * @param {string} type the type to check\n * @return {boolean} true you can add, false then you can't add this type\n */\n checkTypeInStore(evtName, type) {\n this.validateEvt(evtName, type)\n let all = this.$get(evtName, true)\n if (all === false) {\n // pristine it means you can add\n return true;\n }\n // it should only have ONE type in ONE event store\n return !all.filter(list => {\n let [ ,,,t ] = list;\n return type !== t;\n }).length;\n }\n\n /**\n * This is checking just the lazy store because the structure is different\n * therefore we need to use a new method to check it\n */\n checkTypeInLazyStore(evtName, type) {\n this.validateEvt(evtName, type)\n let store = this.lazyStore.get(evtName)\n this.logger('(checkTypeInLazyStore)', store)\n if (store) {\n return !!Array\n .from(store)\n .filter(l => {\n let [,,t] = l;\n return t !== type;\n }).length\n }\n return false;\n }\n\n /**\n * wrapper to re-use the addToStore,\n * V1.3.0 add extra check to see if this type can add to this evt\n * @param {string} evt event name\n * @param {string} type on or once\n * @param {function} callback function\n * @param {object} context the context the function execute in or null\n * @return {number} size of the store\n */\n addToNormalStore(evt, type, callback, context = null) {\n this.logger('(addToNormalStore)', evt, type, 'try to add to normal store')\n // @TODO we need to check the existing store for the type first!\n if (this.checkTypeInStore(evt, type)) {\n this.logger('(addToNormalStore)', `${type} can add to ${evt} normal store`)\n let key = this.hashFnToKey(callback)\n let args = [this.normalStore, evt, key, callback, context, type]\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.normalStore = _store;\n return size;\n }\n return false;\n }\n\n /**\n * Add to lazy store this get calls when the callback is not register yet\n * so we only get a payload object or even nothing\n * @param {string} evt event name\n * @param {array} payload of arguments or empty if there is none\n * @param {object} [context=null] the context the callback execute in\n * @param {string} [type=false] register a type so no other type can add to this evt\n * @return {number} size of the store\n */\n addToLazyStore(evt, payload = [], context = null, type = false) {\n // this is add in V1.6.0\n // when there is type then we will need to check if this already added in lazy store\n // and no other type can add to this lazy store\n let args = [this.lazyStore, evt, this.toArray(payload), context]\n if (type) {\n args.push(type)\n }\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.lazyStore = _store;\n return size;\n }\n\n /**\n * make sure we store the argument correctly\n * @param {*} arg could be array\n * @return {array} make sured\n */\n toArray(arg) {\n return Array.isArray(arg) ? arg : [arg];\n }\n\n /**\n * setter to store the Set in private\n * @param {object} obj a Set\n */\n set normalStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj)\n }\n\n /**\n * @return {object} Set object\n */\n get normalStore() {\n return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)\n }\n\n /**\n * setter to store the Set in lazy store\n * @param {object} obj a Set\n */\n set lazyStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj)\n }\n\n /**\n * @return {object} the lazy store Set\n */\n get lazyStore() {\n return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)\n }\n\n /**\n * generate a hashKey to identify the function call\n * The build-in store some how could store the same values!\n * @param {function} fn the converted to string function\n * @return {string} hashKey\n */\n hashFnToKey(fn) {\n return genHaskKey(fn.toString()) + '';\n }\n}\n","// The top level\nimport NbStoreService from './store-service'\n// export\nexport default class EventService extends NbStoreService {\n /**\n * class constructor\n */\n constructor(config = {}) {\n super(config)\n }\n\n /**\n * logger function for overwrite\n */\n logger() {}\n\n //////////////////////////\n // PUBLIC METHODS //\n //////////////////////////\n\n /**\n * Register your evt handler, note we don't check the type here,\n * we expect you to be sensible and know what you are doing.\n * @param {string} evt name of event\n * @param {function} callback bind method --> if it's array or not\n * @param {object} [context=null] to execute this call in\n * @return {number} the size of the store\n */\n $on(evt , callback , context = null) {\n const type = 'on';\n this.validate(evt, callback)\n // first need to check if this evt is in lazy store\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register first then call later\n if (lazyStoreContent === false) {\n this.logger('($on)', `${evt} callback is not in lazy store`)\n // @TODO we need to check if there was other listener to this\n // event and are they the same type then we could solve that\n // register the different type to the same event name\n\n return this.addToNormalStore(evt, type, callback, context)\n }\n this.logger('($on)', `${evt} found in lazy store`)\n // this is when they call $trigger before register this callback\n let size = 0;\n lazyStoreContent.forEach(content => {\n let [ payload, ctx, t ] = content;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($on)`, `call run on ${evt}`)\n this.run(callback, payload, context || ctx)\n size += this.addToNormalStore(evt, type, callback, context || ctx)\n })\n return size;\n }\n\n /**\n * once only registered it once, there is no overwrite option here\n * @NOTE change in v1.3.0 $once can add multiple listeners\n * but once the event fired, it will remove this event (see $only)\n * @param {string} evt name\n * @param {function} callback to execute\n * @param {object} [context=null] the handler execute in\n * @return {boolean} result\n */\n $once(evt , callback , context = null) {\n this.validate(evt, callback)\n const type = 'once';\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (lazyStoreContent === false) {\n this.logger('($once)', `${evt} not in the lazy store`)\n // v1.3.0 $once now allow to add multiple listeners\n return this.addToNormalStore(evt, type, callback, context)\n } else {\n // now this is the tricky bit\n // there is a potential bug here that cause by the developer\n // if they call $trigger first, the lazy won't know it's a once call\n // so if in the middle they register any call with the same evt name\n // then this $once call will be fucked - add this to the documentation\n this.logger('($once)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger('($once)', `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n }\n\n /**\n * This one event can only bind one callbackback\n * @param {string} evt event name\n * @param {function} callback event handler\n * @param {object} [context=null] the context the event handler execute in\n * @return {boolean} true bind for first time, false already existed\n */\n $only(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'only';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($only)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($only)', `${evt} found data in lazy store to execute`)\n const list = Array.from(lazyStoreContent)\n // $only allow to trigger this multiple time on the single handler\n list.forEach( l => {\n const [ payload, ctx, t ] = l;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($only)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n })\n }\n return added;\n }\n\n /**\n * $only + $once this is because I found a very subtile bug when we pass a\n * resolver, rejecter - and it never fire because that's OLD added in v1.4.0\n * @param {string} evt event name\n * @param {function} callback to call later\n * @param {object} [context=null] exeucte context\n * @return {void}\n */\n $onlyOnce(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'onlyOnce';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($onlyOnce)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($onlyOnce)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== 'onlyOnce') {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($onlyOnce)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n return added;\n }\n\n /**\n * This is a shorthand of $off + $on added in V1.5.0\n * @param {string} evt event name\n * @param {function} callback to exeucte\n * @param {object} [context = null] or pass a string as type\n * @param {string} [type=on] what type of method to replace\n * @return {}\n */\n $replace(evt, callback, context = null, type = 'on') {\n if (this.validateType(type)) {\n this.$off(evt)\n let method = this['$' + type]\n this.logger(`($replace)`, evt, callback)\n return Reflect.apply(method, this, [evt, callback, context])\n }\n throw new Error(`${type} is not supported!`)\n }\n\n /**\n * trigger the event\n * @param {string} evt name NOT allow array anymore!\n * @param {mixed} [payload = []] pass to fn\n * @param {object|string} [context = null] overwrite what stored\n * @param {string} [type=false] if pass this then we need to add type to store too\n * @return {number} if it has been execute how many times\n */\n $trigger(evt , payload = [] , context = null, type = false) {\n this.validateEvt(evt)\n let found = 0;\n // first check the normal store\n let nStore = this.normalStore;\n this.logger('($trigger)', 'normalStore', nStore)\n if (nStore.has(evt)) {\n // @1.8.0 to add the suspend queue\n let added = this.$queue(evt, payload, context, type)\n this.logger('($trigger)', evt, 'found; add to queue: ', added)\n if (added === true) {\n this.logger('($trigger)', evt, 'not executed. Exit now.')\n return false; // not executed\n }\n let nSet = Array.from(nStore.get(evt))\n let ctn = nSet.length;\n let hasOnce = false;\n let hasOnly = false;\n for (let i=0; i < ctn; ++i) {\n ++found;\n // this.logger('found', found)\n let [ _, callback, ctx, type ] = nSet[i]\n this.logger(`($trigger)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n if (type === 'once' || type === 'onlyOnce') {\n hasOnce = true;\n }\n }\n if (hasOnce) {\n nStore.delete(evt)\n }\n return found;\n }\n // now this is not register yet\n this.addToLazyStore(evt, payload, context, type)\n return found;\n }\n\n /**\n * this is an alias to the $trigger\n * @NOTE breaking change in V1.6.0 we swap the parameter around\n * @param {string} evt event name\n * @param {*} params pass to the callback\n * @param {string} type of call\n * @param {object} context what context callback execute in\n * @return {*} from $trigger\n */\n $call(evt, params, type = false, context = null) {\n let args = [evt, params, context, type]\n return Reflect.apply(this.$trigger, this, args)\n }\n\n /**\n * remove the evt from all the stores\n * @param {string} evt name\n * @return {boolean} true actually delete something\n */\n $off(evt) {\n this.validateEvt(evt)\n let stores = [ this.lazyStore, this.normalStore ]\n let found = false;\n stores.forEach(store => {\n if (store.has(evt)) {\n found = true;\n this.logger('($off)', evt)\n store.delete(evt)\n }\n })\n return found;\n }\n\n /**\n * return all the listener from the event\n * @param {string} evtName event name\n * @param {boolean} [full=false] if true then return the entire content\n * @return {array|boolean} listerner(s) or false when not found\n */\n $get(evt, full = false) {\n this.validateEvt(evt)\n let store = this.normalStore;\n if (store.has(evt)) {\n return Array\n .from(store.get(evt))\n .map( l => {\n if (full) {\n return l;\n }\n let [key, callback, ] = l;\n return callback;\n })\n }\n return false;\n }\n\n /**\n * store the return result from the run\n * @param {*} value whatever return from callback\n */\n set $done(value) {\n this.logger('($done)', 'value: ', value)\n if (this.keep) {\n this.result.push(value)\n } else {\n this.result = value;\n }\n }\n\n /**\n * @TODO is there any real use with the keep prop?\n * getter for $done\n * @return {*} whatever last store result\n */\n get $done() {\n if (this.keep) {\n this.logger('(get $done)', this.result)\n return this.result[this.result.length - 1]\n }\n return this.result;\n }\n\n\n}\n","// default\nimport NBEventService from './src/event-service'\n\nexport default NBEventService\n","// this will generate a event emitter and will be use everywhere\nimport NBEventService from 'nb-event-service'\n// output\nexport default function(debugOn) {\n let logger = debugOn ? (...args) => {\n args.unshift('[NBS]')\n console.log.apply(null, args)\n }: undefined;\n return new NBEventService({ logger })\n}\n","// this one will use the esm module\n\n// main export interface\n\n// @2019-05-09 new interface export with Fetch\nimport { jsonqlAsync, ee as getEventEmitter } from './src'\nimport { isContract } from './src/utils'\n\n/**\n * When pass a static contract then it return a static interface\n * otherwise it will become the async interface\n * @param {object} Fly the http engine\n * @param {object} config configuration\n * @return {object} jsonqlClient\n */\nexport default function jsonqlClient(Fly, config) {\n const ee = getEventEmitter(config.debugOn)\n return jsonqlAsync(ee, config, Fly)\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;ECAA;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;ECAA;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/packages/http-client/dist/jsonql-client.static.js b/packages/http-client/dist/jsonql-client.static.js deleted file mode 100644 index e7582322..00000000 --- a/packages/http-client/dist/jsonql-client.static.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r,n=e((function(t,e){var r;r=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=2)}([function(t,e,r){var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};t.exports={type:function(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()},isObject:function(t,e){return e?"object"===this.type(t):t&&"object"===(void 0===t?"undefined":n(t))},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},trim:function(t){return t.replace(/(^\s*)|(\s*$)/g,"")},encode:function(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")},formatParams:function(t){var e="",r=!0,n=this;return this.isObject(t)?(function t(o,i){var a=n.encode,u=n.type(o);if("array"==u)o.forEach((function(e,r){n.isObject(e)||(r=""),t(e,i+"%5B"+r+"%5D")}));else if("object"==u)for(var c in o)t(o[c],i?i+"%5B"+a(c)+"%5D":a(c));else r||(e+="&"),r=!1,e+=i+"="+a(o)}(t,""),e):t},merge:function(t,e){for(var r in e)t.hasOwnProperty(r)?this.isObject(e[r],1)&&this.isObject(t[r],1)&&this.merge(t[r],e[r]):t[r]=e[r];return t}}},,function(t,e,r){var n=function(){function t(t,e){for(var r=0;r0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message",g="onResult",y="onError",b=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),m=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),_=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),w=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),j=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),O="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},S=function(){try{if(window||document)return!0}catch(t){}return!1},E=function(){try{if(!S()&&O)return!0}catch(t){}return!1};var k=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return S()?"browser":E()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(k),x=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),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),P=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),q=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,Error.captureStackTrace&&Error.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}(k),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,Error.captureStackTrace&&Error.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}(k),$=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),N=Object.freeze({__proto__:null,Jsonql406Error:b,Jsonql500Error:m,JsonqlAuthorisationError:_,JsonqlContractAuthError:w,JsonqlResolverAppError:j,JsonqlResolverNotFoundError:A,JsonqlEnumError:x,JsonqlTypeError:T,JsonqlCheckerError:P,JsonqlValidationError:q,JsonqlError:C,JsonqlServerError:$}),z=C,F=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function R(t){if(F(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&N[o])throw new N[r](i,a);throw new z(i,a)}return t}function I(t){if(Array.isArray(t))throw new q("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof b:throw new b(e,r);case t instanceof m:throw new m(e,r);case t instanceof _:throw new _(e,r);case t instanceof w:throw new w(e,r);case t instanceof j:throw new j(e,r);case t instanceof A:throw new A(e,r);case t instanceof x:throw new x(e,r);case t instanceof T:throw new T(e,r);case t instanceof P:throw new P(e,r);case t instanceof q:throw new q(e,r);case t instanceof $:throw new $(e,r);default:throw new C(e,r)}}var J="object"==typeof O&&O&&O.Object===Object&&O,M="object"==typeof self&&self&&self.Object===Object&&self,U=J||M||Function("return this")(),D=U.Symbol;function H(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&st(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function Et(t){return void 0===t}var kt="[object Boolean]";var At="[object Number]";function xt(t){return function(t){return"number"==typeof t||tt(t)&&Z(t)==At}(t)&&t!=+t}var Tt="[object String]";function Pt(t){return"string"==typeof t||!L(t)&&tt(t)&&Z(t)==Tt}function qt(t,e){return function(r){return t(e(r))}}var Ct=qt(Object.getPrototypeOf,Object),$t="[object Object]",Nt=Function.prototype,zt=Object.prototype,Ft=Nt.toString,Rt=zt.hasOwnProperty,It=Ft.call(Object);function Jt(t){if(!tt(t)||Z(t)!=$t)return!1;var e=Ct(t);if(null===e)return!0;var r=Rt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Ft.call(r)==It}var Mt,Ut=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Mt?a:++n];if(!1===e(o[u],u,o))break}return t};var Dt="[object Arguments]";function Ht(t){return tt(t)&&Z(t)==Dt}var Lt=Object.prototype,Bt=Lt.hasOwnProperty,Kt=Lt.propertyIsEnumerable,Vt=Ht(function(){return arguments}())?Ht:function(t){return tt(t)&&Bt.call(t,"callee")&&!Kt.call(t,"callee")};var Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Yt=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Wt=Yt&&Yt.exports===Gt?U.Buffer:void 0,Xt=(Wt?Wt.isBuffer:void 0)||function(){return!1},Qt=9007199254740991,Zt=/^(?:0|[1-9]\d*)$/;function te(t,e){var r=typeof t;return!!(e=null==e?Qt:e)&&("number"==r||"symbol"!=r&&Zt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=ee}var ne={};ne["[object Float32Array]"]=ne["[object Float64Array]"]=ne["[object Int8Array]"]=ne["[object Int16Array]"]=ne["[object Int32Array]"]=ne["[object Uint8Array]"]=ne["[object Uint8ClampedArray]"]=ne["[object Uint16Array]"]=ne["[object Uint32Array]"]=!0,ne["[object Arguments]"]=ne["[object Array]"]=ne["[object ArrayBuffer]"]=ne["[object Boolean]"]=ne["[object DataView]"]=ne["[object Date]"]=ne["[object Error]"]=ne["[object Function]"]=ne["[object Map]"]=ne["[object Number]"]=ne["[object Object]"]=ne["[object RegExp]"]=ne["[object Set]"]=ne["[object String]"]=ne["[object WeakMap]"]=!1;var oe,ie="object"==typeof exports&&exports&&!exports.nodeType&&exports,ae=ie&&"object"==typeof module&&module&&!module.nodeType&&module,ue=ae&&ae.exports===ie&&J.process,ce=function(){try{var t=ae&&ae.require&&ae.require("util").types;return t||ue&&ue.binding&&ue.binding("util")}catch(t){}}(),se=ce&&ce.isTypedArray,fe=se?(oe=se,function(t){return oe(t)}):function(t){return tt(t)&&re(t.length)&&!!ne[Z(t)]},le=Object.prototype.hasOwnProperty;function pe(t,e){var r=L(t),n=!r&&Vt(t),o=!r&&!n&&Xt(t),i=!r&&!n&&!o&&fe(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Te.prototype.set=function(t,e){var r=this.__data__,n=Ae(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Pe,qe=U["__core-js_shared__"],Ce=(Pe=/[^.]+$/.exec(qe&&qe.keys&&qe.keys.IE_PROTO||""))?"Symbol(src)_1."+Pe:"";var $e=Function.prototype.toString;function Ne(t){if(null!=t){try{return $e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ze=/^\[object .+?Constructor\]$/,Fe=Function.prototype,Re=Object.prototype,Ie=Fe.toString,Je=Re.hasOwnProperty,Me=RegExp("^"+Ie.call(Je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ue(t){return!(!ye(t)||function(t){return!!Ce&&Ce in t}(t))&&(je(t)?Me:ze).test(Ne(t))}function De(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Ue(r)?r:void 0}var He=De(U,"Map"),Le=De(Object,"create");var Be="__lodash_hash_undefined__",Ke=Object.prototype.hasOwnProperty;var Ve=Object.prototype.hasOwnProperty;var Ge="__lodash_hash_undefined__";function Ye(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&or?new er:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Kn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Bn);function Wn(t,e){return Yn(function(t,e,r){return e=Ln(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Ln(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!ye(r))return!1;var n=typeof e;return!!("number"==n?Oe(r)&&te(e,r.length):"string"==n&&e in r)&&ke(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},_o=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!mo(r,t)})).length},jo=function(t,e){if(void 0===e&&(e=null),Jt(t)){if(!e)return!0;if(mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Et(r)||(!1!==(e=_o(t))?!wo({arg:r},e):!bo(t)(r))})).length)})).length}return!1},Oo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),jo.apply(null,n)};function So(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Eo=function(t,e){var r;switch(!0){case"object"===t:return!Oo(e);case"array"===t:return!mo(e.arg);case!1!==(r=_o(t)):return!wo(e,r);default:return!bo(t)(e.arg)}},ko=function(t,e){return Et(t)?!0!==e.optional||Et(e.defaultvalue)?null:e.defaultvalue:t},Ao=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!mo(e))throw new C("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!mo(t))throw new C("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 So(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:So(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:So(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?ko(t,a):t,index:r,param:a,optional:i}}));default:throw So(5),new C("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!io(e)&&!(r.type.length>r.type.filter((function(e){return Eo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Eo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},xo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},To=function(t){return!io(t)};function Po(t,e){var r=oo(e,(function(t,e){return!t[go]}));return Wr(r,{})?t:function(t,e){var r={};return e=On(e),Ee(t,(function(t,n,o){En(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,On((function(t){return t.alias===e})),Ee)||e}))}function qo(t,e){return Zn(e,(function(e,r){var n,o;return Et(t[r])||!0===e[lo]&&To(t[r])?Qn({},e,((n={})[yo]=!0,n)):((o={})[ho]=t[r],o[fo]=e[fo],o[lo]=e[lo]||!1,o[po]=e[po]||!1,o[vo]=e[vo]||!1,o)}))}function Co(t,e){var r=function(t,e){var r=Po(t,e);return{pristineValues:Zn(oo(e,(function(t,e){return xo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:oo(e,(function(t,e){return!xo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[qo(n,r.checkAgainstAppProps),o]}var $o=function(t){return mo(t)?t:[t]};var No=function(t,e){return!mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},zo=function(t,e){try{return!!je(e)&&e.apply(null,[t])}catch(t){return!1}};function Fo(t){return function(e,r){if(e[yo])return e[ho];var n=function(t,e){var r,n=[[t[ho]],[(r={},r[fo]=$o(t[fo]),r[lo]=t[lo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw So("runValidationAction",r,e),new T(r,n);if(!1!==e[po]&&!No(e[ho],e[po]))throw So(po,e[po]),new x(r);if(!1!==e[vo]&&!zo(e[ho],e[vo]))throw So(vo,e[vo]),new P(r);return e[ho]}}function Ro(t,e,r,n){return void 0===t&&(t={}),Qn(function(t,e){var r=t[0],n=t[1],o=Zn(r,Fo(e));return Qn(o,n)}(Co(t,e),n),r)}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),mo(n)&&(a[f]=n),je(o)&&(a[p]=o),Pt(i)&&(a[h]=i),a}var Jo=uo,Mo=mo,Uo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Ao(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Do=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Ho=function(t){return function(e,r,n){return void 0===n&&(n={}),Ro(e,r,n,t)}}(Ao),Lo=function(t){return L(t)?t:[t]},Bo=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,Lo(t))}),Reflect.apply(t,null,r))}};function Ko(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(I)}},Go=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(I)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Yo=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Uo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(I)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Wo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xo=Array.isArray,Qo=void 0!==O?O:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Zo="object"==typeof Qo&&Qo&&Qo.Object===Object&&Qo,ti="object"==typeof self&&self&&self.Object===Object&&self,ei=(Zo||ti||Function("return this")()).Symbol,ri=Object.prototype,ni=ri.hasOwnProperty,oi=ri.toString,ii=ei?ei.toStringTag:void 0;var ai=Object.prototype.toString;var ui="[object Null]",ci="[object Undefined]",si=ei?ei.toStringTag:void 0;function fi(t){return null==t?void 0===t?ci:ui:si&&si in Object(t)?function(t){var e=ni.call(t,ii),r=t[ii];try{t[ii]=void 0;var n=!0}catch(t){}var o=oi.call(t);return n&&(e?t[ii]=r:delete t[ii]),o}(t):function(t){return ai.call(t)}(t)}var li=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function pi(t){return null!=t&&"object"==typeof t}var hi="[object Object]",di=Function.prototype,vi=Object.prototype,gi=di.toString,yi=vi.hasOwnProperty,bi=gi.call(Object);var mi=ei?ei.prototype:void 0,_i=(mi&&mi.toString,"[object String]");function wi(t){return"string"==typeof t||!Xo(t)&&pi(t)&&fi(t)==_i}var ji=function(t,e){return!!t.filter((function(t){return t===e})).length},Oi=function(t,e){var r=Object.keys(t);return ji(r,e)},Si=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},Ei=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ki="query",Ai="mutation",xi="socket",Ti="payload",Pi="condition",qi=function(){try{if(window||document)return!0}catch(t){}return!1},Ci=function(){try{if(!qi()&&Qo)return!0}catch(t){}return!1};var $i=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return qi()?"browser":Ci()?"node":"unknown"},e}(Error));var Ni=function(t){var e;return(e={}).args=t,e};var zi=function(t){return Oi(t,"data")&&!Oi(t,"error")?t.data:t},Fi=function(t){return function(t){if(!pi(t)||fi(t)!=hi)return!1;var e=li(t);if(null===e)return!0;var r=yi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&gi.call(r)==bi}(t)&&(Oi(t,ki)||Oi(t,Ai)||Oi(t,xi))},Ri=function(t,e){return void 0===e&&(e={}),Fi(e)?Promise.resolve(e):t.getContract()},Ii=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(Si(e,r,g),o),t.$only(Si(e,r,y),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ji=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Mi(t,e,r,n){var o=function(t,e,r,n){return Bo(Go,Yo,Wo)({},t,e,r,n)}(t,e,r,n);Ji(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(Si(t,n,g),r)})).catch((function(r){e.$trigger(Si(t,n,y),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ui=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Mi(t,n,e,r)}));var o={query:Ii(n,"query"),mutation:Ii(n,"mutation"),auth:Ii(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.4.0",o},Di=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=fa().key(e);t(la(r),r)}},remove:function(t){return fa().removeItem(t)},clearAll:function(){return fa().clear()}};function fa(){return ca.localStorage}function la(t){return fa().getItem(t)}var pa=Ki.trim,ha={name:"cookieStorage",read:function(t){if(!t||!ya(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(da.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;da.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:va,remove:ga,clearAll:function(){va((function(t,e){ga(e)}))}},da=Ki.Global.document;function va(t){for(var e=da.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(pa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ga(t){t&&ya(t)&&(da.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ya(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(da.cookie)}var ba=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ma="expire_mixin",_a=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ma);return{set:function(e,r,n,o){this.hasNamespace(ma)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ma)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ma)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var xa=[sa,ha],Ta=[ba,_a,Ea,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Aa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Aa.compress(this._serialize(r));t(e,n)}}}],Pa=ia.createStore(xa,Ta),qa=Ki.Global;function Ca(){return qa.sessionStorage}function $a(t){return Ca().getItem(t)}var Na=[{name:"sessionStorage",read:$a,write:function(t,e){return Ca().setItem(t,e)},each:function(t){for(var e=Ca().length-1;e>=0;e--){var r=Ca().key(e);t($a(r),r)}},remove:function(t){return Ca().removeItem(t)},clearAll:function(){return Ca().clear()}},ha],za=[ba,_a],Fa=ia.createStore(Na,za),Ra=Pa,Ia=Fa,Ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidCharacterError";var Ua="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ma("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ja.indexOf(n);return a};var Da=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ua(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ua(e)}};function Ha(t){this.message=t}Ha.prototype=new Error,Ha.prototype.name="InvalidTokenError";var La=function(t,e){if("string"!=typeof t)throw new Ha("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Da(t.split(".")[r]))}catch(t){throw new Ha("Invalid token specified: "+t.message)}},Ba=Ha;La.InvalidTokenError=Ba;var Ka,Va,Ga,Ya,Wa,Xa,Qa,Za,tu,eu=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function ru(t){if(Jo(t))return function(t){var e=t.iat||eu(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new C("Token has expired on "+r,t)}return t}(La(t));throw new C("Token must be a string!")}Do("HS256",["string"]),Do(!1,["boolean","number","string"],((Ka={})[h]="exp",Ka[s]=!0,Ka)),Do(!1,["boolean","number","string"],((Va={})[h]="nbf",Va[s]=!0,Va)),Do(!1,["boolean","string"],((Ga={})[h]="iss",Ga[s]=!0,Ga)),Do(!1,["boolean","string"],((Ya={})[h]="sub",Ya[s]=!0,Ya)),Do(!1,["boolean","string"],((Wa={})[h]="iss",Wa[s]=!0,Wa)),Do(!1,["boolean"],((Xa={})[s]=!0,Xa)),Do(!1,["boolean","string"],((Qa={})[s]=!0,Qa)),Do(!1,["boolean","string"],((Za={})[s]=!0,Za)),Do(!1,["boolean"],((tu={})[s]=!0,tu));var nu=u[0],ou=u[1],iu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},au={headers:{configurable:!0}};au.headers.set=function(t){this.extraHeader=t},iu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Qn({},{_cb:Ei()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Qn({},{method:nu,params:o},e))},iu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},iu.prototype.processJsonp=function(t){return zi(t)},iu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Jo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):zi(o)}),(function(t){throw e.cleanUp(),console.error(t),new $("Server side error",t)}))},iu.prototype.getHeaders=function(){return this.opts.enableAuth?Qn({},a,this.getAuthHeader(),this.extraHeader):Qn({},a,this.extraHeader)},iu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},iu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Qn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(R).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},iu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),wi(t)&&Xo(e)){var o=Ni(e);return!0===r?o:((n={})[t]=o,n)}throw new $i("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(R)},iu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Ti]=e,i[Pi]=r,!0===n)return i;if(wi(t))return(o={})[t]=i,o;throw new $i("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:ou}).then(R)},Object.defineProperties(iu.prototype,au);var uu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Mo(t)&&t.length>=2&&Reflect.apply(Ra.set,Ra,t),new q("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ra.get("endpoint")||[];ji(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ra.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ji(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=Ei();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ra.set,Ra,e)},r.jsonqlEndpoint.get=function(){var t=Ra.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ra.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ia.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=ru)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Fi(t))throw new q("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Fi(this.opts.contract)?this.opts.contract:Ra.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(iu))),cu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},su={hostname:Do([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Do("jsonql",["string"]),loginHandlerName:Do("login",["string"]),logoutHandlerName:Do("logout",["string"]),enableJsonp:Do(!1,["boolean"]),enableAuth:Do(!1,["boolean"]),useJwt:Do(!0,["boolean"]),useLocalstorage:Do(!0,["boolean"]),storageKey:Do("storageKey",["string"]),authKey:Do("authKey",["string"]),contractExpired:Do(0,["number"]),keepContract:Do(!0,["boolean"]),exposeContract:Do(!1,["boolean"]),showContractDesc:Do(!1,["boolean"]),contractKey:Do(!1,["boolean"]),contractKeyName:Do("X-JSONQL-CV-KEY",["string"]),enableTimeout:Do(!1,["boolean"]),timeout:Do(5e3,["number"]),returnInstance:Do(!1,["boolean"]),allowReturnRawToken:Do(!1,["boolean"]),debugOn:Do(!1,["boolean"])};var fu=new WeakMap,lu=new WeakMap;var pu=function(){this.__suspend__=null,this.queueStore=new Set},hu={$suspend:{configurable:!0},$queues:{configurable:!0}};hu.$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)},pu.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__},hu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},pu.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(pu.prototype,hu);var du=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){fu.set(this,t)},r.normalStore.get=function(){return fu.get(this)},r.lazyStore.set=function(t){lu.set(this,t)},r.lazyStore.get=function(){return lu.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}(pu));function vu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ho(t,su,cu)}(e),i=new uu(o,t),a=Ri(i,n),u=(r=o.debugOn,new du({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ui(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),vu(o,t)}})); -//# sourceMappingURL=jsonql-client.static.js.map diff --git a/packages/http-client/dist/jsonql-client.static.js.map b/packages/http-client/dist/jsonql-client.static.js.map deleted file mode 100644 index 1df846ab..00000000 --- a/packages/http-client/dist/jsonql-client.static.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsonql-client.static.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&q(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&q(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||q(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&q(t)==_t}var jt=Object.prototype,Ot=jt.hasOwnProperty,St=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&Ot.call(t,"callee")&&!St.call(t,"callee")};var kt="object"==typeof exports&&exports&&!exports.nodeType&&exports,At=kt&&"object"==typeof module&&module&&!module.nodeType&&module,xt=At&&At.exports===kt?m.Buffer:void 0,Tt=(xt?xt.isBuffer:void 0)||function(){return!1},Pt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?Pt:e)&&("number"==r||"symbol"!=r&&qt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,It="object"==typeof exports&&exports&&!exports.nodeType&&exports,Rt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=Rt&&Rt.exports===It&&y.process,Mt=function(){try{var t=Rt&&Rt.require&&Rt.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Dt=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[q(t)]},Ht=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&Tt(t),i=!r&&!n&&!o&&Dt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Oe="__lodash_hash_undefined__",Se=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var ke="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Sn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(On);function xn(t,e){return An(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Tn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Xn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Qn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Xn(t))?!Qn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Oo=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Xn(t)):return!Qn(e,r);default:return!Yn(t)(e.arg)}},So=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?So(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!In(e)&&!(r.type.length>r.type.filter((function(e){return Oo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Oo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},ko=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ao=function(t){return!In(t)};function xo(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return xr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function To(t,e){return qn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Hn]&&Ao(t[r])?Pn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Dn]=e[Dn],o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function Po(t,e){var r=function(t,e){var r=xo(t,e);return{pristineValues:qn(Fn(e,(function(t,e){return ko(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!ko(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[To(n,r.checkAgainstAppProps),o]}var qo=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Dn]=qo(t[Dn]),r[Hn]=t[Hn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}var zo=function(t,e){return Promise.resolve(Po(t,e))};function Fo(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=qn(r,No(e));return Pn(o,n)}(t,n)})).then((function(t){return Pn({},t,r)}))}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),Wn(n)&&(a[f]=n),te(o)&&(a[p]=o),ct(i)&&(a[h]=i),a}var Ro=Jn,Jo=Wn,Mo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Uo=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Do=function(t){return function(e,r,n){return void 0===n&&(n={}),Fo(e,r,n,t)}}(Eo),Ho=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ti=[fi,di],Pi=[mi,wi,ki,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=xi.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=xi.compress(this._serialize(r));t(e,n)}}}],qi=ai.createStore(Ti,Pi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function Ni(t){return $i().getItem(t)}var zi=[{name:"sessionStorage",read:Ni,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(Ni(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ii=ai.createStore(zi,Fi),Ri=qi,Ji=Ii,Mi=Array.isArray,Ui=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Di="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Hi="object"==typeof self&&self&&self.Object===Object&&self,Li=(Di||Hi||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Xi="[object Undefined]",Qi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Xi:Wi:Qi&&Qi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Oa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Sa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Sa(e)?Promise.resolve(e):t.getContract()},ka="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidCharacterError";var xa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Aa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ka.indexOf(n);return a};var Ta=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(xa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return xa(e)}};function Pa(t){this.message=t}Pa.prototype=new Error,Pa.prototype.name="InvalidTokenError";var qa=function(t,e){if("string"!=typeof t)throw new Pa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ta(t.split(".")[r]))}catch(t){throw new Pa("Invalid token specified: "+t.message)}},Ca=Pa;qa.InvalidTokenError=Ca;var $a,Na,za,Fa,Ia,Ra,Ja,Ma,Ua,Da=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ha(t){if(Ro(t))return function(t){var e=t.iat||Da(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(qa(t));throw new vo("Token must be a string!")}Uo("HS256",["string"]),Uo(!1,["boolean","number","string"],(($a={})[h]="exp",$a[s]=!0,$a)),Uo(!1,["boolean","number","string"],((Na={})[h]="nbf",Na[s]=!0,Na)),Uo(!1,["boolean","string"],((za={})[h]="iss",za[s]=!0,za)),Uo(!1,["boolean","string"],((Fa={})[h]="sub",Fa[s]=!0,Fa)),Uo(!1,["boolean","string"],((Ia={})[h]="iss",Ia[s]=!0,Ia)),Uo(!1,["boolean"],((Ra={})[s]=!0,Ra)),Uo(!1,["boolean","string"],((Ja={})[s]=!0,Ja)),Uo(!1,["boolean","string"],((Ma={})[s]=!0,Ma)),Uo(!1,["boolean"],((Ua={})[s]=!0,Ua));var La=u[0],Ba=u[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Pn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Pn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Pn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Oa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Ro(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Oa(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Pn({},a,this.getAuthHeader(),this.extraHeader):Pn({},a,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Pn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(_o)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Jo(t)&&t.length>=2&&Reflect.apply(Ri.set,Ri,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ri.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ri.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ri.set,Ri,e)},r.jsonqlEndpoint.get=function(){var t=Ri.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ri.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ji.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ha)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Sa(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Sa(this.opts.contract)?this.opts.contract:Ri.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t){return j(t)?t:[t]},Wa=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,Ya(t))}),Reflect.apply(t,null,r))}};function Xa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Qa=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}},Za=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(wo)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},tu=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Mo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(wo)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},eu=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var ru=function(t,e,r,n){var o=function(t,e,r,n){return Wa(Za,tu,eu)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.getContract()}),o.eventEmitter=n,o.version="1.4.0",o},nu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ou={hostname:Uo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Uo("jsonql",["string"]),loginHandlerName:Uo("login",["string"]),logoutHandlerName:Uo("logout",["string"]),enableJsonp:Uo(!1,["boolean"]),enableAuth:Uo(!1,["boolean"]),useJwt:Uo(!0,["boolean"]),useLocalstorage:Uo(!0,["boolean"]),storageKey:Uo("storageKey",["string"]),authKey:Uo("authKey",["string"]),contractExpired:Uo(0,["number"]),keepContract:Uo(!0,["boolean"]),exposeContract:Uo(!1,["boolean"]),showContractDesc:Uo(!1,["boolean"]),contractKey:Uo(!1,["boolean"]),contractKeyName:Uo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Uo(!1,["boolean"]),timeout:Uo(5e3,["number"]),returnInstance:Uo(!1,["boolean"]),allowReturnRawToken:Uo(!1,["boolean"]),debugOn:Uo(!1,["boolean"])};function iu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Do(t,ou,nu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return ru(r,n,e,t)}))}))}var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));function lu(t,e){var r;return iu((r=e.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}return function(t){return void 0===t&&(t={}),lu(o,t)}})); -//# sourceMappingURL=jsonql-client.umd.js.map diff --git a/packages/http-client/dist/jsonql-client.umd.js.map b/packages/http-client/dist/jsonql-client.umd.js.map deleted file mode 100644 index afdcdd37..00000000 --- a/packages/http-client/dist/jsonql-client.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsonql-client.umd.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i Date: Mon, 28 Oct 2019 22:19:15 +0800 Subject: [PATCH 43/44] Fix the chainFns parameter problem --- packages/http-client/rollup.config.js | 2 +- packages/http-client/src/core/methods-generator.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/http-client/rollup.config.js b/packages/http-client/rollup.config.js index dcedba3f..a73ef6dc 100644 --- a/packages/http-client/rollup.config.js +++ b/packages/http-client/rollup.config.js @@ -55,7 +55,7 @@ let external = [ let moduleName = 'jsonqlClient' let sourceFile = 'index.js' let distFile = 'core.js' -switch (env) { +switch (target) { case 'BROWSER': sourceFile = 'full.js' distFile = join('dist', 'jsonql-client.umd.js') diff --git a/packages/http-client/src/core/methods-generator.js b/packages/http-client/src/core/methods-generator.js index 55644fea..4bfe2731 100644 --- a/packages/http-client/src/core/methods-generator.js +++ b/packages/http-client/src/core/methods-generator.js @@ -64,7 +64,7 @@ const createQueryMethods = (obj, jsonqlInstance, ee, config, contract) => { }) } obj.query = query; - return { obj, jsonqlInstance, ee, config, contract } + return [ obj, jsonqlInstance, ee, config, contract ] } /** @@ -95,7 +95,7 @@ const createMutationMethods = (obj, jsonqlInstance, ee, config, contract) => { }) } obj.mutation = mutation; - return { obj, jsonqlInstance, ee, config, contract } + return [ obj, jsonqlInstance, ee, config, contract ] } /** -- Gitee From 3e17e320b4d8c7640ccb19ccb9f2cd6f817f2cc1 Mon Sep 17 00:00:00 2001 From: joelchu Date: Mon, 28 Oct 2019 22:20:34 +0800 Subject: [PATCH 44/44] new build successful --- packages/http-client/core.js | 9316 +---------------- packages/http-client/core.js.map | 2 +- .../http-client/dist/jsonql-client.static.js | 2 + .../dist/jsonql-client.static.js.map | 1 + .../http-client/dist/jsonql-client.umd.js | 2 + .../http-client/dist/jsonql-client.umd.js.map | 1 + packages/http-client/static.js | 2 +- packages/http-client/static.js.map | 2 +- 8 files changed, 10 insertions(+), 9318 deletions(-) create mode 100644 packages/http-client/dist/jsonql-client.static.js create mode 100644 packages/http-client/dist/jsonql-client.static.js.map create mode 100644 packages/http-client/dist/jsonql-client.umd.js create mode 100644 packages/http-client/dist/jsonql-client.umd.js.map diff --git a/packages/http-client/core.js b/packages/http-client/core.js index 1c68b846..b23a87e8 100644 --- a/packages/http-client/core.js +++ b/packages/http-client/core.js @@ -1,9316 +1,2 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.jsonqlClient = factory()); -}(this, (function () { 'use strict'; - - // the core stuff to id if it's calling with jsonql - var DATA_KEY = 'data'; - var ERROR_KEY = 'error'; - - var JSONQL_PATH = 'jsonql'; - // according to the json query spec - var CONTENT_TYPE = 'application/vnd.api+json'; - var CHARSET = 'charset=utf-8'; - var DEFAULT_HEADER = { - 'Accept': CONTENT_TYPE, - 'Content-Type': [ CONTENT_TYPE, CHARSET ].join(';') - }; - - // export const INDEX = 'index'; use INDEX_KEY instead - var DEFAULT_TYPE = 'any'; - // new jsonp - var JSONP_CALLBACK_NAME = 'jsonqlJsonpCallback'; - - // methods allow - var API_REQUEST_METHODS = ['POST', 'PUT']; - // for contract-cli - var KEY_WORD = 'continue'; - - var TYPE_KEY = 'type'; - var OPTIONAL_KEY = 'optional'; - var ENUM_KEY = 'enumv'; // need to change this because enum is a reserved word - var ARGS_KEY = 'args'; - var CHECKER_KEY = 'checker'; - var ALIAS_KEY = 'alias'; - var LOGIN_NAME = 'login'; - var ISSUER_NAME = LOGIN_NAME; // legacy issue need to replace them later - var LOGOUT_NAME = 'logout'; - - var AUTH_HEADER = 'Authorization'; - var BEARER = 'Bearer'; - - // for client use @TODO need to clean this up some of them are not in use - var CREDENTIAL_STORAGE_KEY = 'credential'; - var CLIENT_STORAGE_KEY = 'storageKey'; - var CLIENT_AUTH_KEY = 'authKey'; - // contract key - var CONTRACT_KEY_NAME = 'X-JSONQL-CV-KEY'; - var SHOW_CONTRACT_DESC_PARAM = {desc: 'y'}; - - var OR_SEPERATOR = '|'; - - var STRING_TYPE = 'string'; - var BOOLEAN_TYPE = 'boolean'; - var ARRAY_TYPE = 'array'; - var OBJECT_TYPE = 'object'; - - var NUMBER_TYPE = 'number'; - var ARRAY_TYPE_LFT = 'array.<'; - var ARRAY_TYPE_RGT = '>'; - - var NO_ERROR_MSG = 'No message'; - var NO_STATUS_CODE = -1; - var HSA_ALGO = 'HS256'; - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - var global$1 = (typeof global !== "undefined" ? global : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}); - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global$1 == 'object' && global$1 && global$1.Object === Object && global$1; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Built-in value references. */ - var Symbol = root.Symbol; - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** Used for built-in method references. */ - var objectProto = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString = objectProto.toString; - - /** Built-in value references. */ - var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - - /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; - } - - /** Used for built-in method references. */ - var objectProto$1 = Object.prototype; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString$1 = objectProto$1.toString; - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString(value) { - return nativeObjectToString$1.call(value); - } - - /** `Object#toString` result references. */ - var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - - /** Built-in value references. */ - var symToStringTag$1 = Symbol ? Symbol.toStringTag : undefined; - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag$1 && symToStringTag$1 in Object(value)) - ? getRawTag(value) - : objectToString(value); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return value != null && typeof value == 'object'; - } - - /** `Object#toString` result references. */ - var symbolTag = '[object Symbol]'; - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); - } - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0; - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - - /** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - - /** Used to compose unicode capture groups. */ - var rsZWJ = '\\u200d'; - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** Used to compose unicode character classes. */ - 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'; - - /** Used to compose unicode capture groups. */ - var 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'; - - /** Used to compose unicode regexes. */ - var 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('|') + ')'; - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g; - - /** - * Removes leading and trailing whitespace or specified characters from `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to trim. - * @param {string} [chars=whitespace] The characters to trim. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the trimmed string. - * @example - * - * _.trim(' abc '); - * // => 'abc' - * - * _.trim('-_-abc-_-', '_-'); - * // => 'abc' - * - * _.map([' foo ', ' bar '], _.trim); - * // => ['foo', 'bar'] - */ - function trim(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined)) { - return string.replace(reTrim, ''); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), - chrSymbols = stringToArray(chars), - start = charsStartIndex(strSymbols, chrSymbols), - end = charsEndIndex(strSymbols, chrSymbols) + 1; - - return castSlice(strSymbols, start, end).join(''); - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** `Object#toString` result references. */ - var boolTag = '[object Boolean]'; - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); - } - - /** `Object#toString` result references. */ - var numberTag = '[object Number]'; - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN$1(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** `Object#toString` result references. */ - var stringTag = '[object String]'; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** Built-in value references. */ - var getPrototype = overArg(Object.getPrototypeOf, Object); - - /** `Object#toString` result references. */ - var objectTag = '[object Object]'; - - /** Used for built-in method references. */ - var funcProto = Function.prototype, - objectProto$2 = Object.prototype; - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty$1 = objectProto$2.hasOwnProperty; - - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty$1.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; - } - - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]'; - - /** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - - /** Used for built-in method references. */ - var objectProto$3 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$2 = objectProto$3.hasOwnProperty; - - /** Built-in value references. */ - var propertyIsEnumerable = objectProto$3.propertyIsEnumerable; - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); - }; - - /** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ - function stubFalse() { - return false; - } - - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** Built-in value references. */ - var Buffer = moduleExports ? root.Buffer : undefined; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** Used as references for various `Number` constants. */ - var MAX_SAFE_INTEGER = 9007199254740991; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** Used as references for various `Number` constants. */ - var MAX_SAFE_INTEGER$1 = 9007199254740991; - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1; - } - - /** `Object#toString` result references. */ - var argsTag$1 = '[object Arguments]', - arrayTag = '[object Array]', - boolTag$1 = '[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]'; - - var 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]'; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag$1] = - 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] = false; - - /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - - /** Detect free variable `exports`. */ - var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1; - - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports$1 && freeGlobal.process; - - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} - }()); - - /* Node.js helper references. */ - var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - - /** Used for built-in method references. */ - var objectProto$4 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$3 = objectProto$4.hasOwnProperty; - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty$3.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; - } - - /** Used for built-in method references. */ - var objectProto$5 = Object.prototype; - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5; - - return value === proto; - } - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeKeys = overArg(Object.keys, Object); - - /** Used for built-in method references. */ - var objectProto$6 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$4 = objectProto$6.hasOwnProperty; - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty$4.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); - } - - /** `Object#toString` result references. */ - var asyncTag = '[object AsyncFunction]', - funcTag$1 = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag; - } - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** Used for built-in method references. */ - var arrayProto = Array.prototype; - - /** Built-in value references. */ - var splice = arrayProto.splice; - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - this.size = 0; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** Used to detect overreaching core-js shims. */ - var coreJsData = root['__core-js_shared__']; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** Used for built-in method references. */ - var funcProto$1 = Function.prototype; - - /** Used to resolve the decompiled source of functions. */ - var funcToString$1 = funcProto$1.toString; - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString$1.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used for built-in method references. */ - var funcProto$2 = Function.prototype, - objectProto$7 = Object.prototype; - - /** Used to resolve the decompiled source of functions. */ - var funcToString$2 = funcProto$2.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty$5 = objectProto$7.hasOwnProperty; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString$2.call(hasOwnProperty$5).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /* Built-in method references that are verified to be native. */ - var Map$1 = getNative(root, 'Map'); - - /* Built-in method references that are verified to be native. */ - var nativeCreate = getNative(Object, 'create'); - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; - } - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used for built-in method references. */ - var objectProto$8 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$6 = objectProto$8.hasOwnProperty; - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty$6.call(data, key) ? data[key] : undefined; - } - - /** Used for built-in method references. */ - var objectProto$9 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$7 = objectProto$9.hasOwnProperty; - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty$7.call(data, key); - } - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED$1 = '__lodash_hash_undefined__'; - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value; - return this; - } - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map$1 || ListCache), - 'string': new Hash - }; - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; - } - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map$1 || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED$2 = '__lodash_hash_undefined__'; - - /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED$2); - return this; - } - - /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ - function setCacheHas(value) { - return this.__data__.has(value); - } - - /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } - } - - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; - } - - /** Built-in value references. */ - var Uint8Array$1 = root.Uint8Array; - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG$1 = 1, - COMPARE_UNORDERED_FLAG$1 = 2; - - /** `Object#toString` result references. */ - var boolTag$2 = '[object Boolean]', - dateTag$1 = '[object Date]', - errorTag$1 = '[object Error]', - mapTag$1 = '[object Map]', - numberTag$2 = '[object Number]', - regexpTag$1 = '[object RegExp]', - setTag$1 = '[object Set]', - stringTag$2 = '[object String]', - symbolTag$1 = '[object Symbol]'; - - var arrayBufferTag$1 = '[object ArrayBuffer]', - dataViewTag$1 = '[object DataView]'; - - /** Used to convert symbols to primitives and strings. */ - var symbolProto$1 = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : undefined; - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag$1: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag$1: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) { - return false; - } - return true; - - case boolTag$2: - case dateTag$1: - case numberTag$2: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag$1: - return object.name == other.name && object.message == other.message; - - case regexpTag$1: - case stringTag$2: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag$1: - var convert = mapToArray; - - case setTag$1: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG$1; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag$1: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ - function stubArray() { - return []; - } - - /** Used for built-in method references. */ - var objectProto$a = Object.prototype; - - /** Built-in value references. */ - var propertyIsEnumerable$1 = objectProto$a.propertyIsEnumerable; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeGetSymbols = Object.getOwnPropertySymbols; - - /** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable$1.call(object, symbol); - }); - }; - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG$2 = 1; - - /** Used for built-in method references. */ - var objectProto$b = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$8 = objectProto$b.hasOwnProperty; - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty$8.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; - } - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(root, 'DataView'); - - /* Built-in method references that are verified to be native. */ - var Promise$1 = getNative(root, 'Promise'); - - /* Built-in method references that are verified to be native. */ - var Set$1 = getNative(root, 'Set'); - - /* Built-in method references that are verified to be native. */ - var WeakMap$1 = getNative(root, 'WeakMap'); - - /** `Object#toString` result references. */ - var mapTag$2 = '[object Map]', - objectTag$2 = '[object Object]', - promiseTag = '[object Promise]', - setTag$2 = '[object Set]', - weakMapTag$1 = '[object WeakMap]'; - - var dataViewTag$2 = '[object DataView]'; - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map$1), - promiseCtorString = toSource(Promise$1), - setCtorString = toSource(Set$1), - weakMapCtorString = toSource(WeakMap$1); - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$2) || - (Map$1 && getTag(new Map$1) != mapTag$2) || - (Promise$1 && getTag(Promise$1.resolve()) != promiseTag) || - (Set$1 && getTag(new Set$1) != setTag$2) || - (WeakMap$1 && getTag(new WeakMap$1) != weakMapTag$1)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag$2 ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag$2; - case mapCtorString: return mapTag$2; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag$2; - case weakMapCtorString: return weakMapTag$1; - } - } - return result; - }; - } - - var getTag$1 = getTag; - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG$3 = 1; - - /** `Object#toString` result references. */ - var argsTag$2 = '[object Arguments]', - arrayTag$1 = '[object Array]', - objectTag$3 = '[object Object]'; - - /** Used for built-in method references. */ - var objectProto$c = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$9 = objectProto$c.hasOwnProperty; - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag$1 : getTag$1(object), - othTag = othIsArr ? arrayTag$1 : getTag$1(other); - - objTag = objTag == argsTag$2 ? objectTag$3 : objTag; - othTag = othTag == argsTag$2 ? objectTag$3 : othTag; - - var objIsObj = objTag == objectTag$3, - othIsObj = othTag == objectTag$3, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) { - var objIsWrapped = objIsObj && hasOwnProperty$9.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty$9.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG$4 = 1, - COMPARE_UNORDERED_FLAG$2 = 2; - - /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) - : result - )) { - return false; - } - } - } - return true; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } - - /** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; - } - - /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** Error message constants. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Expose `MapCache`. - memoize.Cache = MapCache; - - /** Used as the maximum memoize cache size. */ - var MAX_MEMOIZE_SIZE = 500; - - /** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ - function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; - } - - /** Used to match property names within property paths. */ - var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - - /** Used as references for various `Number` constants. */ - var INFINITY$1 = 1 / 0; - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result; - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; - } - - /** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHasIn(object, key) { - return object != null && key in Object(object); - } - - /** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); - } - - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG$5 = 1, - COMPARE_UNORDERED_FLAG$3 = 2; - - /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3); - }; - } - - /** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ - function identity(value) { - return value; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - - /** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ - function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); - } - - var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} - }()); - - /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } - } - - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** Detect free variable `exports`. */ - var freeExports$2 = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule$2 = freeExports$2 && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2; - - /** Built-in value references. */ - var Buffer$1 = moduleExports$2 ? root.Buffer : undefined, - allocUnsafe = Buffer$1 ? Buffer$1.allocUnsafe : undefined; - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** Built-in value references. */ - var objectCreate = Object.create; - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; - }()); - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; - } - - /** Used for built-in method references. */ - var objectProto$d = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$a = objectProto$d.hasOwnProperty; - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty$a.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** Used for built-in method references. */ - var objectProto$e = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$b = objectProto$e.hasOwnProperty; - - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty$b.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); - } - - /** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeMax = Math.max; - - /** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; - } - - /** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ - function constant(value) { - return function() { - return value; - }; - } - - /** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); - }; - - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 800, - HOT_SPAN = 16; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeNow = Date.now; - - /** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ - function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; - } - - /** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var setToString = shortOut(baseSetToString); - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - /** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee) { - var result = {}; - iteratee = baseIteratee(iteratee); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; - } - - /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ - function mapKeys(object, iteratee) { - var result = {}; - iteratee = baseIteratee(iteratee); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, iteratee(value, key, object), value); - }); - return result; - } - - /** Error message constants. */ - var FUNC_ERROR_TEXT$1 = 'Expected a function'; - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT$1); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - - /** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - - /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ - function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; - } - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeGetSymbols$1 = Object.getOwnPropertySymbols; - - /** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbolsIn = !nativeGetSymbols$1 ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; - - /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = baseIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); - } - - /** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - function omitBy(object, predicate) { - return pickBy(object, negate(baseIteratee(predicate))); - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; - } - - /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate) { - return baseFindKey(object, baseIteratee(predicate), baseForOwn); - } - - /** - * Check several parameter that there is something in the param - * @param {*} param input - * @return {boolean} - */ - - function notEmpty (a) { - if (isArray(a)) { - return true; - } - return a !== undefined && a !== null && trim(a) !== ''; - } - - // validator numbers - /** - * @2015-05-04 found a problem if the value is a number like string - * it will pass, so add a check if it's string before we pass to next - * @param {number} value expected value - * @return {boolean} true if OK - */ - var checkIsNumber = function(value) { - return isString(value) ? false : !isNaN$1( parseFloat(value) ) - }; - - // validate string type - /** - * @param {string} value expected value - * @return {boolean} true if OK - */ - var checkIsString = function(value) { - return (trim(value) !== '') ? isString(value) : false; - }; - - // check for boolean - /** - * @param {boolean} value expected - * @return {boolean} true if OK - */ - var checkIsBoolean = function(value) { - return isBoolean(value); - }; - - // validate any thing only check if there is something - /** - * @param {*} value the value - * @param {boolean} [checkNull=true] strict check if there is null value - * @return {boolean} true is OK - */ - var checkIsAny = function(value, checkNull) { - if ( checkNull === void 0 ) checkNull = true; - - if (!isUndefined(value) && value !== '' && trim(value) !== '') { - if (checkNull === false || (checkNull === true && !isNull(value))) { - return true; - } - } - return false; - }; - - // Good practice rule - No magic number - - var 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)"; - var PARAMS_NOT_ARRAY_ERR = "params is not an array! Did something gone wrong when you generate the contract.json?"; - var EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!'; - // @TODO the jsdoc return array. and we should also allow array syntax - var DEFAULT_TYPE$1 = DEFAULT_TYPE; - var ARRAY_TYPE_LFT$1 = ARRAY_TYPE_LFT; - var ARRAY_TYPE_RGT$1 = ARRAY_TYPE_RGT; - - var TYPE_KEY$1 = TYPE_KEY; - var OPTIONAL_KEY$1 = OPTIONAL_KEY; - var ENUM_KEY$1 = ENUM_KEY; - var ARGS_KEY$1 = ARGS_KEY; - var CHECKER_KEY$1 = CHECKER_KEY; - var ALIAS_KEY$1 = ALIAS_KEY; - - var ARRAY_TYPE$1 = ARRAY_TYPE; - var OBJECT_TYPE$1 = OBJECT_TYPE; - var STRING_TYPE$1 = STRING_TYPE; - var BOOLEAN_TYPE$1 = BOOLEAN_TYPE; - var NUMBER_TYPE$1 = NUMBER_TYPE; - var KEY_WORD$1 = KEY_WORD; - var OR_SEPERATOR$1 = OR_SEPERATOR; - - // not actually in use - // export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES; - - // primitive types - - /** - * this is a wrapper method to call different one based on their type - * @param {string} type to check - * @return {function} a function to handle the type - */ - var combineFn = function(type) { - switch (type) { - case NUMBER_TYPE$1: - return checkIsNumber; - case STRING_TYPE$1: - return checkIsString; - case BOOLEAN_TYPE$1: - return checkIsBoolean; - default: - return checkIsAny; - } - }; - - // validate array type - - /** - * @param {array} value expected - * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well - * @return {boolean} true if OK - */ - var checkIsArray = function(value, type) { - if ( type === void 0 ) type=''; - - if (isArray(value)) { - if (type === '' || trim(type)==='') { - return true; - } - // we test it in reverse - // @TODO if the type is an array (OR) then what? - // we need to take into account this could be an array - var c = value.filter(function (v) { return !combineFn(type)(v); }); - return !(c.length > 0) - } - return false; - }; - - /** - * check if it matches the array. pattern - * @param {string} type - * @return {boolean|array} false means NO, always return array - */ - var isArrayLike$1 = function(type) { - // @TODO could that have something like array<> instead of array.<>? missing the dot? - // because type script is Array without the dot - if (type.indexOf(ARRAY_TYPE_LFT$1) > -1 && type.indexOf(ARRAY_TYPE_RGT$1) > -1) { - var _type = type.replace(ARRAY_TYPE_LFT$1, '').replace(ARRAY_TYPE_RGT$1, ''); - if (_type.indexOf(OR_SEPERATOR$1)) { - return _type.split(OR_SEPERATOR$1) - } - return [_type] - } - return false; - }; - - /** - * we might encounter something like array. then we need to take it apart - * @param {object} p the prepared object for processing - * @param {string|array} type the type came from - * @return {boolean} for the filter to operate on - */ - var arrayTypeHandler = function(p, type) { - var arg = p.arg; - // need a special case to handle the OR type - // we need to test the args instead of the type(s) - if (type.length > 1) { - return !arg.filter(function (v) { return ( - !(type.length > type.filter(function (t) { return !combineFn(t)(v); }).length) - ); }).length; - } - // type is array so this will be or! - return type.length > type.filter(function (t) { return !checkIsArray(arg, t); }).length; - }; - - // validate object type - /** - * @TODO if provide with the keys then we need to check if the key:value type as well - * @param {object} value expected - * @param {array} [keys=null] if it has the keys array to compare as well - * @return {boolean} true if OK - */ - var checkIsObject = function(value, keys) { - if ( keys === void 0 ) keys=null; - - if (isPlainObject(value)) { - if (!keys) { - return true; - } - if (checkIsArray(keys)) { - // please note we DON'T care if some is optional - // plese refer to the contract.json for the keys - return !keys.filter(function (key) { - var _value = value[key.name]; - return !(key.type.length > key.type.filter(function (type) { - var tmp; - if (!isUndefined(_value)) { - if ((tmp = isArrayLike$1(type)) !== false) { - return !arrayTypeHandler({arg: _value}, tmp) - // return tmp.filter(t => !checkIsArray(_value, t)).length; - // @TODO there might be an object within an object with keys as well :S - } - return !combineFn(type)(_value) - } - return true; - }).length) - }).length; - } - } - return false; - }; - - /** - * fold this into it's own function to handler different object type - * @param {object} p the prepared object for process - * @return {boolean} - */ - var objectTypeHandler = function(p) { - var arg = p.arg; - var param = p.param; - var _args = [arg]; - if (Array.isArray(param.keys) && param.keys.length) { - _args.push(param.keys); - } - // just simple check - return checkIsObject.apply(null, _args) - }; - - /** - * This is a custom error to throw when server throw a 406 - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ - var Jsonql406Error = /*@__PURE__*/(function (Error) { - function Jsonql406Error() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - // We can't access the static name from an instance - // but we can do it like this - this.className = Jsonql406Error.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, Jsonql406Error); - } - } - - if ( Error ) Jsonql406Error.__proto__ = Error; - Jsonql406Error.prototype = Object.create( Error && Error.prototype ); - Jsonql406Error.prototype.constructor = Jsonql406Error; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 406; - }; - - staticAccessors.name.get = function () { - return 'Jsonql406Error'; - }; - - Object.defineProperties( Jsonql406Error, staticAccessors ); - - return Jsonql406Error; - }(Error)); - - /** - * This is a custom error to throw when server throw a 500 - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ - var Jsonql500Error = /*@__PURE__*/(function (Error) { - function Jsonql500Error() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = Jsonql500Error.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, Jsonql500Error); - } - } - - if ( Error ) Jsonql500Error.__proto__ = Error; - Jsonql500Error.prototype = Object.create( Error && Error.prototype ); - Jsonql500Error.prototype.constructor = Jsonql500Error; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 500; - }; - - staticAccessors.name.get = function () { - return 'Jsonql500Error'; - }; - - Object.defineProperties( Jsonql500Error, staticAccessors ); - - return Jsonql500Error; - }(Error)); - - /** - * This is a custom error to throw when pass credential but fail - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ - var JsonqlAuthorisationError = /*@__PURE__*/(function (Error) { - function JsonqlAuthorisationError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlAuthorisationError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlAuthorisationError); - } - } - - if ( Error ) JsonqlAuthorisationError.__proto__ = Error; - JsonqlAuthorisationError.prototype = Object.create( Error && Error.prototype ); - JsonqlAuthorisationError.prototype.constructor = JsonqlAuthorisationError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 401; - }; - - staticAccessors.name.get = function () { - return 'JsonqlAuthorisationError'; - }; - - Object.defineProperties( JsonqlAuthorisationError, staticAccessors ); - - return JsonqlAuthorisationError; - }(Error)); - - /** - * This is a custom error when not supply the credential and try to get contract - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ - var JsonqlContractAuthError = /*@__PURE__*/(function (Error) { - function JsonqlContractAuthError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlContractAuthError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlContractAuthError); - } - } - - if ( Error ) JsonqlContractAuthError.__proto__ = Error; - JsonqlContractAuthError.prototype = Object.create( Error && Error.prototype ); - JsonqlContractAuthError.prototype.constructor = JsonqlContractAuthError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 401; - }; - - staticAccessors.name.get = function () { - return 'JsonqlContractAuthError'; - }; - - Object.defineProperties( JsonqlContractAuthError, staticAccessors ); - - return JsonqlContractAuthError; - }(Error)); - - /** - * This is a custom error to throw when the resolver throw error and capture inside the middleware - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ - var JsonqlResolverAppError = /*@__PURE__*/(function (Error) { - function JsonqlResolverAppError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlResolverAppError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlResolverAppError); - } - } - - if ( Error ) JsonqlResolverAppError.__proto__ = Error; - JsonqlResolverAppError.prototype = Object.create( Error && Error.prototype ); - JsonqlResolverAppError.prototype.constructor = JsonqlResolverAppError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 500; - }; - - staticAccessors.name.get = function () { - return 'JsonqlResolverAppError'; - }; - - Object.defineProperties( JsonqlResolverAppError, staticAccessors ); - - return JsonqlResolverAppError; - }(Error)); - - /** - * some time it's hard to tell where the error is throw from - * because client server throw the same, therefore this util fn - * to add a property to the error object to tell if it's throw - * from client or server - * - */ - - var isBrowser = function () { - try { - if (window || document) { - return true; - } - } catch(e) {} - return false; - }; - - var isNode = function () { - try { - if (!isBrowser() && global$1) { - return true; - } - } catch(e) {} - return false; - }; - - function whereAmI() { - if (isBrowser()) { - return 'browser' - } - if (isNode()) { - return 'node' - } - return 'unknown' - } - - // The base Error of all - - var JsonqlBaseError = /*@__PURE__*/(function (Error) { - function JsonqlBaseError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - } - - if ( Error ) JsonqlBaseError.__proto__ = Error; - JsonqlBaseError.prototype = Object.create( Error && Error.prototype ); - JsonqlBaseError.prototype.constructor = JsonqlBaseError; - - JsonqlBaseError.where = function where () { - return whereAmI() - }; - - return JsonqlBaseError; - }(Error)); - - /** - * This is a custom error to throw when could not find the resolver - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ - var JsonqlResolverNotFoundError = /*@__PURE__*/(function (JsonqlBaseError) { - function JsonqlResolverNotFoundError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - JsonqlBaseError.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlResolverNotFoundError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlResolverNotFoundError); - } - } - - if ( JsonqlBaseError ) JsonqlResolverNotFoundError.__proto__ = JsonqlBaseError; - JsonqlResolverNotFoundError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); - JsonqlResolverNotFoundError.prototype.constructor = JsonqlResolverNotFoundError; - - var staticAccessors = { statusCode: { configurable: true },name: { configurable: true } }; - - staticAccessors.statusCode.get = function () { - return 404; - }; - - staticAccessors.name.get = function () { - return 'JsonqlResolverNotFoundError'; - }; - - Object.defineProperties( JsonqlResolverNotFoundError, staticAccessors ); - - return JsonqlResolverNotFoundError; - }(JsonqlBaseError)); - - // this get throw from within the checkOptions when run through the enum failed - var JsonqlEnumError = /*@__PURE__*/(function (Error) { - function JsonqlEnumError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlEnumError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlEnumError); - } - } - - if ( Error ) JsonqlEnumError.__proto__ = Error; - JsonqlEnumError.prototype = Object.create( Error && Error.prototype ); - JsonqlEnumError.prototype.constructor = JsonqlEnumError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlEnumError'; - }; - - Object.defineProperties( JsonqlEnumError, staticAccessors ); - - return JsonqlEnumError; - }(Error)); - - // this will throw from inside the checkOptions - var JsonqlTypeError = /*@__PURE__*/(function (Error) { - function JsonqlTypeError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlTypeError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlTypeError); - } - } - - if ( Error ) JsonqlTypeError.__proto__ = Error; - JsonqlTypeError.prototype = Object.create( Error && Error.prototype ); - JsonqlTypeError.prototype.constructor = JsonqlTypeError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlTypeError'; - }; - - Object.defineProperties( JsonqlTypeError, staticAccessors ); - - return JsonqlTypeError; - }(Error)); - - // allow supply a custom checker function - // if that failed then we throw this error - var JsonqlCheckerError = /*@__PURE__*/(function (Error) { - function JsonqlCheckerError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - Error.apply(this, args); - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlCheckerError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlCheckerError); - } - } - - if ( Error ) JsonqlCheckerError.__proto__ = Error; - JsonqlCheckerError.prototype = Object.create( Error && Error.prototype ); - JsonqlCheckerError.prototype.constructor = JsonqlCheckerError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlCheckerError'; - }; - - Object.defineProperties( JsonqlCheckerError, staticAccessors ); - - return JsonqlCheckerError; - }(Error)); - - // custom validation error class - // when validaton failed - var JsonqlValidationError = /*@__PURE__*/(function (JsonqlBaseError) { - function JsonqlValidationError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - JsonqlBaseError.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlValidationError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlValidationError); - } - } - - if ( JsonqlBaseError ) JsonqlValidationError.__proto__ = JsonqlBaseError; - JsonqlValidationError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); - JsonqlValidationError.prototype.constructor = JsonqlValidationError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlValidationError'; - }; - - Object.defineProperties( JsonqlValidationError, staticAccessors ); - - return JsonqlValidationError; - }(JsonqlBaseError)); - - /** - * This is a custom error to throw whenever a error happen inside the jsonql - * This help us to capture the right error, due to the call happens in sequence - * @param {string} message to tell what happen - * @param {mixed} extra things we want to add, 500? - */ - var JsonqlError = /*@__PURE__*/(function (JsonqlBaseError) { - function JsonqlError() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - JsonqlBaseError.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlError); - // this.detail = this.stack; - } - } - - if ( JsonqlBaseError ) JsonqlError.__proto__ = JsonqlBaseError; - JsonqlError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); - JsonqlError.prototype.constructor = JsonqlError; - - var staticAccessors = { name: { configurable: true },statusCode: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlError'; - }; - - staticAccessors.statusCode.get = function () { - return NO_STATUS_CODE; - }; - - Object.defineProperties( JsonqlError, staticAccessors ); - - return JsonqlError; - }(JsonqlBaseError)); - - // this is from an example from Koa team to use for internal middleware ctx.throw - // but after the test the res.body part is unable to extract the required data - // I keep this one here for future reference - - var JsonqlServerError = /*@__PURE__*/(function (Error) { - function JsonqlServerError(statusCode, message) { - Error.call(this, message); - this.statusCode = statusCode; - this.className = JsonqlServerError.name; - } - - if ( Error ) JsonqlServerError.__proto__ = Error; - JsonqlServerError.prototype = Object.create( Error && Error.prototype ); - JsonqlServerError.prototype.constructor = JsonqlServerError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlServerError'; - }; - - Object.defineProperties( JsonqlServerError, staticAccessors ); - - return JsonqlServerError; - }(Error)); - - // server side - - var errors = /*#__PURE__*/Object.freeze({ - __proto__: null, - Jsonql406Error: Jsonql406Error, - Jsonql500Error: Jsonql500Error, - JsonqlAuthorisationError: JsonqlAuthorisationError, - JsonqlContractAuthError: JsonqlContractAuthError, - JsonqlResolverAppError: JsonqlResolverAppError, - JsonqlResolverNotFoundError: JsonqlResolverNotFoundError, - JsonqlEnumError: JsonqlEnumError, - JsonqlTypeError: JsonqlTypeError, - JsonqlCheckerError: JsonqlCheckerError, - JsonqlValidationError: JsonqlValidationError, - JsonqlError: JsonqlError, - JsonqlServerError: JsonqlServerError - }); - - // this will add directly to the then call in each http call - var JsonqlError$1 = JsonqlError; - - /** - * We can not just check something like result.data what if the result if false? - * @param {object} obj the result object - * @param {string} key we want to check if its exist or not - * @return {boolean} true on found - */ - var isKeyInObject = function (obj, key) { - var keys = Object.keys(obj); - return !!keys.filter(function (k) { return key === k; }).length; - }; - - /** - * It will ONLY have our own jsonql specific implement check - * @param {object} result the server return result - * @return {object} this will just throw error - */ - function clientErrorsHandler(result) { - if (isKeyInObject(result, 'error')) { - var error = result.error; - var className = error.className; - var name = error.name; - var errorName = className || name; - // just throw the whole thing back - var msg = error.message || NO_ERROR_MSG; - var detail = error.detail || error; - if (errorName && errors[errorName]) { - throw new errors[className](msg, detail) - } - throw new JsonqlError$1(msg, detail) - } - // pass through to the next - return result; - } - - /** - * this will put into generator call at the very end and catch - * the error throw from inside then throw again - * this is necessary because we split calls inside and the throw - * will not reach the actual client unless we do it this way - * @param {object} e Error - * @return {void} just throw - */ - function finalCatch(e) { - // this is a hack to get around the validateAsync not actually throw error - // instead it just rejected it with the array of failed parameters - if (Array.isArray(e)) { - // if we want the message then I will have to create yet another function - // to wrap this function to provide the name prop - throw new JsonqlValidationError('', e) - } - var msg = e.message || NO_ERROR_MSG; - var detail = e.detail || e; - switch (true) { - case e instanceof Jsonql406Error: - throw new Jsonql406Error(msg, detail) - case e instanceof Jsonql500Error: - throw new Jsonql500Error(msg, detail) - case e instanceof JsonqlAuthorisationError: - throw new JsonqlAuthorisationError(msg, detail) - case e instanceof JsonqlContractAuthError: - throw new JsonqlContractAuthError(msg, detail) - case e instanceof JsonqlResolverAppError: - throw new JsonqlResolverAppError(msg, detail) - case e instanceof JsonqlResolverNotFoundError: - throw new JsonqlResolverNotFoundError(msg, detail) - case e instanceof JsonqlEnumError: - throw new JsonqlEnumError(msg, detail) - case e instanceof JsonqlTypeError: - throw new JsonqlTypeError(msg, detail) - case e instanceof JsonqlCheckerError: - throw new JsonqlCheckerError(msg, detail) - case e instanceof JsonqlValidationError: - throw new JsonqlValidationError(msg, detail) - case e instanceof JsonqlServerError: - throw new JsonqlServerError(msg, detail) - default: - throw new JsonqlError(msg, detail) - } - } - - /** - * just a simple util for helping to debug - * @param {array} args arguments - * @return {void} - */ - function log() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - try { - if (window && window.console) { - Reflect.apply(console.log, console, args); - } - } catch(e) {} - } - - // move the index.js code here that make more sense to find where things are - // import debug from 'debug' - // const debugFn = debug('jsonql-params-validator:validator') - // also export this for use in other places - - /** - * We need to handle those optional parameter without a default value - * @param {object} params from contract.json - * @return {boolean} for filter operation false is actually OK - */ - var optionalHandler = function( params ) { - var arg = params.arg; - var param = params.param; - if (notEmpty(arg)) { - // debug('call optional handler', arg, params); - // loop through the type in param - return !(param.type.length > param.type.filter(function (type) { return validateHandler(type, params); } - ).length) - } - return false; - }; - - /** - * actually picking the validator - * @param {*} type for checking - * @param {*} value for checking - * @return {boolean} true on OK - */ - var validateHandler = function(type, value) { - var tmp; - switch (true) { - case type === OBJECT_TYPE$1: - // debugFn('call OBJECT_TYPE') - return !objectTypeHandler(value) - case type === ARRAY_TYPE$1: - // debugFn('call ARRAY_TYPE') - return !checkIsArray(value.arg) - // @TODO when the type is not present, it always fall through here - // so we need to find a way to actually pre-check the type first - // AKA check the contract.json map before running here - case (tmp = isArrayLike$1(type)) !== false: - // debugFn('call ARRAY_LIKE: %O', value) - return !arrayTypeHandler(value, tmp) - default: - return !combineFn(type)(value.arg) - } - }; - - /** - * it get too longer to fit in one line so break it out from the fn below - * @param {*} arg value - * @param {object} param config - * @return {*} value or apply default value - */ - var getOptionalValue = function(arg, param) { - if (!isUndefined(arg)) { - return arg; - } - return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null) - }; - - /** - * padding the arguments with defaultValue if the arguments did not provide the value - * this will be the name export - * @param {array} args normalized arguments - * @param {array} params from contract.json - * @return {array} merge the two together - */ - var normalizeArgs = function(args, params) { - // first we should check if this call require a validation at all - // there will be situation where the function doesn't need args and params - if (!checkIsArray(params)) { - // debugFn('params value', params) - throw new JsonqlError(PARAMS_NOT_ARRAY_ERR) - } - if (params.length === 0) { - return []; - } - if (!checkIsArray(args)) { - throw new JsonqlError(ARGS_NOT_ARRAY_ERR) - } - // debugFn(args, params); - // fall through switch - switch(true) { - case args.length == params.length: // standard - log(1); - return args.map(function (arg, i) { return ( - { - arg: arg, - index: i, - param: params[i] - } - ); }) - case params[0].variable === true: // using spread syntax - log(2); - var type = params[0].type; - return args.map(function (arg, i) { return ( - { - arg: arg, - index: i, // keep the index for reference - param: params[i] || { type: type, name: '_' } - } - ); }) - // with optional defaultValue parameters - case args.length < params.length: - log(3); - return params.map(function (param, i) { return ( - { - param: param, - index: i, - arg: getOptionalValue(args[i], param), - optional: param.optional || false - } - ); }) - // this one pass more than it should have anything after the args.length will be cast as any type - case args.length > params.length: - log(4); - var ctn = params.length; - // this happens when we have those array. type - var _type = [ DEFAULT_TYPE$1 ]; - // we only looking at the first one, this might be a @BUG - /* - if ((tmp = isArrayLike(params[0].type[0])) !== false) { - _type = tmp; - } */ - // if we use the params as guide then the rest will get throw out - // which is not what we want, instead, anything without the param - // will get a any type and optional flag - return args.map(function (arg, i) { - var optional = i >= ctn ? true : !!params[i].optional; - var param = params[i] || { type: _type, name: ("_" + i) }; - return { - arg: optional ? getOptionalValue(arg, param) : arg, - index: i, - param: param, - optional: optional - } - }) - // @TODO find out if there is more cases not cover - default: // this should never happen - log(5); - // debugFn('args', args) - // debugFn('params', params) - // this is unknown therefore we just throw it! - throw new JsonqlError(EXCEPTION_CASE_ERR, { args: args, params: params }) - } - }; - - // what we want is after the validaton we also get the normalized result - // which is with the optional property if the argument didn't provide it - /** - * process the array of params back to their arguments - * @param {array} result the params result - * @return {array} arguments - */ - var processReturn = function (result) { return result.map(function (r) { return r.arg; }); }; - - /** - * validator main interface - * @param {array} args the arguments pass to the method call - * @param {array} params from the contract for that method - * @param {boolean} [withResul=false] if true then this will return the normalize result as well - * @return {array} empty array on success, or failed parameter and reasons - */ - var validateSync = function(args, params, withResult) { - var obj; - - if ( withResult === void 0 ) withResult = false; - var cleanArgs = normalizeArgs(args, params); - var checkResult = cleanArgs.filter(function (p) { - // v1.4.4 this fixed the problem, the root level optional is from the last fn - if (p.optional === true || p.param.optional === true) { - return optionalHandler(p) - } - // because array of types means OR so if one pass means pass - return !(p.param.type.length > p.param.type.filter( - function (type) { return validateHandler(type, p); } - ).length) - }); - // using the same convention we been using all this time - return !withResult ? checkResult : ( obj = {}, obj[ERROR_KEY] = checkResult, obj[DATA_KEY] = processReturn(cleanArgs), obj ) - }; - - /** - * A wrapper method that return promise - * @param {array} args arguments - * @param {array} params from contract.json - * @param {boolean} [withResul=false] if true then this will return the normalize result as well - * @return {object} promise.then or catch - */ - var validateAsync = function(args, params, withResult) { - if ( withResult === void 0 ) withResult = false; - - return new Promise(function (resolver, rejecter) { - var result = validateSync(args, params, withResult); - if (withResult) { - return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY]) - : resolver(result[DATA_KEY]) - } - // the different is just in the then or catch phrase - return result.length ? rejecter(result) : resolver([]) - }) - }; - - /** - * @param {array} arr Array for check - * @param {*} value target - * @return {boolean} true on successs - */ - var isInArray = function(arr, value) { - return !!arr.filter(function (a) { return a === value; }).length; - }; - - var isKeyInObject$1 = function(obj, key) { - var keys = Object.keys(obj); - return isInArray(keys, key) - }; - - // just not to make my head hurt - var isEmpty = function (value) { return !notEmpty(value); }; - - /** - * Map the alias to their key then grab their value over - * @param {object} config the user supplied config - * @param {object} appProps the default option map - * @return {object} the config keys replaced with the appProps key by the ALIAS - */ - function mapAliasConfigKeys(config, appProps) { - // need to do two steps - // 1. take key with alias key - var aliasMap = omitBy(appProps, function (value, k) { return !value[ALIAS_KEY$1]; } ); - if (isEqual(aliasMap, {})) { - return config; - } - return mapKeys(config, function (v, key) { return findKey(aliasMap, function (o) { return o.alias === key; }) || key; }) - } - - /** - * We only want to run the valdiation against the config (user supplied) value - * but keep the defaultOptions untouch - * @param {object} config configuraton supplied by user - * @param {object} appProps the default options map - * @return {object} the pristine values that will add back to the final output - */ - function preservePristineValues(config, appProps) { - // @BUG this will filter out those that is alias key - // we need to first map the alias keys back to their full key - var _config = mapAliasConfigKeys(config, appProps); - // take the default value out - var pristineValues = mapValues( - omitBy(appProps, function (value, key) { return isKeyInObject$1(_config, key); }), - function (value) { return value.args; } - ); - // for testing the value - var checkAgainstAppProps = omitBy(appProps, function (value, key) { return !isKeyInObject$1(_config, key); }); - // output - return { - pristineValues: pristineValues, - checkAgainstAppProps: checkAgainstAppProps, - config: _config // passing this correct values back - } - } - - /** - * This will take the value that is ONLY need to check - * @param {object} config that one - * @param {object} props map for creating checking - * @return {object} put that arg into the args - */ - function processConfigAction(config, props) { - // debugFn('processConfigAction', props) - // v.1.2.0 add checking if its mark optional and the value is empty then pass - return mapValues(props, function (value, key) { - var obj, obj$1; - - return ( - isUndefined(config[key]) || (value[OPTIONAL_KEY$1] === true && isEmpty(config[key])) - ? merge({}, value, ( obj = {}, obj[KEY_WORD$1] = true, obj )) - : ( obj$1 = {}, obj$1[ARGS_KEY$1] = config[key], obj$1[TYPE_KEY$1] = value[TYPE_KEY$1], obj$1[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1] || false, obj$1[ENUM_KEY$1] = value[ENUM_KEY$1] || false, obj$1[CHECKER_KEY$1] = value[CHECKER_KEY$1] || false, obj$1 ) - ); - } - ) - } - - /** - * Quick transform - * @TODO we should only validate those that is pass from the config - * and pass through those values that is from the defaultOptions - * @param {object} opts that one - * @param {object} appProps mutation configuration options - * @return {object} put that arg into the args - */ - function prepareArgsForValidation(opts, appProps) { - var ref = preservePristineValues(opts, appProps); - var config = ref.config; - var pristineValues = ref.pristineValues; - var checkAgainstAppProps = ref.checkAgainstAppProps; - // output - return [ - processConfigAction(config, checkAgainstAppProps), - pristineValues - ] - } - - // breaking the whole thing up to see what cause the multiple calls issue - - // import debug from 'debug'; - // const debugFn = debug('jsonql-params-validator:options:validation') - - /** - * just make sure it returns an array to use - * @param {*} arg input - * @return {array} output - */ - var toArray = function (arg) { return checkIsArray(arg) ? arg : [arg]; }; - - /** - * DIY in array - * @param {array} arr to check against - * @param {*} value to check - * @return {boolean} true on OK - */ - var inArray = function (arr, value) { return ( - !!arr.filter(function (v) { return v === value; }).length - ); }; - - /** - * break out to make the code easier to read - * @param {object} value to process - * @param {function} cb the validateSync - * @return {array} empty on success - */ - function validateHandler$1(value, cb) { - var obj; - - // cb is the validateSync methods - var args = [ - [ value[ARGS_KEY$1] ], - [( obj = {}, obj[TYPE_KEY$1] = toArray(value[TYPE_KEY$1]), obj[OPTIONAL_KEY$1] = value[OPTIONAL_KEY$1], obj )] - ]; - // debugFn('validateHandler', args) - return Reflect.apply(cb, null, args) - } - - /** - * Check against the enum value if it's provided - * @param {*} value to check - * @param {*} enumv to check against if it's not false - * @return {boolean} true on OK - */ - var enumHandler = function (value, enumv) { - if (checkIsArray(enumv)) { - return inArray(enumv, value) - } - return true; - }; - - /** - * Allow passing a function to check the value - * There might be a problem here if the function is incorrect - * and that will makes it hard to debug what is going on inside - * @TODO there could be a few feature add to this one under different circumstance - * @param {*} value to check - * @param {function} checker for checking - */ - var checkerHandler = function (value, checker) { - try { - return isFunction(checker) ? checker.apply(null, [value]) : false; - } catch (e) { - return false; - } - }; - - /** - * Taken out from the runValidaton this only validate the required values - * @param {array} args from the config2argsAction - * @param {function} cb validateSync - * @return {array} of configuration values - */ - function runValidationAction(cb) { - return function (value, key) { - // debugFn('runValidationAction', key, value) - if (value[KEY_WORD$1]) { - return value[ARGS_KEY$1] - } - var check = validateHandler$1(value, cb); - if (check.length) { - log('runValidationAction', key, value); - throw new JsonqlTypeError(key, check) - } - if (value[ENUM_KEY$1] !== false && !enumHandler(value[ARGS_KEY$1], value[ENUM_KEY$1])) { - log(ENUM_KEY$1, value[ENUM_KEY$1]); - throw new JsonqlEnumError(key) - } - if (value[CHECKER_KEY$1] !== false && !checkerHandler(value[ARGS_KEY$1], value[CHECKER_KEY$1])) { - log(CHECKER_KEY$1, value[CHECKER_KEY$1]); - throw new JsonqlCheckerError(key) - } - return value[ARGS_KEY$1] - } - } - - /** - * @param {object} args from the config2argsAction - * @param {function} cb validateSync - * @return {object} of configuration values - */ - function runValidation(args, cb) { - var argsForValidate = args[0]; - var pristineValues = args[1]; - // turn the thing into an array and see what happen here - // debugFn('_args', argsForValidate) - var result = mapValues(argsForValidate, runValidationAction(cb)); - return merge(result, pristineValues) - } - - /// this is port back from the client to share across all projects - - // import debug from 'debug' - // const debugFn = debug('jsonql-params-validator:check-options-async') - - /** - * Quick transform - * @param {object} config that one - * @param {object} appProps mutation configuration options - * @return {object} put that arg into the args - */ - var configToArgs = function (config, appProps) { - return Promise.resolve( - prepareArgsForValidation(config, appProps) - ) - }; - - /** - * @param {object} config user provide configuration option - * @param {object} appProps mutation configuration options - * @param {object} constProps the immutable configuration options - * @param {function} cb the validateSync method - * @return {object} Promise resolve merge config object - */ - function checkOptionsAsync(config, appProps, constProps, cb) { - if ( config === void 0 ) config = {}; - - return configToArgs(config, appProps) - .then(function (args1) { - // debugFn('args', args1) - return runValidation(args1, cb) - }) - // next if every thing good then pass to final merging - .then(function (args2) { return merge({}, args2, constProps); }) - } - - // create function to construct the config entry so we don't need to keep building object - // import debug from 'debug'; - // const debugFn = debug('jsonql-params-validator:construct-config'); - /** - * @param {*} args value - * @param {string} type for value - * @param {boolean} [optional=false] - * @param {boolean|array} [enumv=false] - * @param {boolean|function} [checker=false] - * @return {object} config entry - */ - function constructConfigFn(args, type, optional, enumv, checker, alias) { - if ( optional === void 0 ) optional=false; - if ( enumv === void 0 ) enumv=false; - if ( checker === void 0 ) checker=false; - if ( alias === void 0 ) alias=false; - - var base = {}; - base[ARGS_KEY] = args; - base[TYPE_KEY] = type; - if (optional === true) { - base[OPTIONAL_KEY] = true; - } - if (checkIsArray(enumv)) { - base[ENUM_KEY] = enumv; - } - if (isFunction(checker)) { - base[CHECKER_KEY] = checker; - } - if (isString(alias)) { - base[ALIAS_KEY] = alias; - } - return base; - } - - // export also create wrapper methods - - // import debug from 'debug'; - // const debugFn = debug('jsonql-params-validator:options:index'); - - /** - * This has a different interface - * @param {*} value to supply - * @param {string|array} type for checking - * @param {object} params to map against the config check - * @param {array} params.enumv NOT enum - * @param {boolean} params.optional false then nothing - * @param {function} params.checker need more work on this one later - * @param {string} params.alias mostly for cmd - */ - var createConfig = function (value, type, params) { - if ( params === void 0 ) params = {}; - - // Note the enumv not ENUM - // const { enumv, optional, checker, alias } = params; - // let args = [value, type, optional, enumv, checker, alias]; - var o = params[OPTIONAL_KEY]; - var e = params[ENUM_KEY]; - var c = params[CHECKER_KEY]; - var a = params[ALIAS_KEY]; - return constructConfigFn.apply(null, [value, type, o, e, c, a]) - }; - - /** - * We recreate the method here to avoid the circlar import - * @param {object} config user supply configuration - * @param {object} appProps mutation options - * @param {object} [constantProps={}] optional: immutation options - * @return {object} all checked configuration - */ - var checkConfigAsync = function(validateSync) { - return function(config, appProps, constantProps) { - if ( constantProps === void 0 ) constantProps= {}; - - return checkOptionsAsync(config, appProps, constantProps, validateSync) - } - }; - - // export - var isString$1 = checkIsString; - var isArray$1 = checkIsArray; - var validateAsync$1 = validateAsync; - - var createConfig$1 = createConfig; - - var checkConfigAsync$1 = checkConfigAsync(validateSync); - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var assign = make_assign(); - var create = make_create(); - var trim$1 = make_trim(); - var Global = (typeof window !== 'undefined' ? window : commonjsGlobal); - - var util = { - assign: assign, - create: create, - trim: trim$1, - bind: bind, - slice: slice, - each: each, - map: map, - pluck: pluck, - isList: isList, - isFunction: isFunction$1, - isObject: isObject$1, - Global: Global - }; - - function make_assign() { - if (Object.assign) { - return Object.assign - } else { - return function shimAssign(obj, props1, props2, etc) { - var arguments$1 = arguments; - - for (var i = 1; i < arguments.length; i++) { - each(Object(arguments$1[i]), function(val, key) { - obj[key] = val; - }); - } - return obj - } - } - } - - function make_create() { - if (Object.create) { - return function create(obj, assignProps1, assignProps2, etc) { - var assignArgsList = slice(arguments, 1); - return assign.apply(this, [Object.create(obj)].concat(assignArgsList)) - } - } else { - function F() {} // eslint-disable-line no-inner-declarations - return function create(obj, assignProps1, assignProps2, etc) { - var assignArgsList = slice(arguments, 1); - F.prototype = obj; - return assign.apply(this, [new F()].concat(assignArgsList)) - } - } - } - - function make_trim() { - if (String.prototype.trim) { - return function trim(str) { - return String.prototype.trim.call(str) - } - } else { - return function trim(str) { - return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '') - } - } - } - - function bind(obj, fn) { - return function() { - return fn.apply(obj, Array.prototype.slice.call(arguments, 0)) - } - } - - function slice(arr, index) { - return Array.prototype.slice.call(arr, index || 0) - } - - function each(obj, fn) { - pluck(obj, function(val, key) { - fn(val, key); - return false - }); - } - - function map(obj, fn) { - var res = (isList(obj) ? [] : {}); - pluck(obj, function(v, k) { - res[k] = fn(v, k); - return false - }); - return res - } - - function pluck(obj, fn) { - if (isList(obj)) { - for (var i=0; i= 0; i--) { - var key = localStorage$1().key(i); - fn(read(key), key); - } - } - - function remove(key) { - return localStorage$1().removeItem(key) - } - - function clearAll() { - return localStorage$1().clear() - } - - // cookieStorage is useful Safari private browser mode, where localStorage - // doesn't work but cookies do. This implementation is adopted from - // https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage - - - var Global$2 = util.Global; - var trim$2 = util.trim; - - var cookieStorage = { - name: 'cookieStorage', - read: read$1, - write: write$1, - each: each$3, - remove: remove$1, - clearAll: clearAll$1, - }; - - var doc = Global$2.document; - - function read$1(key) { - if (!key || !_has(key)) { return null } - var regexpStr = "(?:^|.*;\\s*)" + - escape(key).replace(/[\-\.\+\*]/g, "\\$&") + - "\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"; - return unescape(doc.cookie.replace(new RegExp(regexpStr), "$1")) - } - - function each$3(callback) { - var cookies = doc.cookie.split(/; ?/g); - for (var i = cookies.length - 1; i >= 0; i--) { - if (!trim$2(cookies[i])) { - continue - } - var kvp = cookies[i].split('='); - var key = unescape(kvp[0]); - var val = unescape(kvp[1]); - callback(val, key); - } - } - - function write$1(key, data) { - if(!key) { return } - doc.cookie = escape(key) + "=" + escape(data) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"; - } - - function remove$1(key) { - if (!key || !_has(key)) { - return - } - doc.cookie = escape(key) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; - } - - function clearAll$1() { - each$3(function(_, key) { - remove$1(key); - }); - } - - function _has(key) { - return (new RegExp("(?:^|;\\s*)" + escape(key).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(doc.cookie) - } - - var defaults = defaultsPlugin; - - function defaultsPlugin() { - var defaultValues = {}; - - return { - defaults: defaults, - get: get - } - - function defaults(_, values) { - defaultValues = values; - } - - function get(super_fn, key) { - var val = super_fn(); - return (val !== undefined ? val : defaultValues[key]) - } - } - - var namespace = 'expire_mixin'; - - var expire = expirePlugin; - - function expirePlugin() { - var expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace); - - return { - set: expire_set, - get: expire_get, - remove: expire_remove, - getExpiration: getExpiration, - removeExpiredKeys: removeExpiredKeys - } - - function expire_set(super_fn, key, val, expiration) { - if (!this.hasNamespace(namespace)) { - expirations.set(key, expiration); - } - return super_fn() - } - - function expire_get(super_fn, key) { - if (!this.hasNamespace(namespace)) { - _checkExpiration.call(this, key); - } - return super_fn() - } - - function expire_remove(super_fn, key) { - if (!this.hasNamespace(namespace)) { - expirations.remove(key); - } - return super_fn() - } - - function getExpiration(_, key) { - return expirations.get(key) - } - - function removeExpiredKeys(_) { - var keys = []; - this.each(function(val, key) { - keys.push(key); - }); - for (var i=0; i - // This work is free. You can redistribute it and/or modify it - // under the terms of the WTFPL, Version 2 - // For more information see LICENSE.txt or http://www.wtfpl.net/ - // - // For more information, the home page: - // http://pieroxy.net/blog/pages/lz-string/testing.html - // - // LZ-based compression algorithm, version 1.4.4 - var LZString = (function() { - - // private property - var f = String.fromCharCode; - var keyStrBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var keyStrUriSafe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$"; - var baseReverseDic = {}; - - function getBaseValue(alphabet, character) { - if (!baseReverseDic[alphabet]) { - baseReverseDic[alphabet] = {}; - for (var i=0 ; i>> 8; - buf[i*2+1] = current_value % 256; - } - return buf; - }, - - //decompress from uint8array (UCS-2 big endian format) - decompressFromUint8Array:function (compressed) { - if (compressed===null || compressed===undefined){ - return LZString.decompress(compressed); - } else { - var buf=new Array(compressed.length/2); // 2 bytes per character - for (var i=0, TotalLen=buf.length; i> 1; - } - } else { - value = 1; - for (i=0 ; i> 1; - } - } - context_enlargeIn--; - if (context_enlargeIn == 0) { - context_enlargeIn = Math.pow(2, context_numBits); - context_numBits++; - } - delete context_dictionaryToCreate[context_w]; - } else { - value = context_dictionary[context_w]; - for (i=0 ; i> 1; - } - - - } - context_enlargeIn--; - if (context_enlargeIn == 0) { - context_enlargeIn = Math.pow(2, context_numBits); - context_numBits++; - } - // Add wc to the dictionary. - context_dictionary[context_wc] = context_dictSize++; - context_w = String(context_c); - } - } - - // Output the code for w. - if (context_w !== "") { - if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) { - if (context_w.charCodeAt(0)<256) { - for (i=0 ; i> 1; - } - } else { - value = 1; - for (i=0 ; i> 1; - } - } - context_enlargeIn--; - if (context_enlargeIn == 0) { - context_enlargeIn = Math.pow(2, context_numBits); - context_numBits++; - } - delete context_dictionaryToCreate[context_w]; - } else { - value = context_dictionary[context_w]; - for (i=0 ; i> 1; - } - - - } - context_enlargeIn--; - if (context_enlargeIn == 0) { - context_enlargeIn = Math.pow(2, context_numBits); - context_numBits++; - } - } - - // Mark the end of the stream - value = 2; - for (i=0 ; i> 1; - } - - // Flush the last char - while (true) { - context_data_val = (context_data_val << 1); - if (context_data_position == bitsPerChar-1) { - context_data.push(getCharFromInt(context_data_val)); - break; - } - else { context_data_position++; } - } - return context_data.join(''); - }, - - decompress: function (compressed) { - if (compressed == null) { return ""; } - if (compressed == "") { return null; } - return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); }); - }, - - _decompress: function (length, resetValue, getNextValue) { - var dictionary = [], - next, - enlargeIn = 4, - dictSize = 4, - numBits = 3, - entry = "", - result = [], - i, - w, - bits, resb, maxpower, power, - c, - data = {val:getNextValue(0), position:resetValue, index:1}; - - for (i = 0; i < 3; i += 1) { - dictionary[i] = i; - } - - bits = 0; - maxpower = Math.pow(2,2); - power=1; - while (power!=maxpower) { - resb = data.val & data.position; - data.position >>= 1; - if (data.position == 0) { - data.position = resetValue; - data.val = getNextValue(data.index++); - } - bits |= (resb>0 ? 1 : 0) * power; - power <<= 1; - } - - switch (next = bits) { - case 0: - bits = 0; - maxpower = Math.pow(2,8); - power=1; - while (power!=maxpower) { - resb = data.val & data.position; - data.position >>= 1; - if (data.position == 0) { - data.position = resetValue; - data.val = getNextValue(data.index++); - } - bits |= (resb>0 ? 1 : 0) * power; - power <<= 1; - } - c = f(bits); - break; - case 1: - bits = 0; - maxpower = Math.pow(2,16); - power=1; - while (power!=maxpower) { - resb = data.val & data.position; - data.position >>= 1; - if (data.position == 0) { - data.position = resetValue; - data.val = getNextValue(data.index++); - } - bits |= (resb>0 ? 1 : 0) * power; - power <<= 1; - } - c = f(bits); - break; - case 2: - return ""; - } - dictionary[3] = c; - w = c; - result.push(c); - while (true) { - if (data.index > length) { - return ""; - } - - bits = 0; - maxpower = Math.pow(2,numBits); - power=1; - while (power!=maxpower) { - resb = data.val & data.position; - data.position >>= 1; - if (data.position == 0) { - data.position = resetValue; - data.val = getNextValue(data.index++); - } - bits |= (resb>0 ? 1 : 0) * power; - power <<= 1; - } - - switch (c = bits) { - case 0: - bits = 0; - maxpower = Math.pow(2,8); - power=1; - while (power!=maxpower) { - resb = data.val & data.position; - data.position >>= 1; - if (data.position == 0) { - data.position = resetValue; - data.val = getNextValue(data.index++); - } - bits |= (resb>0 ? 1 : 0) * power; - power <<= 1; - } - - dictionary[dictSize++] = f(bits); - c = dictSize-1; - enlargeIn--; - break; - case 1: - bits = 0; - maxpower = Math.pow(2,16); - power=1; - while (power!=maxpower) { - resb = data.val & data.position; - data.position >>= 1; - if (data.position == 0) { - data.position = resetValue; - data.val = getNextValue(data.index++); - } - bits |= (resb>0 ? 1 : 0) * power; - power <<= 1; - } - dictionary[dictSize++] = f(bits); - c = dictSize-1; - enlargeIn--; - break; - case 2: - return result.join(''); - } - - if (enlargeIn == 0) { - enlargeIn = Math.pow(2, numBits); - numBits++; - } - - if (dictionary[c]) { - entry = dictionary[c]; - } else { - if (c === dictSize) { - entry = w + w.charAt(0); - } else { - return null; - } - } - result.push(entry); - - // Add w+entry[0] to the dictionary. - dictionary[dictSize++] = w + entry.charAt(0); - enlargeIn--; - - w = entry; - - if (enlargeIn == 0) { - enlargeIn = Math.pow(2, numBits); - numBits++; - } - - } - } - }; - return LZString; - })(); - - if( module != null ) { - module.exports = LZString; - } - }); - - var compression = compressionPlugin; - - function compressionPlugin() { - return { - get: get, - set: set, - } - - function get(super_fn, key) { - var val = super_fn(key); - if (!val) { return val } - var decompressed = lzString.decompress(val); - // fallback to existing values that are not compressed - return (decompressed == null) ? val : this._deserialize(decompressed) - } - - function set(super_fn, key, val) { - var compressed = lzString.compress(this._serialize(val)); - super_fn(key, compressed); - } - } - - // sort of persist on the user side - - var storages = [localStorage_1, cookieStorage]; - var plugins = [defaults, expire, events, compression]; - - var localStore = storeEngine.createStore(storages, plugins); - - var Global$3 = util.Global; - - var sessionStorage_1 = { - name: 'sessionStorage', - read: read$2, - write: write$2, - each: each$5, - remove: remove$2, - clearAll: clearAll$2 - }; - - function sessionStorage() { - return Global$3.sessionStorage - } - - function read$2(key) { - return sessionStorage().getItem(key) - } - - function write$2(key, data) { - return sessionStorage().setItem(key, data) - } - - function each$5(fn) { - for (var i = sessionStorage().length - 1; i >= 0; i--) { - var key = sessionStorage().key(i); - fn(read$2(key), key); - } - } - - function remove$2(key) { - return sessionStorage().removeItem(key) - } - - function clearAll$2() { - return sessionStorage().clear() - } - - // session store with watch - - var storages$1 = [sessionStorage_1, cookieStorage]; - var plugins$1 = [defaults, expire]; - - var sessionStore = storeEngine.createStore(storages$1, plugins$1); - - // export store interface - - // export back the raw version for development purposes - var localStore$1 = localStore; - var sessionStore$1 = sessionStore; - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray$2 = Array.isArray; - - var global$1$1 = (typeof global$1 !== "undefined" ? global$1 : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}); - - /** Detect free variable `global` from Node.js. */ - var freeGlobal$1 = typeof global$1$1 == 'object' && global$1$1 && global$1$1.Object === Object && global$1$1; - - /** Detect free variable `self`. */ - var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')(); - - /** Built-in value references. */ - var Symbol$1 = root$1.Symbol; - - /** Used for built-in method references. */ - var objectProto$f = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$c = objectProto$f.hasOwnProperty; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString$2 = objectProto$f.toString; - - /** Built-in value references. */ - var symToStringTag$2 = Symbol$1 ? Symbol$1.toStringTag : undefined; - - /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ - function getRawTag$1(value) { - var isOwn = hasOwnProperty$c.call(value, symToStringTag$2), - tag = value[symToStringTag$2]; - - try { - value[symToStringTag$2] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString$2.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag$2] = tag; - } else { - delete value[symToStringTag$2]; - } - } - return result; - } - - /** Used for built-in method references. */ - var objectProto$1$1 = Object.prototype; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString$1$1 = objectProto$1$1.toString; - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString$1(value) { - return nativeObjectToString$1$1.call(value); - } - - /** `Object#toString` result references. */ - var nullTag$1 = '[object Null]', - undefinedTag$1 = '[object Undefined]'; - - /** Built-in value references. */ - var symToStringTag$1$1 = Symbol$1 ? Symbol$1.toStringTag : undefined; - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag$1(value) { - if (value == null) { - return value === undefined ? undefinedTag$1 : nullTag$1; - } - return (symToStringTag$1$1 && symToStringTag$1$1 in Object(value)) - ? getRawTag$1(value) - : objectToString$1(value); - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg$1(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** Built-in value references. */ - var getPrototype$1 = overArg$1(Object.getPrototypeOf, Object); - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike$1(value) { - return value != null && typeof value == 'object'; - } - - /** `Object#toString` result references. */ - var objectTag$4 = '[object Object]'; - - /** Used for built-in method references. */ - var funcProto$3 = Function.prototype, - objectProto$2$1 = Object.prototype; - - /** Used to resolve the decompiled source of functions. */ - var funcToString$3 = funcProto$3.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty$1$1 = objectProto$2$1.hasOwnProperty; - - /** Used to infer the `Object` constructor. */ - var objectCtorString$1 = funcToString$3.call(Object); - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject$1(value) { - if (!isObjectLike$1(value) || baseGetTag$1(value) != objectTag$4) { - return false; - } - var proto = getPrototype$1(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty$1$1.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString$3.call(Ctor) == objectCtorString$1; - } - - /** Used to convert symbols to primitives and strings. */ - var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : undefined, - symbolToString$1 = symbolProto$2 ? symbolProto$2.toString : undefined; - - /** `Object#toString` result references. */ - var stringTag$3 = '[object String]'; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString$2(value) { - return typeof value == 'string' || - (!isArray$2(value) && isObjectLike$1(value) && baseGetTag$1(value) == stringTag$3); - } - - // bunch of generic helpers - - /** - * DIY in Array - * @param {array} arr to check from - * @param {*} value to check against - * @return {boolean} true on found - */ - var inArray$1 = function (arr, value) { return !!arr.filter(function (a) { return a === value; }).length; }; - - /** - * @param {object} obj for search - * @param {string} key target - * @return {boolean} true on success - */ - var isObjectHasKey = function(obj, key) { - var keys = Object.keys(obj); - return inArray$1(keys, key) - }; - - /** - * @param {boolean} sec return in second or not - * @return {number} timestamp - */ - var timestamp = function (sec) { - if ( sec === void 0 ) { sec = false; } - - var time = Date.now(); - return sec ? Math.floor( time / 1000 ) : time; - }; - - /** - * @return {object} _cb as key with timestamp - */ - var cacheBurst = function () { return ({ _cb: timestamp() }); }; - - // the core stuff to id if it's calling with jsonql - var DATA_KEY$1 = 'data'; - var ERROR_KEY$1 = 'error'; - - // @TODO remove this is not in use - // export const CLIENT_CONFIG_FILE = '.clients.json'; - // export const CONTRACT_CONFIG_FILE = 'jsonql-contract-config.js'; - // type of resolvers - var QUERY_NAME = 'query'; - var MUTATION_NAME = 'mutation'; - var SOCKET_NAME = 'socket'; - // for calling the mutation - var PAYLOAD_PARAM_NAME = 'payload'; - var CONDITION_PARAM_NAME = 'condition'; - var QUERY_ARG_NAME = 'args'; - - /** - * some time it's hard to tell where the error is throw from - * because client server throw the same, therefore this util fn - * to add a property to the error object to tell if it's throw - * from client or server - * - */ - - var isBrowser$1 = function () { - try { - if (window || document) { - return true; - } - } catch(e) {} - return false; - }; - - var isNode$1 = function () { - try { - if (!isBrowser$1() && global$1$1) { - return true; - } - } catch(e) {} - return false; - }; - - function whereAmI$1() { - if (isBrowser$1()) { - return 'browser' - } - if (isNode$1()) { - return 'node' - } - return 'unknown' - } - - // The base Error of all - - var JsonqlBaseError$1 = /*@__PURE__*/(function (Error) { - function JsonqlBaseError() { - var arguments$1 = arguments; - - var args = [], len = arguments.length; - while ( len-- ) { args[ len ] = arguments$1[ len ]; } - - Error.apply(this, args); - } - - if ( Error ) { JsonqlBaseError.__proto__ = Error; } - JsonqlBaseError.prototype = Object.create( Error && Error.prototype ); - JsonqlBaseError.prototype.constructor = JsonqlBaseError; - - JsonqlBaseError.where = function where () { - return whereAmI$1() - }; - - return JsonqlBaseError; - }(Error)); - - // custom validation error class - // when validaton failed - var JsonqlValidationError$1 = /*@__PURE__*/(function (JsonqlBaseError) { - function JsonqlValidationError() { - var arguments$1 = arguments; - - var args = [], len = arguments.length; - while ( len-- ) { args[ len ] = arguments$1[ len ]; } - - JsonqlBaseError.apply(this, args); - - this.message = args[0]; - this.detail = args[1]; - - this.className = JsonqlValidationError.name; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, JsonqlValidationError); - } - } - - if ( JsonqlBaseError ) { JsonqlValidationError.__proto__ = JsonqlBaseError; } - JsonqlValidationError.prototype = Object.create( JsonqlBaseError && JsonqlBaseError.prototype ); - JsonqlValidationError.prototype.constructor = JsonqlValidationError; - - var staticAccessors = { name: { configurable: true } }; - - staticAccessors.name.get = function () { - return 'JsonqlValidationError'; - }; - - Object.defineProperties( JsonqlValidationError, staticAccessors ); - - return JsonqlValidationError; - }(JsonqlBaseError$1)); - - // split the contract into the node side and the generic side - /** - * Check if the json is a contract file or not - * @param {object} contract json object - * @return {boolean} true - */ - function checkIsContract(contract) { - return isPlainObject$1(contract) - && ( - isObjectHasKey(contract, QUERY_NAME) - || isObjectHasKey(contract, MUTATION_NAME) - || isObjectHasKey(contract, SOCKET_NAME) - ) - } - - /** - * @param {*} args arguments to send - *@return {object} formatted payload - */ - var formatPayload = function (args) { - var obj; - - return ( - ( obj = {}, obj[QUERY_ARG_NAME] = args, obj ) - ); - }; - - /** - * Get name from the payload (ported back from jsonql-koa) - * @param {*} payload to extract from - * @return {string} name - */ - function getNameFromPayload(payload) { - return Object.keys(payload)[0] - } - - /** - * @param {string} resolverName name of function - * @param {array} [args=[]] from the ...args - * @param {boolean} [jsonp = false] add v1.3.0 to koa - * @return {object} formatted argument - */ - function createQuery(resolverName, args, jsonp) { - var obj; - - if ( args === void 0 ) { args = []; } - if ( jsonp === void 0 ) { jsonp = false; } - if (isString$2(resolverName) && isArray$2(args)) { - var payload = formatPayload(args); - if (jsonp === true) { - return payload; - } - return ( obj = {}, obj[resolverName] = payload, obj ) - } - throw new JsonqlValidationError$1("[createQuery] expect resolverName to be string and args to be array!", { resolverName: resolverName, args: args }) - } - - /** - * @param {string} resolverName name of function - * @param {*} payload to send - * @param {object} [condition={}] for what - * @param {boolean} [jsonp = false] add v1.3.0 to koa - * @return {object} formatted argument - */ - function createMutation(resolverName, payload, condition, jsonp) { - var obj; - - if ( condition === void 0 ) { condition = {}; } - if ( jsonp === void 0 ) { jsonp = false; } - var _payload = {}; - _payload[PAYLOAD_PARAM_NAME] = payload; - _payload[CONDITION_PARAM_NAME] = condition; - if (jsonp === true) { - return _payload; - } - if (isString$2(resolverName)) { - return ( obj = {}, obj[resolverName] = _payload, obj ) - } - throw new JsonqlValidationError$1("[createMutation] expect resolverName to be string!", { resolverName: resolverName, payload: payload, condition: condition }) - } - - // ported from http-client - - /** - * handle the return data - * @param {object} result return from server - * @return {object} strip the data part out, or if the error is presented - */ - var resultHandler = function (result) { return ( - (isObjectHasKey(result, DATA_KEY$1) && !isObjectHasKey(result, ERROR_KEY$1)) ? result[DATA_KEY$1] : result - ); }; - - // exportfor ES modules - - // alias - var isContract = checkIsContract; - - // take only the module part which is what we use here - - /** - * @param {object} jsonqlInstance the init instance of jsonql client - * @param {object} contract the static contract - * @return {object} contract may be from server - */ - var getContractFromConfig = function(jsonqlInstance, contract) { - if ( contract === void 0 ) contract = {}; - - if (isContract(contract)) { - return Promise.resolve(contract) - } - return jsonqlInstance.getContract() - }; - - // export some constants as well - // since it's only use here there is no point of adding it to the constants module - // or may be we add it back later - var ENDPOINT_TABLE = 'endpoint'; - var USERDATA_TABLE = 'userdata'; - - /** - * The code was extracted from: - * https://github.com/davidchambers/Base64.js - */ - - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - function InvalidCharacterError(message) { - this.message = message; - } - - InvalidCharacterError.prototype = new Error(); - InvalidCharacterError.prototype.name = 'InvalidCharacterError'; - - function polyfill (input) { - var str = String(input).replace(/=+$/, ''); - if (str.length % 4 == 1) { - throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); - } - for ( - // initialize result and counters - var bc = 0, bs, buffer, idx = 0, output = ''; - // get next character - buffer = str.charAt(idx++); - // character found in table? initialize bit storage and add its ascii value; - ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, - // and if not first of each 4 characters, - // convert the first 8 bits to one ascii character - bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 - ) { - // try to find character in table (0-63, not found => -1) - buffer = chars.indexOf(buffer); - } - return output; - } - - - var atob = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill; - - function b64DecodeUnicode(str) { - return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) { - var code = p.charCodeAt(0).toString(16).toUpperCase(); - if (code.length < 2) { - code = '0' + code; - } - return '%' + code; - })); - } - - var base64_url_decode = function(str) { - var output = str.replace(/-/g, "+").replace(/_/g, "/"); - switch (output.length % 4) { - case 0: - break; - case 2: - output += "=="; - break; - case 3: - output += "="; - break; - default: - throw "Illegal base64url string!"; - } - - try{ - return b64DecodeUnicode(output); - } catch (err) { - return atob(output); - } - }; - - function InvalidTokenError(message) { - this.message = message; - } - - InvalidTokenError.prototype = new Error(); - InvalidTokenError.prototype.name = 'InvalidTokenError'; - - var lib = function (token,options) { - if (typeof token !== 'string') { - throw new InvalidTokenError('Invalid token specified'); - } - - options = options || {}; - var pos = options.header === true ? 0 : 1; - try { - return JSON.parse(base64_url_decode(token.split('.')[pos])); - } catch (e) { - throw new InvalidTokenError('Invalid token specified: ' + e.message); - } - }; - - var InvalidTokenError_1 = InvalidTokenError; - lib.InvalidTokenError = InvalidTokenError_1; - - // when the user is login with the jwt - - var timestamp$1 = function (sec) { - if ( sec === void 0 ) { sec = false; } - - var time = Date.now(); - return sec ? Math.floor( time / 1000 ) : time; - }; - - /** - * We only check the nbf and exp - * @param {object} token for checking - * @return {object} token on success - */ - function validate(token) { - var start = token.iat || timestamp$1(true); - // we only check the exp for the time being - if (token.exp) { - if (start >= token.exp) { - var expired = new Date(token.exp).toISOString(); - throw new JsonqlError(("Token has expired on " + expired), token) - } - } - return token; - } - - /** - * The browser client version it has far fewer options and it doesn't verify it - * because it couldn't this is the job for the server - * @TODO we need to add some extra proessing here to check for the exp field - * @param {string} token to decrypted - * @return {object} decrypted object - */ - function jwtDecode(token) { - if (isString$1(token)) { - var t = lib(token); - return validate(t) - } - throw new JsonqlError('Token must be a string!') - } - - var obj, obj$1, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8; - - var appProps = { - algorithm: createConfig$1(HSA_ALGO, [STRING_TYPE]), - expiresIn: createConfig$1(false, [BOOLEAN_TYPE, NUMBER_TYPE, STRING_TYPE], ( obj = {}, obj[ALIAS_KEY] = 'exp', obj[OPTIONAL_KEY] = true, obj )), - notBefore: createConfig$1(false, [BOOLEAN_TYPE, NUMBER_TYPE, STRING_TYPE], ( obj$1 = {}, obj$1[ALIAS_KEY] = 'nbf', obj$1[OPTIONAL_KEY] = true, obj$1 )), - audience: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$2 = {}, obj$2[ALIAS_KEY] = 'iss', obj$2[OPTIONAL_KEY] = true, obj$2 )), - subject: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$3 = {}, obj$3[ALIAS_KEY] = 'sub', obj$3[OPTIONAL_KEY] = true, obj$3 )), - issuer: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$4 = {}, obj$4[ALIAS_KEY] = 'iss', obj$4[OPTIONAL_KEY] = true, obj$4 )), - noTimestamp: createConfig$1(false, [BOOLEAN_TYPE], ( obj$5 = {}, obj$5[OPTIONAL_KEY] = true, obj$5 )), - header: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$6 = {}, obj$6[OPTIONAL_KEY] = true, obj$6 )), - keyid: createConfig$1(false, [BOOLEAN_TYPE, STRING_TYPE], ( obj$7 = {}, obj$7[OPTIONAL_KEY] = true, obj$7 )), - mutatePayload: createConfig$1(false, [BOOLEAN_TYPE], ( obj$8 = {}, obj$8[OPTIONAL_KEY] = true, obj$8 )) - }; - - // base HttpClass - - // extract the one we need - var POST = API_REQUEST_METHODS[0]; - var PUT = API_REQUEST_METHODS[1]; - - var _log = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - try { - if (window && window.console) { - Reflect.apply(console.log, null, args); - } - } catch(e) {} - }; - - var HttpClass = function HttpClass(opts) { - // change the way how we init Fly - // flyio now become external depedencies and it makes it easier to switch - // @BUG should we run test to check if we have the windows object? - _log(opts); - this.fly = opts.Fly ? new opts.Fly() : new Fly(); - // to a different environment like WeChat mini app - this.opts = opts; - this.extraHeader = {}; - // @1.2.1 for adding query to the call on the fly - this.extraParams = {}; - // this.log('start up opts', opts); - this.reqInterceptor(); - this.resInterceptor(); - }; - - var prototypeAccessors = { headers: { configurable: true } }; - - // set headers for that one call - prototypeAccessors.headers.set = function (header) { - this.extraHeader = header; - }; - - /** - * Create the reusage request method - * @param {object} payload jsonql payload - * @param {object} options extra options add the request - * @param {object} headers extra headers add to the call - * @return {object} the fly request instance - */ - HttpClass.prototype.request = function request (payload, options, headers) { - var obj; - - if ( options === void 0 ) options = {}; - if ( headers === void 0 ) headers = {}; - this.headers = headers; - var params = merge({}, cacheBurst(), this.extraParams); - // @TODO need to add a jsonp url and payload - if (this.opts.enableJsonp) { - var resolverName = getNameFromPayload(payload); - params = merge({}, params, ( obj = {}, obj[JSONP_CALLBACK_NAME] = resolverName, obj )); - payload = payload[resolverName]; - } - return this.fly.request( - this.jsonqlEndpoint, - payload, - merge({}, { method: POST, params: params }, options) - ) - }; - - /** - * This will replace the create baseRequest method - * - */ - HttpClass.prototype.reqInterceptor = function reqInterceptor () { - var this$1 = this; - - this.fly.interceptors.request.use( - function (req) { - var headers = this$1.getHeaders(); - this$1.log('request interceptor call', headers); - - for (var key in headers) { - req.headers[key] = headers[key]; - } - return req; - } - ); - }; - - // @TODO - HttpClass.prototype.processJsonp = function processJsonp (result) { - return resultHandler(result) - }; - - /** - * This will be replacement of the first then call - * - */ - HttpClass.prototype.resInterceptor = function resInterceptor () { - var this$1 = this; - - var self = this; - var jsonp = self.opts.enableJsonp; - this.fly.interceptors.response.use( - function (res) { - this$1.log('response interceptor call'); - self.cleanUp(); - // now more processing here - // there is a problem if we throw the result.error here - // the original data is lost, so we need to do what we did before - // deal with that error in the first then instead - var result = isString$1(res.data) ? JSON.parse(res.data) : res.data; - if (jsonp) { - return self.processJsonp(result) - } - return resultHandler(result) - }, - // this get call when it's not 200 - function (err) { - self.cleanUp(); - console.error(err); - throw new JsonqlServerError('Server side error', err) - } - ); - }; - - /** - * Get the headers inject into the call - * @return {object} headers - */ - HttpClass.prototype.getHeaders = function getHeaders () { - if (this.opts.enableAuth) { - return merge({}, DEFAULT_HEADER, this.getAuthHeader(), this.extraHeader) - } - return merge({}, DEFAULT_HEADER, this.extraHeader) - }; - - /** - * Post http call operation to clean up things we need - */ - HttpClass.prototype.cleanUp = function cleanUp () { - this.extraHeader = {}; - this.extraParams = {}; - }; - - /** - * GET for contract only - */ - HttpClass.prototype.get = function get () { - var this$1 = this; - - if (this.opts.showContractDesc) { - this.extraParams = merge({}, this.extraParams, SHOW_CONTRACT_DESC_PARAM); - } - return this.request({}, {method: 'GET'}, this.contractHeader) - .then(clientErrorsHandler) - .then(function (result) { - this$1.log('get contract result', result); - // when refresh the window the result is different! - // @TODO need to check the Koa side about why is that - // also it should set a flag if we want the description or not - if (result.cache && result.contract) { - return result.contract; - } - // just the normal result - return result - }) - }; - - /** - * POST to server - query - * @param {object} name of the resolver - * @param {array} args arguments - * @return {object} promise resolve to the resolver return - */ - HttpClass.prototype.query = function query (name, args) { - if ( args === void 0 ) args = []; - - return this.request(createQuery(name, args)) - .then(clientErrorsHandler) - }; - - /** - * PUT to server - mutation - * @param {string} name of resolver - * @param {object} payload what it said - * @param {object} conditions what it said - * @return {object} promise resolve to the resolver return - */ - HttpClass.prototype.mutation = function mutation (name, payload, conditions) { - if ( payload === void 0 ) payload = {}; - if ( conditions === void 0 ) conditions = {}; - - return this.request(createMutation(name, payload, conditions), {method: PUT}) - .then(clientErrorsHandler) - }; - - Object.defineProperties( HttpClass.prototype, prototypeAccessors ); - - // all the contract related methods will be here - - // export - var ContractClass = /*@__PURE__*/(function (HttpClass) { - function ContractClass(opts) { - HttpClass.call(this, opts); - } - - if ( HttpClass ) ContractClass.__proto__ = HttpClass; - ContractClass.prototype = Object.create( HttpClass && HttpClass.prototype ); - ContractClass.prototype.constructor = ContractClass; - - var prototypeAccessors = { contractHeader: { configurable: true } }; - - /** - * return the contract public api - * @return {object} contract - */ - ContractClass.prototype.getContract = function getContract () { - var contracts = this.readContract(); - this.log('getContract first call', contracts); - if (contracts && Array.isArray(contracts)) { - var contract = contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ]; - if (contract) { - return Promise.resolve(contract) - } - } - return this.get() - .then( this.storeContract.bind(this) ) - }; - - /** - * We are changing the way how to auth to get the contract.json - * Instead of in the url, we will be putting that key value in the header - * @return {object} header - */ - prototypeAccessors.contractHeader.get = function () { - var base = {}; - if (this.opts.contractKey !== false) { - base[this.opts.contractKeyName] = this.opts.contractKey; - } - return base; - }; - - /** - * Save the contract to local store - * @param {object} contract to save - * @return {object|boolean} false when its not a contract or contract on OK - */ - ContractClass.prototype.storeContract = function storeContract (contract) { - // first need to check if the contract is a contract - if (!isContract(contract)) { - throw new JsonqlValidationError("Contract is malformed!") - //return false; - } - var args = [contract]; - if (this.opts.contractExpired) { - var expired = parseFloat(this.opts.contractExpired); - if (!isNaN(expired) && expired > 0) { - args.push(expired); - } - } - // calling the setter - this.jsonqlContract = args; - // return it - this.log('storeContract return result', contract); - return contract; - }; - - /** - * return the contract from options or localStore - * @return {object} contract - */ - ContractClass.prototype.readContract = function readContract () { - var contract = isContract(this.opts.contract); - return contract ? this.opts.contract : localStore$1.get(this.opts.storageKey) - }; - - Object.defineProperties( ContractClass.prototype, prototypeAccessors ); - - return ContractClass; - }(HttpClass)); - - // this is the new auth class that integrate with the jsonql-jwt - // export - var AuthClass = /*@__PURE__*/(function (ContractClass) { - function AuthClass(opts) { - ContractClass.call(this, opts); - if (opts.enableAuth && opts.useJwt) { - this.setDecoder = jwtDecode; - } - } - - if ( ContractClass ) AuthClass.__proto__ = ContractClass; - AuthClass.prototype = Object.create( ContractClass && ContractClass.prototype ); - AuthClass.prototype.constructor = AuthClass; - - var prototypeAccessors = { userdata: { configurable: true },rawAuthToken: { configurable: true },setDecoder: { configurable: true } }; - - /** - * Getter to get the login userdata - * @return {mixed} userdata - */ - prototypeAccessors.userdata.get = function () { - return this.jsonqlUserdata; // see base-cls - }; - - /** - * Return the token from session store - * @return {string} token - */ - prototypeAccessors.rawAuthToken.get = function () { - // this should return from the base - return this.jsonqlToken; // see base-cls - }; - - /** - * Setter to add a decoder when retrieve user token - * @param {function} d a decoder - */ - prototypeAccessors.setDecoder.set = function (d) { - if (typeof d === 'function') { - this.decoder = d; - } - }; - - /** - * Setter after login success - * @TODO this move to a new class to handle multiple login - * @param {string} token to store - * @return {*} success store - */ - AuthClass.prototype.storeToken = function storeToken (token) { - return this.jsonqlToken = token; - }; - - /** - * for overwrite - * @param {string} token stored token - * @return {string} token - */ - AuthClass.prototype.decoder = function decoder (token) { - return token; - }; - - /** - * Construct the auth header - * @return {object} header - */ - AuthClass.prototype.getAuthHeader = function getAuthHeader () { - var obj; - - var token = this.rawAuthToken; - return token ? ( obj = {}, obj[this.opts.AUTH_HEADER] = (BEARER + " " + token), obj ) : {}; - }; - - Object.defineProperties( AuthClass.prototype, prototypeAccessors ); - - return AuthClass; - }(ContractClass)); - - // this the core of the internal storage management - - // This class will only focus on the storage system - var JsonqlBaseClient = /*@__PURE__*/(function (AuthCls) { - function JsonqlBaseClient(opts, Fly) { - if ( Fly === void 0 ) Fly = null; - - if (Fly) { - opts.Fly = Fly; - } - AuthCls.call(this, opts); - } - - if ( AuthCls ) JsonqlBaseClient.__proto__ = AuthCls; - JsonqlBaseClient.prototype = Object.create( AuthCls && AuthCls.prototype ); - JsonqlBaseClient.prototype.constructor = JsonqlBaseClient; - - var prototypeAccessors = { storeIt: { configurable: true },jsonqlEndpoint: { configurable: true },jsonqlContract: { configurable: true },jsonqlToken: { configurable: true },jsonqlUserdata: { configurable: true } }; - - // @TODO - prototypeAccessors.storeIt.set = function (args) { - console.info('storeIt', args); - // the args MUST contain [0] the key , [1] the content [2] optional expired in - if (isArray$1(args) && args.length >= 2) { - Reflect.apply(localStore$1.set, localStore$1, args); - } - throw new JsonqlValidationError("Expect argument to be array and least 2 items!") - }; - - // this table index key will drive the contract - // also it should not allow to change dynamicly - // because this is how different client can id itself - // OK this could be self manage because when init a new client - // it will add a new endpoint and we will know if they are the same or not - // but the check here - prototypeAccessors.jsonqlEndpoint.set = function (endpoint) { - var urls = localStore$1.get(ENDPOINT_TABLE) || []; - // should check if this url already existed? - if (!inArray$1(urls, endpoint)) { - urls.push(endpoint); - this.storeId = [ENDPOINT_TABLE, urls]; - this[ENDPOINT_TABLE + 'Index'] = urls.length - 1; - } - }; - - // by the time it call the save contract already been checked - prototypeAccessors.jsonqlContract.set = function (args) { - var key = this.opts.storageKey; - var _args = [ key ]; - var contract = args[0]; - var expired = args[1]; - // get the endpoint index - var contracts = localStore$1.get(key) || []; - contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ] = contract; - _args.push(contracts); - if (expired) { - _args.push(expired); - } - if (this.opts.keepContract) { - this.storeIt = _args; - } - }; - - /** - * save token - * @param {string} token to store - * @return {string|boolean} false on failed - */ - prototypeAccessors.jsonqlToken.set = function (token) { - var key = CREDENTIAL_STORAGE_KEY; - var tokens = localStorage.get(key) || []; - if (!inArray$1(tokens, token)) { - var index = tokens.length - 1; - tokens[ index ] = token; - this[key + 'Index'] = index; - var args = [key, tokens]; - if (this.opts.tokenExpired) { - var expired = parseFloat(this.opts.tokenExpired); - if (!isNaN(expired) && expired > 0) { - var ts = timestamp(); - args.push( ts + parseFloat(expired) ); - } - } - this.storeIt = args; - // now decode it and store in the userdata - this.jsonqlUserdata = this.decoder(token); - return token; - } - return false; - }; - - /** - * this one will use the sessionStore - * basically we hook this onto the token store and decode it to store here - */ - prototypeAccessors.jsonqlUserdata.set = function (userdata) { - var args = [USERDATA_TABLE, userdata]; - if (userdata.exp) { - args.push(userdata.exp); - } - return Reflect.apply(localStore$1.set, localStore$1, args) - }; - - /** - * This also manage the index internally - * There is NO need to store them in an array - * because each instance contain one end point - * @return {string} the end point to call - */ - prototypeAccessors.jsonqlEndpoint.get = function () { - var urls = localStore$1.get(ENDPOINT_TABLE); - if (!urls) { - var ref = this.opts; - var hostname = ref.hostname; - var jsonqlPath = ref.jsonqlPath; - var url = [hostname, jsonqlPath].join('/'); - this.jsonqlEndpoint = url; - return url; - } - return urls[this[ENDPOINT_TABLE + 'Index']] - }; - - /** - * If already stored then return it by the end point index - * or false when there is none - * 1.2.0 start using the keepContract option (replace the useLocalStorage) - * @return {object|boolean} as described above - */ - prototypeAccessors.jsonqlContract.get = function () { - var key = this.opts.storageKey; - var contracts = localStore$1.get(key) || []; - return contracts[ this[ENDPOINT_TABLE + 'Index'] ] || false - }; - - /** - * Jsonql token getter - * @return {string|boolean} false when failed - */ - prototypeAccessors.jsonqlToken.get = function () { - var key = CREDENTIAL_STORAGE_KEY; - var tokens = localStorage.get(key); - if (tokens) { - return tokens[ this[key + 'Index'] ] - } - return false; - }; - - /** - * this one store in the session store - * get login userdata decoded jwt - * @return {object|null} - */ - prototypeAccessors.jsonqlUserdata.get = function () { - return sessionStore$1.get(USERDATA_TABLE) - }; - - /** - * simple log - */ - JsonqlBaseClient.prototype.log = function log () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (this.opts.debugOn === true) { - Reflect.apply(console.info, console, args); - } - }; - - Object.defineProperties( JsonqlBaseClient.prototype, prototypeAccessors ); - - return JsonqlBaseClient; - }(AuthClass)); - - // export interface - - // bunch of generic helpers - - // quick and dirty to turn non array to array - var toArray$1 = function (arg) { return isArray(arg) ? arg : [arg]; }; - - /** - * using just the map reduce to chain multiple functions together - * @param {function} mainFn the init function - * @param {array} moreFns as many as you want to take the last value and return a new one - * @return {function} accept value for the mainFn - */ - var chainFns = function (mainFn) { - var moreFns = [], len = arguments.length - 1; - while ( len-- > 0 ) moreFns[ len ] = arguments[ len + 1 ]; - - return ( - function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return ( - moreFns.reduce(function (value, nextFn) { return ( - // change here to check if the return value is array then we spread it - Reflect.apply(nextFn, null, toArray$1(value)) - ); }, Reflect.apply(mainFn, null, args)) - ); - } - ); - }; - - /** - * After the user login we will use this Object.define add a new property - * to the resolver with the decoded user data - * @param {function} resolver target resolver - * @param {string} name the name of the object to get inject also for checking - * @param {object} data to inject into the function static interface - * @param {boolean} [overwrite=false] if we want to overwrite the existing data - * @return {function} added property resolver - */ - function injectToFn(resolver, name, data, overwrite) { - if ( overwrite === void 0 ) overwrite = false; - - var check = Object.getOwnPropertyDescriptor(resolver, name); - if (overwrite === false && check !== undefined) { - // console.info(`NOT INJECTED`) - return resolver; - } - /* this will throw error! - if (overwrite === true && check !== undefined) { - delete resolver[name] // delete this property - } - */ - // console.info(`INJECTED`) - Object.defineProperty(resolver, name, { - value: data, - writable: overwrite // if its set to true then we should able to overwrite it - }); - - return resolver; - } - - // breaking out the inner methods generator in here - - /** - * generate authorisation specific methods - * @param {object} jsonqlInstance instance of this - * @param {string} name of method - * @param {object} opts configuration - * @param {object} contract to match - * @return {function} for use - */ - var authMethodGenerator = function (jsonqlInstance, name, opts, contract) { - return function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var params = contract.auth[name].params; - var values = params.map(function (p, i) { return args[i]; }); - var header = args[params.length] || {}; - return validateAsync$1(args, params) - .then(function () { return jsonqlInstance - .query - .apply(jsonqlInstance, [name, values, header]); } - ) - .catch(finalCatch) - } - }; - - /** - * Break up the different type each - create query methods - * @param {object} obj to hold all the objects - * @param {object} jsonqlInstance jsonql class instance - * @param {object} ee eventEmitter - * @param {object} config configuration - * @param {object} contract json - * @return {object} modified output for next op - */ - var createQueryMethods = function (obj, jsonqlInstance, ee, config, contract) { - var query = {}; - var loop = function ( queryFn ) { - // to keep it clean we use a param to id the auth method - // const fn = (_contract.query[queryFn].auth === true) ? 'auth' : queryFn; - // generate the query method - query = injectToFn(query, queryFn, function queryFnHandler() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - // obj.query[queryFn] = (...args) => { - var params = contract.query[queryFn].params; - var _args = params.map(function (param, i) { return args[i]; }); - // debug('query', queryFn, _params); - // @TODO this need to change - // the +1 parameter is the extra headers we want to pass - var header = args[params.length] || {}; - // @TODO validate against the type - return validateAsync$1(_args, params) - .then(function () { return jsonqlInstance - .query - .apply(jsonqlInstance, [queryFn, _args, header]); } - ) - .catch(finalCatch) - }); - }; - - for (var queryFn in contract.query) loop( queryFn ); - obj.query = query; - return { obj: obj, jsonqlInstance: jsonqlInstance, ee: ee, config: config, contract: contract } - }; - - /** - * create mutation methods - * @param {object} obj to hold all the objects - * @param {object} jsonqlInstance jsonql class instance - * @param {object} ee eventEmitter - * @param {object} config configuration - * @param {object} contract json - * @return {object} modified output for next op - */ - var createMutationMethods = function (obj, jsonqlInstance, ee, config, contract) { - var mutation = {}; - // process the mutation, the reason the mutation has a fixed number of parameters - // there is only the payload, and conditions parameters - // plus a header at the end - var loop = function ( mutationFn ) { - mutation = injectToFn(mutation, mutationFn, function mutationFnHandler(payload, conditions, header) { - if ( header === void 0 ) header = {}; - - //obj.mutation[mutationFn] = (payload, conditions, header = {}) => { - var args = [payload, conditions]; - var params = contract.mutation[mutationFn].params; - return validateAsync$1(args, params) - .then(function () { return jsonqlInstance - .mutation - .apply(jsonqlInstance, [mutationFn, payload, conditions, header]); } - ) - .catch(finalCatch) - }); - }; - - for (var mutationFn in contract.mutation) loop( mutationFn ); - obj.mutation = mutation; - return { obj: obj, jsonqlInstance: jsonqlInstance, ee: ee, config: config, contract: contract } - }; - - /** - * create auth methods - * @param {object} obj to hold all the objects - * @param {object} jsonqlInstance jsonql class instance - * @param {object} ee eventEmitter - * @param {object} config configuration - * @param {object} contract json - * @return {object} modified output for next op - */ - var createAuthMethods = function (obj, jsonqlInstance, ee, config, contract) { - if (config.enableAuth && contract.auth) { - var auth = {}; // v1.3.1 add back the auth prop name in contract - var loginHandlerName = config.loginHandlerName; - var logoutHandlerName = config.logoutHandlerName; - if (contract.auth[loginHandlerName]) { - // changing to the name the config specify - auth[loginHandlerName] = function loginHandlerFn() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var fn = authMethodGenerator(jsonqlInstance, loginHandlerName, config, contract); - return fn.apply(null, args) - .then(jsonqlInstance.postLoginAction) - .then(function (token) { - ee.$trigger(ISSUER_NAME, token); - return token; - }) - }; - } - if (contract.auth[logoutHandlerName]) { - auth[logoutHandlerName] = function logoutHandlerFn() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var fn = authMethodGenerator(jsonqlInstance, logoutHandlerName, config, contract); - return fn.apply(null, args) - .then(jsonqlInstance.postLogoutAction) - .then(function (r) { - ee.$trigger(LOGOUT_NAME, r); - return r; - }) - }; - } else { - auth[logoutHandlerName] = function logoutHandlerFn() { - jsonqlInstance.postLogoutAction(KEY_WORD); - ee.$trigger(LOGOUT_NAME, KEY_WORD); - }; - } - obj.auth = auth; - } - return obj; - }; - - /** - * Here just generate the methods calls - * @param {object} jsonqlInstance what it said - * @param {object} ee event emitter - * @param {object} config configuration - * @param {object} contract the map - * @return {object} with mapped methods - */ - function methodsGenerator(jsonqlInstance, ee, config, contract) { - var obj = {}; - var executor = chainFns(createQueryMethods, createMutationMethods, createAuthMethods); - return executor(obj, jsonqlInstance, ee, config, contract) - } - - // Generate the resolver for developer to use - - /** - * @param {object} jsonqlInstance jsonql class instance - * @param {object} config options - * @param {object} contract the contract - * @param {object} ee eventEmitter - * @return {object} constructed functions call - */ - var generator = function (jsonqlInstance, config, contract, ee) { - // V1.3.0 - now everything wrap inside this method - var client = methodsGenerator(jsonqlInstance, ee, config, contract); - // create the rest of the methods - if (config.enableAuth) { - /** - * new method to allow retrieve the current login user data - * @return {*} userdata - */ - client.userdata = function () { return jsonqlInstance.userdata; }; - } - // allow getting the token for valdiate agains the socket - client.getToken = function () { return jsonqlInstance.rawAuthToken; }; - // this will pass to the ws-client if needed - // client.eventEmitter = ee; - // this will require a param - if (config.exposeContract) { - // 1.4.0 change from the get (raw) to the getContract cache and raw version - client.getContract = function () { return jsonqlInstance.getContract(); }; - } - // this is for the ws to use later - client.eventEmitter = ee; - client.version = '1.4.0'; - // output - return client; - }; - - // all the client configuration options here - var constProps = { - contract: false, - MUTATION_ARGS: ['name', 'payload', 'conditions'], // this seems wrong? - CONTENT_TYPE: CONTENT_TYPE, - BEARER: BEARER, - AUTH_HEADER: AUTH_HEADER - }; - - // grab the localhost name and put into the hostname as default - var getHostName = function () { return ( - [window.location.protocol, window.location.host].join('//') - ); }; - - var appProps$1 = { - - hostname: createConfig$1(getHostName(), [STRING_TYPE]), // required the hostname - jsonqlPath: createConfig$1(JSONQL_PATH, [STRING_TYPE]), // The path on the server - - loginHandlerName: createConfig$1(ISSUER_NAME, [STRING_TYPE]), - logoutHandlerName: createConfig$1(LOGOUT_NAME, [STRING_TYPE]), - // add to koa v1.3.0 - this might remove in the future - enableJsonp: createConfig$1(false, [BOOLEAN_TYPE]), - enableAuth: createConfig$1(false, [BOOLEAN_TYPE]), - // enable useJwt by default - useJwt: createConfig$1(true, [BOOLEAN_TYPE]), - - // the header - // v1.2.0 we are using this option during the dev - // so it won't save anything to the localstorage and fetch a new contract - // whenever the browser reload - useLocalstorage: createConfig$1(true, [BOOLEAN_TYPE]), // should we store the contract into localStorage - storageKey: createConfig$1(CLIENT_STORAGE_KEY, [STRING_TYPE]),// the key to use when store into localStorage - authKey: createConfig$1(CLIENT_AUTH_KEY, [STRING_TYPE]),// the key to use when store into the sessionStorage - contractExpired: createConfig$1(0, [NUMBER_TYPE]),// -1 always fetch contract, - // 0 never expired, - // > 0 then compare the timestamp with the current one to see if we need to get contract again - // useful during development - keepContract: createConfig$1(true, [BOOLEAN_TYPE]), - exposeContract: createConfig$1(false, [BOOLEAN_TYPE]), - // @1.2.1 new option for the contract-console to fetch the contract with description - showContractDesc: createConfig$1(false, [BOOLEAN_TYPE]), - contractKey: createConfig$1(false, [BOOLEAN_TYPE]), // if the server side is lock by the key you need this - contractKeyName: createConfig$1(CONTRACT_KEY_NAME, [STRING_TYPE]), // same as above they go in pairs - enableTimeout: createConfig$1(false, [BOOLEAN_TYPE]), // @TODO - timeout: createConfig$1(5000, [NUMBER_TYPE]), // 5 seconds - returnInstance: createConfig$1(false, [BOOLEAN_TYPE]), - allowReturnRawToken: createConfig$1(false, [BOOLEAN_TYPE]), - debugOn: createConfig$1(false, [BOOLEAN_TYPE]) - }; - - // we must ensure the user passing the correct options - - function checkOptionsAsync$1(config) { - var contract = config.contract; - return checkConfigAsync$1(config, appProps$1, constProps) - .then(function (opts) { - opts.contract = contract; - return opts; - }) - } - - // this is new for the flyio and normalize the name from now on - - /** - * Main interface for jsonql fetch api - * @param {object} config - * @param {object} Fly this is really pain in the backside ... long story - * @return {object} jsonql client - */ - function jsonqlAsync(ee, config, Fly) { - if ( config === void 0 ) config = {}; - if ( Fly === void 0 ) Fly = null; - - return checkOptionsAsync$1(config) - .then(function (opts) { return ( - { - baseClient: new JsonqlBaseClient(opts, Fly), - opts: opts - } - ); }) - .then( function (ref) { - var baseClient = ref.baseClient; - var opts = ref.opts; - - return ( - getContractFromConfig(baseClient, opts.contract) - .then(function (contract) { return generator(baseClient, opts, contract, ee); } - ) - ); - } - ) - } - - var NB_EVENT_SERVICE_PRIVATE_STORE = new WeakMap(); - var NB_EVENT_SERVICE_PRIVATE_LAZY = new WeakMap(); - - /** - * generate a 32bit hash based on the function.toString() - * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery - * @param {string} s the converted to string function - * @return {string} the hashed function string - */ - function hashCode(s) { - return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0) - } - - // making all the functionality on it's own - // import { WatchClass } from './watch' - - var SuspendClass = function SuspendClass() { - // suspend, release and queue - this.__suspend__ = null; - this.queueStore = new Set(); - /* - this.watch('suspend', function(value, prop, oldValue) { - this.logger(`${prop} set from ${oldValue} to ${value}`) - // it means it set the suspend = true then release it - if (oldValue === true && value === false) { - // we want this happen after the return happens - setTimeout(() => { - this.release() - }, 1) - } - return value; // we need to return the value to store it - }) - */ - }; - - var prototypeAccessors$1 = { $suspend: { configurable: true },$queues: { configurable: true } }; - - /** - * setter to set the suspend and check if it's boolean value - * @param {boolean} value to trigger - */ - prototypeAccessors$1.$suspend.set = function (value) { - var this$1 = this; - - if (typeof value === 'boolean') { - var lastValue = this.__suspend__; - this.__suspend__ = value; - this.logger('($suspend)', ("Change from " + lastValue + " --> " + value)); - if (lastValue === true && value === false) { - setTimeout(function () { - this$1.release(); - }, 1); - } - } else { - throw new Error("$suspend only accept Boolean value!") - } - }; - - /** - * queuing call up when it's in suspend mode - * @param {any} value - * @return {Boolean} true when added or false when it's not - */ - SuspendClass.prototype.$queue = function $queue () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (this.__suspend__ === true) { - this.logger('($queue)', 'added to $queue', args); - // there shouldn't be any duplicate ... - this.queueStore.add(args); - } - return this.__suspend__; - }; - - /** - * a getter to get all the store queue - * @return {array} Set turn into Array before return - */ - prototypeAccessors$1.$queues.get = function () { - var size = this.queueStore.size; - this.logger('($queues)', ("size: " + size)); - if (size > 0) { - return Array.from(this.queueStore) - } - return [] - }; - - /** - * Release the queue - * @return {int} size if any - */ - SuspendClass.prototype.release = function release () { - var this$1 = this; - - var size = this.queueStore.size; - this.logger('(release)', ("Release was called " + size)); - if (size > 0) { - var queue = Array.from(this.queueStore); - this.queueStore.clear(); - this.logger('queue', queue); - queue.forEach(function (args) { - this$1.logger(args); - Reflect.apply(this$1.$trigger, this$1, args); - }); - this.logger(("Release size " + (this.queueStore.size))); - } - }; - - Object.defineProperties( SuspendClass.prototype, prototypeAccessors$1 ); - - // break up the main file because its getting way too long - - var NbEventServiceBase = /*@__PURE__*/(function (SuspendClass) { - function NbEventServiceBase(config) { - if ( config === void 0 ) config = {}; - - SuspendClass.call(this); - if (config.logger && typeof config.logger === 'function') { - this.logger = config.logger; - } - this.keep = config.keep; - // for the $done setter - this.result = config.keep ? [] : null; - // we need to init the store first otherwise it could be a lot of checking later - this.normalStore = new Map(); - this.lazyStore = new Map(); - } - - if ( SuspendClass ) NbEventServiceBase.__proto__ = SuspendClass; - NbEventServiceBase.prototype = Object.create( SuspendClass && SuspendClass.prototype ); - NbEventServiceBase.prototype.constructor = NbEventServiceBase; - - var prototypeAccessors = { normalStore: { configurable: true },lazyStore: { configurable: true } }; - - /** - * validate the event name(s) - * @param {string[]} evt event name - * @return {boolean} true when OK - */ - NbEventServiceBase.prototype.validateEvt = function validateEvt () { - var this$1 = this; - var evt = [], len = arguments.length; - while ( len-- ) evt[ len ] = arguments[ len ]; - - evt.forEach(function (e) { - if (typeof e !== 'string') { - this$1.logger('(validateEvt)', e); - throw new Error("event name must be string type!") - } - }); - return true; - }; - - /** - * Simple quick check on the two main parameters - * @param {string} evt event name - * @param {function} callback function to call - * @return {boolean} true when OK - */ - NbEventServiceBase.prototype.validate = function validate (evt, callback) { - if (this.validateEvt(evt)) { - if (typeof callback === 'function') { - return true; - } - } - throw new Error("callback required to be function type!") - }; - - /** - * Check if this type is correct or not added in V1.5.0 - * @param {string} type for checking - * @return {boolean} true on OK - */ - NbEventServiceBase.prototype.validateType = function validateType (type) { - var types = ['on', 'only', 'once', 'onlyOnce']; - return !!types.filter(function (t) { return type === t; }).length; - }; - - /** - * Run the callback - * @param {function} callback function to execute - * @param {array} payload for callback - * @param {object} ctx context or null - * @return {void} the result store in $done - */ - NbEventServiceBase.prototype.run = function run (callback, payload, ctx) { - this.logger('(run)', callback, payload, ctx); - this.$done = Reflect.apply(callback, ctx, this.toArray(payload)); - }; - - /** - * Take the content out and remove it from store id by the name - * @param {string} evt event name - * @param {string} [storeName = lazyStore] name of store - * @return {object|boolean} content or false on not found - */ - NbEventServiceBase.prototype.takeFromStore = function takeFromStore (evt, storeName) { - if ( storeName === void 0 ) storeName = 'lazyStore'; - - var store = this[storeName]; // it could be empty at this point - if (store) { - this.logger('(takeFromStore)', storeName, store); - if (store.has(evt)) { - var content = store.get(evt); - this.logger('(takeFromStore)', ("has " + evt), content); - store.delete(evt); - return content; - } - return false; - } - throw new Error((storeName + " is not supported!")) - }; - - /** - * The add to store step is similar so make it generic for resuse - * @param {object} store which store to use - * @param {string} evt event name - * @param {spread} args because the lazy store and normal store store different things - * @return {array} store and the size of the store - */ - NbEventServiceBase.prototype.addToStore = function addToStore (store, evt) { - var args = [], len = arguments.length - 2; - while ( len-- > 0 ) args[ len ] = arguments[ len + 2 ]; - - var fnSet; - if (store.has(evt)) { - this.logger('(addToStore)', (evt + " existed")); - fnSet = store.get(evt); - } else { - this.logger('(addToStore)', ("create new Set for " + evt)); - // this is new - fnSet = new Set(); - } - // lazy only store 2 items - this is not the case in V1.6.0 anymore - // we need to check the first parameter is string or not - if (args.length > 2) { - if (Array.isArray(args[0])) { // lazy store - // check if this type of this event already register in the lazy store - var t = args[2]; - if (!this.checkTypeInLazyStore(evt, t)) { - fnSet.add(args); - } - } else { - if (!this.checkContentExist(args, fnSet)) { - this.logger('(addToStore)', "insert new", args); - fnSet.add(args); - } - } - } else { // add straight to lazy store - fnSet.add(args); - } - store.set(evt, fnSet); - return [store, fnSet.size] - }; - - /** - * @param {array} args for compare - * @param {object} fnSet A Set to search from - * @return {boolean} true on exist - */ - NbEventServiceBase.prototype.checkContentExist = function checkContentExist (args, fnSet) { - var list = Array.from(fnSet); - return !!list.filter(function (l) { - var hash = l[0]; - if (hash === args[0]) { - return true; - } - return false; - }).length; - }; - - /** - * get the existing type to make sure no mix type add to the same store - * @param {string} evtName event name - * @param {string} type the type to check - * @return {boolean} true you can add, false then you can't add this type - */ - NbEventServiceBase.prototype.checkTypeInStore = function checkTypeInStore (evtName, type) { - this.validateEvt(evtName, type); - var all = this.$get(evtName, true); - if (all === false) { - // pristine it means you can add - return true; - } - // it should only have ONE type in ONE event store - return !all.filter(function (list) { - var t = list[3]; - return type !== t; - }).length; - }; - - /** - * This is checking just the lazy store because the structure is different - * therefore we need to use a new method to check it - */ - NbEventServiceBase.prototype.checkTypeInLazyStore = function checkTypeInLazyStore (evtName, type) { - this.validateEvt(evtName, type); - var store = this.lazyStore.get(evtName); - this.logger('(checkTypeInLazyStore)', store); - if (store) { - return !!Array - .from(store) - .filter(function (l) { - var t = l[2]; - return t !== type; - }).length - } - return false; - }; - - /** - * wrapper to re-use the addToStore, - * V1.3.0 add extra check to see if this type can add to this evt - * @param {string} evt event name - * @param {string} type on or once - * @param {function} callback function - * @param {object} context the context the function execute in or null - * @return {number} size of the store - */ - NbEventServiceBase.prototype.addToNormalStore = function addToNormalStore (evt, type, callback, context) { - if ( context === void 0 ) context = null; - - this.logger('(addToNormalStore)', evt, type, 'try to add to normal store'); - // @TODO we need to check the existing store for the type first! - if (this.checkTypeInStore(evt, type)) { - this.logger('(addToNormalStore)', (type + " can add to " + evt + " normal store")); - var key = this.hashFnToKey(callback); - var args = [this.normalStore, evt, key, callback, context, type]; - var ref = Reflect.apply(this.addToStore, this, args); - var _store = ref[0]; - var size = ref[1]; - this.normalStore = _store; - return size; - } - return false; - }; - - /** - * Add to lazy store this get calls when the callback is not register yet - * so we only get a payload object or even nothing - * @param {string} evt event name - * @param {array} payload of arguments or empty if there is none - * @param {object} [context=null] the context the callback execute in - * @param {string} [type=false] register a type so no other type can add to this evt - * @return {number} size of the store - */ - NbEventServiceBase.prototype.addToLazyStore = function addToLazyStore (evt, payload, context, type) { - if ( payload === void 0 ) payload = []; - if ( context === void 0 ) context = null; - if ( type === void 0 ) type = false; - - // this is add in V1.6.0 - // when there is type then we will need to check if this already added in lazy store - // and no other type can add to this lazy store - var args = [this.lazyStore, evt, this.toArray(payload), context]; - if (type) { - args.push(type); - } - var ref = Reflect.apply(this.addToStore, this, args); - var _store = ref[0]; - var size = ref[1]; - this.lazyStore = _store; - return size; - }; - - /** - * make sure we store the argument correctly - * @param {*} arg could be array - * @return {array} make sured - */ - NbEventServiceBase.prototype.toArray = function toArray (arg) { - return Array.isArray(arg) ? arg : [arg]; - }; - - /** - * setter to store the Set in private - * @param {object} obj a Set - */ - prototypeAccessors.normalStore.set = function (obj) { - NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj); - }; - - /** - * @return {object} Set object - */ - prototypeAccessors.normalStore.get = function () { - return NB_EVENT_SERVICE_PRIVATE_STORE.get(this) - }; - - /** - * setter to store the Set in lazy store - * @param {object} obj a Set - */ - prototypeAccessors.lazyStore.set = function (obj) { - NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj); - }; - - /** - * @return {object} the lazy store Set - */ - prototypeAccessors.lazyStore.get = function () { - return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this) - }; - - /** - * generate a hashKey to identify the function call - * The build-in store some how could store the same values! - * @param {function} fn the converted to string function - * @return {string} hashKey - */ - NbEventServiceBase.prototype.hashFnToKey = function hashFnToKey (fn) { - return hashCode(fn.toString()) + ''; - }; - - Object.defineProperties( NbEventServiceBase.prototype, prototypeAccessors ); - - return NbEventServiceBase; - }(SuspendClass)); - - // The top level - // export - var EventService = /*@__PURE__*/(function (NbStoreService) { - function EventService(config) { - if ( config === void 0 ) config = {}; - - NbStoreService.call(this, config); - } - - if ( NbStoreService ) EventService.__proto__ = NbStoreService; - EventService.prototype = Object.create( NbStoreService && NbStoreService.prototype ); - EventService.prototype.constructor = EventService; - - var prototypeAccessors = { $done: { configurable: true } }; - - /** - * logger function for overwrite - */ - EventService.prototype.logger = function logger () {}; - - ////////////////////////// - // PUBLIC METHODS // - ////////////////////////// - - /** - * Register your evt handler, note we don't check the type here, - * we expect you to be sensible and know what you are doing. - * @param {string} evt name of event - * @param {function} callback bind method --> if it's array or not - * @param {object} [context=null] to execute this call in - * @return {number} the size of the store - */ - EventService.prototype.$on = function $on (evt , callback , context) { - var this$1 = this; - if ( context === void 0 ) context = null; - - var type = 'on'; - this.validate(evt, callback); - // first need to check if this evt is in lazy store - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register first then call later - if (lazyStoreContent === false) { - this.logger('($on)', (evt + " callback is not in lazy store")); - // @TODO we need to check if there was other listener to this - // event and are they the same type then we could solve that - // register the different type to the same event name - - return this.addToNormalStore(evt, type, callback, context) - } - this.logger('($on)', (evt + " found in lazy store")); - // this is when they call $trigger before register this callback - var size = 0; - lazyStoreContent.forEach(function (content) { - var payload = content[0]; - var ctx = content[1]; - var t = content[2]; - if (t && t !== type) { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this$1.logger("($on)", ("call run on " + evt)); - this$1.run(callback, payload, context || ctx); - size += this$1.addToNormalStore(evt, type, callback, context || ctx); - }); - return size; - }; - - /** - * once only registered it once, there is no overwrite option here - * @NOTE change in v1.3.0 $once can add multiple listeners - * but once the event fired, it will remove this event (see $only) - * @param {string} evt name - * @param {function} callback to execute - * @param {object} [context=null] the handler execute in - * @return {boolean} result - */ - EventService.prototype.$once = function $once (evt , callback , context) { - if ( context === void 0 ) context = null; - - this.validate(evt, callback); - var type = 'once'; - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register before call $trigger - var nStore = this.normalStore; - if (lazyStoreContent === false) { - this.logger('($once)', (evt + " not in the lazy store")); - // v1.3.0 $once now allow to add multiple listeners - return this.addToNormalStore(evt, type, callback, context) - } else { - // now this is the tricky bit - // there is a potential bug here that cause by the developer - // if they call $trigger first, the lazy won't know it's a once call - // so if in the middle they register any call with the same evt name - // then this $once call will be fucked - add this to the documentation - this.logger('($once)', lazyStoreContent); - var list = Array.from(lazyStoreContent); - // should never have more than 1 - var ref = list[0]; - var payload = ref[0]; - var ctx = ref[1]; - var t = ref[2]; - if (t && t !== type) { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this.logger('($once)', ("call run for " + evt)); - this.run(callback, payload, context || ctx); - // remove this evt from store - this.$off(evt); - } - }; - - /** - * This one event can only bind one callbackback - * @param {string} evt event name - * @param {function} callback event handler - * @param {object} [context=null] the context the event handler execute in - * @return {boolean} true bind for first time, false already existed - */ - EventService.prototype.$only = function $only (evt, callback, context) { - var this$1 = this; - if ( context === void 0 ) context = null; - - this.validate(evt, callback); - var type = 'only'; - var added = false; - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register before call $trigger - var nStore = this.normalStore; - if (!nStore.has(evt)) { - this.logger("($only)", (evt + " add to store")); - added = this.addToNormalStore(evt, type, callback, context); - } - if (lazyStoreContent !== false) { - // there are data store in lazy store - this.logger('($only)', (evt + " found data in lazy store to execute")); - var list = Array.from(lazyStoreContent); - // $only allow to trigger this multiple time on the single handler - list.forEach( function (l) { - var payload = l[0]; - var ctx = l[1]; - var t = l[2]; - if (t && t !== type) { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this$1.logger("($only)", ("call run for " + evt)); - this$1.run(callback, payload, context || ctx); - }); - } - return added; - }; - - /** - * $only + $once this is because I found a very subtile bug when we pass a - * resolver, rejecter - and it never fire because that's OLD added in v1.4.0 - * @param {string} evt event name - * @param {function} callback to call later - * @param {object} [context=null] exeucte context - * @return {void} - */ - EventService.prototype.$onlyOnce = function $onlyOnce (evt, callback, context) { - if ( context === void 0 ) context = null; - - this.validate(evt, callback); - var type = 'onlyOnce'; - var added = false; - var lazyStoreContent = this.takeFromStore(evt); - // this is normal register before call $trigger - var nStore = this.normalStore; - if (!nStore.has(evt)) { - this.logger("($onlyOnce)", (evt + " add to store")); - added = this.addToNormalStore(evt, type, callback, context); - } - if (lazyStoreContent !== false) { - // there are data store in lazy store - this.logger('($onlyOnce)', lazyStoreContent); - var list = Array.from(lazyStoreContent); - // should never have more than 1 - var ref = list[0]; - var payload = ref[0]; - var ctx = ref[1]; - var t = ref[2]; - if (t && t !== 'onlyOnce') { - throw new Error(("You are trying to register an event already been taken by other type: " + t)) - } - this.logger("($onlyOnce)", ("call run for " + evt)); - this.run(callback, payload, context || ctx); - // remove this evt from store - this.$off(evt); - } - return added; - }; - - /** - * This is a shorthand of $off + $on added in V1.5.0 - * @param {string} evt event name - * @param {function} callback to exeucte - * @param {object} [context = null] or pass a string as type - * @param {string} [type=on] what type of method to replace - * @return {} - */ - EventService.prototype.$replace = function $replace (evt, callback, context, type) { - if ( context === void 0 ) context = null; - if ( type === void 0 ) type = 'on'; - - if (this.validateType(type)) { - this.$off(evt); - var method = this['$' + type]; - this.logger("($replace)", evt, callback); - return Reflect.apply(method, this, [evt, callback, context]) - } - throw new Error((type + " is not supported!")) - }; - - /** - * trigger the event - * @param {string} evt name NOT allow array anymore! - * @param {mixed} [payload = []] pass to fn - * @param {object|string} [context = null] overwrite what stored - * @param {string} [type=false] if pass this then we need to add type to store too - * @return {number} if it has been execute how many times - */ - EventService.prototype.$trigger = function $trigger (evt , payload , context, type) { - if ( payload === void 0 ) payload = []; - if ( context === void 0 ) context = null; - if ( type === void 0 ) type = false; - - this.validateEvt(evt); - var found = 0; - // first check the normal store - var nStore = this.normalStore; - this.logger('($trigger)', 'normalStore', nStore); - if (nStore.has(evt)) { - // @1.8.0 to add the suspend queue - var added = this.$queue(evt, payload, context, type); - this.logger('($trigger)', evt, 'found; add to queue: ', added); - if (added === true) { - this.logger('($trigger)', evt, 'not executed. Exit now.'); - return false; // not executed - } - var nSet = Array.from(nStore.get(evt)); - var ctn = nSet.length; - var hasOnce = false; - for (var i=0; i < ctn; ++i) { - ++found; - // this.logger('found', found) - var ref = nSet[i]; - var _ = ref[0]; - var callback = ref[1]; - var ctx = ref[2]; - var type$1 = ref[3]; - this.logger("($trigger)", ("call run for " + evt)); - this.run(callback, payload, context || ctx); - if (type$1 === 'once' || type$1 === 'onlyOnce') { - hasOnce = true; - } - } - if (hasOnce) { - nStore.delete(evt); - } - return found; - } - // now this is not register yet - this.addToLazyStore(evt, payload, context, type); - return found; - }; - - /** - * this is an alias to the $trigger - * @NOTE breaking change in V1.6.0 we swap the parameter around - * @param {string} evt event name - * @param {*} params pass to the callback - * @param {string} type of call - * @param {object} context what context callback execute in - * @return {*} from $trigger - */ - EventService.prototype.$call = function $call (evt, params, type, context) { - if ( type === void 0 ) type = false; - if ( context === void 0 ) context = null; - - var args = [evt, params, context, type]; - return Reflect.apply(this.$trigger, this, args) - }; - - /** - * remove the evt from all the stores - * @param {string} evt name - * @return {boolean} true actually delete something - */ - EventService.prototype.$off = function $off (evt) { - var this$1 = this; - - this.validateEvt(evt); - var stores = [ this.lazyStore, this.normalStore ]; - var found = false; - stores.forEach(function (store) { - if (store.has(evt)) { - found = true; - this$1.logger('($off)', evt); - store.delete(evt); - } - }); - return found; - }; - - /** - * return all the listener from the event - * @param {string} evtName event name - * @param {boolean} [full=false] if true then return the entire content - * @return {array|boolean} listerner(s) or false when not found - */ - EventService.prototype.$get = function $get (evt, full) { - if ( full === void 0 ) full = false; - - this.validateEvt(evt); - var store = this.normalStore; - if (store.has(evt)) { - return Array - .from(store.get(evt)) - .map( function (l) { - if (full) { - return l; - } - var key = l[0]; - var callback = l[1]; - return callback; - }) - } - return false; - }; - - /** - * store the return result from the run - * @param {*} value whatever return from callback - */ - prototypeAccessors.$done.set = function (value) { - this.logger('($done)', 'value: ', value); - if (this.keep) { - this.result.push(value); - } else { - this.result = value; - } - }; - - /** - * @TODO is there any real use with the keep prop? - * getter for $done - * @return {*} whatever last store result - */ - prototypeAccessors.$done.get = function () { - if (this.keep) { - this.logger('(get $done)', this.result); - return this.result[this.result.length - 1] - } - return this.result; - }; - - Object.defineProperties( EventService.prototype, prototypeAccessors ); - - return EventService; - }(NbEventServiceBase)); - - // default - - // this will generate a event emitter and will be use everywhere - // output - function getEventEmitter(debugOn) { - var logger = debugOn ? function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args.unshift('[NBS]'); - console.log.apply(null, args); - }: undefined; - return new EventService({ logger: logger }) - } - - // this one will use the esm module - - /** - * When pass a static contract then it return a static interface - * otherwise it will become the async interface - * @param {object} Fly the http engine - * @param {object} config configuration - * @return {object} jsonqlClient - */ - function jsonqlClient(Fly, config) { - var ee = getEventEmitter(config.debugOn); - return jsonqlAsync(ee, config, Fly) - } - - return jsonqlClient; - -}))); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t=t||self).jsonqlClient=r()}(this,(function(){"use strict";var t="application/vnd.api+json",r={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},e=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message";var l="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},p="object"==typeof l&&l&&l.Object===Object&&l,h="object"==typeof self&&self&&self.Object===Object&&self,d=p||h||Function("return this")(),v=d.Symbol;function g(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 i=Array(o);++n-1;);return e}(n,o),function(t,r){for(var e=t.length;e--&&F(r,t[e],0)>-1;);return e}(n,o)+1).join("")}function X(t){return void 0===t}var Z="[object Boolean]";var tt="[object Number]";function rt(t){return function(t){return"number"==typeof t||k(t)&&A(t)==tt}(t)&&t!=+t}var et="[object String]";function nt(t){return"string"==typeof t||!y(t)&&k(t)&&A(t)==et}function ot(t,r){return function(e){return t(r(e))}}var it=ot(Object.getPrototypeOf,Object),at="[object Object]",ut=Function.prototype,ct=Object.prototype,st=ut.toString,ft=ct.hasOwnProperty,lt=st.call(Object);function pt(t){if(!k(t)||A(t)!=at)return!1;var r=it(t);if(null===r)return!0;var e=ft.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&st.call(e)==lt}var ht,dt=function(t,r,e){for(var n=-1,o=Object(t),i=e(t),a=i.length;a--;){var u=i[ht?a:++n];if(!1===r(o[u],u,o))break}return t};var vt="[object Arguments]";function gt(t){return k(t)&&A(t)==vt}var yt=Object.prototype,bt=yt.hasOwnProperty,mt=yt.propertyIsEnumerable,_t=gt(function(){return arguments}())?gt:function(t){return k(t)&&bt.call(t,"callee")&&!mt.call(t,"callee")};var wt="object"==typeof exports&&exports&&!exports.nodeType&&exports,jt=wt&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=jt&&jt.exports===wt?d.Buffer:void 0,St=(Ot?Ot.isBuffer:void 0)||function(){return!1},Et=9007199254740991,At=/^(?:0|[1-9]\d*)$/;function kt(t,r){var e=typeof t;return!!(r=null==r?Et:r)&&("number"==e||"symbol"!=e&&At.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Tt}var Pt={};Pt["[object Float32Array]"]=Pt["[object Float64Array]"]=Pt["[object Int8Array]"]=Pt["[object Int16Array]"]=Pt["[object Int32Array]"]=Pt["[object Uint8Array]"]=Pt["[object Uint8ClampedArray]"]=Pt["[object Uint16Array]"]=Pt["[object Uint32Array]"]=!0,Pt["[object Arguments]"]=Pt["[object Array]"]=Pt["[object ArrayBuffer]"]=Pt["[object Boolean]"]=Pt["[object DataView]"]=Pt["[object Date]"]=Pt["[object Error]"]=Pt["[object Function]"]=Pt["[object Map]"]=Pt["[object Number]"]=Pt["[object Object]"]=Pt["[object RegExp]"]=Pt["[object Set]"]=Pt["[object String]"]=Pt["[object WeakMap]"]=!1;var qt,Ct="object"==typeof exports&&exports&&!exports.nodeType&&exports,$t=Ct&&"object"==typeof module&&module&&!module.nodeType&&module,zt=$t&&$t.exports===Ct&&p.process,Nt=function(){try{var t=$t&&$t.require&&$t.require("util").types;return t||zt&&zt.binding&&zt.binding("util")}catch(t){}}(),Ft=Nt&&Nt.isTypedArray,It=Ft?(qt=Ft,function(t){return qt(t)}):function(t){return k(t)&&xt(t.length)&&!!Pt[A(t)]},Rt=Object.prototype.hasOwnProperty;function Jt(t,r){var e=y(t),n=!e&&_t(t),o=!e&&!n&&St(t),i=!e&&!n&&!o&&It(t),a=e||n||o||i,u=a?function(t,r){for(var e=-1,n=Array(t);++e-1},er.prototype.set=function(t,r){var e=this.__data__,n=tr(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var nr,or=d["__core-js_shared__"],ir=(nr=/[^.]+$/.exec(or&&or.keys&&or.keys.IE_PROTO||""))?"Symbol(src)_1."+nr:"";var ar=Function.prototype.toString;function ur(t){if(null!=t){try{return ar.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var cr=/^\[object .+?Constructor\]$/,sr=Function.prototype,fr=Object.prototype,lr=sr.toString,pr=fr.hasOwnProperty,hr=RegExp("^"+lr.call(pr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function dr(t){return!(!Lt(t)||function(t){return!!ir&&ir in t}(t))&&(Yt(t)?hr:cr).test(ur(t))}function vr(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return dr(e)?e:void 0}var gr=vr(d,"Map"),yr=vr(Object,"create");var br="__lodash_hash_undefined__",mr=Object.prototype.hasOwnProperty;var _r=Object.prototype.hasOwnProperty;var wr="__lodash_hash_undefined__";function jr(t){var r=-1,e=null==t?0:t.length;for(this.clear();++ru))return!1;var s=i.get(t);if(s&&i.get(r))return s==r;var f=-1,l=!0,p=e&qr?new Tr:void 0;for(i.set(t,r),i.set(r,t);++f0){if(++r>=mn)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(bn);function On(t,r){return jn(function(t,r,e){return r=yn(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,i=yn(n.length-r,0),a=Array(i);++o1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=Sn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!Lt(e))return!1;var n=typeof r;return!!("number"==n?Wt(e)&&kt(r,e.length):"string"==n&&r in e)&&Zt(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0))},Kn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},Vn=function(t,r){var e=t.arg;return r.length>1?!e.filter((function(t){return!(r.length>r.filter((function(r){return!Ln(r)(t)})).length)})).length:r.length>r.filter((function(t){return!Bn(e,t)})).length},Gn=function(t,r){if(void 0===r&&(r=null),pt(t)){if(!r)return!0;if(Bn(r))return!r.filter((function(r){var e=t[r.name];return!(r.type.length>r.type.filter((function(t){var r;return!!X(e)||(!1!==(r=Kn(t))?!Vn({arg:e},r):!Ln(t)(e))})).length)})).length}return!1},Yn=function(t){var r=t.arg,e=t.param,n=[r];return Array.isArray(e.keys)&&e.keys.length&&n.push(e.keys),Gn.apply(null,n)},Wn=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 406},e.name.get=function(){return"Jsonql406Error"},Object.defineProperties(r,e),r}(Error),Qn=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"Jsonql500Error"},Object.defineProperties(r,e),r}(Error),Xn=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(r,e),r}(Error),Zn=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 401},e.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(r,e),r}(Error),to=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={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 500},e.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(r,e),r}(Error),ro=function(){try{if(window||document)return!0}catch(t){}return!1},eo=function(){try{if(!ro()&&l)return!0}catch(t){}return!1};var no=function(t){function r(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];t.apply(this,r)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.where=function(){return ro()?"browser":eo()?"node":"unknown"},r}(Error),oo=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,Error.captureStackTrace&&Error.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={statusCode:{configurable:!0},name:{configurable:!0}};return e.statusCode.get=function(){return 404},e.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(r,e),r}(no),io=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"JsonqlEnumError"},Object.defineProperties(r,e),r}(Error),ao=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"JsonqlTypeError"},Object.defineProperties(r,e),r}(Error),uo=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"JsonqlCheckerError"},Object.defineProperties(r,e),r}(Error),co=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,Error.captureStackTrace&&Error.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}(no),so=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,Error.captureStackTrace&&Error.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}(no),fo=function(t){function r(e,n){t.call(this,n),this.statusCode=e,this.className=r.name}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"JsonqlServerError"},Object.defineProperties(r,e),r}(Error),lo=Object.freeze({__proto__:null,Jsonql406Error:Wn,Jsonql500Error:Qn,JsonqlAuthorisationError:Xn,JsonqlContractAuthError:Zn,JsonqlResolverAppError:to,JsonqlResolverNotFoundError:oo,JsonqlEnumError:io,JsonqlTypeError:ao,JsonqlCheckerError:uo,JsonqlValidationError:co,JsonqlError:so,JsonqlServerError:fo}),po=so,ho=function(t,r){return!!Object.keys(t).filter((function(t){return r===t})).length};function vo(t){if(ho(t,"error")){var r=t.error,e=r.className,n=r.name,o=e||n,i=r.message||f,a=r.detail||r;if(o&&lo[o])throw new lo[e](i,a);throw new po(i,a)}return t}function go(t){if(Array.isArray(t))throw new co("",t);var r=t.message||f,e=t.detail||t;switch(!0){case t instanceof Wn:throw new Wn(r,e);case t instanceof Qn:throw new Qn(r,e);case t instanceof Xn:throw new Xn(r,e);case t instanceof Zn:throw new Zn(r,e);case t instanceof to:throw new to(r,e);case t instanceof oo:throw new oo(r,e);case t instanceof io:throw new io(r,e);case t instanceof ao:throw new ao(r,e);case t instanceof uo:throw new uo(r,e);case t instanceof co:throw new co(r,e);case t instanceof fo:throw new fo(r,e);default:throw new so(r,e)}}function yo(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var bo=function(t,r){var e;switch(!0){case"object"===t:return!Yn(r);case"array"===t:return!Bn(r.arg);case!1!==(e=Kn(t)):return!Vn(r,e);default:return!Ln(t)(r.arg)}},mo=function(t,r){return X(t)?!0!==r.optional||X(r.defaultvalue)?null:r.defaultvalue:t},_o=function(t,r,e){var n;void 0===e&&(e=!1);var o=function(t,r){if(!Bn(r))throw new so("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!Bn(t))throw new so("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 yo(1),t.map((function(t,e){return{arg:t,index:e,param:r[e]}}));case!0===r[0].variable:yo(2);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:yo(4);var n=r.length,o=["any"];return t.map((function(t,e){var i=e>=n||!!r[e].optional,a=r[e]||{type:o,name:"_"+e};return{arg:i?mo(t,a):t,index:e,param:a,optional:i}}));default:throw yo(5),new so("Could not understand your arguments and parameter structure!",{args:t,params:r})}}(t,r),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,e=t.param;return!!Cn(r)&&!(e.type.length>e.type.filter((function(r){return bo(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return bo(r,t)})).length)}));return e?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},wo=function(t,r){var e,n=Object.keys(t);return e=r,!!n.filter((function(t){return t===e})).length},jo=function(t){return!Cn(t)};function Oo(t,r){var e=qn(r,(function(t,r){return!t[Dn]}));return Oe(e,{})?t:function(t,r){var e={};return r=Ye(r),Xt(t,(function(t,n,o){Qe(e,r(t,n,o),t)})),e}(t,(function(t,r){return function(t,r,e){var n;return e(t,(function(t,e,o){if(r(t,e,o))return n=e,!1})),n}(e,Ye((function(t){return t.alias===r})),Xt)||r}))}function So(t,r){return An(r,(function(r,e){var n,o;return X(t[e])||!0===r[Rn]&&jo(t[e])?En({},r,((n={})[Hn]=!0,n)):((o={})[Mn]=t[e],o[In]=r[In],o[Rn]=r[Rn]||!1,o[Jn]=r[Jn]||!1,o[Un]=r[Un]||!1,o)}))}function Eo(t,r){var e=function(t,r){var e=Oo(t,r);return{pristineValues:An(qn(r,(function(t,r){return wo(e,r)})),(function(t){return t.args})),checkAgainstAppProps:qn(r,(function(t,r){return!wo(e,r)})),config:e}}(t,r),n=e.config,o=e.pristineValues;return[So(n,e.checkAgainstAppProps),o]}var Ao=function(t){return Bn(t)?t:[t]};var ko=function(t,r){return!Bn(r)||function(t,r){return!!t.filter((function(t){return t===r})).length}(r,t)},To=function(t,r){try{return!!Yt(r)&&r.apply(null,[t])}catch(t){return!1}};function xo(t){return function(r,e){if(r[Hn])return r[Mn];var n=function(t,r){var e,n=[[t[Mn]],[(e={},e[In]=Ao(t[In]),e[Rn]=t[Rn],e)]];return Reflect.apply(r,null,n)}(r,t);if(n.length)throw yo("runValidationAction",e,r),new ao(e,n);if(!1!==r[Jn]&&!ko(r[Mn],r[Jn]))throw yo(Jn,r[Jn]),new io(e);if(!1!==r[Un]&&!To(r[Mn],r[Un]))throw yo(Un,r[Un]),new uo(e);return r[Mn]}}var Po=function(t,r){return Promise.resolve(Eo(t,r))};function qo(t,r,e,n){return void 0===t&&(t={}),Po(t,r).then((function(t){return function(t,r){var e=t[0],n=t[1],o=An(e,xo(r));return En(o,n)}(t,n)})).then((function(t){return En({},t,e)}))}function Co(t,r,e,s,f,l){void 0===e&&(e=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=r,!0===e&&(p[o]=!0),Bn(s)&&(p[i]=s),Yt(f)&&(p[u]=f),nt(l)&&(p[c]=l),p}var $o=zn,zo=Bn,No=function(t,r,e){return void 0===e&&(e=!1),new Promise((function(n,o){var i=_o(t,r,e);return e?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Fo=function(t,r,e){void 0===e&&(e={});var n=e[o],a=e[i],s=e[u],f=e[c];return Co.apply(null,[t,r,n,a,s,f])},Io=function(t){return function(r,e,n){return void 0===n&&(n={}),qo(r,e,n,t)}}(_o),Ro="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Jo=Object.assign?Object.assign:function(t,r,e,n){for(var o=arguments,i=1;i=0;r--){var e=ui().key(r);t(ci(e),e)}},remove:function(t){return ui().removeItem(t)},clearAll:function(){return ui().clear()}};function ui(){return ii.localStorage}function ci(t){return ui().getItem(t)}var si=Ho.trim,fi={name:"cookieStorage",read:function(t){if(!t||!di(t))return null;var r="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(li.cookie.replace(new RegExp(r),"$1"))},write:function(t,r){if(!t)return;li.cookie=escape(t)+"="+escape(r)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:pi,remove:hi,clearAll:function(){pi((function(t,r){hi(r)}))}},li=Ho.Global.document;function pi(t){for(var r=li.cookie.split(/; ?/g),e=r.length-1;e>=0;e--)if(si(r[e])){var n=r[e].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function hi(t){t&&di(t)&&(li.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function di(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(li.cookie)}var vi=function(){var t={};return{defaults:function(r,e){t=e},get:function(r,e){var n=r();return void 0!==n?n:t[e]}}};var gi="expire_mixin",yi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+gi);return{set:function(r,e,n,o){this.hasNamespace(gi)||t.set(e,o);return r()},get:function(t,e){this.hasNamespace(gi)||r.call(this,e);return t()},remove:function(r,e){this.hasNamespace(gi)||t.remove(e);return r()},getExpiration:function(r,e){return t.get(e)},removeExpiredKeys:function(t){var e=[];this.each((function(t,r){e.push(r)}));for(var n=0;n>>8,e[2*n+1]=a%256}return e},decompressFromUint8Array:function(r){if(null==r)return i.decompress(r);for(var e=new Array(r.length/2),n=0,o=e.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==r-1){d.push(e(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(r){return t.charCodeAt(r)}))},_decompress:function(r,e,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:e,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>r)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=e,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=r)}));var Ei=[ai,fi],Ai=[vi,yi,ji,function(){return{get:function(t,r){var e=t(r);if(!e)return e;var n=Si.decompress(e);return null==n?e:this._deserialize(n)},set:function(t,r,e){var n=Si.compress(this._serialize(e));t(r,n)}}}],ki=ei.createStore(Ei,Ai),Ti=Ho.Global;function xi(){return Ti.sessionStorage}function Pi(t){return xi().getItem(t)}var qi=[{name:"sessionStorage",read:Pi,write:function(t,r){return xi().setItem(t,r)},each:function(t){for(var r=xi().length-1;r>=0;r--){var e=xi().key(r);t(Pi(e),e)}},remove:function(t){return xi().removeItem(t)},clearAll:function(){return xi().clear()}},fi],Ci=[vi,yi],$i=ei.createStore(qi,Ci),zi=ki,Ni=$i,Fi=Array.isArray,Ii=void 0!==l?l:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ri="object"==typeof Ii&&Ii&&Ii.Object===Object&&Ii,Ji="object"==typeof self&&self&&self.Object===Object&&self,Mi=(Ri||Ji||Function("return this")()).Symbol,Ui=Object.prototype,Di=Ui.hasOwnProperty,Hi=Ui.toString,Li=Mi?Mi.toStringTag:void 0;var Bi=Object.prototype.toString;var Ki="[object Null]",Vi="[object Undefined]",Gi=Mi?Mi.toStringTag:void 0;function Yi(t){return null==t?void 0===t?Vi:Ki:Gi&&Gi in Object(t)?function(t){var r=Di.call(t,Li),e=t[Li];try{t[Li]=void 0;var n=!0}catch(t){}var o=Hi.call(t);return n&&(r?t[Li]=e:delete t[Li]),o}(t):function(t){return Bi.call(t)}(t)}var Wi=function(t,r){return function(e){return t(r(e))}}(Object.getPrototypeOf,Object);function Qi(t){return null!=t&&"object"==typeof t}var Xi="[object Object]",Zi=Function.prototype,ta=Object.prototype,ra=Zi.toString,ea=ta.hasOwnProperty,na=ra.call(Object);var oa=Mi?Mi.prototype:void 0,ia=(oa&&oa.toString,"[object String]");function aa(t){return"string"==typeof t||!Fi(t)&&Qi(t)&&Yi(t)==ia}var ua=function(t,r){return!!t.filter((function(t){return t===r})).length},ca=function(t,r){var e=Object.keys(t);return ua(e,r)},sa=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r},fa="query",la="mutation",pa="socket",ha="payload",da="condition",va=function(){try{if(window||document)return!0}catch(t){}return!1},ga=function(){try{if(!va()&&Ii)return!0}catch(t){}return!1};var ya=function(t){function r(){for(var e=arguments,n=[],o=arguments.length;o--;)n[o]=e[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,Error.captureStackTrace&&Error.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}(function(t){function r(){for(var r=arguments,e=[],n=arguments.length;n--;)e[n]=r[n];t.apply(this,e)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.where=function(){return va()?"browser":ga()?"node":"unknown"},r}(Error));var ba=function(t){var r;return(r={}).args=t,r};var ma=function(t){return ca(t,"data")&&!ca(t,"error")?t.data:t},_a=function(t){return function(t){if(!Qi(t)||Yi(t)!=Xi)return!1;var r=Wi(t);if(null===r)return!0;var e=ea.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&ra.call(e)==na}(t)&&(ca(t,fa)||ca(t,la)||ca(t,pa))},wa=function(t,r){return void 0===r&&(r={}),_a(r)?Promise.resolve(r):t.getContract()},ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Oa(t){this.message=t}Oa.prototype=new Error,Oa.prototype.name="InvalidCharacterError";var Sa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var r=String(t).replace(/=+$/,"");if(r.length%4==1)throw new Oa("'atob' failed: The string to be decoded is not correctly encoded.");for(var e,n,o=0,i=0,a="";n=r.charAt(i++);~n&&(e=o%4?64*e+n:n,o++%4)?a+=String.fromCharCode(255&e>>(-2*o&6)):0)n=ja.indexOf(n);return a};var Ea=function(t){var r=t.replace(/-/g,"+").replace(/_/g,"/");switch(r.length%4){case 0:break;case 2:r+="==";break;case 3:r+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Sa(t).replace(/(.)/g,(function(t,r){var e=r.charCodeAt(0).toString(16).toUpperCase();return e.length<2&&(e="0"+e),"%"+e})))}(r)}catch(t){return Sa(r)}};function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidTokenError";var ka=function(t,r){if("string"!=typeof t)throw new Aa("Invalid token specified");var e=!0===(r=r||{}).header?0:1;try{return JSON.parse(Ea(t.split(".")[e]))}catch(t){throw new Aa("Invalid token specified: "+t.message)}},Ta=Aa;ka.InvalidTokenError=Ta;var xa,Pa,qa,Ca,$a,za,Na,Fa,Ia,Ra=function(t){void 0===t&&(t=!1);var r=Date.now();return t?Math.floor(r/1e3):r};function Ja(t){if($o(t))return function(t){var r=t.iat||Ra(!0);if(t.exp&&r>=t.exp){var e=new Date(t.exp).toISOString();throw new so("Token has expired on "+e,t)}return t}(ka(t));throw new so("Token must be a string!")}Fo("HS256",["string"]),Fo(!1,["boolean","number","string"],((xa={})[c]="exp",xa[o]=!0,xa)),Fo(!1,["boolean","number","string"],((Pa={})[c]="nbf",Pa[o]=!0,Pa)),Fo(!1,["boolean","string"],((qa={})[c]="iss",qa[o]=!0,qa)),Fo(!1,["boolean","string"],((Ca={})[c]="sub",Ca[o]=!0,Ca)),Fo(!1,["boolean","string"],(($a={})[c]="iss",$a[o]=!0,$a)),Fo(!1,["boolean"],((za={})[o]=!0,za)),Fo(!1,["boolean","string"],((Na={})[o]=!0,Na)),Fo(!1,["boolean","string"],((Fa={})[o]=!0,Fa)),Fo(!1,["boolean"],((Ia={})[o]=!0,Ia));var Ma=e[0],Ua=e[1],Da=function(t){!function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Ha={headers:{configurable:!0}};Ha.headers.set=function(t){this.extraHeader=t},Da.prototype.request=function(t,r,e){var n;void 0===r&&(r={}),void 0===e&&(e={}),this.headers=e;var o=En({},{_cb:sa()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=En({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,En({},{method:Ma,params:o},r))},Da.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(r){var e=t.getHeaders();for(var n in t.log("request interceptor call",e),e)r.headers[n]=e[n];return r}))},Da.prototype.processJsonp=function(t){return ma(t)},Da.prototype.resInterceptor=function(){var t=this,r=this,e=r.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),r.cleanUp();var o=$o(n.data)?JSON.parse(n.data):n.data;return e?r.processJsonp(o):ma(o)}),(function(t){throw r.cleanUp(),console.error(t),new fo("Server side error",t)}))},Da.prototype.getHeaders=function(){return this.opts.enableAuth?En({},r,this.getAuthHeader(),this.extraHeader):En({},r,this.extraHeader)},Da.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Da.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=En({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(vo).then((function(r){return t.log("get contract result",r),r.cache&&r.contract?r.contract:r}))},Da.prototype.query=function(t,r){return void 0===r&&(r=[]),this.request(function(t,r,e){var n;if(void 0===r&&(r=[]),void 0===e&&(e=!1),aa(t)&&Fi(r)){var o=ba(r);return!0===e?o:((n={})[t]=o,n)}throw new ya("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:r})}(t,r)).then(vo)},Da.prototype.mutation=function(t,r,e){return void 0===r&&(r={}),void 0===e&&(e={}),this.request(function(t,r,e,n){var o;void 0===e&&(e={}),void 0===n&&(n=!1);var i={};if(i[ha]=r,i[da]=e,!0===n)return i;if(aa(t))return(o={})[t]=i,o;throw new ya("[createMutation] expect resolverName to be string!",{resolverName:t,payload:r,condition:e})}(t,r,e),{method:Ua}).then(vo)},Object.defineProperties(Da.prototype,Ha);var La=function(t){function r(r,e){void 0===e&&(e=null),e&&(r.Fly=e),t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return e.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply(zi.set,zi,t),new co("Expect argument to be array and least 2 items!")},e.jsonqlEndpoint.set=function(t){var r=zi.get("endpoint")||[];ua(r,t)||(r.push(t),this.storeId=["endpoint",r],this.endpointIndex=r.length-1)},e.jsonqlContract.set=function(t){var r=this.opts.storageKey,e=[r],n=t[0],o=t[1],i=zi.get(r)||[];i[this.endpointIndex||0]=n,e.push(i),o&&e.push(o),this.opts.keepContract&&(this.storeIt=e)},e.jsonqlToken.set=function(t){var r="credential",e=localStorage.get(r)||[];if(!ua(e,t)){var n=e.length-1;e[n]=t,this[r+"Index"]=n;var o=[r,e];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=sa();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},e.jsonqlUserdata.set=function(t){var r=["userdata",t];return t.exp&&r.push(t.exp),Reflect.apply(zi.set,zi,r)},e.jsonqlEndpoint.get=function(){var t=zi.get("endpoint");if(!t){var r=this.opts,e=[r.hostname,r.jsonqlPath].join("/");return this.jsonqlEndpoint=e,e}return t[this.endpointIndex]},e.jsonqlContract.get=function(){var t=this.opts.storageKey;return(zi.get(t)||[])[this.endpointIndex]||!1},e.jsonqlToken.get=function(){var t="credential",r=localStorage.get(t);return!!r&&r[this[t+"Index"]]},e.jsonqlUserdata.get=function(){return Ni.get("userdata")},r.prototype.log=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(r.prototype,e),r}(function(t){function r(r){t.call(this,r),r.enableAuth&&r.useJwt&&(this.setDecoder=Ja)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return e.userdata.get=function(){return this.jsonqlUserdata},e.rawAuthToken.get=function(){return this.jsonqlToken},e.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},r.prototype.storeToken=function(t){return this.jsonqlToken=t},r.prototype.decoder=function(t){return t},r.prototype.getAuthHeader=function(){var t,r=this.rawAuthToken;return r?((t={})[this.opts.AUTH_HEADER]="Bearer "+r,t):{}},Object.defineProperties(r.prototype,e),r}(function(t){function r(r){t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={contractHeader:{configurable:!0}};return r.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var r=t[this.endpointIndex||0];if(r)return Promise.resolve(r)}return this.get().then(this.storeContract.bind(this))},e.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},r.prototype.storeContract=function(t){if(!_a(t))throw new co("Contract is malformed!");var r=[t];if(this.opts.contractExpired){var e=parseFloat(this.opts.contractExpired);!isNaN(e)&&e>0&&r.push(e)}return this.jsonqlContract=r,this.log("storeContract return result",t),t},r.prototype.readContract=function(){return _a(this.opts.contract)?this.opts.contract:zi.get(this.opts.storageKey)},Object.defineProperties(r.prototype,e),r}(Da))),Ba=function(t){return y(t)?t:[t]},Ka=function(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,Ba(t))}),Reflect.apply(t,null,e))}};function Va(t,r,e,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,r);return!1===n&&void 0!==o?t:(Object.defineProperty(t,r,{value:e,writable:n}),t)}var Ga=function(t,r,e,n){return function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];var i=n.auth[r].params,a=i.map((function(t,r){return e[r]})),u=e[i.length]||{};return No(e,i).then((function(){return t.query.apply(t,[r,a,u])})).catch(go)}},Ya=function(t,r,e,n,o){var i={},a=function(t){i=Va(i,t,(function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,r){return e[r]})),u=e[i.length]||{};return No(a,i).then((function(){return r.query.apply(r,[t,a,u])})).catch(go)}))};for(var u in o.query)a(u);return t.query=i,[t,r,e,n,o]},Wa=function(t,r,e,n,o){var i={},a=function(t){i=Va(i,t,(function(e,n,i){void 0===i&&(i={});var a=[e,n],u=o.mutation[t].params;return No(a,u).then((function(){return r.mutation.apply(r,[t,e,n,i])})).catch(go)}))};for(var u in o.mutation)a(u);return t.mutation=i,[t,r,e,n,o]},Qa=function(t,r,e,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(r,a,0,o);return i.apply(null,t).then(r.postLoginAction).then((function(t){return e.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Ga(r,u,0,o);return i.apply(null,t).then(r.postLogoutAction).then((function(t){return e.$trigger("logout",t),t}))}:i[u]=function(){r.postLogoutAction("continue"),e.$trigger("logout","continue")},t.auth=i}return t};var Xa=function(t,r,e,n){var o=function(t,r,e,n){return Ka(Ya,Wa,Qa)({},t,r,e,n)}(t,n,r,e);return r.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},r.exposeContract&&(o.getContract=function(){return t.getContract()}),o.eventEmitter=n,o.version="1.4.0",o},Za={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},tu={hostname:Fo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Fo("jsonql",["string"]),loginHandlerName:Fo("login",["string"]),logoutHandlerName:Fo("logout",["string"]),enableJsonp:Fo(!1,["boolean"]),enableAuth:Fo(!1,["boolean"]),useJwt:Fo(!0,["boolean"]),useLocalstorage:Fo(!0,["boolean"]),storageKey:Fo("storageKey",["string"]),authKey:Fo("authKey",["string"]),contractExpired:Fo(0,["number"]),keepContract:Fo(!0,["boolean"]),exposeContract:Fo(!1,["boolean"]),showContractDesc:Fo(!1,["boolean"]),contractKey:Fo(!1,["boolean"]),contractKeyName:Fo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Fo(!1,["boolean"]),timeout:Fo(5e3,["number"]),returnInstance:Fo(!1,["boolean"]),allowReturnRawToken:Fo(!1,["boolean"]),debugOn:Fo(!1,["boolean"])};function ru(t,r,e){return void 0===r&&(r={}),void 0===e&&(e=null),function(t){var r=t.contract;return Io(t,tu,Za).then((function(t){return t.contract=r,t}))}(r).then((function(t){return{baseClient:new La(t,e),opts:t}})).then((function(r){var e=r.baseClient,n=r.opts;return wa(e,n.contract).then((function(r){return Xa(e,n,r,t)}))}))}var eu=new WeakMap,nu=new WeakMap;var ou=function(){this.__suspend__=null,this.queueStore=new Set},iu={$suspend:{configurable:!0},$queues:{configurable:!0}};iu.$suspend.set=function(t){var r=this;if("boolean"!=typeof t)throw new Error("$suspend only accept Boolean value!");var e=this.__suspend__;this.__suspend__=t,this.logger("($suspend)","Change from "+e+" --\x3e "+t),!0===e&&!1===t&&setTimeout((function(){r.release()}),1)},ou.prototype.$queue=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",t),this.queueStore.add(t)),this.__suspend__},iu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ou.prototype.release=function(){var t=this,r=this.queueStore.size;if(this.logger("(release)","Release was called "+r),r>0){var e=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",e),e.forEach((function(r){t.logger(r),Reflect.apply(t.$trigger,t,r)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(ou.prototype,iu);var au=function(t){function r(r){void 0===r&&(r={}),t.call(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var e={$done:{configurable:!0}};return r.prototype.logger=function(){},r.prototype.$on=function(t,r,e){var n=this;void 0===e&&(e=null);this.validate(t,r);var o=this.takeFromStore(t);if(!1===o)return this.logger("($on)",t+" callback is not in lazy store"),this.addToNormalStore(t,"on",r,e);this.logger("($on)",t+" found in lazy store");var i=0;return o.forEach((function(o){var a=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(r,a,e||u),i+=n.addToNormalStore(t,"on",r,e||u)})),i},r.prototype.$once=function(t,r,e){void 0===e&&(e=null),this.validate(t,r);var n=this.takeFromStore(t);this.normalStore;if(!1===n)return this.logger("($once)",t+" not in the lazy store"),this.addToNormalStore(t,"once",r,e);this.logger("($once)",n);var o=Array.from(n)[0],i=o[0],a=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(r,i,e||a),this.$off(t)},r.prototype.$only=function(t,r,e){var n=this;void 0===e&&(e=null),this.validate(t,r);var o=!1,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",r,e)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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(r,i,e||a)})));return o},r.prototype.$onlyOnce=function(t,r,e){void 0===e&&(e=null),this.validate(t,r);var n=!1,o=this.takeFromStore(t);if(this.normalStore.has(t)||(this.logger("($onlyOnce)",t+" add to store"),n=this.addToNormalStore(t,"onlyOnce",r,e)),!1!==o){this.logger("($onlyOnce)",o);var i=Array.from(o)[0],a=i[0],u=i[1],c=i[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(r,a,e||u),this.$off(t)}return n},r.prototype.$replace=function(t,r,e,n){if(void 0===e&&(e=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(t);var o=this["$"+n];return this.logger("($replace)",t,r),Reflect.apply(o,this,[t,r,e])}throw new Error(n+" is not supported!")},r.prototype.$trigger=function(t,r,e,n){void 0===r&&(r=[]),void 0===e&&(e=null),void 0===n&&(n=!1),this.validateEvt(t);var o=0,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,r,e,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)n[o]=arguments[o+2];if(t.has(r)?(this.logger("(addToStore)",r+" existed"),e=t.get(r)):(this.logger("(addToStore)","create new Set for "+r),e=new Set),n.length>2)if(Array.isArray(n[0])){var i=n[2];this.checkTypeInLazyStore(r,i)||e.add(n)}else this.checkContentExist(n,e)||(this.logger("(addToStore)","insert new",n),e.add(n));else e.add(n);return t.set(r,e),[t,e.size]},r.prototype.checkContentExist=function(t,r){return!!Array.from(r).filter((function(r){return r[0]===t[0]})).length},r.prototype.checkTypeInStore=function(t,r){this.validateEvt(t,r);var e=this.$get(t,!0);return!1===e||!e.filter((function(t){var e=t[3];return r!==e})).length},r.prototype.checkTypeInLazyStore=function(t,r){this.validateEvt(t,r);var e=this.lazyStore.get(t);return this.logger("(checkTypeInLazyStore)",e),!!e&&!!Array.from(e).filter((function(t){return t[2]!==r})).length},r.prototype.addToNormalStore=function(t,r,e,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",t,r,"try to add to normal store"),this.checkTypeInStore(t,r)){this.logger("(addToNormalStore)",r+" can add to "+t+" normal store");var o=this.hashFnToKey(e),i=[this.normalStore,t,o,e,n,r],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[1];return this.normalStore=u,c}return!1},r.prototype.addToLazyStore=function(t,r,e,n){void 0===r&&(r=[]),void 0===e&&(e=null),void 0===n&&(n=!1);var o=[this.lazyStore,t,this.toArray(r),e];n&&o.push(n);var i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},r.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},e.normalStore.set=function(t){eu.set(this,t)},e.normalStore.get=function(){return eu.get(this)},e.lazyStore.set=function(t){nu.set(this,t)},e.lazyStore.get=function(){return nu.get(this)},r.prototype.hashFnToKey=function(t){return t.toString().split("").reduce((function(t,r){return(t=(t<<5)-t+r.charCodeAt(0))&t}),0)+""},Object.defineProperties(r.prototype,e),r}(ou));return function(t,r){var e;return ru((e=r.debugOn,new au({logger:e?function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),r,t)}})); //# sourceMappingURL=core.js.map diff --git a/packages/http-client/core.js.map b/packages/http-client/core.js.map index 728ed2bc..1ca5f5bd 100644 --- a/packages/http-client/core.js.map +++ b/packages/http-client/core.js.map @@ -1 +1 @@ -{"version":3,"file":"core.js","sources":["node_modules/lodash-es/isNull.js","node_modules/rollup-plugin-node-globals/src/global.js","node_modules/lodash-es/_arrayMap.js","node_modules/lodash-es/isArray.js","node_modules/lodash-es/_objectToString.js","node_modules/lodash-es/isObjectLike.js","node_modules/lodash-es/_baseSlice.js","node_modules/lodash-es/_baseFindIndex.js","node_modules/lodash-es/_baseIsNaN.js","node_modules/lodash-es/_strictIndexOf.js","node_modules/lodash-es/_asciiToArray.js","node_modules/lodash-es/_hasUnicode.js","node_modules/lodash-es/_unicodeToArray.js","node_modules/lodash-es/isUndefined.js","node_modules/lodash-es/_overArg.js","node_modules/lodash-es/_arrayFilter.js","node_modules/lodash-es/_createBaseFor.js","node_modules/lodash-es/_baseTimes.js","node_modules/lodash-es/stubFalse.js","node_modules/lodash-es/_isIndex.js","node_modules/lodash-es/isLength.js","node_modules/lodash-es/_baseUnary.js","node_modules/lodash-es/_isPrototype.js","node_modules/lodash-es/isObject.js","node_modules/lodash-es/_listCacheClear.js","node_modules/lodash-es/eq.js","node_modules/lodash-es/_stackDelete.js","node_modules/lodash-es/_stackGet.js","node_modules/lodash-es/_stackHas.js","node_modules/lodash-es/_toSource.js","node_modules/lodash-es/_getValue.js","node_modules/lodash-es/_hashDelete.js","node_modules/lodash-es/_isKeyable.js","node_modules/lodash-es/_setCacheAdd.js","node_modules/lodash-es/_setCacheHas.js","node_modules/lodash-es/_arraySome.js","node_modules/lodash-es/_cacheHas.js","node_modules/lodash-es/_mapToArray.js","node_modules/lodash-es/_setToArray.js","node_modules/lodash-es/_arrayPush.js","node_modules/lodash-es/stubArray.js","node_modules/lodash-es/_matchesStrictComparable.js","node_modules/lodash-es/_baseHasIn.js","node_modules/lodash-es/identity.js","node_modules/lodash-es/_baseProperty.js","node_modules/lodash-es/_copyArray.js","node_modules/lodash-es/_safeGet.js","node_modules/lodash-es/_nativeKeysIn.js","node_modules/lodash-es/_apply.js","node_modules/lodash-es/constant.js","node_modules/lodash-es/_shortOut.js","node_modules/lodash-es/negate.js","node_modules/lodash-es/_baseFindKey.js","node_modules/jsonql-params-validator/src/not-empty.js","node_modules/jsonql-params-validator/src/number.js","node_modules/jsonql-params-validator/src/string.js","node_modules/jsonql-params-validator/src/boolean.js","node_modules/jsonql-params-validator/src/any.js","node_modules/jsonql-params-validator/src/constants.js","node_modules/jsonql-params-validator/src/combine.js","node_modules/jsonql-params-validator/src/array.js","node_modules/jsonql-params-validator/src/object.js","node_modules/jsonql-errors/src/500-error.js","node_modules/jsonql-errors/src/error-base.js","node_modules/jsonql-errors/src/enum-error.js","node_modules/jsonql-errors/src/type-error.js","node_modules/jsonql-errors/src/checker-error.js","node_modules/jsonql-errors/src/validation-error.js","node_modules/jsonql-errors/src/server-error.js","node_modules/jsonql-errors/src/index.js","node_modules/jsonql-errors/src/client-errors-handler.js","node_modules/jsonql-params-validator/src/log.js","node_modules/jsonql-params-validator/src/validator.js","node_modules/jsonql-params-validator/src/is-in-array.js","node_modules/jsonql-params-validator/src/options/run-validation.js","node_modules/jsonql-params-validator/src/options/check-options-async.js","node_modules/jsonql-params-validator/src/options/construct-config.js","node_modules/jsonql-params-validator/src/options/index.js","node_modules/jsonql-params-validator/index.js","node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js","src/stores/local-store.js","src/stores/session-store.js","src/stores/index.js","src/utils.js","node_modules/jwt-decode/lib/atob.js","node_modules/jsonql-jwt/src/client/decode-token/decode-token.js","src/base/http-cls.js","src/base/contract-cls.js","src/base/auth-cls.js","src/base/base-cls.js","src/base/index.js","node_modules/jsonql-utils/src/generic.js","src/core/methods-generator.js","src/core/jsonql-api-generator.js","src/options/base-options.js","src/options/check-options-async.js","src/jsonql-async.js","node_modules/nb-event-service/src/hash-code.js","node_modules/nb-event-service/src/suspend.js","node_modules/nb-event-service/src/store-service.js","node_modules/nb-event-service/src/event-service.js","node_modules/nb-event-service/index.js","src/ee.js","index.js"],"sourcesContent":["/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n","/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n}\n\nexport default baseFindKey;\n","/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nimport { trim, isArray } from './lodash'\n\nexport default a => {\n if (isArray(a)) {\n return true;\n }\n return a !== undefined && a !== null && trim(a) !== '';\n}\n","// validator numbers\n// import { NUMBER_TYPES } from './constants';\nimport { isNaN, isString } from './lodash'\n/**\n * @2015-05-04 found a problem if the value is a number like string\n * it will pass, so add a check if it's string before we pass to next\n * @param {number} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsNumber = function(value) {\n return isString(value) ? false : !isNaN( parseFloat(value) )\n}\n\nexport default checkIsNumber\n","// validate string type\nimport { isString, trim } from './lodash'\n/**\n * @param {string} value expected value\n * @return {boolean} true if OK\n */\nconst checkIsString = function(value) {\n return (trim(value) !== '') ? isString(value) : false;\n}\n\nexport default checkIsString;\n","// check for boolean\nimport { isBoolean } from './lodash'\n/**\n * @param {boolean} value expected\n * @return {boolean} true if OK\n */\nconst checkIsBoolean = function(value) {\n return isBoolean(value);\n};\n\nexport default checkIsBoolean\n","// validate any thing only check if there is something\n\nimport { isNull, trim, isUndefined } from './lodash'\n/**\n * @param {*} value the value\n * @param {boolean} [checkNull=true] strict check if there is null value\n * @return {boolean} true is OK\n */\nconst checkIsAny = function(value, checkNull = true) {\n if (!isUndefined(value) && value !== '' && trim(value) !== '') {\n if (checkNull === false || (checkNull === true && !isNull(value))) {\n return true;\n }\n }\n return false;\n};\n\nexport default checkIsAny\n","// Good practice rule - No magic number\n\nexport const 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)`;\nexport const PARAMS_NOT_ARRAY_ERR = `params is not an array! Did something gone wrong when you generate the contract.json?`;\nexport const EXCEPTION_CASE_ERR = 'Could not understand your arguments and parameter structure!';\nexport const UNUSUAL_CASE_ERR = 'This is an unusual situation where the arguments are more than the params, but not mark as spread';\n\n// re-export\nimport * as JSONQL_CONSTANTS from 'jsonql-constants';\n// @TODO the jsdoc return array. and we should also allow array syntax\nexport const DEFAULT_TYPE = JSONQL_CONSTANTS.DEFAULT_TYPE;\nexport const ARRAY_TYPE_LFT = JSONQL_CONSTANTS.ARRAY_TYPE_LFT;\nexport const ARRAY_TYPE_RGT = JSONQL_CONSTANTS.ARRAY_TYPE_RGT;\n\nexport const TYPE_KEY = JSONQL_CONSTANTS.TYPE_KEY;\nexport const OPTIONAL_KEY = JSONQL_CONSTANTS.OPTIONAL_KEY;\nexport const ENUM_KEY = JSONQL_CONSTANTS.ENUM_KEY;\nexport const ARGS_KEY = JSONQL_CONSTANTS.ARGS_KEY;\nexport const CHECKER_KEY = JSONQL_CONSTANTS.CHECKER_KEY;\nexport const ALIAS_KEY = JSONQL_CONSTANTS.ALIAS_KEY;\n\nexport const ARRAY_TYPE = JSONQL_CONSTANTS.ARRAY_TYPE;\nexport const OBJECT_TYPE = JSONQL_CONSTANTS.OBJECT_TYPE;\nexport const STRING_TYPE = JSONQL_CONSTANTS.STRING_TYPE;\nexport const BOOLEAN_TYPE = JSONQL_CONSTANTS.BOOLEAN_TYPE;\nexport const NUMBER_TYPE = JSONQL_CONSTANTS.NUMBER_TYPE;\nexport const KEY_WORD = JSONQL_CONSTANTS.KEY_WORD;\nexport const OR_SEPERATOR = JSONQL_CONSTANTS.OR_SEPERATOR;\n\n// not actually in use\n// export const NUMBER_TYPES = JSONQL_CONSTANTS.NUMBER_TYPES;\n","// primitive types\nimport checkIsNumber from './number'\nimport checkIsString from './string'\nimport checkIsBoolean from './boolean'\nimport checkIsAny from './any'\nimport { NUMBER_TYPE, STRING_TYPE, BOOLEAN_TYPE } from './constants'\n\n/**\n * this is a wrapper method to call different one based on their type\n * @param {string} type to check\n * @return {function} a function to handle the type\n */\nconst combineFn = function(type) {\n switch (type) {\n case NUMBER_TYPE:\n return checkIsNumber;\n case STRING_TYPE:\n return checkIsString;\n case BOOLEAN_TYPE:\n return checkIsBoolean;\n default:\n return checkIsAny;\n }\n}\n\nexport default combineFn\n","// validate array type\nimport { isArray, trim } from './lodash'\nimport combineFn from './combine'\nimport {\n ARRAY_TYPE_LFT,\n ARRAY_TYPE_RGT,\n OR_SEPERATOR\n} from './constants'\n\n/**\n * @param {array} value expected\n * @param {string} [type=''] pass the type if we encounter array. then we need to check the value as well\n * @return {boolean} true if OK\n */\nexport const checkIsArray = function(value, type='') {\n if (isArray(value)) {\n if (type === '' || trim(type)==='') {\n return true;\n }\n // we test it in reverse\n // @TODO if the type is an array (OR) then what?\n // we need to take into account this could be an array\n const c = value.filter(v => !combineFn(type)(v))\n return !(c.length > 0)\n }\n return false;\n}\n\n/**\n * check if it matches the array. pattern\n * @param {string} type\n * @return {boolean|array} false means NO, always return array\n */\nexport const isArrayLike = function(type) {\n // @TODO could that have something like array<> instead of array.<>? missing the dot?\n // because type script is Array without the dot\n if (type.indexOf(ARRAY_TYPE_LFT) > -1 && type.indexOf(ARRAY_TYPE_RGT) > -1) {\n const _type = type.replace(ARRAY_TYPE_LFT, '').replace(ARRAY_TYPE_RGT, '')\n if (_type.indexOf(OR_SEPERATOR)) {\n return _type.split(OR_SEPERATOR)\n }\n return [_type]\n }\n return false;\n}\n\n/**\n * we might encounter something like array. then we need to take it apart\n * @param {object} p the prepared object for processing\n * @param {string|array} type the type came from \n * @return {boolean} for the filter to operate on\n */\nexport const arrayTypeHandler = function(p, type) {\n const { arg } = p;\n // need a special case to handle the OR type\n // we need to test the args instead of the type(s)\n if (type.length > 1) {\n return !arg.filter(v => (\n !(type.length > type.filter(t => !combineFn(t)(v)).length)\n )).length;\n }\n // type is array so this will be or!\n return type.length > type.filter(t => !checkIsArray(arg, t)).length;\n}\n","// validate object type\nimport { isPlainObject, isUndefined, filter } from './lodash'\nimport combineFn from './combine'\nimport { checkIsArray, isArrayLike, arrayTypeHandler } from './array'\n/**\n * @TODO if provide with the keys then we need to check if the key:value type as well\n * @param {object} value expected\n * @param {array} [keys=null] if it has the keys array to compare as well\n * @return {boolean} true if OK\n */\nexport const checkIsObject = function(value, keys=null) {\n if (isPlainObject(value)) {\n if (!keys) {\n return true;\n }\n if (checkIsArray(keys)) {\n // please note we DON'T care if some is optional\n // plese refer to the contract.json for the keys\n return !keys.filter(key => {\n let _value = value[key.name];\n return !(key.type.length > key.type.filter(type => {\n let tmp;\n if (!isUndefined(_value)) {\n if ((tmp = isArrayLike(type)) !== false) {\n return !arrayTypeHandler({arg: _value}, tmp)\n // return tmp.filter(t => !checkIsArray(_value, t)).length;\n // @TODO there might be an object within an object with keys as well :S\n }\n return !combineFn(type)(_value)\n }\n return true;\n }).length)\n }).length;\n }\n }\n return false;\n}\n\n/**\n * fold this into it's own function to handler different object type\n * @param {object} p the prepared object for process\n * @return {boolean}\n */\nexport const objectTypeHandler = function(p) {\n const { arg, param } = p;\n let _args = [arg];\n if (Array.isArray(param.keys) && param.keys.length) {\n _args.push(param.keys)\n }\n // just simple check\n return checkIsObject.apply(null, _args)\n}\n","/**\n * This is a custom error to throw when server throw a 500\n * This help us to capture the right error, due to the call happens in sequence\n * @param {string} message to tell what happen\n * @param {mixed} extra things we want to add, 500?\n */\nexport default class Jsonql500Error extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = Jsonql500Error.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Jsonql500Error);\n }\n }\n\n static get statusCode() {\n return 500;\n }\n\n static get name() {\n return 'Jsonql500Error';\n }\n\n}\n","// The base Error of all\nimport whereAmI from './where-am-i'\n\nexport default class JsonqlBaseError extends Error {\n constructor(...args) {\n super(...args)\n }\n\n static where() {\n return whereAmI()\n }\n \n}\n","// this get throw from within the checkOptions when run through the enum failed\nexport default class JsonqlEnumError extends Error {\n constructor(...args) {\n super(...args);\n \n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlEnumError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlEnumError);\n }\n }\n\n static get name() {\n return 'JsonqlEnumError';\n }\n}\n","// this will throw from inside the checkOptions\nexport default class JsonqlTypeError extends Error {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlTypeError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlTypeError);\n }\n }\n\n static get name() {\n return 'JsonqlTypeError';\n }\n}\n","// allow supply a custom checker function\n// if that failed then we throw this error\nexport default class JsonqlCheckerError extends Error {\n constructor(...args) {\n super(...args);\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlCheckerError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlCheckerError);\n }\n }\n\n static get name() {\n return 'JsonqlCheckerError';\n }\n}\n","// custom validation error class\nimport JsonqlBaseError from './error-base'\n// when validaton failed\nexport default class JsonqlValidationError extends JsonqlBaseError {\n constructor(...args) {\n super(...args);\n\n this.message = args[0];\n this.detail = args[1];\n\n this.className = JsonqlValidationError.name;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, JsonqlValidationError);\n }\n }\n\n static get name() {\n return 'JsonqlValidationError';\n }\n}\n","// this is from an example from Koa team to use for internal middleware ctx.throw\n// but after the test the res.body part is unable to extract the required data\n// I keep this one here for future reference\n\nexport default class JsonqlServerError extends Error {\n\n constructor(statusCode, message) {\n super(message);\n this.statusCode = statusCode;\n this.className = JsonqlServerError.name;\n }\n\n static get name() {\n return 'JsonqlServerError';\n }\n}\n","// server side\nimport Jsonql406Error from './406-error';\nimport Jsonql500Error from './500-error';\nimport JsonqlAuthorisationError from './authorisation-error';\nimport JsonqlContractAuthError from './contract-auth-error';\nimport JsonqlResolverAppError from './resolver-app-error';\nimport JsonqlResolverNotFoundError from './resolver-not-found-error';\n\n// check options error\nimport JsonqlEnumError from './enum-error';\nimport JsonqlTypeError from './type-error';\nimport JsonqlCheckerError from './checker-error';\n// share\nimport JsonqlValidationError from './validation-error';\nimport JsonqlError from './error';\n\nimport JsonqlServerError from './server-error';\n\nexport {\n Jsonql406Error,\n Jsonql500Error,\n JsonqlAuthorisationError,\n JsonqlContractAuthError,\n JsonqlResolverAppError,\n JsonqlResolverNotFoundError,\n\n JsonqlEnumError,\n JsonqlTypeError,\n JsonqlCheckerError,\n\n JsonqlValidationError,\n JsonqlError,\n\n JsonqlServerError\n};\n","// this will add directly to the then call in each http call\n\nimport * as errors from './index';\nimport getErrorByStatus from './get-error-by-status';\nimport { NO_ERROR_MSG } from 'jsonql-constants';\nconst { JsonqlError } = errors;\n\n/**\n * We can not just check something like result.data what if the result if false?\n * @param {object} obj the result object\n * @param {string} key we want to check if its exist or not\n * @return {boolean} true on found\n */\nconst isKeyInObject = (obj, key) => {\n const keys = Object.keys(obj)\n return !!keys.filter(k => key === k).length;\n}\n\n/**\n * It will ONLY have our own jsonql specific implement check\n * @param {object} result the server return result\n * @return {object} this will just throw error\n */\nexport default function clientErrorsHandler(result) {\n if (isKeyInObject(result, 'error')) {\n const { error } = result;\n const { className, name } = error;\n const errorName = className || name;\n // just throw the whole thing back\n const msg = error.message || NO_ERROR_MSG;\n const detail = error.detail || error;\n if (errorName && errors[errorName]) {\n throw new errors[className](msg, detail)\n }\n throw new JsonqlError(msg, detail)\n }\n // pass through to the next\n return result;\n}\n","/**\n * just a simple util for helping to debug\n * @param {array} args arguments\n * @return {void}\n */\nexport default function log(...args) {\n try {\n if (window && window.console) {\n Reflect.apply(console.log, console, args)\n }\n } catch(e) {}\n}\n","// move the index.js code here that make more sense to find where things are\nimport { isUndefined } from './lodash'\nimport {\n checkIsArray,\n isArrayLike,\n arrayTypeHandler,\n objectTypeHandler,\n checkIsObject,\n combineFn,\n notEmpty\n} from './index'\nimport {\n DEFAULT_TYPE,\n ARRAY_TYPE,\n OBJECT_TYPE,\n ARGS_NOT_ARRAY_ERR,\n PARAMS_NOT_ARRAY_ERR,\n EXCEPTION_CASE_ERR,\n UNUSUAL_CASE_ERR\n} from './constants'\nimport { DATA_KEY, ERROR_KEY } from 'jsonql-constants'\nimport { JsonqlError } from 'jsonql-errors'\nimport log from './log'\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:validator')\n// also export this for use in other places\n\n/**\n * We need to handle those optional parameter without a default value\n * @param {object} params from contract.json\n * @return {boolean} for filter operation false is actually OK\n */\nconst optionalHandler = function( params ) {\n const { arg, param } = params;\n if (notEmpty(arg)) {\n // debug('call optional handler', arg, params);\n // loop through the type in param\n return !(param.type.length > param.type.filter(type =>\n validateHandler(type, params)\n ).length)\n }\n return false;\n}\n\n/**\n * actually picking the validator\n * @param {*} type for checking\n * @param {*} value for checking\n * @return {boolean} true on OK\n */\nconst validateHandler = function(type, value) {\n let tmp;\n switch (true) {\n case type === OBJECT_TYPE:\n // debugFn('call OBJECT_TYPE')\n return !objectTypeHandler(value)\n case type === ARRAY_TYPE:\n // debugFn('call ARRAY_TYPE')\n return !checkIsArray(value.arg)\n // @TODO when the type is not present, it always fall through here\n // so we need to find a way to actually pre-check the type first\n // AKA check the contract.json map before running here\n case (tmp = isArrayLike(type)) !== false:\n // debugFn('call ARRAY_LIKE: %O', value)\n return !arrayTypeHandler(value, tmp)\n default:\n return !combineFn(type)(value.arg)\n }\n}\n\n/**\n * it get too longer to fit in one line so break it out from the fn below\n * @param {*} arg value\n * @param {object} param config\n * @return {*} value or apply default value\n */\nconst getOptionalValue = function(arg, param) {\n if (!isUndefined(arg)) {\n return arg;\n }\n return (param.optional === true && !isUndefined(param.defaultvalue) ? param.defaultvalue : null)\n}\n\n/**\n * padding the arguments with defaultValue if the arguments did not provide the value\n * this will be the name export\n * @param {array} args normalized arguments\n * @param {array} params from contract.json\n * @return {array} merge the two together\n */\nexport const normalizeArgs = function(args, params) {\n // first we should check if this call require a validation at all\n // there will be situation where the function doesn't need args and params\n if (!checkIsArray(params)) {\n // debugFn('params value', params)\n throw new JsonqlError(PARAMS_NOT_ARRAY_ERR)\n }\n if (params.length === 0) {\n return [];\n }\n if (!checkIsArray(args)) {\n throw new JsonqlError(ARGS_NOT_ARRAY_ERR)\n }\n // debugFn(args, params);\n // fall through switch\n switch(true) {\n case args.length == params.length: // standard\n log(1)\n return args.map((arg, i) => (\n {\n arg,\n index: i,\n param: params[i]\n }\n ))\n case params[0].variable === true: // using spread syntax\n log(2)\n const type = params[0].type;\n return args.map((arg, i) => (\n {\n arg,\n index: i, // keep the index for reference\n param: params[i] || { type, name: '_' }\n }\n ))\n // with optional defaultValue parameters\n case args.length < params.length:\n log(3)\n return params.map((param, i) => (\n {\n param,\n index: i,\n arg: getOptionalValue(args[i], param),\n optional: param.optional || false\n }\n ))\n // this one pass more than it should have anything after the args.length will be cast as any type\n case args.length > params.length:\n log(4)\n let ctn = params.length;\n // this happens when we have those array. type\n let _type = [ DEFAULT_TYPE ]\n // we only looking at the first one, this might be a @BUG\n /*\n if ((tmp = isArrayLike(params[0].type[0])) !== false) {\n _type = tmp;\n } */\n // if we use the params as guide then the rest will get throw out\n // which is not what we want, instead, anything without the param\n // will get a any type and optional flag\n return args.map((arg, i) => {\n let optional = i >= ctn ? true : !!params[i].optional\n let param = params[i] || { type: _type, name: `_${i}` }\n return {\n arg: optional ? getOptionalValue(arg, param) : arg,\n index: i,\n param,\n optional\n }\n })\n // @TODO find out if there is more cases not cover\n default: // this should never happen\n log(5)\n // debugFn('args', args)\n // debugFn('params', params)\n // this is unknown therefore we just throw it!\n throw new JsonqlError(EXCEPTION_CASE_ERR, { args, params })\n }\n}\n\n// what we want is after the validaton we also get the normalized result\n// which is with the optional property if the argument didn't provide it\n/**\n * process the array of params back to their arguments\n * @param {array} result the params result\n * @return {array} arguments\n */\nconst processReturn = result => result.map(r => r.arg)\n\n/**\n * validator main interface\n * @param {array} args the arguments pass to the method call\n * @param {array} params from the contract for that method\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {array} empty array on success, or failed parameter and reasons\n */\nexport const validateSync = function(args, params, withResult = false) {\n let cleanArgs = normalizeArgs(args, params)\n let checkResult = cleanArgs.filter(p => {\n // v1.4.4 this fixed the problem, the root level optional is from the last fn\n if (p.optional === true || p.param.optional === true) {\n return optionalHandler(p)\n }\n // because array of types means OR so if one pass means pass\n return !(p.param.type.length > p.param.type.filter(\n type => validateHandler(type, p)\n ).length)\n })\n // using the same convention we been using all this time\n return !withResult ? checkResult : {\n [ERROR_KEY]: checkResult,\n [DATA_KEY]: processReturn(cleanArgs)\n }\n}\n\n/**\n * A wrapper method that return promise\n * @param {array} args arguments\n * @param {array} params from contract.json\n * @param {boolean} [withResul=false] if true then this will return the normalize result as well\n * @return {object} promise.then or catch\n */\nexport const validateAsync = function(args, params, withResult = false) {\n return new Promise((resolver, rejecter) => {\n const result = validateSync(args, params, withResult)\n if (withResult) {\n return result[ERROR_KEY].length ? rejecter(result[ERROR_KEY])\n : resolver(result[DATA_KEY])\n }\n // the different is just in the then or catch phrase\n return result.length ? rejecter(result) : resolver([])\n })\n}\n","/**\n * @param {array} arr Array for check\n * @param {*} value target\n * @return {boolean} true on successs\n */\nconst isInArray = function(arr, value) {\n return !!arr.filter(a => a === value).length;\n}\n\nexport default isInArray\n","// breaking the whole thing up to see what cause the multiple calls issue\n\nimport { isFunction, merge, mapValues } from '../lodash'\nimport {\n JsonqlEnumError,\n JsonqlTypeError,\n JsonqlCheckerError\n} from 'jsonql-errors'\nimport log from '../log'\nimport {\n TYPE_KEY,\n OPTIONAL_KEY,\n ENUM_KEY,\n ARGS_KEY,\n CHECKER_KEY,\n KEY_WORD\n} from '../constants'\nimport { checkIsArray } from '../array'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:validation')\n\n/**\n * just make sure it returns an array to use\n * @param {*} arg input\n * @return {array} output\n */\nconst toArray = arg => checkIsArray(arg) ? arg : [arg]\n\n/**\n * DIY in array\n * @param {array} arr to check against\n * @param {*} value to check\n * @return {boolean} true on OK\n */\nconst inArray = (arr, value) => (\n !!arr.filter(v => v === value).length\n)\n\n/**\n * break out to make the code easier to read\n * @param {object} value to process\n * @param {function} cb the validateSync\n * @return {array} empty on success\n */\nfunction validateHandler(value, cb) {\n // cb is the validateSync methods\n let args = [\n [ value[ARGS_KEY] ],\n [{\n [TYPE_KEY]: toArray(value[TYPE_KEY]),\n [OPTIONAL_KEY]: value[OPTIONAL_KEY]\n }]\n ]\n // debugFn('validateHandler', args)\n return Reflect.apply(cb, null, args)\n}\n\n/**\n * Check against the enum value if it's provided\n * @param {*} value to check\n * @param {*} enumv to check against if it's not false\n * @return {boolean} true on OK\n */\nconst enumHandler = (value, enumv) => {\n if (checkIsArray(enumv)) {\n return inArray(enumv, value)\n }\n return true;\n}\n\n/**\n * Allow passing a function to check the value\n * There might be a problem here if the function is incorrect\n * and that will makes it hard to debug what is going on inside\n * @TODO there could be a few feature add to this one under different circumstance\n * @param {*} value to check\n * @param {function} checker for checking\n */\nconst checkerHandler = (value, checker) => {\n try {\n return isFunction(checker) ? checker.apply(null, [value]) : false;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Taken out from the runValidaton this only validate the required values\n * @param {array} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {array} of configuration values\n */\nfunction runValidationAction(cb) {\n return (value, key) => {\n // debugFn('runValidationAction', key, value)\n if (value[KEY_WORD]) {\n return value[ARGS_KEY]\n }\n const check = validateHandler(value, cb)\n if (check.length) {\n log('runValidationAction', key, value)\n throw new JsonqlTypeError(key, check)\n }\n if (value[ENUM_KEY] !== false && !enumHandler(value[ARGS_KEY], value[ENUM_KEY])) {\n log(ENUM_KEY, value[ENUM_KEY])\n throw new JsonqlEnumError(key)\n }\n if (value[CHECKER_KEY] !== false && !checkerHandler(value[ARGS_KEY], value[CHECKER_KEY])) {\n log(CHECKER_KEY, value[CHECKER_KEY])\n throw new JsonqlCheckerError(key)\n }\n return value[ARGS_KEY]\n }\n}\n\n/**\n * @param {object} args from the config2argsAction\n * @param {function} cb validateSync\n * @return {object} of configuration values\n */\nexport default function runValidation(args, cb) {\n const [ argsForValidate, pristineValues ] = args;\n // turn the thing into an array and see what happen here\n // debugFn('_args', argsForValidate)\n const result = mapValues(argsForValidate, runValidationAction(cb))\n return merge(result, pristineValues)\n}\n","/// this is port back from the client to share across all projects\nimport { merge } from '../lodash'\nimport { prepareArgsForValidation } from './prepare-args-for-validation'\nimport runValidation from './run-validation'\n\n// import debug from 'debug'\n// const debugFn = debug('jsonql-params-validator:check-options-async')\n\n/**\n * Quick transform\n * @param {object} config that one\n * @param {object} appProps mutation configuration options\n * @return {object} put that arg into the args\n */\nconst configToArgs = (config, appProps) => {\n return Promise.resolve(\n prepareArgsForValidation(config, appProps)\n )\n}\n\n/**\n * @param {object} config user provide configuration option\n * @param {object} appProps mutation configuration options\n * @param {object} constProps the immutable configuration options\n * @param {function} cb the validateSync method\n * @return {object} Promise resolve merge config object\n */\nexport default function(config = {}, appProps, constProps, cb) {\n return configToArgs(config, appProps)\n .then(args1 => {\n // debugFn('args', args1)\n return runValidation(args1, cb)\n })\n // next if every thing good then pass to final merging\n .then(args2 => merge({}, args2, constProps))\n}\n","// create function to construct the config entry so we don't need to keep building object\nimport { isFunction, isString } from '../lodash'\nimport {\n ARGS_KEY,\n TYPE_KEY,\n CHECKER_KEY,\n ENUM_KEY,\n OPTIONAL_KEY,\n ALIAS_KEY\n} from 'jsonql-constants'\n\nimport { checkIsArray } from '../array'\nimport checkIsBoolean from '../boolean'\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:construct-config');\n/**\n * @param {*} args value\n * @param {string} type for value\n * @param {boolean} [optional=false]\n * @param {boolean|array} [enumv=false]\n * @param {boolean|function} [checker=false]\n * @return {object} config entry\n */\nexport default function(args, type, optional=false, enumv=false, checker=false, alias=false) {\n let base = {\n [ARGS_KEY]: args,\n [TYPE_KEY]: type\n };\n if (optional === true) {\n base[OPTIONAL_KEY] = true;\n }\n if (checkIsArray(enumv)) {\n base[ENUM_KEY] = enumv;\n }\n if (isFunction(checker)) {\n base[CHECKER_KEY] = checker;\n }\n if (isString(alias)) {\n base[ALIAS_KEY] = alias;\n }\n return base;\n}\n","// export also create wrapper methods\nimport checkOptionsAsync from './check-options-async'\nimport checkOptionsSync from './check-options-sync'\nimport constructConfigFn from './construct-config'\nimport {\n ENUM_KEY,\n CHECKER_KEY,\n ALIAS_KEY,\n OPTIONAL_KEY\n} from 'jsonql-constants'\n\n// import debug from 'debug';\n// const debugFn = debug('jsonql-params-validator:options:index');\n\n/**\n * This has a different interface\n * @param {*} value to supply\n * @param {string|array} type for checking\n * @param {object} params to map against the config check\n * @param {array} params.enumv NOT enum\n * @param {boolean} params.optional false then nothing\n * @param {function} params.checker need more work on this one later\n * @param {string} params.alias mostly for cmd\n */\nconst createConfig = (value, type, params = {}) => {\n // Note the enumv not ENUM\n // const { enumv, optional, checker, alias } = params;\n // let args = [value, type, optional, enumv, checker, alias];\n const {\n [OPTIONAL_KEY]: o,\n [ENUM_KEY]: e,\n [CHECKER_KEY]: c,\n [ALIAS_KEY]: a\n } = params;\n return constructConfigFn.apply(null, [value, type, o, e, c, a])\n}\n\n// for testing purpose\nconst JSONQL_PARAMS_VALIDATOR_INFO = '__PLACEHOLDER__';\n\n/**\n * We recreate the method here to avoid the circlar import\n * @param {object} config user supply configuration\n * @param {object} appProps mutation options\n * @param {object} [constantProps={}] optional: immutation options\n * @return {object} all checked configuration\n */\nconst checkConfigAsync = function(validateSync) {\n return function(config, appProps, constantProps= {}) {\n return checkOptionsAsync(config, appProps, constantProps, validateSync)\n }\n}\n\n// copy of above but it's sync\nconst checkConfig = function(validateSync) {\n return function(config, appProps, constantProps = {}) {\n return checkOptionsSync(config, appProps, constantProps, validateSync)\n }\n}\n\n// re-export\nexport {\n createConfig,\n constructConfigFn,\n checkConfigAsync,\n checkConfig,\n JSONQL_PARAMS_VALIDATOR_INFO\n}\n","// export\nimport {\n checkIsObject,\n notEmpty,\n checkIsAny,\n checkIsString,\n checkIsBoolean,\n checkIsNumber,\n checkIsArray\n} from './src'\n// PIA syntax\nexport const isObject = checkIsObject;\nexport const isAny = checkIsAny;\nexport const isString = checkIsString;\nexport const isBoolean = checkIsBoolean;\nexport const isNumber = checkIsNumber;\nexport const isArray = checkIsArray;\nexport const isNotEmpty = notEmpty;\n\nimport * as validator from './src/validator'\n\nexport const normalizeArgs = validator.normalizeArgs;\nexport const validateSync = validator.validateSync;\nexport const validateAsync = validator.validateAsync;\n\n// configuration checking\n\nimport * as jsonqlOptions from './src/options'\n\nexport const JSONQL_PARAMS_VALIDATOR_INFO = jsonqlOptions.JSONQL_PARAMS_VALIDATOR_INFO;\n\nexport const createConfig = jsonqlOptions.createConfig;\nexport const constructConfig = jsonqlOptions.constructConfigFn;\n\nexport const checkConfigAsync = jsonqlOptions.checkConfigAsync(validator.validateSync)\nexport const checkConfig = jsonqlOptions.checkConfig(validator.validateSync)\n\n// export the two extra functions\nimport isInArray from './src/is-in-array'\nimport isKeyInObjectFn from './src/is-key-in-object'\n\nexport const inArray = isInArray;\nexport const isKeyInObject = isKeyInObjectFn;\n","module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i isObject(obj) && Object.keys(obj).length\n\n// export\nexport {\n getContractFromConfig,\n ENDPOINT_TABLE,\n USERDATA_TABLE,\n createEvt,\n\n createQuery,\n createMutation,\n getNameFromPayload,\n cacheBurst,\n urlParams,\n resultHandler,\n\n isContract,\n timestamp,\n inArray,\n isObjectHasKey,\n hasProp\n}\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction polyfill (input) {\n var str = String(input).replace(/=+$/, '');\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\n\nmodule.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;\n","// when the user is login with the jwt\n// we use call this to decode the token and then add the payload\n// to the resolver so the user can call ResolverName.userdata\n// and get back the payload\nimport jwt_decode from 'jwt-decode'\nimport { isString } from 'jsonql-params-validator'\nimport { JsonqlError } from 'jsonql-errors'\n\nconst timestamp = function (sec) {\n if ( sec === void 0 ) sec = false;\n\n var time = Date.now();\n return sec ? Math.floor( time / 1000 ) : time;\n}\n\n/**\n * We only check the nbf and exp\n * @param {object} token for checking\n * @return {object} token on success\n */\nfunction validate(token) {\n const start = token.iat || timestamp(true)\n // we only check the exp for the time being\n if (token.exp) {\n if (start >= token.exp) {\n const expired = new Date(token.exp).toISOString()\n throw new JsonqlError(`Token has expired on ${expired}`, token)\n }\n }\n return token;\n}\n\n/**\n * The browser client version it has far fewer options and it doesn't verify it\n * because it couldn't this is the job for the server\n * @TODO we need to add some extra proessing here to check for the exp field\n * @param {string} token to decrypted\n * @return {object} decrypted object\n */\nexport default function jwtDecode(token) {\n if (isString(token)) {\n const t = jwt_decode(token)\n return validate(t)\n }\n throw new JsonqlError('Token must be a string!')\n}\n","// base HttpClass\nimport merge from 'lodash-es/merge'\nimport {\n createQuery,\n createMutation,\n getNameFromPayload,\n cacheBurst,\n urlParams,\n resultHandler\n} from '../utils'\nimport {\n isObject,\n isString\n} from 'jsonql-params-validator'\nimport {\n JsonqlValidationError,\n JsonqlServerError,\n clientErrorsHandler\n} from 'jsonql-errors'\nimport {\n API_REQUEST_METHODS,\n DEFAULT_HEADER,\n JSONP_CALLBACK_NAME,\n SHOW_CONTRACT_DESC_PARAM\n} from 'jsonql-constants'\n\n// extract the one we need\nconst [ POST, PUT ] = API_REQUEST_METHODS\n\nconst _log = (...args) => {\n try {\n if (window && window.console) {\n Reflect.apply(console.log, null, args)\n }\n } catch(e) {}\n}\n\nexport default class HttpClass {\n /**\n * The opts has been check at the init stage\n * @param {object} opts configuration options\n */\n constructor(opts) {\n // change the way how we init Fly\n // flyio now become external depedencies and it makes it easier to switch\n // @BUG should we run test to check if we have the windows object?\n _log(opts)\n this.fly = opts.Fly ? new opts.Fly() : new Fly()\n // to a different environment like WeChat mini app\n this.opts = opts;\n this.extraHeader = {};\n // @1.2.1 for adding query to the call on the fly\n this.extraParams = {};\n // this.log('start up opts', opts);\n this.reqInterceptor()\n this.resInterceptor()\n }\n\n // set headers for that one call\n set headers(header) {\n this.extraHeader = header;\n }\n\n /**\n * Create the reusage request method\n * @param {object} payload jsonql payload\n * @param {object} options extra options add the request\n * @param {object} headers extra headers add to the call\n * @return {object} the fly request instance\n */\n request(payload, options = {}, headers = {}) {\n this.headers = headers;\n let params = merge({}, cacheBurst(), this.extraParams)\n // @TODO need to add a jsonp url and payload\n if (this.opts.enableJsonp) {\n let resolverName = getNameFromPayload(payload)\n params = merge({}, params, {[JSONP_CALLBACK_NAME]: resolverName})\n payload = payload[resolverName]\n }\n return this.fly.request(\n this.jsonqlEndpoint,\n payload,\n merge({}, { method: POST, params }, options)\n )\n }\n\n /**\n * This will replace the create baseRequest method\n *\n */\n reqInterceptor() {\n this.fly.interceptors.request.use(\n req => {\n const headers = this.getHeaders();\n this.log('request interceptor call', headers)\n\n for (let key in headers) {\n req.headers[key] = headers[key];\n }\n return req;\n }\n )\n }\n\n // @TODO\n processJsonp(result) {\n return resultHandler(result)\n }\n\n /**\n * This will be replacement of the first then call\n *\n */\n resInterceptor() {\n const self = this;\n const jsonp = self.opts.enableJsonp;\n this.fly.interceptors.response.use(\n res => {\n this.log('response interceptor call')\n self.cleanUp()\n // now more processing here\n // there is a problem if we throw the result.error here\n // the original data is lost, so we need to do what we did before\n // deal with that error in the first then instead\n const result = isString(res.data) ? JSON.parse(res.data) : res.data;\n if (jsonp) {\n return self.processJsonp(result)\n }\n return resultHandler(result)\n },\n // this get call when it's not 200\n err => {\n self.cleanUp()\n console.error(err)\n throw new JsonqlServerError('Server side error', err)\n }\n )\n }\n\n /**\n * Get the headers inject into the call\n * @return {object} headers\n */\n getHeaders() {\n if (this.opts.enableAuth) {\n return merge({}, DEFAULT_HEADER, this.getAuthHeader(), this.extraHeader)\n }\n return merge({}, DEFAULT_HEADER, this.extraHeader)\n }\n\n /**\n * Post http call operation to clean up things we need\n */\n cleanUp() {\n this.extraHeader = {}\n this.extraParams = {}\n }\n\n /**\n * GET for contract only\n */\n get() {\n if (this.opts.showContractDesc) {\n this.extraParams = merge({}, this.extraParams, SHOW_CONTRACT_DESC_PARAM)\n }\n return this.request({}, {method: 'GET'}, this.contractHeader)\n .then(clientErrorsHandler)\n .then(result => {\n this.log('get contract result', result)\n // when refresh the window the result is different!\n // @TODO need to check the Koa side about why is that\n // also it should set a flag if we want the description or not\n if (result.cache && result.contract) {\n return result.contract;\n }\n // just the normal result\n return result\n })\n }\n\n /**\n * POST to server - query\n * @param {object} name of the resolver\n * @param {array} args arguments\n * @return {object} promise resolve to the resolver return\n */\n query(name, args = []) {\n return this.request(createQuery(name, args))\n .then(clientErrorsHandler)\n }\n\n /**\n * PUT to server - mutation\n * @param {string} name of resolver\n * @param {object} payload what it said\n * @param {object} conditions what it said\n * @return {object} promise resolve to the resolver return\n */\n mutation(name, payload = {}, conditions = {}) {\n return this.request(createMutation(name, payload, conditions), {method: PUT})\n .then(clientErrorsHandler)\n }\n\n}\n","// all the contract related methods will be here\nimport { JsonqlValidationError } from 'jsonql-errors'\n\nimport { timestamp, isContract, ENDPOINT_TABLE } from '../utils'\nimport { localStore } from '../stores'\n\nimport HttpClass from './http-cls';\n\n// export\nexport default class ContractClass extends HttpClass {\n\n constructor(opts) {\n super(opts)\n }\n\n /**\n * return the contract public api\n * @return {object} contract\n */\n getContract() {\n const contracts = this.readContract()\n this.log('getContract first call', contracts)\n if (contracts && Array.isArray(contracts)) {\n const contract = contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ]\n if (contract) {\n return Promise.resolve(contract)\n }\n }\n return this.get()\n .then( this.storeContract.bind(this) )\n }\n\n /**\n * We are changing the way how to auth to get the contract.json\n * Instead of in the url, we will be putting that key value in the header\n * @return {object} header\n */\n get contractHeader() {\n let base = {};\n if (this.opts.contractKey !== false) {\n base[this.opts.contractKeyName] = this.opts.contractKey;\n }\n return base;\n }\n\n /**\n * Save the contract to local store\n * @param {object} contract to save\n * @return {object|boolean} false when its not a contract or contract on OK\n */\n storeContract(contract) {\n // first need to check if the contract is a contract\n if (!isContract(contract)) {\n throw new JsonqlValidationError(`Contract is malformed!`)\n //return false;\n }\n let args = [contract]\n if (this.opts.contractExpired) {\n let expired = parseFloat(this.opts.contractExpired)\n if (!isNaN(expired) && expired > 0) {\n args.push(expired)\n }\n }\n // calling the setter\n this.jsonqlContract = args;\n // return it\n this.log('storeContract return result', contract)\n return contract;\n }\n\n /**\n * return the contract from options or localStore\n * @return {object} contract\n */\n readContract() {\n let contract = isContract(this.opts.contract)\n return contract ? this.opts.contract : localStore.get(this.opts.storageKey)\n }\n}\n","// this is the new auth class that integrate with the jsonql-jwt\n// all the auth related methods will be here\nimport { decodeToken } from 'jsonql-jwt'\nimport {\n CREDENTIAL_STORAGE_KEY,\n AUTH_HEADER,\n BEARER\n} from 'jsonql-constants'\n// chain\nimport ContractClass from './contract-cls'\n// export\nexport default class AuthClass extends ContractClass {\n\n constructor(opts) {\n super(opts)\n if (opts.enableAuth && opts.useJwt) {\n this.setDecoder = decodeToken;\n }\n }\n\n /**\n * Getter to get the login userdata\n * @return {mixed} userdata\n */\n get userdata() {\n return this.jsonqlUserdata; // see base-cls\n }\n\n /**\n * Return the token from session store\n * @return {string} token\n */\n get rawAuthToken() {\n // this should return from the base\n return this.jsonqlToken; // see base-cls\n }\n\n /**\n * Setter to add a decoder when retrieve user token\n * @param {function} d a decoder\n */\n set setDecoder(d) {\n if (typeof d === 'function') {\n this.decoder = d;\n }\n }\n\n /**\n * Setter after login success\n * @TODO this move to a new class to handle multiple login\n * @param {string} token to store\n * @return {*} success store\n */\n storeToken(token) {\n return this.jsonqlToken = token;\n }\n\n /**\n * for overwrite\n * @param {string} token stored token\n * @return {string} token\n */\n decoder(token) {\n return token;\n }\n\n /**\n * Construct the auth header\n * @return {object} header\n */\n getAuthHeader() {\n const token = this.rawAuthToken;\n return token ? {[this.opts.AUTH_HEADER]: `${BEARER} ${token}`} : {};\n }\n\n}\n","// this the core of the internal storage management\nimport { CREDENTIAL_STORAGE_KEY } from 'jsonql-constants'\nimport { isObject, isArray } from 'jsonql-params-validator'\nimport { JsonqlValidationError } from 'jsonql-errors'\n// chaining into the classes\nimport { localStore, sessionStore } from '../stores'\nimport { timestamp, inArray, ENDPOINT_TABLE, USERDATA_TABLE } from '../utils'\n\nimport AuthCls from './auth-cls'\n\n// This class will only focus on the storage system\nexport default class JsonqlBaseClient extends AuthCls {\n\n constructor(opts, Fly = null) {\n if (Fly) {\n opts.Fly = Fly;\n }\n super(opts)\n }\n\n // @TODO\n set storeIt(args) {\n console.info('storeIt', args)\n // the args MUST contain [0] the key , [1] the content [2] optional expired in\n if (isArray(args) && args.length >= 2) {\n Reflect.apply(localStore.set, localStore, args)\n }\n throw new JsonqlValidationError(`Expect argument to be array and least 2 items!`)\n }\n\n // this table index key will drive the contract\n // also it should not allow to change dynamicly\n // because this is how different client can id itself\n // OK this could be self manage because when init a new client\n // it will add a new endpoint and we will know if they are the same or not\n // but the check here\n set jsonqlEndpoint(endpoint) {\n let urls = localStore.get(ENDPOINT_TABLE) || []\n // should check if this url already existed?\n if (!inArray(urls, endpoint)) {\n urls.push(endpoint)\n this.storeId = [ENDPOINT_TABLE, urls]\n this[ENDPOINT_TABLE + 'Index'] = urls.length - 1;\n }\n }\n\n // by the time it call the save contract already been checked\n set jsonqlContract(args) {\n const key = this.opts.storageKey;\n let _args = [ key ]\n let [ contract, expired ] = args;\n // get the endpoint index\n let contracts = localStore.get(key) || []\n contracts[ this[ENDPOINT_TABLE + 'Index'] || 0 ] = contract;\n _args.push(contracts)\n if (expired) {\n _args.push(expired)\n }\n if (this.opts.keepContract) {\n this.storeIt = _args;\n }\n }\n\n /**\n * save token\n * @param {string} token to store\n * @return {string|boolean} false on failed\n */\n set jsonqlToken(token) {\n const key = CREDENTIAL_STORAGE_KEY;\n let tokens = localStorage.get(key) || []\n if (!inArray(tokens, token)) {\n let index = tokens.length - 1;\n tokens[ index ] = token;\n this[key + 'Index'] = index;\n let args = [key, tokens]\n if (this.opts.tokenExpired) {\n const expired = parseFloat(this.opts.tokenExpired)\n if (!isNaN(expired) && expired > 0) {\n const ts = timestamp()\n args.push( ts + parseFloat(expired) )\n }\n }\n this.storeIt = args;\n // now decode it and store in the userdata\n this.jsonqlUserdata = this.decoder(token)\n return token;\n }\n return false;\n }\n\n /**\n * this one will use the sessionStore\n * basically we hook this onto the token store and decode it to store here\n */\n set jsonqlUserdata(userdata) {\n const args = [USERDATA_TABLE, userdata]\n if (userdata.exp) {\n args.push(userdata.exp)\n }\n return Reflect.apply(localStore.set, localStore, args)\n }\n\n /**\n * This also manage the index internally\n * There is NO need to store them in an array\n * because each instance contain one end point\n * @return {string} the end point to call\n */\n get jsonqlEndpoint() {\n let urls = localStore.get(ENDPOINT_TABLE)\n if (!urls) {\n const { hostname, jsonqlPath } = this.opts;\n let url = [hostname, jsonqlPath].join('/')\n this.jsonqlEndpoint = url;\n return url;\n }\n return urls[this[ENDPOINT_TABLE + 'Index']]\n }\n\n /**\n * If already stored then return it by the end point index\n * or false when there is none\n * 1.2.0 start using the keepContract option (replace the useLocalStorage)\n * @return {object|boolean} as described above\n */\n get jsonqlContract() {\n const key = this.opts.storageKey\n let contracts = localStore.get(key) || []\n return contracts[ this[ENDPOINT_TABLE + 'Index'] ] || false\n }\n\n /**\n * Jsonql token getter\n * @return {string|boolean} false when failed\n */\n get jsonqlToken() {\n const key = CREDENTIAL_STORAGE_KEY;\n let tokens = localStorage.get(key)\n if (tokens) {\n return tokens[ this[key + 'Index'] ]\n }\n return false;\n }\n\n /**\n * this one store in the session store\n * get login userdata decoded jwt\n * @return {object|null}\n */\n get jsonqlUserdata() {\n return sessionStore.get(USERDATA_TABLE)\n }\n\n /**\n * simple log\n */\n log(...args) {\n if (this.opts.debugOn === true) {\n Reflect.apply(console.info, console, args)\n }\n }\n\n}\n","// export interface\n// @public\nimport JsonqlBaseClient from './base-cls'\n\nexport default JsonqlBaseClient\n","// bunch of generic helpers\n\nimport isArray from 'lodash-es/isArray'\nimport isPlainObject from 'lodash-es/isPlainObject'\nimport trim from 'lodash-es/trim'\n\n/**\n * DIY in Array\n * @param {array} arr to check from\n * @param {*} value to check against\n * @return {boolean} true on found\n */\nexport const inArray = (arr, value) => !!arr.filter(a => a === value).length;\n\n// quick and dirty to turn non array to array\nexport const toArray = (arg) => isArray(arg) ? arg : [arg];\n\n/**\n * parse string to json or just return the original value if error happened\n * @param {*} n input\n * @return {*} json object on success\n */\nconst parse = function(n) {\n try {\n return JSON.parse(n)\n } catch(e) {\n return n;\n }\n}\n\n\n/**\n * @param {object} obj for search\n * @param {string} key target\n * @return {boolean} true on success\n */\nexport const isObjectHasKey = function(obj, key) {\n const keys = Object.keys(obj)\n return inArray(keys, key)\n}\n\n/**\n * create a event name\n * @param {string[]} args\n * @return {string} event name for use\n */\nexport const createEvt = (...args) => args.join('_')\n\n/**\n * @param {boolean} sec return in second or not\n * @return {number} timestamp\n */\nexport const timestamp = (sec = false) => {\n let time = Date.now()\n return sec ? Math.floor( time / 1000 ) : time;\n}\n\n/**\n * construct a url with query parameters\n * @param {string} url to append\n * @param {object} params to append to url\n * @return {string} url with appended params\n */\nexport const urlParams = (url, params) => {\n let parts = [];\n for (let key in params) {\n parts.push( [key, params[key]].join('=') )\n }\n return [url, parts.join('&')].join('?')\n}\n\n/**\n * construct a url with cache burster\n * @param {string} url to append to\n * @return {object} _cb key timestamp\n */\nexport const cacheBurstUrl = url => urlParams(url, cacheBurst())\n\n/**\n * @return {object} _cb as key with timestamp\n */\nexport const cacheBurst = () => ({ _cb: timestamp() })\n\n/**\n * From underscore.string library\n * @BUG there is a bug here with the non-standard name start with _\n * @param {string} str string\n * @return {string} dasherize string\n */\nexport const dasherize = str => (\n trim(str)\n .replace(/([A-Z])/g, '-$1')\n .replace(/[-_\\s]+/g, '-')\n .toLowerCase()\n)\n\n/**\n * simple util method to get the value\n * @param {string} name of the key\n * @param {object} obj to take value from\n * @return {*} the object value id by name or undefined\n */\nexport const getConfigValue = (name, obj) => (\n obj && isPlainObject(obj) ? ( (name in obj) ? obj[name] : undefined ) : undefined\n)\n\n/**\n * small util to make sure the return value is valid JSON object\n * @param {*} n input\n * @return {object} correct JSON object\n */\nexport const toJson = (n) => {\n if (typeof n === 'string') {\n return parse(n)\n }\n return JSON.parse(JSON.stringify(n))\n}\n\n/**\n * Check several parameter that there is something in the param\n * @param {*} param input\n * @return {boolean}\n */\nexport const isNotEmpty = function(param) {\n return param !== undefined && param !== false && param !== null && trim(param) !== '';\n}\n\n/**\n * Simple check if the prop is function\n * @param {*} prop input\n * @return {boolean} true on success\n */\nexport const isFunc = prop => {\n if (typeof prop === 'function') {\n return true;\n }\n console.error(`Expect to be Function type!`)\n}\n","// breaking out the inner methods generator in here\nimport {\n JsonqlValidationError,\n JsonqlError,\n clientErrorsHandler,\n finalCatch\n} from 'jsonql-errors'\nimport { validateAsync } from 'jsonql-params-validator'\nimport { LOGOUT_NAME, ISSUER_NAME, KEY_WORD } from 'jsonql-constants'\nimport { injectToFn, chainFns } from 'jsonql-utils/module'\n\n/**\n * generate authorisation specific methods\n * @param {object} jsonqlInstance instance of this\n * @param {string} name of method\n * @param {object} opts configuration\n * @param {object} contract to match\n * @return {function} for use\n */\nconst authMethodGenerator = (jsonqlInstance, name, opts, contract) => {\n return (...args) => {\n const params = contract.auth[name].params;\n const values = params.map((p, i) => args[i])\n const header = args[params.length] || {};\n return validateAsync(args, params)\n .then(() => jsonqlInstance\n .query\n .apply(jsonqlInstance, [name, values, header])\n )\n .catch(finalCatch)\n }\n}\n\n/**\n * Break up the different type each - create query methods\n * @param {object} obj to hold all the objects\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} ee eventEmitter\n * @param {object} config configuration\n * @param {object} contract json\n * @return {object} modified output for next op\n */\nconst createQueryMethods = (obj, jsonqlInstance, ee, config, contract) => {\n let query = {}\n for (let queryFn in contract.query) {\n // to keep it clean we use a param to id the auth method\n // const fn = (_contract.query[queryFn].auth === true) ? 'auth' : queryFn;\n // generate the query method\n query = injectToFn(query, queryFn, function queryFnHandler(...args) {\n // obj.query[queryFn] = (...args) => {\n const params = contract.query[queryFn].params;\n const _args = params.map((param, i) => args[i])\n // debug('query', queryFn, _params);\n // @TODO this need to change\n // the +1 parameter is the extra headers we want to pass\n const header = args[params.length] || {};\n // @TODO validate against the type\n return validateAsync(_args, params)\n .then(() => jsonqlInstance\n .query\n .apply(jsonqlInstance, [queryFn, _args, header])\n )\n .catch(finalCatch)\n })\n }\n obj.query = query;\n return { obj, jsonqlInstance, ee, config, contract }\n}\n\n/**\n * create mutation methods\n * @param {object} obj to hold all the objects\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} ee eventEmitter\n * @param {object} config configuration\n * @param {object} contract json\n * @return {object} modified output for next op\n */\nconst createMutationMethods = (obj, jsonqlInstance, ee, config, contract) => {\n let mutation = {}\n // process the mutation, the reason the mutation has a fixed number of parameters\n // there is only the payload, and conditions parameters\n // plus a header at the end\n for (let mutationFn in contract.mutation) {\n mutation = injectToFn(mutation, mutationFn, function mutationFnHandler(payload, conditions, header = {}) {\n //obj.mutation[mutationFn] = (payload, conditions, header = {}) => {\n const args = [payload, conditions];\n const params = contract.mutation[mutationFn].params;\n return validateAsync(args, params)\n .then(() => jsonqlInstance\n .mutation\n .apply(jsonqlInstance, [mutationFn, payload, conditions, header])\n )\n .catch(finalCatch)\n })\n }\n obj.mutation = mutation;\n return { obj, jsonqlInstance, ee, config, contract }\n}\n\n/**\n * create auth methods\n * @param {object} obj to hold all the objects\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} ee eventEmitter\n * @param {object} config configuration\n * @param {object} contract json\n * @return {object} modified output for next op\n */\nconst createAuthMethods = (obj, jsonqlInstance, ee, config, contract) => {\n if (config.enableAuth && contract.auth) {\n let auth = {} // v1.3.1 add back the auth prop name in contract\n const { loginHandlerName, logoutHandlerName } = config;\n if (contract.auth[loginHandlerName]) {\n // changing to the name the config specify\n auth[loginHandlerName] = function loginHandlerFn(...args) {\n const fn = authMethodGenerator(jsonqlInstance, loginHandlerName, config, contract)\n return fn.apply(null, args)\n .then(jsonqlInstance.postLoginAction)\n .then(token => {\n ee.$trigger(ISSUER_NAME, token)\n return token;\n })\n }\n }\n if (contract.auth[logoutHandlerName]) {\n auth[logoutHandlerName] = function logoutHandlerFn(...args) {\n const fn = authMethodGenerator(jsonqlInstance, logoutHandlerName, config, contract)\n return fn.apply(null, args)\n .then(jsonqlInstance.postLogoutAction)\n .then(r => {\n ee.$trigger(LOGOUT_NAME, r)\n return r;\n })\n }\n } else {\n auth[logoutHandlerName] = function logoutHandlerFn() {\n jsonqlInstance.postLogoutAction(KEY_WORD)\n ee.$trigger(LOGOUT_NAME, KEY_WORD)\n }\n }\n obj.auth = auth;\n }\n return obj;\n}\n\n/**\n * Here just generate the methods calls\n * @param {object} jsonqlInstance what it said\n * @param {object} ee event emitter\n * @param {object} config configuration\n * @param {object} contract the map\n * @return {object} with mapped methods\n */\nexport default function methodsGenerator(jsonqlInstance, ee, config, contract) {\n let obj = {}\n const executor = chainFns(createQueryMethods, createMutationMethods, createAuthMethods)\n return executor(obj, jsonqlInstance, ee, config, contract)\n}\n","// Generate the resolver for developer to use\n\n// @TODO when enableAuth we need to add one extra check\n// before the resolver call make it to the core\n// which is checking the login state, if the developer\n// is calling a private method without logging in\n// then we should throw the JsonqlForbiddenError at this point\n// instead of making a round trip to the server\nimport { LOGOUT_NAME, ISSUER_NAME, KEY_WORD } from 'jsonql-constants'\nimport { validateAsync } from 'jsonql-params-validator'\nimport {\n JsonqlValidationError,\n JsonqlError,\n clientErrorsHandler,\n finalCatch\n} from 'jsonql-errors'\n\nimport methodsGenerator from './methods-generator'\n\n/**\n * @param {object} jsonqlInstance jsonql class instance\n * @param {object} config options\n * @param {object} contract the contract\n * @param {object} ee eventEmitter\n * @return {object} constructed functions call\n */\nconst generator = (jsonqlInstance, config, contract, ee) => {\n // V1.3.0 - now everything wrap inside this method\n let client = methodsGenerator(jsonqlInstance, ee, config, contract)\n // create the rest of the methods\n if (config.enableAuth) {\n /**\n * new method to allow retrieve the current login user data\n * @return {*} userdata\n */\n client.userdata = () => jsonqlInstance.userdata;\n }\n // allow getting the token for valdiate agains the socket\n client.getToken = () => jsonqlInstance.rawAuthToken;\n // this will pass to the ws-client if needed\n // client.eventEmitter = ee;\n // this will require a param\n if (config.exposeContract) {\n // 1.4.0 change from the get (raw) to the getContract cache and raw version\n client.getContract = () => jsonqlInstance.getContract()\n }\n // this is for the ws to use later\n client.eventEmitter = ee;\n client.version = '__VERSION__';\n // output\n return client;\n};\n\nexport default generator;\n","// all the client configuration options here\nimport {\n JSONQL_PATH,\n CONTENT_TYPE,\n BEARER,\n CLIENT_STORAGE_KEY,\n CLIENT_AUTH_KEY,\n CONTRACT_KEY_NAME,\n AUTH_HEADER,\n ISSUER_NAME,\n LOGOUT_NAME,\n BOOLEAN_TYPE,\n STRING_TYPE,\n NUMBER_TYPE,\n DEFAULT_HEADER\n} from 'jsonql-constants'\nimport { createConfig } from 'jsonql-params-validator'\nexport const constProps = {\n contract: false,\n MUTATION_ARGS: ['name', 'payload', 'conditions'], // this seems wrong?\n CONTENT_TYPE,\n BEARER,\n AUTH_HEADER\n}\n\n// grab the localhost name and put into the hostname as default\nconst getHostName = () => (\n [window.location.protocol, window.location.host].join('//')\n)\n\nexport const appProps = {\n\n hostname: createConfig(getHostName(), [STRING_TYPE]), // required the hostname\n jsonqlPath: createConfig(JSONQL_PATH, [STRING_TYPE]), // The path on the server\n\n loginHandlerName: createConfig(ISSUER_NAME, [STRING_TYPE]),\n logoutHandlerName: createConfig(LOGOUT_NAME, [STRING_TYPE]),\n // add to koa v1.3.0 - this might remove in the future\n enableJsonp: createConfig(false, [BOOLEAN_TYPE]),\n enableAuth: createConfig(false, [BOOLEAN_TYPE]),\n // enable useJwt by default\n useJwt: createConfig(true, [BOOLEAN_TYPE]),\n\n // the header\n // v1.2.0 we are using this option during the dev\n // so it won't save anything to the localstorage and fetch a new contract\n // whenever the browser reload\n useLocalstorage: createConfig(true, [BOOLEAN_TYPE]), // should we store the contract into localStorage\n storageKey: createConfig(CLIENT_STORAGE_KEY, [STRING_TYPE]),// the key to use when store into localStorage\n authKey: createConfig(CLIENT_AUTH_KEY, [STRING_TYPE]),// the key to use when store into the sessionStorage\n contractExpired: createConfig(0, [NUMBER_TYPE]),// -1 always fetch contract,\n // 0 never expired,\n // > 0 then compare the timestamp with the current one to see if we need to get contract again\n // useful during development\n keepContract: createConfig(true, [BOOLEAN_TYPE]),\n exposeContract: createConfig(false, [BOOLEAN_TYPE]),\n // @1.2.1 new option for the contract-console to fetch the contract with description\n showContractDesc: createConfig(false, [BOOLEAN_TYPE]),\n contractKey: createConfig(false, [BOOLEAN_TYPE]), // if the server side is lock by the key you need this\n contractKeyName: createConfig(CONTRACT_KEY_NAME, [STRING_TYPE]), // same as above they go in pairs\n enableTimeout: createConfig(false, [BOOLEAN_TYPE]), // @TODO\n timeout: createConfig(5000, [NUMBER_TYPE]), // 5 seconds\n returnInstance: createConfig(false, [BOOLEAN_TYPE]),\n allowReturnRawToken: createConfig(false, [BOOLEAN_TYPE]),\n debugOn: createConfig(false, [BOOLEAN_TYPE])\n}\n","// we must ensure the user passing the correct options\n// therefore we need to validate against the properties as well\n\nimport { appProps, constProps } from './base-options'\nimport { checkConfigAsync } from 'jsonql-params-validator'\n\nexport default function checkOptionsAsync(config) {\n let { contract } = config;\n return checkConfigAsync(config, appProps, constProps)\n .then(opts => {\n opts.contract = contract;\n return opts;\n })\n}\n","// this is new for the flyio and normalize the name from now on\nimport JsonqlBaseClient from './base'\nimport generator from './core/jsonql-api-generator'\nimport { checkOptionsAsync } from './options'\nimport { getContractFromConfig } from './utils'\n\n/**\n * Main interface for jsonql fetch api\n * @param {object} config\n * @param {object} Fly this is really pain in the backside ... long story\n * @return {object} jsonql client\n */\nexport default function(ee, config = {}, Fly = null) {\n return checkOptionsAsync(config)\n .then(opts => (\n {\n baseClient: new JsonqlBaseClient(opts, Fly),\n opts: opts\n }\n ))\n .then( ({baseClient, opts}) => (\n getContractFromConfig(baseClient, opts.contract)\n .then(contract => generator(baseClient, opts, contract, ee)\n )\n )\n )\n}\n","/**\n * generate a 32bit hash based on the function.toString()\n * _from http://stackoverflow.com/questions/7616461/generate-a-hash-_from-string-in-javascript-jquery\n * @param {string} s the converted to string function\n * @return {string} the hashed function string\n */\nexport default function hashCode(s) {\n\treturn s.split(\"\").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0)\n}\n","// making all the functionality on it's own\n// import { WatchClass } from './watch'\n\nexport default class SuspendClass {\n\n constructor() {\n // suspend, release and queue\n this.__suspend__ = null;\n this.queueStore = new Set()\n /*\n this.watch('suspend', function(value, prop, oldValue) {\n this.logger(`${prop} set from ${oldValue} to ${value}`)\n // it means it set the suspend = true then release it\n if (oldValue === true && value === false) {\n // we want this happen after the return happens\n setTimeout(() => {\n this.release()\n }, 1)\n }\n return value; // we need to return the value to store it\n })\n */\n }\n\n /**\n * setter to set the suspend and check if it's boolean value\n * @param {boolean} value to trigger\n */\n set $suspend(value) {\n if (typeof value === 'boolean') {\n const lastValue = this.__suspend__;\n this.__suspend__ = value;\n this.logger('($suspend)', `Change from ${lastValue} --> ${value}`)\n if (lastValue === true && value === false) {\n setTimeout(() => {\n this.release()\n }, 1)\n }\n } else {\n throw new Error(`$suspend only accept Boolean value!`)\n }\n }\n\n /**\n * queuing call up when it's in suspend mode\n * @param {any} value\n * @return {Boolean} true when added or false when it's not\n */\n $queue(...args) {\n if (this.__suspend__ === true) {\n this.logger('($queue)', 'added to $queue', args)\n // there shouldn't be any duplicate ...\n this.queueStore.add(args)\n }\n return this.__suspend__;\n }\n\n /**\n * a getter to get all the store queue\n * @return {array} Set turn into Array before return\n */\n get $queues() {\n let size = this.queueStore.size;\n this.logger('($queues)', `size: ${size}`)\n if (size > 0) {\n return Array.from(this.queueStore)\n }\n return []\n }\n\n /**\n * Release the queue\n * @return {int} size if any\n */\n release() {\n let size = this.queueStore.size\n this.logger('(release)', `Release was called ${size}`)\n if (size > 0) {\n const queue = Array.from(this.queueStore)\n this.queueStore.clear()\n this.logger('queue', queue)\n queue.forEach(args => {\n this.logger(args)\n Reflect.apply(this.$trigger, this, args)\n })\n this.logger(`Release size ${this.queueStore.size}`)\n }\n }\n}\n","// break up the main file because its getting way too long\nimport {\n NB_EVENT_SERVICE_PRIVATE_STORE,\n NB_EVENT_SERVICE_PRIVATE_LAZY\n} from './store'\nimport genHaskKey from './hash-code'\nimport SuspendClass from './suspend'\n\nexport default class NbEventServiceBase extends SuspendClass {\n\n constructor(config = {}) {\n super()\n if (config.logger && typeof config.logger === 'function') {\n this.logger = config.logger;\n }\n this.keep = config.keep;\n // for the $done setter\n this.result = config.keep ? [] : null;\n // we need to init the store first otherwise it could be a lot of checking later\n this.normalStore = new Map()\n this.lazyStore = new Map()\n }\n\n /**\n * validate the event name(s)\n * @param {string[]} evt event name\n * @return {boolean} true when OK\n */\n validateEvt(...evt) {\n evt.forEach(e => {\n if (typeof e !== 'string') {\n this.logger('(validateEvt)', e)\n throw new Error(`event name must be string type!`)\n }\n })\n return true;\n }\n\n /**\n * Simple quick check on the two main parameters\n * @param {string} evt event name\n * @param {function} callback function to call\n * @return {boolean} true when OK\n */\n validate(evt, callback) {\n if (this.validateEvt(evt)) {\n if (typeof callback === 'function') {\n return true;\n }\n }\n throw new Error(`callback required to be function type!`)\n }\n\n /**\n * Check if this type is correct or not added in V1.5.0\n * @param {string} type for checking\n * @return {boolean} true on OK\n */\n validateType(type) {\n const types = ['on', 'only', 'once', 'onlyOnce']\n return !!types.filter(t => type === t).length;\n }\n\n /**\n * Run the callback\n * @param {function} callback function to execute\n * @param {array} payload for callback\n * @param {object} ctx context or null\n * @return {void} the result store in $done\n */\n run(callback, payload, ctx) {\n this.logger('(run)', callback, payload, ctx)\n this.$done = Reflect.apply(callback, ctx, this.toArray(payload))\n }\n\n /**\n * Take the content out and remove it from store id by the name\n * @param {string} evt event name\n * @param {string} [storeName = lazyStore] name of store\n * @return {object|boolean} content or false on not found\n */\n takeFromStore(evt, storeName = 'lazyStore') {\n let store = this[storeName]; // it could be empty at this point\n if (store) {\n this.logger('(takeFromStore)', storeName, store)\n if (store.has(evt)) {\n let content = store.get(evt)\n this.logger('(takeFromStore)', `has ${evt}`, content)\n store.delete(evt)\n return content;\n }\n return false;\n }\n throw new Error(`${storeName} is not supported!`)\n }\n\n /**\n * The add to store step is similar so make it generic for resuse\n * @param {object} store which store to use\n * @param {string} evt event name\n * @param {spread} args because the lazy store and normal store store different things\n * @return {array} store and the size of the store\n */\n addToStore(store, evt, ...args) {\n let fnSet;\n if (store.has(evt)) {\n this.logger('(addToStore)', `${evt} existed`)\n fnSet = store.get(evt)\n } else {\n this.logger('(addToStore)', `create new Set for ${evt}`)\n // this is new\n fnSet = new Set()\n }\n // lazy only store 2 items - this is not the case in V1.6.0 anymore\n // we need to check the first parameter is string or not\n if (args.length > 2) {\n if (Array.isArray(args[0])) { // lazy store\n // check if this type of this event already register in the lazy store\n let [,,t] = args;\n if (!this.checkTypeInLazyStore(evt, t)) {\n fnSet.add(args)\n }\n } else {\n if (!this.checkContentExist(args, fnSet)) {\n this.logger('(addToStore)', `insert new`, args)\n fnSet.add(args)\n }\n }\n } else { // add straight to lazy store\n fnSet.add(args)\n }\n store.set(evt, fnSet)\n return [store, fnSet.size]\n }\n\n /**\n * @param {array} args for compare\n * @param {object} fnSet A Set to search from\n * @return {boolean} true on exist\n */\n checkContentExist(args, fnSet) {\n let list = Array.from(fnSet)\n return !!list.filter(l => {\n let [hash,] = l;\n if (hash === args[0]) {\n return true;\n }\n return false;\n }).length;\n }\n\n /**\n * get the existing type to make sure no mix type add to the same store\n * @param {string} evtName event name\n * @param {string} type the type to check\n * @return {boolean} true you can add, false then you can't add this type\n */\n checkTypeInStore(evtName, type) {\n this.validateEvt(evtName, type)\n let all = this.$get(evtName, true)\n if (all === false) {\n // pristine it means you can add\n return true;\n }\n // it should only have ONE type in ONE event store\n return !all.filter(list => {\n let [ ,,,t ] = list;\n return type !== t;\n }).length;\n }\n\n /**\n * This is checking just the lazy store because the structure is different\n * therefore we need to use a new method to check it\n */\n checkTypeInLazyStore(evtName, type) {\n this.validateEvt(evtName, type)\n let store = this.lazyStore.get(evtName)\n this.logger('(checkTypeInLazyStore)', store)\n if (store) {\n return !!Array\n .from(store)\n .filter(l => {\n let [,,t] = l;\n return t !== type;\n }).length\n }\n return false;\n }\n\n /**\n * wrapper to re-use the addToStore,\n * V1.3.0 add extra check to see if this type can add to this evt\n * @param {string} evt event name\n * @param {string} type on or once\n * @param {function} callback function\n * @param {object} context the context the function execute in or null\n * @return {number} size of the store\n */\n addToNormalStore(evt, type, callback, context = null) {\n this.logger('(addToNormalStore)', evt, type, 'try to add to normal store')\n // @TODO we need to check the existing store for the type first!\n if (this.checkTypeInStore(evt, type)) {\n this.logger('(addToNormalStore)', `${type} can add to ${evt} normal store`)\n let key = this.hashFnToKey(callback)\n let args = [this.normalStore, evt, key, callback, context, type]\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.normalStore = _store;\n return size;\n }\n return false;\n }\n\n /**\n * Add to lazy store this get calls when the callback is not register yet\n * so we only get a payload object or even nothing\n * @param {string} evt event name\n * @param {array} payload of arguments or empty if there is none\n * @param {object} [context=null] the context the callback execute in\n * @param {string} [type=false] register a type so no other type can add to this evt\n * @return {number} size of the store\n */\n addToLazyStore(evt, payload = [], context = null, type = false) {\n // this is add in V1.6.0\n // when there is type then we will need to check if this already added in lazy store\n // and no other type can add to this lazy store\n let args = [this.lazyStore, evt, this.toArray(payload), context]\n if (type) {\n args.push(type)\n }\n let [_store, size] = Reflect.apply(this.addToStore, this, args)\n this.lazyStore = _store;\n return size;\n }\n\n /**\n * make sure we store the argument correctly\n * @param {*} arg could be array\n * @return {array} make sured\n */\n toArray(arg) {\n return Array.isArray(arg) ? arg : [arg];\n }\n\n /**\n * setter to store the Set in private\n * @param {object} obj a Set\n */\n set normalStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_STORE.set(this, obj)\n }\n\n /**\n * @return {object} Set object\n */\n get normalStore() {\n return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)\n }\n\n /**\n * setter to store the Set in lazy store\n * @param {object} obj a Set\n */\n set lazyStore(obj) {\n NB_EVENT_SERVICE_PRIVATE_LAZY.set(this , obj)\n }\n\n /**\n * @return {object} the lazy store Set\n */\n get lazyStore() {\n return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)\n }\n\n /**\n * generate a hashKey to identify the function call\n * The build-in store some how could store the same values!\n * @param {function} fn the converted to string function\n * @return {string} hashKey\n */\n hashFnToKey(fn) {\n return genHaskKey(fn.toString()) + '';\n }\n}\n","// The top level\nimport NbStoreService from './store-service'\n// export\nexport default class EventService extends NbStoreService {\n /**\n * class constructor\n */\n constructor(config = {}) {\n super(config)\n }\n\n /**\n * logger function for overwrite\n */\n logger() {}\n\n //////////////////////////\n // PUBLIC METHODS //\n //////////////////////////\n\n /**\n * Register your evt handler, note we don't check the type here,\n * we expect you to be sensible and know what you are doing.\n * @param {string} evt name of event\n * @param {function} callback bind method --> if it's array or not\n * @param {object} [context=null] to execute this call in\n * @return {number} the size of the store\n */\n $on(evt , callback , context = null) {\n const type = 'on';\n this.validate(evt, callback)\n // first need to check if this evt is in lazy store\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register first then call later\n if (lazyStoreContent === false) {\n this.logger('($on)', `${evt} callback is not in lazy store`)\n // @TODO we need to check if there was other listener to this\n // event and are they the same type then we could solve that\n // register the different type to the same event name\n\n return this.addToNormalStore(evt, type, callback, context)\n }\n this.logger('($on)', `${evt} found in lazy store`)\n // this is when they call $trigger before register this callback\n let size = 0;\n lazyStoreContent.forEach(content => {\n let [ payload, ctx, t ] = content;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($on)`, `call run on ${evt}`)\n this.run(callback, payload, context || ctx)\n size += this.addToNormalStore(evt, type, callback, context || ctx)\n })\n return size;\n }\n\n /**\n * once only registered it once, there is no overwrite option here\n * @NOTE change in v1.3.0 $once can add multiple listeners\n * but once the event fired, it will remove this event (see $only)\n * @param {string} evt name\n * @param {function} callback to execute\n * @param {object} [context=null] the handler execute in\n * @return {boolean} result\n */\n $once(evt , callback , context = null) {\n this.validate(evt, callback)\n const type = 'once';\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (lazyStoreContent === false) {\n this.logger('($once)', `${evt} not in the lazy store`)\n // v1.3.0 $once now allow to add multiple listeners\n return this.addToNormalStore(evt, type, callback, context)\n } else {\n // now this is the tricky bit\n // there is a potential bug here that cause by the developer\n // if they call $trigger first, the lazy won't know it's a once call\n // so if in the middle they register any call with the same evt name\n // then this $once call will be fucked - add this to the documentation\n this.logger('($once)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger('($once)', `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n }\n\n /**\n * This one event can only bind one callbackback\n * @param {string} evt event name\n * @param {function} callback event handler\n * @param {object} [context=null] the context the event handler execute in\n * @return {boolean} true bind for first time, false already existed\n */\n $only(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'only';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($only)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($only)', `${evt} found data in lazy store to execute`)\n const list = Array.from(lazyStoreContent)\n // $only allow to trigger this multiple time on the single handler\n list.forEach( l => {\n const [ payload, ctx, t ] = l;\n if (t && t !== type) {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($only)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n })\n }\n return added;\n }\n\n /**\n * $only + $once this is because I found a very subtile bug when we pass a\n * resolver, rejecter - and it never fire because that's OLD added in v1.4.0\n * @param {string} evt event name\n * @param {function} callback to call later\n * @param {object} [context=null] exeucte context\n * @return {void}\n */\n $onlyOnce(evt, callback, context = null) {\n this.validate(evt, callback)\n const type = 'onlyOnce';\n let added = false;\n let lazyStoreContent = this.takeFromStore(evt)\n // this is normal register before call $trigger\n let nStore = this.normalStore;\n if (!nStore.has(evt)) {\n this.logger(`($onlyOnce)`, `${evt} add to store`)\n added = this.addToNormalStore(evt, type, callback, context)\n }\n if (lazyStoreContent !== false) {\n // there are data store in lazy store\n this.logger('($onlyOnce)', lazyStoreContent)\n const list = Array.from(lazyStoreContent)\n // should never have more than 1\n const [ payload, ctx, t ] = list[0]\n if (t && t !== 'onlyOnce') {\n throw new Error(`You are trying to register an event already been taken by other type: ${t}`)\n }\n this.logger(`($onlyOnce)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n // remove this evt from store\n this.$off(evt)\n }\n return added;\n }\n\n /**\n * This is a shorthand of $off + $on added in V1.5.0\n * @param {string} evt event name\n * @param {function} callback to exeucte\n * @param {object} [context = null] or pass a string as type\n * @param {string} [type=on] what type of method to replace\n * @return {}\n */\n $replace(evt, callback, context = null, type = 'on') {\n if (this.validateType(type)) {\n this.$off(evt)\n let method = this['$' + type]\n this.logger(`($replace)`, evt, callback)\n return Reflect.apply(method, this, [evt, callback, context])\n }\n throw new Error(`${type} is not supported!`)\n }\n\n /**\n * trigger the event\n * @param {string} evt name NOT allow array anymore!\n * @param {mixed} [payload = []] pass to fn\n * @param {object|string} [context = null] overwrite what stored\n * @param {string} [type=false] if pass this then we need to add type to store too\n * @return {number} if it has been execute how many times\n */\n $trigger(evt , payload = [] , context = null, type = false) {\n this.validateEvt(evt)\n let found = 0;\n // first check the normal store\n let nStore = this.normalStore;\n this.logger('($trigger)', 'normalStore', nStore)\n if (nStore.has(evt)) {\n // @1.8.0 to add the suspend queue\n let added = this.$queue(evt, payload, context, type)\n this.logger('($trigger)', evt, 'found; add to queue: ', added)\n if (added === true) {\n this.logger('($trigger)', evt, 'not executed. Exit now.')\n return false; // not executed\n }\n let nSet = Array.from(nStore.get(evt))\n let ctn = nSet.length;\n let hasOnce = false;\n let hasOnly = false;\n for (let i=0; i < ctn; ++i) {\n ++found;\n // this.logger('found', found)\n let [ _, callback, ctx, type ] = nSet[i]\n this.logger(`($trigger)`, `call run for ${evt}`)\n this.run(callback, payload, context || ctx)\n if (type === 'once' || type === 'onlyOnce') {\n hasOnce = true;\n }\n }\n if (hasOnce) {\n nStore.delete(evt)\n }\n return found;\n }\n // now this is not register yet\n this.addToLazyStore(evt, payload, context, type)\n return found;\n }\n\n /**\n * this is an alias to the $trigger\n * @NOTE breaking change in V1.6.0 we swap the parameter around\n * @param {string} evt event name\n * @param {*} params pass to the callback\n * @param {string} type of call\n * @param {object} context what context callback execute in\n * @return {*} from $trigger\n */\n $call(evt, params, type = false, context = null) {\n let args = [evt, params, context, type]\n return Reflect.apply(this.$trigger, this, args)\n }\n\n /**\n * remove the evt from all the stores\n * @param {string} evt name\n * @return {boolean} true actually delete something\n */\n $off(evt) {\n this.validateEvt(evt)\n let stores = [ this.lazyStore, this.normalStore ]\n let found = false;\n stores.forEach(store => {\n if (store.has(evt)) {\n found = true;\n this.logger('($off)', evt)\n store.delete(evt)\n }\n })\n return found;\n }\n\n /**\n * return all the listener from the event\n * @param {string} evtName event name\n * @param {boolean} [full=false] if true then return the entire content\n * @return {array|boolean} listerner(s) or false when not found\n */\n $get(evt, full = false) {\n this.validateEvt(evt)\n let store = this.normalStore;\n if (store.has(evt)) {\n return Array\n .from(store.get(evt))\n .map( l => {\n if (full) {\n return l;\n }\n let [key, callback, ] = l;\n return callback;\n })\n }\n return false;\n }\n\n /**\n * store the return result from the run\n * @param {*} value whatever return from callback\n */\n set $done(value) {\n this.logger('($done)', 'value: ', value)\n if (this.keep) {\n this.result.push(value)\n } else {\n this.result = value;\n }\n }\n\n /**\n * @TODO is there any real use with the keep prop?\n * getter for $done\n * @return {*} whatever last store result\n */\n get $done() {\n if (this.keep) {\n this.logger('(get $done)', this.result)\n return this.result[this.result.length - 1]\n }\n return this.result;\n }\n\n\n}\n","// default\nimport NBEventService from './src/event-service'\n\nexport default NBEventService\n","// this will generate a event emitter and will be use everywhere\nimport NBEventService from 'nb-event-service'\n// output\nexport default function(debugOn) {\n let logger = debugOn ? (...args) => {\n args.unshift('[NBS]')\n console.log.apply(null, args)\n }: undefined;\n return new NBEventService({ logger })\n}\n","// this one will use the esm module\n\n// main export interface\n\n// @2019-05-09 new interface export with Fetch\nimport { jsonqlAsync, ee as getEventEmitter } from './src'\nimport { isContract } from './src/utils'\n\n/**\n * When pass a static contract then it return a static interface\n * otherwise it will become the async interface\n * @param {object} Fly the http engine\n * @param {object} config configuration\n * @return {object} jsonqlClient\n */\nexport default function jsonqlClient(Fly, config) {\n const ee = getEventEmitter(config.debugOn)\n return jsonqlAsync(ee, config, Fly)\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;ECAA;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAA;;ECAA;;;;;;;;;;;;;ECAA;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"core.js","sources":["node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message",g="onResult",y="onError",b=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),m=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),_=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),w=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),j=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),O="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},S=function(){try{if(window||document)return!0}catch(t){}return!1},E=function(){try{if(!S()&&O)return!0}catch(t){}return!1};var k=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return S()?"browser":E()?"node":"unknown"},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,Error.captureStackTrace&&Error.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}(k),x=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),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),P=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),q=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,Error.captureStackTrace&&Error.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}(k),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,Error.captureStackTrace&&Error.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}(k),$=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),N=Object.freeze({__proto__:null,Jsonql406Error:b,Jsonql500Error:m,JsonqlAuthorisationError:_,JsonqlContractAuthError:w,JsonqlResolverAppError:j,JsonqlResolverNotFoundError:A,JsonqlEnumError:x,JsonqlTypeError:T,JsonqlCheckerError:P,JsonqlValidationError:q,JsonqlError:C,JsonqlServerError:$}),z=C,F=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function R(t){if(F(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&N[o])throw new N[r](i,a);throw new z(i,a)}return t}function I(t){if(Array.isArray(t))throw new q("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof b:throw new b(e,r);case t instanceof m:throw new m(e,r);case t instanceof _:throw new _(e,r);case t instanceof w:throw new w(e,r);case t instanceof j:throw new j(e,r);case t instanceof A:throw new A(e,r);case t instanceof x:throw new x(e,r);case t instanceof T:throw new T(e,r);case t instanceof P:throw new P(e,r);case t instanceof q:throw new q(e,r);case t instanceof $:throw new $(e,r);default:throw new C(e,r)}}var J="object"==typeof O&&O&&O.Object===Object&&O,M="object"==typeof self&&self&&self.Object===Object&&self,U=J||M||Function("return this")(),D=U.Symbol;function H(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&st(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function Et(t){return void 0===t}var kt="[object Boolean]";var At="[object Number]";function xt(t){return function(t){return"number"==typeof t||tt(t)&&Z(t)==At}(t)&&t!=+t}var Tt="[object String]";function Pt(t){return"string"==typeof t||!L(t)&&tt(t)&&Z(t)==Tt}function qt(t,e){return function(r){return t(e(r))}}var Ct=qt(Object.getPrototypeOf,Object),$t="[object Object]",Nt=Function.prototype,zt=Object.prototype,Ft=Nt.toString,Rt=zt.hasOwnProperty,It=Ft.call(Object);function Jt(t){if(!tt(t)||Z(t)!=$t)return!1;var e=Ct(t);if(null===e)return!0;var r=Rt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Ft.call(r)==It}var Mt,Ut=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[Mt?a:++n];if(!1===e(o[u],u,o))break}return t};var Dt="[object Arguments]";function Ht(t){return tt(t)&&Z(t)==Dt}var Lt=Object.prototype,Bt=Lt.hasOwnProperty,Kt=Lt.propertyIsEnumerable,Vt=Ht(function(){return arguments}())?Ht:function(t){return tt(t)&&Bt.call(t,"callee")&&!Kt.call(t,"callee")};var Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Yt=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Wt=Yt&&Yt.exports===Gt?U.Buffer:void 0,Xt=(Wt?Wt.isBuffer:void 0)||function(){return!1},Qt=9007199254740991,Zt=/^(?:0|[1-9]\d*)$/;function te(t,e){var r=typeof t;return!!(e=null==e?Qt:e)&&("number"==r||"symbol"!=r&&Zt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=ee}var ne={};ne["[object Float32Array]"]=ne["[object Float64Array]"]=ne["[object Int8Array]"]=ne["[object Int16Array]"]=ne["[object Int32Array]"]=ne["[object Uint8Array]"]=ne["[object Uint8ClampedArray]"]=ne["[object Uint16Array]"]=ne["[object Uint32Array]"]=!0,ne["[object Arguments]"]=ne["[object Array]"]=ne["[object ArrayBuffer]"]=ne["[object Boolean]"]=ne["[object DataView]"]=ne["[object Date]"]=ne["[object Error]"]=ne["[object Function]"]=ne["[object Map]"]=ne["[object Number]"]=ne["[object Object]"]=ne["[object RegExp]"]=ne["[object Set]"]=ne["[object String]"]=ne["[object WeakMap]"]=!1;var oe,ie="object"==typeof exports&&exports&&!exports.nodeType&&exports,ae=ie&&"object"==typeof module&&module&&!module.nodeType&&module,ue=ae&&ae.exports===ie&&J.process,ce=function(){try{var t=ae&&ae.require&&ae.require("util").types;return t||ue&&ue.binding&&ue.binding("util")}catch(t){}}(),se=ce&&ce.isTypedArray,fe=se?(oe=se,function(t){return oe(t)}):function(t){return tt(t)&&re(t.length)&&!!ne[Z(t)]},le=Object.prototype.hasOwnProperty;function pe(t,e){var r=L(t),n=!r&&Vt(t),o=!r&&!n&&Xt(t),i=!r&&!n&&!o&&fe(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Te.prototype.set=function(t,e){var r=this.__data__,n=Ae(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Pe,qe=U["__core-js_shared__"],Ce=(Pe=/[^.]+$/.exec(qe&&qe.keys&&qe.keys.IE_PROTO||""))?"Symbol(src)_1."+Pe:"";var $e=Function.prototype.toString;function Ne(t){if(null!=t){try{return $e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var ze=/^\[object .+?Constructor\]$/,Fe=Function.prototype,Re=Object.prototype,Ie=Fe.toString,Je=Re.hasOwnProperty,Me=RegExp("^"+Ie.call(Je).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ue(t){return!(!ye(t)||function(t){return!!Ce&&Ce in t}(t))&&(je(t)?Me:ze).test(Ne(t))}function De(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Ue(r)?r:void 0}var He=De(U,"Map"),Le=De(Object,"create");var Be="__lodash_hash_undefined__",Ke=Object.prototype.hasOwnProperty;var Ve=Object.prototype.hasOwnProperty;var Ge="__lodash_hash_undefined__";function Ye(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&or?new er:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Kn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Bn);function Wn(t,e){return Yn(function(t,e,r){return e=Ln(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Ln(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Xn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!ye(r))return!1;var n=typeof e;return!!("number"==n?Oe(r)&&te(e,r.length):"string"==n&&e in r)&&ke(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},_o=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},wo=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!bo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!mo(r,t)})).length},jo=function(t,e){if(void 0===e&&(e=null),Jt(t)){if(!e)return!0;if(mo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Et(r)||(!1!==(e=_o(t))?!wo({arg:r},e):!bo(t)(r))})).length)})).length}return!1},Oo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),jo.apply(null,n)};function So(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Eo=function(t,e){var r;switch(!0){case"object"===t:return!Oo(e);case"array"===t:return!mo(e.arg);case!1!==(r=_o(t)):return!wo(e,r);default:return!bo(t)(e.arg)}},ko=function(t,e){return Et(t)?!0!==e.optional||Et(e.defaultvalue)?null:e.defaultvalue:t},Ao=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!mo(e))throw new C("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!mo(t))throw new C("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 So(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:So(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:So(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?ko(t,a):t,index:r,param:a,optional:i}}));default:throw So(5),new C("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!io(e)&&!(r.type.length>r.type.filter((function(e){return Eo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Eo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},xo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},To=function(t){return!io(t)};function Po(t,e){var r=oo(e,(function(t,e){return!t[go]}));return Wr(r,{})?t:function(t,e){var r={};return e=On(e),Ee(t,(function(t,n,o){En(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,On((function(t){return t.alias===e})),Ee)||e}))}function qo(t,e){return Zn(e,(function(e,r){var n,o;return Et(t[r])||!0===e[lo]&&To(t[r])?Qn({},e,((n={})[yo]=!0,n)):((o={})[ho]=t[r],o[fo]=e[fo],o[lo]=e[lo]||!1,o[po]=e[po]||!1,o[vo]=e[vo]||!1,o)}))}function Co(t,e){var r=function(t,e){var r=Po(t,e);return{pristineValues:Zn(oo(e,(function(t,e){return xo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:oo(e,(function(t,e){return!xo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[qo(n,r.checkAgainstAppProps),o]}var $o=function(t){return mo(t)?t:[t]};var No=function(t,e){return!mo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},zo=function(t,e){try{return!!je(e)&&e.apply(null,[t])}catch(t){return!1}};function Fo(t){return function(e,r){if(e[yo])return e[ho];var n=function(t,e){var r,n=[[t[ho]],[(r={},r[fo]=$o(t[fo]),r[lo]=t[lo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw So("runValidationAction",r,e),new T(r,n);if(!1!==e[po]&&!No(e[ho],e[po]))throw So(po,e[po]),new x(r);if(!1!==e[vo]&&!zo(e[ho],e[vo]))throw So(vo,e[vo]),new P(r);return e[ho]}}function Ro(t,e,r,n){return void 0===t&&(t={}),Qn(function(t,e){var r=t[0],n=t[1],o=Zn(r,Fo(e));return Qn(o,n)}(Co(t,e),n),r)}function Io(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),mo(n)&&(a[f]=n),je(o)&&(a[p]=o),Pt(i)&&(a[h]=i),a}var Jo=uo,Mo=mo,Uo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Ao(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Do=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Io.apply(null,[t,e,n,o,i,a])},Ho=function(t){return function(e,r,n){return void 0===n&&(n={}),Ro(e,r,n,t)}}(Ao),Lo=function(t){return L(t)?t:[t]},Bo=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,Lo(t))}),Reflect.apply(t,null,r))}};function Ko(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Vo=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(I)}},Go=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Uo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(I)}))};for(var u in o.query)a(u);return t.query=i,[t,e,r,n,o]},Yo=function(t,e,r,n,o){var i={},a=function(t){i=Ko(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Uo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(I)}))};for(var u in o.mutation)a(u);return t.mutation=i,[t,e,r,n,o]},Wo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Vo(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Xo=Array.isArray,Qo=void 0!==O?O:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Zo="object"==typeof Qo&&Qo&&Qo.Object===Object&&Qo,ti="object"==typeof self&&self&&self.Object===Object&&self,ei=(Zo||ti||Function("return this")()).Symbol,ri=Object.prototype,ni=ri.hasOwnProperty,oi=ri.toString,ii=ei?ei.toStringTag:void 0;var ai=Object.prototype.toString;var ui="[object Null]",ci="[object Undefined]",si=ei?ei.toStringTag:void 0;function fi(t){return null==t?void 0===t?ci:ui:si&&si in Object(t)?function(t){var e=ni.call(t,ii),r=t[ii];try{t[ii]=void 0;var n=!0}catch(t){}var o=oi.call(t);return n&&(e?t[ii]=r:delete t[ii]),o}(t):function(t){return ai.call(t)}(t)}var li=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function pi(t){return null!=t&&"object"==typeof t}var hi="[object Object]",di=Function.prototype,vi=Object.prototype,gi=di.toString,yi=vi.hasOwnProperty,bi=gi.call(Object);var mi=ei?ei.prototype:void 0,_i=(mi&&mi.toString,"[object String]");function wi(t){return"string"==typeof t||!Xo(t)&&pi(t)&&fi(t)==_i}var ji=function(t,e){return!!t.filter((function(t){return t===e})).length},Oi=function(t,e){var r=Object.keys(t);return ji(r,e)},Si=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},Ei=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},ki="query",Ai="mutation",xi="socket",Ti="payload",Pi="condition",qi=function(){try{if(window||document)return!0}catch(t){}return!1},Ci=function(){try{if(!qi()&&Qo)return!0}catch(t){}return!1};var $i=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return qi()?"browser":Ci()?"node":"unknown"},e}(Error));var Ni=function(t){var e;return(e={}).args=t,e};var zi=function(t){return Oi(t,"data")&&!Oi(t,"error")?t.data:t},Fi=function(t){return function(t){if(!pi(t)||fi(t)!=hi)return!1;var e=li(t);if(null===e)return!0;var r=yi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&gi.call(r)==bi}(t)&&(Oi(t,ki)||Oi(t,Ai)||Oi(t,xi))},Ri=function(t,e){return void 0===e&&(e={}),Fi(e)?Promise.resolve(e):t.getContract()},Ii=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(Si(e,r,g),o),t.$only(Si(e,r,y),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ji=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function Mi(t,e,r,n){var o=function(t,e,r,n){return Bo(Go,Yo,Wo)({},t,e,r,n)}(t,e,r,n);Ji(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(Si(t,n,g),r)})).catch((function(r){e.$trigger(Si(t,n,y),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Ui=function(t,e,r,n){n.$suspend=!0,r.then((function(r){Mi(t,n,e,r)}));var o={query:Ii(n,"query"),mutation:Ii(n,"mutation"),auth:Ii(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.4.0",o},Di=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=fa().key(e);t(la(r),r)}},remove:function(t){return fa().removeItem(t)},clearAll:function(){return fa().clear()}};function fa(){return ca.localStorage}function la(t){return fa().getItem(t)}var pa=Ki.trim,ha={name:"cookieStorage",read:function(t){if(!t||!ya(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(da.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;da.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:va,remove:ga,clearAll:function(){va((function(t,e){ga(e)}))}},da=Ki.Global.document;function va(t){for(var e=da.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(pa(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function ga(t){t&&ya(t)&&(da.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ya(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(da.cookie)}var ba=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var ma="expire_mixin",_a=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+ma);return{set:function(e,r,n,o){this.hasNamespace(ma)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(ma)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(ma)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var xa=[sa,ha],Ta=[ba,_a,Ea,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Aa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Aa.compress(this._serialize(r));t(e,n)}}}],Pa=ia.createStore(xa,Ta),qa=Ki.Global;function Ca(){return qa.sessionStorage}function $a(t){return Ca().getItem(t)}var Na=[{name:"sessionStorage",read:$a,write:function(t,e){return Ca().setItem(t,e)},each:function(t){for(var e=Ca().length-1;e>=0;e--){var r=Ca().key(e);t($a(r),r)}},remove:function(t){return Ca().removeItem(t)},clearAll:function(){return Ca().clear()}},ha],za=[ba,_a],Fa=ia.createStore(Na,za),Ra=Pa,Ia=Fa,Ja="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ma(t){this.message=t}Ma.prototype=new Error,Ma.prototype.name="InvalidCharacterError";var Ua="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Ma("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=Ja.indexOf(n);return a};var Da=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ua(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ua(e)}};function Ha(t){this.message=t}Ha.prototype=new Error,Ha.prototype.name="InvalidTokenError";var La=function(t,e){if("string"!=typeof t)throw new Ha("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Da(t.split(".")[r]))}catch(t){throw new Ha("Invalid token specified: "+t.message)}},Ba=Ha;La.InvalidTokenError=Ba;var Ka,Va,Ga,Ya,Wa,Xa,Qa,Za,tu,eu=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function ru(t){if(Jo(t))return function(t){var e=t.iat||eu(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new C("Token has expired on "+r,t)}return t}(La(t));throw new C("Token must be a string!")}Do("HS256",["string"]),Do(!1,["boolean","number","string"],((Ka={})[h]="exp",Ka[s]=!0,Ka)),Do(!1,["boolean","number","string"],((Va={})[h]="nbf",Va[s]=!0,Va)),Do(!1,["boolean","string"],((Ga={})[h]="iss",Ga[s]=!0,Ga)),Do(!1,["boolean","string"],((Ya={})[h]="sub",Ya[s]=!0,Ya)),Do(!1,["boolean","string"],((Wa={})[h]="iss",Wa[s]=!0,Wa)),Do(!1,["boolean"],((Xa={})[s]=!0,Xa)),Do(!1,["boolean","string"],((Qa={})[s]=!0,Qa)),Do(!1,["boolean","string"],((Za={})[s]=!0,Za)),Do(!1,["boolean"],((tu={})[s]=!0,tu));var nu=u[0],ou=u[1],iu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},au={headers:{configurable:!0}};au.headers.set=function(t){this.extraHeader=t},iu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Qn({},{_cb:Ei()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Qn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Qn({},{method:nu,params:o},e))},iu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},iu.prototype.processJsonp=function(t){return zi(t)},iu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Jo(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):zi(o)}),(function(t){throw e.cleanUp(),console.error(t),new $("Server side error",t)}))},iu.prototype.getHeaders=function(){return this.opts.enableAuth?Qn({},a,this.getAuthHeader(),this.extraHeader):Qn({},a,this.extraHeader)},iu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},iu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Qn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(R).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},iu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),wi(t)&&Xo(e)){var o=Ni(e);return!0===r?o:((n={})[t]=o,n)}throw new $i("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(R)},iu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Ti]=e,i[Pi]=r,!0===n)return i;if(wi(t))return(o={})[t]=i,o;throw new $i("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:ou}).then(R)},Object.defineProperties(iu.prototype,au);var uu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Mo(t)&&t.length>=2&&Reflect.apply(Ra.set,Ra,t),new q("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ra.get("endpoint")||[];ji(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ra.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!ji(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=Ei();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ra.set,Ra,e)},r.jsonqlEndpoint.get=function(){var t=Ra.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ra.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ia.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=ru)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Fi(t))throw new q("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Fi(this.opts.contract)?this.opts.contract:Ra.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(iu))),cu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},su={hostname:Do([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Do("jsonql",["string"]),loginHandlerName:Do("login",["string"]),logoutHandlerName:Do("logout",["string"]),enableJsonp:Do(!1,["boolean"]),enableAuth:Do(!1,["boolean"]),useJwt:Do(!0,["boolean"]),useLocalstorage:Do(!0,["boolean"]),storageKey:Do("storageKey",["string"]),authKey:Do("authKey",["string"]),contractExpired:Do(0,["number"]),keepContract:Do(!0,["boolean"]),exposeContract:Do(!1,["boolean"]),showContractDesc:Do(!1,["boolean"]),contractKey:Do(!1,["boolean"]),contractKeyName:Do("X-JSONQL-CV-KEY",["string"]),enableTimeout:Do(!1,["boolean"]),timeout:Do(5e3,["number"]),returnInstance:Do(!1,["boolean"]),allowReturnRawToken:Do(!1,["boolean"]),debugOn:Do(!1,["boolean"])};var fu=new WeakMap,lu=new WeakMap;var pu=function(){this.__suspend__=null,this.queueStore=new Set},hu={$suspend:{configurable:!0},$queues:{configurable:!0}};hu.$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)},pu.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__},hu.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},pu.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(pu.prototype,hu);var du=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){fu.set(this,t)},r.normalStore.get=function(){return fu.get(this)},r.lazyStore.set=function(t){lu.set(this,t)},r.lazyStore.get=function(){return lu.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}(pu));function vu(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ho(t,su,cu)}(e),i=new uu(o,t),a=Ri(i,n),u=(r=o.debugOn,new du({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Ui(i,o,a,u);return c.eventEmitter=u,c}return function(t){return void 0===t&&(t={}),vu(o,t)}})); +//# sourceMappingURL=jsonql-client.static.js.map diff --git a/packages/http-client/dist/jsonql-client.static.js.map b/packages/http-client/dist/jsonql-client.static.js.map new file mode 100644 index 00000000..8ad92573 --- /dev/null +++ b/packages/http-client/dist/jsonql-client.static.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jsonql-client.static.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i0&&(t+=(-1===t.indexOf("?")?"?":"&")+w.join("&")),a.open(r.method,t);try{a.withCredentials=!!r.withCredentials,a.timeout=r.timeout||0,"stream"!==y&&(a.responseType=y)}catch(t){}var j=r.headers[u]||r.headers[c],O="application/x-www-form-urlencoded";for(var S in o.trim((j||"").toLowerCase())===O?e=o.formatParams(e):o.isFormData(e)||-1===["object","array"].indexOf(o.type(e))||(O="application/json;charset=utf-8",e=JSON.stringify(e)),j||b||(r.headers[u]=O),r.headers)if(S===u&&o.isFormData(e))delete r.headers[S];else try{a.setRequestHeader(S,r.headers[S])}catch(t){}function E(t,e,n){v(l.p,(function(){if(t){n&&(e.request=r);var o=t.call(l,e,Promise);e=void 0===o?e:o}d(e)||(e=Promise[0===n?"resolve":"reject"](e)),e.then((function(t){s(t)})).catch((function(t){h(t)}))}))}function k(t){t.engine=a,E(l.onerror,t,-1)}function A(t,e){this.message=t,this.status=e}a.onload=function(){try{var t=a.response||a.responseText;t&&r.parseJson&&-1!==(a.getResponseHeader(u)||"").indexOf("json")&&!o.isObject(t)&&(t=JSON.parse(t));var e=a.responseHeaders;if(!e){e={};var n=(a.getAllResponseHeaders()||"").split("\r\n");n.pop(),n.forEach((function(t){if(t){var r=t.split(":")[0];e[r]=a.getResponseHeader(r)}}))}var i=a.status,c=a.statusText,s={data:t,headers:e,status:i,statusText:c};if(o.merge(s,a._response),i>=200&&i<300||304===i)s.engine=a,s.request=r,E(l.handler,s,0);else{var f=new A(c,i);f.response=s,k(f)}}catch(f){k(new A(f.msg,a.status))}},a.onerror=function(t){k(new A(t.msg||"Network Error",0))},a.ontimeout=function(){k(new A("timeout [ "+a.timeout+"ms ]",1))},a._options=r,setTimeout((function(){a.send(b?null:e)}),0)}(n):s(n)}),(function(t){h(t)}))}))}));return h.engine=a,h}},{key:"all",value:function(t){return Promise.all(t)}},{key:"spread",value:function(t){return function(e){return t.apply(null,e)}}}]),t}();a.default=a,["get","post","put","patch","head","delete"].forEach((function(t){a.prototype[t]=function(e,r,n){return this.request(e,r,o.merge({method:t},n))}})),["lock","unlock","clear"].forEach((function(t){a.prototype[t]=function(){this.interceptors.request[t]()}})),t.exports=a}])},t.exports=r()})),o=(r=n)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,i="application/vnd.api+json",a={Accept:i,"Content-Type":[i,"charset=utf-8"].join(";")},u=["POST","PUT"],c="type",s="optional",f="enumv",l="args",p="checker",h="alias",d={desc:"y"},v="No message";var g="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},y="object"==typeof g&&g&&g.Object===Object&&g,b="object"==typeof self&&self&&self.Object===Object&&self,m=y||b||Function("return this")(),_=m.Symbol;function w(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&U(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function nt(t){return void 0===t}var ot="[object Boolean]";var it="[object Number]";function at(t){return function(t){return"number"==typeof t||C(t)&&q(t)==it}(t)&&t!=+t}var ut="[object String]";function ct(t){return"string"==typeof t||!j(t)&&C(t)&&q(t)==ut}function st(t,e){return function(r){return t(e(r))}}var ft=st(Object.getPrototypeOf,Object),lt="[object Object]",pt=Function.prototype,ht=Object.prototype,dt=pt.toString,vt=ht.hasOwnProperty,gt=dt.call(Object);function yt(t){if(!C(t)||q(t)!=lt)return!1;var e=ft(t);if(null===e)return!0;var r=vt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&dt.call(r)==gt}var bt,mt=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[bt?a:++n];if(!1===e(o[u],u,o))break}return t};var _t="[object Arguments]";function wt(t){return C(t)&&q(t)==_t}var jt=Object.prototype,Ot=jt.hasOwnProperty,St=jt.propertyIsEnumerable,Et=wt(function(){return arguments}())?wt:function(t){return C(t)&&Ot.call(t,"callee")&&!St.call(t,"callee")};var kt="object"==typeof exports&&exports&&!exports.nodeType&&exports,At=kt&&"object"==typeof module&&module&&!module.nodeType&&module,xt=At&&At.exports===kt?m.Buffer:void 0,Tt=(xt?xt.isBuffer:void 0)||function(){return!1},Pt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/;function Ct(t,e){var r=typeof t;return!!(e=null==e?Pt:e)&&("number"==r||"symbol"!=r&&qt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=$t}var zt={};zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=!0,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=!1;var Ft,Rt="object"==typeof exports&&exports&&!exports.nodeType&&exports,It=Rt&&"object"==typeof module&&module&&!module.nodeType&&module,Jt=It&&It.exports===Rt&&y.process,Mt=function(){try{var t=It&&It.require&&It.require("util").types;return t||Jt&&Jt.binding&&Jt.binding("util")}catch(t){}}(),Ut=Mt&&Mt.isTypedArray,Dt=Ut?(Ft=Ut,function(t){return Ft(t)}):function(t){return C(t)&&Nt(t.length)&&!!zt[q(t)]},Ht=Object.prototype.hasOwnProperty;function Lt(t,e){var r=j(t),n=!r&&Et(t),o=!r&&!n&&Tt(t),i=!r&&!n&&!o&&Dt(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},ue.prototype.set=function(t,e){var r=this.__data__,n=ie(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ce,se=m["__core-js_shared__"],fe=(ce=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+ce:"";var le=Function.prototype.toString;function pe(t){if(null!=t){try{return le.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var he=/^\[object .+?Constructor\]$/,de=Function.prototype,ve=Object.prototype,ge=de.toString,ye=ve.hasOwnProperty,be=RegExp("^"+ge.call(ye).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function me(t){return!(!Yt(t)||function(t){return!!fe&&fe in t}(t))&&(te(t)?be:he).test(pe(t))}function _e(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return me(r)?r:void 0}var we=_e(m,"Map"),je=_e(Object,"create");var Oe="__lodash_hash_undefined__",Se=Object.prototype.hasOwnProperty;var Ee=Object.prototype.hasOwnProperty;var ke="__lodash_hash_undefined__";function Ae(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Fe?new $e:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Sn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(On);function xn(t,e){return An(function(t,e,r){return e=jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Tn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!Yt(r))return!1;var n=typeof e;return!!("number"==n?ee(r)&&Ct(e,r.length):"string"==n&&e in r)&&oe(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},Xn=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Qn=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Yn(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Wn(r,t)})).length},Zn=function(t,e){if(void 0===e&&(e=null),yt(t)){if(!e)return!0;if(Wn(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!nt(r)||(!1!==(e=Xn(t))?!Qn({arg:r},e):!Yn(t)(r))})).length)})).length}return!1},to=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Zn.apply(null,n)},eo=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),ro=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),no=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),oo=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),io=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),ao=function(){try{if(window||document)return!0}catch(t){}return!1},uo=function(){try{if(!ao()&&g)return!0}catch(t){}return!1};var co=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ao()?"browser":uo()?"node":"unknown"},e}(Error),so=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,Error.captureStackTrace&&Error.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}(co),fo=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),lo=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),po=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),ho=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,Error.captureStackTrace&&Error.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}(co),vo=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,Error.captureStackTrace&&Error.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}(co),go=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),yo=Object.freeze({__proto__:null,Jsonql406Error:eo,Jsonql500Error:ro,JsonqlAuthorisationError:no,JsonqlContractAuthError:oo,JsonqlResolverAppError:io,JsonqlResolverNotFoundError:so,JsonqlEnumError:fo,JsonqlTypeError:lo,JsonqlCheckerError:po,JsonqlValidationError:ho,JsonqlError:vo,JsonqlServerError:go}),bo=vo,mo=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function _o(t){if(mo(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||v,a=e.detail||e;if(o&&yo[o])throw new yo[r](i,a);throw new bo(i,a)}return t}function wo(t){if(Array.isArray(t))throw new ho("",t);var e=t.message||v,r=t.detail||t;switch(!0){case t instanceof eo:throw new eo(e,r);case t instanceof ro:throw new ro(e,r);case t instanceof no:throw new no(e,r);case t instanceof oo:throw new oo(e,r);case t instanceof io:throw new io(e,r);case t instanceof so:throw new so(e,r);case t instanceof fo:throw new fo(e,r);case t instanceof lo:throw new lo(e,r);case t instanceof po:throw new po(e,r);case t instanceof ho:throw new ho(e,r);case t instanceof go:throw new go(e,r);default:throw new vo(e,r)}}function jo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Oo=function(t,e){var r;switch(!0){case"object"===t:return!to(e);case"array"===t:return!Wn(e.arg);case!1!==(r=Xn(t)):return!Qn(e,r);default:return!Yn(t)(e.arg)}},So=function(t,e){return nt(t)?!0!==e.optional||nt(e.defaultvalue)?null:e.defaultvalue:t},Eo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Wn(e))throw new vo("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Wn(t))throw new vo("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 jo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:jo(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:jo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?So(t,a):t,index:r,param:a,optional:i}}));default:throw jo(5),new vo("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Rn(e)&&!(r.type.length>r.type.filter((function(e){return Oo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Oo(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},ko=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},Ao=function(t){return!Rn(t)};function xo(t,e){var r=Fn(e,(function(t,e){return!t[Vn]}));return xr(r,{})?t:function(t,e){var r={};return e=tn(e),ne(t,(function(t,n,o){rn(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,tn((function(t){return t.alias===e})),ne)||e}))}function To(t,e){return qn(e,(function(e,r){var n,o;return nt(t[r])||!0===e[Hn]&&Ao(t[r])?Pn({},e,((n={})[Gn]=!0,n)):((o={})[Bn]=t[r],o[Dn]=e[Dn],o[Hn]=e[Hn]||!1,o[Ln]=e[Ln]||!1,o[Kn]=e[Kn]||!1,o)}))}function Po(t,e){var r=function(t,e){var r=xo(t,e);return{pristineValues:qn(Fn(e,(function(t,e){return ko(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Fn(e,(function(t,e){return!ko(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[To(n,r.checkAgainstAppProps),o]}var qo=function(t){return Wn(t)?t:[t]};var Co=function(t,e){return!Wn(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},$o=function(t,e){try{return!!te(e)&&e.apply(null,[t])}catch(t){return!1}};function No(t){return function(e,r){if(e[Gn])return e[Bn];var n=function(t,e){var r,n=[[t[Bn]],[(r={},r[Dn]=qo(t[Dn]),r[Hn]=t[Hn],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw jo("runValidationAction",r,e),new lo(r,n);if(!1!==e[Ln]&&!Co(e[Bn],e[Ln]))throw jo(Ln,e[Ln]),new fo(r);if(!1!==e[Kn]&&!$o(e[Bn],e[Kn]))throw jo(Kn,e[Kn]),new po(r);return e[Bn]}}var zo=function(t,e){return Promise.resolve(Po(t,e))};function Fo(t,e,r,n){return void 0===t&&(t={}),zo(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=qn(r,No(e));return Pn(o,n)}(t,n)})).then((function(t){return Pn({},t,r)}))}function Ro(t,e,r,n,o,i){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===i&&(i=!1);var a={};return a[l]=t,a[c]=e,!0===r&&(a[s]=!0),Wn(n)&&(a[f]=n),te(o)&&(a[p]=o),ct(i)&&(a[h]=i),a}var Io=Jn,Jo=Wn,Mo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=Eo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Uo=function(t,e,r){void 0===r&&(r={});var n=r[s],o=r[f],i=r[p],a=r[h];return Ro.apply(null,[t,e,n,o,i,a])},Do=function(t){return function(e,r,n){return void 0===n&&(n={}),Fo(e,r,n,t)}}(Eo),Ho=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=li().key(e);t(pi(r),r)}},remove:function(t){return li().removeItem(t)},clearAll:function(){return li().clear()}};function li(){return si.localStorage}function pi(t){return li().getItem(t)}var hi=Vo.trim,di={name:"cookieStorage",read:function(t){if(!t||!bi(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(vi.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;vi.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:gi,remove:yi,clearAll:function(){gi((function(t,e){yi(e)}))}},vi=Vo.Global.document;function gi(t){for(var e=vi.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(hi(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function yi(t){t&&bi(t)&&(vi.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function bi(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(vi.cookie)}var mi=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var _i="expire_mixin",wi=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+_i);return{set:function(e,r,n,o){this.hasNamespace(_i)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(_i)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(_i)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Ti=[fi,di],Pi=[mi,wi,ki,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=xi.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=xi.compress(this._serialize(r));t(e,n)}}}],qi=ai.createStore(Ti,Pi),Ci=Vo.Global;function $i(){return Ci.sessionStorage}function Ni(t){return $i().getItem(t)}var zi=[{name:"sessionStorage",read:Ni,write:function(t,e){return $i().setItem(t,e)},each:function(t){for(var e=$i().length-1;e>=0;e--){var r=$i().key(e);t(Ni(r),r)}},remove:function(t){return $i().removeItem(t)},clearAll:function(){return $i().clear()}},di],Fi=[mi,wi],Ri=ai.createStore(zi,Fi),Ii=qi,Ji=Ri,Mi=Array.isArray,Ui=void 0!==g?g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Di="object"==typeof Ui&&Ui&&Ui.Object===Object&&Ui,Hi="object"==typeof self&&self&&self.Object===Object&&self,Li=(Di||Hi||Function("return this")()).Symbol,Bi=Object.prototype,Ki=Bi.hasOwnProperty,Vi=Bi.toString,Gi=Li?Li.toStringTag:void 0;var Yi=Object.prototype.toString;var Wi="[object Null]",Xi="[object Undefined]",Qi=Li?Li.toStringTag:void 0;function Zi(t){return null==t?void 0===t?Xi:Wi:Qi&&Qi in Object(t)?function(t){var e=Ki.call(t,Gi),r=t[Gi];try{t[Gi]=void 0;var n=!0}catch(t){}var o=Vi.call(t);return n&&(e?t[Gi]=r:delete t[Gi]),o}(t):function(t){return Yi.call(t)}(t)}var ta=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ea(t){return null!=t&&"object"==typeof t}var ra="[object Object]",na=Function.prototype,oa=Object.prototype,ia=na.toString,aa=oa.hasOwnProperty,ua=ia.call(Object);var ca=Li?Li.prototype:void 0,sa=(ca&&ca.toString,"[object String]");function fa(t){return"string"==typeof t||!Mi(t)&&ea(t)&&Zi(t)==sa}var la=function(t,e){return!!t.filter((function(t){return t===e})).length},pa=function(t,e){var r=Object.keys(t);return la(r,e)},ha=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},da="query",va="mutation",ga="socket",ya="payload",ba="condition",ma=function(){try{if(window||document)return!0}catch(t){}return!1},_a=function(){try{if(!ma()&&Ui)return!0}catch(t){}return!1};var wa=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return ma()?"browser":_a()?"node":"unknown"},e}(Error));var ja=function(t){var e;return(e={}).args=t,e};var Oa=function(t){return pa(t,"data")&&!pa(t,"error")?t.data:t},Sa=function(t){return function(t){if(!ea(t)||Zi(t)!=ra)return!1;var e=ta(t);if(null===e)return!0;var r=aa.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&ia.call(r)==ua}(t)&&(pa(t,da)||pa(t,va)||pa(t,ga))},Ea=function(t,e){return void 0===e&&(e={}),Sa(e)?Promise.resolve(e):t.getContract()},ka="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Aa(t){this.message=t}Aa.prototype=new Error,Aa.prototype.name="InvalidCharacterError";var xa="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Aa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=ka.indexOf(n);return a};var Ta=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(xa(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return xa(e)}};function Pa(t){this.message=t}Pa.prototype=new Error,Pa.prototype.name="InvalidTokenError";var qa=function(t,e){if("string"!=typeof t)throw new Pa("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ta(t.split(".")[r]))}catch(t){throw new Pa("Invalid token specified: "+t.message)}},Ca=Pa;qa.InvalidTokenError=Ca;var $a,Na,za,Fa,Ra,Ia,Ja,Ma,Ua,Da=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Ha(t){if(Io(t))return function(t){var e=t.iat||Da(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new vo("Token has expired on "+r,t)}return t}(qa(t));throw new vo("Token must be a string!")}Uo("HS256",["string"]),Uo(!1,["boolean","number","string"],(($a={})[h]="exp",$a[s]=!0,$a)),Uo(!1,["boolean","number","string"],((Na={})[h]="nbf",Na[s]=!0,Na)),Uo(!1,["boolean","string"],((za={})[h]="iss",za[s]=!0,za)),Uo(!1,["boolean","string"],((Fa={})[h]="sub",Fa[s]=!0,Fa)),Uo(!1,["boolean","string"],((Ra={})[h]="iss",Ra[s]=!0,Ra)),Uo(!1,["boolean"],((Ia={})[s]=!0,Ia)),Uo(!1,["boolean","string"],((Ja={})[s]=!0,Ja)),Uo(!1,["boolean","string"],((Ma={})[s]=!0,Ma)),Uo(!1,["boolean"],((Ua={})[s]=!0,Ua));var La=u[0],Ba=u[1],Ka=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},Va={headers:{configurable:!0}};Va.headers.set=function(t){this.extraHeader=t},Ka.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Pn({},{_cb:ha()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Pn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Pn({},{method:La,params:o},e))},Ka.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},Ka.prototype.processJsonp=function(t){return Oa(t)},Ka.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=Io(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):Oa(o)}),(function(t){throw e.cleanUp(),console.error(t),new go("Server side error",t)}))},Ka.prototype.getHeaders=function(){return this.opts.enableAuth?Pn({},a,this.getAuthHeader(),this.extraHeader):Pn({},a,this.extraHeader)},Ka.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},Ka.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Pn({},this.extraParams,d)),this.request({},{method:"GET"},this.contractHeader).then(_o).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},Ka.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),fa(t)&&Mi(e)){var o=ja(e);return!0===r?o:((n={})[t]=o,n)}throw new wa("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(_o)},Ka.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[ya]=e,i[ba]=r,!0===n)return i;if(fa(t))return(o={})[t]=i,o;throw new wa("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:Ba}).then(_o)},Object.defineProperties(Ka.prototype,Va);var Ga=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),Jo(t)&&t.length>=2&&Reflect.apply(Ii.set,Ii,t),new ho("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=Ii.get("endpoint")||[];la(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=Ii.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!la(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=ha();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply(Ii.set,Ii,e)},r.jsonqlEndpoint.get=function(){var t=Ii.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return(Ii.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Ji.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Ha)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Sa(t))throw new ho("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Sa(this.opts.contract)?this.opts.contract:Ii.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(Ka))),Ya=function(t){return j(t)?t:[t]},Wa=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,Ya(t))}),Reflect.apply(t,null,r))}};function Xa(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Qa=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch(wo)}},Za=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Mo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch(wo)}))};for(var u in o.query)a(u);return t.query=i,[t,e,r,n,o]},tu=function(t,e,r,n,o){var i={},a=function(t){i=Xa(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Mo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch(wo)}))};for(var u in o.mutation)a(u);return t.mutation=i,[t,e,r,n,o]},eu=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Qa(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var ru=function(t,e,r,n){var o=function(t,e,r,n){return Wa(Za,tu,eu)({},t,e,r,n)}(t,n,e,r);return e.enableAuth&&(o.userdata=function(){return t.userdata}),o.getToken=function(){return t.rawAuthToken},e.exposeContract&&(o.getContract=function(){return t.getContract()}),o.eventEmitter=n,o.version="1.4.0",o},nu={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:i,BEARER:"Bearer",AUTH_HEADER:"Authorization"},ou={hostname:Uo([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Uo("jsonql",["string"]),loginHandlerName:Uo("login",["string"]),logoutHandlerName:Uo("logout",["string"]),enableJsonp:Uo(!1,["boolean"]),enableAuth:Uo(!1,["boolean"]),useJwt:Uo(!0,["boolean"]),useLocalstorage:Uo(!0,["boolean"]),storageKey:Uo("storageKey",["string"]),authKey:Uo("authKey",["string"]),contractExpired:Uo(0,["number"]),keepContract:Uo(!0,["boolean"]),exposeContract:Uo(!1,["boolean"]),showContractDesc:Uo(!1,["boolean"]),contractKey:Uo(!1,["boolean"]),contractKeyName:Uo("X-JSONQL-CV-KEY",["string"]),enableTimeout:Uo(!1,["boolean"]),timeout:Uo(5e3,["number"]),returnInstance:Uo(!1,["boolean"]),allowReturnRawToken:Uo(!1,["boolean"]),debugOn:Uo(!1,["boolean"])};function iu(t,e,r){return void 0===e&&(e={}),void 0===r&&(r=null),function(t){var e=t.contract;return Do(t,ou,nu).then((function(t){return t.contract=e,t}))}(e).then((function(t){return{baseClient:new Ga(t,r),opts:t}})).then((function(e){var r=e.baseClient,n=e.opts;return Ea(r,n.contract).then((function(e){return ru(r,n,e,t)}))}))}var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));function lu(t,e){var r;return iu((r=e.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),e,t)}return function(t){return void 0===t&&(t={}),lu(o,t)}})); +//# sourceMappingURL=jsonql-client.umd.js.map diff --git a/packages/http-client/dist/jsonql-client.umd.js.map b/packages/http-client/dist/jsonql-client.umd.js.map new file mode 100644 index 00000000..afdcdd37 --- /dev/null +++ b/packages/http-client/dist/jsonql-client.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jsonql-client.umd.js","sources":["../node_modules/store/plugins/defaults.js","../node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i=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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&ot(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function _t(t){return void 0===t}var wt="[object Boolean]";var jt="[object Number]";function Ot(t){return function(t){return"number"==typeof t||Y(t)&&G(t)==jt}(t)&&t!=+t}var St="[object String]";function Et(t){return"string"==typeof t||!J(t)&&Y(t)&&G(t)==St}function At(t,e){return function(r){return t(e(r))}}var kt=At(Object.getPrototypeOf,Object),Tt="[object Object]",xt=Function.prototype,qt=Object.prototype,Pt=xt.toString,Ct=qt.hasOwnProperty,$t=Pt.call(Object);function Nt(t){if(!Y(t)||G(t)!=Tt)return!1;var e=kt(t);if(null===e)return!0;var r=Ct.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Pt.call(r)==$t}var zt,Ft=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[zt?a:++n];if(!1===e(o[u],u,o))break}return t};var It="[object Arguments]";function Rt(t){return Y(t)&&G(t)==It}var Jt=Object.prototype,Mt=Jt.hasOwnProperty,Ut=Jt.propertyIsEnumerable,Dt=Rt(function(){return arguments}())?Rt:function(t){return Y(t)&&Mt.call(t,"callee")&&!Ut.call(t,"callee")};var Ht="object"==typeof exports&&exports&&!exports.nodeType&&exports,Lt=Ht&&"object"==typeof module&&module&&!module.nodeType&&module,Bt=Lt&&Lt.exports===Ht?F.Buffer:void 0,Kt=(Bt?Bt.isBuffer:void 0)||function(){return!1},Vt=9007199254740991,Gt=/^(?:0|[1-9]\d*)$/;function Yt(t,e){var r=typeof t;return!!(e=null==e?Vt:e)&&("number"==r||"symbol"!=r&&Gt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Wt}var Xt={};Xt["[object Float32Array]"]=Xt["[object Float64Array]"]=Xt["[object Int8Array]"]=Xt["[object Int16Array]"]=Xt["[object Int32Array]"]=Xt["[object Uint8Array]"]=Xt["[object Uint8ClampedArray]"]=Xt["[object Uint16Array]"]=Xt["[object Uint32Array]"]=!0,Xt["[object Arguments]"]=Xt["[object Array]"]=Xt["[object ArrayBuffer]"]=Xt["[object Boolean]"]=Xt["[object DataView]"]=Xt["[object Date]"]=Xt["[object Error]"]=Xt["[object Function]"]=Xt["[object Map]"]=Xt["[object Number]"]=Xt["[object Object]"]=Xt["[object RegExp]"]=Xt["[object Set]"]=Xt["[object String]"]=Xt["[object WeakMap]"]=!1;var Zt,te="object"==typeof exports&&exports&&!exports.nodeType&&exports,ee=te&&"object"==typeof module&&module&&!module.nodeType&&module,re=ee&&ee.exports===te&&N.process,ne=function(){try{var t=ee&&ee.require&&ee.require("util").types;return t||re&&re.binding&&re.binding("util")}catch(t){}}(),oe=ne&&ne.isTypedArray,ie=oe?(Zt=oe,function(t){return Zt(t)}):function(t){return Y(t)&&Qt(t.length)&&!!Xt[G(t)]},ae=Object.prototype.hasOwnProperty;function ue(t,e){var r=J(t),n=!r&&Dt(t),o=!r&&!n&&Kt(t),i=!r&&!n&&!o&&ie(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Se.prototype.set=function(t,e){var r=this.__data__,n=je(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Ee,Ae=F["__core-js_shared__"],ke=(Ee=/[^.]+$/.exec(Ae&&Ae.keys&&Ae.keys.IE_PROTO||""))?"Symbol(src)_1."+Ee:"";var Te=Function.prototype.toString;function xe(t){if(null!=t){try{return Te.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var qe=/^\[object .+?Constructor\]$/,Pe=Function.prototype,Ce=Object.prototype,$e=Pe.toString,Ne=Ce.hasOwnProperty,ze=RegExp("^"+$e.call(Ne).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Fe(t){return!(!pe(t)||function(t){return!!ke&&ke in t}(t))&&(ye(t)?ze:qe).test(xe(t))}function Ie(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Fe(r)?r:void 0}var Re=Ie(F,"Map"),Je=Ie(Object,"create");var Me="__lodash_hash_undefined__",Ue=Object.prototype.hasOwnProperty;var De=Object.prototype.hasOwnProperty;var He="__lodash_hash_undefined__";function Le(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ze?new We:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Un)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Mn);function Bn(t,e){return Ln(function(t,e,r){return e=Jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!pe(r))return!1;var n=typeof e;return!!("number"==n?be(r)&&Yt(e,r.length):"string"==n&&e in r)&&we(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},go=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!po(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ho(r,t)})).length},yo=function(t,e){if(void 0===e&&(e=null),Nt(t)){if(!e)return!0;if(ho(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!_t(r)||(!1!==(e=vo(t))?!go({arg:r},e):!po(t)(r))})).length)})).length}return!1},bo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),yo.apply(null,n)};function mo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var _o=function(t,e){var r;switch(!0){case"object"===t:return!bo(e);case"array"===t:return!ho(e.arg);case!1!==(r=vo(t)):return!go(e,r);default:return!po(t)(e.arg)}},wo=function(t,e){return _t(t)?!0!==e.optional||_t(e.defaultvalue)?null:e.defaultvalue:t},jo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ho(e))throw new k("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ho(t))throw new k("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 mo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:mo(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:mo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?wo(t,a):t,index:r,param:a,optional:i}}));default:throw mo(5),new k("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!to(e)&&!(r.type.length>r.type.filter((function(e){return _o(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return _o(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},So=function(t){return!to(t)};function Eo(t,e){var r=Zn(e,(function(t,e){return!t[fo]}));return Br(r,{})?t:function(t,e){var r={};return e=bn(e),_e(t,(function(t,n,o){_n(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,bn((function(t){return t.alias===e})),_e)||e}))}function Ao(t,e){return Gn(e,(function(e,r){var n,o;return _t(t[r])||!0===e[ao]&&So(t[r])?Vn({},e,((n={})[lo]=!0,n)):((o={})[co]=t[r],o[io]=e[io],o[ao]=e[ao]||!1,o[uo]=e[uo]||!1,o[so]=e[so]||!1,o)}))}function ko(t,e){var r=function(t,e){var r=Eo(t,e);return{pristineValues:Gn(Zn(e,(function(t,e){return Oo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Zn(e,(function(t,e){return!Oo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ao(n,r.checkAgainstAppProps),o]}var To=function(t){return ho(t)?t:[t]};var xo=function(t,e){return!ho(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},qo=function(t,e){try{return!!ye(e)&&e.apply(null,[t])}catch(t){return!1}};function Po(t){return function(e,r){if(e[lo])return e[co];var n=function(t,e){var r,n=[[t[co]],[(r={},r[io]=To(t[io]),r[ao]=t[ao],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw mo("runValidationAction",r,e),new S(r,n);if(!1!==e[uo]&&!xo(e[co],e[uo]))throw mo(uo,e[uo]),new O(r);if(!1!==e[so]&&!qo(e[co],e[so]))throw mo(so,e[so]),new E(r);return e[co]}}function Co(t,e,r,n){return void 0===t&&(t={}),Vn(function(t,e){var r=t[0],n=t[1],o=Gn(r,Po(e));return Vn(o,n)}(ko(t,e),n),r)}function $o(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),ho(s)&&(p[i]=s),ye(f)&&(p[u]=f),Et(l)&&(p[c]=l),p}var No=ro,zo=ho,Fo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=jo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Io=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return $o.apply(null,[t,e,n,a,s,f])},Ro=function(t){return function(e,r,n){return void 0===n&&(n={}),Co(e,r,n,t)}}(jo),Jo=function(t){return J(t)?t:[t]},Mo=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,Jo(t))}),Reflect.apply(t,null,r))}};function Uo(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Do=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch($)}},Ho=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch($)}))};for(var u in o.query)a(u);return t.query=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Lo=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Fo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch($)}))};for(var u in o.mutation)a(u);return t.mutation=i,{obj:t,jsonqlInstance:e,ee:r,config:n,contract:o}},Bo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Ko=Array.isArray,Vo=void 0!==b?b:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Go="object"==typeof Vo&&Vo&&Vo.Object===Object&&Vo,Yo="object"==typeof self&&self&&self.Object===Object&&self,Wo=(Go||Yo||Function("return this")()).Symbol,Qo=Object.prototype,Xo=Qo.hasOwnProperty,Zo=Qo.toString,ti=Wo?Wo.toStringTag:void 0;var ei=Object.prototype.toString;var ri="[object Null]",ni="[object Undefined]",oi=Wo?Wo.toStringTag:void 0;function ii(t){return null==t?void 0===t?ni:ri:oi&&oi in Object(t)?function(t){var e=Xo.call(t,ti),r=t[ti];try{t[ti]=void 0;var n=!0}catch(t){}var o=Zo.call(t);return n&&(e?t[ti]=r:delete t[ti]),o}(t):function(t){return ei.call(t)}(t)}var ai=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ui(t){return null!=t&&"object"==typeof t}var ci="[object Object]",si=Function.prototype,fi=Object.prototype,li=si.toString,pi=fi.hasOwnProperty,hi=li.call(Object);var di=Wo?Wo.prototype:void 0,vi=(di&&di.toString,"[object String]");function gi(t){return"string"==typeof t||!Ko(t)&&ui(t)&&ii(t)==vi}var yi=function(t,e){return!!t.filter((function(t){return t===e})).length},bi=function(t,e){var r=Object.keys(t);return yi(r,e)},mi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},_i=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},wi="query",ji="mutation",Oi="socket",Si="payload",Ei="condition",Ai=function(){try{if(window||document)return!0}catch(t){}return!1},ki=function(){try{if(!Ai()&&Vo)return!0}catch(t){}return!1};var Ti=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Ai()?"browser":ki()?"node":"unknown"},e}(Error));var xi=function(t){var e;return(e={}).args=t,e};var qi=function(t){return bi(t,"data")&&!bi(t,"error")?t.data:t},Pi=function(t){return function(t){if(!ui(t)||ii(t)!=ci)return!1;var e=ai(t);if(null===e)return!0;var r=pi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&li.call(r)==hi}(t)&&(bi(t,wi)||bi(t,ji)||bi(t,Oi))},Ci=function(t,e){return void 0===e&&(e={}),Pi(e)?Promise.resolve(e):t.getContract()},$i=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(mi(e,r,l),o),t.$only(mi(e,r,p),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ni=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function zi(t,e,r,n){var o=function(t,e,r,n){return Mo(Ho,Lo,Bo)({},t,e,r,n)}(t,e,r,n);Ni(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(mi(t,n,l),r)})).catch((function(r){e.$trigger(mi(t,n,p),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Fi=function(t,e,r,n){n.$suspend=!0,r.then((function(r){zi(t,n,e,r)}));var o={query:$i(n,"query"),mutation:$i(n,"mutation"),auth:$i(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.4.0",o},Ii="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Ri=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=aa().key(e);t(ua(r),r)}},remove:function(t){return aa().removeItem(t)},clearAll:function(){return aa().clear()}};function aa(){return oa.localStorage}function ua(t){return aa().getItem(t)}var ca=Di.trim,sa={name:"cookieStorage",read:function(t){if(!t||!ha(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(fa.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;fa.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:la,remove:pa,clearAll:function(){la((function(t,e){pa(e)}))}},fa=Di.Global.document;function la(t){for(var e=fa.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ca(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function pa(t){t&&ha(t)&&(fa.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ha(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(fa.cookie)}var da=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var va="expire_mixin",ga=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+va);return{set:function(e,r,n,o){this.hasNamespace(va)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(va)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(va)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Sa=[ia,sa],Ea=[da,ga,wa,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Oa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Oa.compress(this._serialize(r));t(e,n)}}}],Aa=ea.createStore(Sa,Ea),ka=Di.Global;function Ta(){return ka.sessionStorage}function xa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:xa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(xa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},sa],Pa=[da,ga],Ca=ea.createStore(qa,Pa),$a=Aa,Na=Ca,za="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Fa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=za.indexOf(n);return a};var Ra=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ja(t){this.message=t}Ja.prototype=new Error,Ja.prototype.name="InvalidTokenError";var Ma=function(t,e){if("string"!=typeof t)throw new Ja("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ra(t.split(".")[r]))}catch(t){throw new Ja("Invalid token specified: "+t.message)}},Ua=Ja;Ma.InvalidTokenError=Ua;var Da,Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Xa(t){if(No(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new k("Token has expired on "+r,t)}return t}(Ma(t));throw new k("Token must be a string!")}Io("HS256",["string"]),Io(!1,["boolean","number","string"],((Da={})[c]="exp",Da[o]=!0,Da)),Io(!1,["boolean","number","string"],((Ha={})[c]="nbf",Ha[o]=!0,Ha)),Io(!1,["boolean","string"],((La={})[c]="iss",La[o]=!0,La)),Io(!1,["boolean","string"],((Ba={})[c]="sub",Ba[o]=!0,Ba)),Io(!1,["boolean","string"],((Ka={})[c]="iss",Ka[o]=!0,Ka)),Io(!1,["boolean"],((Va={})[o]=!0,Va)),Io(!1,["boolean","string"],((Ga={})[o]=!0,Ga)),Io(!1,["boolean","string"],((Ya={})[o]=!0,Ya)),Io(!1,["boolean"],((Wa={})[o]=!0,Wa));var Za=r[0],tu=r[1],eu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},ru={headers:{configurable:!0}};ru.headers.set=function(t){this.extraHeader=t},eu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Vn({},{_cb:_i()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Vn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Vn({},{method:Za,params:o},e))},eu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},eu.prototype.processJsonp=function(t){return qi(t)},eu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=No(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):qi(o)}),(function(t){throw e.cleanUp(),console.error(t),new T("Server side error",t)}))},eu.prototype.getHeaders=function(){return this.opts.enableAuth?Vn({},e,this.getAuthHeader(),this.extraHeader):Vn({},e,this.extraHeader)},eu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},eu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Vn({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(C).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},eu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),gi(t)&&Ko(e)){var o=xi(e);return!0===r?o:((n={})[t]=o,n)}throw new Ti("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(C)},eu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Si]=e,i[Ei]=r,!0===n)return i;if(gi(t))return(o={})[t]=i,o;throw new Ti("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:tu}).then(C)},Object.defineProperties(eu.prototype,ru);var nu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply($a.set,$a,t),new A("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=$a.get("endpoint")||[];yi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=$a.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!yi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=_i();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply($a.set,$a,e)},r.jsonqlEndpoint.get=function(){var t=$a.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return($a.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Na.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Xa)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Pi(t))throw new A("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Pi(this.opts.contract)?this.opts.contract:$a.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(eu))),ou={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},iu={hostname:Io([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Io("jsonql",["string"]),loginHandlerName:Io("login",["string"]),logoutHandlerName:Io("logout",["string"]),enableJsonp:Io(!1,["boolean"]),enableAuth:Io(!1,["boolean"]),useJwt:Io(!0,["boolean"]),useLocalstorage:Io(!0,["boolean"]),storageKey:Io("storageKey",["string"]),authKey:Io("authKey",["string"]),contractExpired:Io(0,["number"]),keepContract:Io(!0,["boolean"]),exposeContract:Io(!1,["boolean"]),showContractDesc:Io(!1,["boolean"]),contractKey:Io(!1,["boolean"]),contractKeyName:Io("X-JSONQL-CV-KEY",["string"]),enableTimeout:Io(!1,["boolean"]),timeout:Io(5e3,["number"]),returnInstance:Io(!1,["boolean"]),allowReturnRawToken:Io(!1,["boolean"]),debugOn:Io(!1,["boolean"])};var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ro(t,iu,ou)}(e),i=new nu(o,t),a=Ci(i,n),u=(r=o.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Fi(i,o,a,u);return c.eventEmitter=u,c}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlClientStatic=e()}(this,(function(){"use strict";var t="application/vnd.api+json",e={Accept:t,"Content-Type":[t,"charset=utf-8"].join(";")},r=["POST","PUT"],n="type",o="optional",i="enumv",a="args",u="checker",c="alias",s={desc:"y"},f="No message",l="onResult",p="onError",h=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),d=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={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),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={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),g=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),y=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),b="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},m=function(){try{if(window||document)return!0}catch(t){}return!1},_=function(){try{if(!m()&&b)return!0}catch(t){}return!1};var w=function(t){function e(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];t.apply(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return m()?"browser":_()?"node":"unknown"},e}(Error),j=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,Error.captureStackTrace&&Error.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}(w),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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},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"JsonqlTypeError"},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={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},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,Error.captureStackTrace&&Error.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}(w),k=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,Error.captureStackTrace&&Error.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}(w),T=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),x=Object.freeze({__proto__:null,Jsonql406Error:h,Jsonql500Error:d,JsonqlAuthorisationError:v,JsonqlContractAuthError:g,JsonqlResolverAppError:y,JsonqlResolverNotFoundError:j,JsonqlEnumError:O,JsonqlTypeError:S,JsonqlCheckerError:E,JsonqlValidationError:A,JsonqlError:k,JsonqlServerError:T}),q=k,P=function(t,e){return!!Object.keys(t).filter((function(t){return e===t})).length};function C(t){if(P(t,"error")){var e=t.error,r=e.className,n=e.name,o=r||n,i=e.message||f,a=e.detail||e;if(o&&x[o])throw new x[r](i,a);throw new q(i,a)}return t}function $(t){if(Array.isArray(t))throw new A("",t);var e=t.message||f,r=t.detail||t;switch(!0){case t instanceof h:throw new h(e,r);case t instanceof d:throw new d(e,r);case t instanceof v:throw new v(e,r);case t instanceof g:throw new g(e,r);case t instanceof y:throw new y(e,r);case t instanceof j:throw new j(e,r);case t instanceof O:throw new O(e,r);case t instanceof S:throw new S(e,r);case t instanceof E:throw new E(e,r);case t instanceof A:throw new A(e,r);case t instanceof T:throw new T(e,r);default:throw new k(e,r)}}var N="object"==typeof b&&b&&b.Object===Object&&b,z="object"==typeof self&&self&&self.Object===Object&&self,F=N||z||Function("return this")(),I=F.Symbol;function R(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 i=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&ot(e,t[r],0)>-1;);return r}(n,o)+1).join("")}function _t(t){return void 0===t}var wt="[object Boolean]";var jt="[object Number]";function Ot(t){return function(t){return"number"==typeof t||Y(t)&&G(t)==jt}(t)&&t!=+t}var St="[object String]";function Et(t){return"string"==typeof t||!J(t)&&Y(t)&&G(t)==St}function At(t,e){return function(r){return t(e(r))}}var kt=At(Object.getPrototypeOf,Object),Tt="[object Object]",xt=Function.prototype,qt=Object.prototype,Pt=xt.toString,Ct=qt.hasOwnProperty,$t=Pt.call(Object);function Nt(t){if(!Y(t)||G(t)!=Tt)return!1;var e=kt(t);if(null===e)return!0;var r=Ct.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&Pt.call(r)==$t}var zt,Ft=function(t,e,r){for(var n=-1,o=Object(t),i=r(t),a=i.length;a--;){var u=i[zt?a:++n];if(!1===e(o[u],u,o))break}return t};var It="[object Arguments]";function Rt(t){return Y(t)&&G(t)==It}var Jt=Object.prototype,Mt=Jt.hasOwnProperty,Ut=Jt.propertyIsEnumerable,Dt=Rt(function(){return arguments}())?Rt:function(t){return Y(t)&&Mt.call(t,"callee")&&!Ut.call(t,"callee")};var Ht="object"==typeof exports&&exports&&!exports.nodeType&&exports,Lt=Ht&&"object"==typeof module&&module&&!module.nodeType&&module,Bt=Lt&&Lt.exports===Ht?F.Buffer:void 0,Kt=(Bt?Bt.isBuffer:void 0)||function(){return!1},Vt=9007199254740991,Gt=/^(?:0|[1-9]\d*)$/;function Yt(t,e){var r=typeof t;return!!(e=null==e?Vt:e)&&("number"==r||"symbol"!=r&&Gt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Wt}var Xt={};Xt["[object Float32Array]"]=Xt["[object Float64Array]"]=Xt["[object Int8Array]"]=Xt["[object Int16Array]"]=Xt["[object Int32Array]"]=Xt["[object Uint8Array]"]=Xt["[object Uint8ClampedArray]"]=Xt["[object Uint16Array]"]=Xt["[object Uint32Array]"]=!0,Xt["[object Arguments]"]=Xt["[object Array]"]=Xt["[object ArrayBuffer]"]=Xt["[object Boolean]"]=Xt["[object DataView]"]=Xt["[object Date]"]=Xt["[object Error]"]=Xt["[object Function]"]=Xt["[object Map]"]=Xt["[object Number]"]=Xt["[object Object]"]=Xt["[object RegExp]"]=Xt["[object Set]"]=Xt["[object String]"]=Xt["[object WeakMap]"]=!1;var Zt,te="object"==typeof exports&&exports&&!exports.nodeType&&exports,ee=te&&"object"==typeof module&&module&&!module.nodeType&&module,re=ee&&ee.exports===te&&N.process,ne=function(){try{var t=ee&&ee.require&&ee.require("util").types;return t||re&&re.binding&&re.binding("util")}catch(t){}}(),oe=ne&&ne.isTypedArray,ie=oe?(Zt=oe,function(t){return Zt(t)}):function(t){return Y(t)&&Qt(t.length)&&!!Xt[G(t)]},ae=Object.prototype.hasOwnProperty;function ue(t,e){var r=J(t),n=!r&&Dt(t),o=!r&&!n&&Kt(t),i=!r&&!n&&!o&&ie(t),a=r||n||o||i,u=a?function(t,e){for(var r=-1,n=Array(t);++r-1},Se.prototype.set=function(t,e){var r=this.__data__,n=je(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var Ee,Ae=F["__core-js_shared__"],ke=(Ee=/[^.]+$/.exec(Ae&&Ae.keys&&Ae.keys.IE_PROTO||""))?"Symbol(src)_1."+Ee:"";var Te=Function.prototype.toString;function xe(t){if(null!=t){try{return Te.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var qe=/^\[object .+?Constructor\]$/,Pe=Function.prototype,Ce=Object.prototype,$e=Pe.toString,Ne=Ce.hasOwnProperty,ze=RegExp("^"+$e.call(Ne).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Fe(t){return!(!pe(t)||function(t){return!!ke&&ke in t}(t))&&(ye(t)?ze:qe).test(xe(t))}function Ie(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return Fe(r)?r:void 0}var Re=Ie(F,"Map"),Je=Ie(Object,"create");var Me="__lodash_hash_undefined__",Ue=Object.prototype.hasOwnProperty;var De=Object.prototype.hasOwnProperty;var He="__lodash_hash_undefined__";function Le(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var s=i.get(t);if(s&&i.get(e))return s==e;var f=-1,l=!0,p=r&Ze?new We:void 0;for(i.set(t,e),i.set(e,t);++f0){if(++e>=Un)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Mn);function Bn(t,e){return Ln(function(t,e,r){return e=Jn(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,i=Jn(n.length-e,0),a=Array(i);++o1?e[n-1]:void 0,i=n>2?e[2]:void 0;for(o=Kn.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,e,r){if(!pe(r))return!1;var n=typeof e;return!!("number"==n?be(r)&&Yt(e,r.length):"string"==n&&e in r)&&we(r[e],t)}(e[0],e[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0))},vo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},go=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!po(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ho(r,t)})).length},yo=function(t,e){if(void 0===e&&(e=null),Nt(t)){if(!e)return!0;if(ho(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!_t(r)||(!1!==(e=vo(t))?!go({arg:r},e):!po(t)(r))})).length)})).length}return!1},bo=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),yo.apply(null,n)};function mo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var _o=function(t,e){var r;switch(!0){case"object"===t:return!bo(e);case"array"===t:return!ho(e.arg);case!1!==(r=vo(t)):return!go(e,r);default:return!po(t)(e.arg)}},wo=function(t,e){return _t(t)?!0!==e.optional||_t(e.defaultvalue)?null:e.defaultvalue:t},jo=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ho(e))throw new k("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ho(t))throw new k("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 mo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:mo(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:mo(4);var n=e.length,o=["any"];return t.map((function(t,r){var i=r>=n||!!e[r].optional,a=e[r]||{type:o,name:"_"+r};return{arg:i?wo(t,a):t,index:r,param:a,optional:i}}));default:throw mo(5),new k("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),i=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!to(e)&&!(r.type.length>r.type.filter((function(e){return _o(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return _o(e,t)})).length)}));return r?((n={}).error=i,n.data=o.map((function(t){return t.arg})),n):i},Oo=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},So=function(t){return!to(t)};function Eo(t,e){var r=Zn(e,(function(t,e){return!t[fo]}));return Br(r,{})?t:function(t,e){var r={};return e=bn(e),_e(t,(function(t,n,o){_n(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,bn((function(t){return t.alias===e})),_e)||e}))}function Ao(t,e){return Gn(e,(function(e,r){var n,o;return _t(t[r])||!0===e[ao]&&So(t[r])?Vn({},e,((n={})[lo]=!0,n)):((o={})[co]=t[r],o[io]=e[io],o[ao]=e[ao]||!1,o[uo]=e[uo]||!1,o[so]=e[so]||!1,o)}))}function ko(t,e){var r=function(t,e){var r=Eo(t,e);return{pristineValues:Gn(Zn(e,(function(t,e){return Oo(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Zn(e,(function(t,e){return!Oo(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[Ao(n,r.checkAgainstAppProps),o]}var To=function(t){return ho(t)?t:[t]};var xo=function(t,e){return!ho(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},qo=function(t,e){try{return!!ye(e)&&e.apply(null,[t])}catch(t){return!1}};function Po(t){return function(e,r){if(e[lo])return e[co];var n=function(t,e){var r,n=[[t[co]],[(r={},r[io]=To(t[io]),r[ao]=t[ao],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw mo("runValidationAction",r,e),new S(r,n);if(!1!==e[uo]&&!xo(e[co],e[uo]))throw mo(uo,e[uo]),new O(r);if(!1!==e[so]&&!qo(e[co],e[so]))throw mo(so,e[so]),new E(r);return e[co]}}function Co(t,e,r,n){return void 0===t&&(t={}),Vn(function(t,e){var r=t[0],n=t[1],o=Gn(r,Po(e));return Vn(o,n)}(ko(t,e),n),r)}function $o(t,e,r,s,f,l){void 0===r&&(r=!1),void 0===s&&(s=!1),void 0===f&&(f=!1),void 0===l&&(l=!1);var p={};return p[a]=t,p[n]=e,!0===r&&(p[o]=!0),ho(s)&&(p[i]=s),ye(f)&&(p[u]=f),Et(l)&&(p[c]=l),p}var No=ro,zo=ho,Fo=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var i=jo(t,e,r);return r?i.error.length?o(i.error):n(i.data):i.length?o(i):n([])}))},Io=function(t,e,r){void 0===r&&(r={});var n=r[o],a=r[i],s=r[u],f=r[c];return $o.apply(null,[t,e,n,a,s,f])},Ro=function(t){return function(e,r,n){return void 0===n&&(n={}),Co(e,r,n,t)}}(jo),Jo=function(t){return J(t)?t:[t]},Mo=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,Jo(t))}),Reflect.apply(t,null,r))}};function Uo(t,e,r,n){void 0===n&&(n=!1);var o=Object.getOwnPropertyDescriptor(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}var Do=function(t,e,r,n){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];var i=n.auth[e].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(r,i).then((function(){return t.query.apply(t,[e,a,u])})).catch($)}},Ho=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];var i=o.query[t].params,a=i.map((function(t,e){return r[e]})),u=r[i.length]||{};return Fo(a,i).then((function(){return e.query.apply(e,[t,a,u])})).catch($)}))};for(var u in o.query)a(u);return t.query=i,[t,e,r,n,o]},Lo=function(t,e,r,n,o){var i={},a=function(t){i=Uo(i,t,(function(r,n,i){void 0===i&&(i={});var a=[r,n],u=o.mutation[t].params;return Fo(a,u).then((function(){return e.mutation.apply(e,[t,r,n,i])})).catch($)}))};for(var u in o.mutation)a(u);return t.mutation=i,[t,e,r,n,o]},Bo=function(t,e,r,n,o){if(n.enableAuth&&o.auth){var i={},a=n.loginHandlerName,u=n.logoutHandlerName;o.auth[a]&&(i[a]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,a,0,o);return i.apply(null,t).then(e.postLoginAction).then((function(t){return r.$trigger("login",t),t}))}),o.auth[u]?i[u]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=Do(e,u,0,o);return i.apply(null,t).then(e.postLogoutAction).then((function(t){return r.$trigger("logout",t),t}))}:i[u]=function(){e.postLogoutAction("continue"),r.$trigger("logout","continue")},t.auth=i}return t};var Ko=Array.isArray,Vo=void 0!==b?b:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Go="object"==typeof Vo&&Vo&&Vo.Object===Object&&Vo,Yo="object"==typeof self&&self&&self.Object===Object&&self,Wo=(Go||Yo||Function("return this")()).Symbol,Qo=Object.prototype,Xo=Qo.hasOwnProperty,Zo=Qo.toString,ti=Wo?Wo.toStringTag:void 0;var ei=Object.prototype.toString;var ri="[object Null]",ni="[object Undefined]",oi=Wo?Wo.toStringTag:void 0;function ii(t){return null==t?void 0===t?ni:ri:oi&&oi in Object(t)?function(t){var e=Xo.call(t,ti),r=t[ti];try{t[ti]=void 0;var n=!0}catch(t){}var o=Zo.call(t);return n&&(e?t[ti]=r:delete t[ti]),o}(t):function(t){return ei.call(t)}(t)}var ai=function(t,e){return function(r){return t(e(r))}}(Object.getPrototypeOf,Object);function ui(t){return null!=t&&"object"==typeof t}var ci="[object Object]",si=Function.prototype,fi=Object.prototype,li=si.toString,pi=fi.hasOwnProperty,hi=li.call(Object);var di=Wo?Wo.prototype:void 0,vi=(di&&di.toString,"[object String]");function gi(t){return"string"==typeof t||!Ko(t)&&ui(t)&&ii(t)==vi}var yi=function(t,e){return!!t.filter((function(t){return t===e})).length},bi=function(t,e){var r=Object.keys(t);return yi(r,e)},mi=function(){for(var t=arguments,e=[],r=arguments.length;r--;)e[r]=t[r];return e.join("_")},_i=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},wi="query",ji="mutation",Oi="socket",Si="payload",Ei="condition",Ai=function(){try{if(window||document)return!0}catch(t){}return!1},ki=function(){try{if(!Ai()&&Vo)return!0}catch(t){}return!1};var Ti=function(t){function e(){for(var r=arguments,n=[],o=arguments.length;o--;)n[o]=r[o];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=e.name,Error.captureStackTrace&&Error.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}(function(t){function e(){for(var e=arguments,r=[],n=arguments.length;n--;)r[n]=e[n];t.apply(this,r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.where=function(){return Ai()?"browser":ki()?"node":"unknown"},e}(Error));var xi=function(t){var e;return(e={}).args=t,e};var qi=function(t){return bi(t,"data")&&!bi(t,"error")?t.data:t},Pi=function(t){return function(t){if(!ui(t)||ii(t)!=ci)return!1;var e=ai(t);if(null===e)return!0;var r=pi.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&li.call(r)==hi}(t)&&(bi(t,wi)||bi(t,ji)||bi(t,Oi))},Ci=function(t,e){return void 0===e&&(e={}),Pi(e)?Promise.resolve(e):t.getContract()},$i=function(t,e){return function(r){for(var n=[],o=arguments.length-1;o-- >0;)n[o]=arguments[o+1];return new Promise((function(o,i){t.$only(mi(e,r,l),o),t.$only(mi(e,r,p),i),t.$trigger(e,{resolverName:r,args:n})}))}},Ni=function(t,e,r){var n=t.$queues,o=r.debugOn;o&&console.info("(validateRegisteredEvents)","storedEvt",n),n.forEach((function(t){var r=t[0],n=t[1].resolverName;if(o&&console.info("(validateRegisteredEvents)",r,n),!e[r][n])throw new Error(r+"."+n+" not existed in contract!")}))};function zi(t,e,r,n){var o=function(t,e,r,n){return Mo(Ho,Lo,Bo)({},t,e,r,n)}(t,e,r,n);Ni(e,n,r);var i=function(t){e.$only(t,(function(r){var n=r.resolverName,i=r.args;o[t][n]?Reflect.apply(o[t][n],null,i).then((function(r){e.$trigger(mi(t,n,l),r)})).catch((function(r){e.$trigger(mi(t,n,p),r)})):console.error(n+" is not defined in the contract!")}))};for(var a in o)i(a);setTimeout((function(){e.$suspend=!1}),1)}var Fi=function(t,e,r,n){n.$suspend=!0,r.then((function(r){zi(t,n,e,r)}));var o={query:$i(n,"query"),mutation:$i(n,"mutation"),auth:$i(n,"auth"),getToken:function(){return t.rawAuthToken}};return e.exposeContract&&(o.getContract=function(){return t.get()}),e.enableAuth&&(o.userdata=function(){return t.userdata}),o.version="1.4.0",o},Ii="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var Ri=Object.assign?Object.assign:function(t,e,r,n){for(var o=arguments,i=1;i=0;e--){var r=aa().key(e);t(ua(r),r)}},remove:function(t){return aa().removeItem(t)},clearAll:function(){return aa().clear()}};function aa(){return oa.localStorage}function ua(t){return aa().getItem(t)}var ca=Di.trim,sa={name:"cookieStorage",read:function(t){if(!t||!ha(t))return null;var e="(?:^|.*;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(fa.cookie.replace(new RegExp(e),"$1"))},write:function(t,e){if(!t)return;fa.cookie=escape(t)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"},each:la,remove:pa,clearAll:function(){la((function(t,e){pa(e)}))}},fa=Di.Global.document;function la(t){for(var e=fa.cookie.split(/; ?/g),r=e.length-1;r>=0;r--)if(ca(e[r])){var n=e[r].split("="),o=unescape(n[0]);t(unescape(n[1]),o)}}function pa(t){t&&ha(t)&&(fa.cookie=escape(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function ha(t){return new RegExp("(?:^|;\\s*)"+escape(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(fa.cookie)}var da=function(){var t={};return{defaults:function(e,r){t=r},get:function(e,r){var n=e();return void 0!==n?n:t[r]}}};var va="expire_mixin",ga=function(){var t=this.createStore(this.storage,null,this._namespacePrefix+va);return{set:function(e,r,n,o){this.hasNamespace(va)||t.set(r,o);return e()},get:function(t,r){this.hasNamespace(va)||e.call(this,r);return t()},remove:function(e,r){this.hasNamespace(va)||t.remove(r);return e()},getExpiration:function(e,r){return t.get(r)},removeExpiredKeys:function(t){var r=[];this.each((function(t,e){r.push(e)}));for(var n=0;n>>8,r[2*n+1]=a%256}return r},decompressFromUint8Array:function(e){if(null==e)return i.decompress(e);for(var r=new Array(e.length/2),n=0,o=r.length;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++),a[s]=p++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(f.charCodeAt(0)<256){for(n=0;n>=1}else{for(o=1,n=0;n>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[f]}else for(o=a[f],n=0;n>=1;0==--l&&(l=Math.pow(2,h),h++)}for(o=2,n=0;n>=1;for(;;){if(v<<=1,g==e-1){d.push(r(v));break}g++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:i._decompress(t.length,32768,(function(e){return t.charCodeAt(e)}))},_decompress:function(e,r,n){var o,i,a,u,c,s,f,l=[],p=4,h=4,d=3,v="",g=[],y={val:n(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,c=Math.pow(2,2),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;f=t(a);break;case 2:return""}for(l[3]=f,i=f,g.push(f);;){if(y.index>e)return"";for(a=0,c=Math.pow(2,d),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;switch(f=a){case 0:for(a=0,c=Math.pow(2,8),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),s=1;s!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=n(y.index++)),a|=(u>0?1:0)*s,s<<=1;l[h++]=t(a),f=h-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,d),d++),l[f])v=l[f];else{if(f!==h)return null;v=i+i.charAt(0)}g.push(v),l[h++]=i+v.charAt(0),i=v,0==--p&&(p=Math.pow(2,d),d++)}}};return i}();null!=t&&(t.exports=e)}));var Sa=[ia,sa],Ea=[da,ga,wa,function(){return{get:function(t,e){var r=t(e);if(!r)return r;var n=Oa.decompress(r);return null==n?r:this._deserialize(n)},set:function(t,e,r){var n=Oa.compress(this._serialize(r));t(e,n)}}}],Aa=ea.createStore(Sa,Ea),ka=Di.Global;function Ta(){return ka.sessionStorage}function xa(t){return Ta().getItem(t)}var qa=[{name:"sessionStorage",read:xa,write:function(t,e){return Ta().setItem(t,e)},each:function(t){for(var e=Ta().length-1;e>=0;e--){var r=Ta().key(e);t(xa(r),r)}},remove:function(t){return Ta().removeItem(t)},clearAll:function(){return Ta().clear()}},sa],Pa=[da,ga],Ca=ea.createStore(qa,Pa),$a=Aa,Na=Ca,za="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Fa(t){this.message=t}Fa.prototype=new Error,Fa.prototype.name="InvalidCharacterError";var Ia="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new Fa("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,i=0,a="";n=e.charAt(i++);~n&&(r=o%4?64*r+n:n,o++%4)?a+=String.fromCharCode(255&r>>(-2*o&6)):0)n=za.indexOf(n);return a};var Ra=function(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Ia(t).replace(/(.)/g,(function(t,e){var r=e.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(e)}catch(t){return Ia(e)}};function Ja(t){this.message=t}Ja.prototype=new Error,Ja.prototype.name="InvalidTokenError";var Ma=function(t,e){if("string"!=typeof t)throw new Ja("Invalid token specified");var r=!0===(e=e||{}).header?0:1;try{return JSON.parse(Ra(t.split(".")[r]))}catch(t){throw new Ja("Invalid token specified: "+t.message)}},Ua=Ja;Ma.InvalidTokenError=Ua;var Da,Ha,La,Ba,Ka,Va,Ga,Ya,Wa,Qa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e};function Xa(t){if(No(t))return function(t){var e=t.iat||Qa(!0);if(t.exp&&e>=t.exp){var r=new Date(t.exp).toISOString();throw new k("Token has expired on "+r,t)}return t}(Ma(t));throw new k("Token must be a string!")}Io("HS256",["string"]),Io(!1,["boolean","number","string"],((Da={})[c]="exp",Da[o]=!0,Da)),Io(!1,["boolean","number","string"],((Ha={})[c]="nbf",Ha[o]=!0,Ha)),Io(!1,["boolean","string"],((La={})[c]="iss",La[o]=!0,La)),Io(!1,["boolean","string"],((Ba={})[c]="sub",Ba[o]=!0,Ba)),Io(!1,["boolean","string"],((Ka={})[c]="iss",Ka[o]=!0,Ka)),Io(!1,["boolean"],((Va={})[o]=!0,Va)),Io(!1,["boolean","string"],((Ga={})[o]=!0,Ga)),Io(!1,["boolean","string"],((Ya={})[o]=!0,Ya)),Io(!1,["boolean"],((Wa={})[o]=!0,Wa));var Za=r[0],tu=r[1],eu=function(t){!function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,null,t)}catch(t){}}(t),this.fly=t.Fly?new t.Fly:new Fly,this.opts=t,this.extraHeader={},this.extraParams={},this.reqInterceptor(),this.resInterceptor()},ru={headers:{configurable:!0}};ru.headers.set=function(t){this.extraHeader=t},eu.prototype.request=function(t,e,r){var n;void 0===e&&(e={}),void 0===r&&(r={}),this.headers=r;var o=Vn({},{_cb:_i()},this.extraParams);if(this.opts.enableJsonp){var i=function(t){return Object.keys(t)[0]}(t);o=Vn({},o,((n={}).jsonqlJsonpCallback=i,n)),t=t[i]}return this.fly.request(this.jsonqlEndpoint,t,Vn({},{method:Za,params:o},e))},eu.prototype.reqInterceptor=function(){var t=this;this.fly.interceptors.request.use((function(e){var r=t.getHeaders();for(var n in t.log("request interceptor call",r),r)e.headers[n]=r[n];return e}))},eu.prototype.processJsonp=function(t){return qi(t)},eu.prototype.resInterceptor=function(){var t=this,e=this,r=e.opts.enableJsonp;this.fly.interceptors.response.use((function(n){t.log("response interceptor call"),e.cleanUp();var o=No(n.data)?JSON.parse(n.data):n.data;return r?e.processJsonp(o):qi(o)}),(function(t){throw e.cleanUp(),console.error(t),new T("Server side error",t)}))},eu.prototype.getHeaders=function(){return this.opts.enableAuth?Vn({},e,this.getAuthHeader(),this.extraHeader):Vn({},e,this.extraHeader)},eu.prototype.cleanUp=function(){this.extraHeader={},this.extraParams={}},eu.prototype.get=function(){var t=this;return this.opts.showContractDesc&&(this.extraParams=Vn({},this.extraParams,s)),this.request({},{method:"GET"},this.contractHeader).then(C).then((function(e){return t.log("get contract result",e),e.cache&&e.contract?e.contract:e}))},eu.prototype.query=function(t,e){return void 0===e&&(e=[]),this.request(function(t,e,r){var n;if(void 0===e&&(e=[]),void 0===r&&(r=!1),gi(t)&&Ko(e)){var o=xi(e);return!0===r?o:((n={})[t]=o,n)}throw new Ti("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}(t,e)).then(C)},eu.prototype.mutation=function(t,e,r){return void 0===e&&(e={}),void 0===r&&(r={}),this.request(function(t,e,r,n){var o;void 0===r&&(r={}),void 0===n&&(n=!1);var i={};if(i[Si]=e,i[Ei]=r,!0===n)return i;if(gi(t))return(o={})[t]=i,o;throw new Ti("[createMutation] expect resolverName to be string!",{resolverName:t,payload:e,condition:r})}(t,e,r),{method:tu}).then(C)},Object.defineProperties(eu.prototype,ru);var nu=function(t){function e(e,r){void 0===r&&(r=null),r&&(e.Fly=r),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={storeIt:{configurable:!0},jsonqlEndpoint:{configurable:!0},jsonqlContract:{configurable:!0},jsonqlToken:{configurable:!0},jsonqlUserdata:{configurable:!0}};return r.storeIt.set=function(t){throw console.info("storeIt",t),zo(t)&&t.length>=2&&Reflect.apply($a.set,$a,t),new A("Expect argument to be array and least 2 items!")},r.jsonqlEndpoint.set=function(t){var e=$a.get("endpoint")||[];yi(e,t)||(e.push(t),this.storeId=["endpoint",e],this.endpointIndex=e.length-1)},r.jsonqlContract.set=function(t){var e=this.opts.storageKey,r=[e],n=t[0],o=t[1],i=$a.get(e)||[];i[this.endpointIndex||0]=n,r.push(i),o&&r.push(o),this.opts.keepContract&&(this.storeIt=r)},r.jsonqlToken.set=function(t){var e="credential",r=localStorage.get(e)||[];if(!yi(r,t)){var n=r.length-1;r[n]=t,this[e+"Index"]=n;var o=[e,r];if(this.opts.tokenExpired){var i=parseFloat(this.opts.tokenExpired);if(!isNaN(i)&&i>0){var a=_i();o.push(a+parseFloat(i))}}return this.storeIt=o,this.jsonqlUserdata=this.decoder(t),t}return!1},r.jsonqlUserdata.set=function(t){var e=["userdata",t];return t.exp&&e.push(t.exp),Reflect.apply($a.set,$a,e)},r.jsonqlEndpoint.get=function(){var t=$a.get("endpoint");if(!t){var e=this.opts,r=[e.hostname,e.jsonqlPath].join("/");return this.jsonqlEndpoint=r,r}return t[this.endpointIndex]},r.jsonqlContract.get=function(){var t=this.opts.storageKey;return($a.get(t)||[])[this.endpointIndex]||!1},r.jsonqlToken.get=function(){var t="credential",e=localStorage.get(t);return!!e&&e[this[t+"Index"]]},r.jsonqlUserdata.get=function(){return Na.get("userdata")},e.prototype.log=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];!0===this.opts.debugOn&&Reflect.apply(console.info,console,t)},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e),e.enableAuth&&e.useJwt&&(this.setDecoder=Xa)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={userdata:{configurable:!0},rawAuthToken:{configurable:!0},setDecoder:{configurable:!0}};return r.userdata.get=function(){return this.jsonqlUserdata},r.rawAuthToken.get=function(){return this.jsonqlToken},r.setDecoder.set=function(t){"function"==typeof t&&(this.decoder=t)},e.prototype.storeToken=function(t){return this.jsonqlToken=t},e.prototype.decoder=function(t){return t},e.prototype.getAuthHeader=function(){var t,e=this.rawAuthToken;return e?((t={})[this.opts.AUTH_HEADER]="Bearer "+e,t):{}},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={contractHeader:{configurable:!0}};return e.prototype.getContract=function(){var t=this.readContract();if(this.log("getContract first call",t),t&&Array.isArray(t)){var e=t[this.endpointIndex||0];if(e)return Promise.resolve(e)}return this.get().then(this.storeContract.bind(this))},r.contractHeader.get=function(){var t={};return!1!==this.opts.contractKey&&(t[this.opts.contractKeyName]=this.opts.contractKey),t},e.prototype.storeContract=function(t){if(!Pi(t))throw new A("Contract is malformed!");var e=[t];if(this.opts.contractExpired){var r=parseFloat(this.opts.contractExpired);!isNaN(r)&&r>0&&e.push(r)}return this.jsonqlContract=e,this.log("storeContract return result",t),t},e.prototype.readContract=function(){return Pi(this.opts.contract)?this.opts.contract:$a.get(this.opts.storageKey)},Object.defineProperties(e.prototype,r),e}(eu))),ou={contract:!1,MUTATION_ARGS:["name","payload","conditions"],CONTENT_TYPE:t,BEARER:"Bearer",AUTH_HEADER:"Authorization"},iu={hostname:Io([window.location.protocol,window.location.host].join("//"),["string"]),jsonqlPath:Io("jsonql",["string"]),loginHandlerName:Io("login",["string"]),logoutHandlerName:Io("logout",["string"]),enableJsonp:Io(!1,["boolean"]),enableAuth:Io(!1,["boolean"]),useJwt:Io(!0,["boolean"]),useLocalstorage:Io(!0,["boolean"]),storageKey:Io("storageKey",["string"]),authKey:Io("authKey",["string"]),contractExpired:Io(0,["number"]),keepContract:Io(!0,["boolean"]),exposeContract:Io(!1,["boolean"]),showContractDesc:Io(!1,["boolean"]),contractKey:Io(!1,["boolean"]),contractKeyName:Io("X-JSONQL-CV-KEY",["string"]),enableTimeout:Io(!1,["boolean"]),timeout:Io(5e3,["number"]),returnInstance:Io(!1,["boolean"]),allowReturnRawToken:Io(!1,["boolean"]),debugOn:Io(!1,["boolean"])};var au=new WeakMap,uu=new WeakMap;var cu=function(){this.__suspend__=null,this.queueStore=new Set},su={$suspend:{configurable:!0},$queues:{configurable:!0}};su.$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)},cu.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__},su.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},cu.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(cu.prototype,su);var fu=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 i=0;return o.forEach((function(o){var a=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,a,r||u),i+=n.addToNormalStore(t,"on",e,r||u)})),i},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],i=o[0],a=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,i,r||a),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,i=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==i)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(i).forEach((function(o){var i=o[0],a=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,i,r||a)})));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 i=Array.from(o)[0],a=i[0],u=i[1],c=i[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,a,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,i=this.normalStore;if(this.logger("($trigger)","normalStore",i),i.has(t)){var a=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",a),!0===a)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(i.get(t)),c=u.length,s=!1,f=0;f0;)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 i=n[2];this.checkTypeInLazyStore(e,i)||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),i=[this.normalStore,t,o,r,n,e],a=Reflect.apply(this.addToStore,this,i),u=a[0],c=a[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 i=Reflect.apply(this.addToStore,this,o),a=i[0],u=i[1];return this.lazyStore=a,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){au.set(this,t)},r.normalStore.get=function(){return au.get(this)},r.lazyStore.set=function(t){uu.set(this,t)},r.lazyStore.get=function(){return uu.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}(cu));return function(t,e){void 0===e&&(e={});var r,n=e.contract,o=function(t){return Ro(t,iu,ou)}(e),i=new nu(o,t),a=Ci(i,n),u=(r=o.debugOn,new fu({logger:r?function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];t.unshift("[NBS]"),console.log.apply(null,t)}:void 0})),c=Fi(i,o,a,u);return c.eventEmitter=u,c}})); //# sourceMappingURL=static.js.map diff --git a/packages/http-client/static.js.map b/packages/http-client/static.js.map index ce2e395c..b8c30168 100644 --- a/packages/http-client/static.js.map +++ b/packages/http-client/static.js.map @@ -1 +1 @@ -{"version":3,"file":"static.js","sources":["node_modules/store/plugins/defaults.js","node_modules/store/plugins/expire.js"],"sourcesContent":["module.exports = defaultsPlugin\n\nfunction defaultsPlugin() {\n\tvar defaultValues = {}\n\t\n\treturn {\n\t\tdefaults: defaults,\n\t\tget: get\n\t}\n\t\n\tfunction defaults(_, values) {\n\t\tdefaultValues = values\n\t}\n\t\n\tfunction get(super_fn, key) {\n\t\tvar val = super_fn()\n\t\treturn (val !== undefined ? val : defaultValues[key])\n\t}\n}\n","var namespace = 'expire_mixin'\n\nmodule.exports = expirePlugin\n\nfunction expirePlugin() {\n\tvar expirations = this.createStore(this.storage, null, this._namespacePrefix+namespace)\n\t\n\treturn {\n\t\tset: expire_set,\n\t\tget: expire_get,\n\t\tremove: expire_remove,\n\t\tgetExpiration: getExpiration,\n\t\tremoveExpiredKeys: removeExpiredKeys\n\t}\n\t\n\tfunction expire_set(super_fn, key, val, expiration) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.set(key, expiration)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_get(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\t_checkExpiration.call(this, key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction expire_remove(super_fn, key) {\n\t\tif (!this.hasNamespace(namespace)) {\n\t\t\texpirations.remove(key)\n\t\t}\n\t\treturn super_fn()\n\t}\n\t\n\tfunction getExpiration(_, key) {\n\t\treturn expirations.get(key)\n\t}\n\t\n\tfunction removeExpiredKeys(_) {\n\t\tvar keys = []\n\t\tthis.each(function(val, key) {\n\t\t\tkeys.push(key)\n\t\t})\n\t\tfor (var i=0; i