@aeternity/aepp-sdk 10.0.0 → 11.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 (238) hide show
  1. package/README.md +15 -14
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +7 -27
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/account/{base.js → base.mjs} +20 -10
  10. package/es/account/base.mjs.map +1 -0
  11. package/es/account/{memory.js → memory.mjs} +29 -14
  12. package/es/account/memory.mjs.map +1 -0
  13. package/es/account/{multiple.js → multiple.mjs} +10 -9
  14. package/es/account/multiple.mjs.map +1 -0
  15. package/es/ae/{aens.js → aens.mjs} +18 -22
  16. package/es/ae/aens.mjs.map +1 -0
  17. package/es/ae/{aepp.js → aepp.mjs} +9 -9
  18. package/es/ae/aepp.mjs.map +1 -0
  19. package/es/ae/contract.mjs +159 -0
  20. package/es/ae/contract.mjs.map +1 -0
  21. package/es/ae/{index.js → index.mjs} +8 -7
  22. package/es/ae/index.mjs.map +1 -0
  23. package/es/ae/{oracle.js → oracle.mjs} +33 -16
  24. package/es/ae/oracle.mjs.map +1 -0
  25. package/es/ae/{universal.js → universal.mjs} +10 -10
  26. package/es/ae/universal.mjs.map +1 -0
  27. package/es/ae/{wallet.js → wallet.mjs} +10 -10
  28. package/es/ae/wallet.mjs.map +1 -0
  29. package/es/aepp-wallet-communication/schema.d.ts +74 -0
  30. package/es/bignumber.d.ts +1 -7
  31. package/es/chain/{index.js → index.mjs} +20 -4
  32. package/es/chain/index.mjs.map +1 -0
  33. package/es/chain/{node.js → node.mjs} +121 -73
  34. package/es/chain/node.mjs.map +1 -0
  35. package/es/channel/{handlers.js → handlers.mjs} +18 -20
  36. package/es/channel/handlers.mjs.map +1 -0
  37. package/es/channel/{index.js → index.mjs} +7 -7
  38. package/es/channel/index.mjs.map +1 -0
  39. package/es/channel/{internal.js → internal.mjs} +49 -32
  40. package/es/channel/internal.mjs.map +1 -0
  41. package/es/contract/aci.mjs +477 -0
  42. package/es/contract/aci.mjs.map +1 -0
  43. package/es/contract/compiler.mjs +115 -0
  44. package/es/contract/compiler.mjs.map +1 -0
  45. package/es/contract/ga/helpers.mjs +30 -0
  46. package/es/contract/ga/helpers.mjs.map +1 -0
  47. package/es/contract/ga/{index.js → index.mjs} +36 -28
  48. package/es/contract/ga/index.mjs.map +1 -0
  49. package/es/errors.d.ts +284 -0
  50. package/es/index.mjs +57 -0
  51. package/es/index.mjs.map +1 -0
  52. package/es/node-pool/{index.js → index.mjs} +11 -10
  53. package/es/node-pool/index.mjs.map +1 -0
  54. package/es/{node.js → node.mjs} +9 -8
  55. package/es/node.mjs.map +1 -0
  56. package/es/tx/builder/field-types.mjs +74 -0
  57. package/es/tx/builder/field-types.mjs.map +1 -0
  58. package/es/tx/builder/{helpers.js → helpers.mjs} +114 -56
  59. package/es/tx/builder/helpers.mjs.map +1 -0
  60. package/es/tx/builder/{index.js → index.mjs} +79 -68
  61. package/es/tx/builder/index.mjs.map +1 -0
  62. package/es/tx/builder/{schema.js → schema.mjs} +11 -65
  63. package/es/tx/builder/schema.mjs.map +1 -0
  64. package/es/tx/{index.js → index.mjs} +5 -2
  65. package/es/tx/index.mjs.map +1 -0
  66. package/es/tx/{tx-object.js → tx-object.mjs} +22 -15
  67. package/es/tx/tx-object.mjs.map +1 -0
  68. package/es/tx/{tx.js → tx.mjs} +15 -14
  69. package/es/tx/tx.mjs.map +1 -0
  70. package/es/tx/{validator.js → validator.mjs} +72 -33
  71. package/es/tx/validator.mjs.map +1 -0
  72. package/es/typings/blakejs/index.d.mjs +2 -0
  73. package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
  74. package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +7 -6
  75. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
  76. package/es/utils/aepp-wallet-communication/connection/{browser-window-message.js → browser-window-message.mjs} +10 -11
  77. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
  78. package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +5 -2
  79. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
  80. package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +6 -5
  81. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
  82. package/es/utils/aepp-wallet-communication/{helpers.js → helpers.mjs} +3 -14
  83. package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
  84. package/es/utils/aepp-wallet-communication/rpc/{aepp-rpc.js → aepp-rpc.mjs} +113 -67
  85. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
  86. package/es/utils/aepp-wallet-communication/rpc/{rpc-client.js → rpc-client.mjs} +14 -9
  87. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
  88. package/es/utils/aepp-wallet-communication/rpc/{wallet-rpc.js → wallet-rpc.mjs} +71 -63
  89. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
  90. package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
  91. package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
  92. package/es/utils/aepp-wallet-communication/{wallet-detector.js → wallet-detector.mjs} +6 -5
  93. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  94. package/es/utils/{amount-formatter.js → amount-formatter.mjs} +14 -7
  95. package/es/utils/amount-formatter.mjs.map +1 -0
  96. package/es/utils/{async-init.js → async-init.mjs} +8 -11
  97. package/es/utils/async-init.mjs.map +1 -0
  98. package/es/utils/{bignumber.js → bignumber.mjs} +2 -9
  99. package/es/utils/bignumber.mjs.map +1 -0
  100. package/es/utils/{bytes.js → bytes.mjs} +16 -8
  101. package/es/utils/bytes.mjs.map +1 -0
  102. package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
  103. package/es/utils/crypto-ts.mjs.map +1 -0
  104. package/es/utils/{crypto.js → crypto.mjs} +40 -105
  105. package/es/utils/crypto.mjs.map +1 -0
  106. package/es/utils/errors.mjs +689 -0
  107. package/es/utils/errors.mjs.map +1 -0
  108. package/es/utils/{hd-wallet.js → hd-wallet.mjs} +33 -34
  109. package/es/utils/hd-wallet.mjs.map +1 -0
  110. package/es/utils/{json-big.js → json-big.mjs} +1 -1
  111. package/es/utils/{json-big.js.map → json-big.mjs.map} +1 -1
  112. package/es/utils/{keystore.js → keystore.mjs} +63 -51
  113. package/es/utils/keystore.mjs.map +1 -0
  114. package/es/utils/{mptree.js → mptree.mjs} +21 -12
  115. package/es/utils/mptree.mjs.map +1 -0
  116. package/es/utils/{other.js → other.mjs} +2 -2
  117. package/es/utils/other.mjs.map +1 -0
  118. package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
  119. package/es/utils/{semver-satisfies.js.map → semver-satisfies.mjs.map} +1 -1
  120. package/es/utils/{string.js → string.mjs} +1 -1
  121. package/es/utils/{string.js.map → string.mjs.map} +1 -1
  122. package/es/utils/{swagger.js → swagger.mjs} +46 -14
  123. package/es/utils/swagger.mjs.map +1 -0
  124. package/package.json +46 -55
  125. package/src/account/memory.js +13 -8
  126. package/src/account/multiple.js +12 -4
  127. package/src/ae/aens.js +12 -17
  128. package/src/ae/aepp.js +2 -2
  129. package/src/ae/contract.js +15 -152
  130. package/src/ae/index.js +2 -1
  131. package/src/ae/oracle.js +25 -10
  132. package/src/ae/universal.js +2 -2
  133. package/src/ae/wallet.js +2 -2
  134. package/src/chain/index.js +21 -2
  135. package/src/chain/node.js +80 -53
  136. package/src/channel/handlers.js +20 -17
  137. package/src/channel/internal.js +30 -24
  138. package/src/contract/{aci/index.js → aci.js} +152 -93
  139. package/src/contract/compiler.js +22 -117
  140. package/src/contract/ga/helpers.js +7 -5
  141. package/src/contract/ga/index.js +27 -24
  142. package/src/index.js +7 -8
  143. package/src/node-pool/index.js +9 -8
  144. package/src/node.js +5 -7
  145. package/src/tx/builder/field-types.js +61 -0
  146. package/src/tx/builder/helpers.js +113 -58
  147. package/src/tx/builder/index.js +39 -34
  148. package/src/tx/builder/schema.js +11 -25
  149. package/src/tx/tx-object.js +10 -9
  150. package/src/tx/tx.js +17 -8
  151. package/src/tx/validator.js +25 -5
  152. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +8 -3
  153. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +10 -6
  154. package/src/utils/aepp-wallet-communication/content-script-bridge.js +5 -4
  155. package/src/utils/aepp-wallet-communication/helpers.js +2 -12
  156. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +81 -55
  157. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +15 -6
  158. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +60 -49
  159. package/src/utils/aepp-wallet-communication/schema.ts +80 -0
  160. package/src/utils/aepp-wallet-communication/wallet-detector.js +3 -2
  161. package/src/utils/amount-formatter.ts +4 -3
  162. package/src/utils/async-init.js +10 -6
  163. package/src/utils/bignumber.ts +1 -9
  164. package/src/utils/bytes.ts +3 -2
  165. package/src/utils/crypto-ts.ts +2 -2
  166. package/src/utils/crypto.js +9 -92
  167. package/src/utils/errors.ts +683 -0
  168. package/src/utils/hd-wallet.js +11 -26
  169. package/src/utils/keystore.js +47 -51
  170. package/src/utils/mptree.ts +12 -6
  171. package/src/utils/swagger.js +67 -44
  172. package/CHANGELOG.md +0 -1603
  173. package/es/account/base.js.map +0 -1
  174. package/es/account/memory.js.map +0 -1
  175. package/es/account/multiple.js.map +0 -1
  176. package/es/ae/aens.js.map +0 -1
  177. package/es/ae/aepp.js.map +0 -1
  178. package/es/ae/contract.js +0 -312
  179. package/es/ae/contract.js.map +0 -1
  180. package/es/ae/index.js.map +0 -1
  181. package/es/ae/oracle.js.map +0 -1
  182. package/es/ae/universal.js.map +0 -1
  183. package/es/ae/wallet.js.map +0 -1
  184. package/es/chain/index.js.map +0 -1
  185. package/es/chain/node.js.map +0 -1
  186. package/es/channel/handlers.js.map +0 -1
  187. package/es/channel/index.js.map +0 -1
  188. package/es/channel/internal.js.map +0 -1
  189. package/es/contract/aci/helpers.js +0 -298
  190. package/es/contract/aci/helpers.js.map +0 -1
  191. package/es/contract/aci/index.js +0 -361
  192. package/es/contract/aci/index.js.map +0 -1
  193. package/es/contract/aci/transformation.js +0 -66
  194. package/es/contract/aci/transformation.js.map +0 -1
  195. package/es/contract/compiler.js +0 -244
  196. package/es/contract/compiler.js.map +0 -1
  197. package/es/contract/ga/helpers.js +0 -22
  198. package/es/contract/ga/helpers.js.map +0 -1
  199. package/es/contract/ga/index.js.map +0 -1
  200. package/es/contract/index.js +0 -162
  201. package/es/contract/index.js.map +0 -1
  202. package/es/index.js +0 -57
  203. package/es/index.js.map +0 -1
  204. package/es/node-pool/index.js.map +0 -1
  205. package/es/node.js.map +0 -1
  206. package/es/tx/builder/helpers.js.map +0 -1
  207. package/es/tx/builder/index.js.map +0 -1
  208. package/es/tx/builder/schema.js.map +0 -1
  209. package/es/tx/index.js.map +0 -1
  210. package/es/tx/tx-object.js.map +0 -1
  211. package/es/tx/tx.js.map +0 -1
  212. package/es/tx/validator.js.map +0 -1
  213. package/es/typings/blakejs/index.d.js +0 -2
  214. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  215. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  216. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  217. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  218. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  219. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  220. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  221. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  222. package/es/utils/aepp-wallet-communication/schema.js +0 -107
  223. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  224. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  225. package/es/utils/amount-formatter.js.map +0 -1
  226. package/es/utils/async-init.js.map +0 -1
  227. package/es/utils/bignumber.js.map +0 -1
  228. package/es/utils/bytes.js.map +0 -1
  229. package/es/utils/crypto-ts.js.map +0 -1
  230. package/es/utils/crypto.js.map +0 -1
  231. package/es/utils/hd-wallet.js.map +0 -1
  232. package/es/utils/keystore.js.map +0 -1
  233. package/es/utils/mptree.js.map +0 -1
  234. package/es/utils/other.js.map +0 -1
  235. package/es/utils/swagger.js.map +0 -1
  236. package/src/contract/aci/transformation.js +0 -72
  237. package/src/contract/index.js +0 -163
  238. package/src/utils/aepp-wallet-communication/schema.js +0 -108
