@aeternity/aepp-sdk 11.0.0 → 12.1.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 (442) 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 +20764 -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 +138 -88
  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 +122 -0
  135. package/es/tx/builder/constants.mjs.map +1 -0
  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 -240
  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 -664
  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 -108
  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 +118 -0
  218. package/es/utils/encoder.mjs.map +1 -0
  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 +56 -42
  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 +170 -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 +146 -0
  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/node-pool/index.mjs +0 -188
  360. package/es/node-pool/index.mjs.map +0 -1
  361. package/es/node.mjs +0 -133
  362. package/es/node.mjs.map +0 -1
  363. package/es/other.d.ts +0 -31
  364. package/es/semver-satisfies.d.ts +0 -1
  365. package/es/string.d.ts +0 -26
  366. package/es/tx/builder/field-types.mjs +0 -74
  367. package/es/tx/builder/field-types.mjs.map +0 -1
  368. package/es/tx/tx-object.mjs +0 -283
  369. package/es/tx/tx-object.mjs.map +0 -1
  370. package/es/tx/tx.mjs +0 -938
  371. package/es/tx/tx.mjs.map +0 -1
  372. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  374. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  376. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  378. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  380. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  381. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  382. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  384. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  386. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  388. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  389. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  390. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  392. package/es/utils/async-init.mjs +0 -64
  393. package/es/utils/async-init.mjs.map +0 -1
  394. package/es/utils/crypto-ts.mjs.map +0 -1
  395. package/es/utils/swagger.mjs +0 -164
  396. package/es/utils/swagger.mjs.map +0 -1
  397. package/src/account/base.js +0 -153
  398. package/src/account/memory.js +0 -83
  399. package/src/account/multiple.js +0 -162
  400. package/src/ae/aens.js +0 -361
  401. package/src/ae/aepp.js +0 -45
  402. package/src/ae/contract.js +0 -148
  403. package/src/ae/index.js +0 -168
  404. package/src/ae/oracle.js +0 -311
  405. package/src/ae/universal.js +0 -47
  406. package/src/ae/wallet.js +0 -50
  407. package/src/chain/index.js +0 -269
  408. package/src/chain/node.js +0 -320
  409. package/src/channel/handlers.js +0 -673
  410. package/src/channel/index.js +0 -898
  411. package/src/channel/internal.js +0 -237
  412. package/src/contract/aci.js +0 -376
  413. package/src/contract/compiler.js +0 -100
  414. package/src/contract/ga/helpers.js +0 -19
  415. package/src/contract/ga/index.js +0 -150
  416. package/src/index.js +0 -89
  417. package/src/node-pool/index.js +0 -172
  418. package/src/node.js +0 -116
  419. package/src/tx/builder/field-types.js +0 -61
  420. package/src/tx/builder/helpers.js +0 -380
  421. package/src/tx/builder/index.js +0 -465
  422. package/src/tx/builder/schema.js +0 -1197
  423. package/src/tx/index.js +0 -301
  424. package/src/tx/tx-object.js +0 -187
  425. package/src/tx/tx.js +0 -631
  426. package/src/tx/validator.js +0 -181
  427. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  428. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  429. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  430. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  431. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  432. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  433. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  434. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  435. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  436. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  437. package/src/utils/async-init.js +0 -45
  438. package/src/utils/crypto.js +0 -229
  439. package/src/utils/hd-wallet.js +0 -100
  440. package/src/utils/json-big.js +0 -26
  441. package/src/utils/keystore.js +0 -219
  442. 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
+ }