@aeternity/aepp-sdk 11.0.1 → 12.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 (376) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +12 -19
  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/AeSdk.d.ts +37 -0
  10. package/es/AeSdk.mjs +81 -0
  11. package/es/AeSdk.mjs.map +1 -0
  12. package/es/AeSdkAepp.d.ts +69 -0
  13. package/es/AeSdkAepp.mjs +175 -0
  14. package/es/AeSdkAepp.mjs.map +1 -0
  15. package/es/AeSdkBase.d.ts +212 -0
  16. package/es/AeSdkBase.mjs +310 -0
  17. package/es/AeSdkBase.mjs.map +1 -0
  18. package/es/AeSdkWallet.d.ts +103 -0
  19. package/es/AeSdkWallet.mjs +322 -0
  20. package/es/AeSdkWallet.mjs.map +1 -0
  21. package/es/Node.d.ts +44 -0
  22. package/es/Node.mjs +141 -0
  23. package/es/Node.mjs.map +1 -0
  24. package/es/account/Base.d.ts +65 -0
  25. package/es/account/Base.mjs +123 -0
  26. package/es/account/Base.mjs.map +1 -0
  27. package/es/account/Memory.d.ts +25 -0
  28. package/es/account/Memory.mjs +81 -0
  29. package/es/account/Memory.mjs.map +1 -0
  30. package/es/account/Rpc.d.ts +27 -0
  31. package/es/account/Rpc.mjs +79 -0
  32. package/es/account/Rpc.mjs.map +1 -0
  33. package/es/aens.d.ts +209 -0
  34. package/es/aens.mjs +332 -0
  35. package/es/aens.mjs.map +1 -0
  36. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  37. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  46. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  47. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  51. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  52. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  54. package/es/aepp-wallet-communication/schema.d.ts +90 -46
  55. package/es/aepp-wallet-communication/schema.mjs +214 -0
  56. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  57. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  58. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  60. package/es/apis/compiler/compiler.d.ts +92 -0
  61. package/es/apis/compiler/compiler.mjs +576 -0
  62. package/es/apis/compiler/compiler.mjs.map +1 -0
  63. package/es/apis/compiler/index.d.ts +2 -0
  64. package/es/apis/compiler/index.mjs +3 -0
  65. package/es/apis/compiler/index.mjs.map +1 -0
  66. package/es/apis/compiler/models/index.d.ts +248 -0
  67. package/es/apis/compiler/models/index.mjs +48 -0
  68. package/es/apis/compiler/models/index.mjs.map +1 -0
  69. package/es/apis/compiler/models/mappers.d.ts +23 -0
  70. package/es/apis/compiler/models/mappers.mjs +585 -0
  71. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  72. package/es/apis/compiler/models/parameters.d.ts +13 -0
  73. package/es/apis/compiler/models/parameters.mjs +71 -0
  74. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  75. package/es/apis/node/index.d.ts +2 -0
  76. package/es/apis/node/index.mjs +3 -0
  77. package/es/apis/node/index.mjs.map +1 -0
  78. package/es/apis/node/models/index.d.ts +1061 -0
  79. package/es/apis/node/models/index.mjs +2 -0
  80. package/es/apis/node/models/index.mjs.map +1 -0
  81. package/es/apis/node/models/mappers.d.ts +95 -0
  82. package/es/apis/node/models/mappers.mjs +4164 -0
  83. package/es/apis/node/models/mappers.mjs.map +1 -0
  84. package/es/apis/node/models/parameters.d.ts +17 -0
  85. package/es/apis/node/models/parameters.mjs +165 -0
  86. package/es/apis/node/models/parameters.mjs.map +1 -0
  87. package/es/apis/node/node.d.ts +215 -0
  88. package/es/apis/node/node.mjs +1165 -0
  89. package/es/apis/node/node.mjs.map +1 -0
  90. package/es/chain.d.ts +220 -0
  91. package/es/chain.mjs +524 -0
  92. package/es/chain.mjs.map +1 -0
  93. package/es/channel/handlers.d.ts +34 -0
  94. package/es/channel/handlers.mjs +147 -112
  95. package/es/channel/handlers.mjs.map +1 -1
  96. package/es/channel/index.d.ts +634 -0
  97. package/es/channel/index.mjs +898 -900
  98. package/es/channel/index.mjs.map +1 -1
  99. package/es/channel/internal.d.ts +100 -0
  100. package/es/channel/internal.mjs +97 -51
  101. package/es/channel/internal.mjs.map +1 -1
  102. package/es/contract/Compiler.d.ts +17 -0
  103. package/es/contract/Compiler.mjs +67 -0
  104. package/es/contract/Compiler.mjs.map +1 -0
  105. package/es/contract/aci.d.ts +125 -0
  106. package/es/contract/aci.mjs +199 -180
  107. package/es/contract/aci.mjs.map +1 -1
  108. package/es/contract/ga.d.ts +68 -0
  109. package/es/contract/ga.mjs +190 -0
  110. package/es/contract/ga.mjs.map +1 -0
  111. package/es/contract/methods.d.ts +68 -0
  112. package/es/contract/methods.mjs +101 -0
  113. package/es/contract/methods.mjs.map +1 -0
  114. package/es/index.d.ts +32 -0
  115. package/es/index.mjs +32 -40
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +154 -0
  118. package/es/oracle.mjs +288 -0
  119. package/es/oracle.mjs.map +1 -0
  120. package/es/spend.d.ts +61 -0
  121. package/es/spend.mjs +122 -0
  122. package/es/spend.mjs.map +1 -0
  123. package/es/tx/builder/constants.d.ts +41 -0
  124. package/es/tx/builder/constants.mjs +11 -19
  125. package/es/tx/builder/constants.mjs.map +1 -1
  126. package/es/tx/builder/field-types.d.ts +62 -0
  127. package/es/tx/builder/field-types.mjs +62 -10
  128. package/es/tx/builder/field-types.mjs.map +1 -1
  129. package/es/tx/builder/helpers.d.ts +131 -0
  130. package/es/tx/builder/helpers.mjs +71 -169
  131. package/es/tx/builder/helpers.mjs.map +1 -1
  132. package/es/tx/builder/index.d.ts +75 -0
  133. package/es/tx/builder/index.mjs +141 -323
  134. package/es/tx/builder/index.mjs.map +1 -1
  135. package/es/tx/builder/schema.d.ts +350 -0
  136. package/es/tx/builder/schema.mjs +173 -510
  137. package/es/tx/builder/schema.mjs.map +1 -1
  138. package/es/tx/index.d.ts +63 -0
  139. package/es/tx/index.mjs +171 -265
  140. package/es/tx/index.mjs.map +1 -1
  141. package/es/tx/min-fee.d.ts +20 -0
  142. package/es/tx/min-fee.mjs +148 -0
  143. package/es/tx/min-fee.mjs.map +1 -0
  144. package/es/tx/validator.d.ts +19 -0
  145. package/es/tx/validator.mjs +64 -71
  146. package/es/tx/validator.mjs.map +1 -1
  147. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  149. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  151. package/es/typings/bip32-path/index.d.mjs +2 -0
  152. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  153. package/es/typings/blakejs/index.d.mjs.map +1 -1
  154. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  155. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  156. package/es/utils/amount-formatter.d.ts +42 -0
  157. package/es/utils/amount-formatter.mjs +28 -41
  158. package/es/utils/amount-formatter.mjs.map +1 -1
  159. package/es/utils/autorest.d.ts +6 -0
  160. package/es/utils/autorest.mjs +97 -0
  161. package/es/utils/autorest.mjs.map +1 -0
  162. package/es/utils/bignumber.d.ts +13 -0
  163. package/es/utils/bignumber.mjs +10 -8
  164. package/es/utils/bignumber.mjs.map +1 -1
  165. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  166. package/es/utils/bytes.mjs +10 -14
  167. package/es/utils/bytes.mjs.map +1 -1
  168. package/es/utils/crypto.d.ts +103 -0
  169. package/es/utils/crypto.mjs +60 -68
  170. package/es/utils/crypto.mjs.map +1 -1
  171. package/es/utils/encoder.d.ts +26 -0
  172. package/es/utils/encoder.mjs +47 -51
  173. package/es/utils/encoder.mjs.map +1 -1
  174. package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
  175. package/es/utils/errors.mjs +318 -125
  176. package/es/utils/errors.mjs.map +1 -1
  177. package/es/utils/hd-wallet.d.ts +34 -0
  178. package/es/utils/hd-wallet.mjs +27 -16
  179. package/es/utils/hd-wallet.mjs.map +1 -1
  180. package/es/utils/json-big.d.ts +5 -0
  181. package/es/utils/json-big.mjs +10 -14
  182. package/es/utils/json-big.mjs.map +1 -1
  183. package/es/utils/keystore.d.ts +51 -0
  184. package/es/utils/keystore.mjs +98 -193
  185. package/es/utils/keystore.mjs.map +1 -1
  186. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  187. package/es/utils/mptree.mjs +13 -14
  188. package/es/utils/mptree.mjs.map +1 -1
  189. package/es/utils/other.d.ts +14 -0
  190. package/es/utils/other.mjs +21 -36
  191. package/es/utils/other.mjs.map +1 -1
  192. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  193. package/es/utils/semver-satisfies.mjs.map +1 -1
  194. package/es/utils/string.d.ts +24 -0
  195. package/es/utils/string.mjs +8 -10
  196. package/es/utils/string.mjs.map +1 -1
  197. package/package.json +49 -39
  198. package/src/AeSdk.ts +65 -0
  199. package/src/AeSdkAepp.ts +167 -0
  200. package/src/AeSdkBase.ts +320 -0
  201. package/src/AeSdkWallet.ts +332 -0
  202. package/src/Node.ts +167 -0
  203. package/src/account/Base.ts +114 -0
  204. package/src/account/Memory.ts +83 -0
  205. package/src/account/Rpc.ts +67 -0
  206. package/src/aens.ts +391 -0
  207. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  208. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  209. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  210. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
  211. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  212. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  213. package/src/aepp-wallet-communication/schema.ts +181 -0
  214. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  215. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  216. package/src/apis/compiler/compiler.ts +585 -0
  217. package/src/apis/compiler/index.ts +2 -0
  218. package/src/apis/compiler/models/index.ts +301 -0
  219. package/src/apis/compiler/models/mappers.ts +583 -0
  220. package/src/apis/compiler/models/parameters.ts +93 -0
  221. package/src/apis/node/code-model-v4.yaml +10046 -0
  222. package/src/apis/node/index.ts +2 -0
  223. package/src/apis/node/models/index.ts +1253 -0
  224. package/src/apis/node/models/mappers.ts +4278 -0
  225. package/src/apis/node/models/parameters.ts +188 -0
  226. package/src/apis/node/node.ts +1299 -0
  227. package/src/chain.ts +444 -0
  228. package/src/channel/{handlers.js → handlers.ts} +220 -128
  229. package/src/channel/index.ts +991 -0
  230. package/src/channel/internal.ts +345 -0
  231. package/src/contract/Compiler.ts +66 -0
  232. package/src/contract/aci.ts +529 -0
  233. package/src/contract/ga.ts +178 -0
  234. package/src/contract/methods.ts +118 -0
  235. package/src/index.ts +51 -0
  236. package/src/oracle.ts +342 -0
  237. package/src/spend.ts +152 -0
  238. package/src/tx/builder/{constants.js → constants.ts} +12 -16
  239. package/src/tx/builder/field-types.ts +111 -0
  240. package/src/tx/builder/helpers.ts +253 -0
  241. package/src/tx/builder/index.ts +394 -0
  242. package/src/tx/builder/schema.ts +771 -0
  243. package/src/tx/index.ts +199 -0
  244. package/src/tx/min-fee.ts +136 -0
  245. package/src/tx/validator.ts +226 -0
  246. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  247. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  248. package/src/typings/bip32-path/index.d.ts +33 -0
  249. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  250. package/src/utils/amount-formatter.ts +29 -42
  251. package/src/utils/autorest.ts +90 -0
  252. package/src/utils/bignumber.ts +9 -11
  253. package/src/utils/bytes.ts +12 -14
  254. package/src/utils/crypto.ts +217 -0
  255. package/src/utils/encoder.ts +52 -55
  256. package/src/utils/errors.ts +268 -134
  257. package/src/utils/hd-wallet.ts +134 -0
  258. package/src/utils/json-big.ts +26 -0
  259. package/src/utils/keystore.ts +179 -0
  260. package/src/utils/mptree.ts +14 -14
  261. package/src/utils/other.ts +28 -43
  262. package/src/utils/string.ts +8 -10
  263. package/es/account/base.mjs +0 -179
  264. package/es/account/base.mjs.map +0 -1
  265. package/es/account/memory.mjs +0 -99
  266. package/es/account/memory.mjs.map +0 -1
  267. package/es/account/multiple.mjs +0 -179
  268. package/es/account/multiple.mjs.map +0 -1
  269. package/es/ae/aens.mjs +0 -404
  270. package/es/ae/aens.mjs.map +0 -1
  271. package/es/ae/aepp.mjs +0 -45
  272. package/es/ae/aepp.mjs.map +0 -1
  273. package/es/ae/contract.mjs +0 -159
  274. package/es/ae/contract.mjs.map +0 -1
  275. package/es/ae/index.mjs +0 -207
  276. package/es/ae/index.mjs.map +0 -1
  277. package/es/ae/oracle.mjs +0 -339
  278. package/es/ae/oracle.mjs.map +0 -1
  279. package/es/ae/universal.mjs +0 -45
  280. package/es/ae/universal.mjs.map +0 -1
  281. package/es/ae/wallet.mjs +0 -50
  282. package/es/ae/wallet.mjs.map +0 -1
  283. package/es/amount-formatter.d.ts +0 -58
  284. package/es/bignumber.d.ts +0 -18
  285. package/es/chain/index.mjs +0 -272
  286. package/es/chain/index.mjs.map +0 -1
  287. package/es/chain/node.mjs +0 -442
  288. package/es/chain/node.mjs.map +0 -1
  289. package/es/contract/compiler.mjs +0 -115
  290. package/es/contract/compiler.mjs.map +0 -1
  291. package/es/contract/ga/helpers.mjs +0 -30
  292. package/es/contract/ga/helpers.mjs.map +0 -1
  293. package/es/contract/ga/index.mjs +0 -178
  294. package/es/contract/ga/index.mjs.map +0 -1
  295. package/es/crypto-ts.d.ts +0 -9
  296. package/es/encoder.d.ts +0 -26
  297. package/es/node-pool/index.mjs +0 -188
  298. package/es/node-pool/index.mjs.map +0 -1
  299. package/es/node.mjs +0 -133
  300. package/es/node.mjs.map +0 -1
  301. package/es/other.d.ts +0 -31
  302. package/es/string.d.ts +0 -26
  303. package/es/tx/tx-object.mjs +0 -283
  304. package/es/tx/tx-object.mjs.map +0 -1
  305. package/es/tx/tx.mjs +0 -938
  306. package/es/tx/tx.mjs.map +0 -1
  307. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  308. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  309. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  310. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  311. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  312. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  313. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  314. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  315. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  316. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  317. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  318. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  319. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  320. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  321. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  322. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  323. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  324. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  325. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  326. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  327. package/es/utils/async-init.mjs +0 -64
  328. package/es/utils/async-init.mjs.map +0 -1
  329. package/es/utils/crypto-ts.mjs.map +0 -1
  330. package/es/utils/swagger.mjs +0 -164
  331. package/es/utils/swagger.mjs.map +0 -1
  332. package/src/account/base.js +0 -153
  333. package/src/account/memory.js +0 -83
  334. package/src/account/multiple.js +0 -162
  335. package/src/ae/aens.js +0 -361
  336. package/src/ae/aepp.js +0 -45
  337. package/src/ae/contract.js +0 -148
  338. package/src/ae/index.js +0 -168
  339. package/src/ae/oracle.js +0 -311
  340. package/src/ae/universal.js +0 -47
  341. package/src/ae/wallet.js +0 -50
  342. package/src/chain/index.js +0 -269
  343. package/src/chain/node.js +0 -320
  344. package/src/channel/index.js +0 -903
  345. package/src/channel/internal.js +0 -236
  346. package/src/contract/aci.js +0 -376
  347. package/src/contract/compiler.js +0 -100
  348. package/src/contract/ga/helpers.js +0 -19
  349. package/src/contract/ga/index.js +0 -150
  350. package/src/index.js +0 -89
  351. package/src/node-pool/index.js +0 -172
  352. package/src/node.js +0 -116
  353. package/src/tx/builder/field-types.js +0 -61
  354. package/src/tx/builder/helpers.js +0 -334
  355. package/src/tx/builder/index.js +0 -465
  356. package/src/tx/builder/schema.js +0 -1100
  357. package/src/tx/index.js +0 -301
  358. package/src/tx/tx-object.js +0 -187
  359. package/src/tx/tx.js +0 -631
  360. package/src/tx/validator.js +0 -181
  361. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  362. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  363. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  364. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  365. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  366. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  367. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  368. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  369. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  370. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  371. package/src/utils/async-init.js +0 -45
  372. package/src/utils/crypto.js +0 -219
  373. package/src/utils/hd-wallet.js +0 -100
  374. package/src/utils/json-big.js +0 -26
  375. package/src/utils/keystore.js +0 -219
  376. package/src/utils/swagger.js +0 -156
