@aeternity/aepp-sdk 8.2.1 → 10.0.0

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.
Files changed (159) hide show
  1. package/CHANGELOG.md +216 -337
  2. package/README.md +16 -9
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/account/base.js +36 -120
  11. package/es/account/base.js.map +1 -1
  12. package/es/account/memory.js +17 -19
  13. package/es/account/memory.js.map +1 -1
  14. package/es/account/multiple.js +79 -156
  15. package/es/account/multiple.js.map +1 -1
  16. package/es/ae/aens.js +205 -626
  17. package/es/ae/aens.js.map +1 -1
  18. package/es/ae/contract.js +114 -918
  19. package/es/ae/contract.js.map +1 -1
  20. package/es/ae/index.js +90 -250
  21. package/es/ae/index.js.map +1 -1
  22. package/es/ae/oracle.js +136 -504
  23. package/es/ae/oracle.js.map +1 -1
  24. package/es/ae/universal.js.map +1 -1
  25. package/es/chain/index.js +12 -27
  26. package/es/chain/index.js.map +1 -1
  27. package/es/chain/node.js +289 -1020
  28. package/es/chain/node.js.map +1 -1
  29. package/es/channel/handlers.js +597 -1086
  30. package/es/channel/handlers.js.map +1 -1
  31. package/es/channel/index.js +238 -465
  32. package/es/channel/index.js.map +1 -1
  33. package/es/channel/internal.js +129 -301
  34. package/es/channel/internal.js.map +1 -1
  35. package/es/contract/aci/index.js +328 -495
  36. package/es/contract/aci/index.js.map +1 -1
  37. package/es/contract/aci/transformation.js +35 -711
  38. package/es/contract/aci/transformation.js.map +1 -1
  39. package/es/contract/compiler.js +131 -203
  40. package/es/contract/compiler.js.map +1 -1
  41. package/es/contract/ga/helpers.js +17 -122
  42. package/es/contract/ga/helpers.js.map +1 -1
  43. package/es/contract/ga/index.js +108 -249
  44. package/es/contract/ga/index.js.map +1 -1
  45. package/es/contract/index.js +7 -3
  46. package/es/contract/index.js.map +1 -1
  47. package/es/index.js +3 -3
  48. package/es/index.js.map +1 -1
  49. package/es/node-pool/index.js +57 -74
  50. package/es/node-pool/index.js.map +1 -1
  51. package/es/node.js +65 -161
  52. package/es/node.js.map +1 -1
  53. package/es/other.d.ts +1 -1
  54. package/es/tx/builder/helpers.js +62 -115
  55. package/es/tx/builder/helpers.js.map +1 -1
  56. package/es/tx/builder/index.js +218 -309
  57. package/es/tx/builder/index.js.map +1 -1
  58. package/es/tx/builder/schema.js +586 -573
  59. package/es/tx/builder/schema.js.map +1 -1
  60. package/es/tx/index.js +102 -13
  61. package/es/tx/index.js.map +1 -1
  62. package/es/tx/tx-object.js +114 -138
  63. package/es/tx/tx-object.js.map +1 -1
  64. package/es/tx/tx.js +810 -1586
  65. package/es/tx/tx.js.map +1 -1
  66. package/es/tx/validator.js +191 -426
  67. package/es/tx/validator.js.map +1 -1
  68. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +20 -23
  69. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
  70. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +53 -80
  71. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
  72. package/es/utils/aepp-wallet-communication/connection/index.js +2 -1
  73. package/es/utils/aepp-wallet-communication/connection/index.js.map +1 -1
  74. package/es/utils/aepp-wallet-communication/content-script-bridge.js +24 -19
  75. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
  76. package/es/utils/aepp-wallet-communication/helpers.js +60 -105
  77. package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
  78. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +191 -514
  79. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
  80. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +78 -93
  81. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
  82. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +381 -613
  83. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
  84. package/es/utils/aepp-wallet-communication/schema.js +43 -39
  85. package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
  86. package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
  87. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
  88. package/es/utils/amount-formatter.js +41 -61
  89. package/es/utils/amount-formatter.js.map +1 -1
  90. package/es/utils/async-init.js +28 -64
  91. package/es/utils/async-init.js.map +1 -1
  92. package/es/utils/bignumber.js +3 -11
  93. package/es/utils/bignumber.js.map +1 -1
  94. package/es/utils/bytes.js +5 -9
  95. package/es/utils/bytes.js.map +1 -1
  96. package/es/utils/crypto.js +41 -106
  97. package/es/utils/crypto.js.map +1 -1
  98. package/es/utils/hd-wallet.js +45 -81
  99. package/es/utils/hd-wallet.js.map +1 -1
  100. package/es/utils/json-big.js +16 -49
  101. package/es/utils/json-big.js.map +1 -1
  102. package/es/utils/keystore.js +81 -246
  103. package/es/utils/keystore.js.map +1 -1
  104. package/es/utils/mptree.js +88 -134
  105. package/es/utils/mptree.js.map +1 -1
  106. package/es/utils/other.js +10 -60
  107. package/es/utils/other.js.map +1 -1
  108. package/es/utils/semver-satisfies.js +9 -28
  109. package/es/utils/semver-satisfies.js.map +1 -1
  110. package/es/utils/string.js +4 -13
  111. package/es/utils/string.js.map +1 -1
  112. package/es/utils/swagger.js +87 -224
  113. package/es/utils/swagger.js.map +1 -1
  114. package/package.json +51 -44
  115. package/src/account/base.js +11 -10
  116. package/src/account/multiple.js +24 -18
  117. package/src/ae/aens.js +64 -61
  118. package/src/ae/contract.js +71 -248
  119. package/src/ae/index.js +34 -9
  120. package/src/ae/oracle.js +30 -22
  121. package/src/ae/universal.js +3 -1
  122. package/src/chain/index.js +10 -16
  123. package/src/chain/node.js +38 -38
  124. package/src/channel/handlers.js +10 -4
  125. package/src/channel/index.js +44 -20
  126. package/src/contract/aci/index.js +234 -112
  127. package/src/contract/aci/transformation.js +30 -422
  128. package/src/contract/compiler.js +50 -5
  129. package/src/contract/ga/helpers.js +6 -14
  130. package/src/contract/ga/index.js +28 -28
  131. package/src/contract/index.js +6 -2
  132. package/src/index.js +4 -4
  133. package/src/node-pool/index.js +24 -13
  134. package/src/node.js +29 -30
  135. package/src/tx/builder/helpers.js +31 -56
  136. package/src/tx/builder/index.js +67 -28
  137. package/src/tx/builder/schema.js +79 -121
  138. package/src/tx/index.js +101 -12
  139. package/src/tx/tx-object.js +25 -8
  140. package/src/tx/tx.js +229 -150
  141. package/src/tx/validator.js +134 -202
  142. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
  143. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +25 -7
  144. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  145. package/src/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
  146. package/src/utils/aepp-wallet-communication/helpers.js +4 -2
  147. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +33 -12
  148. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
  149. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +59 -29
  150. package/src/utils/aepp-wallet-communication/schema.js +1 -3
  151. package/src/utils/aepp-wallet-communication/wallet-detector.js +4 -1
  152. package/src/utils/amount-formatter.ts +1 -1
  153. package/src/utils/bignumber.ts +2 -1
  154. package/src/utils/crypto.js +4 -68
  155. package/src/utils/keystore.js +10 -2
  156. package/src/utils/other.ts +1 -1
  157. package/src/utils/semver-satisfies.ts +1 -1
  158. package/src/utils/swagger.js +22 -10
  159. 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\n * import ContentScriptBridge\n * 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 if (msg.result.address) {\n instance.rpcClient.accounts = msg.result.address\n }\n if (msg.result.subscription) {\n instance.rpcClient.addressSubscription = msg.result.subscription\n }\n }\n\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result])\n },\n [METHODS.aepp.sign]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(\n msg, ({ id, result }) => [result.signedTransaction || result.transactionHash]\n )\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 ({\n name,\n onAddressChange = voidFn,\n onDisconnect = voidFn,\n onNetworkChange = voidFn,\n connection,\n forceValidation = false,\n debug = false\n }) {\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 Should be one of 'current' (the selected account), 'connected' (all)\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(\n METHODS.aepp.sign,\n { ...opt, tx, returnSigned: true, networkId: this.getNetworkId() }\n )\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\n * 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(\n METHODS.aepp.sign,\n { onAccount: opt.onAccount, tx, returnSigned: false, networkId: this.getNetworkId() }\n )\n }\n }\n})\n"],"file":"aepp-rpc.js"}
