@aeternity/aepp-sdk 11.0.1 → 12.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) 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 +0 -22
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +2 -1
  6. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +20765 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +70 -0
  14. package/es/AeSdkAepp.mjs +176 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +213 -0
  17. package/es/AeSdkBase.mjs +314 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +104 -0
  20. package/es/AeSdkWallet.mjs +326 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +41 -0
  23. package/es/Node.mjs +147 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +68 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +26 -0
  29. package/es/account/Memory.mjs +103 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +80 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +222 -0
  35. package/es/aens.mjs +338 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +105 -46
  56. package/es/aepp-wallet-communication/schema.mjs +251 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +62 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1065 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4166 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +248 -0
  92. package/es/chain.mjs +560 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/handlers.mjs +164 -131
  96. package/es/channel/handlers.mjs.map +1 -1
  97. package/es/channel/index.d.ts +625 -0
  98. package/es/channel/index.mjs +897 -902
  99. package/es/channel/index.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +101 -0
  101. package/es/channel/internal.mjs +136 -85
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Compiler.d.ts +18 -0
  104. package/es/contract/Compiler.mjs +68 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +127 -0
  107. package/es/contract/aci.mjs +225 -193
  108. package/es/contract/aci.mjs.map +1 -1
  109. package/es/contract/ga.d.ts +69 -0
  110. package/es/contract/ga.mjs +195 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +71 -0
  113. package/es/contract/methods.mjs +104 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/deprecated/index.d.ts +143 -0
  116. package/es/deprecated/index.mjs +162 -0
  117. package/es/deprecated/index.mjs.map +1 -0
  118. package/es/deprecated/methods.d.ts +18 -0
  119. package/es/deprecated/methods.mjs +26 -0
  120. package/es/deprecated/methods.mjs.map +1 -0
  121. package/es/index.d.ts +35 -0
  122. package/es/index.mjs +35 -40
  123. package/es/index.mjs.map +1 -1
  124. package/es/oracle.d.ts +161 -0
  125. package/es/oracle.mjs +306 -0
  126. package/es/oracle.mjs.map +1 -0
  127. package/es/spend.d.ts +62 -0
  128. package/es/spend.mjs +111 -0
  129. package/es/spend.mjs.map +1 -0
  130. package/es/tx/builder/address.d.ts +25 -0
  131. package/es/tx/builder/address.mjs +45 -0
  132. package/es/tx/builder/address.mjs.map +1 -0
  133. package/es/tx/builder/constants.d.ts +70 -0
  134. package/es/tx/builder/constants.mjs +61 -47
  135. package/es/tx/builder/constants.mjs.map +1 -1
  136. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  137. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  138. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  139. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  140. package/es/tx/builder/field-types/deposit.mjs +19 -0
  141. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  142. package/es/tx/builder/field-types/fee.d.ts +25 -0
  143. package/es/tx/builder/field-types/fee.mjs +150 -0
  144. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  145. package/es/tx/builder/field-types/field.d.ts +6 -0
  146. package/es/tx/builder/field-types/field.mjs +15 -0
  147. package/es/tx/builder/field-types/field.mjs.map +1 -0
  148. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  149. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  150. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  151. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  152. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  153. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  154. package/es/tx/builder/field-types/index.d.ts +70 -0
  155. package/es/tx/builder/field-types/index.mjs +25 -0
  156. package/es/tx/builder/field-types/index.mjs.map +1 -0
  157. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  158. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  159. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  160. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  161. package/es/tx/builder/field-types/name-id.mjs +19 -0
  162. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  163. package/es/tx/builder/field-types/name.d.ts +13 -0
  164. package/es/tx/builder/field-types/name.mjs +18 -0
  165. package/es/tx/builder/field-types/name.mjs.map +1 -0
  166. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  167. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  168. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  169. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  170. package/es/tx/builder/field-types/u-int.mjs +14 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  172. package/es/tx/builder/helpers.d.ts +125 -0
  173. package/es/tx/builder/helpers.mjs +94 -198
  174. package/es/tx/builder/helpers.mjs.map +1 -1
  175. package/es/tx/builder/index.d.ts +88 -0
  176. package/es/tx/builder/index.mjs +167 -358
  177. package/es/tx/builder/index.mjs.map +1 -1
  178. package/es/tx/builder/schema.d.ts +1201 -0
  179. package/es/tx/builder/schema.mjs +175 -561
  180. package/es/tx/builder/schema.mjs.map +1 -1
  181. package/es/tx/index.d.ts +64 -0
  182. package/es/tx/index.mjs +151 -265
  183. package/es/tx/index.mjs.map +1 -1
  184. package/es/tx/validator.d.ts +20 -0
  185. package/es/tx/validator.mjs +104 -124
  186. package/es/tx/validator.mjs.map +1 -1
  187. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  188. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  189. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  190. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  191. package/es/typings/bip32-path/index.d.mjs +2 -0
  192. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  193. package/es/typings/blakejs/index.d.mjs.map +1 -1
  194. package/es/typings/sha-js/index.d.mjs +2 -0
  195. package/es/typings/sha-js/index.d.mjs.map +1 -0
  196. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  197. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  198. package/es/utils/amount-formatter.d.ts +42 -0
  199. package/es/utils/amount-formatter.mjs +36 -49
  200. package/es/utils/amount-formatter.mjs.map +1 -1
  201. package/es/utils/autorest.d.ts +6 -0
  202. package/es/utils/autorest.mjs +97 -0
  203. package/es/utils/autorest.mjs.map +1 -0
  204. package/es/utils/bignumber.d.ts +13 -0
  205. package/es/utils/bignumber.mjs +11 -8
  206. package/es/utils/bignumber.mjs.map +1 -1
  207. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  208. package/es/utils/bytes.mjs +11 -15
  209. package/es/utils/bytes.mjs.map +1 -1
  210. package/es/utils/crypto.d.ts +88 -0
  211. package/es/utils/crypto.mjs +64 -98
  212. package/es/utils/crypto.mjs.map +1 -1
  213. package/es/utils/encoder-types.d.ts +61 -0
  214. package/es/utils/encoder-types.mjs +36 -0
  215. package/es/utils/encoder-types.mjs.map +1 -0
  216. package/es/utils/encoder.d.ts +25 -0
  217. package/es/utils/encoder.mjs +71 -59
  218. package/es/utils/encoder.mjs.map +1 -1
  219. package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
  220. package/es/utils/errors.mjs +313 -136
  221. package/es/utils/errors.mjs.map +1 -1
  222. package/es/utils/hd-wallet.d.ts +50 -0
  223. package/es/utils/hd-wallet.mjs +86 -45
  224. package/es/utils/hd-wallet.mjs.map +1 -1
  225. package/es/utils/json-big.d.ts +5 -0
  226. package/es/utils/json-big.mjs +12 -16
  227. package/es/utils/json-big.mjs.map +1 -1
  228. package/es/utils/keystore.d.ts +51 -0
  229. package/es/utils/keystore.mjs +101 -194
  230. package/es/utils/keystore.mjs.map +1 -1
  231. package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
  232. package/es/utils/mptree.mjs +22 -18
  233. package/es/utils/mptree.mjs.map +1 -1
  234. package/es/utils/other.d.ts +20 -0
  235. package/es/utils/other.mjs +32 -35
  236. package/es/utils/other.mjs.map +1 -1
  237. package/es/utils/semver-satisfies.d.ts +1 -0
  238. package/es/utils/semver-satisfies.mjs +2 -2
  239. package/es/utils/semver-satisfies.mjs.map +1 -1
  240. package/es/utils/string.d.ts +24 -0
  241. package/es/utils/string.mjs +8 -10
  242. package/es/utils/string.mjs.map +1 -1
  243. package/package.json +55 -43
  244. package/src/AeSdk.ts +68 -0
  245. package/src/AeSdkAepp.ts +176 -0
  246. package/src/AeSdkBase.ts +338 -0
  247. package/src/AeSdkWallet.ts +348 -0
  248. package/src/Node.ts +173 -0
  249. package/src/account/Base.ts +124 -0
  250. package/src/account/Memory.ts +98 -0
  251. package/src/account/Rpc.ts +69 -0
  252. package/src/aens.ts +407 -0
  253. package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
  254. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
  255. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
  256. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
  257. package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
  258. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  259. package/src/aepp-wallet-communication/schema.ts +224 -0
  260. package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
  261. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  262. package/src/apis/compiler/compiler.ts +585 -0
  263. package/src/apis/compiler/index.ts +2 -0
  264. package/src/apis/compiler/models/index.ts +301 -0
  265. package/src/apis/compiler/models/mappers.ts +583 -0
  266. package/src/apis/compiler/models/parameters.ts +93 -0
  267. package/src/apis/node/code-model-v4.yaml +10080 -0
  268. package/src/apis/node/index.ts +2 -0
  269. package/src/apis/node/models/index.ts +1257 -0
  270. package/src/apis/node/models/mappers.ts +4280 -0
  271. package/src/apis/node/models/parameters.ts +188 -0
  272. package/src/apis/node/node.ts +1299 -0
  273. package/src/chain.ts +502 -0
  274. package/src/channel/handlers.ts +817 -0
  275. package/src/channel/index.ts +1025 -0
  276. package/src/channel/internal.ts +361 -0
  277. package/src/contract/Compiler.ts +67 -0
  278. package/src/contract/aci.ts +538 -0
  279. package/src/contract/ga.ts +199 -0
  280. package/src/contract/methods.ts +123 -0
  281. package/src/deprecated/index.ts +172 -0
  282. package/src/deprecated/methods.ts +25 -0
  283. package/src/index.ts +56 -0
  284. package/src/oracle.ts +364 -0
  285. package/src/spend.ts +164 -0
  286. package/src/tx/builder/address.ts +50 -0
  287. package/src/tx/builder/constants.ts +126 -0
  288. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  289. package/src/tx/builder/field-types/deposit.ts +21 -0
  290. package/src/tx/builder/field-types/fee.ts +143 -0
  291. package/src/tx/builder/field-types/field.ts +9 -0
  292. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  293. package/src/tx/builder/field-types/gas-price.ts +16 -0
  294. package/src/tx/builder/field-types/index.ts +45 -0
  295. package/src/tx/builder/field-types/name-fee.ts +32 -0
  296. package/src/tx/builder/field-types/name-id.ts +20 -0
  297. package/src/tx/builder/field-types/name.ts +18 -0
  298. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  299. package/src/tx/builder/field-types/u-int.ts +16 -0
  300. package/src/tx/builder/helpers.ts +248 -0
  301. package/src/tx/builder/index.ts +400 -0
  302. package/src/tx/builder/schema.ts +727 -0
  303. package/src/tx/index.ts +192 -0
  304. package/src/tx/validator.ts +230 -0
  305. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  306. package/src/typings/@aeternity__uuid/index.d.ts +5 -0
  307. package/src/typings/bip32-path/index.d.ts +33 -0
  308. package/src/typings/blakejs/index.d.ts +4 -32
  309. package/src/typings/sha-js/index.d.ts +5 -0
  310. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  311. package/src/utils/amount-formatter.ts +56 -69
  312. package/src/utils/autorest.ts +93 -0
  313. package/src/utils/bignumber.ts +11 -12
  314. package/src/utils/bytes.ts +29 -31
  315. package/src/utils/crypto.ts +205 -0
  316. package/src/utils/encoder-types.ts +63 -0
  317. package/src/utils/encoder.ts +116 -71
  318. package/src/utils/errors.ts +482 -366
  319. package/src/utils/hd-wallet.ts +166 -0
  320. package/src/utils/json-big.ts +27 -0
  321. package/src/utils/keystore.ts +182 -0
  322. package/src/utils/mptree.ts +64 -61
  323. package/src/utils/other.ts +34 -41
  324. package/src/utils/semver-satisfies.ts +15 -11
  325. package/src/utils/string.ts +18 -20
  326. package/es/account/base.mjs +0 -179
  327. package/es/account/base.mjs.map +0 -1
  328. package/es/account/memory.mjs +0 -99
  329. package/es/account/memory.mjs.map +0 -1
  330. package/es/account/multiple.mjs +0 -179
  331. package/es/account/multiple.mjs.map +0 -1
  332. package/es/ae/aens.mjs +0 -404
  333. package/es/ae/aens.mjs.map +0 -1
  334. package/es/ae/aepp.mjs +0 -45
  335. package/es/ae/aepp.mjs.map +0 -1
  336. package/es/ae/contract.mjs +0 -159
  337. package/es/ae/contract.mjs.map +0 -1
  338. package/es/ae/index.mjs +0 -207
  339. package/es/ae/index.mjs.map +0 -1
  340. package/es/ae/oracle.mjs +0 -339
  341. package/es/ae/oracle.mjs.map +0 -1
  342. package/es/ae/universal.mjs +0 -45
  343. package/es/ae/universal.mjs.map +0 -1
  344. package/es/ae/wallet.mjs +0 -50
  345. package/es/ae/wallet.mjs.map +0 -1
  346. package/es/amount-formatter.d.ts +0 -58
  347. package/es/bignumber.d.ts +0 -18
  348. package/es/chain/index.mjs +0 -272
  349. package/es/chain/index.mjs.map +0 -1
  350. package/es/chain/node.mjs +0 -442
  351. package/es/chain/node.mjs.map +0 -1
  352. package/es/contract/compiler.mjs +0 -115
  353. package/es/contract/compiler.mjs.map +0 -1
  354. package/es/contract/ga/helpers.mjs +0 -30
  355. package/es/contract/ga/helpers.mjs.map +0 -1
  356. package/es/contract/ga/index.mjs +0 -178
  357. package/es/contract/ga/index.mjs.map +0 -1
  358. package/es/crypto-ts.d.ts +0 -9
  359. package/es/encoder.d.ts +0 -26
  360. package/es/node-pool/index.mjs +0 -188
  361. package/es/node-pool/index.mjs.map +0 -1
  362. package/es/node.mjs +0 -133
  363. package/es/node.mjs.map +0 -1
  364. package/es/other.d.ts +0 -31
  365. package/es/semver-satisfies.d.ts +0 -1
  366. package/es/string.d.ts +0 -26
  367. package/es/tx/builder/field-types.mjs +0 -74
  368. package/es/tx/builder/field-types.mjs.map +0 -1
  369. package/es/tx/tx-object.mjs +0 -283
  370. package/es/tx/tx-object.mjs.map +0 -1
  371. package/es/tx/tx.mjs +0 -938
  372. package/es/tx/tx.mjs.map +0 -1
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  374. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  376. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  378. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  380. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  381. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  382. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  384. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  386. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  388. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  389. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  390. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  392. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  393. package/es/utils/async-init.mjs +0 -64
  394. package/es/utils/async-init.mjs.map +0 -1
  395. package/es/utils/crypto-ts.mjs.map +0 -1
  396. package/es/utils/swagger.mjs +0 -164
  397. package/es/utils/swagger.mjs.map +0 -1
  398. package/src/account/base.js +0 -153
  399. package/src/account/memory.js +0 -83
  400. package/src/account/multiple.js +0 -162
  401. package/src/ae/aens.js +0 -361
  402. package/src/ae/aepp.js +0 -45
  403. package/src/ae/contract.js +0 -148
  404. package/src/ae/index.js +0 -168
  405. package/src/ae/oracle.js +0 -311
  406. package/src/ae/universal.js +0 -47
  407. package/src/ae/wallet.js +0 -50
  408. package/src/chain/index.js +0 -269
  409. package/src/chain/node.js +0 -320
  410. package/src/channel/handlers.js +0 -673
  411. package/src/channel/index.js +0 -903
  412. package/src/channel/internal.js +0 -236
  413. package/src/contract/aci.js +0 -376
  414. package/src/contract/compiler.js +0 -100
  415. package/src/contract/ga/helpers.js +0 -19
  416. package/src/contract/ga/index.js +0 -150
  417. package/src/index.js +0 -89
  418. package/src/node-pool/index.js +0 -172
  419. package/src/node.js +0 -116
  420. package/src/tx/builder/constants.js +0 -100
  421. package/src/tx/builder/field-types.js +0 -61
  422. package/src/tx/builder/helpers.js +0 -334
  423. package/src/tx/builder/index.js +0 -465
  424. package/src/tx/builder/schema.js +0 -1100
  425. package/src/tx/index.js +0 -301
  426. package/src/tx/tx-object.js +0 -187
  427. package/src/tx/tx.js +0 -631
  428. package/src/tx/validator.js +0 -181
  429. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  430. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  431. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  432. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  433. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  434. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  435. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  436. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  437. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  438. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  439. package/src/utils/async-init.js +0 -45
  440. package/src/utils/crypto.js +0 -219
  441. package/src/utils/hd-wallet.js +0 -100
  442. package/src/utils/json-big.js +0 -26
  443. package/src/utils/keystore.js +0 -219
  444. package/src/utils/swagger.js +0 -156