@@ -1,401 +0,0 @@
1
- /**
2
- * RPC handler for WAELLET side
3
- *
4
- * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc
5
- * @export WalletRpc
6
- * @example
7
- * import WalletRpc from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc'
8
- */
9
- import { v4 as uuid } from '@aeternity/uuid'
10
- import Ae from '../../../ae'
11
- import verifyTransaction from '../../../tx/validator'
12
- import AccountMultiple from '../../../account/multiple'
13
- import TxObject from '../../../tx/tx-object'
14
- import RpcClient from './rpc-client'
15
- import { getBrowserAPI, getHandler, isValidAccounts, message, sendResponseMessage } from '../helpers'
16
- import { ERRORS, METHODS, RPC_STATUS, VERSION, WALLET_TYPE } from '../schema'
17
- import { ArgumentError, TypeError, UnknownRpcClientError } from '../../errors'
18
- import { isAccountBase } from '../../../account/base'
19
-
20
- const resolveOnAccount = (addresses, onAccount, opt = {}) => {
21
- if (!addresses.find(a => a === onAccount)) {
22
- if (typeof opt.onAccount !== 'object' || !isAccountBase(opt.onAccount)) throw new TypeError('Provided onAccount should be an AccountBase')
23
- onAccount = opt.onAccount
24
- }
25
- return onAccount
26
- }
27
-
28
- const NOTIFICATIONS = {
29
- [METHODS.closeConnection]: (instance, { client }) =>
30
- async (msg) => {
31
- client.disconnect(true)
32
- instance.onDisconnect(msg.params, client)
33
- }
34
- }
35
-
36
- const RESPONSES = {}
37
-
38
- const REQUESTS = {
39
- // Store client info and prepare two fn for each client `connect` and `denyConnection`
40
- // which automatically prepare and send response for that client
41
- [METHODS.connect] (
42
- callInstance,
43
- instance,
44
- client,
45
- { name, networkId, version, icons, connectNode }) {
46
- // Check if protocol and network is compatible with wallet
47
- if (version !== VERSION) return { error: ERRORS.unsupportedProtocol() }
48
- // Store new AEPP and wait for connection approve
49
- client.updateInfo({
50
- status: RPC_STATUS.WAITING_FOR_CONNECTION_APPROVE,
51
- name,
52
- networkId,
53
- icons,
54
- version,
55
- origin: window.location.origin,
56
- connectNode
57
- })
58
-
59
- // Call onConnection callBack to notice Wallet about new AEPP
60
- return callInstance(
61
- 'onConnection',
62
- { name, networkId, version },
63
- ({ shareNode } = {}) => {
64
- client.updateInfo({ status: shareNode ? RPC_STATUS.NODE_BINDED : RPC_STATUS.CONNECTED })
65
- return {
66
- result: {
67
- ...instance.getWalletInfo(),
68
- ...(shareNode && { node: instance.selectedNode })
69
- }
70
- }
71
- },
72
- (error) => {
73
- client.updateInfo({ status: RPC_STATUS.CONNECTION_REJECTED })
74
- return { error: ERRORS.connectionDeny(error) }
75
- }
76
- )
77
- },
78
- [METHODS.subscribeAddress] (callInstance, instance, client, { type, value }) {
79
- // Authorization check
80
- if (!client.isConnected()) return { error: ERRORS.notAuthorize() }
81
-
82
- return callInstance(
83
- 'onSubscription',
84
- { type, value },
85
- async ({ accounts } = {}) => {
86
- try {
87
- const clientAccounts = accounts || instance.getAccounts()
88
- if (!isValidAccounts(clientAccounts)) {
89
- throw new TypeError('Invalid provided accounts object')
90
- }
91
- const subscription = client.updateSubscription(type, value)
92
- client.setAccounts(clientAccounts, { forceNotification: true })
93
- return {
94
- result: {
95
- subscription,
96
- address: clientAccounts
97
- }
98
- }
99
- } catch (e) {
100
- if (instance.debug) console.error(e)
101
- return { error: ERRORS.internalError(e.message) }
102
- }
103
- },
104
- (error) => ({ error: ERRORS.rejectedByUser(error) })
105
- )
106
- },
107
- [METHODS.address] (callInstance, instance, client) {
108
- // Authorization check
109
- if (!client.isConnected()) return { error: ERRORS.notAuthorize() }
110
- if (!client.isSubscribed()) return { error: ERRORS.notAuthorize() }
111
-
112
- return callInstance(
113
- 'onAskAccounts',
114
- {},
115
- ({ accounts } = {}) => ({
116
- result: accounts ||
117
- [...Object.keys(client.accounts.current), ...Object.keys(client.accounts.connected)]
118
- }),
119
- (error) => ({ error: ERRORS.rejectedByUser(error) })
120
- )
121
- },
122
- [METHODS.sign] (callInstance, instance, client, options) {
123
- const { tx, onAccount, networkId, returnSigned = false } = options
124
- const address = onAccount || client.currentAccount
125
- // Update client with new networkId
126
- networkId && client.updateInfo({ networkId })
127
- // Authorization check
128
- if (!client.isConnected()) return { error: ERRORS.notAuthorize() }
129
- // Account permission check
130
- if (!client.hasAccessToAccount(address)) {
131
- return { error: ERRORS.permissionDeny(address) }
132
- }
133
- // NetworkId check
134
- if (!networkId || networkId !== instance.getNetworkId()) {
135
- return { error: ERRORS.unsupportedNetwork() }
136
- }
137
-
138
- return callInstance(
139
- 'onSign',
140
- { tx, returnSigned, onAccount: address, txObject: TxObject.fromString(tx) },
141
- async (rawTx, opt = {}) => {
142
- let onAcc
143
- try {
144
- onAcc = resolveOnAccount(instance.addresses(), address, opt)
145
- } catch (e) {
146
- if (instance.debug) console.error(e)
147
- return { error: ERRORS.internalError(e.message) }
148
- }
149
- try {
150
- const t = rawTx || tx
151
- const result = returnSigned
152
- ? { signedTransaction: await instance.signTransaction(t, { onAccount: onAcc }) }
153
- : { transactionHash: await instance.send(t, { onAccount: onAcc, verify: false }) }
154
- return { result }
155
- } catch (e) {
156
- if (!returnSigned) {
157
- // Validate transaction
158
- const validation = await verifyTransaction(rawTx || tx, instance.selectedNode.instance)
159
- if (validation.length) return { error: ERRORS.invalidTransaction(validation) }
160
- // Send broadcast failed error to aepp
161
- return { error: ERRORS.broadcastFailed(e.message) }
162
- }
163
- throw e
164
- }
165
- },
166
- (error) => ({ error: ERRORS.rejectedByUser(error) })
167
- )
168
- },
169
- [METHODS.signMessage] (callInstance, instance, client, { message, onAccount }) {
170
- // Authorization check
171
- if (!client.isConnected()) return { error: ERRORS.notAuthorize() }
172
- const address = onAccount || client.currentAccount
173
- if (!client.hasAccessToAccount(address)) {
174
- return { error: ERRORS.permissionDeny(address) }
175
- }
176
-
177
- return callInstance(
178
- 'onMessageSign',
179
- { message, onAccount: address },
180
- async (opt = {}) => {
181
- try {
182
- const onAcc = resolveOnAccount(instance.addresses(), address, opt)
183
- return {
184
- result: {
185
- signature: await instance.signMessage(message, {
186
- onAccount: onAcc,
187
- returnHex: true
188
- })
189
- }
190
- }
191
- } catch (e) {
192
- if (instance.debug) console.error(e)
193
- return { error: ERRORS.internalError(e.message) }
194
- }
195
- },
196
- (error) => ({ error: ERRORS.rejectedByUser(error) })
197
- )
198
- }
199
- }
200
-
201
- const handleMessage = (instance, id) => async (msg, origin) => {
202
- const client = instance.rpcClients[id]
203
- if (!msg.id) {
204
- return getHandler(
205
- NOTIFICATIONS, msg, { debug: instance.debug }
206
- )(instance, { client })(msg, origin)
207
- }
208
- if (Object.prototype.hasOwnProperty.call(client.callbacks, msg.id)) {
209
- return getHandler(RESPONSES, msg, { debug: instance.debug })(instance, { client })(msg, origin)
210
- } else {
211
- const { id, method } = msg
212
- const callInstance = (methodName, params, accept, deny) => () => new Promise(resolve => {
213
- instance[methodName](
214
- client,
215
- {
216
- id,
217
- method,
218
- params,
219
- accept: (...args) => resolve(accept(...args)),
220
- deny: (...args) => resolve(deny(...args))
221
- },
222
- origin
223
- )
224
- })
225
- // TODO make one structure for handler functions
226
- const errorObjectOrHandler = getHandler(REQUESTS, msg, { debug: instance.debug })(
227
- callInstance, instance, client, msg.params
228
- )
229
- const response = typeof errorObjectOrHandler === 'function' ? await errorObjectOrHandler() : errorObjectOrHandler
230
- sendResponseMessage(client)(id, method, response)
231
- }
232
- }
233
-
234
- /**
235
- * Contain functionality for aepp interaction and managing multiple aepps
236
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc
237
- * @function
238
- * @rtype Stamp
239
- * @param {Object} param Init params object
240
- * @param {String=} [param.name] Wallet name
241
- * @param {Function} onConnection Call-back function for incoming AEPP connection
242
- * @param {Function} onSubscription Call-back function for incoming AEPP account subscription
243
- * @param {Function} onSign Call-back function for incoming AEPP sign request
244
- * @param {Function} onAskAccounts Call-back function for incoming AEPP get address request
245
- * @param {Function} onMessageSign Call-back function for incoming AEPP sign message request
246
- * Second argument of incoming call-backs contain function for accept/deny request
247
- * @param {Function} onDisconnect Call-back function for disconnect event
248
- * @return {Object}
249
- */
250
- export default Ae.compose(AccountMultiple, {
251
- init ({
252
- name,
253
- debug = false,
254
- ...other
255
- } = {}) {
256
- [
257
- 'onConnection', 'onSubscription', 'onSign', 'onDisconnect', 'onAskAccounts', 'onMessageSign'
258
- ].forEach(event => {
259
- const handler = other[event]
260
- if (typeof handler !== 'function') throw new ArgumentError(event, 'a function', handler)
261
- this[event] = handler
262
- })
263
-
264
- this.debug = debug
265
- this.rpcClients = {}
266
- this.name = name
267
- this.id = uuid()
268
-
269
- const _selectAccount = this.selectAccount.bind(this)
270
- const _addAccount = this.addAccount.bind(this)
271
- const _selectNode = this.selectNode.bind(this)
272
-
273
- // Overwrite AE methods
274
- this.selectAccount = (address, { condition = () => true } = {}) => {
275
- _selectAccount(address)
276
- Object.values(this.rpcClients)
277
- .filter(client => client.isConnected() && client.isSubscribed() &&
278
- client.hasAccessToAccount(address) && condition(client))
279
- .forEach(client => client.setAccounts({
280
- current: { [address]: {} },
281
- connected: {
282
- ...client.accounts.current,
283
- ...Object.entries(client.accounts.connected)
284
- .filter(([k, v]) => k !== address)
285
- .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})
286
- }
287
- }))
288
- }
289
- this.addAccount = async (account, { select, meta = {}, condition = () => true } = {}) => {
290
- await _addAccount(account, { select })
291
- const address = await account.address()
292
- // Send notification 'update.address' to all Aepp which are subscribed for connected accounts
293
- Object.values(this.rpcClients)
294
- .filter(client => client.isConnected() && client.isSubscribed() && condition(client))
295
- .forEach(client => client.setAccounts({
296
- current: { ...select ? { [address]: meta } : client.accounts.current },
297
- connected: {
298
- ...select ? client.accounts.current : { [address]: meta },
299
- ...client.accounts.connected
300
- }
301
- }))
302
- }
303
- this.selectNode = (name) => {
304
- _selectNode(name)
305
- // Send notification 'update.network' to all Aepp which connected
306
- Object.values(this.rpcClients)
307
- .filter(client => client.isConnected())
308
- .forEach(client => {
309
- client.sendMessage(
310
- message(METHODS.updateNetwork, {
311
- networkId: this.getNetworkId(),
312
- ...(client.info.status === RPC_STATUS.NODE_BINDED && { node: this.selectedNode })
313
- }), true)
314
- })
315
- }
316
- },
317
- methods: {
318
- /**
319
- * Remove specific RpcClient by ID
320
- * @function removeRpcClient
321
- * @instance
322
- * @rtype (id: string) => void
323
- * @param {String} id Client ID
324
- * @param {Object} [opt = {}]
325
- * @return {void}
326
- */
327
- removeRpcClient (id, { forceConnectionClose = false } = {}) {
328
- const client = this.rpcClients[id]
329
- if (!client) throw new UnknownRpcClientError(id)
330
- client.disconnect(forceConnectionClose)
331
- delete this.rpcClients[id]
332
- },
333
- /**
334
- * Add new client by AEPP connection
335
- * @function addRpcClient
336
- * @instance
337
- * @rtype (clientConnection: Object) => Object
338
- * @param {Object} clientConnection AEPP connection object
339
- * @return {String} Client ID
340
- */
341
- addRpcClient (clientConnection) {
342
- // @TODO detect if aepp has some history based on origin????
343
- // if yes use this instance for connection
344
- const id = uuid()
345
- this.rpcClients[id] = RpcClient({
346
- id,
347
- info: { status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST },
348
- connection: clientConnection,
349
- handlers: [handleMessage(this, id), this.onDisconnect]
350
- })
351
- return id
352
- },
353
- /**
354
- * Share wallet info
355
- * Send shareWalletInfo message to notify AEPP about wallet
356
- * @function shareWalletInfo
357
- * @instance
358
- * @rtype (postFn: Function) => void
359
- * @param {Function} postFn Send message function like `(msg) => void`
360
- * @return {void}
361
- */
362
- shareWalletInfo (postFn) {
363
- postFn({
364
- jsonrpc: '2.0',
365
- ...message(METHODS.readyToConnect, this.getWalletInfo())
366
- })
367
- },
368
- /**
369
- * Get Wallet info object
370
- * @function getWalletInfo
371
- * @instance
372
- * @rtype () => Object
373
- * @return {Object} Object with wallet information(id, name, network, ...)
374
- */
375
- getWalletInfo () {
376
- const runtime = getBrowserAPI(true).runtime
377
- return {
378
- id: runtime && runtime.id ? runtime.id : this.id,
379
- name: this.name,
380
- networkId: this.getNetworkId(),
381
- origin: window.location.origin,
382
- type: runtime && runtime.id ? WALLET_TYPE.extension : WALLET_TYPE.window
383
- }
384
- },
385
- /**
386
- * Get Wallet accounts
387
- * @function getAccounts
388
- * @instance
389
- * @rtype () => Object
390
- * @return {Object} Object with accounts information({ connected: Object, current: Object })
391
- */
392
- getAccounts () {
393
- return {
394
- current: this.selectedAddress ? { [this.selectedAddress]: {} } : {},
395
- connected: this.addresses()
396
- .filter(a => a !== this.selectedAddress)
397
- .reduce((acc, a) => ({ ...acc, [a]: {} }), {})
398
- }
399
- }
400
- }
401
- })
@@ -1,80 +0,0 @@
1
- export const VERSION = 1
2
-
3
- export const enum MESSAGE_DIRECTION {
4
- to_waellet = 'to_waellet',
5
- to_aepp = 'to_aepp'
6
- }
7
-
8
- export const enum WALLET_TYPE {
9
- window = 'window',
10
- extension = 'extension'
11
- }
12
-
13
- export const enum SUBSCRIPTION_TYPES {
14
- subscribe = 'subscribe',
15
- unsubscribe = 'unsubscribe'
16
- }
17
-
18
- export const enum METHODS {
19
- readyToConnect = 'connection.announcePresence',
20
- updateAddress = 'address.update',
21
- address = 'address.get',
22
- connect = 'connection.open',
23
- sign = 'transaction.sign',
24
- signMessage = 'message.sign',
25
- subscribeAddress = 'address.subscribe',
26
- updateNetwork = 'networkId.update',
27
- closeConnection = 'connection.close'
28
- }
29
-
30
- export const enum RPC_STATUS {
31
- CONNECTED = 'CONNECTED',
32
- NODE_BINDED = 'NODE_BINDED',
33
- DISCONNECTED = 'DISCONNECTED',
34
- CONNECTION_REJECTED = 'CONNECTION_REJECTED',
35
- WAITING_FOR_CONNECTION_APPROVE = 'WAITING_FOR_CONNECTION_APPROVE',
36
- WAITING_FOR_CONNECTION_REQUEST = 'WAITING_FOR_CONNECTION_REQUEST'
37
- }
38
-
39
- export const ERRORS = {
40
- broadcastFailed: (error = {}) => ({
41
- code: 3,
42
- data: error,
43
- message: 'Broadcast failed'
44
- }),
45
- invalidTransaction: (error = {}) => ({
46
- code: 2,
47
- data: error,
48
- message: 'Invalid transaction'
49
- }),
50
- rejectedByUser: (error = {}) => ({
51
- code: 4,
52
- data: error,
53
- message: 'Operation rejected by user'
54
- }),
55
- connectionDeny: (error = {}) => ({
56
- code: 9,
57
- data: error,
58
- message: 'Wallet deny your connection request'
59
- }),
60
- permissionDeny: (address: string) => ({
61
- code: 11,
62
- message: `You are not subscribed for account ${address}`
63
- }),
64
- internalError: (message: string) => ({
65
- code: 12,
66
- message
67
- }),
68
- notAuthorize: () => ({
69
- code: 10,
70
- message: 'You are not connected to the wallet'
71
- }),
72
- unsupportedProtocol: () => ({
73
- code: 5,
74
- message: 'Unsupported Protocol Version'
75
- }),
76
- unsupportedNetwork: () => ({
77
- code: 8,
78
- message: 'Unsupported Network'
79
- })
80
- }
@@ -1,92 +0,0 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
- /**
19
- * Wallet Detector
20
- *
21
- * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils}.
22
- * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector
23
- * @export WalletDetector
24
- */
25
- import stampit from '@stamp/it'
26
- import BrowserWindowMessageConnection from './connection/browser-window-message'
27
- import { MESSAGE_DIRECTION, METHODS } from './schema'
28
- import { UnsupportedPlatformError } from '../errors'
29
-
30
- /**
31
- * WalletDetector stamp
32
- * @function
33
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector
34
- * @rtype Stamp
35
- * @param {Object} params={} - Initializer object
36
- * @param {WalletConnection} params.connection - Connection for listening for wallets
37
- * @return {WalletDetector}
38
- */
39
- export default stampit({
40
- init ({ connection } = {}) {
41
- if (!window) throw new UnsupportedPlatformError('Window object not found, you can run wallet detector only in browser')
42
- this.connection = connection || BrowserWindowMessageConnection({ connectionInfo: { id: 'spy' } })
43
- this.wallets = {}
44
- },
45
- methods: {
46
- /**
47
- * Start scanning
48
- * @function scan
49
- * @instance
50
- * @param {Function} onDetected Call-back function which trigger on new wallet
51
- * @return {void}
52
- */
53
- scan (onDetected) {
54
- const { wallets } = this
55
- this.connection.connect(({ method, params }, origin, source) => {
56
- if (
57
- !method || !params ||
58
- method !== METHODS.readyToConnect || wallets[params.id]
59
- ) return
60
-
61
- const wallet = {
62
- ...params,
63
- async getConnection () {
64
- // if detect extension wallet or page wallet
65
- const isExtension = this.type === 'extension'
66
- const origin = isExtension ? window.origin : this.origin
67
- return BrowserWindowMessageConnection({
68
- connectionInfo: this,
69
- sendDirection: isExtension ? MESSAGE_DIRECTION.to_waellet : undefined,
70
- receiveDirection: isExtension ? MESSAGE_DIRECTION.to_aepp : undefined,
71
- target: source,
72
- origin
73
- })
74
- }
75
- }
76
- wallets[wallet.id] = wallet
77
- onDetected({ wallets, newWallet: wallet })
78
- })
79
- if (Object.keys(wallets).length) onDetected({ wallets })
80
- },
81
-
82
- /**
83
- * Stop scanning
84
- * @function stopScan
85
- * @instance
86
- * @return {void}
87
- */
88
- stopScan () {
89
- this.connection.disconnect()
90
- }
91
- }
92
- })
@@ -1,45 +0,0 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2022 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
- import stampit from '@stamp/it'
19
-
20
- function asyncInit (options = {}, { stamp, args, instance }) {
21
- return stamp.compose.deepConfiguration.AsyncInit.initializers.reduce(async (instance, init) => {
22
- instance = await Promise.resolve(instance)
23
- if (typeof init === 'function') {
24
- const ret = await Promise.resolve(init.call(instance, options, { stamp, args, instance }))
25
- return ret === undefined ? instance : ret
26
- }
27
- return instance
28
- }, instance)
29
- }
30
-
31
- export default stampit({
32
- deepConf: { AsyncInit: { initializers: [] } },
33
- composers ({ stamp, composables }) {
34
- const conf = stamp.compose.deepConfiguration.AsyncInit
35
- conf.initializers = composables
36
- .map(c =>
37
- c?.compose?.deepConfiguration?.AsyncInit?.initializers ||
38
- (c.compose || c).initializers ||
39
- [])
40
- .flat(Infinity)
41
- .filter((f, idx, arr) => !arr.slice(0, idx).includes(f))
42
- .filter(f => f !== asyncInit)
43
- stamp.compose.initializers = [asyncInit]
44
- }
45
- })