From c0a220387baa233551862618df063b86a553c53d Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 24 Mar 2020 23:31:06 +0800 Subject: [PATCH 1/9] clear out the old methods and use the new one from @jsonql/security --- packages/ws-server-core/index.js | 8 ++-- packages/ws-server-core/package.json | 2 +- .../src/handles/handle-init-ping.js | 11 ++--- .../ws-server-core/src/share/node-store.js | 45 ------------------- 4 files changed, 11 insertions(+), 55 deletions(-) delete mode 100644 packages/ws-server-core/src/share/node-store.js diff --git a/packages/ws-server-core/index.js b/packages/ws-server-core/index.js index f9ef9a3f..2a788724 100644 --- a/packages/ws-server-core/index.js +++ b/packages/ws-server-core/index.js @@ -13,14 +13,14 @@ const { } = require('./src') // we also need to export all the share methods here because they will get use // in the respective external methods -const { addProperty } = require('./src/share/add-property') + const { getContract } = require('./src/share/get-contract') const { createWsReply, getDebug, getRainbowDebug, - getNamespace, + extractWsPayload, nil, getUserdata, @@ -42,10 +42,10 @@ module.exports = { NO_TOKEN_ERR_MSG, // for the server to use // some of these might not be needed to export anymore @TODO - addProperty, + getContract, createWsReply, - getNamespace, + extractWsPayload, nil, diff --git a/packages/ws-server-core/package.json b/packages/ws-server-core/package.json index fb8a990c..82eb0192 100644 --- a/packages/ws-server-core/package.json +++ b/packages/ws-server-core/package.json @@ -33,7 +33,7 @@ "debug": "^4.1.1", "esm": "^3.2.25", "fs-extra": "^9.0.0", - "jsonql-constants": "^2.0.12", + "jsonql-constants": "^2.0.13", "jsonql-errors": "^1.2.1", "jsonql-params-validator": "^1.6.2", "jsonql-resolver": "^1.2.2", diff --git a/packages/ws-server-core/src/handles/handle-init-ping.js b/packages/ws-server-core/src/handles/handle-init-ping.js index 3488822e..7e573a3b 100644 --- a/packages/ws-server-core/src/handles/handle-init-ping.js +++ b/packages/ws-server-core/src/handles/handle-init-ping.js @@ -6,10 +6,11 @@ // @TODO need to add hook that control the issue of CSRF token, and validation of the token // e.g. allow the user to store the token in a Redis, and subsequenely check it -const { createCSRFToken } = require('../share/node-store') +const { createCSRFToken } = require('@jsonql/security') const { CSRF_HEADER_KEY, - SOCKET_PING_EVENT_NAME + SOCKET_PING_EVENT_NAME, + CACHE_STORE_PROP_KEY } = require('jsonql-constants') const { deliverIntercomMsg } = require('../resolver/resolver-methods') const { getDebug } = require('../share/helpers') @@ -25,10 +26,10 @@ const debug = getDebug('handles:init-ping') * @return {void} nothing return just send back a reply */ function handleInitPing(config, ws, deliverFn, req, connectedNamespace, args) { - debug('req.headers', req.headers) - - const token = createCSRFToken() + + const store = opts[CACHE_STORE_PROP_KEY] + const token = createCSRFToken(store) // @TODO add hook to process this token const payload = {[CSRF_HEADER_KEY]: token} diff --git a/packages/ws-server-core/src/share/node-store.js b/packages/ws-server-core/src/share/node-store.js deleted file mode 100644 index 8281886f..00000000 --- a/packages/ws-server-core/src/share/node-store.js +++ /dev/null @@ -1,45 +0,0 @@ -const nanoid = require('nanoid') -const { JsonqlError } = require('jsonql-errors') -const getNodeCache = require('./get-node-cache') -// call this first -const store = getNodeCache() -const STORE_FAIL_ERR = 'unable to store the token in node cache!' - -/** - * Generate a token and check if it's in the store - * @return {string} token - */ -function getToken() { - let token = nanoid() - // test if the token exist - if (store.has(token)) { - // call itself again until find a key not in store - return getToken() - } - return token -} - -/** - * create a set the token in store - * @return {string} token - */ -function createCSRFToken() { - let token = getToken() - // not setting the TTL at the moment, but we should in the future - if (store.set(token, Date.now())) { - return token - } - throw new JsonqlError('createCSRFToken', STORE_FAIL_ERR) -} - -/** - * Check if the key existed - * @param {string} token - * @return {boolean} - */ -function isCSRFTokenExist(token) { - return store.has(token) -} - - -module.exports = { getToken, createCSRFToken, isCSRFTokenExist } -- Gitee From 2ffcebcf8e1c4082d7dfc353da23605ef6ee59cb Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 24 Mar 2020 23:40:19 +0800 Subject: [PATCH 2/9] Add event emitter class and set up --- .../ws-server-core/src/options/event-emitter.js | 17 +++++++++++++++++ packages/ws-server-core/src/options/index.js | 7 ++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 packages/ws-server-core/src/options/event-emitter.js diff --git a/packages/ws-server-core/src/options/event-emitter.js b/packages/ws-server-core/src/options/event-emitter.js new file mode 100644 index 00000000..7ad0867e --- /dev/null +++ b/packages/ws-server-core/src/options/event-emitter.js @@ -0,0 +1,17 @@ +// we are going extend this class and have it's own name and stuff + +const EventEmitter = require('@to1source/event') + +class WsServerEventEmitter extends EventEmitter { + + constructor(opt) { + super(opts) + } + + get $name() { + return 'ws-server-core-event-emitter' + } +} + + +module.exports = { WsServerEventEmitter } \ No newline at end of file diff --git a/packages/ws-server-core/src/options/index.js b/packages/ws-server-core/src/options/index.js index c9b1ca5a..18728a4e 100644 --- a/packages/ws-server-core/src/options/index.js +++ b/packages/ws-server-core/src/options/index.js @@ -19,7 +19,8 @@ const { PEM_EXT, PUBLIC_KEY_NAME, PRIVATE_KEY_NAME, - CACHE_STORE_PROP_KEY + CACHE_STORE_PROP_KEY, + EVENT_EMITTER_PROP_KEY } = require('jsonql-constants') const { SECRET_MISSING_ERR } = require('./constants') const { @@ -27,6 +28,7 @@ const { wsConstProps, socketAppProps } = require('./props') +const { WsServerEventEmitter } = require('../share/event-emitter') const debug = require('debug')('jsonql-ws-server-core:options') @@ -94,6 +96,9 @@ function initWsServerOption(config) { } // we init an cache object here now for re-use through out the app opts[CACHE_STORE_PROP_KEY] = getCacheStore(opts) + + opts[EVENT_EMITTER_PROP_KEY] = new WsServerEventEmitter() + return opts }) } -- Gitee From 104c9a1576b187b4a21bc6a90249a6fe8aad833d Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 24 Mar 2020 23:44:44 +0800 Subject: [PATCH 3/9] should be all setup and start testing --- packages/ws-server-core/src/options/event-emitter.js | 4 ++-- packages/ws-server-core/src/options/index.js | 6 ++++-- .../ws-server-core/src/resolver/resolve-socket-method.js | 6 ++---- packages/ws-server-core/src/resolver/setup-on-method.js | 3 ++- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/ws-server-core/src/options/event-emitter.js b/packages/ws-server-core/src/options/event-emitter.js index 7ad0867e..7c9e2f77 100644 --- a/packages/ws-server-core/src/options/event-emitter.js +++ b/packages/ws-server-core/src/options/event-emitter.js @@ -4,8 +4,8 @@ const EventEmitter = require('@to1source/event') class WsServerEventEmitter extends EventEmitter { - constructor(opt) { - super(opts) + constructor(logger) { + super({ logger }) } get $name() { diff --git a/packages/ws-server-core/src/options/index.js b/packages/ws-server-core/src/options/index.js index 18728a4e..cc62c549 100644 --- a/packages/ws-server-core/src/options/index.js +++ b/packages/ws-server-core/src/options/index.js @@ -28,7 +28,7 @@ const { wsConstProps, socketAppProps } = require('./props') -const { WsServerEventEmitter } = require('../share/event-emitter') +const { WsServerEventEmitter } = require('./event-emitter') const debug = require('debug')('jsonql-ws-server-core:options') @@ -97,7 +97,9 @@ function initWsServerOption(config) { // we init an cache object here now for re-use through out the app opts[CACHE_STORE_PROP_KEY] = getCacheStore(opts) - opts[EVENT_EMITTER_PROP_KEY] = new WsServerEventEmitter() + const { log } = opts + + opts[EVENT_EMITTER_PROP_KEY] = new WsServerEventEmitter(log) return opts }) diff --git a/packages/ws-server-core/src/resolver/resolve-socket-method.js b/packages/ws-server-core/src/resolver/resolve-socket-method.js index 2a54ae15..54c735e0 100644 --- a/packages/ws-server-core/src/resolver/resolve-socket-method.js +++ b/packages/ws-server-core/src/resolver/resolve-socket-method.js @@ -1,12 +1,10 @@ // search for the resolver location -const { - SOCKET_NAME, - CACHE_STORE_PROP_KEY -} = require('jsonql-constants') +const { CACHE_STORE_PROP_KEY } = require('jsonql-constants') const { JsonqlResolverAppError } = require('jsonql-errors') const { getCompleteSocketResolver } = require('jsonql-resolver') const { getInjectors } = require('./get-injectors') const { getRainbowDebug } = require('../share/helpers') + const debug = getRainbowDebug('share:resolve-method') /** diff --git a/packages/ws-server-core/src/resolver/setup-on-method.js b/packages/ws-server-core/src/resolver/setup-on-method.js index db884010..583b1b88 100644 --- a/packages/ws-server-core/src/resolver/setup-on-method.js +++ b/packages/ws-server-core/src/resolver/setup-on-method.js @@ -13,9 +13,10 @@ const debug = getRainbowDebug('create-send-method', 'x') * @param {*} deliverFn * @param {*} resolver * @param {*} resolverName + * @param {object} opts configuration * @return {function} resolver */ -function setupOnMethod(deliverFn, resolver, resolverName) { +function setupOnMethod(deliverFn, resolver, resolverName, opts) { return objDefineProps( resolver, SEND_ON_FN_NAME, -- Gitee From d6185a53298bba9a1071c6ae7c7bcfe682d4581b Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 24 Mar 2020 23:54:19 +0800 Subject: [PATCH 4/9] fix the basic test now move on the server side to run the rest of the test --- packages/ws-server-core/package.json | 2 +- .../src/handles/handle-init-ping.js | 6 +++++- packages/ws-server-core/tests/fn.test.js | 16 +++++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/ws-server-core/package.json b/packages/ws-server-core/package.json index 82eb0192..59cebd28 100644 --- a/packages/ws-server-core/package.json +++ b/packages/ws-server-core/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-server-core", - "version": "0.8.0", + "version": "0.8.1", "description": "This is the core module that drive the Jsonql WS Socket server, not for direct use.", "main": "index.js", "files": [ diff --git a/packages/ws-server-core/src/handles/handle-init-ping.js b/packages/ws-server-core/src/handles/handle-init-ping.js index 7e573a3b..dd04feaa 100644 --- a/packages/ws-server-core/src/handles/handle-init-ping.js +++ b/packages/ws-server-core/src/handles/handle-init-ping.js @@ -15,6 +15,7 @@ const { const { deliverIntercomMsg } = require('../resolver/resolver-methods') const { getDebug } = require('../share/helpers') const debug = getDebug('handles:init-ping') + /** * @TODO handle the intercom event disconnect / switch-user (future feature) * @param {object} config configuraton @@ -28,7 +29,10 @@ const debug = getDebug('handles:init-ping') function handleInitPing(config, ws, deliverFn, req, connectedNamespace, args) { debug('req.headers', req.headers) - const store = opts[CACHE_STORE_PROP_KEY] + const store = config[CACHE_STORE_PROP_KEY] + + // debug('what is in store', store) + const token = createCSRFToken(store) // @TODO add hook to process this token const payload = {[CSRF_HEADER_KEY]: token} diff --git a/packages/ws-server-core/tests/fn.test.js b/packages/ws-server-core/tests/fn.test.js index a60255e7..2c0a5d45 100644 --- a/packages/ws-server-core/tests/fn.test.js +++ b/packages/ws-server-core/tests/fn.test.js @@ -1,13 +1,19 @@ const test = require('ava') const { handleInterCom } = require('../src/handles/handle-intercom') -const getNodeCache = require('../src/share/get-node-cache') +const { getNodeCache } = require('@jsonql/security') +// const getNodeCache = require('../src/share/get-node-cache') const debug = require('debug')('jsonql-ws-core:test:fn') -const { SOCKET_PING_EVENT_NAME } = require('jsonql-constants') +const { + SOCKET_PING_EVENT_NAME, + CACHE_STORE_PROP_KEY +} = require('jsonql-constants') test.cb(`Just testing the handleInterCom function interface`, t => { t.plan(2) - const config = {} + const config = { + [CACHE_STORE_PROP_KEY]: getNodeCache() + } const ws = {} const deliverFn = function(...args) { debug('argument received from deliverFn', args) @@ -23,8 +29,8 @@ test.cb(`Just testing the handleInterCom function interface`, t => { // call the getToken again to observe if the node cache get re-init setTimeout(() => { - const store = getNodeCache() - debug(`all keys`, store.keys()) + // const store = getNodeCache() + // debug(`all keys`, store.keys()) t.pass() t.end() }, 100) -- Gitee From 066ff11facc49abadec036c6efa19063fc81c270 Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 25 Mar 2020 10:35:07 +0800 Subject: [PATCH 5/9] Fix the internal but now we got a resolverNotFound error from the jsonql-resolver --- .../src/handles/get-socket-handler.js | 2 +- .../src/handles/handle-nsp-resolvers.js | 15 +++++++++------ packages/ws-server-core/src/resolver/index.js | 6 ++++-- .../src/resolver/resolve-socket-method.js | 5 +++-- packages/ws-server/src/modules.js | 5 +++-- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/ws-server-core/src/handles/get-socket-handler.js b/packages/ws-server-core/src/handles/get-socket-handler.js index bd0f5669..b1f83c49 100644 --- a/packages/ws-server-core/src/handles/get-socket-handler.js +++ b/packages/ws-server-core/src/handles/get-socket-handler.js @@ -49,7 +49,7 @@ function getSocketHandler(config, ws, deliverFn, req, connectedNamespace, payloa const resolverName = getResolverFromPayload(payload) const args = payload[resolverName] // break up from previous setup so we get a cache version - const nspHandlerFn = handleNspResolver(deliverFn, ws, config) + const nspHandlerFn = handleNspResolvers(deliverFn, ws, config) // it might be the special internal event? switch (true) { diff --git a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js index 28edf9fb..ca7e3fdd 100644 --- a/packages/ws-server-core/src/handles/handle-nsp-resolvers.js +++ b/packages/ws-server-core/src/handles/handle-nsp-resolvers.js @@ -23,22 +23,24 @@ let nspHandlerFn * @param {object} opts configuration * @return {function} */ -function handleNspResolver(deliverFn, ws, opts) { +function handleNspResolvers(deliverFn, ws, opts) { // check the cache method first if (typeof nspHandlerFn === 'function') { + debug('return the cached nspHandlerFn') return nspHandlerFn } /** + * The actual method to action on the execution of the resolver + * @param {string} namespace connected namespace * @param {string} resolverName name of resolver * @param {*} args from payload * @param {object} params from contract.json * @param {object} userdata userdata * @return {promise} resolve the result */ - nspHandlerFn = function nspHandlerAction(namespace, resolverName, args, params, userdata) { - - return validateInput(args, params) + nspHandlerFn = (namespace, resolverName, args, params, userdata) => ( + validateInput(args, params) .then(_args => resolveSocketMethod( namespace, resolverName, @@ -54,13 +56,14 @@ function handleNspResolver(deliverFn, ws, opts) { return deliverMsg(deliverFn, resolverName, result) }) .catch(err => { + debug('error happen inside the nspHandlerAction', err) // By the time the error gets here already become JsonqlError??? // rdebug('in the catch', err) handleError(deliverFn, resolverName, err) }) - } + ) return nspHandlerFn } -module.exports = { handleNspResolver } +module.exports = { handleNspResolvers } diff --git a/packages/ws-server-core/src/resolver/index.js b/packages/ws-server-core/src/resolver/index.js index 78df5f6a..8481ed40 100644 --- a/packages/ws-server-core/src/resolver/index.js +++ b/packages/ws-server-core/src/resolver/index.js @@ -1,13 +1,15 @@ // all these methods were in the share folder before // now all group under the resolver because they are all related to resolver - const { validateInput, deliverMsg, handleError, deliverIntercomMsg } = require('./resolver-methods') -const { resolveSocketMethod } = require('./resolver-methods') +const { + resolveSocketMethod +} = require('./resolve-socket-method') + module.exports = { validateInput, diff --git a/packages/ws-server-core/src/resolver/resolve-socket-method.js b/packages/ws-server-core/src/resolver/resolve-socket-method.js index 54c735e0..9bd92b04 100644 --- a/packages/ws-server-core/src/resolver/resolve-socket-method.js +++ b/packages/ws-server-core/src/resolver/resolve-socket-method.js @@ -32,13 +32,14 @@ const resolveSocketMethod = function( const actionFn = getCompleteSocketResolver(resolverName, opts, key, store) const injectorFns = getInjectors() - const args = [ deliverFn, resolverName, ws, userdata, opts ] + const params = [ deliverFn, resolverName, ws, userdata, opts ] - return Promise.resolve(actionFn(injectorFns, args)) + return Promise.resolve(actionFn(injectorFns, params)) .then(resolver => { try { return Reflect.apply(resolver, null, args) } catch(err) { + debug('Error happen here in side the resolveSocketMethod', err) // it's not nice, but we catch error here then we won't affect // other error like validation error might get throw earlier in the process throw new JsonqlResolverAppError(resolverName, err) diff --git a/packages/ws-server/src/modules.js b/packages/ws-server/src/modules.js index 598f7a0b..7bb40ce3 100644 --- a/packages/ws-server/src/modules.js +++ b/packages/ws-server/src/modules.js @@ -19,8 +19,9 @@ const { SOCKET_STATE_KEY, getSocketHandler -} = require('jsonql-ws-server-core') -// require('../../ws-server-core') +} = require('../../ws-server-core') +// require('jsonql-ws-server-core') + module.exports = { WebSocket, -- Gitee From f62cd3a7912468c2534440795fe2a763679a537a Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 25 Mar 2020 13:46:09 +0800 Subject: [PATCH 6/9] Fix all the old contract paths --- packages/resolver/src/search-resolvers.js | 2 +- packages/ws-server/package.json | 2 +- packages/ws-server/tests/basic.test.js | 23 +++++++++++++++++-- .../fixtures/contract/auth/contract.json | 16 ++++++------- .../tests/fixtures/contract/contract.json | 8 +++---- .../tests/fixtures/contract/es6/contract.json | 16 ++++++------- .../fixtures/contract/send/contract.json | 10 ++++---- .../public/available-to-everyone/index.js | 2 +- 8 files changed, 49 insertions(+), 30 deletions(-) diff --git a/packages/resolver/src/search-resolvers.js b/packages/resolver/src/search-resolvers.js index 5b9857a2..a92f1275 100644 --- a/packages/resolver/src/search-resolvers.js +++ b/packages/resolver/src/search-resolvers.js @@ -79,7 +79,7 @@ function getFnBySourceType(pathToResolver, sourceType) { function searchResolvers(name, type, opts, contract) { try { const json = typeof contract === 'string' ? JSON.parse(contract) : contract - let pathToResolver; + let pathToResolver pathToResolver = findFromContract(type, name, json) if (pathToResolver !== false) { return pathToResolver diff --git a/packages/ws-server/package.json b/packages/ws-server/package.json index f1582320..31634758 100755 --- a/packages/ws-server/package.json +++ b/packages/ws-server/package.json @@ -13,7 +13,7 @@ "prepare": "npm run test", "test:init": "DEBUG=jsonql-ws-* ava ./tests/init.test.js", "test:send": "DEBUG=jsonql-ws-* ava ./tests/send.test.js", - "test:basic": "DEBUG=jsonql-ws-server* ava ./tests/basic.test.js", + "test:basic": "DEBUG=jsonql-* ava ./tests/basic.test.js", "test:ws": "DEBUG=jsonql-ws-server* ava ./tests/ws-connect.test.js", "test:error": "DEBUG=jsonql-* ava ./tests/ws-connect-error.test.js", "test:es6": "DEBUG=jsonql-ws-server* ava ./tests/ws-connect-es6.test.js", diff --git a/packages/ws-server/tests/basic.test.js b/packages/ws-server/tests/basic.test.js index eda0cdbe..f584cf35 100644 --- a/packages/ws-server/tests/basic.test.js +++ b/packages/ws-server/tests/basic.test.js @@ -4,7 +4,7 @@ const { join } = require('path') const fsx = require('fs-extra') const colors = require('colors/safe') // this will get the umd version of the client module -const { JSONQL_PATH } = require('jsonql-constants') +const { JSONQL_PATH, SOCKET_NAME } = require('jsonql-constants') // const { decodeToken } = require('jsonql-jwt') const { basicClient } = require('../client') @@ -13,7 +13,7 @@ const serverSetup = require('./fixtures/server') const createToken = require('./fixtures/token') const createPayload = require('./fixtures/create-payload') -const debug = require('debug')('jsonql-ws-server:test:jwt-auth') +const debug = require('debug')('jsonql-ws-server:test:basic') const contractDir = join(__dirname, 'fixtures', 'contract', 'auth') const contract = fsx.readJsonSync(join(contractDir, 'contract.json')) @@ -24,6 +24,9 @@ const port = 3003 const baseUrl = `ws://localhost:${port}/${JSONQL_PATH}/` const { rainbow } = colors +const { findFromContract } = require('jsonql-utils') + + test.before(async t => { const { app, io } = await serverSetup({ contract, @@ -50,6 +53,22 @@ test.after(t => { t.context.app.close() }) +test.only(`Got a weird error that everything is there but said could not find resolver`, t => { + const type = SOCKET_NAME + const name = 'availableToEveryone' + const result = findFromContract(type, name, contract) + + // debug(SOCKET_NAME, result, contract) + + debug('[1]', contract[type]) + debug('[2]', contract[type][name]) + debug('[3]', contract[type][name].file) + + debug('[4]', fsx.existsSync(contract[type][name].file)) + + t.truthy(result) + +}) test.cb('It should able to connect to public namespace without a token', t => { // connect to the private channel diff --git a/packages/ws-server/tests/fixtures/contract/auth/contract.json b/packages/ws-server/tests/fixtures/contract/auth/contract.json index 6f283cfd..e8d36800 100644 --- a/packages/ws-server/tests/fixtures/contract/auth/contract.json +++ b/packages/ws-server/tests/fixtures/contract/auth/contract.json @@ -3,7 +3,7 @@ "mutation": {}, "auth": { "login": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/auth/login.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/auth/login.js", "description": "create a login method for testing", "params": [ { @@ -24,7 +24,7 @@ ] }, "logout": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/auth/logout.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/auth/logout.js", "description": "testing the logout method call", "params": [], "returns": [ @@ -41,7 +41,7 @@ "socket": { "causeError": { "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", "description": false, "params": [ { @@ -63,7 +63,7 @@ }, "chatroom": { "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", "description": false, "params": [ { @@ -92,7 +92,7 @@ }, "delayFn": { "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", "description": false, "params": [ { @@ -114,7 +114,7 @@ }, "secretChatroom": { "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/private/secret-chatroom.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/private/secret-chatroom.js", "description": false, "params": [ { @@ -144,7 +144,7 @@ "availableToEveryone": { "namespace": "jsonql/public", "public": true, - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js", "description": "There is no parameter require for this call", "params": [], "returns": [ @@ -158,7 +158,7 @@ }, "wsHandler": { "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", "description": "method just for testing the ws", "params": [ { diff --git a/packages/ws-server/tests/fixtures/contract/contract.json b/packages/ws-server/tests/fixtures/contract/contract.json index dd3a5ef6..6116dcf8 100644 --- a/packages/ws-server/tests/fixtures/contract/contract.json +++ b/packages/ws-server/tests/fixtures/contract/contract.json @@ -5,7 +5,7 @@ "timestamp": 1559136905329, "socket": { "causeError": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", "event": "cause-error", "description": false, "params": [ @@ -27,7 +27,7 @@ ] }, "chatroom": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", "event": "chatroom", "description": false, "params": [ @@ -56,7 +56,7 @@ ] }, "delayFn": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", "event": "delay-fn", "description": false, "params": [ @@ -78,7 +78,7 @@ "returns": false }, "wsHandler": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", "event": "ws-handler", "description": "method just for testing the ws", "params": [ diff --git a/packages/ws-server/tests/fixtures/contract/es6/contract.json b/packages/ws-server/tests/fixtures/contract/es6/contract.json index e2a682d2..105ad517 100644 --- a/packages/ws-server/tests/fixtures/contract/es6/contract.json +++ b/packages/ws-server/tests/fixtures/contract/es6/contract.json @@ -1,7 +1,7 @@ { "query": { "getSomething": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/query/get-something.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/query/get-something.js", "description": false, "params": [], "returns": [ @@ -16,7 +16,7 @@ }, "mutation": { "saveSomething": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/mutation/save-something.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/mutation/save-something.js", "description": false, "params": [ { @@ -38,7 +38,7 @@ }, "auth": { "login": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/auth/login.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/auth/login.js", "description": "create a login method for testing", "params": [ { @@ -59,7 +59,7 @@ ] }, "logout": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/auth/logout.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/auth/logout.js", "description": "testing the logout method call", "params": [], "returns": [ @@ -76,7 +76,7 @@ "sourceType": "module", "socket": { "causeError": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/cause-error.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/socket/cause-error.js", "description": false, "params": [ { @@ -97,7 +97,7 @@ ] }, "chatroom": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/chatroom.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/socket/chatroom.js", "description": false, "params": [ { @@ -125,7 +125,7 @@ ] }, "delayFn": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/delay-fn.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/socket/delay-fn.js", "description": false, "params": [ { @@ -146,7 +146,7 @@ "returns": false }, "wsHandler": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/ws-handler.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/es6resolvers/socket/ws-handler.js", "description": "method just for testing the ws", "params": [ { diff --git a/packages/ws-server/tests/fixtures/contract/send/contract.json b/packages/ws-server/tests/fixtures/contract/send/contract.json index 994054ed..8eebbab5 100644 --- a/packages/ws-server/tests/fixtures/contract/send/contract.json +++ b/packages/ws-server/tests/fixtures/contract/send/contract.json @@ -5,7 +5,7 @@ "timestamp": 1559136905329, "socket": { "causeError": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", "event": "cause-error", "description": false, "params": [ @@ -27,7 +27,7 @@ ] }, "chatroom": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", "event": "chatroom", "description": false, "params": [ @@ -56,7 +56,7 @@ ] }, "delayFn": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", "event": "delay-fn", "description": false, "params": [ @@ -78,7 +78,7 @@ "returns": false }, "testSend": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/test-send.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/test-send.js", "event": "test-send", "description": false, "params": [ @@ -107,7 +107,7 @@ ] }, "wsHandler": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", + "file": "/home/joel/projects/open-source/jsonql/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", "event": "ws-handler", "description": "method just for testing the ws", "params": [ diff --git a/packages/ws-server/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js b/packages/ws-server/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js index 16b326f9..fa4e5e55 100644 --- a/packages/ws-server/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js +++ b/packages/ws-server/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js @@ -5,5 +5,5 @@ * @return {string} a message */ module.exports = function availableToEveryone() { - return 'You get a public message'; + return 'You get a public message' } -- Gitee From 1d7a796095ed00238329811aa4a962c21def6694 Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 25 Mar 2020 14:06:26 +0800 Subject: [PATCH 7/9] Fix all the integration problem with the new getCombineSocketResolver --- .../src/resolver/get-injectors.js | 9 +++++---- packages/ws-server/tests/basic.test.js | 19 ------------------- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/packages/ws-server-core/src/resolver/get-injectors.js b/packages/ws-server-core/src/resolver/get-injectors.js index 09c8c97c..7ba3fda6 100644 --- a/packages/ws-server-core/src/resolver/get-injectors.js +++ b/packages/ws-server-core/src/resolver/get-injectors.js @@ -46,7 +46,7 @@ const injectUserdata = (fn, deliverFn, resolverName, ws, userdata, opts) => [ ] const injectSendFn = (fn, deliverFn, resolverName, ws, userdata, opts) => [ - setupSendMethod(deliverFn, resolver, resolverName, opts), + setupSendMethod(deliverFn, fn, resolverName, opts), deliverFn, resolverName, ws, @@ -54,8 +54,8 @@ const injectSendFn = (fn, deliverFn, resolverName, ws, userdata, opts) => [ opts ] -const injectOnFn = (deliverFn, resolverName, ws, userdata, opts) => [ - setupOnMethod(deliverFn, resolver, resolverName, opts), +const injectOnFn = (fn, deliverFn, resolverName, ws, userdata, opts) => [ + setupOnMethod(deliverFn, fn, resolverName, opts), deliverFn, resolverName, ws, @@ -65,6 +65,7 @@ const injectOnFn = (deliverFn, resolverName, ws, userdata, opts) => [ /** * This is the last in the chain, and we just return the resolver itself + * @param {function} resolver * @param {*} deliverFn * @param {*} resolverName * @param {*} ws @@ -72,7 +73,7 @@ const injectOnFn = (deliverFn, resolverName, ws, userdata, opts) => [ * @param {*} opts * @return {function} resolver with all the props added */ -const injectClient = (deliverFn, resolverName, ws, userdata, opts) => { +const injectClient = (resolver, deliverFn, resolverName, ws, userdata, opts) => { if (opts[INIT_CLIENT_PROP_KEY] && opts[INIT_CLIENT_PROP_KEY].then) { debug(`using INIT_CLIENT_PROP_KEY to add clients to the resolver`) return opts[INIT_CLIENT_PROP_KEY] diff --git a/packages/ws-server/tests/basic.test.js b/packages/ws-server/tests/basic.test.js index f584cf35..49490e94 100644 --- a/packages/ws-server/tests/basic.test.js +++ b/packages/ws-server/tests/basic.test.js @@ -24,8 +24,6 @@ const port = 3003 const baseUrl = `ws://localhost:${port}/${JSONQL_PATH}/` const { rainbow } = colors -const { findFromContract } = require('jsonql-utils') - test.before(async t => { const { app, io } = await serverSetup({ @@ -53,23 +51,6 @@ test.after(t => { t.context.app.close() }) -test.only(`Got a weird error that everything is there but said could not find resolver`, t => { - const type = SOCKET_NAME - const name = 'availableToEveryone' - const result = findFromContract(type, name, contract) - - // debug(SOCKET_NAME, result, contract) - - debug('[1]', contract[type]) - debug('[2]', contract[type][name]) - debug('[3]', contract[type][name].file) - - debug('[4]', fsx.existsSync(contract[type][name].file)) - - t.truthy(result) - -}) - test.cb('It should able to connect to public namespace without a token', t => { // connect to the private channel t.plan(2) -- Gitee From c2eaa2016a473a0ea0281240bf68565d6f2445d1 Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 25 Mar 2020 16:01:19 +0800 Subject: [PATCH 8/9] The message was deliver twice somewhere --- packages/utils/package.json | 2 +- packages/utils/src/socket.js | 26 ++++++++++++++++--- packages/ws-server-core/src/share/helpers.js | 4 ++- .../ws-server/tests/ws-connect-error.test.js | 20 +++++++------- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/packages/utils/package.json b/packages/utils/package.json index 80a60fc9..bdf95e9f 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-utils", - "version": "1.2.5", + "version": "1.2.6", "description": "This is a jsonql dependency module, not for generate use.", "main": "main.js", "module": "index.js", diff --git a/packages/utils/src/socket.js b/packages/utils/src/socket.js index 76195118..21072dd5 100644 --- a/packages/utils/src/socket.js +++ b/packages/utils/src/socket.js @@ -51,6 +51,24 @@ export const createSendPayload = (resolverName, args, str = false) => { }) } +/** + * We need to find the TS field and take it out from the previous payload + * otherwise it will keep on rolling into the structure which is not what we wanted + * @param {object} data for inspection + * @return {object} { data: for the data to use, TS if there is any } + */ +const getTsFieldFromData = (data) => { + let obj = {[TIMESTAMP_PARAM_NAME]: [], data: {}} + if (data[TIMESTAMP_PARAM_NAME]) { + const ts = data[TIMESTAMP_PARAM_NAME] + obj[TIMESTAMP_PARAM_NAME] = Array.isArray(ts) ? ts : [ts] + delete data[TIMESTAMP_PARAM_NAME] + } + obj.data = data + + return obj +} + /** * The ws doesn't have a acknowledge callback like socket.io @@ -62,12 +80,14 @@ export const createSendPayload = (resolverName, args, str = false) => { * @return {string} stringify json */ export const createWsReply = (type, resolverName, data, ts = []) => { - ts.push(timestamp()) + const obj = getTsFieldFromData(toJson(data)) + ts = ts.concat(obj[TIMESTAMP_PARAM_NAME]) + // ts.push(timestamp()) return JSON.stringify({ data: { [WS_REPLY_TYPE]: type, [WS_EVT_NAME]: resolverName, - [WS_DATA_NAME]: toJson(data) + [WS_DATA_NAME]: obj.data }, [TIMESTAMP_PARAM_NAME]: ts }) @@ -108,7 +128,7 @@ export const extractWsPayload = (payload, cb = nil) => { let _data if ((_data = isWsReply(json)) !== false) { // note the ts property is on its own - cb(TIMESTAMP_PARAM_NAME, json[TIMESTAMP_PARAM_NAME]) + cb('_data', _data) return { data: toJson(_data[WS_DATA_NAME]), diff --git a/packages/ws-server-core/src/share/helpers.js b/packages/ws-server-core/src/share/helpers.js index d4e1f079..de61d50c 100644 --- a/packages/ws-server-core/src/share/helpers.js +++ b/packages/ws-server-core/src/share/helpers.js @@ -16,9 +16,11 @@ const { objHasProp, // port over to the jsonql-utils getResolverFromPayload, - createWsReply, extractWsPayload } = require('jsonql-utils') +const { createWsReply } = require('../../../utils/src/socket') + + // create debug const debug = require('debug') const colors = require('colors/safe') diff --git a/packages/ws-server/tests/ws-connect-error.test.js b/packages/ws-server/tests/ws-connect-error.test.js index a6e4ff1a..40a5e7be 100644 --- a/packages/ws-server/tests/ws-connect-error.test.js +++ b/packages/ws-server/tests/ws-connect-error.test.js @@ -9,6 +9,9 @@ const { basicClient } = require('../client') const wsServer = require('./fixtures/server') const { JSONQL_PATH, ERROR_KEY } = require('jsonql-constants') const debug = require('debug')('jsonql-ws-server:test:ws') +const colors = require('colors/safe') + +const localDebug = (str, ...args) => Reflect.apply(debug, null, [colors.black.bgBrightGreen(str), ...args]) const contractDir = join(__dirname, 'fixtures', 'contract') const contractFile = join(contractDir, 'contract.json') @@ -49,20 +52,19 @@ test.cb(`It should able to extract the error object when error throw from the se client.on('message', msg => { let json try { - debug('on message received: %O', msg) + localDebug('on message received:', msg) - json = extractWsPayload(msg, (...args) => { - debug(`ERROR`, args) - }) + json = extractWsPayload(msg) // @TODO the cb become a distraction and not helping - debug('typeof json', typeof json) + localDebug('typeof json', typeof json) let { data } = json - debug('json decoded from msg: %O', data) - // data.error = typeof data.error === 'string' ? JSON.parse(data.error) : data.error; - t.is(data.error.className, 'JsonqlResolverAppError') + + localDebug('json decoded from msg:', data) t.truthy(data.error, 'causeError should have error field') + // data.error = typeof data.error === 'string' ? JSON.parse(data.error) : data.error; + t.is(data.error.className, 'JsonqlResolverAppError') t.is(json.type, ERROR_KEY) // The same problem happens again @@ -73,7 +75,7 @@ test.cb(`It should able to extract the error object when error throw from the se t.end() } catch(e) { - debug('error happens in the catch phrase and end the test', e) + localDebug('error happens in the catch phrase and end the test', e) t.end() } }) -- Gitee From 0708f670f34910c91bc23e28f9d693260489979e Mon Sep 17 00:00:00 2001 From: joelchu Date: Wed, 25 Mar 2020 16:04:24 +0800 Subject: [PATCH 9/9] jsonql-utils 1.2.6 --- packages/utils/browser.js | 2 +- packages/utils/main.js | 2 +- packages/utils/main.js.map | 2 +- packages/utils/package.json | 6 +++--- packages/utils/src/socket.js | 4 +++- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/utils/browser.js b/packages/utils/browser.js index a2433804..bb9e5ca2 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")(),a=u.Symbol,i=Object.prototype,c=i.hasOwnProperty,f=i.toString,s=a?a.toStringTag:void 0;var l=Object.prototype.toString;var p=a?a.toStringTag:void 0;function v(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":p&&p 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 d,y,h=(d=Object.getPrototypeOf,y=Object,function(t){return d(y(t))});function g(t){return null!=t&&"object"==typeof t}var _=Function.prototype,b=Object.prototype,j=_.toString,m=b.hasOwnProperty,O=j.call(Object);function w(t){if(!g(t)||"[object Object]"!=v(t))return!1;var r=h(t);if(null===r)return!0;var e=m.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&j.call(e)==O}var S=a?a.prototype:void 0,P=S?S.toString:void 0;function N(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--&&E(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var I=function(t,r){return!!t.filter((function(t){return t===r})).length},Q=function(t){return r(t)?t:[t]},L=function(t,r){void 0===r&&(r=!0);try{return JSON.parse(t)}catch(e){if(r)return t;throw new Error(e)}},V=function(t,r){try{var e=Object.keys(t);return I(e,r)}catch(t){return!1}},W=function(t){return L("string"==typeof t?t:JSON.stringify(t))},H=function(){return!1};function K(t,r){return t===r||t!=t&&r!=r}function Z(t,r){for(var e=t.length;e--;)if(K(t[e][0],r))return e;return-1}var X=Array.prototype.splice;function Y(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},Y.prototype.set=function(t,r){var e=this.__data__,n=Z(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};function rt(t){if(!tt(t))return!1;var r=v(t);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}var et,nt=u["__core-js_shared__"],ot=(et=/[^.]+$/.exec(nt&&nt.keys&&nt.keys.IE_PROTO||""))?"Symbol(src)_1."+et:"";var ut=Function.prototype.toString;var at=/^\[object .+?Constructor\]$/,it=Function.prototype,ct=Object.prototype,ft=it.toString,st=ct.hasOwnProperty,lt=RegExp("^"+ft.call(st).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function pt(t){return!(!tt(t)||function(t){return!!ot&&ot in t}(t))&&(rt(t)?lt:at).test(function(t){if(null!=t){try{return ut.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function vt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return pt(e)?e:void 0}var dt=vt(u,"Map"),yt=vt(Object,"create");var ht=Object.prototype.hasOwnProperty;var gt=Object.prototype.hasOwnProperty;function _t(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=9007199254740991}function $t(t){return null!=t&&Gt(t.length)&&!rt(t)}var It="object"==typeof t&&t&&!t.nodeType&&t,Qt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Lt=Qt&&Qt.exports===It?u.Buffer:void 0,Vt=(Lt?Lt.isBuffer:void 0)||function(){return!1},Wt={};Wt["[object Float32Array]"]=Wt["[object Float64Array]"]=Wt["[object Int8Array]"]=Wt["[object Int16Array]"]=Wt["[object Int32Array]"]=Wt["[object Uint8Array]"]=Wt["[object Uint8ClampedArray]"]=Wt["[object Uint16Array]"]=Wt["[object Uint32Array]"]=!0,Wt["[object Arguments]"]=Wt["[object Array]"]=Wt["[object ArrayBuffer]"]=Wt["[object Boolean]"]=Wt["[object DataView]"]=Wt["[object Date]"]=Wt["[object Error]"]=Wt["[object Function]"]=Wt["[object Map]"]=Wt["[object Number]"]=Wt["[object Object]"]=Wt["[object RegExp]"]=Wt["[object Set]"]=Wt["[object String]"]=Wt["[object WeakMap]"]=!1;var Ht="object"==typeof t&&t&&!t.nodeType&&t,Kt=Ht&&"object"==typeof module&&module&&!module.nodeType&&module,Zt=Kt&&Kt.exports===Ht&&n.process,Xt=function(){try{var t=Kt&&Kt.require&&Kt.require("util").types;return t||Zt&&Zt.binding&&Zt.binding("util")}catch(t){}}(),Yt=Xt&&Xt.isTypedArray,tr=Yt?function(t){return function(r){return t(r)}}(Yt):function(t){return g(t)&&Gt(t.length)&&!!Wt[v(t)]};function rr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var er=Object.prototype.hasOwnProperty;function nr(t,r,e){var n=t[r];er.call(t,r)&&K(n,e)&&(void 0!==e||r in t)||wt(t,r,e)}var or=/^(?:0|[1-9]\d*)$/;function ur(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&or.test(t))&&t>-1&&t%1==0&&t0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(gr);function jr(t,r){return br(function(t,r,e){return r=hr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=hr(n.length-r,0),a=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=mr.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!tt(e))return!1;var n=typeof r;return!!("number"==n?$t(e)&&ur(r,e.length):"string"==n&&r in e)&&K(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,Q(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]):Or(t,e)}))}))}),Promise.resolve(!1===r?[]:w(r)?r:{}))},t.createAcknowledgeMsg=function(t,r,e){return void 0===e&&(e=[]),Wr("emit_acknowledge",t,r,e)},t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=Ur,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(Ur(t,r,e,n))},t.createQuery=qr,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(qr(t,r,e))},t.createReplyMsg=function(t,r,e){return void 0===e&&(e=[]),Wr("emit_reply",t,r,e)},t.createSendPayload=function(t,e,n){if(void 0===n&&(n=!1),kr(t)&&r(e)){var o=Cr(t,Jr(e),{type:"emit_send"});return n?JSON.stringify(o):o}throw new Nr("utils:socket:createSendMsg",{resolverName:t,args:e,message:"expect resolverName to be string and args to be array!"})},t.createWsReply=Wr,t.dasherize=function(t){return $(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case"query":return t.args;case"mutation":return[t.payload,t.condition];default:throw new Ar("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Pr(e,r);return n}catch(t){throw new Pr(e,t)}},t.extractSocketPart=Tr,t.extractWsPayload=function(t,r){void 0===r&&(r=H);try{var e,n=W(t);if(!1!==(e=Hr(n)))return r("TS",n.TS),{data:W(e.__data__),resolverName:e.__event__,type:e.__reply__};throw new Ar("payload can not decoded",t)}catch(t){return r("error",t)}},t.formatPayload=Jr,t.freeze=function(t){return Object.freeze(t)},t.getCallMethod=function(t){switch(!0){case t===Sr[0]:return"query";case t===Sr[1]:return"mutation";default:return!1}},t.getConfigValue=function(t,r){return r&&w(r)&&t in r?r[t]:void 0},t.getLogger=function(t){var r=[t];return function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.JSONQL_DEBUG&&Reflect.apply(console.info,console,r.concat(t))}catch(t){}}},t.getMutationFromArgs=Gr,t.getMutationFromPayload=function(t){var r=Dr(t,Gr);if(!1!==r)return r;throw new Nr("[getMutationArgs] Payload is malformed!",t)},t.getNamespace=Qr,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getNspInfoByConfig=function(t){var r=t.contract,e=t.enableAuth,n=Qr(t),o=e?Ir(r):function(t,r){var e,n={};for(var o in t){var u=t[o];n[o]=u}return{size:1,nspGroup:(e={},e[r]=n,e),publicNamespace:r}}(r.socket,n[0]);return Object.assign(o,{namespaces:n})},t.getPrivateNamespace=function(t){return t.length>1&&t[0]},t.getQueryFromArgs=Br,t.getQueryFromPayload=function(t){var r=Dr(t,Br);if(!1!==r)return r;throw new Nr("[getQueryArgs] Payload is malformed!",t)},t.getRegex=function(t){switch(!0){case!0===Lr(t):return t;case!0===kr(t):return new RegExp(t);default:return!1}},t.getResolverFromPayload=Mr,t.groupByNamespace=Ir,t.inArray=I,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=wr(t,r);return!1===n&&void 0!==o||Object.defineProperty(t,r,{value:e,writable:n}),t},t.isContract=function(t){return!!function(t){return w(t)&&(V(t,"query")||V(t,"mutation")||V(t,"socket"))}(t)&&t},t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type! Got "+typeof t)},t.isJsonqlErrorObj=$r,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==$(t)},t.isObjectHasKey=V,t.isRegExp=Lr,t.isWsReply=Hr,t.logger=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.DEBUG&&Reflect.apply(console.log,console,t)}catch(t){}},t.nil=H,t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.objHasProp=wr,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=$r(t)||u,o.TS=[Er()],o))},t.packResult=function(t,e){void 0===e&&(e=!1);var n={};return n.data=t,e&&r(e)&&(e.push(Er()),n.TS=e),JSON.stringify(n)},t.parseJson=L,t.resultHandler=function(t){return V(t,"data")&&!V(t,"error")?t.data:t},t.timestamp=Er,t.toArray=Q,t.toJson=W,t.toPayload=Fr,t.urlParams=xr,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")(),a=u.Symbol,i=Object.prototype,c=i.hasOwnProperty,f=i.toString,s=a?a.toStringTag:void 0;var l=Object.prototype.toString;var p=a?a.toStringTag:void 0;function v(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":p&&p 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 d,y,h=(d=Object.getPrototypeOf,y=Object,function(t){return d(y(t))});function g(t){return null!=t&&"object"==typeof t}var _=Function.prototype,b=Object.prototype,j=_.toString,m=b.hasOwnProperty,O=j.call(Object);function w(t){if(!g(t)||"[object Object]"!=v(t))return!1;var r=h(t);if(null===r)return!0;var e=m.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&j.call(e)==O}var S=a?a.prototype:void 0,P=S?S.toString:void 0;function N(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--&&E(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var I=function(t,r){return!!t.filter((function(t){return t===r})).length},Q=function(t){return r(t)?t:[t]},L=function(t,r){void 0===r&&(r=!0);try{return JSON.parse(t)}catch(e){if(r)return t;throw new Error(e)}},V=function(t,r){try{var e=Object.keys(t);return I(e,r)}catch(t){return!1}},W=function(t){return L("string"==typeof t?t:JSON.stringify(t))},H=function(){return!1};function K(t,r){return t===r||t!=t&&r!=r}function Z(t,r){for(var e=t.length;e--;)if(K(t[e][0],r))return e;return-1}var X=Array.prototype.splice;function Y(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},Y.prototype.set=function(t,r){var e=this.__data__,n=Z(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};function rt(t){if(!tt(t))return!1;var r=v(t);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}var et,nt=u["__core-js_shared__"],ot=(et=/[^.]+$/.exec(nt&&nt.keys&&nt.keys.IE_PROTO||""))?"Symbol(src)_1."+et:"";var ut=Function.prototype.toString;var at=/^\[object .+?Constructor\]$/,it=Function.prototype,ct=Object.prototype,ft=it.toString,st=ct.hasOwnProperty,lt=RegExp("^"+ft.call(st).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function pt(t){return!(!tt(t)||function(t){return!!ot&&ot in t}(t))&&(rt(t)?lt:at).test(function(t){if(null!=t){try{return ut.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function vt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return pt(e)?e:void 0}var dt=vt(u,"Map"),yt=vt(Object,"create");var ht=Object.prototype.hasOwnProperty;var gt=Object.prototype.hasOwnProperty;function _t(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=9007199254740991}function $t(t){return null!=t&&Gt(t.length)&&!rt(t)}var It="object"==typeof t&&t&&!t.nodeType&&t,Qt=It&&"object"==typeof module&&module&&!module.nodeType&&module,Lt=Qt&&Qt.exports===It?u.Buffer:void 0,Vt=(Lt?Lt.isBuffer:void 0)||function(){return!1},Wt={};Wt["[object Float32Array]"]=Wt["[object Float64Array]"]=Wt["[object Int8Array]"]=Wt["[object Int16Array]"]=Wt["[object Int32Array]"]=Wt["[object Uint8Array]"]=Wt["[object Uint8ClampedArray]"]=Wt["[object Uint16Array]"]=Wt["[object Uint32Array]"]=!0,Wt["[object Arguments]"]=Wt["[object Array]"]=Wt["[object ArrayBuffer]"]=Wt["[object Boolean]"]=Wt["[object DataView]"]=Wt["[object Date]"]=Wt["[object Error]"]=Wt["[object Function]"]=Wt["[object Map]"]=Wt["[object Number]"]=Wt["[object Object]"]=Wt["[object RegExp]"]=Wt["[object Set]"]=Wt["[object String]"]=Wt["[object WeakMap]"]=!1;var Ht="object"==typeof t&&t&&!t.nodeType&&t,Kt=Ht&&"object"==typeof module&&module&&!module.nodeType&&module,Zt=Kt&&Kt.exports===Ht&&n.process,Xt=function(){try{var t=Kt&&Kt.require&&Kt.require("util").types;return t||Zt&&Zt.binding&&Zt.binding("util")}catch(t){}}(),Yt=Xt&&Xt.isTypedArray,tr=Yt?function(t){return function(r){return t(r)}}(Yt):function(t){return g(t)&&Gt(t.length)&&!!Wt[v(t)]};function rr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var er=Object.prototype.hasOwnProperty;function nr(t,r,e){var n=t[r];er.call(t,r)&&K(n,e)&&(void 0!==e||r in t)||wt(t,r,e)}var or=/^(?:0|[1-9]\d*)$/;function ur(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&or.test(t))&&t>-1&&t%1==0&&t0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(gr);function jr(t,r){return br(function(t,r,e){return r=hr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=hr(n.length-r,0),a=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=mr.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!tt(e))return!1;var n=typeof r;return!!("number"==n?$t(e)&&ur(r,e.length):"string"==n&&r in e)&&K(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,Q(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]):Or(t,e)}))}))}),Promise.resolve(!1===r?[]:w(r)?r:{}))},t.createAcknowledgeMsg=function(t,r,e){return void 0===e&&(e=[]),Wr("emit_acknowledge",t,r,e)},t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=Ur,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(Ur(t,r,e,n))},t.createQuery=qr,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(qr(t,r,e))},t.createReplyMsg=function(t,r,e){return void 0===e&&(e=[]),Wr("emit_reply",t,r,e)},t.createSendPayload=function(t,e,n){if(void 0===n&&(n=!1),kr(t)&&r(e)){var o=Cr(t,Jr(e),{type:"emit_send"});return n?JSON.stringify(o):o}throw new Nr("utils:socket:createSendMsg",{resolverName:t,args:e,message:"expect resolverName to be string and args to be array!"})},t.createWsReply=Wr,t.dasherize=function(t){return $(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case"query":return t.args;case"mutation":return[t.payload,t.condition];default:throw new Ar("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Pr(e,r);return n}catch(t){throw new Pr(e,t)}},t.extractSocketPart=Tr,t.extractWsPayload=function(t,r){void 0===r&&(r=H);try{var e,n=W(t);if(!1!==(e=Hr(n)))return r("_data",e),{data:W(e.__data__),resolverName:e.__event__,type:e.__reply__};throw new Ar("payload can not decoded",t)}catch(t){return r("error",t)}},t.formatPayload=Jr,t.freeze=function(t){return Object.freeze(t)},t.getCallMethod=function(t){switch(!0){case t===Sr[0]:return"query";case t===Sr[1]:return"mutation";default:return!1}},t.getConfigValue=function(t,r){return r&&w(r)&&t in r?r[t]:void 0},t.getLogger=function(t){var r=[t];return function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.JSONQL_DEBUG&&Reflect.apply(console.info,console,r.concat(t))}catch(t){}}},t.getMutationFromArgs=Gr,t.getMutationFromPayload=function(t){var r=Dr(t,Gr);if(!1!==r)return r;throw new Nr("[getMutationArgs] Payload is malformed!",t)},t.getNamespace=Qr,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getNspInfoByConfig=function(t){var r=t.contract,e=t.enableAuth,n=Qr(t),o=e?Ir(r):function(t,r){var e,n={};for(var o in t){var u=t[o];n[o]=u}return{size:1,nspGroup:(e={},e[r]=n,e),publicNamespace:r}}(r.socket,n[0]);return Object.assign(o,{namespaces:n})},t.getPrivateNamespace=function(t){return t.length>1&&t[0]},t.getQueryFromArgs=Br,t.getQueryFromPayload=function(t){var r=Dr(t,Br);if(!1!==r)return r;throw new Nr("[getQueryArgs] Payload is malformed!",t)},t.getRegex=function(t){switch(!0){case!0===Lr(t):return t;case!0===kr(t):return new RegExp(t);default:return!1}},t.getResolverFromPayload=Mr,t.groupByNamespace=Ir,t.inArray=I,t.injectToFn=function(t,r,e,n){void 0===n&&(n=!1);var o=wr(t,r);return!1===n&&void 0!==o||Object.defineProperty(t,r,{value:e,writable:n}),t},t.isContract=function(t){return!!function(t){return w(t)&&(V(t,"query")||V(t,"mutation")||V(t,"socket"))}(t)&&t},t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type! Got "+typeof t)},t.isJsonqlErrorObj=$r,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==$(t)},t.isObjectHasKey=V,t.isRegExp=Lr,t.isWsReply=Hr,t.logger=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.DEBUG&&Reflect.apply(console.log,console,t)}catch(t){}},t.nil=H,t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.objHasProp=wr,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=$r(t)||u,o.TS=[Er()],o))},t.packResult=function(t,e){void 0===e&&(e=!1);var n={};return n.data=t,e&&r(e)&&(e.push(Er()),n.TS=e),JSON.stringify(n)},t.parseJson=L,t.resultHandler=function(t){return V(t,"data")&&!V(t,"error")?t.data:t},t.timestamp=Er,t.toArray=Q,t.toJson=W,t.toPayload=Fr,t.urlParams=xr,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=browser.js.map diff --git a/packages/utils/main.js b/packages/utils/main.js index 5d5be413..ec5ee489 100644 --- a/packages/utils/main.js +++ b/packages/utils/main.js @@ -1,2 +1,2 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t,r=(t=require("fs"))&&"object"==typeof t&&"default"in t?t.default:t,e=require("path"),n=Array.isArray,o="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},i="object"==typeof o&&o&&o.Object===Object&&o,u="object"==typeof self&&self&&self.Object===Object&&self,a=i||u||Function("return this")(),s=a.Symbol,f=Object.prototype,c=f.hasOwnProperty,h=f.toString,p=s?s.toStringTag:void 0;var l=Object.prototype.toString;var g=s?s.toStringTag:void 0;function y(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":g&&g in Object(t)?function(t){var r=c.call(t,p),e=t[p];try{t[p]=void 0;var n=!0}catch(t){}var o=h.call(t);return n&&(r?t[p]=e:delete t[p]),o}(t):function(t){return l.call(t)}(t)}var v,d,_=(v=Object.getPrototypeOf,d=Object,function(t){return v(d(t))});function b(t){return null!=t&&"object"==typeof t}var w=Function.prototype,m=Object.prototype,A=w.toString,E=m.hasOwnProperty,x=A.call(Object);function j(t){if(!b(t)||"[object Object]"!=y(t))return!1;var r=_(t);if(null===r)return!0;var e=E.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&A.call(e)==x}var P=s?s.prototype:void 0,O=P?P.toString:void 0;function R(t){if("string"==typeof t)return t;if(n(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 i=Array(o);++n-1;);return e}(o,i),function(t,r){for(var e=t.length;e--&&U(r,t[e],0)>-1;);return e}(o,i)+1).join("")}var G=function(t,r){return!!t.filter((function(t){return t===r})).length},Q=function(t){return n(t)?t:[t]},V=function(t,r){void 0===r&&(r=!0);try{return JSON.parse(t)}catch(e){if(r)return t;throw new Error(e)}},H=function(t,r){try{var e=Object.keys(t);return G(e,r)}catch(t){return!1}},W=function(t){return V("string"==typeof t?t:JSON.stringify(t))},Z=function(){return!1};function K(t,r){return t===r||t!=t&&r!=r}function X(t,r){for(var e=t.length;e--;)if(K(t[e][0],r))return e;return-1}var tt=Array.prototype.splice;function rt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},rt.prototype.set=function(t,r){var e=this.__data__,n=X(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};function nt(t){if(!et(t))return!1;var r=y(t);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}var ot,it=a["__core-js_shared__"],ut=(ot=/[^.]+$/.exec(it&&it.keys&&it.keys.IE_PROTO||""))?"Symbol(src)_1."+ot:"";var at=Function.prototype.toString;var st=/^\[object .+?Constructor\]$/,ft=Function.prototype,ct=Object.prototype,ht=ft.toString,pt=ct.hasOwnProperty,lt=RegExp("^"+ht.call(pt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function gt(t){return!(!et(t)||function(t){return!!ut&&ut in t}(t))&&(nt(t)?lt:st).test(function(t){if(null!=t){try{return at.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function yt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return gt(e)?e:void 0}var vt=yt(a,"Map"),dt=yt(Object,"create");var _t=Object.prototype.hasOwnProperty;var bt=Object.prototype.hasOwnProperty;function wt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=9007199254740991}function $t(t){return null!=t&&Jt(t.length)&&!nt(t)}var Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qt=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Vt=Qt&&Qt.exports===Gt?a.Buffer:void 0,Ht=(Vt?Vt.isBuffer:void 0)||function(){return!1},Wt={};Wt["[object Float32Array]"]=Wt["[object Float64Array]"]=Wt["[object Int8Array]"]=Wt["[object Int16Array]"]=Wt["[object Int32Array]"]=Wt["[object Uint8Array]"]=Wt["[object Uint8ClampedArray]"]=Wt["[object Uint16Array]"]=Wt["[object Uint32Array]"]=!0,Wt["[object Arguments]"]=Wt["[object Array]"]=Wt["[object ArrayBuffer]"]=Wt["[object Boolean]"]=Wt["[object DataView]"]=Wt["[object Date]"]=Wt["[object Error]"]=Wt["[object Function]"]=Wt["[object Map]"]=Wt["[object Number]"]=Wt["[object Object]"]=Wt["[object RegExp]"]=Wt["[object Set]"]=Wt["[object String]"]=Wt["[object WeakMap]"]=!1;var Zt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Kt=Zt&&"object"==typeof module&&module&&!module.nodeType&&module,Xt=Kt&&Kt.exports===Zt&&i.process,tr=function(){try{var t=Kt&&Kt.require&&Kt.require("util").types;return t||Xt&&Xt.binding&&Xt.binding("util")}catch(t){}}(),rr=tr&&tr.isTypedArray,er=rr?function(t){return function(r){return t(r)}}(rr):function(t){return b(t)&&Jt(t.length)&&!!Wt[y(t)]};function nr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var or=Object.prototype.hasOwnProperty;function ir(t,r,e){var n=t[r];or.call(t,r)&&K(n,e)&&(void 0!==e||r in t)||jt(t,r,e)}var ur=/^(?:0|[1-9]\d*)$/;function ar(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&ur.test(t))&&t>-1&&t%1==0&&t0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(br);function Ar(t,r){return mr(function(t,r,e){return r=_r(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,i=_r(n.length-r,0),u=Array(i);++o1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=Er.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!et(e))return!1;var n=typeof r;return!!("number"==n?$t(e)&&ar(r,e.length):"string"==n&&r in e)&&K(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++e>18&63]+re[o>>12&63]+re[o>>6&63]+re[63&o]);return i.join("")}function ae(t){var r;oe||ie();for(var e=t.length,n=e%3,o="",i=[],u=0,a=e-n;ua?a:u+16383));return 1===n?(r=t[e-1],o+=re[r>>2],o+=re[r<<4&63],o+="=="):2===n&&(r=(t[e-2]<<8)+t[e-1],o+=re[r>>10],o+=re[r>>4&63],o+=re[r<<2&63],o+="="),i.push(o),i.join("")}function se(t,r,e,n,o){var i,u,a=8*o-n-1,s=(1<>1,c=-7,h=e?o-1:0,p=e?-1:1,l=t[r+h];for(h+=p,i=l&(1<<-c)-1,l>>=-c,c+=a;c>0;i=256*i+t[r+h],h+=p,c-=8);for(u=i&(1<<-c)-1,i>>=-c,c+=n;c>0;u=256*u+t[r+h],h+=p,c-=8);if(0===i)i=1-f;else{if(i===s)return u?NaN:1/0*(l?-1:1);u+=Math.pow(2,n),i-=f}return(l?-1:1)*u*Math.pow(2,i-n)}function fe(t,r,e,n,o,i){var u,a,s,f=8*i-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:i-1,g=n?1:-1,y=r<0||0===r&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(a=isNaN(r)?1:0,u=c):(u=Math.floor(Math.log(r)/Math.LN2),r*(s=Math.pow(2,-u))<1&&(u--,s*=2),(r+=u+h>=1?p/s:p*Math.pow(2,1-h))*s>=2&&(u++,s/=2),u+h>=c?(a=0,u=c):u+h>=1?(a=(r*s-1)*Math.pow(2,o),u+=h):(a=r*Math.pow(2,h-1)*Math.pow(2,o),u=0));o>=8;t[e+l]=255&a,l+=g,a/=256,o-=8);for(u=u<0;t[e+l]=255&u,l+=g,u/=256,f-=8);t[e+l-g]|=128*y}var ce={}.toString,he=Array.isArray||function(t){return"[object Array]"==ce.call(t)};function pe(){return ge.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function le(t,r){if(pe()=pe())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+pe().toString(16)+" bytes");return 0|t}function we(t){return!(null==t||!t._isBuffer)}function me(t,r){if(we(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return Qe(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return Ve(t).length;default:if(n)return Qe(t).length;r=(""+r).toLowerCase(),n=!0}}function Ae(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return Me(this,r,e);case"utf8":case"utf-8":return Ne(this,r,e);case"ascii":return Ie(this,r,e);case"latin1":case"binary":return Ce(this,r,e);case"base64":return Be(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ye(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function Ee(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function xe(t,r,e,n,o){if(0===t.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:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(o)return-1;e=t.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof r&&(r=ge.from(r,n)),we(r))return 0===r.length?-1:je(t,r,e,n,o);if("number"==typeof r)return r&=255,ge.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):je(t,[r],e,n,o);throw new TypeError("val must be string, number or Buffer")}function je(t,r,e,n,o){var i,u=1,a=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;u=2,a/=2,s/=2,e/=2}function f(t,r){return 1===u?t[r]:t.readUInt16BE(r*u)}if(o){var c=-1;for(i=e;ia&&(e=a-s),i=e;i>=0;i--){for(var h=!0,p=0;po&&(n=o):n=o;var i=r.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var u=0;u>8,o=e%256,i.push(o),i.push(n);return i}(r,t.length-e),t,e,n)}function Be(t,r,e){return 0===r&&e===t.length?ae(t):ae(t.slice(r,e))}function Ne(t,r,e){e=Math.min(t.length,e);for(var n=[],o=r;o239?4:f>223?3:f>191?2:1;if(o+h<=e)switch(h){case 1:f<128&&(c=f);break;case 2:128==(192&(i=t[o+1]))&&(s=(31&f)<<6|63&i)>127&&(c=s);break;case 3:i=t[o+1],u=t[o+2],128==(192&i)&&128==(192&u)&&(s=(15&f)<<12|(63&i)<<6|63&u)>2047&&(s<55296||s>57343)&&(c=s);break;case 4:i=t[o+1],u=t[o+2],a=t[o+3],128==(192&i)&&128==(192&u)&&128==(192&a)&&(s=(15&f)<<18|(63&i)<<12|(63&u)<<6|63&a)>65535&&s<1114112&&(c=s)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=h}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e="",n=0;for(;n0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),""},ge.prototype.compare=function(t,r,e,n,o){if(!we(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),r<0||e>t.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&r>=e)return 0;if(n>=o)return-1;if(r>=e)return 1;if(this===t)return 0;for(var i=(o>>>=0)-(n>>>=0),u=(e>>>=0)-(r>>>=0),a=Math.min(i,u),s=this.slice(n,o),f=t.slice(r,e),c=0;co)&&(e=o),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return Pe(this,t,r,e);case"utf8":case"utf-8":return Oe(this,t,r,e);case"ascii":return Re(this,t,r,e);case"latin1":case"binary":return Se(this,t,r,e);case"base64":return Te(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ue(this,t,r,e);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},ge.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Ie(t,r,e){var n="";e=Math.min(t.length,e);for(var o=r;on)&&(e=n);for(var o="",i=r;ie)throw new RangeError("Trying to access beyond buffer length")}function De(t,r,e,n,o,i){if(!we(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||rt.length)throw new RangeError("Index out of range")}function ze(t,r,e,n){r<0&&(r=65535+r+1);for(var o=0,i=Math.min(t.length-e,2);o>>8*(n?o:1-o)}function Le(t,r,e,n){r<0&&(r=4294967295+r+1);for(var o=0,i=Math.min(t.length-e,4);o>>8*(n?o:3-o)&255}function Fe(t,r,e,n,o,i){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function qe(t,r,e,n,o){return o||Fe(t,0,e,4),fe(t,r,e,n,23,4),e+4}function Je(t,r,e,n,o){return o||Fe(t,0,e,8),fe(t,r,e,n,52,8),e+8}ge.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r0&&(o*=256);)n+=this[t+--r]*o;return n},ge.prototype.readUInt8=function(t,r){return r||ke(t,1,this.length),this[t]},ge.prototype.readUInt16LE=function(t,r){return r||ke(t,2,this.length),this[t]|this[t+1]<<8},ge.prototype.readUInt16BE=function(t,r){return r||ke(t,2,this.length),this[t]<<8|this[t+1]},ge.prototype.readUInt32LE=function(t,r){return r||ke(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},ge.prototype.readUInt32BE=function(t,r){return r||ke(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},ge.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||ke(t,r,this.length);for(var n=this[t],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*r)),n},ge.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||ke(t,r,this.length);for(var n=r,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*r)),i},ge.prototype.readInt8=function(t,r){return r||ke(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},ge.prototype.readInt16LE=function(t,r){r||ke(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},ge.prototype.readInt16BE=function(t,r){r||ke(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},ge.prototype.readInt32LE=function(t,r){return r||ke(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},ge.prototype.readInt32BE=function(t,r){return r||ke(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},ge.prototype.readFloatLE=function(t,r){return r||ke(t,4,this.length),se(this,t,!0,23,4)},ge.prototype.readFloatBE=function(t,r){return r||ke(t,4,this.length),se(this,t,!1,23,4)},ge.prototype.readDoubleLE=function(t,r){return r||ke(t,8,this.length),se(this,t,!0,52,8)},ge.prototype.readDoubleBE=function(t,r){return r||ke(t,8,this.length),se(this,t,!1,52,8)},ge.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||De(this,t,r,e,Math.pow(2,8*e)-1,0);var o=1,i=0;for(this[r]=255&t;++i=0&&(i*=256);)this[r+o]=t/i&255;return r+e},ge.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,1,255,0),ge.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},ge.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,65535,0),ge.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):ze(this,t,r,!0),r+2},ge.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,65535,0),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):ze(this,t,r,!1),r+2},ge.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,4294967295,0),ge.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):Le(this,t,r,!0),r+4},ge.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,4294967295,0),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):Le(this,t,r,!1),r+4},ge.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);De(this,t,r,e,o-1,-o)}var i=0,u=1,a=0;for(this[r]=255&t;++i>0)-a&255;return r+e},ge.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);De(this,t,r,e,o-1,-o)}var i=e-1,u=1,a=0;for(this[r+i]=255&t;--i>=0&&(u*=256);)t<0&&0===a&&0!==this[r+i+1]&&(a=1),this[r+i]=(t/u>>0)-a&255;return r+e},ge.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,1,127,-128),ge.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},ge.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,32767,-32768),ge.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):ze(this,t,r,!0),r+2},ge.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,32767,-32768),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):ze(this,t,r,!1),r+2},ge.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,2147483647,-2147483648),ge.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):Le(this,t,r,!0),r+4},ge.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):Le(this,t,r,!1),r+4},ge.prototype.writeFloatLE=function(t,r,e){return qe(this,t,r,!0,e)},ge.prototype.writeFloatBE=function(t,r,e){return qe(this,t,r,!1,e)},ge.prototype.writeDoubleLE=function(t,r,e){return Je(this,t,r,!0,e)},ge.prototype.writeDoubleBE=function(t,r,e){return Je(this,t,r,!1,e)},ge.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=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),t.length-r=0;--o)t[o+r]=this[o+e];else if(i<1e3||!ge.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(i=r;i55295&&e<57344){if(!o){if(e>56319){(r-=3)>-1&&i.push(239,191,189);continue}if(u+1===n){(r-=3)>-1&&i.push(239,191,189);continue}o=e;continue}if(e<56320){(r-=3)>-1&&i.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(r-=3)>-1&&i.push(239,191,189);if(o=null,e<128){if((r-=1)<0)break;i.push(e)}else if(e<2048){if((r-=2)<0)break;i.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;i.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;i.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return i}function Ve(t){return function(t){var r,e,n,o,i,u;oe||ie();var a=t.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");i="="===t[a-2]?2:"="===t[a-1]?1:0,u=new ne(3*a/4-i),n=i>0?a-4:a;var s=0;for(r=0,e=0;r>16&255,u[s++]=o>>8&255,u[s++]=255&o;return 2===i?(o=ee[t.charCodeAt(r)]<<2|ee[t.charCodeAt(r+1)]>>4,u[s++]=255&o):1===i&&(o=ee[t.charCodeAt(r)]<<10|ee[t.charCodeAt(r+1)]<<4|ee[t.charCodeAt(r+2)]>>2,u[s++]=o>>8&255,u[s++]=255&o),u}(function(t){if((t=function(t){if(t.trim)return t.trim();return t.replace(/^\s+|\s+$/g,"")}(t).replace($e,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function He(t,r,e,n){for(var o=0;o=r.length||o>=t.length);++o)r[o+e]=t[o];return o}function We(t){return null!=t&&(!!t._isBuffer||Ze(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&Ze(t.slice(0,0))}(t))}function Ze(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var Ke=function(t,r){if(r instanceof Error){var e={};return Object.getOwnPropertyNames(r).forEach((function(t){e[t]=r[t]})),e}return r};var Xe=function(t,r){try{var e=t.headers.accept.split(",");return r?e.filter((function(t){return t===r})):e}catch(t){return[]}},tn=function(t,r){return!!Xe(t,r).length},rn=function(t,r){return t.path===r.jsonqlPath};exports.VERSION="1.2.5",exports.assign=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return Reflect.apply(Object.assign,Object,t)},exports.buff=function(t,r){return void 0===r&&(r="base64"),We(t)?t:new ge.from(t,r)},exports.cacheBurst=Mr,exports.cacheBurstUrl=function(t){return Cr(t,Mr())},exports.chainFns=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,Q(t))}),Reflect.apply(t,null,e))}},exports.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]):xr(t,e)}))}))}),Promise.resolve(!1===r?[]:j(r)?r:{}))},exports.createAcknowledgeMsg=function(t,r,e){return void 0===e&&(e=[]),Xr("emit_acknowledge",t,r,e)},exports.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},exports.createMutation=Jr,exports.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(Jr(t,r,e,n))},exports.createQuery=qr,exports.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(qr(t,r,e))},exports.createReplyMsg=function(t,r,e){return void 0===e&&(e=[]),Xr("emit_reply",t,r,e)},exports.createSendPayload=function(t,r,e){if(void 0===e&&(e=!1),Yr(t)&&n(r)){var o=Fr(t,zr(r),{type:"emit_send"});return e?JSON.stringify(o):o}throw new Tr("utils:socket:createSendMsg",{resolverName:t,args:r,message:"expect resolverName to be string and args to be array!"})},exports.createWsReply=Xr,exports.dasherize=Ir,exports.extractArgsFromPayload=function(t,r){switch(r){case"query":return t.args;case"mutation":return[t.payload,t.condition];default:throw new Ur("Unknown "+r+" to extract argument from!")}},exports.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Sr(e,r);return n}catch(t){throw new Sr(e,t)}},exports.extractSocketPart=Br,exports.extractWsPayload=function(t,r){void 0===r&&(r=Z);try{var e,n=W(t);if(!1!==(e=te(n)))return r("TS",n.TS),{data:W(e.__data__),resolverName:e.__event__,type:e.__reply__};throw new Ur("payload can not decoded",t)}catch(t){return r("error",t)}},exports.findFromContract=function(t,e,n){return!!(n[t]&&n[t][e]&&n[t][e].file&&r.existsSync(n[t][e].file))&&n[t][e].file},exports.formatPayload=zr,exports.freeze=function(t){return Object.freeze(t)},exports.getCallMethod=function(t){switch(!0){case t===Or[0]:return"query";case t===Or[1]:return"mutation";default:return!1}},exports.getConfigValue=function(t,r){return r&&j(r)&&t in r?r[t]:void 0},exports.getDocLen=function(t){return ge.byteLength(t,"utf8")},exports.getMutationFromArgs=Qr,exports.getMutationFromPayload=function(t){var r=Gr(t,Qr);if(!1!==r)return r;throw new Tr("[getMutationArgs] Payload is malformed!",t)},exports.getNamespace=Wr,exports.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},exports.getNspInfoByConfig=function(t){var r=t.contract,e=t.enableAuth,n=Wr(t),o=e?Hr(r):function(t,r){var e,n={};for(var o in t){var i=t[o];n[o]=i}return{size:1,nspGroup:(e={},e[r]=n,e),publicNamespace:r}}(r.socket,n[0]);return Object.assign(o,{namespaces:n})},exports.getPathToFn=function(t,n,o){var i=o.resolverDir,u=Ir(t),a=[];o.contract&&o.contract[n]&&o.contract[n].path&&a.push(o.contract[n].path),a.push(e.join(i,n,u,[Rr,Pr].join("."))),a.push(e.join(i,n,[u,Pr].join(".")));for(var s=a.length,f=0;f=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}(o,i),function(t,r){for(var e=t.length;e--&&U(r,t[e],0)>-1;);return e}(o,i)+1).join("")}var G=function(t,r){return!!t.filter((function(t){return t===r})).length},Q=function(t){return n(t)?t:[t]},V=function(t,r){void 0===r&&(r=!0);try{return JSON.parse(t)}catch(e){if(r)return t;throw new Error(e)}},H=function(t,r){try{var e=Object.keys(t);return G(e,r)}catch(t){return!1}},W=function(t){return V("string"==typeof t?t:JSON.stringify(t))},Z=function(){return!1};function K(t,r){return t===r||t!=t&&r!=r}function X(t,r){for(var e=t.length;e--;)if(K(t[e][0],r))return e;return-1}var tt=Array.prototype.splice;function rt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},rt.prototype.set=function(t,r){var e=this.__data__,n=X(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};function nt(t){if(!et(t))return!1;var r=y(t);return"[object Function]"==r||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}var ot,it=a["__core-js_shared__"],ut=(ot=/[^.]+$/.exec(it&&it.keys&&it.keys.IE_PROTO||""))?"Symbol(src)_1."+ot:"";var at=Function.prototype.toString;var st=/^\[object .+?Constructor\]$/,ft=Function.prototype,ct=Object.prototype,ht=ft.toString,pt=ct.hasOwnProperty,lt=RegExp("^"+ht.call(pt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function gt(t){return!(!et(t)||function(t){return!!ut&&ut in t}(t))&&(nt(t)?lt:st).test(function(t){if(null!=t){try{return at.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function yt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return gt(e)?e:void 0}var vt=yt(a,"Map"),dt=yt(Object,"create");var _t=Object.prototype.hasOwnProperty;var bt=Object.prototype.hasOwnProperty;function wt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=9007199254740991}function $t(t){return null!=t&&Jt(t.length)&&!nt(t)}var Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qt=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Vt=Qt&&Qt.exports===Gt?a.Buffer:void 0,Ht=(Vt?Vt.isBuffer:void 0)||function(){return!1},Wt={};Wt["[object Float32Array]"]=Wt["[object Float64Array]"]=Wt["[object Int8Array]"]=Wt["[object Int16Array]"]=Wt["[object Int32Array]"]=Wt["[object Uint8Array]"]=Wt["[object Uint8ClampedArray]"]=Wt["[object Uint16Array]"]=Wt["[object Uint32Array]"]=!0,Wt["[object Arguments]"]=Wt["[object Array]"]=Wt["[object ArrayBuffer]"]=Wt["[object Boolean]"]=Wt["[object DataView]"]=Wt["[object Date]"]=Wt["[object Error]"]=Wt["[object Function]"]=Wt["[object Map]"]=Wt["[object Number]"]=Wt["[object Object]"]=Wt["[object RegExp]"]=Wt["[object Set]"]=Wt["[object String]"]=Wt["[object WeakMap]"]=!1;var Zt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Kt=Zt&&"object"==typeof module&&module&&!module.nodeType&&module,Xt=Kt&&Kt.exports===Zt&&i.process,tr=function(){try{var t=Kt&&Kt.require&&Kt.require("util").types;return t||Xt&&Xt.binding&&Xt.binding("util")}catch(t){}}(),rr=tr&&tr.isTypedArray,er=rr?function(t){return function(r){return t(r)}}(rr):function(t){return b(t)&&Jt(t.length)&&!!Wt[y(t)]};function nr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var or=Object.prototype.hasOwnProperty;function ir(t,r,e){var n=t[r];or.call(t,r)&&K(n,e)&&(void 0!==e||r in t)||jt(t,r,e)}var ur=/^(?:0|[1-9]\d*)$/;function ar(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&ur.test(t))&&t>-1&&t%1==0&&t0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(br);function Ar(t,r){return mr(function(t,r,e){return r=_r(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,i=_r(n.length-r,0),u=Array(i);++o1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=Er.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!et(e))return!1;var n=typeof r;return!!("number"==n?$t(e)&&ar(r,e.length):"string"==n&&r in e)&&K(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++e>18&63]+re[o>>12&63]+re[o>>6&63]+re[63&o]);return i.join("")}function ae(t){var r;oe||ie();for(var e=t.length,n=e%3,o="",i=[],u=0,a=e-n;ua?a:u+16383));return 1===n?(r=t[e-1],o+=re[r>>2],o+=re[r<<4&63],o+="=="):2===n&&(r=(t[e-2]<<8)+t[e-1],o+=re[r>>10],o+=re[r>>4&63],o+=re[r<<2&63],o+="="),i.push(o),i.join("")}function se(t,r,e,n,o){var i,u,a=8*o-n-1,s=(1<>1,c=-7,h=e?o-1:0,p=e?-1:1,l=t[r+h];for(h+=p,i=l&(1<<-c)-1,l>>=-c,c+=a;c>0;i=256*i+t[r+h],h+=p,c-=8);for(u=i&(1<<-c)-1,i>>=-c,c+=n;c>0;u=256*u+t[r+h],h+=p,c-=8);if(0===i)i=1-f;else{if(i===s)return u?NaN:1/0*(l?-1:1);u+=Math.pow(2,n),i-=f}return(l?-1:1)*u*Math.pow(2,i-n)}function fe(t,r,e,n,o,i){var u,a,s,f=8*i-o-1,c=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:i-1,g=n?1:-1,y=r<0||0===r&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(a=isNaN(r)?1:0,u=c):(u=Math.floor(Math.log(r)/Math.LN2),r*(s=Math.pow(2,-u))<1&&(u--,s*=2),(r+=u+h>=1?p/s:p*Math.pow(2,1-h))*s>=2&&(u++,s/=2),u+h>=c?(a=0,u=c):u+h>=1?(a=(r*s-1)*Math.pow(2,o),u+=h):(a=r*Math.pow(2,h-1)*Math.pow(2,o),u=0));o>=8;t[e+l]=255&a,l+=g,a/=256,o-=8);for(u=u<0;t[e+l]=255&u,l+=g,u/=256,f-=8);t[e+l-g]|=128*y}var ce={}.toString,he=Array.isArray||function(t){return"[object Array]"==ce.call(t)};function pe(){return ge.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function le(t,r){if(pe()=pe())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+pe().toString(16)+" bytes");return 0|t}function we(t){return!(null==t||!t._isBuffer)}function me(t,r){if(we(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return Qe(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return Ve(t).length;default:if(n)return Qe(t).length;r=(""+r).toLowerCase(),n=!0}}function Ae(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return Me(this,r,e);case"utf8":case"utf-8":return Ne(this,r,e);case"ascii":return Ie(this,r,e);case"latin1":case"binary":return Ce(this,r,e);case"base64":return Be(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ye(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function Ee(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function xe(t,r,e,n,o){if(0===t.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:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(o)return-1;e=t.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof r&&(r=ge.from(r,n)),we(r))return 0===r.length?-1:je(t,r,e,n,o);if("number"==typeof r)return r&=255,ge.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):je(t,[r],e,n,o);throw new TypeError("val must be string, number or Buffer")}function je(t,r,e,n,o){var i,u=1,a=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;u=2,a/=2,s/=2,e/=2}function f(t,r){return 1===u?t[r]:t.readUInt16BE(r*u)}if(o){var c=-1;for(i=e;ia&&(e=a-s),i=e;i>=0;i--){for(var h=!0,p=0;po&&(n=o):n=o;var i=r.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var u=0;u>8,o=e%256,i.push(o),i.push(n);return i}(r,t.length-e),t,e,n)}function Be(t,r,e){return 0===r&&e===t.length?ae(t):ae(t.slice(r,e))}function Ne(t,r,e){e=Math.min(t.length,e);for(var n=[],o=r;o239?4:f>223?3:f>191?2:1;if(o+h<=e)switch(h){case 1:f<128&&(c=f);break;case 2:128==(192&(i=t[o+1]))&&(s=(31&f)<<6|63&i)>127&&(c=s);break;case 3:i=t[o+1],u=t[o+2],128==(192&i)&&128==(192&u)&&(s=(15&f)<<12|(63&i)<<6|63&u)>2047&&(s<55296||s>57343)&&(c=s);break;case 4:i=t[o+1],u=t[o+2],a=t[o+3],128==(192&i)&&128==(192&u)&&128==(192&a)&&(s=(15&f)<<18|(63&i)<<12|(63&u)<<6|63&a)>65535&&s<1114112&&(c=s)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=h}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e="",n=0;for(;n0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),""},ge.prototype.compare=function(t,r,e,n,o){if(!we(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),r<0||e>t.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&r>=e)return 0;if(n>=o)return-1;if(r>=e)return 1;if(this===t)return 0;for(var i=(o>>>=0)-(n>>>=0),u=(e>>>=0)-(r>>>=0),a=Math.min(i,u),s=this.slice(n,o),f=t.slice(r,e),c=0;co)&&(e=o),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return Pe(this,t,r,e);case"utf8":case"utf-8":return Oe(this,t,r,e);case"ascii":return Re(this,t,r,e);case"latin1":case"binary":return Se(this,t,r,e);case"base64":return Te(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ue(this,t,r,e);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},ge.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Ie(t,r,e){var n="";e=Math.min(t.length,e);for(var o=r;on)&&(e=n);for(var o="",i=r;ie)throw new RangeError("Trying to access beyond buffer length")}function De(t,r,e,n,o,i){if(!we(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||rt.length)throw new RangeError("Index out of range")}function ze(t,r,e,n){r<0&&(r=65535+r+1);for(var o=0,i=Math.min(t.length-e,2);o>>8*(n?o:1-o)}function Le(t,r,e,n){r<0&&(r=4294967295+r+1);for(var o=0,i=Math.min(t.length-e,4);o>>8*(n?o:3-o)&255}function Fe(t,r,e,n,o,i){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function qe(t,r,e,n,o){return o||Fe(t,0,e,4),fe(t,r,e,n,23,4),e+4}function Je(t,r,e,n,o){return o||Fe(t,0,e,8),fe(t,r,e,n,52,8),e+8}ge.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r0&&(o*=256);)n+=this[t+--r]*o;return n},ge.prototype.readUInt8=function(t,r){return r||ke(t,1,this.length),this[t]},ge.prototype.readUInt16LE=function(t,r){return r||ke(t,2,this.length),this[t]|this[t+1]<<8},ge.prototype.readUInt16BE=function(t,r){return r||ke(t,2,this.length),this[t]<<8|this[t+1]},ge.prototype.readUInt32LE=function(t,r){return r||ke(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},ge.prototype.readUInt32BE=function(t,r){return r||ke(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},ge.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||ke(t,r,this.length);for(var n=this[t],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*r)),n},ge.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||ke(t,r,this.length);for(var n=r,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*r)),i},ge.prototype.readInt8=function(t,r){return r||ke(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},ge.prototype.readInt16LE=function(t,r){r||ke(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},ge.prototype.readInt16BE=function(t,r){r||ke(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},ge.prototype.readInt32LE=function(t,r){return r||ke(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},ge.prototype.readInt32BE=function(t,r){return r||ke(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},ge.prototype.readFloatLE=function(t,r){return r||ke(t,4,this.length),se(this,t,!0,23,4)},ge.prototype.readFloatBE=function(t,r){return r||ke(t,4,this.length),se(this,t,!1,23,4)},ge.prototype.readDoubleLE=function(t,r){return r||ke(t,8,this.length),se(this,t,!0,52,8)},ge.prototype.readDoubleBE=function(t,r){return r||ke(t,8,this.length),se(this,t,!1,52,8)},ge.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||De(this,t,r,e,Math.pow(2,8*e)-1,0);var o=1,i=0;for(this[r]=255&t;++i=0&&(i*=256);)this[r+o]=t/i&255;return r+e},ge.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,1,255,0),ge.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},ge.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,65535,0),ge.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):ze(this,t,r,!0),r+2},ge.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,65535,0),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):ze(this,t,r,!1),r+2},ge.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,4294967295,0),ge.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):Le(this,t,r,!0),r+4},ge.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,4294967295,0),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):Le(this,t,r,!1),r+4},ge.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);De(this,t,r,e,o-1,-o)}var i=0,u=1,a=0;for(this[r]=255&t;++i>0)-a&255;return r+e},ge.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);De(this,t,r,e,o-1,-o)}var i=e-1,u=1,a=0;for(this[r+i]=255&t;--i>=0&&(u*=256);)t<0&&0===a&&0!==this[r+i+1]&&(a=1),this[r+i]=(t/u>>0)-a&255;return r+e},ge.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,1,127,-128),ge.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},ge.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,32767,-32768),ge.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):ze(this,t,r,!0),r+2},ge.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,2,32767,-32768),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):ze(this,t,r,!1),r+2},ge.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,2147483647,-2147483648),ge.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):Le(this,t,r,!0),r+4},ge.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||De(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),ge.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):Le(this,t,r,!1),r+4},ge.prototype.writeFloatLE=function(t,r,e){return qe(this,t,r,!0,e)},ge.prototype.writeFloatBE=function(t,r,e){return qe(this,t,r,!1,e)},ge.prototype.writeDoubleLE=function(t,r,e){return Je(this,t,r,!0,e)},ge.prototype.writeDoubleBE=function(t,r,e){return Je(this,t,r,!1,e)},ge.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=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),t.length-r=0;--o)t[o+r]=this[o+e];else if(i<1e3||!ge.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(i=r;i55295&&e<57344){if(!o){if(e>56319){(r-=3)>-1&&i.push(239,191,189);continue}if(u+1===n){(r-=3)>-1&&i.push(239,191,189);continue}o=e;continue}if(e<56320){(r-=3)>-1&&i.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(r-=3)>-1&&i.push(239,191,189);if(o=null,e<128){if((r-=1)<0)break;i.push(e)}else if(e<2048){if((r-=2)<0)break;i.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;i.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;i.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return i}function Ve(t){return function(t){var r,e,n,o,i,u;oe||ie();var a=t.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");i="="===t[a-2]?2:"="===t[a-1]?1:0,u=new ne(3*a/4-i),n=i>0?a-4:a;var s=0;for(r=0,e=0;r>16&255,u[s++]=o>>8&255,u[s++]=255&o;return 2===i?(o=ee[t.charCodeAt(r)]<<2|ee[t.charCodeAt(r+1)]>>4,u[s++]=255&o):1===i&&(o=ee[t.charCodeAt(r)]<<10|ee[t.charCodeAt(r+1)]<<4|ee[t.charCodeAt(r+2)]>>2,u[s++]=o>>8&255,u[s++]=255&o),u}(function(t){if((t=function(t){if(t.trim)return t.trim();return t.replace(/^\s+|\s+$/g,"")}(t).replace($e,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function He(t,r,e,n){for(var o=0;o=r.length||o>=t.length);++o)r[o+e]=t[o];return o}function We(t){return null!=t&&(!!t._isBuffer||Ze(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&Ze(t.slice(0,0))}(t))}function Ze(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var Ke=function(t,r){if(r instanceof Error){var e={};return Object.getOwnPropertyNames(r).forEach((function(t){e[t]=r[t]})),e}return r};var Xe=function(t,r){try{var e=t.headers.accept.split(",");return r?e.filter((function(t){return t===r})):e}catch(t){return[]}},tn=function(t,r){return!!Xe(t,r).length},rn=function(t,r){return t.path===r.jsonqlPath};exports.VERSION="1.2.6",exports.assign=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return Reflect.apply(Object.assign,Object,t)},exports.buff=function(t,r){return void 0===r&&(r="base64"),We(t)?t:new ge.from(t,r)},exports.cacheBurst=Mr,exports.cacheBurstUrl=function(t){return Cr(t,Mr())},exports.chainFns=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,Q(t))}),Reflect.apply(t,null,e))}},exports.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]):xr(t,e)}))}))}),Promise.resolve(!1===r?[]:j(r)?r:{}))},exports.createAcknowledgeMsg=function(t,r,e){return void 0===e&&(e=[]),Xr("emit_acknowledge",t,r,e)},exports.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},exports.createMutation=Jr,exports.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(Jr(t,r,e,n))},exports.createQuery=qr,exports.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(qr(t,r,e))},exports.createReplyMsg=function(t,r,e){return void 0===e&&(e=[]),Xr("emit_reply",t,r,e)},exports.createSendPayload=function(t,r,e){if(void 0===e&&(e=!1),Yr(t)&&n(r)){var o=Fr(t,zr(r),{type:"emit_send"});return e?JSON.stringify(o):o}throw new Tr("utils:socket:createSendMsg",{resolverName:t,args:r,message:"expect resolverName to be string and args to be array!"})},exports.createWsReply=Xr,exports.dasherize=Ir,exports.extractArgsFromPayload=function(t,r){switch(r){case"query":return t.args;case"mutation":return[t.payload,t.condition];default:throw new Ur("Unknown "+r+" to extract argument from!")}},exports.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Sr(e,r);return n}catch(t){throw new Sr(e,t)}},exports.extractSocketPart=Br,exports.extractWsPayload=function(t,r){void 0===r&&(r=Z);try{var e,n=W(t);if(!1!==(e=te(n)))return r("_data",e),{data:W(e.__data__),resolverName:e.__event__,type:e.__reply__};throw new Ur("payload can not decoded",t)}catch(t){return r("error",t)}},exports.findFromContract=function(t,e,n){return!!(n[t]&&n[t][e]&&n[t][e].file&&r.existsSync(n[t][e].file))&&n[t][e].file},exports.formatPayload=zr,exports.freeze=function(t){return Object.freeze(t)},exports.getCallMethod=function(t){switch(!0){case t===Or[0]:return"query";case t===Or[1]:return"mutation";default:return!1}},exports.getConfigValue=function(t,r){return r&&j(r)&&t in r?r[t]:void 0},exports.getDocLen=function(t){return ge.byteLength(t,"utf8")},exports.getMutationFromArgs=Qr,exports.getMutationFromPayload=function(t){var r=Gr(t,Qr);if(!1!==r)return r;throw new Tr("[getMutationArgs] Payload is malformed!",t)},exports.getNamespace=Wr,exports.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},exports.getNspInfoByConfig=function(t){var r=t.contract,e=t.enableAuth,n=Wr(t),o=e?Hr(r):function(t,r){var e,n={};for(var o in t){var i=t[o];n[o]=i}return{size:1,nspGroup:(e={},e[r]=n,e),publicNamespace:r}}(r.socket,n[0]);return Object.assign(o,{namespaces:n})},exports.getPathToFn=function(t,n,o){var i=o.resolverDir,u=Ir(t),a=[];o.contract&&o.contract[n]&&o.contract[n].path&&a.push(o.contract[n].path),a.push(e.join(i,n,u,[Rr,Pr].join("."))),a.push(e.join(i,n,[u,Pr].join(".")));for(var s=a.length,f=0;f { export const createWsReply = (type, resolverName, data, ts = []) => { const obj = getTsFieldFromData(toJson(data)) ts = ts.concat(obj[TIMESTAMP_PARAM_NAME]) - // ts.push(timestamp()) + if (!ts.length) { + ts.push(timestamp()) + } return JSON.stringify({ data: { [WS_REPLY_TYPE]: type, -- Gitee