package/src/aens.ts ADDED
@@ -0,0 +1,407 @@
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
+ /**
19
+ * Aens methods - routines to interact with the æternity naming system
20
+ *
21
+ * The high-level description of the naming system is
22
+ * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol
23
+ * repository.
24
+ */
25
+
26
+ import BigNumber from 'bignumber.js';
27
+ import { genSalt } from './utils/crypto';
28
+ import { commitmentHash, isAuctionName } from './tx/builder/helpers';
29
+ import {
30
+ CLIENT_TTL, NAME_TTL, Tag, AensName,
31
+ } from './tx/builder/constants';
32
+ import { ArgumentError } from './utils/errors';
33
+ import { Encoded } from './utils/encoder';
34
+ import { send, SendOptions } from './spend';
35
+ import { getName, getHeight } from './chain';
36
+ import { _buildTx, BuildTxOptions } from './tx';
37
+ import { TransformNodeType } from './Node';
38
+ import { NameEntry, NamePointer } from './apis/node';
39
+ import AccountBase from './account/Base';
40
+
41
+ interface KeyPointers {
42
+ [key: string]: string | Buffer;
43
+ }
44
+
45
+ /**
46
+ * Revoke a name
47
+ * @category AENS
48
+ * @param name - Name hash
49
+ * @param options - Options
50
+ * @param options.onAccount - Make operation on specific account from sdk (you pass
51
+ * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)
52
+ * @param options.fee - fee
53
+ * @param options.ttl - ttl
54
+ * @param options.nonce - nonce
55
+ * @returns Transaction result
56
+ * @example
57
+ * ```js
58
+ * const name = 'test.chain'
59
+ * const nameObject = await sdkInstance.aensQuery(name)
60
+ *
61
+ * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })
62
+ * // or
63
+ * await nameObject.revoke({ fee, ttl, nonce })
64
+ * ```
65
+ */
66
+ export async function aensRevoke(
67
+ name: AensName,
68
+ options: AensRevokeOptions,
69
+ ): ReturnType<typeof send> {
70
+ const nameRevokeTx = await _buildTx(Tag.NameRevokeTx, {
71
+ ...options,
72
+ nameId: name,
73
+ accountId: await options.onAccount.address(options),
74
+ });
75
+ return send(nameRevokeTx, options);
76
+ }
77
+
78
+ interface AensRevokeOptions extends
79
+ BuildTxOptions<Tag.NameRevokeTx, 'nameId' | 'accountId'>,
80
+ SendOptions {}
81
+
82
+ /**
83
+ * Update a name
84
+ * @category AENS
85
+ * @param name - AENS name
86
+ * @param pointers - Map of pointer keys to corresponding addresses
87
+ * @param options - Options
88
+ * @param options.extendPointers - Get the pointers from the node and merge with provided
89
+ * ones. Pointers with the same type will be overwritten
90
+ * @param options.onAccount - Make operation on specific account from sdk (you
91
+ * pass publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)
92
+ * @param options.fee - fee
93
+ * @param options.ttl - ttl
94
+ * @param options.nonce - nonce
95
+ * @param options.nameTtl - Name ttl represented in number of
96
+ * blocks (Max value is 50000 blocks)
97
+ * @param options.clientTtl=84600 a suggestion as to how long any
98
+ * clients should cache this information
99
+ * @throws Invalid pointer array error
100
+ * @example
101
+ * ```js
102
+ * const name = 'test.chain'
103
+ * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']
104
+ * const nameObject = await sdkInstance.aensQuery(name)
105
+ *
106
+ * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })
107
+ * // or
108
+ * await nameObject.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })
109
+ * ```
110
+ */
111
+ export async function aensUpdate(
112
+ name: AensName,
113
+ pointers: KeyPointers,
114
+ { extendPointers, ...options }: AensUpdateOptions,
115
+ ): ReturnType<typeof send> {
116
+ const allPointers = {
117
+ ...extendPointers === true && Object.fromEntries(
118
+ (await getName(name, options)).pointers
119
+ .map(({ key, id }: { key: string; id: string }) => [key, id]),
120
+ ),
121
+ ...pointers,
122
+ };
123
+
124
+ const nameUpdateTx = await _buildTx(Tag.NameUpdateTx, {
125
+ clientTtl: CLIENT_TTL,
126
+ nameTtl: NAME_TTL,
127
+ ...options,
128
+ nameId: name,
129
+ accountId: await options.onAccount.address(options),
130
+ pointers: Object.entries(allPointers).map(([key, id]) => ({ key, id: id.toString() })),
131
+ });
132
+
133
+ return send(nameUpdateTx, options);
134
+ }
135
+
136
+ interface AensUpdateOptions extends
137
+ BuildTxOptions<Tag.NameUpdateTx, 'nameId' | 'accountId' | 'pointers' | 'clientTtl' | 'nameTtl'>,
138
+ SendOptions {
139
+ extendPointers?: boolean;
140
+ clientTtl?: number;
141
+ nameTtl?: number;
142
+ }
143
+
144
+ /**
145
+ * Transfer a domain to another account
146
+ * @category AENS
147
+ * @param name - AENS name
148
+ * @param account - Recipient account publick key
149
+ * @param options - Options
150
+ * @param options.onAccount - Make operation on specific account from sdk (you pass
151
+ * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)
152
+ * @param options.fee - fee
153
+ * @param options.ttl - ttl
154
+ * @param options.nonce - nonce
155
+ * @returns Transaction result
156
+ * @example
157
+ * ```js
158
+ * const name = 'test.chain'
159
+ * const recipientPub = 'ak_asd23dasdas...'
160
+ * const nameObject = await sdkInstance.aensQuery(name)
161
+ *
162
+ * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })
163
+ * // or
164
+ * await nameObject.transfer(recipientPub, { ttl, fee, nonce })
165
+ * ```
166
+ */
167
+ export async function aensTransfer(
168
+ name: AensName,
169
+ account: Encoded.AccountAddress,
170
+ options: AensTransferOptions,
171
+ ): ReturnType<typeof send> {
172
+ const nameTransferTx = await _buildTx(Tag.NameTransferTx, {
173
+ ...options,
174
+ nameId: name,
175
+ accountId: await options.onAccount.address(options),
176
+ recipientId: account,
177
+ });
178
+
179
+ return send(nameTransferTx, options);
180
+ }
181
+
182
+ interface AensTransferOptions extends
183
+ BuildTxOptions<Tag.NameTransferTx, 'nameId' | 'accountId' | 'recipientId'>,
184
+ SendOptions {}
185
+
186
+ /**
187
+ * Query the AENS name info from the node
188
+ * and return the object with info and predefined functions for manipulating name
189
+ * @category AENS
190
+ * @param name - AENS name
191
+ * @param opt - Options
192
+ * @returns
193
+ * @example
194
+ * ```js
195
+ * const nameObject = sdkInstance.aensQuery('test.chain')
196
+ * console.log(nameObject)
197
+ * {
198
+ * id, // name hash
199
+ * pointers, // array of pointers
200
+ * update, // Update name function
201
+ * extendTtl, // Extend Ttl name function
202
+ * transfer, // Transfer name function
203
+ * revoke // Revoke name function
204
+ * }
205
+ * ```
206
+ */
207
+ export async function aensQuery(
208
+ name: AensName,
209
+ opt: Parameters<typeof getName>[1] & Parameters<typeof aensUpdate>[2]
210
+ & Parameters<typeof aensTransfer>[2],
211
+ ): Promise<Readonly<
212
+ TransformNodeType<NameEntry> & {
213
+ id: Encoded.Name;
214
+ owner: Encoded.AccountAddress;
215
+ pointers: KeyPointers | NamePointer[];
216
+ ttl: number;
217
+ update: (
218
+ pointers: KeyPointers,
219
+ options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {
220
+ onAccount?: AccountBase;
221
+ }
222
+ ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;
223
+ transfer: (
224
+ account: Encoded.AccountAddress,
225
+ options?: Parameters<typeof aensQuery>[1]
226
+ ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;
227
+ revoke: (options?: Omit<Parameters<typeof aensRevoke>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {
228
+ onAccount?: AccountBase;
229
+ }
230
+ ) => ReturnType<typeof aensRevoke>;
231
+ extendTtl: (
232
+ nameTtl: number,
233
+ options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'>
234
+ ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;
235
+ }
236
+ >> {
237
+ const nameEntry = await getName(name, opt);
238
+ return Object.freeze({
239
+ ...nameEntry,
240
+ id: nameEntry.id as Encoded.Name,
241
+ owner: nameEntry.owner as Encoded.AccountAddress,
242
+ async update(pointers, options) {
243
+ return {
244
+ ...await aensUpdate(name, pointers, { ...opt, ...options }),
245
+ ...await aensQuery(name, { ...opt, ...options }),
246
+ };
247
+ },
248
+ async transfer(account, options) {
249
+ return {
250
+ ...await aensTransfer(name, account, { ...opt, ...options }),
251
+ ...await aensQuery(name, { ...opt, ...options }),
252
+ };
253
+ },
254
+ async revoke(options) {
255
+ return aensRevoke(name, { ...opt, ...options });
256
+ },
257
+ async extendTtl(nameTtl = NAME_TTL, options = {}) {
258
+ if (nameTtl > NAME_TTL || nameTtl <= 0) {
259
+ throw new ArgumentError('nameTtl', `a number between 1 and ${NAME_TTL} blocks`, nameTtl);
260
+ }
261
+
262
+ return {
263
+ ...await aensUpdate(name, {}, {
264
+ ...opt, ...options, nameTtl, extendPointers: true,
265
+ }),
266
+ ...await aensQuery(name, { ...opt, ...options }),
267
+ };
268
+ },
269
+ });
270
+ }
271
+
272
+ /**
273
+ * Claim a previously preclaimed registration. This can only be done after the
274
+ * preclaim step
275
+ * @category AENS
276
+ * @param name - AENS name
277
+ * @param salt - Salt from pre-claim, or 0 if it's a bid
278
+ * @param options - options
279
+ * @param options.onAccount - Make operation on specific account from sdk (you pass
280
+ * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)
281
+ * @param options.fee - fee
282
+ * @param options.ttl - ttl
283
+ * @param options.nonce - nonce
284
+ * @param options.nameFee - Name Fee (By default calculated by sdk)
285
+ * @returns the result of the claim
286
+ * @example
287
+ * ```js
288
+ * const name = 'test.chain'
289
+ * const salt = preclaimResult.salt // salt from pre-claim transaction
290
+ *
291
+ * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })
292
+ * ```
293
+ */
294
+ export async function aensClaim(
295
+ name: AensName,
296
+ salt: number,
297
+ options: AensClaimOptions,
298
+ ): Promise<AensClaimReturnType> {
299
+ const claimTx = await _buildTx(Tag.NameClaimTx, {
300
+ ...options,
301
+ accountId: await options.onAccount.address(options),
302
+ nameSalt: salt,
303
+ name,
304
+ });
305
+
306
+ const result = await send(claimTx, options);
307
+ if (!isAuctionName(name)) {
308
+ const nameInter = result.blockHeight != null && result.blockHeight > 0
309
+ ? await aensQuery(name, options)
310
+ : {};
311
+ return Object.assign(result, nameInter);
312
+ }
313
+ return result;
314
+ }
315
+
316
+ type AensClaimOptionsType = BuildTxOptions<Tag.NameClaimTx, 'accountId' | 'nameSalt' | 'name'>
317
+ & SendOptions & Parameters<typeof aensQuery>[1];
318
+ interface AensClaimOptions extends AensClaimOptionsType {}
319
+ interface AensClaimReturnType extends
320
+ Awaited<ReturnType<typeof send>>,
321
+ Partial<Awaited<ReturnType<typeof aensQuery>>> {}
322
+
323
+ /**
324
+ * Preclaim a name. Sends a hash of the name and a random salt to the node
325
+ * @category AENS
326
+ * @param name - AENS name
327
+ * @param options - Options
328
+ * @param options.onAccount - Make operation on specific account from sdk (you pass
329
+ * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)
330
+ * @param options.fee - fee
331
+ * @param options.ttl - ttl
332
+ * @param options.nonce - nonce
333
+ * @example
334
+ * ```js
335
+ * const name = 'test.chain'
336
+ * const salt = preclaimResult.salt // salt from pre-claim transaction
337
+ *
338
+ * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })
339
+ * {
340
+ * ...transactionResult,
341
+ * claim, // Claim function (options={}) => claimTransactionResult
342
+ * salt,
343
+ * commitmentId
344
+ * }
345
+ * ```
346
+ */
347
+ export async function aensPreclaim(name: AensName, options: AensPreclaimOptions): Promise<Readonly<
348
+ Awaited<ReturnType<typeof send>> & {
349
+ height: number;
350
+ salt: number;
351
+ commitmentId: string;
352
+ claim: (opts?: Parameters<typeof aensClaim>[2]) => ReturnType<typeof aensClaim>;
353
+ }
354
+ >> {
355
+ const salt = genSalt();
356
+ const height = await getHeight(options);
357
+ const commitmentId = commitmentHash(name, salt);
358
+
359
+ const preclaimTx = await _buildTx(Tag.NamePreclaimTx, {
360
+ ...options,
361
+ accountId: await options.onAccount.address(options),
362
+ commitmentId,
363
+ });
364
+
365
+ return Object.freeze({
366
+ ...await send(preclaimTx, options),
367
+ height,
368
+ salt,
369
+ commitmentId,
370
+ async claim(opts?: Parameters<typeof aensClaim>[2]) {
371
+ return aensClaim(name, salt, { ...options, ...opts });
372
+ },
373
+ });
374
+ }
375
+
376
+ interface AensPreclaimOptions extends
377
+ BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>,
378
+ SendOptions,
379
+ AensClaimOptions {}
380
+
381
+ /**
382
+ * Bid to name auction
383
+ * @category AENS
384
+ * @param name - Domain name
385
+ * @param nameFee - Name fee (bid fee)
386
+ * @param options - Options
387
+ * @param options.onAccount - Make operation on specific account from sdk (you pass
388
+ * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)
389
+ * @param options.fee - fee
390
+ * @param options.ttl - ttl
391
+ * @param options.nonce - nonce
392
+ * @returns Transaction result
393
+ * @example
394
+ * ```js
395
+ * const name = 'test.chain'
396
+ * const bidFee = computeBidFee(name, startFee, incrementPercentage)
397
+ *
398
+ * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })
399
+ * ```
400
+ */
401
+ export async function aensBid(
402
+ name: AensName,
403
+ nameFee: number | string | BigNumber,
404
+ options: Omit<Parameters<typeof aensClaim>[2], 'nameFee'>,
405
+ ): ReturnType<typeof aensClaim> {
406
+ return aensClaim(name, 0, { ...options, nameFee });
407
+ }
@@ -0,0 +1,71 @@
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 { AlreadyConnectedError, NoWalletConnectedError } from '../../utils/errors';
19
+
20
+ /**
21
+ * Browser connection base interface
22
+ * @category aepp wallet communication
23
+ */
24
+ export default abstract class BrowserConnection {
25
+ debug: boolean;
26
+
27
+ protected constructor({ debug = false }: { debug?: boolean }) {
28
+ this.debug = debug;
29
+ }
30
+
31
+ /**
32
+ * Connect
33
+ * @param onMessage - Message handler
34
+ * @param onDisconnect - trigger when runtime connection in closed
35
+ */
36
+ connect(
37
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
+ onMessage: (message: any, origin: string, source: any) => void,
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ onDisconnect: () => void,
41
+ ): void {
42
+ if (this.isConnected()) throw new AlreadyConnectedError('You already connected');
43
+ }
44
+
45
+ /**
46
+ * Disconnect
47
+ */
48
+ disconnect(): void {
49
+ if (!this.isConnected()) throw new NoWalletConnectedError('You dont have connection. Please connect before');
50
+ }
51
+
52
+ /**
53
+ * Receive message
54
+ */
55
+ protected receiveMessage(message: any): void {
56
+ if (this.debug) console.log('Receive message:', message);
57
+ }
58
+
59
+ /**
60
+ * Send message
61
+ */
62
+ sendMessage(message: any): void {
63
+ if (this.debug) console.log('Send message:', message);
64
+ }
65
+
66
+ /**
67
+ * Check if connected
68
+ * @returns Is connected
69
+ */
70
+ abstract isConnected(): boolean;
71
+ }
@@ -0,0 +1,59 @@
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 { Runtime } from 'webextension-polyfill';
19
+ import BrowserConnection from './Browser';
20
+
21
+ /**
22
+ * BrowserRuntimeConnection
23
+ * Handle browser runtime communication
24
+ * @category aepp wallet communication
25
+ */
26
+ export default class BrowserRuntimeConnection extends BrowserConnection {
27
+ port: Runtime.Port;
28
+
29
+ constructor({ port, ...options }: { port: Runtime.Port; debug: boolean }) {
30
+ super(options);
31
+ this.port = port;
32
+ }
33
+
34
+ disconnect(): void {
35
+ super.disconnect();
36
+ this.port.disconnect();
37
+ }
38
+
39
+ connect(
40
+ onMessage: (message: any, origin: string, source: Runtime.Port) => void,
41
+ onDisconnect: () => void,
42
+ ): void {
43
+ super.connect(onMessage, onDisconnect);
44
+ this.port.onMessage.addListener((message, port) => {
45
+ this.receiveMessage(message);
46
+ onMessage(message, port.name, port);
47
+ });
48
+ this.port.onDisconnect.addListener(onDisconnect);
49
+ }
50
+
51
+ sendMessage(message: any): void {
52
+ super.sendMessage(message);
53
+ this.port.postMessage(message);
54
+ }
55
+
56
+ isConnected(): boolean {
57
+ return this.port.onMessage.hasListeners();
58
+ }
59
+ }
@@ -0,0 +1,122 @@
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 BrowserConnection from './Browser';
19
+ import { MESSAGE_DIRECTION } from '../schema';
20
+ import { InternalError, RpcConnectionError } from '../../utils/errors';
21
+
22
+ export type ImplPostMessage = Pick<Window, 'addEventListener' | 'removeEventListener' | 'postMessage'>;
23
+
24
+ /**
25
+ * Browser window Post Message connector module
26
+ * @category aepp wallet communication
27
+ */
28
+ export default class BrowserWindowMessageConnection extends BrowserConnection {
29
+ origin?: string;
30
+
31
+ sendDirection?: MESSAGE_DIRECTION;
32
+
33
+ receiveDirection: MESSAGE_DIRECTION;
34
+
35
+ listener?: (this: Window, ev: MessageEvent<any>) => void;
36
+
37
+ #onDisconnect?: () => void;
38
+
39
+ #target?: ImplPostMessage;
40
+
41
+ #self: ImplPostMessage;
42
+
43
+ /**
44
+ * @param options - Options
45
+ * @param options.target Target window for message
46
+ * @param options.self Host window for message
47
+ * @param options.origin Origin of receiver
48
+ * @param options.sendDirection Wrapping messages into additional struct
49
+ * `({ type: 'to_aepp' || 'to_waellet', data })`
50
+ * Used for handling messages between content script and page
51
+ * @param options.receiveDirection Unwrapping messages from additional struct
52
+ */
53
+ constructor({
54
+ target,
55
+ self = window,
56
+ origin,
57
+ sendDirection,
58
+ receiveDirection = MESSAGE_DIRECTION.to_aepp,
59
+ ...options
60
+ }: {
61
+ target?: ImplPostMessage;
62
+ self?: ImplPostMessage;
63
+ origin?: string;
64
+ sendDirection?: MESSAGE_DIRECTION;
65
+ receiveDirection?: MESSAGE_DIRECTION;
66
+ debug?: boolean;
67
+ } = {}) {
68
+ super(options);
69
+ this.#target = target;
70
+ this.#self = self;
71
+ this.origin = origin;
72
+ this.sendDirection = sendDirection;
73
+ this.receiveDirection = receiveDirection;
74
+ }
75
+
76
+ isConnected(): boolean {
77
+ return this.listener != null;
78
+ }
79
+
80
+ connect(
81
+ onMessage: (message: any, origin: string, source: MessageEventSource | null) => void,
82
+ onDisconnect: () => void,
83
+ ): void {
84
+ super.connect(onMessage, onDisconnect);
85
+ this.listener = (message: MessageEvent<any>) => {
86
+ // TODO: strict validate origin and source instead of checking message structure
87
+ if (
88
+ typeof message.data !== 'object'
89
+ || (message.data.jsonrpc ?? message.data.data?.jsonrpc) !== '2.0'
90
+ ) return;
91
+ if (this.origin != null && this.origin !== message.origin) return;
92
+ if (this.#target != null && this.#target !== message.source) return;
93
+ this.receiveMessage(message);
94
+ let { data } = message;
95
+ if (data.type != null) {
96
+ if (message.data.type !== this.receiveDirection) return;
97
+ data = data.data;
98
+ }
99
+ onMessage(data, message.origin, message.source);
100
+ };
101
+ this.#self.addEventListener('message', this.listener);
102
+ this.#onDisconnect = onDisconnect;
103
+ }
104
+
105
+ disconnect(): void {
106
+ super.disconnect();
107
+ if (this.listener == null || this.#onDisconnect == null) {
108
+ throw new InternalError('Expected to not happen, required for TS');
109
+ }
110
+ this.#self.removeEventListener('message', this.listener);
111
+ delete this.listener;
112
+ this.#onDisconnect();
113
+ this.#onDisconnect = undefined;
114
+ }
115
+
116
+ sendMessage(msg: any): void {
117
+ if (this.#target == null) throw new RpcConnectionError('Can\'t send messages without target');
118
+ const message = this.sendDirection != null ? { type: this.sendDirection, data: msg } : msg;
119
+ super.sendMessage(message);
120
+ this.#target.postMessage(message, this.origin ?? '*');
121
+ }
122
+ }