@aeternity/aepp-sdk 8.2.0 → 10.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -9
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/account/base.js +33 -119
- package/es/account/base.js.map +1 -1
- package/es/account/memory.js +17 -19
- package/es/account/memory.js.map +1 -1
- package/es/account/multiple.js +75 -154
- package/es/account/multiple.js.map +1 -1
- package/es/ae/aens.js +164 -599
- package/es/ae/aens.js.map +1 -1
- package/es/ae/contract.js +108 -916
- package/es/ae/contract.js.map +1 -1
- package/es/ae/index.js +89 -250
- package/es/ae/index.js.map +1 -1
- package/es/ae/oracle.js +132 -500
- package/es/ae/oracle.js.map +1 -1
- package/es/chain/index.js +4 -23
- package/es/chain/index.js.map +1 -1
- package/es/chain/node.js +292 -1018
- package/es/chain/node.js.map +1 -1
- package/es/channel/handlers.js +597 -1086
- package/es/channel/handlers.js.map +1 -1
- package/es/channel/index.js +203 -451
- package/es/channel/index.js.map +1 -1
- package/es/channel/internal.js +129 -301
- package/es/channel/internal.js.map +1 -1
- package/es/contract/aci/index.js +319 -491
- package/es/contract/aci/index.js.map +1 -1
- package/es/contract/aci/transformation.js +35 -711
- package/es/contract/aci/transformation.js.map +1 -1
- package/es/contract/compiler.js +129 -203
- package/es/contract/compiler.js.map +1 -1
- package/es/contract/ga/helpers.js +17 -122
- package/es/contract/ga/helpers.js.map +1 -1
- package/es/contract/ga/index.js +102 -247
- package/es/contract/ga/index.js.map +1 -1
- package/es/contract/index.js +1 -1
- package/es/contract/index.js.map +1 -1
- package/es/index.js +2 -3
- package/es/index.js.map +1 -1
- package/es/node-pool/index.js +54 -73
- package/es/node-pool/index.js.map +1 -1
- package/es/node.js +56 -157
- package/es/node.js.map +1 -1
- package/es/other.d.ts +1 -1
- package/es/tx/builder/helpers.js +49 -89
- package/es/tx/builder/helpers.js.map +1 -1
- package/es/tx/builder/index.js +205 -303
- package/es/tx/builder/index.js.map +1 -1
- package/es/tx/builder/schema.js +585 -573
- package/es/tx/builder/schema.js.map +1 -1
- package/es/tx/index.js +1 -1
- package/es/tx/index.js.map +1 -1
- package/es/tx/tx-object.js +105 -135
- package/es/tx/tx-object.js.map +1 -1
- package/es/tx/tx.js +810 -1586
- package/es/tx/tx.js.map +1 -1
- package/es/tx/validator.js +191 -426
- package/es/tx/validator.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +17 -21
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +38 -74
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +14 -15
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
- package/es/utils/aepp-wallet-communication/helpers.js +60 -105
- package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +179 -510
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +70 -89
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +354 -603
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/schema.js +43 -39
- package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
- package/es/utils/amount-formatter.js +41 -61
- package/es/utils/amount-formatter.js.map +1 -1
- package/es/utils/async-init.js +28 -64
- package/es/utils/async-init.js.map +1 -1
- package/es/utils/bignumber.js +3 -11
- package/es/utils/bignumber.js.map +1 -1
- package/es/utils/bytes.js +5 -9
- package/es/utils/bytes.js.map +1 -1
- package/es/utils/crypto.js +49 -75
- package/es/utils/crypto.js.map +1 -1
- package/es/utils/hd-wallet.js +45 -81
- package/es/utils/hd-wallet.js.map +1 -1
- package/es/utils/json-big.js +16 -49
- package/es/utils/json-big.js.map +1 -1
- package/es/utils/keystore.js +81 -246
- package/es/utils/keystore.js.map +1 -1
- package/es/utils/mptree.js +88 -134
- package/es/utils/mptree.js.map +1 -1
- package/es/utils/other.js +10 -60
- package/es/utils/other.js.map +1 -1
- package/es/utils/semver-satisfies.js +9 -28
- package/es/utils/semver-satisfies.js.map +1 -1
- package/es/utils/string.js +4 -13
- package/es/utils/string.js.map +1 -1
- package/es/utils/swagger.js +85 -218
- package/es/utils/swagger.js.map +1 -1
- package/package.json +52 -43
- package/src/account/base.js +8 -9
- package/src/account/multiple.js +20 -16
- package/src/ae/aens.js +25 -21
- package/src/ae/contract.js +65 -246
- package/src/ae/index.js +31 -7
- package/src/ae/oracle.js +21 -17
- package/src/chain/index.js +2 -12
- package/src/chain/node.js +26 -29
- package/src/channel/handlers.js +0 -1
- package/src/channel/index.js +4 -5
- package/src/contract/aci/index.js +221 -106
- package/src/contract/aci/transformation.js +30 -422
- package/src/contract/compiler.js +45 -4
- package/src/contract/ga/helpers.js +2 -12
- package/src/contract/ga/index.js +22 -26
- package/src/index.js +2 -4
- package/src/node-pool/index.js +21 -12
- package/src/node.js +22 -26
- package/src/tx/builder/helpers.js +12 -24
- package/src/tx/builder/index.js +18 -15
- package/src/tx/builder/schema.js +43 -108
- package/src/tx/tx-object.js +0 -2
- package/src/tx/tx.js +157 -144
- package/src/tx/validator.js +134 -202
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +1 -3
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +9 -10
- package/src/utils/aepp-wallet-communication/schema.js +1 -3
- package/src/utils/amount-formatter.ts +1 -1
- package/src/utils/bignumber.ts +2 -1
- package/src/utils/crypto.js +4 -17
- package/src/utils/other.ts +1 -1
- package/src/utils/semver-satisfies.ts +1 -1
- package/src/utils/swagger.js +24 -7
- package/CHANGELOG.md +0 -1716
- package/src/contract/aci/helpers.js +0 -140
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/rpc/aepp-rpc.js"],"names":["v4","uuid","Ae","RpcClient","getHandler","message","voidFn","METHODS","RPC_STATUS","VERSION","NOTIFICATIONS","wallet","updateAddress","instance","params","rpcClient","accounts","onAddressChange","updateNetwork","msg","info","networkId","onNetworkChange","closeConnection","disconnectWallet","onDisconnect","RESPONSES","aepp","address","processResponse","connect","result","status","CONNECTED","subscribeAddress","subscription","addressSubscription","id","sign","signedTransaction","transactionHash","signMessage","signature","REQUESTS","handleMessage","debug","Object","prototype","hasOwnProperty","call","callbacks","compose","init","name","connection","forceValidation","eventsHandlers","connectToWallet","event","Error","deepProps","defaults","walletBroadcast","methods","addresses","currentAccount","connected","isConnected","getNetworkId","force","connectionInfo","handlers","sendConnectRequest","sendDisconnect","sendMessage","reason","disconnect","onAccount","current","hasAccessToAccount","askAddresses","request","type","value","signTransaction","tx","opt","returnSigned","version","send","options","signed","sendTransaction"],"mappings":"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","sourcesContent":["/**\n * RPC handler for AEPP side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @export AeppRpc\n * @example import ContentScriptBridge from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc'\n */\nimport * as R from 'ramda'\nimport { v4 as uuid } from 'uuid'\n\nimport Ae from '../../../ae'\nimport RpcClient from './rpc-client'\nimport { getHandler, message, voidFn } from '../helpers'\nimport { METHODS, RPC_STATUS, VERSION } from '../schema'\n\nconst NOTIFICATIONS = {\n [METHODS.wallet.updateAddress]: (instance) =>\n ({ params }) => {\n instance.rpcClient.accounts = params\n instance.onAddressChange(params)\n },\n [METHODS.updateNetwork]: (instance) =>\n (msg) => {\n instance.rpcClient.info.networkId = msg.params.networkId\n instance.onNetworkChange(msg.params)\n },\n [METHODS.closeConnection]: (instance) =>\n (msg) => {\n instance.disconnectWallet()\n instance.onDisconnect(msg.params)\n }\n}\n\nconst RESPONSES = {\n [METHODS.aepp.address]: (instance) =>\n (msg) => instance.rpcClient.processResponse(msg),\n [METHODS.aepp.connect]: (instance) =>\n (msg) => {\n if (msg.result) instance.rpcClient.info.status = RPC_STATUS.CONNECTED\n instance.rpcClient.processResponse(msg)\n },\n [METHODS.aepp.subscribeAddress]: (instance) =>\n (msg) => {\n if (msg.result) {\n msg.result.address && (instance.rpcClient.accounts = msg.result.address)\n msg.result.subscription && (instance.rpcClient.addressSubscription = msg.result.subscription)\n }\n\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result])\n },\n [METHODS.aepp.sign]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signedTransaction || result.transactionHash])\n },\n [METHODS.aepp.signMessage]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signature])\n }\n}\n\nconst REQUESTS = {}\n\nconst handleMessage = (instance) => async (msg) => {\n if (!msg.id) {\n return getHandler(NOTIFICATIONS, msg, { debug: instance.debug })(instance)(msg)\n } else if (Object.prototype.hasOwnProperty.call(instance.rpcClient.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance)(msg)\n } else {\n return getHandler(REQUESTS, msg, { debug: instance.debug })(instance)(msg)\n }\n}\n\n/**\n * Contain functionality for wallet interaction and connect it to sdk\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Aepp name\n * @param {Function} onAddressChange Call-back function for update address event\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @param {Function} onNetworkChange Call-back function for update network event\n * @param {Object} connection Wallet connection object\n * @return {Object}\n */\nexport default Ae.compose({\n async init ({ name, onAddressChange = voidFn, onDisconnect = voidFn, onNetworkChange = voidFn, connection, forceValidation = false, debug = false }) {\n const eventsHandlers = ['onDisconnect', 'onAddressChange', 'onNetworkChange']\n this.connection = connection\n this.name = name\n this.debug = debug\n\n if (connection) {\n // Init RPCClient\n await this.connectToWallet(connection)\n }\n // Event callbacks\n this.onDisconnect = onDisconnect\n this.onAddressChange = onAddressChange\n this.onNetworkChange = onNetworkChange\n // validation\n eventsHandlers.forEach(event => {\n if (!forceValidation && typeof this[event] !== 'function') throw new Error(`Call-back for ${event} must be an function!`)\n })\n },\n deepProps: { Ae: { defaults: { walletBroadcast: true } } },\n methods: {\n sign () {\n },\n addresses () {\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n return [this.rpcClient.currentAccount, ...Object.keys(this.rpcClient.accounts.connected)]\n },\n /**\n * Connect to wallet\n * @function connectToWallet\n * @instance\n * @rtype (connection: Object) => void\n * @param {Object} connection Wallet connection object\n * @return {void}\n */\n async connectToWallet (connection) {\n if (this.rpcClient && this.rpcClient.isConnected()) throw new Error('You are already connected to wallet ' + this.rpcClient)\n this.rpcClient = RpcClient({\n connection,\n networkId: this.getNetworkId({ force: true }),\n ...connection.connectionInfo,\n id: uuid(),\n handlers: [handleMessage(this), this.onDisconnect]\n })\n return this.sendConnectRequest()\n },\n /**\n * Disconnect from wallet\n * @function disconnectWallet\n * @instance\n * @rtype (force: Boolean = false) => void\n * @param {Boolean} sendDisconnect=false Force sending close connection message\n * @return {void}\n */\n async disconnectWallet (sendDisconnect = true) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n sendDisconnect && this.rpcClient.sendMessage(message(METHODS.closeConnection, { reason: 'bye' }), true)\n this.rpcClient.disconnect()\n this.rpcClient = null\n },\n async address ({ onAccount } = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n const current = this.rpcClient.currentAccount\n if (!current) throw new Error('You are not subscribed for an account.')\n if (onAccount && !this.rpcClient.hasAccessToAccount(onAccount)) throw new Error(`You do not have access to account ${onAccount}`)\n return onAccount || current\n },\n /**\n * Ask address from wallet\n * @function askAddresses\n * @instance\n * @rtype () => Promise\n * @return {Promise} Address from wallet\n */\n async askAddresses () {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n return this.rpcClient.request(METHODS.aepp.address)\n },\n /**\n * Subscribe for addresses from wallet\n * @function subscribeAddress\n * @instance\n * @rtype (type: String, value: String) => Promise\n * @param {String} type Type of subscription can be one of ['current'(just for selected account updates), 'connected(all accounts)']\n * @param {String} value Subscription action('subscribe'|'unsubscribe')\n * @return {Promise} Address from wallet\n */\n async subscribeAddress (type, value) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n return this.rpcClient.request(METHODS.aepp.subscribeAddress, { type, value })\n },\n /**\n * Overwriting of `signTransaction` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signTransaction\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signTransaction (tx, opt = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) throw new Error(`You do not have access to account ${opt.onAccount}`)\n return this.rpcClient.request(METHODS.aepp.sign, { ...opt, tx, returnSigned: true, networkId: this.getNetworkId() })\n },\n /**\n * Overwriting of `signMessage` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signMessage\n * @instance\n * @rtype (msg: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signMessage (msg, opt = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) throw new Error(`You do not have access to account ${opt.onAccount}`)\n return this.rpcClient.request(METHODS.aepp.signMessage, { ...opt, message: msg })\n },\n /**\n * Send connection request to wallet\n * @function sendConnectRequest\n * @instance\n * @rtype () => Promise\n * @return {Promise} Connection response\n */\n async sendConnectRequest () {\n return this.rpcClient.request(\n METHODS.aepp.connect, {\n name: this.name,\n version: VERSION,\n networkId: this.getNetworkId({ force: true })\n }\n )\n },\n /**\n * Overwriting of `send` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * This method will sign, broadcast and wait until transaction will be accepted using rpc communication with wallet\n * @function send\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @param {String} tx\n * @param {Object} [options={}]\n * @param {Object} [options.walletBroadcast=true]\n * @return {Promise<Object>} Transaction broadcast result\n */\n async send (tx, options = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (options.onAccount && !this.rpcClient.hasAccessToAccount(options.onAccount)) throw new Error(`You do not have access to account ${options.onAccount}`)\n const opt = R.merge(this.Ae.defaults, options)\n if (!opt.walletBroadcast) {\n const signed = await this.signTransaction(tx, { onAccount: opt.onAccount })\n return this.sendTransaction(signed, opt)\n }\n return this.rpcClient.request(METHODS.aepp.sign, { onAccount: opt.onAccount, tx, returnSigned: false, networkId: this.getNetworkId() })\n }\n }\n})\n"],"file":"aepp-rpc.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/rpc/aepp-rpc.js"],"names":["v4","uuid","Ae","RpcClient","getHandler","message","voidFn","METHODS","RPC_STATUS","VERSION","NOTIFICATIONS","wallet","updateAddress","instance","params","rpcClient","accounts","onAddressChange","updateNetwork","msg","info","networkId","onNetworkChange","closeConnection","disconnectWallet","onDisconnect","RESPONSES","aepp","address","processResponse","connect","result","status","CONNECTED","subscribeAddress","subscription","addressSubscription","id","sign","signedTransaction","transactionHash","signMessage","signature","REQUESTS","handleMessage","debug","Object","prototype","hasOwnProperty","call","callbacks","compose","init","name","connection","forceValidation","eventsHandlers","connectToWallet","forEach","event","Error","deepProps","defaults","walletBroadcast","methods","addresses","currentAccount","keys","connected","isConnected","getNetworkId","force","connectionInfo","handlers","sendConnectRequest","sendDisconnect","sendMessage","reason","disconnect","onAccount","current","hasAccessToAccount","askAddresses","request","type","value","signTransaction","tx","opt","returnSigned","version","send","options","signed","sendTransaction"],"mappings":"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","sourcesContent":["/**\n * RPC handler for AEPP side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @export AeppRpc\n * @example import ContentScriptBridge from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc'\n */\nimport { v4 as uuid } from 'uuid'\nimport Ae from '../../../ae'\nimport RpcClient from './rpc-client'\nimport { getHandler, message, voidFn } from '../helpers'\nimport { METHODS, RPC_STATUS, VERSION } from '../schema'\n\nconst NOTIFICATIONS = {\n [METHODS.wallet.updateAddress]: (instance) =>\n ({ params }) => {\n instance.rpcClient.accounts = params\n instance.onAddressChange(params)\n },\n [METHODS.updateNetwork]: (instance) =>\n (msg) => {\n instance.rpcClient.info.networkId = msg.params.networkId\n instance.onNetworkChange(msg.params)\n },\n [METHODS.closeConnection]: (instance) =>\n (msg) => {\n instance.disconnectWallet()\n instance.onDisconnect(msg.params)\n }\n}\n\nconst RESPONSES = {\n [METHODS.aepp.address]: (instance) =>\n (msg) => instance.rpcClient.processResponse(msg),\n [METHODS.aepp.connect]: (instance) =>\n (msg) => {\n if (msg.result) instance.rpcClient.info.status = RPC_STATUS.CONNECTED\n instance.rpcClient.processResponse(msg)\n },\n [METHODS.aepp.subscribeAddress]: (instance) =>\n (msg) => {\n if (msg.result) {\n msg.result.address && (instance.rpcClient.accounts = msg.result.address)\n msg.result.subscription && (instance.rpcClient.addressSubscription = msg.result.subscription)\n }\n\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result])\n },\n [METHODS.aepp.sign]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signedTransaction || result.transactionHash])\n },\n [METHODS.aepp.signMessage]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signature])\n }\n}\n\nconst REQUESTS = {}\n\nconst handleMessage = (instance) => async (msg) => {\n if (!msg.id) {\n return getHandler(NOTIFICATIONS, msg, { debug: instance.debug })(instance)(msg)\n } else if (Object.prototype.hasOwnProperty.call(instance.rpcClient.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance)(msg)\n } else {\n return getHandler(REQUESTS, msg, { debug: instance.debug })(instance)(msg)\n }\n}\n\n/**\n * Contain functionality for wallet interaction and connect it to sdk\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Aepp name\n * @param {Function} onAddressChange Call-back function for update address event\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @param {Function} onNetworkChange Call-back function for update network event\n * @param {Object} connection Wallet connection object\n * @return {Object}\n */\nexport default Ae.compose({\n async init ({ name, onAddressChange = voidFn, onDisconnect = voidFn, onNetworkChange = voidFn, connection, forceValidation = false, debug = false }) {\n const eventsHandlers = ['onDisconnect', 'onAddressChange', 'onNetworkChange']\n this.connection = connection\n this.name = name\n this.debug = debug\n\n if (connection) {\n // Init RPCClient\n await this.connectToWallet(connection)\n }\n // Event callbacks\n this.onDisconnect = onDisconnect\n this.onAddressChange = onAddressChange\n this.onNetworkChange = onNetworkChange\n // validation\n eventsHandlers.forEach(event => {\n if (!forceValidation && typeof this[event] !== 'function') throw new Error(`Call-back for ${event} must be an function!`)\n })\n },\n deepProps: { Ae: { defaults: { walletBroadcast: true } } },\n methods: {\n sign () {\n },\n addresses () {\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n return [this.rpcClient.currentAccount, ...Object.keys(this.rpcClient.accounts.connected)]\n },\n /**\n * Connect to wallet\n * @function connectToWallet\n * @instance\n * @rtype (connection: Object) => void\n * @param {Object} connection Wallet connection object\n * @return {void}\n */\n async connectToWallet (connection) {\n if (this.rpcClient && this.rpcClient.isConnected()) throw new Error('You are already connected to wallet ' + this.rpcClient)\n this.rpcClient = RpcClient({\n connection,\n networkId: this.getNetworkId({ force: true }),\n ...connection.connectionInfo,\n id: uuid(),\n handlers: [handleMessage(this), this.onDisconnect]\n })\n return this.sendConnectRequest()\n },\n /**\n * Disconnect from wallet\n * @function disconnectWallet\n * @instance\n * @rtype (force: Boolean = false) => void\n * @param {Boolean} sendDisconnect=false Force sending close connection message\n * @return {void}\n */\n async disconnectWallet (sendDisconnect = true) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n sendDisconnect && this.rpcClient.sendMessage(message(METHODS.closeConnection, { reason: 'bye' }), true)\n this.rpcClient.disconnect()\n this.rpcClient = null\n },\n async address ({ onAccount } = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n const current = this.rpcClient.currentAccount\n if (!current) throw new Error('You are not subscribed for an account.')\n if (onAccount && !this.rpcClient.hasAccessToAccount(onAccount)) throw new Error(`You do not have access to account ${onAccount}`)\n return onAccount || current\n },\n /**\n * Ask address from wallet\n * @function askAddresses\n * @instance\n * @rtype () => Promise\n * @return {Promise} Address from wallet\n */\n async askAddresses () {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n return this.rpcClient.request(METHODS.aepp.address)\n },\n /**\n * Subscribe for addresses from wallet\n * @function subscribeAddress\n * @instance\n * @rtype (type: String, value: String) => Promise\n * @param {String} type Type of subscription can be one of ['current'(just for selected account updates), 'connected(all accounts)']\n * @param {String} value Subscription action('subscribe'|'unsubscribe')\n * @return {Promise} Address from wallet\n */\n async subscribeAddress (type, value) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n return this.rpcClient.request(METHODS.aepp.subscribeAddress, { type, value })\n },\n /**\n * Overwriting of `signTransaction` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signTransaction\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signTransaction (tx, opt = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) throw new Error(`You do not have access to account ${opt.onAccount}`)\n return this.rpcClient.request(METHODS.aepp.sign, { ...opt, tx, returnSigned: true, networkId: this.getNetworkId() })\n },\n /**\n * Overwriting of `signMessage` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signMessage\n * @instance\n * @rtype (msg: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signMessage (msg, opt = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) throw new Error(`You do not have access to account ${opt.onAccount}`)\n return this.rpcClient.request(METHODS.aepp.signMessage, { ...opt, message: msg })\n },\n /**\n * Send connection request to wallet\n * @function sendConnectRequest\n * @instance\n * @rtype () => Promise\n * @return {Promise} Connection response\n */\n async sendConnectRequest () {\n return this.rpcClient.request(\n METHODS.aepp.connect, {\n name: this.name,\n version: VERSION,\n networkId: this.getNetworkId({ force: true })\n }\n )\n },\n /**\n * Overwriting of `send` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * This method will sign, broadcast and wait until transaction will be accepted using rpc communication with wallet\n * @function send\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @param {String} tx\n * @param {Object} [options={}]\n * @param {Object} [options.walletBroadcast=true]\n * @return {Promise<Object>} Transaction broadcast result\n */\n async send (tx, options = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (options.onAccount && !this.rpcClient.hasAccessToAccount(options.onAccount)) throw new Error(`You do not have access to account ${options.onAccount}`)\n const opt = { ...this.Ae.defaults, ...options }\n if (!opt.walletBroadcast) {\n const signed = await this.signTransaction(tx, { onAccount: opt.onAccount })\n return this.sendTransaction(signed, opt)\n }\n return this.rpcClient.request(METHODS.aepp.sign, { onAccount: opt.onAccount, tx, returnSigned: false, networkId: this.getNetworkId() })\n }\n }\n})\n"],"file":"aepp-rpc.js"}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import _typeof from "@babel/runtime-corejs3/helpers/typeof";
|
|
2
|
-
import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
|
|
3
|
-
import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
|
|
4
|
-
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
5
|
-
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
6
|
-
import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
|
|
7
|
-
import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
|
|
8
|
-
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
9
|
-
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
10
|
-
import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
|
|
11
|
-
|
|
12
1
|
/**
|
|
13
2
|
* RpcClient module
|
|
14
3
|
*
|
|
@@ -32,24 +21,21 @@ import { sendMessage, message, isValidAccounts } from '../helpers';
|
|
|
32
21
|
*/
|
|
33
22
|
|
|
34
23
|
export default stampit({
|
|
35
|
-
init
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
onMessage = _ref$handlers[0],
|
|
45
|
-
onDisconnect = _ref$handlers[1];
|
|
46
|
-
|
|
24
|
+
init(_ref) {
|
|
25
|
+
let {
|
|
26
|
+
id,
|
|
27
|
+
name,
|
|
28
|
+
networkId,
|
|
29
|
+
icons,
|
|
30
|
+
connection,
|
|
31
|
+
handlers: [onMessage, onDisconnect]
|
|
32
|
+
} = _ref;
|
|
47
33
|
this.id = id;
|
|
48
34
|
this.connection = connection;
|
|
49
35
|
this.info = {
|
|
50
|
-
name
|
|
51
|
-
networkId
|
|
52
|
-
icons
|
|
36
|
+
name,
|
|
37
|
+
networkId,
|
|
38
|
+
icons
|
|
53
39
|
}; // {
|
|
54
40
|
// [msg.id]: { resolve, reject }
|
|
55
41
|
// }
|
|
@@ -64,45 +50,49 @@ export default stampit({
|
|
|
64
50
|
this.accounts = {};
|
|
65
51
|
this.sendMessage = sendMessage(this.connection);
|
|
66
52
|
|
|
67
|
-
|
|
53
|
+
const handleMessage = (msg, origin) => {
|
|
68
54
|
if (!msg || !msg.jsonrpc || msg.jsonrpc !== '2.0' || !msg.method) {
|
|
69
|
-
throw new Error(
|
|
55
|
+
throw new Error(`Received invalid message: ${msg}`);
|
|
70
56
|
}
|
|
71
57
|
|
|
72
58
|
onMessage(msg, origin);
|
|
73
59
|
};
|
|
74
60
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
typeof onDisconnect === 'function' && onDisconnect(connection, _this);
|
|
61
|
+
const disconnect = (aepp, connection) => {
|
|
62
|
+
this.disconnect(true);
|
|
63
|
+
typeof onDisconnect === 'function' && onDisconnect(connection, this);
|
|
79
64
|
};
|
|
80
65
|
|
|
81
66
|
connection.connect(handleMessage, disconnect);
|
|
82
67
|
},
|
|
68
|
+
|
|
83
69
|
propertyDescriptors: {
|
|
84
70
|
currentAccount: {
|
|
85
71
|
enumerable: true,
|
|
86
72
|
configurable: false,
|
|
87
|
-
|
|
88
|
-
|
|
73
|
+
|
|
74
|
+
get() {
|
|
75
|
+
return this.isHasAccounts() ? Object.keys(this.accounts.current)[0] : undefined;
|
|
89
76
|
}
|
|
77
|
+
|
|
90
78
|
},
|
|
91
79
|
addresses: {
|
|
92
80
|
enumerable: true,
|
|
93
81
|
configurable: false,
|
|
94
|
-
get: function get() {
|
|
95
|
-
var _context;
|
|
96
82
|
|
|
97
|
-
|
|
83
|
+
get() {
|
|
84
|
+
return this.isHasAccounts() ? [...Object.keys(this.accounts.current), ...Object.keys(this.accounts.connected)] : [];
|
|
98
85
|
}
|
|
86
|
+
|
|
99
87
|
},
|
|
100
88
|
origin: {
|
|
101
89
|
enumerable: true,
|
|
102
90
|
configurable: false,
|
|
103
|
-
|
|
91
|
+
|
|
92
|
+
get() {
|
|
104
93
|
return this.connection;
|
|
105
94
|
}
|
|
95
|
+
|
|
106
96
|
}
|
|
107
97
|
},
|
|
108
98
|
methods: {
|
|
@@ -114,13 +104,15 @@ export default stampit({
|
|
|
114
104
|
* @param {Object} info Info to update (will be merged with current info object)
|
|
115
105
|
* @return {void}
|
|
116
106
|
*/
|
|
117
|
-
updateInfo
|
|
118
|
-
|
|
107
|
+
updateInfo(info) {
|
|
108
|
+
Object.assign(this.info, info);
|
|
119
109
|
},
|
|
120
|
-
|
|
121
|
-
|
|
110
|
+
|
|
111
|
+
isHasAccounts() {
|
|
112
|
+
return typeof this.accounts === 'object' && typeof this.accounts.connected === 'object' && typeof this.accounts.current === 'object';
|
|
122
113
|
},
|
|
123
|
-
|
|
114
|
+
|
|
115
|
+
isSubscribed() {
|
|
124
116
|
return this.addressSubscription.length && this.isHasAccounts();
|
|
125
117
|
},
|
|
126
118
|
|
|
@@ -132,12 +124,8 @@ export default stampit({
|
|
|
132
124
|
* @param {String} address Account address
|
|
133
125
|
* @return {Boolean} is connected
|
|
134
126
|
*/
|
|
135
|
-
hasAccessToAccount
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return !!address && _findInstanceProperty(_context2 = this.addresses).call(_context2, function (a) {
|
|
139
|
-
return a === address;
|
|
140
|
-
});
|
|
127
|
+
hasAccessToAccount(address) {
|
|
128
|
+
return !!address && this.addresses.find(a => a === address);
|
|
141
129
|
},
|
|
142
130
|
|
|
143
131
|
/**
|
|
@@ -147,7 +135,7 @@ export default stampit({
|
|
|
147
135
|
* @rtype () => Boolean
|
|
148
136
|
* @return {Boolean} is connected
|
|
149
137
|
*/
|
|
150
|
-
isConnected
|
|
138
|
+
isConnected() {
|
|
151
139
|
return this.connection.isConnected() && this.info.status === RPC_STATUS.CONNECTED;
|
|
152
140
|
},
|
|
153
141
|
|
|
@@ -159,11 +147,11 @@ export default stampit({
|
|
|
159
147
|
* @param {Object} options Options
|
|
160
148
|
* @return {String}
|
|
161
149
|
*/
|
|
162
|
-
getCurrentAccount
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return onAccount ||
|
|
150
|
+
getCurrentAccount() {
|
|
151
|
+
let {
|
|
152
|
+
onAccount
|
|
153
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
154
|
+
return onAccount || Object.keys(this.accounts.current)[0];
|
|
167
155
|
},
|
|
168
156
|
|
|
169
157
|
/**
|
|
@@ -173,8 +161,8 @@ export default stampit({
|
|
|
173
161
|
* @rtype () => void
|
|
174
162
|
* @return {void}
|
|
175
163
|
*/
|
|
176
|
-
disconnect
|
|
177
|
-
|
|
164
|
+
disconnect() {
|
|
165
|
+
let forceConnectionClose = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
178
166
|
this.info.status = RPC_STATUS.DISCONNECTED;
|
|
179
167
|
this.addressSubscription = [];
|
|
180
168
|
this.accounts = {};
|
|
@@ -186,10 +174,10 @@ export default stampit({
|
|
|
186
174
|
* @param {{ current: Object, connected: Object }} accounts Object with current and connected accounts
|
|
187
175
|
* @param {{ forceNotification: Boolean }} [options={ forceNotification: false }] Don not sent update notification to AEPP
|
|
188
176
|
*/
|
|
189
|
-
setAccounts
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
177
|
+
setAccounts(accounts) {
|
|
178
|
+
let {
|
|
179
|
+
forceNotification = false
|
|
180
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
193
181
|
|
|
194
182
|
if (!isValidAccounts(accounts)) {
|
|
195
183
|
throw new Error('Invalid accounts object. Should be object like: `{ connected: {}, selected: {} }`');
|
|
@@ -212,19 +200,13 @@ export default stampit({
|
|
|
212
200
|
* @param {String} value Subscription value
|
|
213
201
|
* @return {String[]}
|
|
214
202
|
*/
|
|
215
|
-
updateSubscription
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
if (type === SUBSCRIPTION_TYPES.subscribe && !_includesInstanceProperty(_context3 = this.addressSubscription).call(_context3, value)) {
|
|
203
|
+
updateSubscription(type, value) {
|
|
204
|
+
if (type === SUBSCRIPTION_TYPES.subscribe && !this.addressSubscription.includes(value)) {
|
|
219
205
|
this.addressSubscription.push(value);
|
|
220
206
|
}
|
|
221
207
|
|
|
222
|
-
if (type === SUBSCRIPTION_TYPES.unsubscribe &&
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
this.addressSubscription = _filterInstanceProperty(_context5 = this.addressSubscription).call(_context5, function (s) {
|
|
226
|
-
return s !== value;
|
|
227
|
-
});
|
|
208
|
+
if (type === SUBSCRIPTION_TYPES.unsubscribe && this.addressSubscription.includes(value)) {
|
|
209
|
+
this.addressSubscription = this.addressSubscription.filter(s => s !== value);
|
|
228
210
|
}
|
|
229
211
|
|
|
230
212
|
return this.addressSubscription;
|
|
@@ -239,15 +221,13 @@ export default stampit({
|
|
|
239
221
|
* @param {Object} params Method params
|
|
240
222
|
* @return {Promise} Promise which will be resolved after receiving response message
|
|
241
223
|
*/
|
|
242
|
-
request
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
var msgId = this.sendMessage(message(name, params));
|
|
224
|
+
request(name, params) {
|
|
225
|
+
const msgId = this.sendMessage(message(name, params));
|
|
246
226
|
if (Object.prototype.hasOwnProperty.call(this.callbacks, msgId)) throw new Error('Callback Already exist');
|
|
247
|
-
return new
|
|
248
|
-
|
|
249
|
-
resolve
|
|
250
|
-
reject
|
|
227
|
+
return new Promise((resolve, reject) => {
|
|
228
|
+
this.callbacks[msgId] = {
|
|
229
|
+
resolve,
|
|
230
|
+
reject
|
|
251
231
|
};
|
|
252
232
|
});
|
|
253
233
|
},
|
|
@@ -261,18 +241,18 @@ export default stampit({
|
|
|
261
241
|
* @param {Function=} transformResult Optional parser function for message
|
|
262
242
|
* @return {void}
|
|
263
243
|
*/
|
|
264
|
-
processResponse
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
244
|
+
processResponse(_ref2, transformResult) {
|
|
245
|
+
let {
|
|
246
|
+
id,
|
|
247
|
+
error,
|
|
248
|
+
result
|
|
249
|
+
} = _ref2;
|
|
250
|
+
if (!this.callbacks[id]) throw new Error(`Can't find callback for this messageId ${id}`);
|
|
269
251
|
|
|
270
252
|
if (result) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
id: id,
|
|
275
|
-
result: result
|
|
253
|
+
this.callbacks[id].resolve(...(typeof transformResult === 'function' ? transformResult({
|
|
254
|
+
id,
|
|
255
|
+
result
|
|
276
256
|
}) : [result]));
|
|
277
257
|
} else {
|
|
278
258
|
this.callbacks[id].reject(error);
|
|
@@ -280,6 +260,7 @@ export default stampit({
|
|
|
280
260
|
|
|
281
261
|
delete this.callbacks[id];
|
|
282
262
|
}
|
|
263
|
+
|
|
283
264
|
}
|
|
284
265
|
});
|
|
285
266
|
//# sourceMappingURL=rpc-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/rpc/rpc-client.js"],"names":["stampit","METHODS","RPC_STATUS","SUBSCRIPTION_TYPES","sendMessage","message","isValidAccounts","init","id","name","networkId","icons","connection","handlers","onMessage","onDisconnect","info","callbacks","addressSubscription","accounts","handleMessage","msg","origin","jsonrpc","method","Error","disconnect","aepp","connect","propertyDescriptors","currentAccount","enumerable","configurable","get","isHasAccounts","current","undefined","addresses","connected","methods","updateInfo","isSubscribed","length","hasAccessToAccount","address","a","isConnected","status","CONNECTED","getCurrentAccount","onAccount","forceConnectionClose","DISCONNECTED","setAccounts","forceNotification","wallet","updateAddress","updateSubscription","type","value","subscribe","push","unsubscribe","s","request","params","msgId","Object","prototype","hasOwnProperty","call","resolve","reject","processResponse","transformResult","error","result"],"mappings":"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","sourcesContent":["/**\n * RpcClient module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @export { RpcClient, RpcClients }\n * @example import RpcClient from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client'\n */\nimport stampit from '@stamp/it'\n\nimport { METHODS, RPC_STATUS, SUBSCRIPTION_TYPES } from '../schema'\nimport { sendMessage, message, isValidAccounts } from '../helpers'\n\n/**\n * Contain functionality for using RPC conection\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String} param.name Client name\n * @param {Object} param.connection Connection object\n * @param {Function[]} param.handlers Arrays with two function for handling messages ([ onMessage: Function, onDisconnect: Function])\n * @return {Object}\n */\nexport default stampit({\n init ({ id, name, networkId, icons, connection, handlers: [onMessage, onDisconnect] }) {\n this.id = id\n this.connection = connection\n this.info = { name, networkId, icons }\n // {\n // [msg.id]: { resolve, reject }\n // }\n this.callbacks = {}\n // ['connected', 'current']\n this.addressSubscription = []\n // {\n // connected: { [pub]: {...meta} },\n // current: { [pub]: {...meta} }\n // }\n this.accounts = {}\n\n this.sendMessage = sendMessage(this.connection)\n\n const handleMessage = (msg, origin) => {\n if (!msg || !msg.jsonrpc || msg.jsonrpc !== '2.0' || !msg.method) {\n throw new Error(`Received invalid message: ${msg}`)\n }\n onMessage(msg, origin)\n }\n\n const disconnect = (aepp, connection) => {\n this.disconnect(true)\n typeof onDisconnect === 'function' && onDisconnect(connection, this)\n }\n\n connection.connect(handleMessage, disconnect)\n },\n propertyDescriptors: {\n currentAccount: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? Object.keys(this.accounts.current)[0]\n : undefined\n }\n },\n addresses: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? [...Object.keys(this.accounts.current), ...Object.keys(this.accounts.connected)]\n : []\n }\n },\n origin: {\n enumerable: true,\n configurable: false,\n get () {\n return this.connection\n }\n }\n },\n methods: {\n /**\n * Update info\n * @function updateInfo\n * @instance\n * @rtype (info: Object) => void\n * @param {Object} info Info to update (will be merged with current info object)\n * @return {void}\n */\n updateInfo (info) {\n Object.assign(this.info, info)\n },\n isHasAccounts () {\n return typeof this.accounts === 'object' &&\n typeof this.accounts.connected === 'object' &&\n typeof this.accounts.current === 'object'\n },\n isSubscribed () {\n return this.addressSubscription.length && this.isHasAccounts()\n },\n /**\n * Check if aepp has access to account\n * @function hasAccessToAccount\n * @instance\n * @rtype (address: String) => Boolean\n * @param {String} address Account address\n * @return {Boolean} is connected\n */\n hasAccessToAccount (address) {\n return !!address && this.addresses.find(a => a === address)\n },\n /**\n * Check if is connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} is connected\n */\n isConnected () {\n return this.connection.isConnected() && this.info.status === RPC_STATUS.CONNECTED\n },\n /**\n * Get selected account\n * @function getCurrentAccount\n * @instance\n * @rtype ({ onAccount } = {}) => String\n * @param {Object} options Options\n * @return {String}\n */\n getCurrentAccount ({ onAccount } = {}) {\n return onAccount || Object.keys(this.accounts.current)[0]\n },\n /**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\n disconnect (forceConnectionClose = false) {\n this.info.status = RPC_STATUS.DISCONNECTED\n this.addressSubscription = []\n this.accounts = {}\n forceConnectionClose || this.connection.disconnect()\n },\n /**\n * Update accounts and sent `update.address` notification to AEPP\n * @param {{ current: Object, connected: Object }} accounts Object with current and connected accounts\n * @param {{ forceNotification: Boolean }} [options={ forceNotification: false }] Don not sent update notification to AEPP\n */\n setAccounts (accounts, { forceNotification = false } = {}) {\n if (!isValidAccounts(accounts)) {\n throw new Error('Invalid accounts object. Should be object like: `{ connected: {}, selected: {} }`')\n }\n this.accounts = accounts\n if (!forceNotification) {\n // Sent notification about account updates\n this.sendMessage(message(METHODS.wallet.updateAddress, this.accounts), true)\n }\n },\n /**\n * Update subscription\n * @function updateSubscription\n * @instance\n * @rtype (type: String, value: String) => void\n * @param {String} type Subscription type\n * @param {String} value Subscription value\n * @return {String[]}\n */\n updateSubscription (type, value) {\n if (type === SUBSCRIPTION_TYPES.subscribe && !this.addressSubscription.includes(value)) {\n this.addressSubscription.push(value)\n }\n if (type === SUBSCRIPTION_TYPES.unsubscribe && this.addressSubscription.includes(value)) {\n this.addressSubscription = this.addressSubscription.filter(s => s !== value)\n }\n return this.addressSubscription\n },\n /**\n * Make a request\n * @function request\n * @instance\n * @rtype (name: String, params: Object) => Promise\n * @param {String} name Method name\n * @param {Object} params Method params\n * @return {Promise} Promise which will be resolved after receiving response message\n */\n request (name, params) {\n const msgId = this.sendMessage(message(name, params))\n if (Object.prototype.hasOwnProperty.call(this.callbacks, msgId)) throw new Error('Callback Already exist')\n return new Promise((resolve, reject) => {\n this.callbacks[msgId] = { resolve, reject }\n })\n },\n /**\n * Process response message\n * @function processResponse\n * @instance\n * @rtype (msg: Object, transformResult: Function) => void\n * @param {Object} msg Message object\n * @param {Function=} transformResult Optional parser function for message\n * @return {void}\n */\n processResponse ({ id, error, result }, transformResult) {\n if (!this.callbacks[id]) throw new Error(`Can't find callback for this messageId ${id}`)\n if (result) {\n this.callbacks[id].resolve(...typeof transformResult === 'function'\n ? transformResult({ id, result })\n : [result])\n } else {\n this.callbacks[id].reject(error)\n }\n delete this.callbacks[id]\n }\n }\n})\n"],"file":"rpc-client.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/rpc/rpc-client.js"],"names":["stampit","METHODS","RPC_STATUS","SUBSCRIPTION_TYPES","sendMessage","message","isValidAccounts","init","id","name","networkId","icons","connection","handlers","onMessage","onDisconnect","info","callbacks","addressSubscription","accounts","handleMessage","msg","origin","jsonrpc","method","Error","disconnect","aepp","connect","propertyDescriptors","currentAccount","enumerable","configurable","get","isHasAccounts","Object","keys","current","undefined","addresses","connected","methods","updateInfo","assign","isSubscribed","length","hasAccessToAccount","address","find","a","isConnected","status","CONNECTED","getCurrentAccount","onAccount","forceConnectionClose","DISCONNECTED","setAccounts","forceNotification","wallet","updateAddress","updateSubscription","type","value","subscribe","includes","push","unsubscribe","filter","s","request","params","msgId","prototype","hasOwnProperty","call","Promise","resolve","reject","processResponse","transformResult","error","result"],"mappings":"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","sourcesContent":["/**\n * RpcClient module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @export { RpcClient, RpcClients }\n * @example import RpcClient from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client'\n */\nimport stampit from '@stamp/it'\n\nimport { METHODS, RPC_STATUS, SUBSCRIPTION_TYPES } from '../schema'\nimport { sendMessage, message, isValidAccounts } from '../helpers'\n\n/**\n * Contain functionality for using RPC conection\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String} param.name Client name\n * @param {Object} param.connection Connection object\n * @param {Function[]} param.handlers Arrays with two function for handling messages ([ onMessage: Function, onDisconnect: Function])\n * @return {Object}\n */\nexport default stampit({\n init ({ id, name, networkId, icons, connection, handlers: [onMessage, onDisconnect] }) {\n this.id = id\n this.connection = connection\n this.info = { name, networkId, icons }\n // {\n // [msg.id]: { resolve, reject }\n // }\n this.callbacks = {}\n // ['connected', 'current']\n this.addressSubscription = []\n // {\n // connected: { [pub]: {...meta} },\n // current: { [pub]: {...meta} }\n // }\n this.accounts = {}\n\n this.sendMessage = sendMessage(this.connection)\n\n const handleMessage = (msg, origin) => {\n if (!msg || !msg.jsonrpc || msg.jsonrpc !== '2.0' || !msg.method) {\n throw new Error(`Received invalid message: ${msg}`)\n }\n onMessage(msg, origin)\n }\n\n const disconnect = (aepp, connection) => {\n this.disconnect(true)\n typeof onDisconnect === 'function' && onDisconnect(connection, this)\n }\n\n connection.connect(handleMessage, disconnect)\n },\n propertyDescriptors: {\n currentAccount: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? Object.keys(this.accounts.current)[0]\n : undefined\n }\n },\n addresses: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? [...Object.keys(this.accounts.current), ...Object.keys(this.accounts.connected)]\n : []\n }\n },\n origin: {\n enumerable: true,\n configurable: false,\n get () {\n return this.connection\n }\n }\n },\n methods: {\n /**\n * Update info\n * @function updateInfo\n * @instance\n * @rtype (info: Object) => void\n * @param {Object} info Info to update (will be merged with current info object)\n * @return {void}\n */\n updateInfo (info) {\n Object.assign(this.info, info)\n },\n isHasAccounts () {\n return typeof this.accounts === 'object' &&\n typeof this.accounts.connected === 'object' &&\n typeof this.accounts.current === 'object'\n },\n isSubscribed () {\n return this.addressSubscription.length && this.isHasAccounts()\n },\n /**\n * Check if aepp has access to account\n * @function hasAccessToAccount\n * @instance\n * @rtype (address: String) => Boolean\n * @param {String} address Account address\n * @return {Boolean} is connected\n */\n hasAccessToAccount (address) {\n return !!address && this.addresses.find(a => a === address)\n },\n /**\n * Check if is connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} is connected\n */\n isConnected () {\n return this.connection.isConnected() && this.info.status === RPC_STATUS.CONNECTED\n },\n /**\n * Get selected account\n * @function getCurrentAccount\n * @instance\n * @rtype ({ onAccount } = {}) => String\n * @param {Object} options Options\n * @return {String}\n */\n getCurrentAccount ({ onAccount } = {}) {\n return onAccount || Object.keys(this.accounts.current)[0]\n },\n /**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\n disconnect (forceConnectionClose = false) {\n this.info.status = RPC_STATUS.DISCONNECTED\n this.addressSubscription = []\n this.accounts = {}\n forceConnectionClose || this.connection.disconnect()\n },\n /**\n * Update accounts and sent `update.address` notification to AEPP\n * @param {{ current: Object, connected: Object }} accounts Object with current and connected accounts\n * @param {{ forceNotification: Boolean }} [options={ forceNotification: false }] Don not sent update notification to AEPP\n */\n setAccounts (accounts, { forceNotification = false } = {}) {\n if (!isValidAccounts(accounts)) {\n throw new Error('Invalid accounts object. Should be object like: `{ connected: {}, selected: {} }`')\n }\n this.accounts = accounts\n if (!forceNotification) {\n // Sent notification about account updates\n this.sendMessage(message(METHODS.wallet.updateAddress, this.accounts), true)\n }\n },\n /**\n * Update subscription\n * @function updateSubscription\n * @instance\n * @rtype (type: String, value: String) => void\n * @param {String} type Subscription type\n * @param {String} value Subscription value\n * @return {String[]}\n */\n updateSubscription (type, value) {\n if (type === SUBSCRIPTION_TYPES.subscribe && !this.addressSubscription.includes(value)) {\n this.addressSubscription.push(value)\n }\n if (type === SUBSCRIPTION_TYPES.unsubscribe && this.addressSubscription.includes(value)) {\n this.addressSubscription = this.addressSubscription.filter(s => s !== value)\n }\n return this.addressSubscription\n },\n /**\n * Make a request\n * @function request\n * @instance\n * @rtype (name: String, params: Object) => Promise\n * @param {String} name Method name\n * @param {Object} params Method params\n * @return {Promise} Promise which will be resolved after receiving response message\n */\n request (name, params) {\n const msgId = this.sendMessage(message(name, params))\n if (Object.prototype.hasOwnProperty.call(this.callbacks, msgId)) throw new Error('Callback Already exist')\n return new Promise((resolve, reject) => {\n this.callbacks[msgId] = { resolve, reject }\n })\n },\n /**\n * Process response message\n * @function processResponse\n * @instance\n * @rtype (msg: Object, transformResult: Function) => void\n * @param {Object} msg Message object\n * @param {Function=} transformResult Optional parser function for message\n * @return {void}\n */\n processResponse ({ id, error, result }, transformResult) {\n if (!this.callbacks[id]) throw new Error(`Can't find callback for this messageId ${id}`)\n if (result) {\n this.callbacks[id].resolve(...typeof transformResult === 'function'\n ? transformResult({ id, result })\n : [result])\n } else {\n this.callbacks[id].reject(error)\n }\n delete this.callbacks[id]\n }\n }\n})\n"],"file":"rpc-client.js"}
|