diff --git a/packages/ws-base/README.md b/packages/@jsonql/socketio/ws-base/README.md similarity index 100% rename from packages/ws-base/README.md rename to packages/@jsonql/socketio/ws-base/README.md diff --git a/packages/ws-base/client.js b/packages/@jsonql/socketio/ws-base/client.js similarity index 100% rename from packages/ws-base/client.js rename to packages/@jsonql/socketio/ws-base/client.js diff --git a/packages/ws-base/main.js b/packages/@jsonql/socketio/ws-base/main.js similarity index 100% rename from packages/ws-base/main.js rename to packages/@jsonql/socketio/ws-base/main.js diff --git a/packages/ws-base/module.js b/packages/@jsonql/socketio/ws-base/module.js similarity index 100% rename from packages/ws-base/module.js rename to packages/@jsonql/socketio/ws-base/module.js diff --git a/packages/ws-base/package.json b/packages/@jsonql/socketio/ws-base/package.json similarity index 100% rename from packages/ws-base/package.json rename to packages/@jsonql/socketio/ws-base/package.json diff --git a/packages/ws-base/server.js b/packages/@jsonql/socketio/ws-base/server.js similarity index 100% rename from packages/ws-base/server.js rename to packages/@jsonql/socketio/ws-base/server.js diff --git a/packages/ws-base/src/client/client-event-handler.js b/packages/@jsonql/socketio/ws-base/src/client/client-event-handler.js similarity index 100% rename from packages/ws-base/src/client/client-event-handler.js rename to packages/@jsonql/socketio/ws-base/src/client/client-event-handler.js diff --git a/packages/ws-base/src/client/create-socket-client.js b/packages/@jsonql/socketio/ws-base/src/client/create-socket-client.js similarity index 100% rename from packages/ws-base/src/client/create-socket-client.js rename to packages/@jsonql/socketio/ws-base/src/client/create-socket-client.js diff --git a/packages/ws-base/src/client/generator.js b/packages/@jsonql/socketio/ws-base/src/client/generator.js similarity index 100% rename from packages/ws-base/src/client/generator.js rename to packages/@jsonql/socketio/ws-base/src/client/generator.js diff --git a/packages/ws-base/src/client/main.js b/packages/@jsonql/socketio/ws-base/src/client/main.js similarity index 100% rename from packages/ws-base/src/client/main.js rename to packages/@jsonql/socketio/ws-base/src/client/main.js diff --git a/packages/ws-base/src/client/node/client-generator.js b/packages/@jsonql/socketio/ws-base/src/client/node/client-generator.js similarity index 100% rename from packages/ws-base/src/client/node/client-generator.js rename to packages/@jsonql/socketio/ws-base/src/client/node/client-generator.js diff --git a/packages/ws-base/src/client/node/main.cjs.js b/packages/@jsonql/socketio/ws-base/src/client/node/main.cjs.js similarity index 100% rename from packages/ws-base/src/client/node/main.cjs.js rename to packages/@jsonql/socketio/ws-base/src/client/node/main.cjs.js diff --git a/packages/ws-base/src/client/utils/check-options.js b/packages/@jsonql/socketio/ws-base/src/client/utils/check-options.js similarity index 100% rename from packages/ws-base/src/client/utils/check-options.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/check-options.js diff --git a/packages/ws-base/src/client/utils/client-generator.js b/packages/@jsonql/socketio/ws-base/src/client/utils/client-generator.js similarity index 100% rename from packages/ws-base/src/client/utils/client-generator.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/client-generator.js diff --git a/packages/ws-base/src/client/utils/constants.js b/packages/@jsonql/socketio/ws-base/src/client/utils/constants.js similarity index 100% rename from packages/ws-base/src/client/utils/constants.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/constants.js diff --git a/packages/ws-base/src/client/utils/create-nsp-client.js b/packages/@jsonql/socketio/ws-base/src/client/utils/create-nsp-client.js similarity index 100% rename from packages/ws-base/src/client/utils/create-nsp-client.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/create-nsp-client.js diff --git a/packages/ws-base/src/client/utils/ee.js b/packages/@jsonql/socketio/ws-base/src/client/utils/ee.js similarity index 100% rename from packages/ws-base/src/client/utils/ee.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/ee.js diff --git a/packages/ws-base/src/client/utils/events.js b/packages/@jsonql/socketio/ws-base/src/client/utils/events.js similarity index 100% rename from packages/ws-base/src/client/utils/events.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/events.js diff --git a/packages/ws-base/src/client/utils/get-debug.js b/packages/@jsonql/socketio/ws-base/src/client/utils/get-debug.js similarity index 100% rename from packages/ws-base/src/client/utils/get-debug.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/get-debug.js diff --git a/packages/ws-base/src/client/utils/get-namespace-in-order.js b/packages/@jsonql/socketio/ws-base/src/client/utils/get-namespace-in-order.js similarity index 100% rename from packages/ws-base/src/client/utils/get-namespace-in-order.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/get-namespace-in-order.js diff --git a/packages/ws-base/src/client/utils/index.js b/packages/@jsonql/socketio/ws-base/src/client/utils/index.js similarity index 100% rename from packages/ws-base/src/client/utils/index.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/index.js diff --git a/packages/ws-base/src/client/utils/process-contract.js b/packages/@jsonql/socketio/ws-base/src/client/utils/process-contract.js similarity index 100% rename from packages/ws-base/src/client/utils/process-contract.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/process-contract.js diff --git a/packages/ws-base/src/client/utils/trigger-namespaces-on-error.js b/packages/@jsonql/socketio/ws-base/src/client/utils/trigger-namespaces-on-error.js similarity index 100% rename from packages/ws-base/src/client/utils/trigger-namespaces-on-error.js rename to packages/@jsonql/socketio/ws-base/src/client/utils/trigger-namespaces-on-error.js diff --git a/packages/ws-base/src/post-install.js b/packages/@jsonql/socketio/ws-base/src/post-install.js similarity index 100% rename from packages/ws-base/src/post-install.js rename to packages/@jsonql/socketio/ws-base/src/post-install.js diff --git a/packages/ws-base/src/server/README.md b/packages/@jsonql/socketio/ws-base/src/server/README.md similarity index 100% rename from packages/ws-base/src/server/README.md rename to packages/@jsonql/socketio/ws-base/src/server/README.md diff --git a/packages/ws-base/src/server/check-options/index.js b/packages/@jsonql/socketio/ws-base/src/server/check-options/index.js similarity index 100% rename from packages/ws-base/src/server/check-options/index.js rename to packages/@jsonql/socketio/ws-base/src/server/check-options/index.js diff --git a/packages/ws-base/src/server/generator.js b/packages/@jsonql/socketio/ws-base/src/server/generator.js similarity index 100% rename from packages/ws-base/src/server/generator.js rename to packages/@jsonql/socketio/ws-base/src/server/generator.js diff --git a/packages/ws-base/src/server/index.js b/packages/@jsonql/socketio/ws-base/src/server/index.js similarity index 100% rename from packages/ws-base/src/server/index.js rename to packages/@jsonql/socketio/ws-base/src/server/index.js diff --git a/packages/ws-base/src/server/share/add-handler-property.js b/packages/@jsonql/socketio/ws-base/src/server/share/add-handler-property.js similarity index 100% rename from packages/ws-base/src/server/share/add-handler-property.js rename to packages/@jsonql/socketio/ws-base/src/server/share/add-handler-property.js diff --git a/packages/ws-base/src/server/share/add-ws-property.js b/packages/@jsonql/socketio/ws-base/src/server/share/add-ws-property.js similarity index 100% rename from packages/ws-base/src/server/share/add-ws-property.js rename to packages/@jsonql/socketio/ws-base/src/server/share/add-ws-property.js diff --git a/packages/ws-base/src/server/share/constants.js b/packages/@jsonql/socketio/ws-base/src/server/share/constants.js similarity index 100% rename from packages/ws-base/src/server/share/constants.js rename to packages/@jsonql/socketio/ws-base/src/server/share/constants.js diff --git a/packages/ws-base/src/server/share/get-contract.js b/packages/@jsonql/socketio/ws-base/src/server/share/get-contract.js similarity index 100% rename from packages/ws-base/src/server/share/get-contract.js rename to packages/@jsonql/socketio/ws-base/src/server/share/get-contract.js diff --git a/packages/ws-base/src/server/share/helpers.js b/packages/@jsonql/socketio/ws-base/src/server/share/helpers.js similarity index 100% rename from packages/ws-base/src/server/share/helpers.js rename to packages/@jsonql/socketio/ws-base/src/server/share/helpers.js diff --git a/packages/ws-base/src/server/share/resolve-method.js b/packages/@jsonql/socketio/ws-base/src/server/share/resolve-method.js similarity index 100% rename from packages/ws-base/src/server/share/resolve-method.js rename to packages/@jsonql/socketio/ws-base/src/server/share/resolve-method.js diff --git a/packages/ws-base/src/server/socket-io/add-property.js b/packages/@jsonql/socketio/ws-base/src/server/socket-io/add-property.js similarity index 100% rename from packages/ws-base/src/server/socket-io/add-property.js rename to packages/@jsonql/socketio/ws-base/src/server/socket-io/add-property.js diff --git a/packages/ws-base/src/server/socket-io/index.js b/packages/@jsonql/socketio/ws-base/src/server/socket-io/index.js similarity index 100% rename from packages/ws-base/src/server/socket-io/index.js rename to packages/@jsonql/socketio/ws-base/src/server/socket-io/index.js diff --git a/packages/ws-base/src/server/socket-io/socket-io-create-server.js b/packages/@jsonql/socketio/ws-base/src/server/socket-io/socket-io-create-server.js similarity index 100% rename from packages/ws-base/src/server/socket-io/socket-io-create-server.js rename to packages/@jsonql/socketio/ws-base/src/server/socket-io/socket-io-create-server.js diff --git a/packages/ws-base/src/server/socket-io/socket-io-setup.js b/packages/@jsonql/socketio/ws-base/src/server/socket-io/socket-io-setup.js similarity index 100% rename from packages/ws-base/src/server/socket-io/socket-io-setup.js rename to packages/@jsonql/socketio/ws-base/src/server/socket-io/socket-io-setup.js diff --git a/packages/ws-base/src/server/ws/add-property.js b/packages/@jsonql/socketio/ws-base/src/server/ws/add-property.js similarity index 100% rename from packages/ws-base/src/server/ws/add-property.js rename to packages/@jsonql/socketio/ws-base/src/server/ws/add-property.js diff --git a/packages/ws-base/src/server/ws/create-ws-reply.js b/packages/@jsonql/socketio/ws-base/src/server/ws/create-ws-reply.js similarity index 100% rename from packages/ws-base/src/server/ws/create-ws-reply.js rename to packages/@jsonql/socketio/ws-base/src/server/ws/create-ws-reply.js diff --git a/packages/ws-base/src/server/ws/index.js b/packages/@jsonql/socketio/ws-base/src/server/ws/index.js similarity index 100% rename from packages/ws-base/src/server/ws/index.js rename to packages/@jsonql/socketio/ws-base/src/server/ws/index.js diff --git a/packages/ws-base/src/server/ws/ws-create-server.js b/packages/@jsonql/socketio/ws-base/src/server/ws/ws-create-server.js similarity index 100% rename from packages/ws-base/src/server/ws/ws-create-server.js rename to packages/@jsonql/socketio/ws-base/src/server/ws/ws-create-server.js diff --git a/packages/ws-base/src/server/ws/ws-setup.js b/packages/@jsonql/socketio/ws-base/src/server/ws/ws-setup.js similarity index 100% rename from packages/ws-base/src/server/ws/ws-setup.js rename to packages/@jsonql/socketio/ws-base/src/server/ws/ws-setup.js diff --git a/packages/ws-base/tests/client-test-node.test.js b/packages/@jsonql/socketio/ws-base/tests/client-test-node.test.js similarity index 100% rename from packages/ws-base/tests/client-test-node.test.js rename to packages/@jsonql/socketio/ws-base/tests/client-test-node.test.js diff --git a/packages/ws-base/tests/fixtures/client/auth/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/auth/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/auth/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/auth/contract.json diff --git a/packages/ws-base/tests/fixtures/client/auth/public-contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/auth/public-contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/auth/public-contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/auth/public-contract.json diff --git a/packages/ws-base/tests/fixtures/client/contract-config-auth.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract-config-auth.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/contract-config-auth.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract-config-auth.js diff --git a/packages/ws-base/tests/fixtures/client/contract-config.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract-config.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/contract-config.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract-config.js diff --git a/packages/ws-base/tests/fixtures/client/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract.json diff --git a/packages/ws-base/tests/fixtures/client/contract/auth/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/auth/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/contract/auth/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/auth/contract.json diff --git a/packages/ws-base/tests/fixtures/client/contract/auth/public-contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/auth/public-contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/contract/auth/public-contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/auth/public-contract.json diff --git a/packages/ws-base/tests/fixtures/client/contract/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/contract/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/contract.json diff --git a/packages/ws-base/tests/fixtures/client/contract/public-contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/public-contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/contract/public-contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/contract/public-contract.json diff --git a/packages/ws-base/tests/fixtures/client/io-setup.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/io-setup.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/io-setup.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/io-setup.js diff --git a/packages/ws-base/tests/fixtures/client/keys/privateKey.pem b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/keys/privateKey.pem similarity index 100% rename from packages/ws-base/tests/fixtures/client/keys/privateKey.pem rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/keys/privateKey.pem diff --git a/packages/ws-base/tests/fixtures/client/keys/publicKey.pem b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/keys/publicKey.pem similarity index 100% rename from packages/ws-base/tests/fixtures/client/keys/publicKey.pem rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/keys/publicKey.pem diff --git a/packages/ws-base/tests/fixtures/client/node/index.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/node/index.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/node/index.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/node/index.js diff --git a/packages/ws-base/tests/fixtures/client/node/test.cjs.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/node/test.cjs.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/node/test.cjs.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/node/test.cjs.js diff --git a/packages/ws-base/tests/fixtures/client/node/test.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/node/test.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/node/test.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/node/test.js diff --git a/packages/ws-base/tests/fixtures/client/public-contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/public-contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/client/public-contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/public-contract.json diff --git a/packages/ws-base/tests/fixtures/client/resolvers/socket/continuous.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/continuous.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/resolvers/socket/continuous.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/continuous.js diff --git a/packages/ws-base/tests/fixtures/client/resolvers/socket/public/pinging.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/public/pinging.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/resolvers/socket/public/pinging.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/public/pinging.js diff --git a/packages/ws-base/tests/fixtures/client/resolvers/socket/send-extra-msg.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/send-extra-msg.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/resolvers/socket/send-extra-msg.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/send-extra-msg.js diff --git a/packages/ws-base/tests/fixtures/client/resolvers/socket/simple.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/simple.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/resolvers/socket/simple.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/simple.js diff --git a/packages/ws-base/tests/fixtures/client/resolvers/socket/throw-error.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/throw-error.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/resolvers/socket/throw-error.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/resolvers/socket/throw-error.js diff --git a/packages/ws-base/tests/fixtures/client/server-setup.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/server-setup.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/server-setup.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/server-setup.js diff --git a/packages/ws-base/tests/fixtures/client/token.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/client/token.js similarity index 100% rename from packages/ws-base/tests/fixtures/client/token.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/client/token.js diff --git a/packages/ws-base/tests/fixtures/server/auth/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/auth/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/server/auth/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/auth/contract.json diff --git a/packages/ws-base/tests/fixtures/server/browser-test-setup.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/browser-test-setup.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/browser-test-setup.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/browser-test-setup.js diff --git a/packages/ws-base/tests/fixtures/server/contract-config.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract-config.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/contract-config.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract-config.js diff --git a/packages/ws-base/tests/fixtures/server/contract.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/contract.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract.js diff --git a/packages/ws-base/tests/fixtures/server/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/server/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract.json diff --git a/packages/ws-base/tests/fixtures/server/contract/auth/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract/auth/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/server/contract/auth/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract/auth/contract.json diff --git a/packages/ws-base/tests/fixtures/server/contract/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/server/contract/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract/contract.json diff --git a/packages/ws-base/tests/fixtures/server/contract/es6/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract/es6/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/server/contract/es6/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/contract/es6/contract.json diff --git a/packages/ws-base/tests/fixtures/server/create-payload.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/create-payload.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/create-payload.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/create-payload.js diff --git a/packages/ws-base/tests/fixtures/server/demo/index.html b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/demo/index.html similarity index 100% rename from packages/ws-base/tests/fixtures/server/demo/index.html rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/demo/index.html diff --git a/packages/ws-base/tests/fixtures/server/es6/contract.json b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6/contract.json similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6/contract.json rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6/contract.json diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/auth/login.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/auth/login.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/auth/login.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/auth/login.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/auth/logout.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/auth/logout.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/auth/logout.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/auth/logout.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/import.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/import.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/import.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/import.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/mutation/save-something.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/mutation/save-something.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/mutation/save-something.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/mutation/save-something.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/query/get-something.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/query/get-something.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/query/get-something.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/query/get-something.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/resolver.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/resolver.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/resolver.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/resolver.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/socket/cause-error.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/cause-error.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/socket/cause-error.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/cause-error.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/socket/chatroom.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/chatroom.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/socket/chatroom.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/chatroom.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/socket/delay-fn.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/delay-fn.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/socket/delay-fn.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/delay-fn.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/socket/private/secret-chatroom.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/private/secret-chatroom.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/socket/private/secret-chatroom.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/private/secret-chatroom.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/socket/public/available-to-everyone/index.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/public/available-to-everyone/index.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/socket/public/available-to-everyone/index.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/public/available-to-everyone/index.js diff --git a/packages/ws-base/tests/fixtures/server/es6resolvers/socket/ws-handler.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/ws-handler.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/es6resolvers/socket/ws-handler.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/es6resolvers/socket/ws-handler.js diff --git a/packages/ws-base/tests/fixtures/server/fn.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/fn.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/fn.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/fn.js diff --git a/packages/ws-base/tests/fixtures/server/full-setup.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/full-setup.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/full-setup.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/full-setup.js diff --git a/packages/ws-base/tests/fixtures/server/keys/privateKey.pem b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/keys/privateKey.pem similarity index 100% rename from packages/ws-base/tests/fixtures/server/keys/privateKey.pem rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/keys/privateKey.pem diff --git a/packages/ws-base/tests/fixtures/server/keys/publicKey.pem b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/keys/publicKey.pem similarity index 100% rename from packages/ws-base/tests/fixtures/server/keys/publicKey.pem rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/keys/publicKey.pem diff --git a/packages/ws-base/tests/fixtures/server/resolvers/auth/login.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/auth/login.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/auth/login.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/auth/login.js diff --git a/packages/ws-base/tests/fixtures/server/resolvers/auth/logout.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/auth/logout.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/auth/logout.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/auth/logout.js diff --git a/packages/ws-base/tests/fixtures/server/resolvers/socket/cause-error.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/cause-error.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/socket/cause-error.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/cause-error.js diff --git a/packages/ws-base/tests/fixtures/server/resolvers/socket/chatroom.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/chatroom.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/socket/chatroom.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/chatroom.js diff --git a/packages/ws-base/tests/fixtures/server/resolvers/socket/delay-fn.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/delay-fn.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/socket/delay-fn.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/delay-fn.js diff --git a/packages/ws-base/tests/fixtures/server/resolvers/socket/private/secret-chatroom.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/private/secret-chatroom.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/socket/private/secret-chatroom.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/private/secret-chatroom.js diff --git a/packages/ws-base/tests/fixtures/server/resolvers/socket/public/available-to-everyone/index.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/public/available-to-everyone/index.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/socket/public/available-to-everyone/index.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/public/available-to-everyone/index.js diff --git a/packages/ws-base/tests/fixtures/server/resolvers/socket/ws-handler.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/ws-handler.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/resolvers/socket/ws-handler.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/resolvers/socket/ws-handler.js diff --git a/packages/ws-base/tests/fixtures/server/server.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/server.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/server.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/server.js diff --git a/packages/ws-base/tests/fixtures/server/token.js b/packages/@jsonql/socketio/ws-base/tests/fixtures/server/token.js similarity index 100% rename from packages/ws-base/tests/fixtures/server/token.js rename to packages/@jsonql/socketio/ws-base/tests/fixtures/server/token.js diff --git a/packages/ws-base/tests/object.test.js b/packages/@jsonql/socketio/ws-base/tests/object.test.js similarity index 100% rename from packages/ws-base/tests/object.test.js rename to packages/@jsonql/socketio/ws-base/tests/object.test.js diff --git a/packages/ws-base/tests/socket-io-handshake.test.js b/packages/@jsonql/socketio/ws-base/tests/socket-io-handshake.test.js similarity index 100% rename from packages/ws-base/tests/socket-io-handshake.test.js rename to packages/@jsonql/socketio/ws-base/tests/socket-io-handshake.test.js diff --git a/packages/ws-base/tests/socket-io-roundtrip.test.js b/packages/@jsonql/socketio/ws-base/tests/socket-io-roundtrip.test.js similarity index 100% rename from packages/ws-base/tests/socket-io-roundtrip.test.js rename to packages/@jsonql/socketio/ws-base/tests/socket-io-roundtrip.test.js diff --git a/packages/ws-base/tests/socket-io.test.js b/packages/@jsonql/socketio/ws-base/tests/socket-io.test.js similarity index 100% rename from packages/ws-base/tests/socket-io.test.js rename to packages/@jsonql/socketio/ws-base/tests/socket-io.test.js diff --git a/packages/ws-base/tests/ws-connect-es6.test.js b/packages/@jsonql/socketio/ws-base/tests/ws-connect-es6.test.js similarity index 100% rename from packages/ws-base/tests/ws-connect-es6.test.js rename to packages/@jsonql/socketio/ws-base/tests/ws-connect-es6.test.js diff --git a/packages/ws-base/tests/ws-connect.test.js b/packages/@jsonql/socketio/ws-base/tests/ws-connect.test.js similarity index 100% rename from packages/ws-base/tests/ws-connect.test.js rename to packages/@jsonql/socketio/ws-base/tests/ws-connect.test.js diff --git a/packages/ws-base/tests/ws-jwt-auth.test.js b/packages/@jsonql/socketio/ws-base/tests/ws-jwt-auth.test.js similarity index 100% rename from packages/ws-base/tests/ws-jwt-auth.test.js rename to packages/@jsonql/socketio/ws-base/tests/ws-jwt-auth.test.js diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 3428ab843dd5ef418075bb9ff526175d385837fa..4fb8081d9458827666c8557415f79b6391db060d 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlWsClient=e()}(this,(function(){"use strict";var t=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 406},r.name.get=function(){return"Jsonql406Error"},Object.defineProperties(e,r),e}(Error),e=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"Jsonql500Error"},Object.defineProperties(e,r),e}(Error),r=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 403},r.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(e,r),e}(Error),n=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(e,r),e}(Error),o=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(e,r),e}(Error),a=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(e,r),e}(Error),i=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 404},r.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(e,r),e}(Error),u=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(e,r),e}(Error),c=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),f=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),s=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(e,r),e}(Error),l="data",p="error",h="jsonql",v="query",g="mutation",d="socket",y="TS",b="type",_="optional",m="enumv",w="args",j="checker",S="alias",O="__checked__",k="No message",$="__login__",E="__logout__",T="emit",A="acknowledge",P="error",z="nspSet",N="publicNamespace",x="onMessage",C="onResult",q="onError",R="onReady",M="onLogin",F="message",W="result",J="error",L="ready",U="login",I="token",D=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0},statusCode:{configurable:!0}};return r.name.get=function(){return"JsonqlError"},r.statusCode.get=function(){return-1},Object.defineProperties(e,r),e}(Error),V=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(l){if(Array.isArray(l))throw new s("",l);var p=l.message||k,h=l.detail||l;switch(!0){case l instanceof t:throw new t(p,h);case l instanceof e:throw new e(p,h);case l instanceof r:throw new r(p,h);case l instanceof n:throw new n(p,h);case l instanceof o:throw new o(p,h);case l instanceof a:throw new a(p,h);case l instanceof i:throw new i(p,h);case l instanceof u:throw new u(p,h);case l instanceof c:throw new c(p,h);case l instanceof f:throw new f(p,h);case l instanceof s:throw new s(p,h);case l instanceof V:throw new V(p,h);default:throw new D(p,h)}}var B="socket.io",Y=T,G="UKNNOWN RESULT!",K="on",Q="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},X="object"==typeof Q&&Q&&Q.Object===Object&&Q,Z="object"==typeof self&&self&&self.Object===Object&&self,tt=X||Z||Function("return this")(),et=tt.Symbol;function rt(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r=n?t:function(t,e,r){var n=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(r=r>o?o:r)<0&&(r+=o),o=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&jt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Ft=function(t){return!!nt(t)||null!=t&&""!==Mt(t)},Wt="[object Number]";function Jt(t){return function(t){return"number"==typeof t||ht(t)&&pt(t)==Wt}(t)&&t!=+t}var Lt="[object String]";function Ut(t){return"string"==typeof t||!nt(t)&&ht(t)&&pt(t)==Lt}var It=function(t){return!Ut(t)&&!Jt(parseFloat(t))},Dt=function(t){return""!==Mt(t)&&Ut(t)},Vt=function(t){return null!=t&&"boolean"==typeof t},Ht=function(t,e){return void 0===e&&(e=!0),void 0!==t&&""!==t&&""!==Mt(t)&&(!1===e||!0===e&&null!==t)},Bt=b,Yt=_,Gt=m,Kt=w,Qt=j,Xt=S,Zt="continue",te=function(t){switch(t){case"number":return It;case"string":return Dt;case"boolean":return Vt;default:return Ht}},ee=function(t,e){return void 0===e&&(e=""),!!nt(t)&&(""===e||""===Mt(e)||!(t.filter((function(t){return!te(e)(t)})).length>0))},re=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},ne=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!te(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ee(r,t)})).length};function oe(t,e){return function(r){return t(e(r))}}var ae=oe(Object.getPrototypeOf,Object),ie="[object Object]",ue=Function.prototype,ce=Object.prototype,fe=ue.toString,se=ce.hasOwnProperty,le=fe.call(Object);function pe(t){if(!ht(t)||pt(t)!=ie)return!1;var e=ae(t);if(null===e)return!0;var r=se.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&fe.call(r)==le}var he,ve=function(t,e,r){for(var n=-1,o=Object(t),a=r(t),i=a.length;i--;){var u=a[he?i:++n];if(!1===e(o[u],u,o))break}return t};var ge="[object Arguments]";function de(t){return ht(t)&&pt(t)==ge}var ye=Object.prototype,be=ye.hasOwnProperty,_e=ye.propertyIsEnumerable,me=de(function(){return arguments}())?de:function(t){return ht(t)&&be.call(t,"callee")&&!_e.call(t,"callee")};var we="object"==typeof exports&&exports&&!exports.nodeType&&exports,je=we&&"object"==typeof module&&module&&!module.nodeType&&module,Se=je&&je.exports===we?tt.Buffer:void 0,Oe=(Se?Se.isBuffer:void 0)||function(){return!1},ke=9007199254740991,$e=/^(?:0|[1-9]\d*)$/;function Ee(t,e){var r=typeof t;return!!(e=null==e?ke:e)&&("number"==r||"symbol"!=r&&$e.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Te}var Pe={};Pe["[object Float32Array]"]=Pe["[object Float64Array]"]=Pe["[object Int8Array]"]=Pe["[object Int16Array]"]=Pe["[object Int32Array]"]=Pe["[object Uint8Array]"]=Pe["[object Uint8ClampedArray]"]=Pe["[object Uint16Array]"]=Pe["[object Uint32Array]"]=!0,Pe["[object Arguments]"]=Pe["[object Array]"]=Pe["[object ArrayBuffer]"]=Pe["[object Boolean]"]=Pe["[object DataView]"]=Pe["[object Date]"]=Pe["[object Error]"]=Pe["[object Function]"]=Pe["[object Map]"]=Pe["[object Number]"]=Pe["[object Object]"]=Pe["[object RegExp]"]=Pe["[object Set]"]=Pe["[object String]"]=Pe["[object WeakMap]"]=!1;var ze,Ne="object"==typeof exports&&exports&&!exports.nodeType&&exports,xe=Ne&&"object"==typeof module&&module&&!module.nodeType&&module,Ce=xe&&xe.exports===Ne&&X.process,qe=function(){try{var t=xe&&xe.require&&xe.require("util").types;return t||Ce&&Ce.binding&&Ce.binding("util")}catch(t){}}(),Re=qe&&qe.isTypedArray,Me=Re?(ze=Re,function(t){return ze(t)}):function(t){return ht(t)&&Ae(t.length)&&!!Pe[pt(t)]},Fe=Object.prototype.hasOwnProperty;function We(t,e){var r=nt(t),n=!r&&me(t),o=!r&&!n&&Oe(t),a=!r&&!n&&!o&&Me(t),i=r||n||o||a,u=i?function(t,e){for(var r=-1,n=Array(t);++r-1},rr.prototype.set=function(t,e){var r=this.__data__,n=tr(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var nr,or=tt["__core-js_shared__"],ar=(nr=/[^.]+$/.exec(or&&or.keys&&or.keys.IE_PROTO||""))?"Symbol(src)_1."+nr:"";var ir=Function.prototype.toString;function ur(t){if(null!=t){try{return ir.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var cr=/^\[object .+?Constructor\]$/,fr=Function.prototype,sr=Object.prototype,lr=fr.toString,pr=sr.hasOwnProperty,hr=RegExp("^"+lr.call(pr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function vr(t){return!(!De(t)||function(t){return!!ar&&ar in t}(t))&&(Ge(t)?hr:cr).test(ur(t))}function gr(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return vr(r)?r:void 0}var dr=gr(tt,"Map"),yr=gr(Object,"create");var br="__lodash_hash_undefined__",_r=Object.prototype.hasOwnProperty;var mr=Object.prototype.hasOwnProperty;var wr="__lodash_hash_undefined__";function jr(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&zr?new Tr:void 0;for(a.set(t,e),a.set(e,t);++se.type.filter((function(t){var e;return void 0===r||(!1!==(e=re(t))?!ne({arg:r},e):!te(t)(r))})).length)})).length}return!1},Xn=function(t,e){var r,n,o,a,i;switch(!0){case"object"===t:return o=(n=e).arg,a=n.param,i=[o],Array.isArray(a.keys)&&a.keys.length&&i.push(a.keys),!Reflect.apply(Qn,null,i);case"array"===t:return!ee(e.arg);case!1!==(r=re(t)):return!ne(e,r);default:return!te(t)(e.arg)}},Zn=function(t,e){return void 0!==t?t:!0===e.optional&&void 0!==e.defaultvalue?e.defaultvalue:null},to=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ee(e))throw new D("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ee(t))throw new D("args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)");switch(!0){case t.length==e.length:return t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:var r=e[0].type;return t.map((function(t,n){return{arg:t,index:n,param:e[n]||{type:r,name:"_"}}}));case t.lengthe.length:var n=e.length,o=["any"];return t.map((function(t,r){var a=r>=n||!!e[r].optional,i=e[r]||{type:o,name:"_"+r};return{arg:a?Zn(t,i):t,index:r,param:i,optional:a}}));default:throw new D("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),a=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Ft(e)&&!(r.type.length>r.type.filter((function(e){return Xn(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Xn(e,t)})).length)}));return r?((n={})[p]=a,n[l]=o.map((function(t){return t.arg})),n):a},eo=function(){try{var t=gr(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function ro(t,e,r){"__proto__"==e&&eo?eo(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}function no(t,e,r){(void 0===r||Ze(t[e],r))&&(void 0!==r||e in t)||ro(t,e,r)}var oo="object"==typeof exports&&exports&&!exports.nodeType&&exports,ao=oo&&"object"==typeof module&&module&&!module.nodeType&&module,io=ao&&ao.exports===oo?tt.Buffer:void 0,uo=io?io.allocUnsafe:void 0;function co(t,e){var r,n,o=e?(r=t.buffer,n=new r.constructor(r.byteLength),new xr(n).set(new xr(r)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var fo=Object.create,so=function(){function t(){}return function(e){if(!De(e))return{};if(fo)return fo(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();function lo(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var po=Object.prototype.hasOwnProperty;function ho(t,e,r){var n=t[e];po.call(t,e)&&Ze(n,r)&&(void 0!==r||e in t)||ro(t,e,r)}var vo=Object.prototype.hasOwnProperty;function go(t){if(!De(t))return function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}(t);var e=Le(t),r=[];for(var n in t)("constructor"!=n||!e&&vo.call(t,n))&&r.push(n);return r}function yo(t){return Ke(t)?We(t,!0):go(t)}function bo(t){return function(t,e,r,n){var o=!r;r||(r={});for(var a=-1,i=e.length;++a0){if(++e>=Oo)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(So);function To(t,e){return Eo(function(t,e,r){return e=jo(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=jo(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Ao.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!De(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&Ee(e,r.length):"string"==n&&e in r)&&Ze(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return Reflect.apply(e,null,Zo(t))}),Reflect.apply(t,null,r))}};function oa(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return t.then((function(t){return e(t)}))}),Reflect.apply(t,null,r))}}function aa(t,e,r,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,e)&&Object.defineProperty(t,e,{set:r,get:null===n?function(){return null}:n}),t}function ia(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return void 0!==r&&r.value?r.value:r}function ua(t,e,r,n){void 0===n&&(n=!1);var o=ia(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function ca(t){return!!ta(t,"socket")&&t.socket}var fa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},sa=function(t){var e;return(e={}).args=t,e};function la(t,e,r){if(void 0===e&&(e=[]),void 0===r&&(r=!1),Ut(t)&&nt(e)){var n=sa(e);return!0===r?n:function(t,e){var r;return(r={})[t]=e,r[y]=[fa()],r}(t,n)}throw new s("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}var pa=new WeakMap,ha=new WeakMap;var va=function(){this.__suspend__=null,this.queueStore=new Set},ga={$suspend:{configurable:!0},$queues:{configurable:!0}};ga.$suspend.set=function(t){var e=this;if("boolean"!=typeof t)throw new Error("$suspend only accept Boolean value!");var r=this.__suspend__;this.__suspend__=t,this.logger("($suspend)","Change from "+r+" --\x3e "+t),!0===r&&!1===t&&setTimeout((function(){e.release()}),1)},va.prototype.$queue=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",t),this.queueStore.add(t)),this.__suspend__},ga.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},va.prototype.release=function(){var t=this,e=this.queueStore.size;if(this.logger("(release)","Release was called "+e),e>0){var r=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",r),r.forEach((function(e){t.logger(e),Reflect.apply(t.$trigger,t,e)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(va.prototype,ga);var da=function(t){function e(e){if("function"!=typeof e)throw new Error("Just die here the logger is not a function!");t.call(this,{logger:e})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"jsonql-ws-client-core"},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){void 0===e&&(e={}),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={$done:{configurable:!0}};return e.prototype.logger=function(){},e.prototype.$on=function(t,e,r){var n=this;void 0===r&&(r=null);this.validate(t,e);var o=this.takeFromStore(t);if(!1===o)return this.logger("($on)",t+" callback is not in lazy store"),this.addToNormalStore(t,"on",e,r);this.logger("($on)",t+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],u=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+t),n.run(e,i,r||u),a+=n.addToNormalStore(t,"on",e,r||u)})),a},e.prototype.$once=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=this.takeFromStore(t);this.normalStore;if(!1===n)return this.logger("($once)",t+" not in the lazy store"),this.addToNormalStore(t,"once",e,r);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],u=o[2];if(u&&"once"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);this.logger("($once)","call run for "+t),this.run(e,a,r||i),this.$off(t)},e.prototype.$only=function(t,e,r){var n=this;void 0===r&&(r=null),this.validate(t,e);var o=!1,a=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==a)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],u=o[2];if(u&&"only"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);n.logger("($only)","call run for "+t),n.run(e,a,r||i)})));return o},e.prototype.$onlyOnce=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=!1,o=this.takeFromStore(t);if(this.normalStore.has(t)||(this.logger("($onlyOnce)",t+" add to store"),n=this.addToNormalStore(t,"onlyOnce",e,r)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],u=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+t),this.run(e,i,r||u),this.$off(t)}return n},e.prototype.$replace=function(t,e,r,n){if(void 0===r&&(r=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(t);var o=this["$"+n];return this.logger("($replace)",t,e),Reflect.apply(o,this,[t,e,r])}throw new Error(n+" is not supported!")},e.prototype.$trigger=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1),this.validateEvt(t);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(t)){var i=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(a.get(t)),c=u.length,f=!1,s=0;s0;)n[o]=arguments[o+2];if(t.has(e)?(this.logger("(addToStore)",e+" existed"),r=t.get(e)):(this.logger("(addToStore)","create new Set for "+e),r=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(e,a)||r.add(n)}else this.checkContentExist(n,r)||(this.logger("(addToStore)","insert new",n),r.add(n));else r.add(n);return t.set(e,r),[t,r.size]},e.prototype.checkContentExist=function(t,e){return!!Array.from(e).filter((function(e){return e[0]===t[0]})).length},e.prototype.checkTypeInStore=function(t,e){this.validateEvt(t,e);var r=this.$get(t,!0);return!1===r||!r.filter((function(t){var r=t[3];return e!==r})).length},e.prototype.checkTypeInLazyStore=function(t,e){this.validateEvt(t,e);var r=this.lazyStore.get(t);return this.logger("(checkTypeInLazyStore)",r),!!r&&!!Array.from(r).filter((function(t){return t[2]!==e})).length},e.prototype.addToNormalStore=function(t,e,r,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",t,e,"try to add to normal store"),this.checkTypeInStore(t,e)){this.logger("(addToNormalStore)",e+" can add to "+t+" normal store");var o=this.hashFnToKey(r),a=[this.normalStore,t,o,r,n,e],i=Reflect.apply(this.addToStore,this,a),u=i[0],c=i[1];return this.normalStore=u,c}return!1},e.prototype.addToLazyStore=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1);var o=[this.lazyStore,t,this.toArray(e),r];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],u=a[1];return this.lazyStore=i,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){pa.set(this,t)},r.normalStore.get=function(){return pa.get(this)},r.lazyStore.set=function(t){ha.set(this,t)},r.lazyStore.get=function(){return ha.get(this)},e.prototype.hashFnToKey=function(t){return t.toString().split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)+""},Object.defineProperties(e.prototype,r),e}(va))),ya=function(t){var e=ca(t);if(!1!==e)return e;throw new i("Missing property in contract!")};function ba(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=ca(t);if(!1===r){if(e)return t;throw new D("socket not found in contract!")}var n,o={},a=0;for(var i in r){var u=r[i],c=u.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=u,n||u.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}(n):((r={})[z]=((e={})[h]=ya(n),e),r[N]=h,r)}var _a=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},ma=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},wa=function(t,e){Zo(e).forEach((function(e){t.$off(ea(e,T))}))};function ja(t,e,r){ta(t,p)?r(t[p]):ta(t,l)?e(t[l]):r({message:G,error:t})}function Sa(t,e,r,n,o){void 0===o&&(o=[]);var a=ea(e,T),i=n?W:C;return t.$trigger(a,[r,Zo(o)]),new Promise((function(n,o){t.$on(ea(e,r,i),(function(t){ja(t,n,o)}))}))}var Oa=function(t,e,r,n,o,a){return aa(t,"send",(function(t){var i=a?J:q;Ko(Zo(t),o.params,!0).then((function(o){if(!o[p]||!o[p].length)return Sa(e,r,n,a,t);e.$call(ea(r,n,i),[new s(n,o[p])])})).catch((function(t){e.$call(ea(r,n,i),[new s(n,t)])}))}),(function(){return function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return Ko(t,o.params,!0).then((function(t){return Sa(e,r,n,a,t)})).catch(H)}}))};function ka(t,e,r,n,o){return[ua(t,K,(function(t,o){if(Go(t)&&ra(o))switch(t){case W:e.$on(ea(r,n,C),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,q),t)}))}));break;case F:e.$only(ea(r,n,x),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,q),t)}))}));break;case L:e.$only(ea(r,n,q),o);break;default:e.$trigger(ea(r,n,q),new D(n,"Unknown event name "+t+"!"))}})),e,r,n,o]}var $a=function(t,e,r,n,o,a){return[ua(t,"myNamespace",r),e,r,n,o,a]},Ea=function(t,e,r,n,o,a){return[aa(t,C,(function(t){ra(t)&&e.$on(ea(r,n,C),(function(o){ja(o,t,(function(t){e.$trigger(ea(r,n,q),t)}))}))})),e,r,n,o,a]},Ta=function(t,e,r,n,o,a){return[aa(t,x,(function(t){if(ra(t)){e.$only(ea(r,n,x),(function(o){ja(o,t,(function(t){e.$trigger(ea(r,n,q),t)}))}))}})),e,r,n,o,a]},Aa=function(t,e,r,n,o,a){return[aa(t,q,(function(t){ra(t)&&e.$only(ea(r,n,q),t)})),e,r,n,o,a]};function Pa(t,e,r,n,o,a){var i=[$a];a?i.push(ka):i.push(Ea,Ta,Aa),i.push(Oa);var u=Reflect.apply(na,null,i);return Reflect.apply(u,null,[n,o,t,e,r,a])}function za(t,e,r,n,o){return function(){for(var a=[],i=arguments.length;i--;)a[i]=arguments[i];return Ko(a,n.params,!0).then((function(n){return Sa(t,e,r,o,n)})).catch(H)}}var Na,xa,Ca=function(t,e,r){return[ua(t,r.loginHandlerName,(function(t){if(t&&Go(t))return e.$trigger($,[t]);throw new s(r.loginHandlerName,"Unexpected token "+t)})),e,r]},qa=function(t,e,r){return ua(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(E,t)}))};function Ra(t,e,r){var n={},o=e.nspSet,a=t.useCallbackStyle;for(var i in o){var u=o[i];for(var c in u){var f=u[c];n=ua(n,c,Pa(i,c,f,za(r,i,c,f,a),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Ma(t,e,r){var n=e.nspSet,o=t.useCallbackStyle,a=t.enableAuth,i=[Ra];return o?i.push((function(t){return function(t,e,r,n){return ua(t,K,(function(t,n){if(Go(t)&&ra(n))switch(t){case J:for(var o in r)e.$on(ea(o,J),n);break;case U:e.$only(U,n);break;case L:e.$on(L,n);break;default:e.$trigger(J,new D(K,"Unknown event name "+t+"!"))}}))}(t,r,n)})):(i.push((function(t){return function(t,e,r){return aa(t,q,(function(t){if(ra(t))for(var n in r)e.$on(ea(n,q),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return aa(t,R,(function(t){ra(t)&&e.$on(R,t)}))}(t,r)})),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?aa(t,M,(function(t){ra(t)&&e.$only(M,t)})):t}(e,r,t)}))),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?na(Ca,qa)(t,e,r):t}(e,r,t)})),Reflect.apply(oa,null,i)(t,e,r)}var Fa=["roundtip","handshake"],Wa={useCallbackStyle:Qo(!1,["boolean"]),loginHandlerName:Qo("login",["string"]),logoutHandlerName:Qo("logout",["string"]),loginMethod:Qo("handshake",["string"],(Na={},Na[m]=Fa,Na)),useJwt:Qo(!0,["boolean","string"]),hostname:Qo(!1,["string"]),namespace:Qo(h,["string"]),wsOptions:Qo({},["object"]),contract:Qo({},["object"],(xa={},xa[j]=function(t){return!!function(t){return pe(t)&&(ta(t,v)||ta(t,g)||ta(t,d))}(t)&&t},xa)),enableAuth:Qo(!1,["boolean"]),token:Qo(!1,["string"])},Ja={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};function La(t,e){return function(t,e,r){return ia(t,O)?Promise.resolve(Object.assign(t,r)):Xo(t,e,r)}(t,Wa,Object.assign(Ja,e)).then((function(t){return t.hostname||(t.hostname=ma()),t.wssPath=_a([t.hostname,t.namespace].join("/"),t.serverType),t}))}var Ua=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["[jsonql-ws-client-core]"].concat(t))};var Ia={version:"version: 1.0.3 module: umd",serverType:"ws"},Da=null;"undefined"!=typeof WebSocket?Da=WebSocket:"undefined"!=typeof MozWebSocket?Da=MozWebSocket:void 0!==Q?Da=Q.WebSocket||Q.MozWebSocket:"undefined"!=typeof window?Da=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Da=self.WebSocket||self.MozWebSocket);var Va=function(t){var e=t.toLowerCase();return e.indexOf("http")>-1?e.indexOf("https")>-1?e.replace("https","wss"):e.replace("http","ws"):e};function Ha(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Va(e))}:function(e,r){var n=Va(e),o=r&&"string"==typeof r?n+"?"+I+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Ba(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ya=function(t,e,r){var n=r.useCallbackStyle,o=r.log,a=n?J:q,i=n?W:C;e.$only(ea(t,Y),(function(r,n){o("notLoginHandler hijack the ws call",t,r,n);var u={message:"NOT LOGIN"};e.$call(ea(t,r,a),[u]),e.$call(ea(t,r,i),[{error:u}])}))},Ga=function(t){return t.length>1&&t[0]};function Ka(t,e,r,n,o,a){var i=Ga(o),u=!1,c=t.log;o.forEach((function(o){if(u=i===o,a[o]){c("call bindWsHandler",u,o);var f=[o,a[o],r,u,t];if(t.serverType===B){var s=e.nspSet;f.push(s[o])}Reflect.apply(n,null,f)}else Ya(o,r,t)})),r.$on(E,(function(){c("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?J:q;e.forEach((function(e){t.$call(ea(e,o),[{message:r,namespace:e}])}))}(r,o,E),o.forEach((function(e){wa(r,e),a[e]=!1,Ya(e,r,t)}))}))}var Qa=["__reply__","__event__","__data__"],Xa=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Qa.filter((function(t){return ta(e,t)})).length===Qa.length&&e)}(Go(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new D("payload can not be decoded",t)},Za=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["local log"].concat(t))},ti=function(t,e,r,n,o){var a=[e];r&&a.push(r),a.push(o);var i=Reflect.apply(ea,null,a),u=n.data||n;t.$trigger(i,[u])};function ei(t,e,r,n,o){var a=o.log||Za;a("wsMainHandler log test");var i=o.useCallbackStyle,u=i?L:R,c=i?U:M,f=i?F:x,s=i?W:C,l=i?J:q;e.onopen=function(){a("ws.onopen listened"),r.$call(u,t),n&&(a("isPrivate and fire the "+c),r.$call(c,t)),r.$only(ea(t,T),(function(t,r){a("calling server",t,r),e.send(function(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(la(t,e,r))}(t,r))}))},e.onmessage=function(e){try{var n=Xa(e),o=n.resolverName,i=n.type;switch(a("Hear from server",i,n),i){case T:var u=ea(t,o,f),c=r.$trigger(u,[n]);a("EMIT_REPLY_TYPE",u,c);break;case A:var p=ea(t,o,s);r.$trigger(p,[n]);break;case P:a("ERROR_TYPE"),ti(r,t,o,n,l);break;default:a("Unhandled event!",n),ti(r,t,o,n,l)}}catch(e){console.error("ws.onmessage error",e),ti(r,t,!1,e,l)}},e.onclose=function(){a("ws.onclose callback")},r.$on(E,(function(){try{a("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}var ri=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth)i=!0,c=(u=function(t,e){var r=[];for(var n in t)n===e?r[1]=n:r[0]=n;return r}(o,a)).map((function(e,n){var o,a,i;return 0===n?r?(t.token=r,(o={})[e]=function(t,e){var r=e.hostname,n=e.wssPath,o=e.token,a=e.wsOptions,i=e.nspAuthClient,u=t?[r,t].join("/"):n;if(o&&"string"!=typeof o)throw new Error("Expect token to be string, but got "+o);return i(u,o,a)}(e,t),o):((a={})[e]=!1,a):((i={})[e]=Ba(e,t),i)})).reduce((function(t,e){return Object.assign(t,e)}),{});else{var f=(n=o,Object.keys(n)[0]);u.push(f),c[f]=Ba(!1,t)}return{nsps:c,namespaces:u,login:i}};return function(t,e){return void 0===e&&(e={}),function(r){return La(r,e).then((function(t){var e=t.log;return e&&"function"==typeof e?e("wsClientCore config opts",t):t.log=Ua,t})).then((function(t){return{opts:t,nspMap:ba(t),ee:t.eventEmitter||new da(t.log)}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ma(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ha(t),r=Ha(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ei],o=t.token,a=ri(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ka,null,n.concat([u,i])),c&&r.$only($,(function(o){wa(r,u);var a=ri(t,e,o);Reflect.apply(Ka,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Da),Ia)})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlWsClient=e()}(this,(function(){"use strict";var t=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 406},r.name.get=function(){return"Jsonql406Error"},Object.defineProperties(e,r),e}(Error),e=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"Jsonql500Error"},Object.defineProperties(e,r),e}(Error),r=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 403},r.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(e,r),e}(Error),n=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(e,r),e}(Error),o=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(e,r),e}(Error),a=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(e,r),e}(Error),i=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 404},r.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(e,r),e}(Error),u=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(e,r),e}(Error),c=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),f=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),s=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(e,r),e}(Error),l="data",p="error",h="jsonql",v="query",g="mutation",d="socket",y="TS",b="type",_="optional",m="enumv",w="args",j="checker",S="alias",O="__checked__",k="No message",E="__login__",$="__logout__",T="emit",A="acknowledge",P="error",z="nspSet",N="publicNamespace",C="onMessage",x="onResult",q="onError",R="onReady",M="onLogin",F="message",W="result",L="error",J="ready",I="login",U="token",D=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0},statusCode:{configurable:!0}};return r.name.get=function(){return"JsonqlError"},r.statusCode.get=function(){return-1},Object.defineProperties(e,r),e}(Error),V=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(l){if(Array.isArray(l))throw new s("",l);var p=l.message||k,h=l.detail||l;switch(!0){case l instanceof t:throw new t(p,h);case l instanceof e:throw new e(p,h);case l instanceof r:throw new r(p,h);case l instanceof n:throw new n(p,h);case l instanceof o:throw new o(p,h);case l instanceof a:throw new a(p,h);case l instanceof i:throw new i(p,h);case l instanceof u:throw new u(p,h);case l instanceof c:throw new c(p,h);case l instanceof f:throw new f(p,h);case l instanceof s:throw new s(p,h);case l instanceof V:throw new V(p,h);default:throw new D(p,h)}}var B="socket.io",Y=T,G="UKNNOWN RESULT!",K="on",Q="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},X="object"==typeof Q&&Q&&Q.Object===Object&&Q,Z="object"==typeof self&&self&&self.Object===Object&&self,tt=X||Z||Function("return this")(),et=tt.Symbol;function rt(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r=n?t:function(t,e,r){var n=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(r=r>o?o:r)<0&&(r+=o),o=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&jt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Ft=function(t){return!!nt(t)||null!=t&&""!==Mt(t)},Wt="[object Number]";function Lt(t){return function(t){return"number"==typeof t||ht(t)&&pt(t)==Wt}(t)&&t!=+t}var Jt="[object String]";function It(t){return"string"==typeof t||!nt(t)&&ht(t)&&pt(t)==Jt}var Ut=function(t){return!It(t)&&!Lt(parseFloat(t))},Dt=function(t){return""!==Mt(t)&&It(t)},Vt=function(t){return null!=t&&"boolean"==typeof t},Ht=function(t,e){return void 0===e&&(e=!0),void 0!==t&&""!==t&&""!==Mt(t)&&(!1===e||!0===e&&null!==t)},Bt=b,Yt=_,Gt=m,Kt=w,Qt=j,Xt=S,Zt="continue",te=function(t){switch(t){case"number":return Ut;case"string":return Dt;case"boolean":return Vt;default:return Ht}},ee=function(t,e){return void 0===e&&(e=""),!!nt(t)&&(""===e||""===Mt(e)||!(t.filter((function(t){return!te(e)(t)})).length>0))},re=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},ne=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!te(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ee(r,t)})).length};function oe(t,e){return function(r){return t(e(r))}}var ae=oe(Object.getPrototypeOf,Object),ie="[object Object]",ue=Function.prototype,ce=Object.prototype,fe=ue.toString,se=ce.hasOwnProperty,le=fe.call(Object);function pe(t){if(!ht(t)||pt(t)!=ie)return!1;var e=ae(t);if(null===e)return!0;var r=se.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&fe.call(r)==le}var he,ve=function(t,e,r){for(var n=-1,o=Object(t),a=r(t),i=a.length;i--;){var u=a[he?i:++n];if(!1===e(o[u],u,o))break}return t};var ge="[object Arguments]";function de(t){return ht(t)&&pt(t)==ge}var ye=Object.prototype,be=ye.hasOwnProperty,_e=ye.propertyIsEnumerable,me=de(function(){return arguments}())?de:function(t){return ht(t)&&be.call(t,"callee")&&!_e.call(t,"callee")};var we="object"==typeof exports&&exports&&!exports.nodeType&&exports,je=we&&"object"==typeof module&&module&&!module.nodeType&&module,Se=je&&je.exports===we?tt.Buffer:void 0,Oe=(Se?Se.isBuffer:void 0)||function(){return!1},ke=9007199254740991,Ee=/^(?:0|[1-9]\d*)$/;function $e(t,e){var r=typeof t;return!!(e=null==e?ke:e)&&("number"==r||"symbol"!=r&&Ee.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Te}var Pe={};Pe["[object Float32Array]"]=Pe["[object Float64Array]"]=Pe["[object Int8Array]"]=Pe["[object Int16Array]"]=Pe["[object Int32Array]"]=Pe["[object Uint8Array]"]=Pe["[object Uint8ClampedArray]"]=Pe["[object Uint16Array]"]=Pe["[object Uint32Array]"]=!0,Pe["[object Arguments]"]=Pe["[object Array]"]=Pe["[object ArrayBuffer]"]=Pe["[object Boolean]"]=Pe["[object DataView]"]=Pe["[object Date]"]=Pe["[object Error]"]=Pe["[object Function]"]=Pe["[object Map]"]=Pe["[object Number]"]=Pe["[object Object]"]=Pe["[object RegExp]"]=Pe["[object Set]"]=Pe["[object String]"]=Pe["[object WeakMap]"]=!1;var ze,Ne="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ce=Ne&&"object"==typeof module&&module&&!module.nodeType&&module,xe=Ce&&Ce.exports===Ne&&X.process,qe=function(){try{var t=Ce&&Ce.require&&Ce.require("util").types;return t||xe&&xe.binding&&xe.binding("util")}catch(t){}}(),Re=qe&&qe.isTypedArray,Me=Re?(ze=Re,function(t){return ze(t)}):function(t){return ht(t)&&Ae(t.length)&&!!Pe[pt(t)]},Fe=Object.prototype.hasOwnProperty;function We(t,e){var r=nt(t),n=!r&&me(t),o=!r&&!n&&Oe(t),a=!r&&!n&&!o&&Me(t),i=r||n||o||a,u=i?function(t,e){for(var r=-1,n=Array(t);++r-1},rr.prototype.set=function(t,e){var r=this.__data__,n=tr(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var nr,or=tt["__core-js_shared__"],ar=(nr=/[^.]+$/.exec(or&&or.keys&&or.keys.IE_PROTO||""))?"Symbol(src)_1."+nr:"";var ir=Function.prototype.toString;function ur(t){if(null!=t){try{return ir.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var cr=/^\[object .+?Constructor\]$/,fr=Function.prototype,sr=Object.prototype,lr=fr.toString,pr=sr.hasOwnProperty,hr=RegExp("^"+lr.call(pr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function vr(t){return!(!De(t)||function(t){return!!ar&&ar in t}(t))&&(Ge(t)?hr:cr).test(ur(t))}function gr(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return vr(r)?r:void 0}var dr=gr(tt,"Map"),yr=gr(Object,"create");var br="__lodash_hash_undefined__",_r=Object.prototype.hasOwnProperty;var mr=Object.prototype.hasOwnProperty;var wr="__lodash_hash_undefined__";function jr(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&zr?new Tr:void 0;for(a.set(t,e),a.set(e,t);++se.type.filter((function(t){var e;return void 0===r||(!1!==(e=re(t))?!ne({arg:r},e):!te(t)(r))})).length)})).length}return!1},Xn=function(t,e){var r,n,o,a,i;switch(!0){case"object"===t:return o=(n=e).arg,a=n.param,i=[o],Array.isArray(a.keys)&&a.keys.length&&i.push(a.keys),!Reflect.apply(Qn,null,i);case"array"===t:return!ee(e.arg);case!1!==(r=re(t)):return!ne(e,r);default:return!te(t)(e.arg)}},Zn=function(t,e){return void 0!==t?t:!0===e.optional&&void 0!==e.defaultvalue?e.defaultvalue:null},to=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ee(e))throw new D("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ee(t))throw new D("args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)");switch(!0){case t.length==e.length:return t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:var r=e[0].type;return t.map((function(t,n){return{arg:t,index:n,param:e[n]||{type:r,name:"_"}}}));case t.lengthe.length:var n=e.length,o=["any"];return t.map((function(t,r){var a=r>=n||!!e[r].optional,i=e[r]||{type:o,name:"_"+r};return{arg:a?Zn(t,i):t,index:r,param:i,optional:a}}));default:throw new D("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),a=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Ft(e)&&!(r.type.length>r.type.filter((function(e){return Xn(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Xn(e,t)})).length)}));return r?((n={})[p]=a,n[l]=o.map((function(t){return t.arg})),n):a},eo=function(){try{var t=gr(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function ro(t,e,r){"__proto__"==e&&eo?eo(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}function no(t,e,r){(void 0===r||Ze(t[e],r))&&(void 0!==r||e in t)||ro(t,e,r)}var oo="object"==typeof exports&&exports&&!exports.nodeType&&exports,ao=oo&&"object"==typeof module&&module&&!module.nodeType&&module,io=ao&&ao.exports===oo?tt.Buffer:void 0,uo=io?io.allocUnsafe:void 0;function co(t,e){var r,n,o=e?(r=t.buffer,n=new r.constructor(r.byteLength),new Cr(n).set(new Cr(r)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var fo=Object.create,so=function(){function t(){}return function(e){if(!De(e))return{};if(fo)return fo(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();function lo(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var po=Object.prototype.hasOwnProperty;function ho(t,e,r){var n=t[e];po.call(t,e)&&Ze(n,r)&&(void 0!==r||e in t)||ro(t,e,r)}var vo=Object.prototype.hasOwnProperty;function go(t){if(!De(t))return function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}(t);var e=Je(t),r=[];for(var n in t)("constructor"!=n||!e&&vo.call(t,n))&&r.push(n);return r}function yo(t){return Ke(t)?We(t,!0):go(t)}function bo(t){return function(t,e,r,n){var o=!r;r||(r={});for(var a=-1,i=e.length;++a0){if(++e>=Oo)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(So);function To(t,e){return $o(function(t,e,r){return e=jo(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=jo(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Ao.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!De(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&$e(e,r.length):"string"==n&&e in r)&&Ze(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return Reflect.apply(e,null,Zo(t))}),Reflect.apply(t,null,r))}};function oa(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return t.then((function(t){return e(t)}))}),Reflect.apply(t,null,r))}}function aa(t,e,r,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,e)&&Object.defineProperty(t,e,{set:r,get:null===n?function(){return null}:n}),t}function ia(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return void 0!==r&&r.value?r.value:r}function ua(t,e,r,n){void 0===n&&(n=!1);var o=ia(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function ca(t){return!!ta(t,"socket")&&t.socket}var fa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},sa=function(t){var e;return(e={}).args=t,e};function la(t,e,r){if(void 0===e&&(e=[]),void 0===r&&(r=!1),It(t)&&nt(e)){var n=sa(e);return!0===r?n:function(t,e){var r;return(r={})[t]=e,r[y]=[fa()],r}(t,n)}throw new s("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}var pa=new WeakMap,ha=new WeakMap;var va=function(){this.__suspend__=null,this.queueStore=new Set},ga={$suspend:{configurable:!0},$queues:{configurable:!0}};ga.$suspend.set=function(t){var e=this;if("boolean"!=typeof t)throw new Error("$suspend only accept Boolean value!");var r=this.__suspend__;this.__suspend__=t,this.logger("($suspend)","Change from "+r+" --\x3e "+t),!0===r&&!1===t&&setTimeout((function(){e.release()}),1)},va.prototype.$queue=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",t),this.queueStore.add(t)),this.__suspend__},ga.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},va.prototype.release=function(){var t=this,e=this.queueStore.size;if(this.logger("(release)","Release was called "+e),e>0){var r=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",r),r.forEach((function(e){t.logger(e),Reflect.apply(t.$trigger,t,e)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(va.prototype,ga);var da=function(t){function e(e){if("function"!=typeof e)throw new Error("Just die here the logger is not a function!");t.call(this,{logger:e})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"jsonql-ws-client-core"},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){void 0===e&&(e={}),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={$done:{configurable:!0}};return e.prototype.logger=function(){},e.prototype.$on=function(t,e,r){var n=this;void 0===r&&(r=null);this.validate(t,e);var o=this.takeFromStore(t);if(!1===o)return this.logger("($on)",t+" callback is not in lazy store"),this.addToNormalStore(t,"on",e,r);this.logger("($on)",t+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],u=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+t),n.run(e,i,r||u),a+=n.addToNormalStore(t,"on",e,r||u)})),a},e.prototype.$once=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=this.takeFromStore(t);this.normalStore;if(!1===n)return this.logger("($once)",t+" not in the lazy store"),this.addToNormalStore(t,"once",e,r);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],u=o[2];if(u&&"once"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);this.logger("($once)","call run for "+t),this.run(e,a,r||i),this.$off(t)},e.prototype.$only=function(t,e,r){var n=this;void 0===r&&(r=null),this.validate(t,e);var o=!1,a=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==a)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],u=o[2];if(u&&"only"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);n.logger("($only)","call run for "+t),n.run(e,a,r||i)})));return o},e.prototype.$onlyOnce=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=!1,o=this.takeFromStore(t);if(this.normalStore.has(t)||(this.logger("($onlyOnce)",t+" add to store"),n=this.addToNormalStore(t,"onlyOnce",e,r)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],u=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+t),this.run(e,i,r||u),this.$off(t)}return n},e.prototype.$replace=function(t,e,r,n){if(void 0===r&&(r=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(t);var o=this["$"+n];return this.logger("($replace)",t,e),Reflect.apply(o,this,[t,e,r])}throw new Error(n+" is not supported!")},e.prototype.$trigger=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1),this.validateEvt(t);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(t)){var i=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(a.get(t)),c=u.length,f=!1,s=0;s0;)n[o]=arguments[o+2];if(t.has(e)?(this.logger("(addToStore)",e+" existed"),r=t.get(e)):(this.logger("(addToStore)","create new Set for "+e),r=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(e,a)||r.add(n)}else this.checkContentExist(n,r)||(this.logger("(addToStore)","insert new",n),r.add(n));else r.add(n);return t.set(e,r),[t,r.size]},e.prototype.checkContentExist=function(t,e){return!!Array.from(e).filter((function(e){return e[0]===t[0]})).length},e.prototype.checkTypeInStore=function(t,e){this.validateEvt(t,e);var r=this.$get(t,!0);return!1===r||!r.filter((function(t){var r=t[3];return e!==r})).length},e.prototype.checkTypeInLazyStore=function(t,e){this.validateEvt(t,e);var r=this.lazyStore.get(t);return this.logger("(checkTypeInLazyStore)",r),!!r&&!!Array.from(r).filter((function(t){return t[2]!==e})).length},e.prototype.addToNormalStore=function(t,e,r,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",t,e,"try to add to normal store"),this.checkTypeInStore(t,e)){this.logger("(addToNormalStore)",e+" can add to "+t+" normal store");var o=this.hashFnToKey(r),a=[this.normalStore,t,o,r,n,e],i=Reflect.apply(this.addToStore,this,a),u=i[0],c=i[1];return this.normalStore=u,c}return!1},e.prototype.addToLazyStore=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1);var o=[this.lazyStore,t,this.toArray(e),r];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],u=a[1];return this.lazyStore=i,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){pa.set(this,t)},r.normalStore.get=function(){return pa.get(this)},r.lazyStore.set=function(t){ha.set(this,t)},r.lazyStore.get=function(){return ha.get(this)},e.prototype.hashFnToKey=function(t){return function(t){return t.split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)}(t.toString())+""},Object.defineProperties(e.prototype,r),e}(va))),ya=function(t){var e=ca(t);if(!1!==e)return e;throw new i("Missing property in contract!")};function ba(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=ca(t);if(!1===r){if(e)return t;throw new D("socket not found in contract!")}var n,o={},a=0;for(var i in r){var u=r[i],c=u.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=u,n||u.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}(n):((r={})[z]=((e={})[h]=ya(n),e),r[N]=h,r)}var _a=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},ma=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},wa=function(t,e){Zo(e).forEach((function(e){t.$off(ea(e,T))}))};function ja(t,e,r){ta(t,p)?r(t[p]):ta(t,l)?e(t[l]):r({message:G,error:t})}function Sa(t,e,r,n,o){void 0===o&&(o=[]);var a=ea(e,T),i=n?W:x;return t.$trigger(a,[r,Zo(o)]),new Promise((function(n,o){t.$on(ea(e,r,i),(function(t){ja(t,n,o)}))}))}var Oa=function(t,e,r,n,o,a){return aa(t,"send",(function(t){var i=a?L:q;Ko(Zo(t),o.params,!0).then((function(o){if(!o[p]||!o[p].length)return Sa(e,r,n,a,t);e.$call(ea(r,n,i),[new s(n,o[p])])})).catch((function(t){e.$call(ea(r,n,i),[new s(n,t)])}))}),(function(){return function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return Ko(t,o.params,!0).then((function(t){return Sa(e,r,n,a,t)})).catch(H)}}))};function ka(t,e,r,n,o){return[ua(t,K,(function(t,o){if(Go(t)&&ra(o))switch(t){case W:e.$on(ea(r,n,x),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,q),t)}))}));break;case F:e.$only(ea(r,n,C),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,q),t)}))}));break;case J:e.$only(ea(r,n,q),o);break;default:e.$trigger(ea(r,n,q),new D(n,"Unknown event name "+t+"!"))}})),e,r,n,o]}var Ea=function(t,e,r,n,o,a){return[ua(t,"myNamespace",r),e,r,n,o,a]},$a=function(t,e,r,n,o,a){return[aa(t,x,(function(t){ra(t)&&e.$on(ea(r,n,x),(function(o){ja(o,t,(function(t){e.$trigger(ea(r,n,q),t)}))}))})),e,r,n,o,a]},Ta=function(t,e,r,n,o,a){return[aa(t,C,(function(t){if(ra(t)){e.$only(ea(r,n,C),(function(o){ja(o,t,(function(t){e.$trigger(ea(r,n,q),t)}))}))}})),e,r,n,o,a]},Aa=function(t,e,r,n,o,a){return[aa(t,q,(function(t){ra(t)&&e.$only(ea(r,n,q),t)})),e,r,n,o,a]};function Pa(t,e,r,n,o,a){var i=[Ea];a?i.push(ka):i.push($a,Ta,Aa),i.push(Oa);var u=Reflect.apply(na,null,i);return Reflect.apply(u,null,[n,o,t,e,r,a])}function za(t,e,r,n,o){return function(){for(var a=[],i=arguments.length;i--;)a[i]=arguments[i];return Ko(a,n.params,!0).then((function(n){return Sa(t,e,r,o,n)})).catch(H)}}var Na,Ca,xa=function(t,e,r){return[ua(t,r.loginHandlerName,(function(t){if(t&&Go(t))return e.$trigger(E,[t]);throw new s(r.loginHandlerName,"Unexpected token "+t)})),e,r]},qa=function(t,e,r){return ua(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger($,t)}))};function Ra(t,e,r){var n={},o=e.nspSet,a=t.useCallbackStyle;for(var i in o){var u=o[i];for(var c in u){var f=u[c];n=ua(n,c,Pa(i,c,f,za(r,i,c,f,a),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Ma(t,e,r){var n=e.nspSet,o=t.useCallbackStyle,a=t.enableAuth,i=[Ra];return o?i.push((function(t){return function(t,e,r,n){return ua(t,K,(function(t,n){if(Go(t)&&ra(n))switch(t){case L:for(var o in r)e.$on(ea(o,L),n);break;case I:e.$only(I,n);break;case J:e.$on(J,n);break;default:e.$trigger(L,new D(K,"Unknown event name "+t+"!"))}}))}(t,r,n)})):(i.push((function(t){return function(t,e,r){return aa(t,q,(function(t){if(ra(t))for(var n in r)e.$on(ea(n,q),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return aa(t,R,(function(t){ra(t)&&e.$on(R,t)}))}(t,r)})),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?aa(t,M,(function(t){ra(t)&&e.$only(M,t)})):t}(e,r,t)}))),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?na(xa,qa)(t,e,r):t}(e,r,t)})),Reflect.apply(oa,null,i)(t,e,r)}var Fa=["roundtip","handshake"],Wa={useCallbackStyle:Qo(!1,["boolean"]),loginHandlerName:Qo("login",["string"]),logoutHandlerName:Qo("logout",["string"]),loginMethod:Qo("handshake",["string"],(Na={},Na[m]=Fa,Na)),useJwt:Qo(!0,["boolean","string"]),hostname:Qo(!1,["string"]),namespace:Qo(h,["string"]),wsOptions:Qo({},["object"]),contract:Qo({},["object"],(Ca={},Ca[j]=function(t){return!!function(t){return pe(t)&&(ta(t,v)||ta(t,g)||ta(t,d))}(t)&&t},Ca)),enableAuth:Qo(!1,["boolean"]),token:Qo(!1,["string"])},La={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};function Ja(t,e){return function(t,e,r){return ia(t,O)?(console.info("[jsonql-ws-client-core] found CHECKED_KEY passed"),Promise.resolve(Object.assign(t,r))):Xo(t,e,r)}(t,Wa,Object.assign(La,e)).then((function(t){return t.hostname||(t.hostname=ma()),t.wssPath=_a([t.hostname,t.namespace].join("/"),t.serverType),t}))}var Ia=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["[jsonql-ws-client-core]"].concat(t))},Ua=function(t){var e=t.log;return t.eventEmitter?(e("eventEmitter is:",eventEmitter.name),t.eventEmitter):(e("Create a new Event Emitter"),new da(t.log))};var Da={version:"version: 1.0.4 module: umd",serverType:"ws"},Va=null;"undefined"!=typeof WebSocket?Va=WebSocket:"undefined"!=typeof MozWebSocket?Va=MozWebSocket:void 0!==Q?Va=Q.WebSocket||Q.MozWebSocket:"undefined"!=typeof window?Va=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Va=self.WebSocket||self.MozWebSocket);var Ha=function(t){var e=t.toLowerCase();return e.indexOf("http")>-1?e.indexOf("https")>-1?e.replace("https","wss"):e.replace("http","ws"):e};function Ba(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ha(e))}:function(e,r){var n=Ha(e),o=r&&"string"==typeof r?n+"?"+U+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Ya(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ga=function(t,e,r){var n=r.useCallbackStyle,o=r.log,a=n?L:q,i=n?W:x;e.$only(ea(t,Y),(function(r,n){o("[notLoginHandler] hijack the ws call",t,r,n);var u={message:"NOT LOGIN"};e.$call(ea(t,r,a),[u]),e.$call(ea(t,r,i),[{error:u}])}))},Ka=function(t){return t.length>1&&t[0]};function Qa(t,e,r,n,o,a){var i=Ka(o),u=!1,c=t.log;o.forEach((function(o){if(u=i===o,a[o]){c("[call bindWsHandler]",u,o);var f=[o,a[o],r,u,t];if(t.serverType===B){var s=e.nspSet;f.push(s[o])}Reflect.apply(n,null,f)}else Ga(o,r,t)})),r.$on($,(function(){c("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?L:q;e.forEach((function(e){t.$call(ea(e,o),[{message:r,namespace:e}])}))}(r,o,$),o.forEach((function(e){wa(r,e),a[e]=!1,Ga(e,r,t)}))}))}var Xa=["__reply__","__event__","__data__"],Za=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Xa.filter((function(t){return ta(e,t)})).length===Xa.length&&e)}(Go(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new D("payload can not be decoded",t)},ti=function(t,e,r,n,o){var a=[e];r&&a.push(r),a.push(o);var i=Reflect.apply(ea,null,a),u=n.data||n;t.$trigger(i,[u])};function ei(t,e,r,n,o){var a=o.useCallbackStyle,i=o.log;i("wsMainHandler log test");var u=a?J:R,c=a?I:M,f=a?F:C,s=a?W:x,l=a?L:q;e.onopen=function(){i("ws.onopen listened"),r.$call(u,t),n&&(i("isPrivate and fire the "+c),r.$call(c,t)),r.$only(ea(t,T),(function(t,r){i("calling server",t,r),e.send(function(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(la(t,e,r))}(t,r))}))},e.onmessage=function(e){try{var n=Za(e),o=n.resolverName,a=n.type;switch(i("Hear from server",a,n),a){case T:var u=ea(t,o,f),c=r.$trigger(u,[n]);i("EMIT_REPLY_TYPE",u,c);break;case A:var p=ea(t,o,s);r.$trigger(p,[n]);break;case P:i("ERROR_TYPE"),ti(r,t,o,n,l);break;default:i("Unhandled event!",n),ti(r,t,o,n,l)}}catch(e){console.error("ws.onmessage error",e),ti(r,t,!1,e,l)}},e.onclose=function(){i("ws.onclose callback")},r.$on($,(function(){try{i("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}var ri=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth)i=!0,c=(u=function(t,e){var r=[];for(var n in t)n===e?r[1]=n:r[0]=n;return r}(o,a)).map((function(e,n){var o,a,i;return 0===n?r?(t.token=r,(o={})[e]=function(t,e){var r=e.hostname,n=e.wssPath,o=e.token,a=e.wsOptions,i=e.nspAuthClient,u=t?[r,t].join("/"):n;if(o&&"string"!=typeof o)throw new Error("Expect token to be string, but got "+o);return i(u,o,a)}(e,t),o):((a={})[e]=!1,a):((i={})[e]=Ya(e,t),i)})).reduce((function(t,e){return Object.assign(t,e)}),{});else{var f=(n=o,Object.keys(n)[0]);u.push(f),c[f]=Ya(!1,t)}return{nsps:c,namespaces:u,login:i}};var ni=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["local log"].concat(t))};return function(t,e){return void 0===e&&(e={}),function(r){return Ja(r,e).then((function(t){var e=t.log;return e&&"function"==typeof e||(t.log=Ia),t.log("--- wsClientCore config opts ---",t),t})).then((function(t){return{opts:t,nspMap:ba(t),ee:Ua(t)}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ma(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ba(t),r=Ba(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,t.log&&"function"==typeof t.log||(console.info("No log provided!"),t.log=ni),t.log("@jsonql/ws ee",o.name),t.log("@jsonql/ws createClientResolver",t),function(t,e,r){var n=[t,e,r,ei],o=t.token,a=t.log,i=ri(t,e,o),u=i.nsps,c=i.namespaces,f=i.login;return Reflect.apply(Qa,null,n.concat([c,u])),f&&r.$only(E,(function(o){a("createClient LOGIN_EVENT_NAME"),wa(r,c);var i=ri(t,e,o);Reflect.apply(Qa,null,n.concat([i.namespaces,i.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Va),Da)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/node.js b/packages/@jsonql/ws/node.js index 8960b858980630148ebc7b8eb7166a3a89ea13b9..c6742437b899bf1dbac8ee60454f8df161c523d1 100644 --- a/packages/@jsonql/ws/node.js +++ b/packages/@jsonql/ws/node.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var WebSocket=_interopDefault(require("ws")),debug=_interopDefault(require("debug")),Jsonql406Error=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 406},t.name.get=function(){return"Jsonql406Error"},Object.defineProperties(r,t),r}(Error),Jsonql500Error=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 500},t.name.get=function(){return"Jsonql500Error"},Object.defineProperties(r,t),r}(Error),JsonqlForbiddenError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 403},t.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(r,t),r}(Error),JsonqlAuthorisationError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 401},t.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(r,t),r}(Error),JsonqlContractAuthError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 401},t.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(r,t),r}(Error),JsonqlResolverAppError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 500},t.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(r,t),r}(Error),JsonqlResolverNotFoundError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 404},t.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(r,t),r}(Error),JsonqlEnumError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(r,t),r}(Error),JsonqlTypeError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(r,t),r}(Error),JsonqlCheckerError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(r,t),r}(Error),JsonqlValidationError$1=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(r,t),r}(Error),DATA_KEY="data",ERROR_KEY="error",JSONQL_PATH="jsonql",DEFAULT_TYPE="any",QUERY_NAME="query",MUTATION_NAME="mutation",SOCKET_NAME="socket",QUERY_ARG_NAME="args",TIMESTAMP_PARAM_NAME="TS",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",CHECKED_KEY="__checked__",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",MESSAGE_PROP_NAME="message",RESULT_PROP_NAME="result",ERROR_PROP_NAME="error",READY_PROP_NAME="ready",LOGIN_PROP_NAME="login",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",IO_ROUNDTRIP_LOGIN="roundtip",IO_HANDSHAKE_LOGIN="handshake",JsonqlError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0},statusCode:{configurable:!0}};return t.name.get=function(){return"JsonqlError"},t.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(r,t),r}(Error),JsonqlServerError=function(e){function r(t,n){e.call(this,n),this.statusCode=t,this.className=r.name}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlServerError"},Object.defineProperties(r,t),r}(Error);function finalCatch(e){if(Array.isArray(e))throw new JsonqlValidationError$1("",e);var r=e.message||NO_ERROR_MSG,t=e.detail||e;switch(!0){case e instanceof Jsonql406Error:throw new Jsonql406Error(r,t);case e instanceof Jsonql500Error:throw new Jsonql500Error(r,t);case e instanceof JsonqlForbiddenError:throw new JsonqlForbiddenError(r,t);case e instanceof JsonqlAuthorisationError:throw new JsonqlAuthorisationError(r,t);case e instanceof JsonqlContractAuthError:throw new JsonqlContractAuthError(r,t);case e instanceof JsonqlResolverAppError:throw new JsonqlResolverAppError(r,t);case e instanceof JsonqlResolverNotFoundError:throw new JsonqlResolverNotFoundError(r,t);case e instanceof JsonqlEnumError:throw new JsonqlEnumError(r,t);case e instanceof JsonqlTypeError:throw new JsonqlTypeError(r,t);case e instanceof JsonqlCheckerError:throw new JsonqlCheckerError(r,t);case e instanceof JsonqlValidationError$1:throw new JsonqlValidationError$1(r,t);case e instanceof JsonqlServerError:throw new JsonqlServerError(r,t);default:throw new JsonqlError(r,t)}}var SOCKET_IO=JS_WS_SOCKET_IO_NAME,MISSING_PROP_ERR="Missing property in contract!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",CB_FN_NAME="on",global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol;function arrayMap(e,r){for(var t=-1,n=null==e?0:e.length,o=Array(n);++to?0:o+r),(t=t>o?o:t)<0&&(t+=o),o=r>t?0:t-r>>>0,r>>>=0;for(var a=Array(o);++n=n?e:baseSlice(e,r,t)}function baseFindIndex(e,r,t,n){for(var o=e.length,a=t+(n?1:-1);n?a--:++a-1;);return t}function charsStartIndex(e,r){for(var t=-1,n=e.length;++t-1;);return t}function asciiToArray(e){return e.split("")}var rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f",reComboHalfMarksRange="\\ufe20-\\ufe2f",rsComboSymbolsRange="\\u20d0-\\u20ff",rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsVarRange="\\ufe0e\\ufe0f",rsZWJ="\\u200d",reHasUnicode=RegExp("["+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+"]");function hasUnicode(e){return reHasUnicode.test(e)}var rsAstralRange$1="\\ud800-\\udfff",rsComboMarksRange$1="\\u0300-\\u036f",reComboHalfMarksRange$1="\\ufe20-\\ufe2f",rsComboSymbolsRange$1="\\u20d0-\\u20ff",rsComboRange$1=rsComboMarksRange$1+reComboHalfMarksRange$1+rsComboSymbolsRange$1,rsVarRange$1="\\ufe0e\\ufe0f",rsAstral="["+rsAstralRange$1+"]",rsCombo="["+rsComboRange$1+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange$1+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsZWJ$1="\\u200d",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange$1+"]?",rsOptJoin="(?:"+rsZWJ$1+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")",reUnicode=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g");function unicodeToArray(e){return e.match(reUnicode)||[]}function stringToArray(e){return hasUnicode(e)?unicodeToArray(e):asciiToArray(e)}function toString(e){return null==e?"":baseToString(e)}var reTrim=/^\s+|\s+$/g;function trim(e,r,t){if((e=toString(e))&&(t||void 0===r))return e.replace(reTrim,"");if(!e||!(r=baseToString(r)))return e;var n=stringToArray(e),o=stringToArray(r);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var isNotEmpty=function(e){return!!isArray(e)||null!=e&&""!==trim(e)},numberTag="[object Number]";function isNumber(e){return"number"==typeof e||isObjectLike(e)&&baseGetTag(e)==numberTag}function isNaN(e){return isNumber(e)&&e!=+e}var stringTag="[object String]";function isString(e){return"string"==typeof e||!isArray(e)&&isObjectLike(e)&&baseGetTag(e)==stringTag}var checkIsNumber=function(e){return!isString(e)&&!isNaN(parseFloat(e))},checkIsString=function(e){return""!==trim(e)&&isString(e)},checkIsBoolean=function(e){return null!=e&&"boolean"==typeof e},checkIsAny=function(e,r){return void 0===r&&(r=!0),void 0!==e&&""!==e&&""!==trim(e)&&(!1===r||!0===r&&null!==e)},ARGS_NOT_ARRAY_ERR="args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)",PARAMS_NOT_ARRAY_ERR="params is not an array! Did something gone wrong when you generate the contract.json?",EXCEPTION_CASE_ERR="Could not understand your arguments and parameter structure!",DEFAULT_TYPE$1=DEFAULT_TYPE,ARRAY_TYPE_LFT$1=ARRAY_TYPE_LFT,ARRAY_TYPE_RGT$1=ARRAY_TYPE_RGT,TYPE_KEY$1=TYPE_KEY,OPTIONAL_KEY$1=OPTIONAL_KEY,ENUM_KEY$1=ENUM_KEY,ARGS_KEY$1=ARGS_KEY,CHECKER_KEY$1=CHECKER_KEY,ALIAS_KEY$1=ALIAS_KEY,ARRAY_TYPE$1=ARRAY_TYPE,OBJECT_TYPE$1=OBJECT_TYPE,STRING_TYPE$1=STRING_TYPE,BOOLEAN_TYPE$1=BOOLEAN_TYPE,NUMBER_TYPE$1=NUMBER_TYPE,KEY_WORD$1=KEY_WORD,OR_SEPERATOR$1=OR_SEPERATOR,combineFn=function(e){switch(e){case NUMBER_TYPE$1:return checkIsNumber;case STRING_TYPE$1:return checkIsString;case BOOLEAN_TYPE$1:return checkIsBoolean;default:return checkIsAny}},checkIsArray=function(e,r){return void 0===r&&(r=""),!!isArray(e)&&(""===r||""===trim(r)||!(e.filter((function(e){return!combineFn(r)(e)})).length>0))},isArrayLike=function(e){if(e.indexOf(ARRAY_TYPE_LFT$1)>-1&&e.indexOf(ARRAY_TYPE_RGT$1)>-1){var r=e.replace(ARRAY_TYPE_LFT$1,"").replace(ARRAY_TYPE_RGT$1,"");return r.indexOf(OR_SEPERATOR$1)?r.split(OR_SEPERATOR$1):[r]}return!1},arrayTypeHandler=function(e,r){var t=e.arg;return r.length>1?!t.filter((function(e){return!(r.length>r.filter((function(r){return!combineFn(r)(e)})).length)})).length:r.length>r.filter((function(e){return!checkIsArray(t,e)})).length};function overArg(e,r){return function(t){return e(r(t))}}var getPrototype=overArg(Object.getPrototypeOf,Object),objectTag="[object Object]",funcProto=Function.prototype,objectProto$2=Object.prototype,funcToString=funcProto.toString,hasOwnProperty$1=objectProto$2.hasOwnProperty,objectCtorString=funcToString.call(Object);function isPlainObject(e){if(!isObjectLike(e)||baseGetTag(e)!=objectTag)return!1;var r=getPrototype(e);if(null===r)return!0;var t=hasOwnProperty$1.call(r,"constructor")&&r.constructor;return"function"==typeof t&&t instanceof t&&funcToString.call(t)==objectCtorString}function arrayFilter(e,r){for(var t=-1,n=null==e?0:e.length,o=0,a=[];++t-1&&e%1==0&&e-1&&e%1==0&&e<=MAX_SAFE_INTEGER$1}var argsTag$1="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",mapTag="[object Map]",numberTag$1="[object Number]",objectTag$1="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag$1="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};function baseIsTypedArray(e){return isObjectLike(e)&&isLength(e.length)&&!!typedArrayTags[baseGetTag(e)]}function baseUnary(e){return function(r){return e(r)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag$1]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag$1]=typedArrayTags[weakMapTag]=!1;var freeExports$1="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,freeProcess=moduleExports$1&&freeGlobal.process,nodeUtil=function(){try{var e=freeModule$1&&freeModule$1.require&&freeModule$1.require("util").types;return e||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(e){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray,objectProto$4=Object.prototype,hasOwnProperty$3=objectProto$4.hasOwnProperty;function arrayLikeKeys(e,r){var t=isArray(e),n=!t&&isArguments(e),o=!t&&!n&&isBuffer(e),a=!t&&!n&&!o&&isTypedArray(e),i=t||n||o||a,s=i?baseTimes(e.length,String):[],c=s.length;for(var u in e)!r&&!hasOwnProperty$3.call(e,u)||i&&("length"==u||o&&("offset"==u||"parent"==u)||a&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||isIndex(u,c))||s.push(u);return s}var objectProto$5=Object.prototype;function isPrototype(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||objectProto$5)}var nativeKeys=overArg(Object.keys,Object),objectProto$6=Object.prototype,hasOwnProperty$4=objectProto$6.hasOwnProperty;function baseKeys(e){if(!isPrototype(e))return nativeKeys(e);var r=[];for(var t in Object(e))hasOwnProperty$4.call(e,t)&&"constructor"!=t&&r.push(t);return r}function isObject(e){var r=typeof e;return null!=e&&("object"==r||"function"==r)}var asyncTag="[object AsyncFunction]",funcTag$1="[object Function]",genTag="[object GeneratorFunction]",proxyTag="[object Proxy]";function isFunction(e){if(!isObject(e))return!1;var r=baseGetTag(e);return r==funcTag$1||r==genTag||r==asyncTag||r==proxyTag}function isArrayLike$1(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function keys(e){return isArrayLike$1(e)?arrayLikeKeys(e):baseKeys(e)}function baseForOwn(e,r){return e&&baseFor(e,r,keys)}function listCacheClear(){this.__data__=[],this.size=0}function eq(e,r){return e===r||e!=e&&r!=r}function assocIndexOf(e,r){for(var t=e.length;t--;)if(eq(e[t][0],r))return t;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(e){var r=this.__data__,t=assocIndexOf(r,e);return!(t<0)&&(t==r.length-1?r.pop():splice.call(r,t,1),--this.size,!0)}function listCacheGet(e){var r=this.__data__,t=assocIndexOf(r,e);return t<0?void 0:r[t][1]}function listCacheHas(e){return assocIndexOf(this.__data__,e)>-1}function listCacheSet(e,r){var t=this.__data__,n=assocIndexOf(t,e);return n<0?(++this.size,t.push([e,r])):t[n][1]=r,this}function ListCache(e){var r=-1,t=null==e?0:e.length;for(this.clear();++rs))return!1;var u=a.get(e);if(u&&a.get(r))return u==r;var l=-1,f=!0,p=t&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(a.set(e,r),a.set(r,e);++lr.type.filter((function(e){var r;return void 0===t||(!1!==(r=isArrayLike(e))?!arrayTypeHandler({arg:t},r):!combineFn(e)(t))})).length)})).length}return!1},objectTypeHandler=function(e){var r=e.arg,t=e.param,n=[r];return Array.isArray(t.keys)&&t.keys.length&&n.push(t.keys),Reflect.apply(checkIsObject,null,n)},optionalHandler=function(e){var r=e.arg,t=e.param;return!!isNotEmpty(r)&&!(t.type.length>t.type.filter((function(r){return validateHandler(r,e)})).length)},validateHandler=function(e,r){var t;switch(!0){case e===OBJECT_TYPE$1:return!objectTypeHandler(r);case e===ARRAY_TYPE$1:return!checkIsArray(r.arg);case!1!==(t=isArrayLike(e)):return!arrayTypeHandler(r,t);default:return!combineFn(e)(r.arg)}},getOptionalValue=function(e,r){return void 0!==e?e:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},normalizeArgs=function(e,r){if(!checkIsArray(r))throw new JsonqlError(PARAMS_NOT_ARRAY_ERR);if(0===r.length)return[];if(!checkIsArray(e))throw new JsonqlError(ARGS_NOT_ARRAY_ERR);switch(!0){case e.length==r.length:return e.map((function(e,t){return{arg:e,index:t,param:r[t]}}));case!0===r[0].variable:var t=r[0].type;return e.map((function(e,n){return{arg:e,index:n,param:r[n]||{type:t,name:"_"}}}));case e.lengthr.length:var n=r.length,o=[DEFAULT_TYPE$1];return e.map((function(e,t){var a=t>=n||!!r[t].optional,i=r[t]||{type:o,name:"_"+t};return{arg:a?getOptionalValue(e,i):e,index:t,param:i,optional:a}}));default:throw new JsonqlError(EXCEPTION_CASE_ERR,{args:e,params:r})}},processReturn=function(e){return e.map((function(e){return e.arg}))},validateSync=function(e,r,t){var n;void 0===t&&(t=!1);var o=normalizeArgs(e,r),a=o.filter((function(e){return!0===e.optional||!0===e.param.optional?optionalHandler(e):!(e.param.type.length>e.param.type.filter((function(r){return validateHandler(r,e)})).length)}));return t?((n={})[ERROR_KEY]=a,n[DATA_KEY]=processReturn(o),n):a},validateAsync=function(e,r,t){return void 0===t&&(t=!1),new Promise((function(n,o){var a=validateSync(e,r,t);return t?a[ERROR_KEY].length?o(a[ERROR_KEY]):n(a[DATA_KEY]):a.length?o(a):n([])}))},defineProperty=function(){try{var e=getNative(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();function baseAssignValue(e,r,t){"__proto__"==r&&defineProperty?defineProperty(e,r,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[r]=t}function assignMergeValue(e,r,t){(void 0===t||eq(e[r],t))&&(void 0!==t||r in e)||baseAssignValue(e,r,t)}var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,Buffer$1=moduleExports$2?root.Buffer:void 0,allocUnsafe=Buffer$1?Buffer$1.allocUnsafe:void 0;function cloneBuffer(e,r){if(r)return e.slice();var t=e.length,n=allocUnsafe?allocUnsafe(t):new e.constructor(t);return e.copy(n),n}function cloneArrayBuffer(e){var r=new e.constructor(e.byteLength);return new Uint8Array(r).set(new Uint8Array(e)),r}function cloneTypedArray(e,r){var t=r?cloneArrayBuffer(e.buffer):e.buffer;return new e.constructor(t,e.byteOffset,e.length)}function copyArray(e,r){var t=-1,n=e.length;for(r||(r=Array(n));++t0){if(++r>=HOT_COUNT)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(e,r){return setToString(overRest(e,r,identity),e+"")}function isIterateeCall(e,r,t){if(!isObject(t))return!1;var n=typeof r;return!!("number"==n?isArrayLike$1(t)&&isIndex(r,t.length):"string"==n&&r in t)&&eq(t[r],e)}function createAssigner(e){return baseRest((function(r,t){var n=-1,o=t.length,a=o>1?t[o-1]:void 0,i=o>2?t[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(t[0],t[1],i)&&(a=o<3?void 0:a,o=1),r=Object(r);++n0;)r[t]=arguments[t+1];return function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return r.reduce((function(e,r){return Reflect.apply(r,null,toArray$1(e))}),Reflect.apply(e,null,t))}};function chainProcessPromises(e){for(var r=[],t=arguments.length-1;t-- >0;)r[t]=arguments[t+1];return function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return r.reduce((function(e,r){return e.then((function(e){return r(e)}))}),Reflect.apply(e,null,t))}}function objDefineProps(e,r,t,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(e,r)&&Object.defineProperty(e,r,{set:t,get:null===n?function(){return null}:n}),e}function objHasProp(e,r){var t=Object.getOwnPropertyDescriptor(e,r);return void 0!==t&&t.value?t.value:t}function injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=objHasProp(e,r);return!1===n&&void 0!==o?e:(Object.defineProperty(e,r,{value:t,writable:n}),e)}function checkIsContract(e){return isPlainObject(e)&&(isObjectHasKey$1(e,QUERY_NAME)||isObjectHasKey$1(e,MUTATION_NAME)||isObjectHasKey$1(e,SOCKET_NAME))}function isContract(e){return!!checkIsContract(e)&&e}function extractSocketPart(e){return!!isObjectHasKey$1(e,"socket")&&e.socket}function groupByNamespace(e,r){void 0===r&&(r=!1);var t=extractSocketPart(e);if(!1===t){if(r)return e;throw new JsonqlError("socket not found in contract!")}var n,o={},a=0;for(var i in t){var s=t[i],c=s.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=s,n||s.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}function getNamespaceInOrder(e,r){var t=[];for(var n in e)n===r?t[1]=n:t[0]=n;return t}var timestamp=function(e){void 0===e&&(e=!1);var r=Date.now();return e?Math.floor(r/1e3):r},formatPayload=function(e){var r;return(r={})[QUERY_ARG_NAME]=e,r};function getNameFromPayload(e){return Object.keys(e)[0]}function createDeliverable(e,r){var t;return(t={})[e]=r,t[TIMESTAMP_PARAM_NAME]=[timestamp()],t}function createQuery(e,r,t){if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString(e)&&isArray(r)){var n=formatPayload(r);return!0===t?n:createDeliverable(e,n)}throw new JsonqlValidationError$1("[createQuery] expect resolverName to be string and args to be array!",{resolverName:e,args:r})}function createQueryStr(e,r,t){return void 0===r&&(r=[]),void 0===t&&(t=!1),JSON.stringify(createQuery(e,r,t))}var NB_EVENT_SERVICE_PRIVATE_STORE=new WeakMap,NB_EVENT_SERVICE_PRIVATE_LAZY=new WeakMap;function hashCode(e){return e.split("").reduce((function(e,r){return(e=(e<<5)-e+r.charCodeAt(0))&e}),0)}var SuspendClass=function(){this.__suspend__=null,this.queueStore=new Set},prototypeAccessors={$suspend:{configurable:!0},$queues:{configurable:!0}};prototypeAccessors.$suspend.set=function(e){var r=this;if("boolean"!=typeof e)throw new Error("$suspend only accept Boolean value!");var t=this.__suspend__;this.__suspend__=e,this.logger("($suspend)","Change from "+t+" --\x3e "+e),!0===t&&!1===e&&setTimeout((function(){r.release()}),1)},SuspendClass.prototype.$queue=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",e),this.queueStore.add(e)),this.__suspend__},prototypeAccessors.$queues.get=function(){var e=this.queueStore.size;return this.logger("($queues)","size: "+e),e>0?Array.from(this.queueStore):[]},SuspendClass.prototype.release=function(){var e=this,r=this.queueStore.size;if(this.logger("(release)","Release was called "+r),r>0){var t=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",t),t.forEach((function(r){e.logger(r),Reflect.apply(e.$trigger,e,r)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(SuspendClass.prototype,prototypeAccessors);var NbEventServiceBase=function(e){function r(r){void 0===r&&(r={}),e.call(this),r.logger&&"function"==typeof r.logger&&(this.logger=r.logger),this.keep=r.keep,this.result=r.keep?[]:null,this.normalStore=new Map,this.lazyStore=new Map}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={normalStore:{configurable:!0},lazyStore:{configurable:!0}};return r.prototype.validateEvt=function(){for(var e=this,r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.forEach((function(r){if("string"!=typeof r)throw e.logger("(validateEvt)",r),new Error("event name must be string type!")})),!0},r.prototype.validate=function(e,r){if(this.validateEvt(e)&&"function"==typeof r)return!0;throw new Error("callback required to be function type!")},r.prototype.validateType=function(e){return!!["on","only","once","onlyOnce"].filter((function(r){return e===r})).length},r.prototype.run=function(e,r,t){this.logger("(run)",e,r,t),this.$done=Reflect.apply(e,t,this.toArray(r))},r.prototype.takeFromStore=function(e,r){void 0===r&&(r="lazyStore");var t=this[r];if(t){if(this.logger("(takeFromStore)",r,t),t.has(e)){var n=t.get(e);return this.logger("(takeFromStore)","has "+e,n),t.delete(e),n}return!1}throw new Error(r+" is not supported!")},r.prototype.addToStore=function(e,r){for(var t,n=[],o=arguments.length-2;o-- >0;)n[o]=arguments[o+2];if(e.has(r)?(this.logger("(addToStore)",r+" existed"),t=e.get(r)):(this.logger("(addToStore)","create new Set for "+r),t=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(r,a)||t.add(n)}else this.checkContentExist(n,t)||(this.logger("(addToStore)","insert new",n),t.add(n));else t.add(n);return e.set(r,t),[e,t.size]},r.prototype.checkContentExist=function(e,r){return!!Array.from(r).filter((function(r){return r[0]===e[0]})).length},r.prototype.checkTypeInStore=function(e,r){this.validateEvt(e,r);var t=this.$get(e,!0);return!1===t||!t.filter((function(e){var t=e[3];return r!==t})).length},r.prototype.checkTypeInLazyStore=function(e,r){this.validateEvt(e,r);var t=this.lazyStore.get(e);return this.logger("(checkTypeInLazyStore)",t),!!t&&!!Array.from(t).filter((function(e){return e[2]!==r})).length},r.prototype.addToNormalStore=function(e,r,t,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",e,r,"try to add to normal store"),this.checkTypeInStore(e,r)){this.logger("(addToNormalStore)",r+" can add to "+e+" normal store");var o=this.hashFnToKey(t),a=[this.normalStore,e,o,t,n,r],i=Reflect.apply(this.addToStore,this,a),s=i[0],c=i[1];return this.normalStore=s,c}return!1},r.prototype.addToLazyStore=function(e,r,t,n){void 0===r&&(r=[]),void 0===t&&(t=null),void 0===n&&(n=!1);var o=[this.lazyStore,e,this.toArray(r),t];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],s=a[1];return this.lazyStore=i,s},r.prototype.toArray=function(e){return Array.isArray(e)?e:[e]},t.normalStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_STORE.set(this,e)},t.normalStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)},t.lazyStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_LAZY.set(this,e)},t.lazyStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)},r.prototype.hashFnToKey=function(e){return hashCode(e.toString())+""},Object.defineProperties(r.prototype,t),r}(SuspendClass),EventService=function(e){function r(r){void 0===r&&(r={}),e.call(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={$done:{configurable:!0}};return r.prototype.logger=function(){},r.prototype.$on=function(e,r,t){var n=this;void 0===t&&(t=null);this.validate(e,r);var o=this.takeFromStore(e);if(!1===o)return this.logger("($on)",e+" callback is not in lazy store"),this.addToNormalStore(e,"on",r,t);this.logger("($on)",e+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],s=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+e),n.run(r,i,t||s),a+=n.addToNormalStore(e,"on",r,t||s)})),a},r.prototype.$once=function(e,r,t){void 0===t&&(t=null),this.validate(e,r);var n=this.takeFromStore(e);this.normalStore;if(!1===n)return this.logger("($once)",e+" not in the lazy store"),this.addToNormalStore(e,"once",r,t);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],s=o[2];if(s&&"once"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);this.logger("($once)","call run for "+e),this.run(r,a,t||i),this.$off(e)},r.prototype.$only=function(e,r,t){var n=this;void 0===t&&(t=null),this.validate(e,r);var o=!1,a=this.takeFromStore(e);(this.normalStore.has(e)||(this.logger("($only)",e+" add to store"),o=this.addToNormalStore(e,"only",r,t)),!1!==a)&&(this.logger("($only)",e+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],s=o[2];if(s&&"only"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);n.logger("($only)","call run for "+e),n.run(r,a,t||i)})));return o},r.prototype.$onlyOnce=function(e,r,t){void 0===t&&(t=null),this.validate(e,r);var n=!1,o=this.takeFromStore(e);if(this.normalStore.has(e)||(this.logger("($onlyOnce)",e+" add to store"),n=this.addToNormalStore(e,"onlyOnce",r,t)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],s=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+e),this.run(r,i,t||s),this.$off(e)}return n},r.prototype.$replace=function(e,r,t,n){if(void 0===t&&(t=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(e);var o=this["$"+n];return this.logger("($replace)",e,r),Reflect.apply(o,this,[e,r,t])}throw new Error(n+" is not supported!")},r.prototype.$trigger=function(e,r,t,n){void 0===r&&(r=[]),void 0===t&&(t=null),void 0===n&&(n=!1),this.validateEvt(e);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(e)){var i=this.$queue(e,r,t,n);if(this.logger("($trigger)",e,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",e,"not executed. Exit now."),!1;for(var s=Array.from(a.get(e)),c=s.length,u=!1,l=0;l1&&e[0]};function clientEventHandler(e,r,t,n,o,a){var i=getPrivateNamespace(o),s=!1,c=e.log;o.forEach((function(o){if(s=i===o,a[o]){c("call bindWsHandler",s,o);var u=[o,a[o],t,s,e];if(e.serverType===SOCKET_IO){var l=r.nspSet;u.push(l[o])}Reflect.apply(n,null,u)}else notLoginWsHandler(o,t,e)})),t.$on(LOGOUT_EVENT_NAME,(function(){c("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(r){clearMainEmitEvt(t,r),a[r]=!1,notLoginWsHandler(r,t,e)}))}))}var VERSION="0.3.5",constProps={version:"version: 1.0.3 module: cjs",serverType:JS_WS_NAME},fixWss$1=function(e){var r=e.toLowerCase();return r.indexOf("http")>-1?r.indexOf("https")>-1?r.replace("https","wss"):r.replace("http","ws"):r};function createWsClient(e,r){return void 0===r&&(r=!1),!1===r?function(r){return new e(fixWss$1(r))}:function(r,t){var n=fixWss$1(r),o=t&&"string"==typeof t?n+"?"+TOKEN_PARAM_NAME+"="+t:n;try{return new e(o)}catch(e){return console.error("WebSocket Connection Error",e),!1}}}var keys$1=[WS_REPLY_TYPE,WS_EVT_NAME,WS_DATA_NAME],isWsReply=function(e){var r=e.data;return!!r&&(keys$1.filter((function(e){return isObjectHasKey$1(r,e)})).length===keys$1.length&&r)},extractWsPayload=function(e){var r,t=e.data,n=isString$1(t)?JSON.parse(t):t;if(!1!==(r=isWsReply(n)))return{resolverName:r[WS_EVT_NAME],data:r[WS_DATA_NAME],type:r[WS_REPLY_TYPE]};throw new JsonqlError("payload can not be decoded",e)},dummyLogger$1=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];Reflect.apply(console.info,console,["local log"].concat(e))},errorTypeHandler=function(e,r,t,n,o){var a=[r];t&&a.push(t),a.push(o);var i=Reflect.apply(createEvt,null,a),s=n.data||n;e.$trigger(i,[s])};function wsMainHandler(e,r,t,n,o){var a=o.log||dummyLogger$1;a("wsMainHandler log test");var i=o.useCallbackStyle,s=i?READY_PROP_NAME:ON_READY_PROP_NAME,c=i?LOGIN_PROP_NAME:ON_LOGIN_PROP_NAME,u=i?MESSAGE_PROP_NAME:ON_MESSAGE_PROP_NAME,l=i?RESULT_PROP_NAME:ON_RESULT_PROP_NAME,f=i?ERROR_PROP_NAME:ON_ERROR_PROP_NAME;r.onopen=function(){a("ws.onopen listened"),t.$call(s,e),n&&(a("isPrivate and fire the "+c),t.$call(c,e)),t.$only(createEvt(e,EMIT_REPLY_TYPE),(function(e,t){a("calling server",e,t),r.send(createQueryStr(e,t))}))},r.onmessage=function(r){try{var n=extractWsPayload(r),o=n.resolverName,i=n.type;switch(a("Hear from server",i,n),i){case EMIT_REPLY_TYPE:var s=createEvt(e,o,u),c=t.$trigger(s,[n]);a("EMIT_REPLY_TYPE",s,c);break;case ACKNOWLEDGE_REPLY_TYPE:var p=createEvt(e,o,l);t.$trigger(p,[n]);break;case ERROR_TYPE:a("ERROR_TYPE"),errorTypeHandler(t,e,o,n,f);break;default:a("Unhandled event!",n),errorTypeHandler(t,e,o,n,f)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r,f)}},r.onclose=function(){a("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{a("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth)a=!0,s=(i=getNamespaceInOrder(n,o)).map((function(r,n){var o,a,i;return 0===n?t?(e.token=t,(o={})[r]=createNspAuthClient(r,e),o):((a={})[r]=!1,a):((i={})[r]=createNspClient(r,e),i)})).reduce((function(e,r){return Object.assign(e,r)}),{});else{var c=getNameFromPayload(n);i.push(c),s[c]=createNspClient(!1,e)}return{nsps:s,namespaces:i,login:a}};function createClient(e,r,t){var n=[e,r,t,wsMainHandler],o=e.token,a=createNsps(e,r,o),i=a.nsps,s=a.namespaces,c=a.login;return Reflect.apply(clientEventHandler,null,n.concat([s,i])),c&&t.$only(LOGIN_EVENT_NAME,(function(o){clearMainEmitEvt(t,s);var a=createNsps(e,r,o);Reflect.apply(clientEventHandler,null,n.concat([a.namespaces,a.nsps]))})),{opts:e,nspMap:r,ee:t}}function createClientResolver(e){var r=createWsClient(e),t=createWsClient(e,!0);return function(e,n,o){return e.nspClient=r,e.nspAuthClient=t,createClient(e,n,o)}}var wsClientResolver=createClientResolver(WebSocket),debugFn=debug("jsonql-ws");debugFn("VERSION",VERSION);var node=wsClientCore(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var WebSocket=_interopDefault(require("ws")),debug=_interopDefault(require("debug")),Jsonql406Error=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 406},t.name.get=function(){return"Jsonql406Error"},Object.defineProperties(r,t),r}(Error),Jsonql500Error=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 500},t.name.get=function(){return"Jsonql500Error"},Object.defineProperties(r,t),r}(Error),JsonqlForbiddenError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 403},t.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(r,t),r}(Error),JsonqlAuthorisationError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 401},t.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(r,t),r}(Error),JsonqlContractAuthError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 401},t.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(r,t),r}(Error),JsonqlResolverAppError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 500},t.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(r,t),r}(Error),JsonqlResolverNotFoundError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 404},t.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(r,t),r}(Error),JsonqlEnumError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(r,t),r}(Error),JsonqlTypeError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(r,t),r}(Error),JsonqlCheckerError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(r,t),r}(Error),JsonqlValidationError$1=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(r,t),r}(Error),DATA_KEY="data",ERROR_KEY="error",JSONQL_PATH="jsonql",DEFAULT_TYPE="any",QUERY_NAME="query",MUTATION_NAME="mutation",SOCKET_NAME="socket",QUERY_ARG_NAME="args",TIMESTAMP_PARAM_NAME="TS",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",CHECKED_KEY="__checked__",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",MESSAGE_PROP_NAME="message",RESULT_PROP_NAME="result",ERROR_PROP_NAME="error",READY_PROP_NAME="ready",LOGIN_PROP_NAME="login",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",IO_ROUNDTRIP_LOGIN="roundtip",IO_HANDSHAKE_LOGIN="handshake",JsonqlError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0},statusCode:{configurable:!0}};return t.name.get=function(){return"JsonqlError"},t.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(r,t),r}(Error),JsonqlServerError=function(e){function r(t,n){e.call(this,n),this.statusCode=t,this.className=r.name}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlServerError"},Object.defineProperties(r,t),r}(Error);function finalCatch(e){if(Array.isArray(e))throw new JsonqlValidationError$1("",e);var r=e.message||NO_ERROR_MSG,t=e.detail||e;switch(!0){case e instanceof Jsonql406Error:throw new Jsonql406Error(r,t);case e instanceof Jsonql500Error:throw new Jsonql500Error(r,t);case e instanceof JsonqlForbiddenError:throw new JsonqlForbiddenError(r,t);case e instanceof JsonqlAuthorisationError:throw new JsonqlAuthorisationError(r,t);case e instanceof JsonqlContractAuthError:throw new JsonqlContractAuthError(r,t);case e instanceof JsonqlResolverAppError:throw new JsonqlResolverAppError(r,t);case e instanceof JsonqlResolverNotFoundError:throw new JsonqlResolverNotFoundError(r,t);case e instanceof JsonqlEnumError:throw new JsonqlEnumError(r,t);case e instanceof JsonqlTypeError:throw new JsonqlTypeError(r,t);case e instanceof JsonqlCheckerError:throw new JsonqlCheckerError(r,t);case e instanceof JsonqlValidationError$1:throw new JsonqlValidationError$1(r,t);case e instanceof JsonqlServerError:throw new JsonqlServerError(r,t);default:throw new JsonqlError(r,t)}}var SOCKET_IO=JS_WS_SOCKET_IO_NAME,MISSING_PROP_ERR="Missing property in contract!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",CB_FN_NAME="on",global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol;function arrayMap(e,r){for(var t=-1,n=null==e?0:e.length,o=Array(n);++to?0:o+r),(t=t>o?o:t)<0&&(t+=o),o=r>t?0:t-r>>>0,r>>>=0;for(var a=Array(o);++n=n?e:baseSlice(e,r,t)}function baseFindIndex(e,r,t,n){for(var o=e.length,a=t+(n?1:-1);n?a--:++a-1;);return t}function charsStartIndex(e,r){for(var t=-1,n=e.length;++t-1;);return t}function asciiToArray(e){return e.split("")}var rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f",reComboHalfMarksRange="\\ufe20-\\ufe2f",rsComboSymbolsRange="\\u20d0-\\u20ff",rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsVarRange="\\ufe0e\\ufe0f",rsZWJ="\\u200d",reHasUnicode=RegExp("["+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+"]");function hasUnicode(e){return reHasUnicode.test(e)}var rsAstralRange$1="\\ud800-\\udfff",rsComboMarksRange$1="\\u0300-\\u036f",reComboHalfMarksRange$1="\\ufe20-\\ufe2f",rsComboSymbolsRange$1="\\u20d0-\\u20ff",rsComboRange$1=rsComboMarksRange$1+reComboHalfMarksRange$1+rsComboSymbolsRange$1,rsVarRange$1="\\ufe0e\\ufe0f",rsAstral="["+rsAstralRange$1+"]",rsCombo="["+rsComboRange$1+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange$1+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsZWJ$1="\\u200d",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange$1+"]?",rsOptJoin="(?:"+rsZWJ$1+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")",reUnicode=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g");function unicodeToArray(e){return e.match(reUnicode)||[]}function stringToArray(e){return hasUnicode(e)?unicodeToArray(e):asciiToArray(e)}function toString(e){return null==e?"":baseToString(e)}var reTrim=/^\s+|\s+$/g;function trim(e,r,t){if((e=toString(e))&&(t||void 0===r))return e.replace(reTrim,"");if(!e||!(r=baseToString(r)))return e;var n=stringToArray(e),o=stringToArray(r);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var isNotEmpty=function(e){return!!isArray(e)||null!=e&&""!==trim(e)},numberTag="[object Number]";function isNumber(e){return"number"==typeof e||isObjectLike(e)&&baseGetTag(e)==numberTag}function isNaN(e){return isNumber(e)&&e!=+e}var stringTag="[object String]";function isString(e){return"string"==typeof e||!isArray(e)&&isObjectLike(e)&&baseGetTag(e)==stringTag}var checkIsNumber=function(e){return!isString(e)&&!isNaN(parseFloat(e))},checkIsString=function(e){return""!==trim(e)&&isString(e)},checkIsBoolean=function(e){return null!=e&&"boolean"==typeof e},checkIsAny=function(e,r){return void 0===r&&(r=!0),void 0!==e&&""!==e&&""!==trim(e)&&(!1===r||!0===r&&null!==e)},ARGS_NOT_ARRAY_ERR="args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)",PARAMS_NOT_ARRAY_ERR="params is not an array! Did something gone wrong when you generate the contract.json?",EXCEPTION_CASE_ERR="Could not understand your arguments and parameter structure!",DEFAULT_TYPE$1=DEFAULT_TYPE,ARRAY_TYPE_LFT$1=ARRAY_TYPE_LFT,ARRAY_TYPE_RGT$1=ARRAY_TYPE_RGT,TYPE_KEY$1=TYPE_KEY,OPTIONAL_KEY$1=OPTIONAL_KEY,ENUM_KEY$1=ENUM_KEY,ARGS_KEY$1=ARGS_KEY,CHECKER_KEY$1=CHECKER_KEY,ALIAS_KEY$1=ALIAS_KEY,ARRAY_TYPE$1=ARRAY_TYPE,OBJECT_TYPE$1=OBJECT_TYPE,STRING_TYPE$1=STRING_TYPE,BOOLEAN_TYPE$1=BOOLEAN_TYPE,NUMBER_TYPE$1=NUMBER_TYPE,KEY_WORD$1=KEY_WORD,OR_SEPERATOR$1=OR_SEPERATOR,combineFn=function(e){switch(e){case NUMBER_TYPE$1:return checkIsNumber;case STRING_TYPE$1:return checkIsString;case BOOLEAN_TYPE$1:return checkIsBoolean;default:return checkIsAny}},checkIsArray=function(e,r){return void 0===r&&(r=""),!!isArray(e)&&(""===r||""===trim(r)||!(e.filter((function(e){return!combineFn(r)(e)})).length>0))},isArrayLike=function(e){if(e.indexOf(ARRAY_TYPE_LFT$1)>-1&&e.indexOf(ARRAY_TYPE_RGT$1)>-1){var r=e.replace(ARRAY_TYPE_LFT$1,"").replace(ARRAY_TYPE_RGT$1,"");return r.indexOf(OR_SEPERATOR$1)?r.split(OR_SEPERATOR$1):[r]}return!1},arrayTypeHandler=function(e,r){var t=e.arg;return r.length>1?!t.filter((function(e){return!(r.length>r.filter((function(r){return!combineFn(r)(e)})).length)})).length:r.length>r.filter((function(e){return!checkIsArray(t,e)})).length};function overArg(e,r){return function(t){return e(r(t))}}var getPrototype=overArg(Object.getPrototypeOf,Object),objectTag="[object Object]",funcProto=Function.prototype,objectProto$2=Object.prototype,funcToString=funcProto.toString,hasOwnProperty$1=objectProto$2.hasOwnProperty,objectCtorString=funcToString.call(Object);function isPlainObject(e){if(!isObjectLike(e)||baseGetTag(e)!=objectTag)return!1;var r=getPrototype(e);if(null===r)return!0;var t=hasOwnProperty$1.call(r,"constructor")&&r.constructor;return"function"==typeof t&&t instanceof t&&funcToString.call(t)==objectCtorString}function arrayFilter(e,r){for(var t=-1,n=null==e?0:e.length,o=0,a=[];++t-1&&e%1==0&&e-1&&e%1==0&&e<=MAX_SAFE_INTEGER$1}var argsTag$1="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",mapTag="[object Map]",numberTag$1="[object Number]",objectTag$1="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag$1="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};function baseIsTypedArray(e){return isObjectLike(e)&&isLength(e.length)&&!!typedArrayTags[baseGetTag(e)]}function baseUnary(e){return function(r){return e(r)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag$1]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag$1]=typedArrayTags[weakMapTag]=!1;var freeExports$1="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,freeProcess=moduleExports$1&&freeGlobal.process,nodeUtil=function(){try{var e=freeModule$1&&freeModule$1.require&&freeModule$1.require("util").types;return e||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(e){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray,objectProto$4=Object.prototype,hasOwnProperty$3=objectProto$4.hasOwnProperty;function arrayLikeKeys(e,r){var t=isArray(e),n=!t&&isArguments(e),o=!t&&!n&&isBuffer(e),a=!t&&!n&&!o&&isTypedArray(e),i=t||n||o||a,s=i?baseTimes(e.length,String):[],c=s.length;for(var u in e)!r&&!hasOwnProperty$3.call(e,u)||i&&("length"==u||o&&("offset"==u||"parent"==u)||a&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||isIndex(u,c))||s.push(u);return s}var objectProto$5=Object.prototype;function isPrototype(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||objectProto$5)}var nativeKeys=overArg(Object.keys,Object),objectProto$6=Object.prototype,hasOwnProperty$4=objectProto$6.hasOwnProperty;function baseKeys(e){if(!isPrototype(e))return nativeKeys(e);var r=[];for(var t in Object(e))hasOwnProperty$4.call(e,t)&&"constructor"!=t&&r.push(t);return r}function isObject(e){var r=typeof e;return null!=e&&("object"==r||"function"==r)}var asyncTag="[object AsyncFunction]",funcTag$1="[object Function]",genTag="[object GeneratorFunction]",proxyTag="[object Proxy]";function isFunction(e){if(!isObject(e))return!1;var r=baseGetTag(e);return r==funcTag$1||r==genTag||r==asyncTag||r==proxyTag}function isArrayLike$1(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function keys(e){return isArrayLike$1(e)?arrayLikeKeys(e):baseKeys(e)}function baseForOwn(e,r){return e&&baseFor(e,r,keys)}function listCacheClear(){this.__data__=[],this.size=0}function eq(e,r){return e===r||e!=e&&r!=r}function assocIndexOf(e,r){for(var t=e.length;t--;)if(eq(e[t][0],r))return t;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(e){var r=this.__data__,t=assocIndexOf(r,e);return!(t<0)&&(t==r.length-1?r.pop():splice.call(r,t,1),--this.size,!0)}function listCacheGet(e){var r=this.__data__,t=assocIndexOf(r,e);return t<0?void 0:r[t][1]}function listCacheHas(e){return assocIndexOf(this.__data__,e)>-1}function listCacheSet(e,r){var t=this.__data__,n=assocIndexOf(t,e);return n<0?(++this.size,t.push([e,r])):t[n][1]=r,this}function ListCache(e){var r=-1,t=null==e?0:e.length;for(this.clear();++rs))return!1;var u=a.get(e);if(u&&a.get(r))return u==r;var l=-1,f=!0,p=t&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(a.set(e,r),a.set(r,e);++lr.type.filter((function(e){var r;return void 0===t||(!1!==(r=isArrayLike(e))?!arrayTypeHandler({arg:t},r):!combineFn(e)(t))})).length)})).length}return!1},objectTypeHandler=function(e){var r=e.arg,t=e.param,n=[r];return Array.isArray(t.keys)&&t.keys.length&&n.push(t.keys),Reflect.apply(checkIsObject,null,n)},optionalHandler=function(e){var r=e.arg,t=e.param;return!!isNotEmpty(r)&&!(t.type.length>t.type.filter((function(r){return validateHandler(r,e)})).length)},validateHandler=function(e,r){var t;switch(!0){case e===OBJECT_TYPE$1:return!objectTypeHandler(r);case e===ARRAY_TYPE$1:return!checkIsArray(r.arg);case!1!==(t=isArrayLike(e)):return!arrayTypeHandler(r,t);default:return!combineFn(e)(r.arg)}},getOptionalValue=function(e,r){return void 0!==e?e:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},normalizeArgs=function(e,r){if(!checkIsArray(r))throw new JsonqlError(PARAMS_NOT_ARRAY_ERR);if(0===r.length)return[];if(!checkIsArray(e))throw new JsonqlError(ARGS_NOT_ARRAY_ERR);switch(!0){case e.length==r.length:return e.map((function(e,t){return{arg:e,index:t,param:r[t]}}));case!0===r[0].variable:var t=r[0].type;return e.map((function(e,n){return{arg:e,index:n,param:r[n]||{type:t,name:"_"}}}));case e.lengthr.length:var n=r.length,o=[DEFAULT_TYPE$1];return e.map((function(e,t){var a=t>=n||!!r[t].optional,i=r[t]||{type:o,name:"_"+t};return{arg:a?getOptionalValue(e,i):e,index:t,param:i,optional:a}}));default:throw new JsonqlError(EXCEPTION_CASE_ERR,{args:e,params:r})}},processReturn=function(e){return e.map((function(e){return e.arg}))},validateSync=function(e,r,t){var n;void 0===t&&(t=!1);var o=normalizeArgs(e,r),a=o.filter((function(e){return!0===e.optional||!0===e.param.optional?optionalHandler(e):!(e.param.type.length>e.param.type.filter((function(r){return validateHandler(r,e)})).length)}));return t?((n={})[ERROR_KEY]=a,n[DATA_KEY]=processReturn(o),n):a},validateAsync=function(e,r,t){return void 0===t&&(t=!1),new Promise((function(n,o){var a=validateSync(e,r,t);return t?a[ERROR_KEY].length?o(a[ERROR_KEY]):n(a[DATA_KEY]):a.length?o(a):n([])}))},defineProperty=function(){try{var e=getNative(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();function baseAssignValue(e,r,t){"__proto__"==r&&defineProperty?defineProperty(e,r,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[r]=t}function assignMergeValue(e,r,t){(void 0===t||eq(e[r],t))&&(void 0!==t||r in e)||baseAssignValue(e,r,t)}var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,Buffer$1=moduleExports$2?root.Buffer:void 0,allocUnsafe=Buffer$1?Buffer$1.allocUnsafe:void 0;function cloneBuffer(e,r){if(r)return e.slice();var t=e.length,n=allocUnsafe?allocUnsafe(t):new e.constructor(t);return e.copy(n),n}function cloneArrayBuffer(e){var r=new e.constructor(e.byteLength);return new Uint8Array(r).set(new Uint8Array(e)),r}function cloneTypedArray(e,r){var t=r?cloneArrayBuffer(e.buffer):e.buffer;return new e.constructor(t,e.byteOffset,e.length)}function copyArray(e,r){var t=-1,n=e.length;for(r||(r=Array(n));++t0){if(++r>=HOT_COUNT)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(e,r){return setToString(overRest(e,r,identity),e+"")}function isIterateeCall(e,r,t){if(!isObject(t))return!1;var n=typeof r;return!!("number"==n?isArrayLike$1(t)&&isIndex(r,t.length):"string"==n&&r in t)&&eq(t[r],e)}function createAssigner(e){return baseRest((function(r,t){var n=-1,o=t.length,a=o>1?t[o-1]:void 0,i=o>2?t[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(t[0],t[1],i)&&(a=o<3?void 0:a,o=1),r=Object(r);++n0;)r[t]=arguments[t+1];return function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return r.reduce((function(e,r){return Reflect.apply(r,null,toArray$1(e))}),Reflect.apply(e,null,t))}};function chainProcessPromises(e){for(var r=[],t=arguments.length-1;t-- >0;)r[t]=arguments[t+1];return function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return r.reduce((function(e,r){return e.then((function(e){return r(e)}))}),Reflect.apply(e,null,t))}}function objDefineProps(e,r,t,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(e,r)&&Object.defineProperty(e,r,{set:t,get:null===n?function(){return null}:n}),e}function objHasProp(e,r){var t=Object.getOwnPropertyDescriptor(e,r);return void 0!==t&&t.value?t.value:t}function injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=objHasProp(e,r);return!1===n&&void 0!==o?e:(Object.defineProperty(e,r,{value:t,writable:n}),e)}function checkIsContract(e){return isPlainObject(e)&&(isObjectHasKey$1(e,QUERY_NAME)||isObjectHasKey$1(e,MUTATION_NAME)||isObjectHasKey$1(e,SOCKET_NAME))}function isContract(e){return!!checkIsContract(e)&&e}function extractSocketPart(e){return!!isObjectHasKey$1(e,"socket")&&e.socket}function groupByNamespace(e,r){void 0===r&&(r=!1);var t=extractSocketPart(e);if(!1===t){if(r)return e;throw new JsonqlError("socket not found in contract!")}var n,o={},a=0;for(var i in t){var s=t[i],c=s.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=s,n||s.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}function getNamespaceInOrder(e,r){var t=[];for(var n in e)n===r?t[1]=n:t[0]=n;return t}var timestamp=function(e){void 0===e&&(e=!1);var r=Date.now();return e?Math.floor(r/1e3):r},formatPayload=function(e){var r;return(r={})[QUERY_ARG_NAME]=e,r};function getNameFromPayload(e){return Object.keys(e)[0]}function createDeliverable(e,r){var t;return(t={})[e]=r,t[TIMESTAMP_PARAM_NAME]=[timestamp()],t}function createQuery(e,r,t){if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString(e)&&isArray(r)){var n=formatPayload(r);return!0===t?n:createDeliverable(e,n)}throw new JsonqlValidationError$1("[createQuery] expect resolverName to be string and args to be array!",{resolverName:e,args:r})}function createQueryStr(e,r,t){return void 0===r&&(r=[]),void 0===t&&(t=!1),JSON.stringify(createQuery(e,r,t))}var NB_EVENT_SERVICE_PRIVATE_STORE=new WeakMap,NB_EVENT_SERVICE_PRIVATE_LAZY=new WeakMap;function hashCode(e){return e.split("").reduce((function(e,r){return(e=(e<<5)-e+r.charCodeAt(0))&e}),0)}function hashCode2Str(e){return hashCode(e)+""}var SuspendClass=function(){this.__suspend__=null,this.queueStore=new Set},prototypeAccessors={$suspend:{configurable:!0},$queues:{configurable:!0}};prototypeAccessors.$suspend.set=function(e){var r=this;if("boolean"!=typeof e)throw new Error("$suspend only accept Boolean value!");var t=this.__suspend__;this.__suspend__=e,this.logger("($suspend)","Change from "+t+" --\x3e "+e),!0===t&&!1===e&&setTimeout((function(){r.release()}),1)},SuspendClass.prototype.$queue=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",e),this.queueStore.add(e)),this.__suspend__},prototypeAccessors.$queues.get=function(){var e=this.queueStore.size;return this.logger("($queues)","size: "+e),e>0?Array.from(this.queueStore):[]},SuspendClass.prototype.release=function(){var e=this,r=this.queueStore.size;if(this.logger("(release)","Release was called "+r),r>0){var t=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",t),t.forEach((function(r){e.logger(r),Reflect.apply(e.$trigger,e,r)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(SuspendClass.prototype,prototypeAccessors);var NbEventServiceBase=function(e){function r(r){void 0===r&&(r={}),e.call(this),r.logger&&"function"==typeof r.logger&&(this.logger=r.logger),this.keep=r.keep,this.result=r.keep?[]:null,this.normalStore=new Map,this.lazyStore=new Map}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={is:{configurable:!0},normalStore:{configurable:!0},lazyStore:{configurable:!0}};return t.is.get=function(){return"nb-event-service"},r.prototype.validateEvt=function(){for(var e=this,r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.forEach((function(r){if("string"!=typeof r)throw e.logger("(validateEvt)",r),new Error("event name must be string type!")})),!0},r.prototype.validate=function(e,r){if(this.validateEvt(e)&&"function"==typeof r)return!0;throw new Error("callback required to be function type!")},r.prototype.validateType=function(e){return!!["on","only","once","onlyOnce"].filter((function(r){return e===r})).length},r.prototype.run=function(e,r,t){this.logger("(run)",e,r,t),this.$done=Reflect.apply(e,t,this.toArray(r))},r.prototype.takeFromStore=function(e,r){void 0===r&&(r="lazyStore");var t=this[r];if(t){if(this.logger("(takeFromStore)",r,t),t.has(e)){var n=t.get(e);return this.logger("(takeFromStore)","has "+e,n),t.delete(e),n}return!1}throw new Error(r+" is not supported!")},r.prototype.addToStore=function(e,r){for(var t,n=[],o=arguments.length-2;o-- >0;)n[o]=arguments[o+2];if(e.has(r)?(this.logger("(addToStore)",r+" existed"),t=e.get(r)):(this.logger("(addToStore)","create new Set for "+r),t=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(r,a)||t.add(n)}else this.checkContentExist(n,t)||(this.logger("(addToStore)","insert new",n),t.add(n));else t.add(n);return e.set(r,t),[e,t.size]},r.prototype.checkContentExist=function(e,r){return!!Array.from(r).filter((function(r){return r[0]===e[0]})).length},r.prototype.checkTypeInStore=function(e,r){this.validateEvt(e,r);var t=this.$get(e,!0);return!1===t||!t.filter((function(e){var t=e[3];return r!==t})).length},r.prototype.checkTypeInLazyStore=function(e,r){this.validateEvt(e,r);var t=this.lazyStore.get(e);return this.logger("(checkTypeInLazyStore)",t),!!t&&!!Array.from(t).filter((function(e){return e[2]!==r})).length},r.prototype.addToNormalStore=function(e,r,t,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",e,r,"try to add to normal store"),this.checkTypeInStore(e,r)){this.logger("(addToNormalStore)",r+" can add to "+e+" normal store");var o=this.hashFnToKey(t),a=[this.normalStore,e,o,t,n,r],i=Reflect.apply(this.addToStore,this,a),s=i[0],c=i[1];return this.normalStore=s,c}return!1},r.prototype.addToLazyStore=function(e,r,t,n){void 0===r&&(r=[]),void 0===t&&(t=null),void 0===n&&(n=!1);var o=[this.lazyStore,e,this.toArray(r),t];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],s=a[1];return this.lazyStore=i,s},r.prototype.toArray=function(e){return Array.isArray(e)?e:[e]},t.normalStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_STORE.set(this,e)},t.normalStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)},t.lazyStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_LAZY.set(this,e)},t.lazyStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)},r.prototype.hashFnToKey=function(e){return hashCode2Str(e.toString())},Object.defineProperties(r.prototype,t),r}(SuspendClass),EventService=function(e){function r(r){void 0===r&&(r={}),e.call(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={$done:{configurable:!0}};return r.prototype.logger=function(){},r.prototype.$on=function(e,r,t){var n=this;void 0===t&&(t=null);this.validate(e,r);var o=this.takeFromStore(e);if(!1===o)return this.logger("($on)",e+" callback is not in lazy store"),this.addToNormalStore(e,"on",r,t);this.logger("($on)",e+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],s=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+e),n.run(r,i,t||s),a+=n.addToNormalStore(e,"on",r,t||s)})),a},r.prototype.$once=function(e,r,t){void 0===t&&(t=null),this.validate(e,r);var n=this.takeFromStore(e);this.normalStore;if(!1===n)return this.logger("($once)",e+" not in the lazy store"),this.addToNormalStore(e,"once",r,t);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],s=o[2];if(s&&"once"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);this.logger("($once)","call run for "+e),this.run(r,a,t||i),this.$off(e)},r.prototype.$only=function(e,r,t){var n=this;void 0===t&&(t=null),this.validate(e,r);var o=!1,a=this.takeFromStore(e);(this.normalStore.has(e)||(this.logger("($only)",e+" add to store"),o=this.addToNormalStore(e,"only",r,t)),!1!==a)&&(this.logger("($only)",e+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],s=o[2];if(s&&"only"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);n.logger("($only)","call run for "+e),n.run(r,a,t||i)})));return o},r.prototype.$onlyOnce=function(e,r,t){void 0===t&&(t=null),this.validate(e,r);var n=!1,o=this.takeFromStore(e);if(this.normalStore.has(e)||(this.logger("($onlyOnce)",e+" add to store"),n=this.addToNormalStore(e,"onlyOnce",r,t)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],s=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+e),this.run(r,i,t||s),this.$off(e)}return n},r.prototype.$replace=function(e,r,t,n){if(void 0===t&&(t=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(e);var o=this["$"+n];return this.logger("($replace)",e,r),Reflect.apply(o,this,[e,r,t])}throw new Error(n+" is not supported!")},r.prototype.$trigger=function(e,r,t,n){void 0===r&&(r=[]),void 0===t&&(t=null),void 0===n&&(n=!1),this.validateEvt(e);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(e)){var i=this.$queue(e,r,t,n);if(this.logger("($trigger)",e,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",e,"not executed. Exit now."),!1;for(var s=Array.from(a.get(e)),c=s.length,u=!1,l=0;l1&&e[0]};function clientEventHandler(e,r,t,n,o,a){var i=getPrivateNamespace(o),s=!1,c=e.log;o.forEach((function(o){if(s=i===o,a[o]){c("[call bindWsHandler]",s,o);var u=[o,a[o],t,s,e];if(e.serverType===SOCKET_IO){var l=r.nspSet;u.push(l[o])}Reflect.apply(n,null,u)}else notLoginWsHandler(o,t,e)})),t.$on(LOGOUT_EVENT_NAME,(function(){c("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(r){clearMainEmitEvt(t,r),a[r]=!1,notLoginWsHandler(r,t,e)}))}))}var VERSION="0.3.6",constProps={version:"version: 1.0.4 module: cjs",serverType:JS_WS_NAME},fixWss$1=function(e){var r=e.toLowerCase();return r.indexOf("http")>-1?r.indexOf("https")>-1?r.replace("https","wss"):r.replace("http","ws"):r};function createWsClient(e,r){return void 0===r&&(r=!1),!1===r?function(r){return new e(fixWss$1(r))}:function(r,t){var n=fixWss$1(r),o=t&&"string"==typeof t?n+"?"+TOKEN_PARAM_NAME+"="+t:n;try{return new e(o)}catch(e){return console.error("WebSocket Connection Error",e),!1}}}var keys$1=[WS_REPLY_TYPE,WS_EVT_NAME,WS_DATA_NAME],isWsReply=function(e){var r=e.data;return!!r&&(keys$1.filter((function(e){return isObjectHasKey$1(r,e)})).length===keys$1.length&&r)},extractWsPayload=function(e){var r,t=e.data,n=isString$1(t)?JSON.parse(t):t;if(!1!==(r=isWsReply(n)))return{resolverName:r[WS_EVT_NAME],data:r[WS_DATA_NAME],type:r[WS_REPLY_TYPE]};throw new JsonqlError("payload can not be decoded",e)},errorTypeHandler=function(e,r,t,n,o){var a=[r];t&&a.push(t),a.push(o);var i=Reflect.apply(createEvt,null,a),s=n.data||n;e.$trigger(i,[s])};function wsMainHandler(e,r,t,n,o){var a=o.useCallbackStyle,i=o.log;i("wsMainHandler log test");var s=a?READY_PROP_NAME:ON_READY_PROP_NAME,c=a?LOGIN_PROP_NAME:ON_LOGIN_PROP_NAME,u=a?MESSAGE_PROP_NAME:ON_MESSAGE_PROP_NAME,l=a?RESULT_PROP_NAME:ON_RESULT_PROP_NAME,f=a?ERROR_PROP_NAME:ON_ERROR_PROP_NAME;r.onopen=function(){i("ws.onopen listened"),t.$call(s,e),n&&(i("isPrivate and fire the "+c),t.$call(c,e)),t.$only(createEvt(e,EMIT_REPLY_TYPE),(function(e,t){i("calling server",e,t),r.send(createQueryStr(e,t))}))},r.onmessage=function(r){try{var n=extractWsPayload(r),o=n.resolverName,a=n.type;switch(i("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var s=createEvt(e,o,u),c=t.$trigger(s,[n]);i("EMIT_REPLY_TYPE",s,c);break;case ACKNOWLEDGE_REPLY_TYPE:var p=createEvt(e,o,l);t.$trigger(p,[n]);break;case ERROR_TYPE:i("ERROR_TYPE"),errorTypeHandler(t,e,o,n,f);break;default:i("Unhandled event!",n),errorTypeHandler(t,e,o,n,f)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r,f)}},r.onclose=function(){i("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{i("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth)a=!0,s=(i=getNamespaceInOrder(n,o)).map((function(r,n){var o,a,i;return 0===n?t?(e.token=t,(o={})[r]=createNspAuthClient(r,e),o):((a={})[r]=!1,a):((i={})[r]=createNspClient(r,e),i)})).reduce((function(e,r){return Object.assign(e,r)}),{});else{var c=getNameFromPayload(n);i.push(c),s[c]=createNspClient(!1,e)}return{nsps:s,namespaces:i,login:a}};function createClient(e,r,t){var n=[e,r,t,wsMainHandler],o=e.token,a=e.log,i=createNsps(e,r,o),s=i.nsps,c=i.namespaces,u=i.login;return Reflect.apply(clientEventHandler,null,n.concat([c,s])),u&&t.$only(LOGIN_EVENT_NAME,(function(o){a("createClient LOGIN_EVENT_NAME"),clearMainEmitEvt(t,c);var i=createNsps(e,r,o);Reflect.apply(clientEventHandler,null,n.concat([i.namespaces,i.nsps]))})),{opts:e,nspMap:r,ee:t}}var wsDummyLogger=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];Reflect.apply(console.info,console,["local log"].concat(e))};function createClientResolver(e){var r=createWsClient(e),t=createWsClient(e,!0);return function(e,n,o){return e.nspClient=r,e.nspAuthClient=t,e.log&&"function"==typeof e.log||(console.info("No log provided!"),e.log=wsDummyLogger),e.log("@jsonql/ws ee",o.name),e.log("@jsonql/ws createClientResolver",e),createClient(e,n,o)}}var wsClientResolver=createClientResolver(WebSocket),debugFn=debug("jsonql-ws");debugFn("VERSION",VERSION);var node=wsClientCore(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=node.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index a3ce284a3847b7394e377b2e777af7d8285a7c14..9180d14ec3a6039eddc0f9572dfd77e75fe58a19 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -1,6 +1,6 @@ { "name": "@jsonql/ws", - "version": "1.0.3", + "version": "1.0.4", "description": "jsonql WS (WebSocket) client module for browser / node", "main": "node.js", "browser": "dist/jsonql-ws.umd.js", @@ -46,7 +46,7 @@ "jsonql-jwt": "^1.3.8", "jsonql-params-validator": "^1.5.2", "jsonql-utils": "^0.9.3", - "jsonql-ws-client-core": "^0.3.5", + "jsonql-ws-client-core": "^0.3.6", "ws": "^7.2.0" }, "devDependencies": { diff --git a/packages/@jsonql/ws/src/core/create-client-resolver.js b/packages/@jsonql/ws/src/core/create-client-resolver.js index faa00c634cd207fc4d4edc0571293ed1d82814a3..81cc423e6caac2cc8dc54ebce57f784fa014ac9b 100644 --- a/packages/@jsonql/ws/src/core/create-client-resolver.js +++ b/packages/@jsonql/ws/src/core/create-client-resolver.js @@ -3,6 +3,11 @@ import { createWsClient } from './create-ws-client' import { createClient } from './create-client' +// remove the implementaion later once debug is done +const wsDummyLogger = (...args) => { + Reflect.apply(console.info, console, ['local log', ...args]) +} + /** * combine the create client resolver * @param {object} ws the different WebSocket module @@ -21,9 +26,14 @@ export default function createClientResolver(ws) { return function(opts, nspMap, ee) { opts.nspClient = client; opts.nspAuthClient = authClient; - + // hack - remove later + if (!opts.log || typeof opts.log !== 'function') { + console.info(`No log provided!`) + opts.log = wsDummyLogger + } + opts.log('@jsonql/ws ee', ee.name) + opts.log('@jsonql/ws createClientResolver', opts) // console.log(`contract`, opts.contract) - return createClient(opts, nspMap, ee) } } diff --git a/packages/@jsonql/ws/src/core/create-client.js b/packages/@jsonql/ws/src/core/create-client.js index fc533b59cc1f92acd3fa710b76b7b4911ec4c465..a466e98716dbc3d5c6a7daaf599cc0b28b94651f 100644 --- a/packages/@jsonql/ws/src/core/create-client.js +++ b/packages/@jsonql/ws/src/core/create-client.js @@ -61,7 +61,7 @@ export function createClient(opts, nspMap, ee) { // arguments that don't change const args = [opts, nspMap, ee, wsMainHandler] // now create the nsps - const { token } = opts + const { token, log } = opts const { nsps, namespaces, login } = createNsps(opts, nspMap, token) // binding the listeners - and it will listen to LOGOUT event // to unbind itself, and the above call will bind it again @@ -69,6 +69,9 @@ export function createClient(opts, nspMap, ee) { // setup listener if (login) { ee.$only(LOGIN_EVENT_NAME, function loginEventHandler(tokenLater) { + + log('createClient LOGIN_EVENT_NAME') + // debugFn(`LOGIN_EVENT_NAME called with token:`, tokenLater) // @BUG this keep causing an "Disconnect call failed TypeError: Cannot read property 'readyState' of null" // I think that is because it's not login then it can not be disconnect diff --git a/packages/@jsonql/ws/src/core/ws-main-handler.js b/packages/@jsonql/ws/src/core/ws-main-handler.js index a04d482f8823384112c21876a81a61d7aff6f5ca..b9823f748c9b273482185ba8c1f1013838ac35f7 100644 --- a/packages/@jsonql/ws/src/core/ws-main-handler.js +++ b/packages/@jsonql/ws/src/core/ws-main-handler.js @@ -20,10 +20,7 @@ import { } from 'jsonql-constants' import { createQueryStr, createEvt } from 'jsonql-utils/module' import extractWsPayload from './extract-ws-payload' -// remove the implementaion later once debug is done -const dummyLogger = (...args) => { - Reflect.apply(console.info, console, ['local log', ...args]) -} + /** * under extremely circumstances we might not even have a resolverName, then @@ -57,12 +54,10 @@ const errorTypeHandler = (ee, namespace, resolverName, json, ERROR_EVT_NAME) => * @return {object} promise resolve after the onopen event */ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { + const { useCallbackStyle, log } = opts; - const debugFn = opts.log || dummyLogger - - debugFn(`wsMainHandler log test`) + log(`wsMainHandler log test`) - const { useCallbackStyle } = opts; const READY_EVT_NAME = useCallbackStyle ? READY_PROP_NAME : ON_READY_PROP_NAME; const LOGIN_EVT_NAME = useCallbackStyle ? LOGIN_PROP_NAME : ON_LOGIN_PROP_NAME; const MESSAGE_EVT_NAME = useCallbackStyle ? MESSAGE_PROP_NAME : ON_MESSAGE_PROP_NAME; @@ -70,19 +65,19 @@ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { const ERROR_EVT_NAME = useCallbackStyle ? ERROR_PROP_NAME : ON_ERROR_PROP_NAME; // connection open ws.onopen = function onOpenCallback() { - debugFn('ws.onopen listened') + log('ws.onopen listened') // we just call the onReady ee.$call(READY_EVT_NAME, namespace) // need an extra parameter here to id the private nsp if (isPrivate) { - debugFn(`isPrivate and fire the ${LOGIN_EVT_NAME}`) + log(`isPrivate and fire the ${LOGIN_EVT_NAME}`) ee.$call(LOGIN_EVT_NAME, namespace) } // add listener only after the open is called ee.$only( createEvt(namespace, EMIT_REPLY_TYPE), function wsMainOnEvtHandler(resolverName, args) { - debugFn('calling server', resolverName, args) + log('calling server', resolverName, args) ws.send( createQueryStr(resolverName, args) ) @@ -98,28 +93,28 @@ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { try { const json = extractWsPayload(payload) const { resolverName, type } = json; - debugFn('Hear from server', type, json) + log('Hear from server', type, json) switch (type) { case EMIT_REPLY_TYPE: let e1 = createEvt(namespace, resolverName, MESSAGE_EVT_NAME) let r = ee.$trigger(e1, [json]) - debugFn(`EMIT_REPLY_TYPE`, e1, r) + log(`EMIT_REPLY_TYPE`, e1, r) break; case ACKNOWLEDGE_REPLY_TYPE: let e2 = createEvt(namespace, resolverName, RESULT_EVT_NAME) let x = ee.$trigger(e2, [json]) - // debugFn(`ACKNOWLEDGE_REPLY_TYPE`, e2, json) + // log(`ACKNOWLEDGE_REPLY_TYPE`, e2, json) break; case ERROR_TYPE: // this is handled error and we won't throw it // we need to extract the error from json - debugFn(`ERROR_TYPE`) + log(`ERROR_TYPE`) errorTypeHandler(ee, namespace, resolverName, json, ERROR_EVT_NAME) break; // @TODO there should be an error type instead of roll into the other two types? TBC default: // if this happen then we should throw it and halt the operation all together - debugFn('Unhandled event!', json) + log('Unhandled event!', json) errorTypeHandler(ee, namespace, resolverName, json, ERROR_EVT_NAME) // let error = {error: {'message': 'Unhandled event!', type}}; // ee.$trigger(createEvt(namespace, resolverName, ON_RESULT_PROP_NAME), [error]) @@ -131,14 +126,14 @@ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { } // when the server close the connection ws.onclose = function onCloseCallback() { - debugFn('ws.onclose callback') + log('ws.onclose callback') // @TODO what to do with this // ee.$trigger(LOGOUT_EVENT_NAME, [namespace]) } // listen to the LOGOUT_EVENT_NAME ee.$on(LOGOUT_EVENT_NAME, function closeEvtHandler() { try { - debugFn('terminate ws connection') + log('terminate ws connection') ws.terminate() } catch(e) { console.error('ws.terminate error', e) diff --git a/packages/koa/package.json b/packages/koa/package.json index baaed4fb0ae839290e08ee5824c075430f66decc..37562a98ef980444df69d7156a9fa3b59b176659 100644 --- a/packages/koa/package.json +++ b/packages/koa/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-koa", - "version": "1.5.3", + "version": "1.5.4", "description": "jsonql Koa middleware", "main": "main.js", "module": "index.js", @@ -80,7 +80,7 @@ "jsonql-jwt": "^1.3.8", "jsonql-node-client": "^1.2.6", "jsonql-params-validator": "^1.5.2", - "jsonql-resolver": "^1.0.5", + "jsonql-resolver": "^1.0.7", "jsonql-utils": "^0.9.3", "jsonql-web-console": "^0.4.5", "koa-compose": "^4.1.0", @@ -88,7 +88,7 @@ }, "devDependencies": { "ava": "^2.4.0", - "jsonql-ws-server": "^1.5.0", + "jsonql-ws-server": "^1.5.2", "jwt-decode": "^2.2.0", "koa": "^2.11.0", "koa-bodyparser": "^4.2.1", diff --git a/packages/koa/tests/auth.test.js b/packages/koa/tests/auth.test.js index e153d7922ab2e62a91f27dfda44fd9d0e76a5099..5b55111a3083a69d98cdaa352c129889dd168dcf 100644 --- a/packages/koa/tests/auth.test.js +++ b/packages/koa/tests/auth.test.js @@ -19,15 +19,15 @@ test.before((t) => { t.context.app = createServer({ useJwt: false, enableAuth: true, - contractKey: myKey - // keysDir + contractKey: myKey, + keysDir }, dir) }) test.after( () => { // remove the files after fsx.removeSync(join(dirs.contractDir, dir)) - // fsx.removeSync(keysDir) + fsx.removeSync(keysDir) }) // Start running test(s) diff --git a/packages/resolver/package.json b/packages/resolver/package.json index f52112c379605771d425e08b3d909d8f12ad387f..3a1fbfcd3cec2e9be43550c469eabf2eb4f5fa79 100644 --- a/packages/resolver/package.json +++ b/packages/resolver/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-resolver", - "version": "1.0.5", + "version": "1.0.7", "description": "This is NOT for general use, please do not install it directly. This module is part of the jsonql tools supporting modules.", "main": "index.js", "files": [ @@ -39,7 +39,7 @@ "devDependencies": { "ava": "^2.4.0", "jsonql-contract": "^1.8.5", - "jsonql-koa": "^1.5.2", + "jsonql-koa": "^1.5.3", "server-io-core": "^1.2.0" }, "ava": { diff --git a/packages/resolver/src/handle-auth-methods.js b/packages/resolver/src/handle-auth-methods.js index 00a71f220562b4adcc6d82134319fb018c14a3be..185fbd9b7dfdfe13c4f5b68557d74f20887efc1f 100644 --- a/packages/resolver/src/handle-auth-methods.js +++ b/packages/resolver/src/handle-auth-methods.js @@ -6,7 +6,7 @@ const { LOGOUT_NAME, ISSUER_NAME, QUERY_ARG_NAME, - UNAUTHORIZED_STATUS + UNAUTHORIZED_STATUS } = require('jsonql-constants') const { JsonqlResolverNotFoundError, @@ -73,12 +73,12 @@ const handleAuthMethods = async function(ctx, resolverName, payload, opts, contr } return handleOutput(opts)(ctx, packResult(result)) } catch(e) { - debug('handleAuthMethods', e) const errorName = getErrorNameByInstance([ JsonqlResolverNotFoundError, JsonqlAuthorisationError, JsonqlValidationError ], e) + debug('handleAuthMethods', e, errorName) if (errorName === UNKNOWN_ERROR) { return ctxErrorHandler(ctx, UNAUTHORIZED_STATUS, e) } diff --git a/packages/resolver/src/validate-and-call.js b/packages/resolver/src/validate-and-call.js index 7c136522b75e2d7509178a83f71c4e40f616eb82..6bdfc54b638aa25c5c940bf93c4a7c0495966896 100644 --- a/packages/resolver/src/validate-and-call.js +++ b/packages/resolver/src/validate-and-call.js @@ -1,7 +1,11 @@ // validation wrapper const { AUTH_TYPE, HSA_ALGO, RSA_ALGO } = require('jsonql-constants') const { validateSync, isString } = require('jsonql-params-validator') -const { JsonqlValidationError, JsonqlResolverAppError } = require('jsonql-errors') +const { + JsonqlValidationError, + JsonqlResolverAppError, + JsonqlAuthorisationError +} = require('jsonql-errors') const { extractParamsFromContract } = require('jsonql-utils') const { loginResultToJwt } = require('jsonql-jwt') const { getDebug } = require('./utils') @@ -53,8 +57,14 @@ function runResolver(name, fn, args) { try { resolver(Reflect.apply(fn, null, args)) } catch(e) { - debug('runResolver', e) - rejecter(new JsonqlResolverAppError(name, e)) + debug('runResolver throw error', e) + switch (true) { + case e instanceof JsonqlAuthorisationError: + rejecter(new JsonqlAuthorisationError(name, e)) + break; + default: + rejecter(new JsonqlResolverAppError(name, e)) + } } }) } diff --git a/packages/resolver/tests/fixtures/contract/another/contract.json b/packages/resolver/tests/fixtures/contract/another/contract.json index 94ca58699eb95f99093024a9c31c503672d6da1f..f5c77d02f740d909b8ceb1ff71104cbbcaff0c0a 100644 --- a/packages/resolver/tests/fixtures/contract/another/contract.json +++ b/packages/resolver/tests/fixtures/contract/another/contract.json @@ -41,6 +41,27 @@ } ] }, + "fakeLogin": { + "file": "/home/joel/projects/open-source/jsonql/packages/resolver/tests/fixtures/resolvers/query/fake-login.js", + "description": "Fake the login and throw a JsonqlAuthorisationError error to see if it catches it", + "params": [ + { + "type": [ + "string" + ], + "name": "name", + "description": "username" + } + ], + "returns": [ + { + "type": [ + "object" + ], + "description": "userdata" + } + ] + }, "getSomething": { "file": "/home/joel/projects/open-source/jsonql/packages/resolver/tests/fixtures/resolvers/query/get-something.js", "description": false, @@ -61,10 +82,23 @@ "description": "name with prefix" } ] + }, + "toFail": { + "file": "/home/joel/projects/open-source/jsonql/packages/resolver/tests/fixtures/resolvers/query/to-fail.js", + "description": "This resolver will fail and throw an error", + "params": [], + "returns": [ + { + "type": [ + "any" + ], + "description": "a variable that didn't exist" + } + ] } }, "mutation": {}, "auth": {}, - "timestamp": 1566096001328, + "timestamp": 1576129069, "sourceType": "script" } diff --git a/packages/resolver/tests/fixtures/contract/another/public-contract.json b/packages/resolver/tests/fixtures/contract/another/public-contract.json index 162f44941e5df8652428b3913d6894ba8505982a..baace634953d67b4ee7505bb7aeab74e8ca39671 100644 --- a/packages/resolver/tests/fixtures/contract/another/public-contract.json +++ b/packages/resolver/tests/fixtures/contract/another/public-contract.json @@ -49,6 +49,26 @@ } ] }, + "fakeLogin": { + "description": "Fake the login and throw a JsonqlAuthorisationError error to see if it catches it", + "params": [ + { + "type": [ + "string" + ], + "name": "name", + "description": "username" + } + ], + "returns": [ + { + "type": [ + "object" + ], + "description": "userdata" + } + ] + }, "getSomething": { "description": false, "params": [ @@ -68,9 +88,21 @@ "description": "name with prefix" } ] + }, + "toFail": { + "description": "This resolver will fail and throw an error", + "params": [], + "returns": [ + { + "type": [ + "any" + ], + "description": "a variable that didn't exist" + } + ] } }, "mutation": {}, "auth": {}, - "timestamp": 1566096001328 + "timestamp": 1576129069 } diff --git a/packages/resolver/tests/fixtures/contract/contract.json b/packages/resolver/tests/fixtures/contract/contract.json index bd9eef966d9c9ec3ac2700669c73ec40b5a5adcf..83a1e58a1b218a990bf84b5e1f7fb424d27ceb14 100644 --- a/packages/resolver/tests/fixtures/contract/contract.json +++ b/packages/resolver/tests/fixtures/contract/contract.json @@ -41,6 +41,27 @@ } ] }, + "fakeLogin": { + "file": "/home/joel/projects/open-source/jsonql/packages/resolver/tests/fixtures/resolvers/query/fake-login.js", + "description": "Fake the login and throw a JsonqlAuthorisationError error to see if it catches it", + "params": [ + { + "type": [ + "string" + ], + "name": "name", + "description": "username" + } + ], + "returns": [ + { + "type": [ + "object" + ], + "description": "userdata" + } + ] + }, "getSomething": { "file": "/home/joel/projects/open-source/jsonql/packages/resolver/tests/fixtures/resolvers/query/get-something.js", "description": false, @@ -78,6 +99,6 @@ }, "mutation": {}, "auth": {}, - "timestamp": 1570202373, + "timestamp": 1576128195, "sourceType": "script" } diff --git a/packages/resolver/tests/fixtures/contract/es/contract.json b/packages/resolver/tests/fixtures/contract/es/contract.json index 6e24ed4fda876784021939290af43374e6ac3f82..27eb22ee1ee83dc17358893e5725dba3cd166dd6 100644 --- a/packages/resolver/tests/fixtures/contract/es/contract.json +++ b/packages/resolver/tests/fixtures/contract/es/contract.json @@ -43,6 +43,6 @@ } }, "auth": {}, - "timestamp": 1575969838, + "timestamp": 1576129094, "sourceType": "module" } diff --git a/packages/resolver/tests/fixtures/resolvers/query/fake-login.js b/packages/resolver/tests/fixtures/resolvers/query/fake-login.js new file mode 100644 index 0000000000000000000000000000000000000000..06639a8e14e7a04f9de72ca51755f321577e4bdf --- /dev/null +++ b/packages/resolver/tests/fixtures/resolvers/query/fake-login.js @@ -0,0 +1,13 @@ +const { JsonqlAuthorisationError } = require('jsonql-errors') + +/** + * Fake the login and throw a JsonqlAuthorisationError error to see if it catches it + * @param {string} name username + * @return {object} userdata + */ +module.exports = function fakeLogin(name) { + if (name === 'john') { + return {name: 'John Doe'} + } + throw new JsonqlAuthorisationError('fakeLogin', 'name not found!') +} diff --git a/packages/resolver/tests/throw.test.js b/packages/resolver/tests/throw.test.js index 04fa7fb7819b33b4e0cc0c8421d283932e6dbe1d..fa7c26a7d1844f893cd5684ca29635edbefbc30d 100644 --- a/packages/resolver/tests/throw.test.js +++ b/packages/resolver/tests/throw.test.js @@ -25,6 +25,30 @@ test.before(async t => { } }) +test.cb(`When the resolver throw certain type of error, it should forward the same`, t => { + t.plan(1) + const resolverName = 'fakeLogin' + const payload = createQuery(resolverName, ['jack']) + executeResolver( + t.context.opts, + 'query', + resolverName, + payload[resolverName], + t.context.contract + ) + .catch(e => { + debug('catch the same', e) + let errorName = getErrorNameByInstance([ + JsonqlResolverNotFoundError, + JsonqlAuthorisationError, + JsonqlValidationError, + JsonqlResolverAppError + ], e) + debug('errorName', errorName) + t.is(errorName, 'JsonqlAuthorisationError') + t.end() + }) +}) test.cb(`When resolver throw error, it should able to throw back a JsonqlResolverAppError`, t => { t.plan(1) diff --git a/packages/ws-client-core/package.json b/packages/ws-client-core/package.json index e4efbdcfb6940dad0b201cb5e5bf4382e1cd3814..05f64f8eba9a4e256baa207c0c8b2ba82450dc49 100644 --- a/packages/ws-client-core/package.json +++ b/packages/ws-client-core/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client-core", - "version": "0.3.5", + "version": "0.3.6", "description": "This is the jsonql Web Socket client core library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", @@ -54,7 +54,7 @@ "jsonql-errors": "^1.1.10", "jsonql-params-validator": "^1.5.2", "jsonql-utils": "^0.9.3", - "nb-event-service": "^1.8.6" + "nb-event-service": "^1.9.0" }, "devDependencies": { "ava": "^2.4.0", diff --git a/packages/ws-client-core/share.js b/packages/ws-client-core/share.js index 1a5956b440ecf676829cb469cbc0893c63195aee..0b9b33621084594284b1566c82d1c50cb30d7eba 100644 --- a/packages/ws-client-core/share.js +++ b/packages/ws-client-core/share.js @@ -8,7 +8,7 @@ import { triggerNamespacesOnError } from './src/share/trigger-namespaces-on-erro import { clientEventHandler } from './src/share/client-event-handler' // also export some of the util methods import { clearMainEmitEvt, disconnect, ee } from './src/utils' -const VERSION = '0.3.5' // @TODO make this dynamic +const VERSION = '0.3.6' // @TODO make this dynamic // export it export { VERSION, diff --git a/packages/ws-client-core/src/api.js b/packages/ws-client-core/src/api.js index e330998c76e7c984c8b98fdc3d61a6daed818c3a..0bcacdcb32a3ba55b2169931ce3ea23f626b8c61 100644 --- a/packages/ws-client-core/src/api.js +++ b/packages/ws-client-core/src/api.js @@ -10,6 +10,17 @@ const dummyLogger = (...args) => { Reflect.apply(console.info, console, ['[jsonql-ws-client-core]', ...args]) } +// breaking out for debugging purpose +const getEventEmitter = opts => { + const { log } = opts; + if (opts.eventEmitter) { + log(`eventEmitter is:`, eventEmitter.name) + return opts.eventEmitter + } + log(`Create a new Event Emitter`) + return new ee( opts.log ) +} + /** * The main interface which will generate the socket clients and map all events * @param {object} socketClientResolver this is the one method export by various clients @@ -22,17 +33,16 @@ export default function wsClientCore(socketClientResolver, constProps = {}) { return (opts) => checkOptions(opts, constProps) .then(opts => { const { log } = opts // 1.3.9 if we pass a log method here then we use this - if (log && typeof log === 'function') { - log('wsClientCore config opts', opts) - } else { + if (!log || typeof log !== 'function') { opts.log = dummyLogger } + opts.log('--- wsClientCore config opts ---', opts) return opts }) .then(opts => ({ opts, nspMap: processContract(opts), - ee: opts.eventEmitter || new ee( opts.log ) + ee: getEventEmitter(opts) })) .then( ({opts, nspMap, ee}) => socketClientResolver(opts, nspMap, ee) diff --git a/packages/ws-client-core/src/options/index.js b/packages/ws-client-core/src/options/index.js index 4ea7fd1a791bae577e479bc8d215763dd4d7e1be..c0f035600bd5d81a565dbecf4feaa0d641aade40 100644 --- a/packages/ws-client-core/src/options/index.js +++ b/packages/ws-client-core/src/options/index.js @@ -29,6 +29,7 @@ const jsonqlWsDefaultConstProps = defaultConstProps */ function checkOptionsWrapper(config, dOpt, cProps) { if (objHasProp(config, CHECKED_KEY)) { + console.info(`[jsonql-ws-client-core] found CHECKED_KEY passed`) // do we need to apply the constProps here? return Promise.resolve(Object.assign(config, cProps)) } diff --git a/packages/ws-server-core/package.json b/packages/ws-server-core/package.json index c110851e28df9f1b1c6b71bb97a24f5e704eaf32..cbdf797cf6779358b90ffabfaf7885e09defee66 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.1.0", + "version": "0.2.0", "description": "This is the core module that drive the Jsonql Web Socket server, not for direct use.", "main": "index.js", "files": [ @@ -35,7 +35,7 @@ "jsonql-errors": "^1.1.10", "jsonql-jwt": "^1.3.8", "jsonql-params-validator": "^1.5.2", - "jsonql-resolver": "^1.0.5", + "jsonql-resolver": "^1.0.7", "jsonql-utils": "^0.9.3", "lodash": "^4.17.15" }, diff --git a/packages/ws-server-core/tests/fixtures/browser-test-setup.js b/packages/ws-server-core/tests/fixtures/browser-test-setup.js deleted file mode 100644 index 62c1eca0e87e31cf626e489785f181c6f677efac..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/browser-test-setup.js +++ /dev/null @@ -1,41 +0,0 @@ -const Koa = require('koa') -const IO = require('koa-socket-2') -const socketioJwt = require('socketio-jwt') -const { join } = require('path'); - -const default_io = new IO({namespace: 'jsonql'}) -const app = new Koa() - -const root = join(__dirname, 'demo') -const port = process.env.PORT || 3001; -let timer; -app.use(require('koa-static')(root)) - -default_io.attach(app) - -// should able to show the methods -console.log(app['jsonql'].onConnection) - -default_io.on('chat message', function(msg){ - console.info('got a message', msg); - if (msg === 'terminate') { - clearTimeout(timer) - } - default_io.emit('chat message', msg) -}) - -// hijack the connnection for all channels -/* -app['jsonql'].on('connection', socketioJwt.authorize({ - secret: 'your secret or public key', - timeout: 15000 // 15 seconds to send the authentication message - })).on('authenticated', function(socket) { - //this socket is authenticated, we are good to handle more events from it. - console.log('hello! ' + socket.decoded_token.name); - })); -*/ - -app.listen( port , () => { - console.log('start @ ' + port) - open('http://localhost:' + port) -}) diff --git a/packages/ws-server-core/tests/fixtures/contract-config.js b/packages/ws-server-core/tests/fixtures/contract-config.js deleted file mode 100644 index 1fea5a751a3578eeec828b8f387ed41be3b570d1..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/contract-config.js +++ /dev/null @@ -1,6 +0,0 @@ -const { join } = require('path'); - -module.exports = { - resolverDir: join(__dirname, 'resolvers'), - contractDir: join(__dirname, 'contract') -}; diff --git a/packages/ws-server-core/tests/fixtures/contract.js b/packages/ws-server-core/tests/fixtures/contract.js deleted file mode 100644 index 71643a2f45b678eecbef5c27b071e0a995f2737c..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/contract.js +++ /dev/null @@ -1,13 +0,0 @@ -// generate contract -const { join } = require('path') -const contractApi = require('jsonql-contract'); -const contractDir = join(__dirname , 'contract', 'auth') -const resolverDir = join(__dirname , 'resolvers') - -contractApi({ - contractDir, - resolverDir, - enableAuth: true, - useJwt: true, - privateMethodDir: 'private' -}) diff --git a/packages/ws-server-core/tests/fixtures/contract/auth/contract.json b/packages/ws-server-core/tests/fixtures/contract/auth/contract.json deleted file mode 100644 index 6f283cfd1cf971026570ed0fc7f8914ecf995452..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/contract/auth/contract.json +++ /dev/null @@ -1,189 +0,0 @@ -{ - "query": {}, - "mutation": {}, - "auth": { - "login": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/auth/login.js", - "description": "create a login method for testing", - "params": [ - { - "type": [ - "string" - ], - "name": "username", - "description": "username" - } - ], - "returns": [ - { - "type": [ - "object" - ], - "description": "userdata" - } - ] - }, - "logout": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/auth/logout.js", - "description": "testing the logout method call", - "params": [], - "returns": [ - { - "type": [ - "boolean" - ], - "description": "true" - } - ] - } - }, - "timestamp": 1560178874072, - "socket": { - "causeError": { - "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "a message" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "a message but here we throw an error" - } - ] - }, - "chatroom": { - "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "message" - }, - { - "type": [ - "number" - ], - "name": "timestamp", - "description": "for checking the time" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "reply" - } - ] - }, - "delayFn": { - "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "a message" - }, - { - "type": [ - "number" - ], - "name": "timestamp", - "description": "a timestamp" - } - ], - "returns": false - }, - "secretChatroom": { - "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/private/secret-chatroom.js", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "name": "room", - "description": "room name" - }, - { - "type": [ - "any" - ], - "name": "msg", - "description": "message to that room" - } - ], - "returns": [ - { - "type": [ - "any" - ], - "description": "depends" - } - ] - }, - "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", - "description": "There is no parameter require for this call", - "params": [], - "returns": [ - { - "type": [ - "string" - ], - "description": "a message" - } - ] - }, - "wsHandler": { - "namespace": "jsonql/private", - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", - "description": "method just for testing the ws", - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "message" - }, - { - "type": [ - "number" - ], - "name": "timestamp", - "description": "timestamp" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "msg + time lapsed" - } - ] - } - } -} diff --git a/packages/ws-server-core/tests/fixtures/contract/contract.json b/packages/ws-server-core/tests/fixtures/contract/contract.json deleted file mode 100644 index dd3a5ef6af6889271a1fbde197e61020f781b1ab..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/contract/contract.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "query": {}, - "mutation": {}, - "auth": {}, - "timestamp": 1559136905329, - "socket": { - "causeError": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/cause-error.js", - "event": "cause-error", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "a message" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "a message but here we throw an error" - } - ] - }, - "chatroom": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/chatroom.js", - "event": "chatroom", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "message" - }, - { - "type": [ - "number" - ], - "name": "timestamp", - "description": "for checking the time" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "reply" - } - ] - }, - "delayFn": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/delay-fn.js", - "event": "delay-fn", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "a message" - }, - { - "type": [ - "number" - ], - "name": "timestamp", - "description": "a timestamp" - } - ], - "returns": false - }, - "wsHandler": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/resolvers/socket/ws-handler.js", - "event": "ws-handler", - "description": "method just for testing the ws", - "params": [ - { - "type": [ - "string" - ], - "name": "msg", - "description": "message" - }, - { - "type": [ - "number" - ], - "name": "timestamp", - "description": "timestamp" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "msg + time lapsed" - } - ] - } - } -} diff --git a/packages/ws-server-core/tests/fixtures/contract/es6/contract.json b/packages/ws-server-core/tests/fixtures/contract/es6/contract.json deleted file mode 100644 index e2a682d238cc4c5f3f17f91d788674c9fe17f206..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/contract/es6/contract.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "query": { - "getSomething": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/query/get-something.js", - "description": false, - "params": [], - "returns": [ - { - "type": [ - "string" - ], - "description": "a message" - } - ] - } - }, - "mutation": { - "saveSomething": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/mutation/save-something.js", - "description": false, - "params": [ - { - "type": [ - "any" - ], - "name": "data" - } - ], - "returns": [ - { - "type": [ - "boolean" - ], - "description": "true when success" - } - ] - } - }, - "auth": { - "login": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/auth/login.js", - "description": "create a login method for testing", - "params": [ - { - "type": [ - "string" - ], - "description": "username", - "name": "username" - } - ], - "returns": [ - { - "type": [ - "object" - ], - "description": "userdata" - } - ] - }, - "logout": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/auth/logout.js", - "description": "testing the logout method call", - "params": [], - "returns": [ - { - "type": [ - "boolean" - ], - "description": "true" - } - ] - } - }, - "timestamp": 1561989449, - "sourceType": "module", - "socket": { - "causeError": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/cause-error.js", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "description": "a message", - "name": "msg" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "a message but here we throw an error" - } - ] - }, - "chatroom": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/chatroom.js", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "description": "message", - "name": "msg" - }, - { - "type": [ - "number" - ], - "description": "for checking the time", - "name": "timestamp" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "reply" - } - ] - }, - "delayFn": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/delay-fn.js", - "description": false, - "params": [ - { - "type": [ - "string" - ], - "description": "a message", - "name": "msg" - }, - { - "type": [ - "number" - ], - "description": "a timestamp", - "name": "timestamp" - } - ], - "returns": false - }, - "wsHandler": { - "file": "/home/joel/projects/open-source/jsonqltools/packages/ws-server/tests/fixtures/es6resolvers/socket/ws-handler.js", - "description": "method just for testing the ws", - "params": [ - { - "type": [ - "string" - ], - "description": "message", - "name": "msg" - }, - { - "type": [ - "number" - ], - "description": "timestamp", - "name": "timestamp" - } - ], - "returns": [ - { - "type": [ - "string" - ], - "description": "msg + time lapsed" - } - ] - } - } -} diff --git a/packages/ws-server-core/tests/fixtures/create-payload.js b/packages/ws-server-core/tests/fixtures/create-payload.js deleted file mode 100644 index d5056cb06c23b8ec0beeb2a864c3d746f695a297..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/create-payload.js +++ /dev/null @@ -1,7 +0,0 @@ -const createPayload = (name, ...args) => { - return JSON.stringify({ - [name]: { args: args } - }); -} - -module.exports = createPayload; diff --git a/packages/ws-server-core/tests/fixtures/demo/index.html b/packages/ws-server-core/tests/fixtures/demo/index.html deleted file mode 100644 index 3e07a99f858935c90e8c113451a6c2582a18cf5a..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/demo/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - Socket.IO chat - - - -
    -
    - -
    - - diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/auth/login.js b/packages/ws-server-core/tests/fixtures/es6resolvers/auth/login.js deleted file mode 100644 index 1a6f309227b105ff31f39f2f989ce45243e85541..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/auth/login.js +++ /dev/null @@ -1,9 +0,0 @@ - -/** - * create a login method for testing - * @param {string} username username - * @return {object} userdata - */ -export default function login(username) { - return {name: username} -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/auth/logout.js b/packages/ws-server-core/tests/fixtures/es6resolvers/auth/logout.js deleted file mode 100644 index 93ae5ff6f2bba90c7fb6ecbe3fe1f4fbbb258224..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/auth/logout.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * testing the logout method call - * @return {boolean} true - */ -export default function logout() { - return true; -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/mutation/save-something.js b/packages/ws-server-core/tests/fixtures/es6resolvers/mutation/save-something.js deleted file mode 100644 index cc2371a3014d79e309d22d8d8339c41edfb513da..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/mutation/save-something.js +++ /dev/null @@ -1,8 +0,0 @@ - -/** - * @param {any} data - * @return {boolean} true when success - */ -export default function saveSomething(data) { - return true; -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/query/get-something.js b/packages/ws-server-core/tests/fixtures/es6resolvers/query/get-something.js deleted file mode 100644 index c2282dec7fab7d746eaac4b32f0fb651e71d58c6..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/query/get-something.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @return {string} a message - * - */ -export default function getSomething() { - return 'You got it!' -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/cause-error.js b/packages/ws-server-core/tests/fixtures/es6resolvers/socket/cause-error.js deleted file mode 100644 index 40c1b247885c4654206bdc6507c444841e39c102..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/cause-error.js +++ /dev/null @@ -1,9 +0,0 @@ -// this method will throw an error - -/** - * @param {string} msg a message - * @return {string} a message but here we throw an error - */ -export default function causeError(msg) { - throw new Error(msg) -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/chatroom.js b/packages/ws-server-core/tests/fixtures/es6resolvers/socket/chatroom.js deleted file mode 100644 index bb8495b09fc189538c420684cdc99417a75fdaad..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/chatroom.js +++ /dev/null @@ -1,12 +0,0 @@ -// a private method - -/** - * - * @param {string} msg message - * @param {number} timestamp for checking the time - * @return {string} reply - */ -export default function chatroom(msg, timestamp) { - const d = Date.now() - timestamp; - return msg + ` took ${d} ms`; -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/delay-fn.js b/packages/ws-server-core/tests/fixtures/es6resolvers/socket/delay-fn.js deleted file mode 100644 index a6a0e767fd5ea06f18a5af9f42d3a3e3cc05e4be..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/delay-fn.js +++ /dev/null @@ -1,15 +0,0 @@ -// test this with a Promise return result -/** - * @param {string} msg a message - * @param {number} timestamp a timestamp - */ -export default function delayFn(msg, timestamp) { - // also test the global socket instance - delayFn.send = 'I am calling from delayFn'; - - return new Promise(resolver => { - setTimeout(() => { - resolver(msg + (Date.now() - timestamp)) - }, 1000) - }) -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/private/secret-chatroom.js b/packages/ws-server-core/tests/fixtures/es6resolvers/socket/private/secret-chatroom.js deleted file mode 100644 index 6b2b77bcd84934e352a95595a66f2e7c335d7097..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/private/secret-chatroom.js +++ /dev/null @@ -1,12 +0,0 @@ - -/** - * @param {string} room room name - * @param {*} msg message to that room - * @return {*} depends - */ -export default function secretChatroom(room, msg) { - - let userdata = secretChatroom.userdata; - // @TODO - return `send ${msg+''} to ${room} room from ${userdata.name}`; -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/public/available-to-everyone/index.js b/packages/ws-server-core/tests/fixtures/es6resolvers/socket/public/available-to-everyone/index.js deleted file mode 100644 index 9737a3b876c96c57dec9ddc974ed2ab94f6b0db6..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/public/available-to-everyone/index.js +++ /dev/null @@ -1,9 +0,0 @@ -// This method for testing the public call - -/** - * There is no parameter require for this call - * @return {string} a message - */ -export default function availableToEveryone() { - return 'You get a public message'; -} diff --git a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/ws-handler.js b/packages/ws-server-core/tests/fixtures/es6resolvers/socket/ws-handler.js deleted file mode 100644 index 37aeeedf16b9afd1de972c4b19c25c32727ada63..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/es6resolvers/socket/ws-handler.js +++ /dev/null @@ -1,18 +0,0 @@ -// will test this one with the send property - -/** - * method just for testing the ws - * @param {string} msg message - * @param {number} timestamp timestamp - * @return {string} msg + time lapsed - */ -export default function wsHandler(msg, timestamp) { - - wsHandler.send = 'I am sending a message back from ws'; - - return new Promise(resolver => { - setTimeout(() => { - resolver(msg + ' - ' +(Date.now() - timestamp)) - }, 1000) - }) -} diff --git a/packages/ws-server-core/tests/fixtures/full-setup.js b/packages/ws-server-core/tests/fixtures/full-setup.js deleted file mode 100644 index e3dc0121b10e4d6ccb4343dad512788523d5e05e..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/full-setup.js +++ /dev/null @@ -1,34 +0,0 @@ -// this one will provide all the configuration options including the contract -const { join } = require('path') -const fsx = require('fs-extra') -const { getDebug } = require('../../lib/share/helpers') -const debug = getDebug('test:full-setup') -const resolverDir = join(__dirname, 'resolvers') - -const { jsonqlWsServer } = require('../../index') -const http = require('http') - -// start -const server = http.createServer(function(req, res) { - res.writeHead(200, { 'Content-Type': 'text/plain' }) - res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2)) - res.end() -}) - -module.exports = function(_config = {}) { - const config = { - resolverDir, - serverType: 'socket.io' - } - const opts = Object.assign(config, _config) - return new Promise(resolver => { - jsonqlWsServer(opts, server) - .then(io => { - debug('socket setup completed') - resolver({ - app: server, - io - }) - }) - }) -} diff --git a/packages/ws-server-core/tests/fixtures/keys/privateKey.pem b/packages/ws-server-core/tests/fixtures/keys/privateKey.pem deleted file mode 100644 index 52ceae92066efead75838933d8bca25eeb9666ac..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/keys/privateKey.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDfDqpnh8TceIRuemm8GWM6nvE6KumK/Lq+POrZqghgHpZa5zjv -wwjsJ2iK45zWIRpggMkSlQZWvnRRjj/TWfv7448qhhiTB7hmqV63XjfYXJ5OgTtN -fPW36ZQ48Ha0y4sjlU4gvSijHpnzrJ5yV/vjLLLp9WxTux4ColeZu2B/XQIDAQAB -AoGAEmLJFQOR7IJamCiq8oA9N6XGSH8lBPnUAr5OtWZYjmO3DQMmJE01PRH6gghE -8zmDTRUQfeGexiOovtg01p0CMhehwS8D8d0m01s43zQ77xVJuFAvuW1U1kER4Xze -tVkLEvvO9PcWpKUEmxYpDoCJXGIfXuHaSAVbVLYDKn2MEUECQQD4FeWlpkxSNQT9 -u6w01zR/byjXzUmibOP5zrpaEsDGIxxTlxc/7WJZlKLNybXUyZE8oHgepuefdcL0 -ybk6gvQpAkEA5ixdMtnsbUImJYNFrt5BbLzEU9eF76hovsOSjOc2eTUJHEeiXeDA -Q66WZwXNBf/CRrZdsAvBPMQcWzJLwp24FQJBAPaojtPMLEXwAS5l0ioXblLlqq4l -pfigW2qcaBv2WUSm1BsoNi2RUB/Q8K26x9bxMj4dLlELkW+yHkxT5J6QZUECQFRO -A4TQlOwfwmETB77Y4RW2viIHWqNBB7x3XYIGXclfR4r4IdxIqaMgmy34zfNYjgvg -V8hXRdu/6LLuZRlPM1ECQHUppZNG7WKP9F7ywAr33u3xD0+9MqsfqcgKPfP9VOxs -Lo8EdmjmB30lyyP/Cd1hzxb+BsJjGmxzU/DikGbWos8= ------END RSA PRIVATE KEY----- diff --git a/packages/ws-server-core/tests/fixtures/keys/publicKey.pem b/packages/ws-server-core/tests/fixtures/keys/publicKey.pem deleted file mode 100644 index 7bd2532afbeb5b3be8b9c9f275ffac7b32456d0d..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/keys/publicKey.pem +++ /dev/null @@ -1,6 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfDqpnh8TceIRuemm8GWM6nvE6 -KumK/Lq+POrZqghgHpZa5zjvwwjsJ2iK45zWIRpggMkSlQZWvnRRjj/TWfv7448q -hhiTB7hmqV63XjfYXJ5OgTtNfPW36ZQ48Ha0y4sjlU4gvSijHpnzrJ5yV/vjLLLp -9WxTux4ColeZu2B/XQIDAQAB ------END PUBLIC KEY----- diff --git a/packages/ws-server-core/tests/fixtures/resolvers/auth/login.js b/packages/ws-server-core/tests/fixtures/resolvers/auth/login.js deleted file mode 100644 index 8aa2524793c6eb6f3a470482bc8e9bdea2f26002..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/auth/login.js +++ /dev/null @@ -1,9 +0,0 @@ - -/** - * create a login method for testing - * @param {string} username username - * @return {object} userdata - */ -module.exports = function login(username) { - return {name: username} -} diff --git a/packages/ws-server-core/tests/fixtures/resolvers/auth/logout.js b/packages/ws-server-core/tests/fixtures/resolvers/auth/logout.js deleted file mode 100644 index b5957eb2e26f4ac5a0cd0ede1e36847d5f1e6163..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/auth/logout.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * testing the logout method call - * @return {boolean} true - */ -module.exports = function logout() { - return true; -} diff --git a/packages/ws-server-core/tests/fixtures/resolvers/socket/cause-error.js b/packages/ws-server-core/tests/fixtures/resolvers/socket/cause-error.js deleted file mode 100644 index 6b9278c314ead5b4072cc81b76f0b502dee07e12..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/socket/cause-error.js +++ /dev/null @@ -1,9 +0,0 @@ -// this method will throw an error - -/** - * @param {string} msg a message - * @return {string} a message but here we throw an error - */ -module.exports = function(msg) { - throw new Error(msg) -} diff --git a/packages/ws-server-core/tests/fixtures/resolvers/socket/chatroom.js b/packages/ws-server-core/tests/fixtures/resolvers/socket/chatroom.js deleted file mode 100644 index 0b57676e1e3a1cd3ee583eaaf249a9accea26ce6..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/socket/chatroom.js +++ /dev/null @@ -1,12 +0,0 @@ -// a private method - -/** - * - * @param {string} msg message - * @param {number} timestamp for checking the time - * @return {string} reply - */ -module.exports = function(msg, timestamp) { - const d = Date.now() - timestamp; - return msg + ` took ${d} ms`; -} diff --git a/packages/ws-server-core/tests/fixtures/resolvers/socket/delay-fn.js b/packages/ws-server-core/tests/fixtures/resolvers/socket/delay-fn.js deleted file mode 100644 index 523ed5c1640af604a093213806dcdad5da0f1422..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/socket/delay-fn.js +++ /dev/null @@ -1,15 +0,0 @@ -// test this with a Promise return result -/** - * @param {string} msg a message - * @param {number} timestamp a timestamp - */ -module.exports = function delayFn(msg, timestamp) { - // also test the global socket instance - delayFn.send = 'I am calling from delayFn'; - - return new Promise(resolver => { - setTimeout(() => { - resolver(msg + (Date.now() - timestamp)) - }, 1000) - }) -} diff --git a/packages/ws-server-core/tests/fixtures/resolvers/socket/private/secret-chatroom.js b/packages/ws-server-core/tests/fixtures/resolvers/socket/private/secret-chatroom.js deleted file mode 100644 index a8dfc2f66546046675d85f67bf0877e557d9d8e9..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/socket/private/secret-chatroom.js +++ /dev/null @@ -1,12 +0,0 @@ - -/** - * @param {string} room room name - * @param {*} msg message to that room - * @return {*} depends - */ -module.exports = function secretChatroom(room, msg) { - - let userdata = secretChatroom.userdata; - // @TODO - return `send ${msg+''} to ${room} room from ${userdata.name}`; -} diff --git a/packages/ws-server-core/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js b/packages/ws-server-core/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js deleted file mode 100644 index 16b326f970dc769884dda13e36b4df9f3f924166..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/socket/public/available-to-everyone/index.js +++ /dev/null @@ -1,9 +0,0 @@ -// This method for testing the public call - -/** - * There is no parameter require for this call - * @return {string} a message - */ -module.exports = function availableToEveryone() { - return 'You get a public message'; -} diff --git a/packages/ws-server-core/tests/fixtures/resolvers/socket/ws-handler.js b/packages/ws-server-core/tests/fixtures/resolvers/socket/ws-handler.js deleted file mode 100644 index 0a6a10e0c4b96c40a363157e05e6b26622d325ff..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/resolvers/socket/ws-handler.js +++ /dev/null @@ -1,18 +0,0 @@ -// will test this one with the send property - -/** - * method just for testing the ws - * @param {string} msg message - * @param {number} timestamp timestamp - * @return {string} msg + time lapsed - */ -module.exports = function wsHandler(msg, timestamp) { - - wsHandler.send = 'I am sending a message back from ws'; - - return new Promise(resolver => { - setTimeout(() => { - resolver(msg + ' - ' +(Date.now() - timestamp)) - }, 1000) - }) -} diff --git a/packages/ws-server-core/tests/fixtures/server.js b/packages/ws-server-core/tests/fixtures/server.js deleted file mode 100644 index 1e253252ca21b29ac0c74e0716f8827f10604d34..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/server.js +++ /dev/null @@ -1,38 +0,0 @@ -const http = require('http') -const fsx = require('fs-extra') -const debug = require('debug')('jsonql-ws-server:fixtures:server') -const fs = require('fs') -const { join } = require('path') -const { JSONQL_PATH } = require('jsonql-constants') - -const resolverDir = join(__dirname, 'resolvers') -const contractDir = join(__dirname, 'contract') - -const { jsonqlWsServer } = require('../../index') - -// start -const server = http.createServer(function(req, res) { - res.writeHead(200, { 'Content-Type': 'text/plain' }) - res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2)) - res.end() -}) - -module.exports = function(extra = {}) { - // extra.contract = extra.contract || contract; - return new Promise(resolver => { - jsonqlWsServer( - Object.assign({ - resolverDir, - contractDir, - serverType: 'ws' - }, extra), - server - ) - .then(io => { - resolver({ - io, - app: server - }) - }) - }) -} diff --git a/packages/ws-server-core/tests/fixtures/token.js b/packages/ws-server-core/tests/fixtures/token.js deleted file mode 100644 index 1382f1954f3a8ccd388345518f50e14323cf6b26..0000000000000000000000000000000000000000 --- a/packages/ws-server-core/tests/fixtures/token.js +++ /dev/null @@ -1,15 +0,0 @@ -// generate token for use for auth -const { join } = require('path') -const fsx = require('fs-extra') -const privateKey = fsx.readFileSync(join(__dirname, 'keys', 'privateKey.pem')) -const { jwtRsaToken, jwtToken } = require('jsonql-jwt') -const { HSA_ALGO } = require('jsonql-constants') - -module.exports = function(payload, key = false) { - if (key === false) { - return jwtRsaToken(payload, privateKey) - } - return jwtToken(payload, key, { - algorithm: HSA_ALGO - }) -} diff --git a/packages/ws-server/package.json b/packages/ws-server/package.json index c05184db60b17eb407113dfe9d06c2d50443c84e..32e57e7877c7d555b43e064fd8704a71862dda9f 100755 --- a/packages/ws-server/package.json +++ b/packages/ws-server/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-server", - "version": "1.5.1", + "version": "1.5.2", "description": "Setup WebSocket server for the jsonql to run on the same host, automatic generate public / private channel using contract", "main": "index.js", "files": [ @@ -27,12 +27,12 @@ "author": "Joel Chu ", "license": "MIT", "dependencies": { - "jsonql-ws-server-core": "^0.1.0", + "jsonql-ws-server-core": "^0.2.0", "ws": "^7.2.0" }, "devDependencies": { "ava": "^2.4.0", - "jsonql-contract": "^1.8.4", + "jsonql-contract": "^1.8.5", "open": "^7.0.0" }, "ava": { diff --git a/packages/ws-server/src/core/ws-setup.js b/packages/ws-server/src/core/ws-setup.js index 7f430d52b837a8db46b4529ac8b1e6a9c29ea5da..216acf805d466ba5268faa3d69aa74bcacae3f3e 100644 --- a/packages/ws-server/src/core/ws-setup.js +++ b/packages/ws-server/src/core/ws-setup.js @@ -20,6 +20,7 @@ const { const debug = getDebug('ws-setup') /** + * handle resolvers * @param {object} ws WebSocket instance * @param {object} payload args array * @param {string} resolverName name of resolver diff --git a/packages/ws-server/tests/fixtures/fn.js b/packages/ws-server/tests/fixtures/fn.js deleted file mode 100644 index cba044c07299a81db376761b6481e274632f36e5..0000000000000000000000000000000000000000 --- a/packages/ws-server/tests/fixtures/fn.js +++ /dev/null @@ -1,10 +0,0 @@ -const debug = require('debug')('jsonql-ws-server:test:object'); -/** - * @return {string} a msg - * - * - */ -module.exports = function myFn() { - // debug(myFn.ctx); - return myFn.ctx(); // 'This is a fn'; -}