@@ -1,20 +1,10 @@
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
  *
15
4
  * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client
16
5
  * @export { RpcClient, RpcClients }
17
- * @example import RpcClient from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client'
6
+ * @example
7
+ * import RpcClient from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client'
18
8
  */
19
9
  import stampit from '@stamp/it';
20
10
  import { METHODS, RPC_STATUS, SUBSCRIPTION_TYPES } from '../schema';
@@ -27,29 +17,28 @@ import { sendMessage, message, isValidAccounts } from '../helpers';
27
17
  * @param {Object} param Init params object
28
18
  * @param {String} param.name Client name
29
19
  * @param {Object} param.connection Connection object
30
- * @param {Function[]} param.handlers Arrays with two function for handling messages ([ onMessage: Function, onDisconnect: Function])
20
+ * @param {Function[]} param.handlers Array with two function for message handling
21
+ * @param {Function} param.handlers[0] Message handler
22
+ * @param {Function} param.handlers[1] Disconnect callback
31
23
  * @return {Object}
32
24
  */
33
25
 
34
26
  export default stampit({
35
- init: function init(_ref) {
36
- var _this = this;
37
-
38
- var id = _ref.id,
39
- name = _ref.name,
40
- networkId = _ref.networkId,
41
- icons = _ref.icons,
42
- connection = _ref.connection,
43
- _ref$handlers = _slicedToArray(_ref.handlers, 2),
44
- onMessage = _ref$handlers[0],
45
- onDisconnect = _ref$handlers[1];
46
-
27
+ init(_ref) {
28
+ let {
29
+ id,
30
+ name,
31
+ networkId,
32
+ icons,
33
+ connection,
34
+ handlers: [onMessage, onDisconnect]
35
+ } = _ref;
47
36
  this.id = id;
48
37
  this.connection = connection;
49
38
  this.info = {
50
- name: name,
51
- networkId: networkId,
52
- icons: icons
39
+ name,
40
+ networkId,
41
+ icons
53
42
  }; // {
54
43
  // [msg.id]: { resolve, reject }
55
44
  // }
@@ -64,45 +53,49 @@ export default stampit({
64
53
  this.accounts = {};
65
54
  this.sendMessage = sendMessage(this.connection);
66
55
 
67
- var handleMessage = function handleMessage(msg, origin) {
56
+ const handleMessage = (msg, origin) => {
68
57
  if (!msg || !msg.jsonrpc || msg.jsonrpc !== '2.0' || !msg.method) {
69
- throw new Error("Received invalid message: ".concat(msg));
58
+ throw new Error(`Received invalid message: ${msg}`);
70
59
  }
71
60
 
72
61
  onMessage(msg, origin);
73
62
  };
74
63
 
75
- var disconnect = function disconnect(aepp, connection) {
76
- _this.disconnect(true);
77
-
78
- typeof onDisconnect === 'function' && onDisconnect(connection, _this);
64
+ const disconnect = (aepp, connection) => {
65
+ this.disconnect(true);
66
+ typeof onDisconnect === 'function' && onDisconnect(connection, this);
79
67
  };
80
68
 
81
69
  connection.connect(handleMessage, disconnect);
82
70
  },
71
+
83
72
  propertyDescriptors: {
84
73
  currentAccount: {
85
74
  enumerable: true,
86
75
  configurable: false,
87
- get: function get() {
88
- return this.isHasAccounts() ? _Object$keys(this.accounts.current)[0] : undefined;
76
+
77
+ get() {
78
+ return this.isHasAccounts() ? Object.keys(this.accounts.current)[0] : undefined;
89
79
  }
80
+
90
81
  },
91
82
  addresses: {
92
83
  enumerable: true,
93
84
  configurable: false,
94
- get: function get() {
95
- var _context;
96
85
 
97
- return this.isHasAccounts() ? _concatInstanceProperty(_context = []).call(_context, _toConsumableArray(_Object$keys(this.accounts.current)), _toConsumableArray(_Object$keys(this.accounts.connected))) : [];
86
+ get() {
87
+ return this.isHasAccounts() ? [...Object.keys(this.accounts.current), ...Object.keys(this.accounts.connected)] : [];
98
88
  }
89
+
99
90
  },
100
91
  origin: {
101
92
  enumerable: true,
102
93
  configurable: false,
103
- get: function get() {
94
+
95
+ get() {
104
96
  return this.connection;
105
97
  }
98
+
106
99
  }
107
100
  },
108
101
  methods: {
@@ -114,13 +107,15 @@ export default stampit({
114
107
  * @param {Object} info Info to update (will be merged with current info object)
115
108
  * @return {void}
116
109
  */
117
- updateInfo: function updateInfo(info) {
118
- _Object$assign(this.info, info);
110
+ updateInfo(info) {
111
+ Object.assign(this.info, info);
119
112
  },
120
- isHasAccounts: function isHasAccounts() {
121
- return _typeof(this.accounts) === 'object' && _typeof(this.accounts.connected) === 'object' && _typeof(this.accounts.current) === 'object';
113
+
114
+ isHasAccounts() {
115
+ return typeof this.accounts === 'object' && typeof this.accounts.connected === 'object' && typeof this.accounts.current === 'object';
122
116
  },
123
- isSubscribed: function isSubscribed() {
117
+
118
+ isSubscribed() {
124
119
  return this.addressSubscription.length && this.isHasAccounts();
125
120
  },
126
121
 
@@ -132,12 +127,8 @@ export default stampit({
132
127
  * @param {String} address Account address
133
128
  * @return {Boolean} is connected
134
129
  */
135
- hasAccessToAccount: function hasAccessToAccount(address) {
136
- var _context2;
137
-
138
- return !!address && _findInstanceProperty(_context2 = this.addresses).call(_context2, function (a) {
139
- return a === address;
140
- });
130
+ hasAccessToAccount(address) {
131
+ return !!address && this.addresses.find(a => a === address);
141
132
  },
142
133
 
143
134
  /**
@@ -147,7 +138,7 @@ export default stampit({
147
138
  * @rtype () => Boolean
148
139
  * @return {Boolean} is connected
149
140
  */
150
- isConnected: function isConnected() {
141
+ isConnected() {
151
142
  return this.connection.isConnected() && this.info.status === RPC_STATUS.CONNECTED;
152
143
  },
153
144
 
@@ -159,11 +150,11 @@ export default stampit({
159
150
  * @param {Object} options Options
160
151
  * @return {String}
161
152
  */
162
- getCurrentAccount: function getCurrentAccount() {
163
- var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
164
- onAccount = _ref2.onAccount;
165
-
166
- return onAccount || _Object$keys(this.accounts.current)[0];
153
+ getCurrentAccount() {
154
+ let {
155
+ onAccount
156
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
157
+ return onAccount || Object.keys(this.accounts.current)[0];
167
158
  },
168
159
 
169
160
  /**
@@ -173,8 +164,8 @@ export default stampit({
173
164
  * @rtype () => void
174
165
  * @return {void}
175
166
  */
176
- disconnect: function disconnect() {
177
- var forceConnectionClose = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
167
+ disconnect() {
168
+ let forceConnectionClose = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
178
169
  this.info.status = RPC_STATUS.DISCONNECTED;
179
170
  this.addressSubscription = [];
180
171
  this.accounts = {};
@@ -183,13 +174,14 @@ export default stampit({
183
174
 
184
175
  /**
185
176
  * Update accounts and sent `update.address` notification to AEPP
186
- * @param {{ current: Object, connected: Object }} accounts Object with current and connected accounts
187
- * @param {{ forceNotification: Boolean }} [options={ forceNotification: false }] Don not sent update notification to AEPP
177
+ * @param {{ current: Object, connected: Object }} accounts Current and connected accounts
178
+ * @param {Object} [options]
179
+ * @param {Boolean} [options.forceNotification] Don't sent update notification to AEPP
188
180
  */
189
- setAccounts: function setAccounts(accounts) {
190
- var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
191
- _ref3$forceNotificati = _ref3.forceNotification,
192
- forceNotification = _ref3$forceNotificati === void 0 ? false : _ref3$forceNotificati;
181
+ setAccounts(accounts) {
182
+ let {
183
+ forceNotification
184
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
193
185
 
194
186
  if (!isValidAccounts(accounts)) {
195
187
  throw new Error('Invalid accounts object. Should be object like: `{ connected: {}, selected: {} }`');
@@ -212,19 +204,13 @@ export default stampit({
212
204
  * @param {String} value Subscription value
213
205
  * @return {String[]}
214
206
  */
215
- updateSubscription: function updateSubscription(type, value) {
216
- var _context3, _context4;
217
-
218
- if (type === SUBSCRIPTION_TYPES.subscribe && !_includesInstanceProperty(_context3 = this.addressSubscription).call(_context3, value)) {
207
+ updateSubscription(type, value) {
208
+ if (type === SUBSCRIPTION_TYPES.subscribe && !this.addressSubscription.includes(value)) {
219
209
  this.addressSubscription.push(value);
220
210
  }
221
211
 
222
- if (type === SUBSCRIPTION_TYPES.unsubscribe && _includesInstanceProperty(_context4 = this.addressSubscription).call(_context4, value)) {
223
- var _context5;
224
-
225
- this.addressSubscription = _filterInstanceProperty(_context5 = this.addressSubscription).call(_context5, function (s) {
226
- return s !== value;
227
- });
212
+ if (type === SUBSCRIPTION_TYPES.unsubscribe && this.addressSubscription.includes(value)) {
213
+ this.addressSubscription = this.addressSubscription.filter(s => s !== value);
228
214
  }
229
215
 
230
216
  return this.addressSubscription;
@@ -239,15 +225,13 @@ export default stampit({
239
225
  * @param {Object} params Method params
240
226
  * @return {Promise} Promise which will be resolved after receiving response message
241
227
  */
242
- request: function request(name, params) {
243
- var _this2 = this;
244
-
245
- var msgId = this.sendMessage(message(name, params));
228
+ request(name, params) {
229
+ const msgId = this.sendMessage(message(name, params));
246
230
  if (Object.prototype.hasOwnProperty.call(this.callbacks, msgId)) throw new Error('Callback Already exist');
247
- return new _Promise(function (resolve, reject) {
248
- _this2.callbacks[msgId] = {
249
- resolve: resolve,
250
- reject: reject
231
+ return new Promise((resolve, reject) => {
232
+ this.callbacks[msgId] = {
233
+ resolve,
234
+ reject
251
235
  };
252
236
  });
253
237
  },
@@ -261,18 +245,18 @@ export default stampit({
261
245
  * @param {Function=} transformResult Optional parser function for message
262
246
  * @return {void}
263
247
  */
264
- processResponse: function processResponse(_ref4, transformResult) {
265
- var id = _ref4.id,
266
- error = _ref4.error,
267
- result = _ref4.result;
268
- if (!this.callbacks[id]) throw new Error("Can't find callback for this messageId ".concat(id));
248
+ processResponse(_ref2, transformResult) {
249
+ let {
250
+ id,
251
+ error,
252
+ result
253
+ } = _ref2;
254
+ if (!this.callbacks[id]) throw new Error(`Can't find callback for this messageId ${id}`);
269
255
 
270
256
  if (result) {
271
- var _this$callbacks$id;
272
-
273
- (_this$callbacks$id = this.callbacks[id]).resolve.apply(_this$callbacks$id, _toConsumableArray(typeof transformResult === 'function' ? transformResult({
274
- id: id,
275
- result: result
257
+ this.callbacks[id].resolve(...(typeof transformResult === 'function' ? transformResult({
258
+ id,
259
+ result
276
260
  }) : [result]));
277
261
  } else {
278
262
  this.callbacks[id].reject(error);
@@ -280,6 +264,7 @@ export default stampit({
280
264
 
281
265
  delete this.callbacks[id];
282
266
  }
267
+
283
268
  }
284
269
  });
285
270
  //# 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":";;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,OAAP,MAAoB,WAApB;AAEA,SAASC,OAAT,EAAkBC,UAAlB,EAA8BC,kBAA9B,QAAwD,WAAxD;AACA,SAASC,WAAT,EAAsBC,OAAtB,EAA+BC,eAA/B,QAAsD,YAAtD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeN,OAAO,CAAC;AACrBO,EAAAA,IADqB,sBACkE;AAAA;;AAAA,QAA/EC,EAA+E,QAA/EA,EAA+E;AAAA,QAA3EC,IAA2E,QAA3EA,IAA2E;AAAA,QAArEC,SAAqE,QAArEA,SAAqE;AAAA,QAA1DC,KAA0D,QAA1DA,KAA0D;AAAA,QAAnDC,UAAmD,QAAnDA,UAAmD;AAAA,4CAAvCC,QAAuC;AAAA,QAA5BC,SAA4B;AAAA,QAAjBC,YAAiB;;AACrF,SAAKP,EAAL,GAAUA,EAAV;AACA,SAAKI,UAAL,GAAkBA,UAAlB;AACA,SAAKI,IAAL,GAAY;AAAEP,MAAAA,IAAI,EAAJA,IAAF;AAAQC,MAAAA,SAAS,EAATA,SAAR;AAAmBC,MAAAA,KAAK,EAALA;AAAnB,KAAZ,CAHqF,CAIrF;AACA;AACA;;AACA,SAAKM,SAAL,GAAiB,EAAjB,CAPqF,CAQrF;;AACA,SAAKC,mBAAL,GAA2B,EAA3B,CATqF,CAUrF;AACA;AACA;AACA;;AACA,SAAKC,QAAL,GAAgB,EAAhB;AAEA,SAAKf,WAAL,GAAmBA,WAAW,CAAC,KAAKQ,UAAN,CAA9B;;AAEA,QAAMQ,aAAa,GAAG,SAAhBA,aAAgB,CAACC,GAAD,EAAMC,MAAN,EAAiB;AACrC,UAAI,CAACD,GAAD,IAAQ,CAACA,GAAG,CAACE,OAAb,IAAwBF,GAAG,CAACE,OAAJ,KAAgB,KAAxC,IAAiD,CAACF,GAAG,CAACG,MAA1D,EAAkE;AAChE,cAAM,IAAIC,KAAJ,qCAAuCJ,GAAvC,EAAN;AACD;;AACDP,MAAAA,SAAS,CAACO,GAAD,EAAMC,MAAN,CAAT;AACD,KALD;;AAOA,QAAMI,UAAU,GAAG,SAAbA,UAAa,CAACC,IAAD,EAAOf,UAAP,EAAsB;AACvC,MAAA,KAAI,CAACc,UAAL,CAAgB,IAAhB;;AACA,aAAOX,YAAP,KAAwB,UAAxB,IAAsCA,YAAY,CAACH,UAAD,EAAa,KAAb,CAAlD;AACD,KAHD;;AAKAA,IAAAA,UAAU,CAACgB,OAAX,CAAmBR,aAAnB,EAAkCM,UAAlC;AACD,GAhCoB;AAiCrBG,EAAAA,mBAAmB,EAAE;AACnBC,IAAAA,cAAc,EAAE;AACdC,MAAAA,UAAU,EAAE,IADE;AAEdC,MAAAA,YAAY,EAAE,KAFA;AAGdC,MAAAA,GAHc,iBAGP;AACL,eAAO,KAAKC,aAAL,KACH,aAAY,KAAKf,QAAL,CAAcgB,OAA1B,EAAmC,CAAnC,CADG,GAEHC,SAFJ;AAGD;AAPa,KADG;AAUnBC,IAAAA,SAAS,EAAE;AACTN,MAAAA,UAAU,EAAE,IADH;AAETC,MAAAA,YAAY,EAAE,KAFL;AAGTC,MAAAA,GAHS,iBAGF;AAAA;;AACL,eAAO,KAAKC,aAAL,8EACC,aAAY,KAAKf,QAAL,CAAcgB,OAA1B,CADD,sBACwC,aAAY,KAAKhB,QAAL,CAAcmB,SAA1B,CADxC,KAEH,EAFJ;AAGD;AAPQ,KAVQ;AAmBnBhB,IAAAA,MAAM,EAAE;AACNS,MAAAA,UAAU,EAAE,IADN;AAENC,MAAAA,YAAY,EAAE,KAFR;AAGNC,MAAAA,GAHM,iBAGC;AACL,eAAO,KAAKrB,UAAZ;AACD;AALK;AAnBW,GAjCA;AA4DrB2B,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UATO,sBASKxB,IATL,EASW;AAChB,qBAAc,KAAKA,IAAnB,EAAyBA,IAAzB;AACD,KAXM;AAYPkB,IAAAA,aAZO,2BAYU;AACf,aAAO,QAAO,KAAKf,QAAZ,MAAyB,QAAzB,IACL,QAAO,KAAKA,QAAL,CAAcmB,SAArB,MAAmC,QAD9B,IAEL,QAAO,KAAKnB,QAAL,CAAcgB,OAArB,MAAiC,QAFnC;AAGD,KAhBM;AAiBPM,IAAAA,YAjBO,0BAiBS;AACd,aAAO,KAAKvB,mBAAL,CAAyBwB,MAAzB,IAAmC,KAAKR,aAAL,EAA1C;AACD,KAnBM;;AAoBP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIS,IAAAA,kBA5BO,8BA4BaC,OA5Bb,EA4BsB;AAAA;;AAC3B,aAAO,CAAC,CAACA,OAAF,IAAa,uCAAKP,SAAL,kBAAoB,UAAAQ,CAAC;AAAA,eAAIA,CAAC,KAAKD,OAAV;AAAA,OAArB,CAApB;AACD,KA9BM;;AA+BP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIE,IAAAA,WAtCO,yBAsCQ;AACb,aAAO,KAAKlC,UAAL,CAAgBkC,WAAhB,MAAiC,KAAK9B,IAAL,CAAU+B,MAAV,KAAqB7C,UAAU,CAAC8C,SAAxE;AACD,KAxCM;;AAyCP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,iBAjDO,+BAiDgC;AAAA,sFAAJ,EAAI;AAAA,UAAlBC,SAAkB,SAAlBA,SAAkB;;AACrC,aAAOA,SAAS,IAAI,aAAY,KAAK/B,QAAL,CAAcgB,OAA1B,EAAmC,CAAnC,CAApB;AACD,KAnDM;;AAoDP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIT,IAAAA,UA3DO,wBA2DmC;AAAA,UAA9ByB,oBAA8B,uEAAP,KAAO;AACxC,WAAKnC,IAAL,CAAU+B,MAAV,GAAmB7C,UAAU,CAACkD,YAA9B;AACA,WAAKlC,mBAAL,GAA2B,EAA3B;AACA,WAAKC,QAAL,GAAgB,EAAhB;AACAgC,MAAAA,oBAAoB,IAAI,KAAKvC,UAAL,CAAgBc,UAAhB,EAAxB;AACD,KAhEM;;AAiEP;AACJ;AACA;AACA;AACA;AACI2B,IAAAA,WAtEO,uBAsEMlC,QAtEN,EAsEoD;AAAA,sFAAJ,EAAI;AAAA,wCAAlCmC,iBAAkC;AAAA,UAAlCA,iBAAkC,sCAAd,KAAc;;AACzD,UAAI,CAAChD,eAAe,CAACa,QAAD,CAApB,EAAgC;AAC9B,cAAM,IAAIM,KAAJ,CAAU,mFAAV,CAAN;AACD;;AACD,WAAKN,QAAL,GAAgBA,QAAhB;;AACA,UAAI,CAACmC,iBAAL,EAAwB;AACtB;AACA,aAAKlD,WAAL,CAAiBC,OAAO,CAACJ,OAAO,CAACsD,MAAR,CAAeC,aAAhB,EAA+B,KAAKrC,QAApC,CAAxB,EAAuE,IAAvE;AACD;AACF,KA/EM;;AAgFP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIsC,IAAAA,kBAzFO,8BAyFaC,IAzFb,EAyFmBC,KAzFnB,EAyF0B;AAAA;;AAC/B,UAAID,IAAI,KAAKvD,kBAAkB,CAACyD,SAA5B,IAAyC,CAAC,2CAAK1C,mBAAL,kBAAkCyC,KAAlC,CAA9C,EAAwF;AACtF,aAAKzC,mBAAL,CAAyB2C,IAAzB,CAA8BF,KAA9B;AACD;;AACD,UAAID,IAAI,KAAKvD,kBAAkB,CAAC2D,WAA5B,IAA2C,2CAAK5C,mBAAL,kBAAkCyC,KAAlC,CAA/C,EAAyF;AAAA;;AACvF,aAAKzC,mBAAL,GAA2B,yCAAKA,mBAAL,kBAAgC,UAAA6C,CAAC;AAAA,iBAAIA,CAAC,KAAKJ,KAAV;AAAA,SAAjC,CAA3B;AACD;;AACD,aAAO,KAAKzC,mBAAZ;AACD,KAjGM;;AAkGP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI8C,IAAAA,OA3GO,mBA2GEvD,IA3GF,EA2GQwD,MA3GR,EA2GgB;AAAA;;AACrB,UAAMC,KAAK,GAAG,KAAK9D,WAAL,CAAiBC,OAAO,CAACI,IAAD,EAAOwD,MAAP,CAAxB,CAAd;AACA,UAAIE,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqC,KAAKrD,SAA1C,EAAqDiD,KAArD,CAAJ,EAAiE,MAAM,IAAIzC,KAAJ,CAAU,wBAAV,CAAN;AACjE,aAAO,aAAY,UAAC8C,OAAD,EAAUC,MAAV,EAAqB;AACtC,QAAA,MAAI,CAACvD,SAAL,CAAeiD,KAAf,IAAwB;AAAEK,UAAAA,OAAO,EAAPA,OAAF;AAAWC,UAAAA,MAAM,EAANA;AAAX,SAAxB;AACD,OAFM,CAAP;AAGD,KAjHM;;AAkHP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eA3HO,kCA2HiCC,eA3HjC,EA2HkD;AAAA,UAAtClE,EAAsC,SAAtCA,EAAsC;AAAA,UAAlCmE,KAAkC,SAAlCA,KAAkC;AAAA,UAA3BC,MAA2B,SAA3BA,MAA2B;AACvD,UAAI,CAAC,KAAK3D,SAAL,CAAeT,EAAf,CAAL,EAAyB,MAAM,IAAIiB,KAAJ,kDAAoDjB,EAApD,EAAN;;AACzB,UAAIoE,MAAJ,EAAY;AAAA;;AACV,mCAAK3D,SAAL,CAAeT,EAAf,GAAmB+D,OAAnB,8CAA8B,OAAOG,eAAP,KAA2B,UAA3B,GAC1BA,eAAe,CAAC;AAAElE,UAAAA,EAAE,EAAFA,EAAF;AAAMoE,UAAAA,MAAM,EAANA;AAAN,SAAD,CADW,GAE1B,CAACA,MAAD,CAFJ;AAGD,OAJD,MAIO;AACL,aAAK3D,SAAL,CAAeT,EAAf,EAAmBgE,MAAnB,CAA0BG,KAA1B;AACD;;AACD,aAAO,KAAK1D,SAAL,CAAeT,EAAf,CAAP;AACD;AArIM;AA5DY,CAAD,CAAtB","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\n * 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 Array with two function for message handling\n * @param {Function} param.handlers[0] Message handler\n * @param {Function} param.handlers[1] Disconnect callback\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 Current and connected accounts\n * @param {Object} [options]\n * @param {Boolean} [options.forceNotification] Don't sent update notification to AEPP\n */\n setAccounts (accounts, { forceNotification } = {}) {\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"}