package/es/tx/tx.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tx/tx.js"],"names":["ChainNode","Tx","buildTx","calculateFee","unpackTx","ABI_VERSIONS","MIN_GAS_PRICE","PROTOCOL_VM_ABI","TX_TYPE","TX_TTL","buildContractId","TxObject","spendTx","senderId","recipientId","amount","payload","fee","ttl","nonce","prepareTxParams","spend","arguments","tx","nativeMode","params","type","encodedTx","api","postSpend","parseInt","namePreclaimTx","accountId","commitmentId","namePreClaim","postNamePreclaim","nameClaimTx","name","nameSalt","vsn","nameClaim","postNameClaim","nameTransferTx","nameId","nameTransfer","postNameTransfer","nameUpdateTx","nameTtl","pointers","clientTtl","nameUpdate","postNameUpdate","nameRevokeTx","nameRevoke","postNameRevoke","contractCreateTx","ownerId","code","vmVersion","abiVersion","deposit","gas","gasPrice","callData","ctVersion","getVmVersion","contractCreate","contractId","postContractCreate","contractCallTx","callerId","contractCall","postContractCall","oracleRegisterTx","queryFormat","responseFormat","queryFee","oracleTtl","NO_ABI","oracleRegister","postOracleRegister","oracleExtendTx","oracleId","oracleExtend","postOracleExtend","oraclePostQueryTx","responseTtl","query","queryTtl","oracleQuery","postOracleQuery","oracleRespondTx","queryId","response","oracleResponse","postOracleRespond","channelCloseSoloTx","channelId","fromId","poi","channelCloseSolo","postChannelCloseSolo","channelSlashTx","channelSlash","postChannelSlash","channelSettleTx","initiatorAmountFinal","responderAmountFinal","channelSettle","postChannelSettle","channelSnapshotSoloTx","channelSnapshotSolo","postChannelSnapshotSolo","gaAttachTx","authFun","gaAttach","payingForTx","payerId","args","payingFor","txType","consensusProtocolVersion","getNodeInfo","supportedProtocol","Error","protocolForTX","includes","calculateTtl","relative","height","getCurrentKeyBlock","getAccountNonce","accountNonce","getAccountByPubkey","catch","n","t","f","absoluteTtl","strategy","getAccountNextNonce","e","nextNonce","call","showWarning","Transaction","compose","init","props","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Transaction module\n * @module @aeternity/aepp-sdk/es/tx/tx\n * @export Transaction\n * @example import { Transaction } from '@aeternity/aepp-sdk'\n */\n\nimport ChainNode from '../chain/node'\nimport Tx from './'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { ABI_VERSIONS, MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE, TX_TTL } from './builder/schema'\nimport { buildContractId } from './builder/helpers'\nimport { TxObject } from './tx-object'\n\nasync function spendTx ({ senderId, recipientId, amount, payload = '' }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.spend, { senderId, ...arguments[0], payload }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n ...arguments[0],\n recipientId,\n senderId,\n nonce,\n ttl,\n payload\n },\n type: TX_TYPE.spend\n }).encodedTx\n }\n : await this.api.postSpend({\n ...arguments[0],\n amount: parseInt(amount),\n recipientId,\n senderId,\n nonce,\n ttl,\n fee: parseInt(fee),\n payload\n })\n\n return tx\n}\n\nasync function namePreclaimTx ({ accountId, commitmentId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.namePreClaim, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.namePreClaim\n }).encodedTx\n }\n : await this.api.postNamePreclaim({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function nameClaimTx ({ accountId, name, nameSalt, vsn = 2 }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameClaim, { senderId: accountId, ...arguments[0], vsn }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, vsn },\n type: TX_TYPE.nameClaim\n }).encodedTx\n }\n : await this.api.postNameClaim({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function nameTransferTx ({ accountId, nameId, recipientId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameTransfer, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], recipientId, nonce, ttl, fee },\n type: TX_TYPE.nameTransfer\n }).encodedTx\n }\n : await this.api.postNameTransfer({\n ...arguments[0], recipientId, nonce, ttl, fee: parseInt(fee)\n })\n\n return tx\n}\n\nasync function nameUpdateTx ({ accountId, nameId, nameTtl, pointers, clientTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameUpdate, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.nameUpdate\n }).encodedTx\n }\n : await this.api.postNameUpdate({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function nameRevokeTx ({ accountId, nameId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameRevoke, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.nameRevoke\n }).encodedTx\n }\n : await this.api.postNameRevoke({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function contractCreateTx ({\n ownerId, code, vmVersion, abiVersion, deposit, amount, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.contractCreate, { senderId: ownerId, ...arguments[0], ctVersion, gasPrice }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, ctVersion, gasPrice },\n type: TX_TYPE.contractCreate\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n : this.api.postContractCreate({\n ...arguments[0],\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n vmVersion: ctVersion.vmVersion,\n abiVersion: ctVersion.abiVersion\n })\n}\n\nasync function contractCallTx ({\n callerId, contractId, abiVersion, amount, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n const ctVersion = this.getVmVersion(TX_TYPE.contractCall, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.contractCall,\n { senderId: callerId, ...arguments[0], gasPrice, abiVersion: ctVersion.abiVersion }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, abiVersion: ctVersion.abiVersion, gasPrice },\n type: TX_TYPE.contractCall\n }).encodedTx\n }\n : await this.api.postContractCall({\n ...arguments[0],\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n abiVersion: ctVersion.abiVersion\n })\n\n return tx\n}\n\nasync function oracleRegisterTx ({\n accountId, queryFormat, responseFormat, queryFee, oracleTtl, abiVersion = ABI_VERSIONS.NO_ABI\n}) {\n // const { abiVersion: abi } = this.getVmVersion(TX_TYPE.oracleRegister, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleRegister, { senderId: accountId, ...arguments[0], abiVersion }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n accountId,\n queryFee,\n abiVersion,\n fee,\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n },\n type: TX_TYPE.oracleRegister\n }).encodedTx\n }\n : await this.api.postOracleRegister({\n accountId,\n queryFee,\n abiVersion,\n fee: parseInt(fee),\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n })\n\n return tx\n}\n\nasync function oracleExtendTx ({ oracleId, callerId, oracleTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleExtend, { senderId: callerId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, fee, oracleTtl, nonce, ttl },\n type: TX_TYPE.oracleExtend\n }).encodedTx\n }\n : await this.api.postOracleExtend({ oracleId, fee: parseInt(fee), oracleTtl, nonce, ttl })\n\n return tx\n}\n\nasync function oraclePostQueryTx ({ oracleId, responseTtl, query, queryTtl, queryFee, senderId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleQuery, { senderId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, query, queryTtl, fee, queryFee, ttl, nonce, senderId },\n type: TX_TYPE.oracleQuery\n }).encodedTx\n }\n : await this.api.postOracleQuery({\n oracleId,\n responseTtl,\n query,\n queryTtl,\n fee: parseInt(fee),\n queryFee,\n ttl,\n nonce,\n senderId\n })\n\n return tx\n}\n\nasync function oracleRespondTx ({ oracleId, callerId, responseTtl, queryId, response }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleResponse, { senderId: callerId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, queryId, response, fee, ttl, nonce },\n type: TX_TYPE.oracleResponse\n }).encodedTx\n }\n : await this.api.postOracleRespond({\n oracleId, responseTtl, queryId, response, fee: parseInt(fee), ttl, nonce\n })\n return tx\n}\n\nasync function channelCloseSoloTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelCloseSolo, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelCloseSolo)\n : await this.api.postChannelCloseSolo({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSlashTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSlash, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSlash)\n : await this.api.postChannelSlash({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSettleTx ({ channelId, fromId, initiatorAmountFinal, responderAmountFinal }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSettle, { senderId: fromId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n initiatorAmountFinal,\n responderAmountFinal,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSettle)\n : await this.api.postChannelSettle({\n ...arguments[0],\n channelId,\n fromId,\n initiatorAmountFinal: parseInt(initiatorAmountFinal),\n responderAmountFinal: parseInt(responderAmountFinal),\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSnapshotSoloTx ({ channelId, fromId, payload }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSnapshotSolo, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSnapshotSolo)\n : await this.api.postChannelSnapshotSolo({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function gaAttachTx ({\n ownerId, code, vmVersion, abiVersion, authFun, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.gaAttach, { senderId: ownerId, ...arguments[0], ctVersion, gasPrice }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, ctVersion, gasPrice },\n type: TX_TYPE.gaAttach\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n}\n\nasync function payingForTx ({ tx, payerId, ...args }) {\n const params = { tx: unpackTx(tx), payerId }\n const { fee, nonce } = await this.prepareTxParams(TX_TYPE.payingFor, {\n ...params, ...args, senderId: payerId\n })\n return buildTx({ ...params, ...args, fee, nonce }, TX_TYPE.payingFor).tx\n}\n\n/**\n * Validated vm/abi version or get default based on transaction type and NODE version\n *\n * @param {string} txType Type of transaction\n * @param {object} vmAbi Object with vm and abi version fields\n * @return {object} Object with vm/abi version ({ vmVersion: number, abiVersion: number })\n */\nfunction getVmVersion (txType, { vmVersion, abiVersion } = {}) {\n const { consensusProtocolVersion } = this.getNodeInfo()\n const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!supportedProtocol) throw new Error('Not supported consensus protocol version')\n const protocolForTX = supportedProtocol[txType]\n if (!protocolForTX) throw new Error('Not supported tx type')\n\n abiVersion = abiVersion || protocolForTX.abiVersion[0]\n vmVersion = vmVersion || protocolForTX.vmVersion[0]\n if (!protocolForTX.vmVersion.includes(vmVersion)) {\n throw new Error(`VM VERSION ${vmVersion} do not support by this node. Supported: [${protocolForTX.vmVersion}]`)\n }\n if (!protocolForTX.abiVersion.includes(abiVersion)) {\n throw new Error(`ABI VERSION ${abiVersion} do not support by this node. Supported: [${protocolForTX.abiVersion}]`)\n }\n\n return { vmVersion, abiVersion }\n}\n\n/**\n * Compute the absolute ttl by adding the ttl to the current height of the chain\n *\n * @param {number} ttl\n * @param {boolean} relative ttl is absolute or relative(default: true(relative))\n * @return {number} Absolute Ttl\n */\nasync function calculateTtl (ttl = TX_TTL, relative = true) {\n if (ttl === 0) return 0\n if (ttl < 0) throw new Error('ttl must be greater than 0')\n\n if (relative) {\n const { height } = await this.api.getCurrentKeyBlock()\n return +(height) + ttl\n }\n return ttl\n}\n\n/**\n * Get the next nonce to be used for a transaction for an account\n *\n * @param {string} accountId\n * @param {number} nonce\n * @return {number} Next Nonce\n */\nasync function getAccountNonce (accountId, nonce) {\n if (nonce) return nonce\n const { nonce: accountNonce } = await this.api.getAccountByPubkey(accountId)\n .catch(() => ({ nonce: 0 }))\n return accountNonce + 1\n}\n\n/**\n * Calculate fee, get absolute ttl (ttl + height), get account nonce\n *\n * @param {String} txType Type of transaction\n * @param {Object} params Object which contains all tx data\n * @return {Object} { ttl, nonce, fee } Object with account nonce, absolute ttl and transaction fee\n */\nasync function prepareTxParams (\n txType,\n { senderId, nonce: n, ttl: t, fee: f, gas, absoluteTtl, vsn, strategy }\n) {\n n = n || (\n await this.api.getAccountNextNonce(senderId, { strategy }).catch(e => ({ nextNonce: 1 }))\n ).nextNonce\n const ttl = await calculateTtl.call(this, t, !absoluteTtl)\n const fee = calculateFee(\n f,\n txType,\n { showWarning: this.showWarning, gas, params: { ...arguments[1], nonce: n, ttl }, vsn }\n )\n return { fee, ttl, nonce: n }\n}\n\n/**\n * Transaction Stamp\n *\n * This is implementation of [Tx](api/tx.md) relays\n * the creation of transactions to {@link module:@aeternity/aepp-sdk/es/Node}.\n * This stamp provide ability to create native transaction's,\n * or transaction's using Node API.\n * As there is no built-in security between Node and client communication,\n * creating transaction using {@link module:@aeternity/aepp-sdk/es/Node} API\n * must never be used for production but can be very useful to verify other\n * implementations.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Boolean} [options.nativeMode=true] options.nativeMode - Use Native build of transaction's\n * @param {String} options.url - Node url\n * @param {String} options.internalUrl - Node internal url\n * @return {Object} Transaction instance\n * @example Transaction({url: 'https://testnet.aeternity.io/'})\n */\nconst Transaction = ChainNode.compose(Tx, {\n init ({ nativeMode = true, showWarning = false }) {\n this.nativeMode = nativeMode\n this.showWarning = showWarning\n },\n props: {\n nativeMode: true,\n showWarning: false\n },\n methods: {\n spendTx,\n namePreclaimTx,\n nameClaimTx,\n nameTransferTx,\n nameUpdateTx,\n nameRevokeTx,\n contractCreateTx,\n contractCallTx,\n prepareTxParams,\n oracleRegisterTx,\n oracleExtendTx,\n oraclePostQueryTx,\n oracleRespondTx,\n channelCloseSoloTx,\n channelSlashTx,\n channelSettleTx,\n channelSnapshotSoloTx,\n gaAttachTx,\n payingForTx,\n getAccountNonce,\n getVmVersion\n }\n})\n\nexport default Transaction\n"],"file":"tx.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tx/validator.js"],"names":["verify","hash","encode","decode","BigNumber","MIN_GAS_PRICE","PROTOCOL_VM_ABI","TX_TYPE","calculateFee","unpackTx","validators","encodedTx","signatures","account","node","parentTxTypes","undefined","length","prefix","Buffer","from","nodeNetworkId","includes","payingFor","join","txWithNetworkId","concat","rlpEncoded","txHashWithNetworkId","decodedPub","id","message","key","checkedKeys","tx","txType","verifyTransaction","fee","minFee","gas","params","showWarning","vsn","VSN","lte","ttl","height","amount","nameFee","cost","plus","minus","balance","toFixed","nonce","gaMeta","validNonce","gasPrice","ctVersion","abiVersion","consensusProtocolVersion","getNodeInfo","protocol","Error","txProtocol","Object","entries","some","value","JSON","stringify","getSenderAddress","map","filter","a","replace","transaction","address","signed","Promise","all","api","getAccountByPubkey","catch","getCurrentKeyBlockHeight","then","v","flat"],"mappings":"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","sourcesContent":["import { verify, hash } from '../utils/crypto'\nimport { encode, decode } from './builder/helpers'\n\nimport BigNumber from 'bignumber.js'\nimport { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema'\nimport { calculateFee, unpackTx } from './builder'\n\n/**\n * Transaction validator\n * @module @aeternity/aepp-sdk/es/tx/validator\n * @export verifyTransaction\n * @example import { verifyTransaction } from '@aeternity/aepp-sdk'\n */\n\nconst validators = [\n async ({ encodedTx, signatures }, { account, node, parentTxTypes }) => {\n if ((encodedTx ?? signatures) === undefined) return []\n if (signatures.length !== 1) return [] // TODO: Support multisignature?\n const prefix = Buffer.from([\n node.nodeNetworkId,\n ...parentTxTypes.includes(TX_TYPE.payingFor) ? ['inner_tx'] : []\n ].join('-'))\n const txWithNetworkId = Buffer.concat([prefix, encodedTx.rlpEncoded])\n const txHashWithNetworkId = Buffer.concat([prefix, hash(encodedTx.rlpEncoded)])\n const decodedPub = decode(account.id, 'ak')\n if (verify(txWithNetworkId, signatures[0], decodedPub) ||\n verify(txHashWithNetworkId, signatures[0], decodedPub)) return []\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have' +\n ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures']\n }]\n },\n async ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {\n if ((encodedTx ?? tx) === undefined) return []\n return verifyTransaction(\n encode((encodedTx ?? tx).rlpEncoded, 'tx'),\n node,\n [...parentTxTypes, txType]\n )\n },\n (tx, { txType }) => {\n if (tx.fee === undefined) return []\n const minFee = calculateFee(0, txType, {\n gas: +tx.gas || 0, params: tx, showWarning: false, vsn: tx.VSN\n })\n if (new BigNumber(minFee).lte(tx.fee)) return []\n return [{\n message: `Fee ${tx.fee} is too low, minimum fee for this transaction is ${minFee}`,\n key: 'InsufficientFee',\n checkedKeys: ['fee']\n }]\n },\n ({ ttl }, { height }) => {\n if (ttl === undefined) return []\n ttl = +ttl\n if (ttl === 0 || ttl >= height) return []\n return [{\n message: `TTL ${ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl']\n }]\n },\n ({ amount, fee, nameFee, tx }, { account, parentTxTypes, txType }) => {\n if ((amount ?? fee ?? nameFee) === undefined) return []\n const cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0)\n .plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0)\n .minus(parentTxTypes.includes(TX_TYPE.payingFor) ? fee : 0)\n if (cost.lte(account.balance)) return []\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost.toFixed()}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee']\n }]\n },\n ({ nonce }, { account, parentTxTypes }) => {\n if (nonce === undefined || parentTxTypes.includes(TX_TYPE.gaMeta)) return []\n nonce = +nonce\n const validNonce = account.nonce + 1\n if (nonce === validNonce) return []\n return [{\n ...nonce < validNonce\n ? {\n message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,\n key: 'NonceAlreadyUsed'\n }\n : {\n message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,\n key: 'NonceHigh'\n },\n checkedKeys: ['nonce']\n }]\n },\n ({ gasPrice }) => {\n if (gasPrice === undefined) return []\n if (gasPrice >= MIN_GAS_PRICE) return []\n return [{\n message: `Gas price ${gasPrice} must be bigger then ${MIN_GAS_PRICE}`,\n key: 'MinGasPrice',\n checkedKeys: ['gasPrice']\n }]\n },\n ({ ctVersion, abiVersion }, { txType, node }) => {\n const { consensusProtocolVersion } = node.getNodeInfo()\n const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!protocol) throw new Error(`Unsupported protocol: ${consensusProtocolVersion}`)\n // If not contract create tx\n if (!ctVersion) ctVersion = { abiVersion }\n const txProtocol = protocol[txType]\n if (!txProtocol) return []\n if (Object.entries(ctVersion).some(([key, value]) => !txProtocol[key].includes(+value))) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion']\n }]\n }\n return []\n }\n]\n\nconst getSenderAddress = tx => [\n 'senderId', 'accountId', 'ownerId', 'callerId',\n 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId'\n]\n .map(key => tx[key])\n .filter(a => a)\n .map(a => a.replace(/^ok_/, 'ak_'))[0]\n\n/**\n * Transaction Validator\n * This function validates some of transaction properties,\n * to make sure it can be posted it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n * @rtype (tx: String, node) => void\n * @param {String} transaction Base64Check-encoded transaction\n * @param {Object} node Node to validate transaction against\n * @param {String[]} [parentTxTypes] Types of parent transactions\n * @return {Promise<Object[]>} Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction (transaction, node, parentTxTypes = []) {\n const { tx, txType } = unpackTx(transaction)\n\n const address = getSenderAddress(tx) ??\n (txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null)\n const [account, height] = await Promise.all([\n address && node.api.getAccountByPubkey(address).catch(() => ({\n id: address,\n balance: new BigNumber(0),\n nonce: 0\n })),\n node.api.getCurrentKeyBlockHeight().then(({ height }) => height)\n ])\n\n return (await Promise.all(\n validators.map(v => v(tx, { txType, node, account, height, parentTxTypes })))\n ).flat()\n}\n"],"file":"validator.js"}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=index.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/browser-runtime.js"],"names":["stampit","WalletConnection","getBrowserAPI","disconnect","port","e","console","warning","connect","onMessage","onDisconnect","isConnected","Error","handler","msg","source","debug","log","addListener","sendMessage","postMessage","hasListeners","hasListener","init","connectionInfo","runtime","id","undefined","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser runtime connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @export BrowserRuntimeConnection\n * @example import { BrowserRuntimeConnection } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\n\nimport WalletConnection from '.'\nimport { getBrowserAPI } from '../helpers'\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n try {\n this.port.disconnect()\n } catch (e) {\n console.warning('From BrowserRuntimeConnection: ', e)\n }\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function, onDisconnect: Function) => void\n * @param {Function} onMessage - Message handler\n * @param {Function} onDisconnect - trigger when runtime connection in closed\n * @return {void}\n */\nfunction connect (onMessage, onDisconnect) {\n if (this.isConnected()) throw new Error('You already connected')\n this.handler = (msg, source) => {\n if (this.debug) console.log('Receive message: ', msg)\n onMessage(msg, source)\n }\n this.port.onMessage.addListener(this.handler)\n this.port.onDisconnect.addListener(() => {\n typeof onDisconnect === 'function' && onDisconnect({}, this)\n this.port.disconnect()\n })\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n if (!this.port) throw new Error('You dont have connection. Please connect before')\n if (this.debug) console.log('Send message: ', msg)\n this.port.postMessage(msg)\n}\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)\n}\n\n/**\n * BrowserRuntimeConnection stamp\n * Handle browser runtime communication\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {Object} params.port - Runtime `port` object\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, port, debug = false }) {\n if (!getBrowserAPI().runtime) throw new Error('Runtime is not accessible in your environment')\n this.debug = debug\n this.connectionInfo = connectionInfo\n this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"file":"browser-runtime.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/browser-window-message.js"],"names":["stampit","WalletConnection","v4","uuid","MESSAGE_DIRECTION","getBrowserAPI","isInIframe","isConnected","listener","connect","onMessage","origin","receiveDirection","debug","forceOrigin","Error","msg","source","data","console","log","type","subscribeFn","disconnect","unsubscribeFn","sendMessage","message","sendDirection","postFn","getTarget","isExtensionContext","extension","isWeb","window","location","protocol","startsWith","isContentScript","parent","undefined","init","connectionInfo","target","self","to_aepp","Object","keys","includes","id","selfP","targetP","addEventListener","removeEventListener","postMessage","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser window Post Message connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @export BrowserWindowMessageConnection\n * @example\n * import BrowserWindowMessageConnection\n * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'\n */\nimport stampit from '@stamp/it'\nimport WalletConnection from '.'\nimport { v4 as uuid } from 'uuid'\nimport { MESSAGE_DIRECTION } from '../schema'\nimport { getBrowserAPI, isInIframe } from '../helpers'\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return this.listener\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\nfunction connect (onMessage) {\n const origin = this.origin\n const receiveDirection = this.receiveDirection\n const debug = this.debug\n const forceOrigin = this.forceOrigin\n if (this.listener) throw new Error('You already connected')\n\n this.listener = (msg, source) => {\n if (!msg || typeof msg.data !== 'object') return\n if (!forceOrigin && origin && origin !== msg.origin) return\n if (debug) console.log('Receive message: ', msg)\n if (msg.data.type) {\n if (msg.data.type !== receiveDirection) return\n onMessage(msg.data.data, msg.origin, msg.source)\n } else {\n onMessage(msg.data, msg.origin, msg.source)\n }\n }\n this.subscribeFn(this.listener)\n}\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n if (!this.listener) throw new Error('You dont have connection. Please connect before')\n this.unsubscribeFn(this.listener)\n this.listener = null\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n const message = this.sendDirection ? { type: this.sendDirection, data: msg } : msg\n if (this.debug) console.log('Send message: ', message)\n this.postFn(message)\n}\n\nconst getTarget = () => {\n const isExtensionContext = typeof getBrowserAPI(true).extension === 'object'\n const isWeb = window && window.location && window.location.protocol.startsWith('http')\n const isContentScript = isExtensionContext && isWeb\n if (isContentScript) return window\n // When we is the main page we need to decide the target by our self\n // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which\n // Iframe to talk\n return isInIframe() ? window.parent : undefined\n}\n\n/**\n * BrowserWindowMessageConnection\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication\\\n * /connection/browser-window-message\n * @rtype Stamp\n * @param {Object} [params={}] - Initializer object\n * @param {Object} [params.target=window.parent] - Target window for message\n * @param {Object} [params.self=window] - Host window for message\n * @param {Object} [params.origin] - Origin of receiver\n * @param {String} [params.sendDirection] Wrapping messages into additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {String} [params.receiveDirection='to_aepp'] Unwrapping messages from additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({\n connectionInfo = {},\n target = getTarget(),\n self = window,\n origin,\n sendDirection,\n receiveDirection = MESSAGE_DIRECTION.to_aepp,\n debug = false,\n forceOrigin = false\n } = {}) {\n if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new Error(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new Error(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n this.connectionInfo = { id: uuid(), ...connectionInfo }\n\n const selfP = self\n const targetP = target\n this.origin = origin\n this.debug = debug\n this.forceOrigin = forceOrigin\n this.sendDirection = sendDirection\n this.receiveDirection = receiveDirection\n this.subscribeFn = (listener) => selfP.addEventListener('message', listener, false)\n this.unsubscribeFn = (listener) => selfP.removeEventListener('message', listener, false)\n this.postFn = (msg) => targetP.postMessage(msg, this.origin || '*')\n if (!this.connectionInfo.id) throw new Error('ID required.')\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"file":"browser-window-message.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/connection/index.js"],"names":["required","methods","connect","disconnect","sendMessage","isConnected"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,QAAT,QAAyB,iBAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeA,QAAQ,CAAC;AACtBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,OAAO,EAAEF,QADF;AAEPG,IAAAA,UAAU,EAAEH,QAFL;AAGPI,IAAAA,WAAW,EAAEJ,QAHN;AAIPK,IAAAA,WAAW,EAAEL;AAJN;AADa,CAAD,CAAvB;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Connection base module\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @export WalletConnection\n * @example\n * import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'\n */\n\nimport { required } from '@stamp/required'\n\n/**\n * Basic Wallet Connection\n *\n * This stamp include interface for wallet connection functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} WalletConnection instance\n */\nexport default required({\n methods: {\n connect: required,\n disconnect: required,\n sendMessage: required,\n isConnected: required\n }\n})\n\n/**\n * Connect\n * @function connect\n * @instance\n * @abstract\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @abstract\n * @rtype () => void\n * @return {void}\n */\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @abstract\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @abstract\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/aepp-wallet-communication/content-script-bridge.js"],"names":["stampit","run","allowCrossOrigin","extConnection","connect","msg","pageConnection","sendMessage","origin","source","window","stop","disconnect","init","Error","methods"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,OAAP,MAAoB,WAApB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,GAAT,GAAgB;AACd,QAAMC,gBAAgB,GAAG,KAAKA,gBAA9B,CADc,CAEd;;AACA,OAAKC,aAAL,CAAmBC,OAAnB,CAA4BC,GAAD,IAAS;AAClC,SAAKC,cAAL,CAAoBC,WAApB,CAAgCF,GAAhC;AACD,GAFD,EAHc,CAMd;;AACA,OAAKC,cAAL,CAAoBF,OAApB,CAA4B,CAACC,GAAD,EAAMG,MAAN,EAAcC,MAAd,KAAyB;AACnD,QAAI,CAACP,gBAAD,IAAqBO,MAAM,KAAKC,MAApC,EAA4C;AAC5C,SAAKP,aAAL,CAAmBI,WAAnB,CAA+BF,GAA/B;AACD,GAHD;AAID;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,IAAT,GAAiB;AACf,OAAKR,aAAL,CAAmBS,UAAnB;AACA,OAAKN,cAAL,CAAoBM,UAApB;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAeZ,OAAO,CAAC;AACrBa,EAAAA,IAAI,OAA+D;AAAA,QAA7D;AAAEP,MAAAA,cAAF;AAAkBH,MAAAA,aAAlB;AAAiCD,MAAAA,gBAAgB,GAAG;AAApD,KAA6D;AACjE,QAAI,CAACQ,MAAL,EAAa,MAAM,IAAII,KAAJ,CAAU,6DAAV,CAAN;AACb,QAAI,CAACR,cAAL,EAAqB,MAAM,IAAIQ,KAAJ,CAAU,yBAAV,CAAN;AACrB,QAAI,CAACX,aAAL,EAAoB,MAAM,IAAIW,KAAJ,CAAU,wBAAV,CAAN;AACpB,SAAKZ,gBAAL,GAAwBA,gBAAxB;AACA,SAAKI,cAAL,GAAsBA,cAAtB;AACA,SAAKH,aAAL,GAAqBA,aAArB;AACD,GARoB;;AASrBY,EAAAA,OAAO,EAAE;AAAEd,IAAAA,GAAF;AAAOU,IAAAA;AAAP;AATY,CAAD,CAAtB","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Content Script Bridge module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @export ContentScriptBridge\n * @example\n * import ContentScriptBridge\n * from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge\n */\nimport stampit from '@stamp/it'\n\n/**\n * Start message proxy\n * @function run\n * @instance\n * @return {void}\n */\nfunction run () {\n const allowCrossOrigin = this.allowCrossOrigin\n // Connect to extension using runtime\n this.extConnection.connect((msg) => {\n this.pageConnection.sendMessage(msg)\n })\n // Connect to page using window.postMessage\n this.pageConnection.connect((msg, origin, source) => {\n if (!allowCrossOrigin && source !== window) return\n this.extConnection.sendMessage(msg)\n })\n}\n\n/**\n * Stop message proxy\n * @function stop\n * @instance\n * @return {void}\n */\nfunction stop () {\n this.extConnection.disconnect()\n this.pageConnection.disconnect()\n}\n\n/**\n * ContentScriptBridge stamp\n * Provide functionality to easly redirect messages from page to extension and from extension to\n * page through content script\n * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @rtype Stamp\n * @param {Object} params - Initializer object\n * @param {Object} params.pageConnection - Page connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/\\\n * browser-window-message)\n * @param {Object} params.extConnection - Extension connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)\n * @return {Object}\n */\nexport default stampit({\n init ({ pageConnection, extConnection, allowCrossOrigin = false }) {\n if (!window) throw new Error('Window object not found, you can run bridge only in browser')\n if (!pageConnection) throw new Error('pageConnection required')\n if (!extConnection) throw new Error('extConnection required')\n this.allowCrossOrigin = allowCrossOrigin\n this.pageConnection = pageConnection\n this.extConnection = extConnection\n },\n methods: { run, stop }\n})\n"],"file":"content-script-bridge.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/aepp-wallet-communication/helpers.js"],"names":["isAccountBase","getBrowserAPI","force","chrome","browser","window","Object","Error","isInIframe","parent","sendMessage","connection","messageId","id","method","params","result","error","isNotificationOrResponse","msgData","jsonrpc","getHandler","schema","msg","debug","handler","console","log","message","responseMessage","sendResponseMessage","client","data","voidFn","undefined","isValidAccounts","accounts","filter","k","length","resolveOnAccount","addresses","onAccount","opt","find","a"],"mappings":"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","sourcesContent":["/**\n * Browser helper functions\n */\nimport { isAccountBase } from '../../account/base'\n\nexport const getBrowserAPI = (force = false) => {\n const { chrome, browser } = window\n // Chrome, Opera support\n if (typeof chrome !== 'undefined' && chrome === Object(chrome)) return chrome\n // Firefox support\n if (typeof browser !== 'undefined' && browser === Object(browser)) return browser\n if (!force) throw new Error('Browser is not detected')\n return {}\n}\n\nexport const isInIframe = () => window !== window.parent\n\n/**\n * RPC helper functions\n */\nexport const sendMessage = (connection) => {\n let messageId = 0\n\n return ({ id, method, params, result, error }, isNotificationOrResponse = false) => {\n // Increment id for each request\n isNotificationOrResponse || (messageId += 1)\n id = isNotificationOrResponse ? (id || null) : messageId\n const msgData = params\n ? { params }\n : result\n ? { result }\n : { error }\n connection.sendMessage({\n jsonrpc: '2.0',\n ...id ? { id } : {},\n method,\n ...msgData\n })\n return id\n }\n}\n\nexport const getHandler = (schema, msg, { debug = false } = {}) => {\n const handler = schema[msg.method]\n if (!handler || typeof handler !== 'function') {\n debug && console.log(`Unknown message method ${msg.method}`)\n return () => async () => true\n }\n return handler\n}\n\nexport const message = (method, params = {}) => ({ method, params })\n\nexport const responseMessage = (id, method, { error, result } = {}) =>\n ({ id, method, ...(error ? { error } : { result }) })\n\nexport const sendResponseMessage = (client) => (id, method, data) =>\n client.sendMessage(responseMessage(id, method, data), true)\n\nexport const voidFn = () => undefined\n\nexport const isValidAccounts = (accounts) => (['', 'connected', 'current'].filter(k => typeof (k ? accounts[k] : accounts) === 'object')).length === 3\n\nexport const resolveOnAccount = (addresses, onAccount, opt = {}) => {\n if (!addresses.find(a => a === onAccount)) {\n if (typeof opt.onAccount !== 'object' || !isAccountBase(opt.onAccount)) throw new Error('Provided onAccount should be an AccountBase')\n onAccount = opt.onAccount\n }\n return onAccount\n}\n"],"file":"helpers.js"}
@@ -1 +0,0 @@
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 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/utils/aepp-wallet-communication/rpc/wallet-rpc.js"],"names":["v4","uuid","Ae","verifyTransaction","AccountMultiple","TxObject","RpcClient","getBrowserAPI","getHandler","isValidAccounts","message","resolveOnAccount","sendResponseMessage","ERRORS","METHODS","RPC_STATUS","VERSION","WALLET_TYPE","NOTIFICATIONS","closeConnection","instance","client","msg","disconnect","onDisconnect","params","RESPONSES","REQUESTS","aepp","connect","callInstance","name","networkId","version","icons","error","unsupportedProtocol","updateInfo","status","WAITING_FOR_CONNECTION_APPROVE","CONNECTED","result","getWalletInfo","CONNECTION_REJECTED","connectionDeny","subscribeAddress","type","value","isConnected","notAuthorize","accounts","clientAccounts","getAccounts","Error","subscription","updateSubscription","setAccounts","forceNotification","address","e","debug","console","internalError","rejectedByUser","isSubscribed","Object","keys","current","connected","sign","options","tx","onAccount","returnSigned","currentAccount","hasAccessToAccount","permissionDeny","account","getNetworkId","unsupportedNetwork","txObject","fromString","rawTx","opt","onAcc","addresses","t","signedTransaction","signTransaction","transactionHash","send","verify","validation","selectedNode","length","invalidTransaction","broadcastFailed","signMessage","signature","returnHex","handleMessage","id","origin","rpcClients","prototype","hasOwnProperty","call","callbacks","method","methodName","accept","deny","Promise","resolve","errorObjectOrHandler","response","compose","init","onConnection","onSubscription","onSign","onAskAccounts","onMessageSign","forceValidation","eventsHandlers","forEach","event","_selectAccount","selectAccount","bind","_addAccount","addAccount","_selectNode","selectNode","condition","values","filter","entries","k","v","reduce","acc","select","meta","sendMessage","updateNetwork","methods","removeRpcClient","forceConnectionClose","addRpcClient","clientConnection","info","WAITING_FOR_CONNECTION_REQUEST","connection","handlers","shareWalletInfo","postFn","jsonrpc","wallet","readyToConnect","runtime","window","location","extension","selectedAddress","a"],"mappings":"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","sourcesContent":["/**\n * RPC handler for WAELLET side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @export WalletRpc\n * @example\n * import WalletRpc from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc'\n */\nimport { v4 as uuid } from 'uuid'\nimport Ae from '../../../ae'\nimport verifyTransaction from '../../../tx/validator'\nimport AccountMultiple from '../../../account/multiple'\nimport TxObject from '../../../tx/tx-object'\nimport RpcClient from './rpc-client'\nimport { getBrowserAPI, getHandler, isValidAccounts, message, resolveOnAccount, sendResponseMessage } from '../helpers'\nimport { ERRORS, METHODS, RPC_STATUS, VERSION, WALLET_TYPE } from '../schema'\n\nconst NOTIFICATIONS = {\n [METHODS.closeConnection]: (instance, { client }) =>\n async (msg) => {\n client.disconnect(true)\n instance.onDisconnect(msg.params, client)\n }\n}\n\nconst RESPONSES = {}\n\nconst REQUESTS = {\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.aepp.connect] (callInstance, instance, client, { name, networkId, version, icons }) {\n // Check if protocol and network is compatible with wallet\n if (version !== VERSION) return { error: ERRORS.unsupportedProtocol() }\n\n // Store new AEPP and wait for connection approve\n client.updateInfo({\n status: RPC_STATUS.WAITING_FOR_CONNECTION_APPROVE,\n name,\n networkId,\n icons,\n version\n })\n\n // Call onConnection callBack to notice Wallet about new AEPP\n return callInstance(\n 'onConnection',\n { name, networkId, version },\n () => {\n client.updateInfo({ status: RPC_STATUS.CONNECTED })\n return { result: instance.getWalletInfo() }\n },\n (error) => {\n client.updateInfo({ status: RPC_STATUS.CONNECTION_REJECTED })\n return { error: ERRORS.connectionDeny(error) }\n }\n )\n },\n [METHODS.aepp.subscribeAddress] (callInstance, instance, client, { type, value }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onSubscription',\n { type, value },\n async ({ accounts } = {}) => {\n try {\n const clientAccounts = accounts || instance.getAccounts()\n if (!isValidAccounts(clientAccounts)) throw new Error('Invalid provided accounts object')\n const subscription = client.updateSubscription(type, value)\n client.setAccounts(clientAccounts, { forceNotification: true })\n return {\n result: {\n subscription,\n address: clientAccounts\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.address] (callInstance, instance, client) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n if (!client.isSubscribed()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onAskAccounts',\n {},\n ({ accounts } = {}) => ({\n result: accounts ||\n [...Object.keys(client.accounts.current), ...Object.keys(client.accounts.connected)]\n }),\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.sign] (callInstance, instance, client, options) {\n const { tx, onAccount, networkId, returnSigned = false } = options\n const address = onAccount || client.currentAccount\n // Update client with new networkId\n networkId && client.updateInfo({ networkId })\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n // Account permission check\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny({ account: address }) }\n }\n // NetworkId check\n if (!networkId || networkId !== instance.getNetworkId()) {\n return { error: ERRORS.unsupportedNetwork() }\n }\n\n return callInstance(\n 'onSign',\n { tx, returnSigned, onAccount: address, txObject: TxObject.fromString(tx) },\n async (rawTx, opt = {}) => {\n let onAcc\n try {\n onAcc = resolveOnAccount(instance.addresses(), address, opt)\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n try {\n const t = rawTx || tx\n const result = returnSigned\n ? { signedTransaction: await instance.signTransaction(t, { onAccount: onAcc }) }\n : { transactionHash: await instance.send(t, { onAccount: onAcc, verify: false }) }\n return { result }\n } catch (e) {\n if (!returnSigned) {\n // Validate transaction\n const validation = await verifyTransaction(rawTx || tx, instance.selectedNode.instance)\n if (validation.length) return { error: ERRORS.invalidTransaction(validation) }\n // Send broadcast failed error to aepp\n return { error: ERRORS.broadcastFailed(e.message) }\n }\n throw e\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.signMessage] (callInstance, instance, client, { message, onAccount }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n const address = onAccount || client.currentAccount\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny({ account: address }) }\n }\n\n return callInstance(\n 'onMessageSign',\n { message, onAccount: address },\n async (opt = {}) => {\n try {\n const onAcc = resolveOnAccount(instance.addresses(), address, opt)\n return {\n result: {\n signature: await instance.signMessage(message, {\n onAccount: onAcc,\n returnHex: true\n })\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n }\n}\n\nconst handleMessage = (instance, id) => async (msg, origin) => {\n const client = instance.rpcClients[id]\n if (!msg.id) {\n return getHandler(\n NOTIFICATIONS, msg, { debug: instance.debug }\n )(instance, { client })(msg, origin)\n }\n if (Object.prototype.hasOwnProperty.call(client.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance, { client })(msg, origin)\n } else {\n const { id, method } = msg\n const callInstance = (methodName, params, accept, deny) => () => new Promise(resolve => {\n instance[methodName](\n client,\n {\n id,\n method,\n params,\n accept: (...args) => resolve(accept(...args)),\n deny: (...args) => resolve(deny(...args))\n },\n origin\n )\n })\n // TODO make one structure for handler functions\n const errorObjectOrHandler = getHandler(REQUESTS, msg, { debug: instance.debug })(\n callInstance, instance, client, msg.params\n )\n const response = typeof errorObjectOrHandler === 'function' ? await errorObjectOrHandler() : errorObjectOrHandler\n sendResponseMessage(client)(id, method, response)\n }\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Wallet name\n * @param {Function} onConnection Call-back function for incoming AEPP connection\n * @param {Function} onSubscription Call-back function for incoming AEPP account subscription\n * @param {Function} onSign Call-back function for incoming AEPP sign request\n * @param {Function} onAskAccounts Call-back function for incoming AEPP get address request\n * @param {Function} onMessageSign Call-back function for incoming AEPP sign message request\n * Second argument of incoming call-backs contain function for accept/deny request\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @return {Object}\n */\nexport default Ae.compose(AccountMultiple, {\n init ({\n name,\n onConnection,\n onSubscription,\n onSign,\n onDisconnect,\n onAskAccounts,\n onMessageSign,\n forceValidation = false,\n debug = false\n } = {}) {\n this.debug = debug\n const eventsHandlers = [\n 'onConnection', 'onSubscription', 'onSign', 'onDisconnect', 'onMessageSign'\n ]\n // CallBacks for events\n this.onConnection = onConnection\n this.onSubscription = onSubscription\n this.onSign = onSign\n this.onDisconnect = onDisconnect\n this.onAskAccounts = onAskAccounts\n this.onMessageSign = onMessageSign\n this.rpcClients = {}\n\n eventsHandlers.forEach(event => {\n if (!forceValidation && typeof this[event] !== 'function') {\n throw new Error(`Call-back for ${event} must be an function!`)\n }\n })\n //\n this.name = name\n this.id = uuid()\n\n const _selectAccount = this.selectAccount.bind(this)\n const _addAccount = this.addAccount.bind(this)\n const _selectNode = this.selectNode.bind(this)\n\n // Overwrite AE methods\n this.selectAccount = (address, { condition = () => true } = {}) => {\n _selectAccount(address)\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() &&\n client.hasAccessToAccount(address) && condition(client))\n .forEach(client => client.setAccounts({\n current: { [address]: {} },\n connected: {\n ...client.accounts.current,\n ...Object.entries(client.accounts.connected)\n .filter(([k, v]) => k !== address)\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n }\n }))\n }\n this.addAccount = async (account, { select, meta = {}, condition = () => true } = {}) => {\n await _addAccount(account, { select })\n const address = await account.address()\n // Send notification 'update.address' to all Aepp which are subscribed for connected accounts\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() && condition(client))\n .forEach(client => client.setAccounts({\n current: { ...select ? { [address]: meta } : client.accounts.current },\n connected: {\n ...select ? client.accounts.current : { [address]: meta },\n ...client.accounts.connected\n }\n }))\n }\n this.selectNode = (name) => {\n _selectNode(name)\n // Send notification 'update.network' to all Aepp which connected\n Object.values(this.rpcClients)\n .filter(client => client.isConnected())\n .forEach(client => client.sendMessage(\n message(METHODS.updateNetwork, { networkId: this.getNetworkId() }), true\n ))\n }\n },\n methods: {\n /**\n * Remove specific RpcClient by ID\n * @function removeRpcClient\n * @instance\n * @rtype (id: string) => void\n * @param {String} id Client ID\n * @param {Object} [opt = {}]\n * @return {void}\n */\n removeRpcClient (id, { forceConnectionClose = false } = {}) {\n const client = this.rpcClients[id]\n if (!client) throw new Error(`RpcClient with id ${id} do not exist`)\n client.disconnect(forceConnectionClose)\n delete this.rpcClients[id]\n },\n /**\n * Add new client by AEPP connection\n * @function addRpcClient\n * @instance\n * @rtype (clientConnection: Object) => Object\n * @param {Object} clientConnection AEPP connection object\n * @return {String} Client ID\n */\n addRpcClient (clientConnection) {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid()\n this.rpcClients[id] = RpcClient({\n id,\n info: { status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST },\n connection: clientConnection,\n handlers: [handleMessage(this, id), this.onDisconnect]\n })\n return id\n },\n /**\n * Share wallet info\n * Send shareWalletInfo message to notify AEPP about wallet\n * @function shareWalletInfo\n * @instance\n * @rtype (postFn: Function) => void\n * @param {Function} postFn Send message function like `(msg) => void`\n * @return {void}\n */\n shareWalletInfo (postFn) {\n postFn({\n jsonrpc: '2.0',\n ...message(METHODS.wallet.readyToConnect, this.getWalletInfo())\n })\n },\n /**\n * Get Wallet info object\n * @function getWalletInfo\n * @instance\n * @rtype () => Object\n * @return {Object} Object with wallet information(id, name, network, ...)\n */\n getWalletInfo () {\n const runtime = getBrowserAPI(true).runtime\n return {\n id: runtime && runtime.id ? runtime.id : this.id,\n name: this.name,\n networkId: this.getNetworkId(),\n origin: window.location.origin,\n type: runtime && runtime.id ? WALLET_TYPE.extension : WALLET_TYPE.window\n }\n },\n /**\n * Get Wallet accounts\n * @function getAccounts\n * @instance\n * @rtype () => Object\n * @return {Object} Object with accounts information({ connected: Object, current: Object })\n */\n getAccounts () {\n return {\n current: this.selectedAddress ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter(a => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {})\n }\n }\n }\n})\n"],"file":"wallet-rpc.js"}
@@ -1,107 +0,0 @@
1
- const asEnum = array => Object.fromEntries(array.map(a => [a, a]));
2
-
3
- export const VERSION = 1;
4
- export const MESSAGE_DIRECTION = asEnum(['to_waellet', 'to_aepp']);
5
- export const WALLET_TYPE = asEnum(['window', 'extension']);
6
- export const NOTIFICATIONS = asEnum(['readyToConnect', 'closeConnection', 'updateNetwork', 'updateAddress']);
7
- export const REQUESTS = asEnum(['connect', 'subscribeAddress', 'sign', 'address', 'signMessage']);
8
- export const SUBSCRIPTION_VALUES = asEnum(['current', 'connected']);
9
- export const SUBSCRIPTION_TYPES = asEnum(['subscribe', 'unsubscribe']);
10
- export const METHODS = {
11
- wallet: {
12
- [NOTIFICATIONS.readyToConnect]: 'connection.announcePresence',
13
- [NOTIFICATIONS.updateAddress]: 'address.update'
14
- },
15
- aepp: {
16
- [REQUESTS.address]: 'address.get',
17
- [REQUESTS.connect]: 'connection.open',
18
- [REQUESTS.sign]: 'transaction.sign',
19
- [REQUESTS.signMessage]: 'message.sign',
20
- [REQUESTS.subscribeAddress]: 'address.subscribe'
21
- },
22
- [NOTIFICATIONS.updateNetwork]: 'networkId.update',
23
- [NOTIFICATIONS.closeConnection]: 'connection.close'
24
- };
25
- export const RPC_STATUS = {
26
- CONNECTED: 'CONNECTED',
27
- DISCONNECTED: 'DISCONNECTED',
28
- CONNECTION_REJECTED: 'CONNECTION_REJECTED',
29
- WAITING_FOR_CONNECTION_APPROVE: 'WAITING_FOR_CONNECTION_APPROVE',
30
- WAITING_FOR_CONNECTION_REQUEST: 'WAITING_FOR_CONNECTION_REQUEST',
31
- WAITING_FOR_SUBSCRIPTION: 'WAITING_FOR_SUBSCRIPTION'
32
- };
33
- export const ERRORS = {
34
- broadcastFailed: function () {
35
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
36
- return {
37
- code: 3,
38
- data: error,
39
- message: 'Broadcast failed'
40
- };
41
- },
42
- invalidTransaction: function () {
43
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
44
- return {
45
- code: 2,
46
- data: error,
47
- message: 'Invalid transaction'
48
- };
49
- },
50
- rejectedByUser: function () {
51
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
52
- return {
53
- code: 4,
54
- data: error,
55
- message: 'Operation rejected by user'
56
- };
57
- },
58
- connectionDeny: function () {
59
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
60
- return {
61
- code: 9,
62
- data: error,
63
- message: 'Wallet deny your connection request'
64
- };
65
- },
66
- permissionDeny: function () {
67
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
68
- return {
69
- code: 11,
70
- data: error,
71
- message: `You are not subscribed for account ${error.account}`
72
- };
73
- },
74
- internalError: function () {
75
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
76
- return {
77
- code: 12,
78
- data: error,
79
- message: error.msg
80
- };
81
- },
82
- notAuthorize: function () {
83
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
84
- return {
85
- code: 10,
86
- data: error,
87
- message: 'You are not connected to the wallet'
88
- };
89
- },
90
- unsupportedProtocol: function () {
91
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
92
- return {
93
- code: 5,
94
- data: error,
95
- message: 'Unsupported Protocol Version'
96
- };
97
- },
98
- unsupportedNetwork: function () {
99
- let error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
100
- return {
101
- code: 8,
102
- data: error,
103
- message: 'Unsupported Network'
104
- };
105
- }
106
- };
107
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/aepp-wallet-communication/schema.js"],"names":["asEnum","array","Object","fromEntries","map","a","VERSION","MESSAGE_DIRECTION","WALLET_TYPE","NOTIFICATIONS","REQUESTS","SUBSCRIPTION_VALUES","SUBSCRIPTION_TYPES","METHODS","wallet","readyToConnect","updateAddress","aepp","address","connect","sign","signMessage","subscribeAddress","updateNetwork","closeConnection","RPC_STATUS","CONNECTED","DISCONNECTED","CONNECTION_REJECTED","WAITING_FOR_CONNECTION_APPROVE","WAITING_FOR_CONNECTION_REQUEST","WAITING_FOR_SUBSCRIPTION","ERRORS","broadcastFailed","error","code","data","message","invalidTransaction","rejectedByUser","connectionDeny","permissionDeny","account","internalError","msg","notAuthorize","unsupportedProtocol","unsupportedNetwork"],"mappings":"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","sourcesContent":["const asEnum = (array) => Object.fromEntries(array.map(a => [a, a]))\n\nexport const VERSION = 1\n\nexport const MESSAGE_DIRECTION = asEnum(['to_waellet', 'to_aepp'])\n\nexport const WALLET_TYPE = asEnum([\n 'window',\n 'extension'\n])\n\nexport const NOTIFICATIONS = asEnum([\n 'readyToConnect',\n 'closeConnection',\n 'updateNetwork',\n 'updateAddress'\n])\n\nexport const REQUESTS = asEnum([\n 'connect',\n 'subscribeAddress',\n 'sign',\n 'address',\n 'signMessage'\n])\n\nexport const SUBSCRIPTION_VALUES = asEnum([\n 'current',\n 'connected'\n])\n\nexport const SUBSCRIPTION_TYPES = asEnum([\n 'subscribe',\n 'unsubscribe'\n])\n\nexport const METHODS = {\n wallet: {\n [NOTIFICATIONS.readyToConnect]: 'connection.announcePresence',\n [NOTIFICATIONS.updateAddress]: 'address.update'\n },\n aepp: {\n [REQUESTS.address]: 'address.get',\n [REQUESTS.connect]: 'connection.open',\n [REQUESTS.sign]: 'transaction.sign',\n [REQUESTS.signMessage]: 'message.sign',\n [REQUESTS.subscribeAddress]: 'address.subscribe'\n },\n [NOTIFICATIONS.updateNetwork]: 'networkId.update',\n [NOTIFICATIONS.closeConnection]: 'connection.close'\n}\n\nexport const RPC_STATUS = {\n CONNECTED: 'CONNECTED',\n DISCONNECTED: 'DISCONNECTED',\n CONNECTION_REJECTED: 'CONNECTION_REJECTED',\n WAITING_FOR_CONNECTION_APPROVE: 'WAITING_FOR_CONNECTION_APPROVE',\n WAITING_FOR_CONNECTION_REQUEST: 'WAITING_FOR_CONNECTION_REQUEST',\n WAITING_FOR_SUBSCRIPTION: 'WAITING_FOR_SUBSCRIPTION'\n}\n\nexport const ERRORS = {\n broadcastFailed: (error = {}) => ({\n code: 3,\n data: error,\n message: 'Broadcast failed'\n }),\n invalidTransaction: (error = {}) => ({\n code: 2,\n data: error,\n message: 'Invalid transaction'\n }),\n rejectedByUser: (error = {}) => ({\n code: 4,\n data: error,\n message: 'Operation rejected by user'\n }),\n connectionDeny: (error = {}) => ({\n code: 9,\n data: error,\n message: 'Wallet deny your connection request'\n }),\n permissionDeny: (error = {}) => ({\n code: 11,\n data: error,\n message: `You are not subscribed for account ${error.account}`\n }),\n internalError: (error = {}) => ({\n code: 12,\n data: error,\n message: error.msg\n }),\n notAuthorize: (error = {}) => ({\n code: 10,\n data: error,\n message: 'You are not connected to the wallet'\n }),\n unsupportedProtocol: (error = {}) => ({\n code: 5,\n data: error,\n message: 'Unsupported Protocol Version'\n }),\n unsupportedNetwork: (error = {}) => ({\n code: 8,\n data: error,\n message: 'Unsupported Network'\n })\n}\n"],"file":"schema.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/aepp-wallet-communication/wallet-detector.js"],"names":["stampit","BrowserWindowMessageConnection","MESSAGE_DIRECTION","METHODS","init","connection","window","Error","connectionInfo","id","wallets","methods","scan","onDetected","connect","origin","source","method","params","wallet","readyToConnect","getConnection","isExtension","type","sendDirection","to_waellet","undefined","receiveDirection","to_aepp","target","newWallet","Object","keys","length","stopScan","disconnect"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,OAAP,MAAoB,WAApB;AACA,OAAOC,8BAAP,MAA2C,qCAA3C;AACA,SAASC,iBAAT,EAA4BC,OAA5B,QAA2C,UAA3C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeH,OAAO,CAAC;AACrBI,EAAAA,IAAI,GAAuB;AAAA,QAArB;AAAEC,MAAAA;AAAF,KAAqB,uEAAJ,EAAI;AACzB,QAAI,CAACC,MAAL,EAAa,MAAM,IAAIC,KAAJ,CAAU,sEAAV,CAAN;AACb,SAAKF,UAAL,GAAkBA,UAAU,IAAIJ,8BAA8B,CAAC;AAAEO,MAAAA,cAAc,EAAE;AAAEC,QAAAA,EAAE,EAAE;AAAN;AAAlB,KAAD,CAA9D;AACA,SAAKC,OAAL,GAAe,EAAf;AACD,GALoB;;AAMrBC,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,IAAI,CAAEC,UAAF,EAAc;AAChB,YAAM;AAAEH,QAAAA;AAAF,UAAc,IAApB;AACA,WAAKL,UAAL,CAAgBS,OAAhB,CAAwB,OAAqBC,MAArB,EAA6BC,MAA7B,KAAwC;AAAA,YAAvC;AAAEC,UAAAA,MAAF;AAAUC,UAAAA;AAAV,SAAuC;AAC9D,YACE,CAACD,MAAD,IAAW,CAACC,MAAZ,IACAD,MAAM,KAAKd,OAAO,CAACgB,MAAR,CAAeC,cAD1B,IAC4CV,OAAO,CAACQ,MAAM,CAACT,EAAR,CAFrD,EAGE;AAEF,cAAMU,MAAM,GAAG,EACb,GAAGD,MADU;;AAEb,gBAAMG,aAAN,GAAuB;AACrB;AACA,kBAAMC,WAAW,GAAG,KAAKC,IAAL,KAAc,WAAlC;AACA,kBAAMR,MAAM,GAAGO,WAAW,GAAGhB,MAAM,CAACS,MAAV,GAAmB,KAAKA,MAAlD;AACA,mBAAOd,8BAA8B,CAAC;AACpCO,cAAAA,cAAc,EAAE,IADoB;AAEpCgB,cAAAA,aAAa,EAAEF,WAAW,GAAGpB,iBAAiB,CAACuB,UAArB,GAAkCC,SAFxB;AAGpCC,cAAAA,gBAAgB,EAAEL,WAAW,GAAGpB,iBAAiB,CAAC0B,OAArB,GAA+BF,SAHxB;AAIpCG,cAAAA,MAAM,EAAEb,MAJ4B;AAKpCD,cAAAA;AALoC,aAAD,CAArC;AAOD;;AAbY,SAAf;AAeAL,QAAAA,OAAO,CAACS,MAAM,CAACV,EAAR,CAAP,GAAqBU,MAArB;AACAN,QAAAA,UAAU,CAAC;AAAEH,UAAAA,OAAF;AAAWoB,UAAAA,SAAS,EAAEX;AAAtB,SAAD,CAAV;AACD,OAvBD;AAwBA,UAAIY,MAAM,CAACC,IAAP,CAAYtB,OAAZ,EAAqBuB,MAAzB,EAAiCpB,UAAU,CAAC;AAAEH,QAAAA;AAAF,OAAD,CAAV;AAClC,KAnCM;;AAqCP;AACJ;AACA;AACA;AACA;AACA;AACIwB,IAAAA,QAAQ,GAAI;AACV,WAAK7B,UAAL,CAAgB8B,UAAhB;AACD;;AA7CM;AANY,CAAD,CAAtB","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Detector\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @export WalletDetector\n */\nimport stampit from '@stamp/it'\nimport BrowserWindowMessageConnection from './connection/browser-window-message'\nimport { MESSAGE_DIRECTION, METHODS } from './schema'\n\n/**\n * WalletDetector stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {WalletConnection} params.connection - Connection for listening for wallets\n * @return {WalletDetector}\n */\nexport default stampit({\n init ({ connection } = {}) {\n if (!window) throw new Error('Window object not found, you can run wallet detector only in browser')\n this.connection = connection || BrowserWindowMessageConnection({ connectionInfo: { id: 'spy' } })\n this.wallets = {}\n },\n methods: {\n /**\n * Start scanning\n * @function scan\n * @instance\n * @param {Function} onDetected Call-back function which trigger on new wallet\n * @return {void}\n */\n scan (onDetected) {\n const { wallets } = this\n this.connection.connect(({ method, params }, origin, source) => {\n if (\n !method || !params ||\n method !== METHODS.wallet.readyToConnect || wallets[params.id]\n ) return\n\n const wallet = {\n ...params,\n async getConnection () {\n // if detect extension wallet or page wallet\n const isExtension = this.type === 'extension'\n const origin = isExtension ? window.origin : this.origin\n return BrowserWindowMessageConnection({\n connectionInfo: this,\n sendDirection: isExtension ? MESSAGE_DIRECTION.to_waellet : undefined,\n receiveDirection: isExtension ? MESSAGE_DIRECTION.to_aepp : undefined,\n target: source,\n origin\n })\n }\n }\n wallets[wallet.id] = wallet\n onDetected({ wallets, newWallet: wallet })\n })\n if (Object.keys(wallets).length) onDetected({ wallets })\n },\n\n /**\n * Stop scanning\n * @function stopScan\n * @instance\n * @return {void}\n */\n stopScan () {\n this.connection.disconnect()\n }\n }\n})\n"],"file":"wallet-detector.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/amount-formatter.ts"],"names":["BigNumber","isBigNumber","AE_AMOUNT_FORMATS","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","DENOMINATION_MAGNITUDE","toAe","value","denomination","formatAmount","targetDenomination","toAettos","denominations","Object","values","includes","Error","toString","shiftedBy","toFixed","prefixes","name","magnitude","getNearestPrefix","exponent","reduce","p","n","Math","abs","getLowerBoundPrefix","find","length","rawValue","exp","e","v","precision","min"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Amount Formatter\n * @module @aeternity/aepp-sdk/es/utils/amount-formatter\n * @example import { AmountFormatter } from '@aeternity/aepp-sdk'\n */\nimport BigNumber from 'bignumber.js'\nimport { isBigNumber } from './bignumber'\n\n/**\n * AE amount formats\n */\nexport const AE_AMOUNT_FORMATS = {\n AE: 'ae',\n MILI_AE: 'miliAE',\n MICRO_AE: 'microAE',\n NANO_AE: 'nanoAE',\n PICO_AE: 'picoAE',\n FEMTO_AE: 'femtoAE',\n AETTOS: 'aettos'\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nexport const DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18\n}\n\n/**\n * Convert amount to AE\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE })\n\n/**\n * Convert amount to aettos\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='ae'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE } = {}\n): string => formatAmount(value, { denomination })\n\n/**\n * Convert amount from one to other denomination\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @param {String} [options.targetDenomination='aettos'] target denomination, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const formatAmount = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => {\n const denominations = Object.values(AE_AMOUNT_FORMATS)\n if (!denominations.includes(denomination)) throw new Error(`Invalid denomination: ${denomination}`)\n if (!denominations.includes(targetDenomination)) throw new Error(`Invalid target denomination: ${targetDenomination}`)\n if (!isBigNumber(value)) throw new Error(`Value ${value?.toString()} is not type of number`)\n\n return new BigNumber(value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed()\n}\n\ninterface Prefix {\n name: string\n magnitude: number\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 }\n]\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p))\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find(p => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1]\n\nexport default (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue)\n\n const exp = value.e ?? 0\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp)\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed()\n return `${v}${name !== '' ? ' ' : ''}${name}`\n}\n"],"file":"amount-formatter.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/async-init.js"],"names":["stampit","asyncInit","options","stamp","args","instance","compose","deepConfiguration","AsyncInit","initializers","reduce","init","Promise","resolve","ret","call","undefined","deepConf","composers","composables","conf","map","c"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,OAAP,MAAoB,WAApB;;AAGA,SAASC,SAAT,GAA6D;AAAA,MAAzCC,OAAyC,uEAA/B,EAA+B;AAAA,MAA3B;AAAEC,IAAAA,KAAF;AAASC,IAAAA,IAAT;AAAeC,IAAAA;AAAf,GAA2B;AAC3D,SAAOF,KAAK,CAACG,OAAN,CAAcC,iBAAd,CAAgCC,SAAhC,CAA0CC,YAA1C,CAAuDC,MAAvD,CAA8D,OAAOL,QAAP,EAAiBM,IAAjB,KAA0B;AAC7FN,IAAAA,QAAQ,GAAG,MAAMO,OAAO,CAACC,OAAR,CAAgBR,QAAhB,CAAjB;;AACA,QAAI,OAAOM,IAAP,KAAgB,UAApB,EAAgC;AAC9B,YAAMG,GAAG,GAAG,MAAMF,OAAO,CAACC,OAAR,CAAgBF,IAAI,CAACI,IAAL,CAAUV,QAAV,EAAoBH,OAApB,EAA6B;AAAEC,QAAAA,KAAF;AAASC,QAAAA,IAAT;AAAeC,QAAAA;AAAf,OAA7B,CAAhB,CAAlB;AACA,aAAOS,GAAG,KAAKE,SAAR,GAAoBX,QAApB,GAA+BS,GAAtC;AACD;;AACD,WAAOT,QAAP;AACD,GAPM,EAOJA,QAPI,CAAP;AAQD;;AAED,MAAMG,SAAS,GAAGR,OAAO,CAAC;AACxBiB,EAAAA,QAAQ,EAAE;AAAET,IAAAA,SAAS,EAAE;AAAEC,MAAAA,YAAY,EAAE;AAAhB;AAAb,GADc;;AAExBS,EAAAA,SAAS,OAA0B;AAAA,QAAxB;AAAEf,MAAAA,KAAF;AAASgB,MAAAA;AAAT,KAAwB;AACjC,UAAMC,IAAI,GAAGjB,KAAK,CAACG,OAAN,CAAcC,iBAAd,CAAgCC,SAA7C;AACAY,IAAAA,IAAI,CAACX,YAAL,GAAoB,SAAU,CAACR,SAAD,CAAV,EAAuB,sBAAwB,SAAUkB,WAAW,CAACE,GAAZ,CAAgBC,CAAC,IAAI,MAAO,CAAC,SAAD,EAAY,mBAAZ,EAAiC,WAAjC,EAA8C,cAA9C,CAAP,EAAsEA,CAAtE,KAA4E,CAACA,CAAC,CAAChB,OAAF,IAAagB,CAAd,EAAiBb,YAA7F,IAA6G,EAAlI,CAAV,CAAxB,CAAvB,CAApB;AACAN,IAAAA,KAAK,CAACG,OAAN,CAAcG,YAAd,GAA6B,CAACR,SAAD,CAA7B;AACD;;AANuB,CAAD,CAAzB;AASA,eAAeO,SAAf","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport stampit from '@stamp/it'\nimport * as R from 'ramda'\n\nfunction asyncInit (options = {}, { stamp, args, instance }) {\n return stamp.compose.deepConfiguration.AsyncInit.initializers.reduce(async (instance, init) => {\n instance = await Promise.resolve(instance)\n if (typeof init === 'function') {\n const ret = await Promise.resolve(init.call(instance, options, { stamp, args, instance }))\n return ret === undefined ? instance : ret\n }\n return instance\n }, instance)\n}\n\nconst AsyncInit = stampit({\n deepConf: { AsyncInit: { initializers: [] } },\n composers ({ stamp, composables }) {\n const conf = stamp.compose.deepConfiguration.AsyncInit\n conf.initializers = R.without([asyncInit], R.uniqWith(R.identical, R.flatten(composables.map(c => R.path(['compose', 'deepConfiguration', 'AsyncInit', 'initializers'], c) || (c.compose || c).initializers || []))))\n stamp.compose.initializers = [asyncInit]\n }\n})\n\nexport default AsyncInit\n"],"file":"async-init.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/bignumber.ts"],"names":["BigNumber","parseBigNumber","number","toString","isBigNumber","includes","isNaN","Number","isInteger","ceil","bigNumber","integerValue","ROUND_CEIL"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,SAAP,MAAsB,cAAtB;AAEA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,cAAc,GAAIC,MAAD,IAC5B,IAAIF,SAAJ,CAAcE,MAAM,CAACC,QAAP,EAAd,EAAiCA,QAAjC,CAA0C,EAA1C,CADK;AAGP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,WAAW,GAAIF,MAAD,IACzB,CAAC,QAAD,EAAW,QAAX,EAAqB,QAArB,EAA+B,QAA/B,EAAyCG,QAAzC,CAAkD,OAAOH,MAAzD,MACC,CAACI,KAAK,CAACJ,MAAD,CAAN,IAA4BK,MAAM,CAACC,SAAP,CAAiBN,MAAjB,CAA5B,IAAwDF,SAAS,CAACI,WAAV,CAAsBF,MAAtB,CADzD,CADK;AAIP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMO,IAAI,GAAIC,SAAD,IAAqCA,SAAS,CAACC,YAAV,CAAuBX,SAAS,CAACY,UAAjC,CAAlD","sourcesContent":["/**\n * Big Number Helpers\n * @module @aeternity/aepp-sdk/es/utils/bignumber\n * @example import { parseBigNumber, isBigNumber, ceil } from '@aeternity/aepp-sdk/es/utils/bignumber'\n */\nimport BigNumber from 'bignumber.js'\n\n/**\n * Convert number to string\n * @param {String|Number|BigNumber} number number to convert\n * @return {String}\n */\nexport const parseBigNumber = (number: string | number | BigNumber): string =>\n new BigNumber(number.toString()).toString(10)\n\n/**\n * Check if value is BigNumber, Number or number string representation\n * @param {String|Number|BigNumber} number number to convert\n * @return {Boolean}\n */\nexport const isBigNumber = (number: string | number | BigNumber): boolean =>\n ['number', 'object', 'string', 'bigint'].includes(typeof number) &&\n (!isNaN(number as number) || Number.isInteger(number) || BigNumber.isBigNumber(number))\n\n/**\n * BigNumber ceil operation\n * @param {BigNumber} bigNumber\n * @return {BigNumber}\n */\nexport const ceil = (bigNumber: BigNumber): BigNumber => bigNumber.integerValue(BigNumber.ROUND_CEIL)\n"],"file":"bignumber.js"}