@aeternity/aepp-sdk 11.0.1 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +12 -19
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +37 -0
  10. package/es/AeSdk.mjs +81 -0
  11. package/es/AeSdk.mjs.map +1 -0
  12. package/es/AeSdkAepp.d.ts +69 -0
  13. package/es/AeSdkAepp.mjs +175 -0
  14. package/es/AeSdkAepp.mjs.map +1 -0
  15. package/es/AeSdkBase.d.ts +212 -0
  16. package/es/AeSdkBase.mjs +310 -0
  17. package/es/AeSdkBase.mjs.map +1 -0
  18. package/es/AeSdkWallet.d.ts +103 -0
  19. package/es/AeSdkWallet.mjs +322 -0
  20. package/es/AeSdkWallet.mjs.map +1 -0
  21. package/es/Node.d.ts +44 -0
  22. package/es/Node.mjs +141 -0
  23. package/es/Node.mjs.map +1 -0
  24. package/es/account/Base.d.ts +65 -0
  25. package/es/account/Base.mjs +123 -0
  26. package/es/account/Base.mjs.map +1 -0
  27. package/es/account/Memory.d.ts +25 -0
  28. package/es/account/Memory.mjs +81 -0
  29. package/es/account/Memory.mjs.map +1 -0
  30. package/es/account/Rpc.d.ts +27 -0
  31. package/es/account/Rpc.mjs +79 -0
  32. package/es/account/Rpc.mjs.map +1 -0
  33. package/es/aens.d.ts +209 -0
  34. package/es/aens.mjs +332 -0
  35. package/es/aens.mjs.map +1 -0
  36. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  37. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  46. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  47. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  51. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  52. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  54. package/es/aepp-wallet-communication/schema.d.ts +90 -46
  55. package/es/aepp-wallet-communication/schema.mjs +214 -0
  56. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  57. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  58. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  60. package/es/apis/compiler/compiler.d.ts +92 -0
  61. package/es/apis/compiler/compiler.mjs +576 -0
  62. package/es/apis/compiler/compiler.mjs.map +1 -0
  63. package/es/apis/compiler/index.d.ts +2 -0
  64. package/es/apis/compiler/index.mjs +3 -0
  65. package/es/apis/compiler/index.mjs.map +1 -0
  66. package/es/apis/compiler/models/index.d.ts +248 -0
  67. package/es/apis/compiler/models/index.mjs +48 -0
  68. package/es/apis/compiler/models/index.mjs.map +1 -0
  69. package/es/apis/compiler/models/mappers.d.ts +23 -0
  70. package/es/apis/compiler/models/mappers.mjs +585 -0
  71. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  72. package/es/apis/compiler/models/parameters.d.ts +13 -0
  73. package/es/apis/compiler/models/parameters.mjs +71 -0
  74. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  75. package/es/apis/node/index.d.ts +2 -0
  76. package/es/apis/node/index.mjs +3 -0
  77. package/es/apis/node/index.mjs.map +1 -0
  78. package/es/apis/node/models/index.d.ts +1061 -0
  79. package/es/apis/node/models/index.mjs +2 -0
  80. package/es/apis/node/models/index.mjs.map +1 -0
  81. package/es/apis/node/models/mappers.d.ts +95 -0
  82. package/es/apis/node/models/mappers.mjs +4164 -0
  83. package/es/apis/node/models/mappers.mjs.map +1 -0
  84. package/es/apis/node/models/parameters.d.ts +17 -0
  85. package/es/apis/node/models/parameters.mjs +165 -0
  86. package/es/apis/node/models/parameters.mjs.map +1 -0
  87. package/es/apis/node/node.d.ts +215 -0
  88. package/es/apis/node/node.mjs +1165 -0
  89. package/es/apis/node/node.mjs.map +1 -0
  90. package/es/chain.d.ts +220 -0
  91. package/es/chain.mjs +524 -0
  92. package/es/chain.mjs.map +1 -0
  93. package/es/channel/handlers.d.ts +34 -0
  94. package/es/channel/handlers.mjs +147 -112
  95. package/es/channel/handlers.mjs.map +1 -1
  96. package/es/channel/index.d.ts +634 -0
  97. package/es/channel/index.mjs +898 -900
  98. package/es/channel/index.mjs.map +1 -1
  99. package/es/channel/internal.d.ts +100 -0
  100. package/es/channel/internal.mjs +97 -51
  101. package/es/channel/internal.mjs.map +1 -1
  102. package/es/contract/Compiler.d.ts +17 -0
  103. package/es/contract/Compiler.mjs +67 -0
  104. package/es/contract/Compiler.mjs.map +1 -0
  105. package/es/contract/aci.d.ts +125 -0
  106. package/es/contract/aci.mjs +199 -180
  107. package/es/contract/aci.mjs.map +1 -1
  108. package/es/contract/ga.d.ts +68 -0
  109. package/es/contract/ga.mjs +190 -0
  110. package/es/contract/ga.mjs.map +1 -0
  111. package/es/contract/methods.d.ts +68 -0
  112. package/es/contract/methods.mjs +101 -0
  113. package/es/contract/methods.mjs.map +1 -0
  114. package/es/index.d.ts +32 -0
  115. package/es/index.mjs +32 -40
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +154 -0
  118. package/es/oracle.mjs +288 -0
  119. package/es/oracle.mjs.map +1 -0
  120. package/es/spend.d.ts +61 -0
  121. package/es/spend.mjs +122 -0
  122. package/es/spend.mjs.map +1 -0
  123. package/es/tx/builder/constants.d.ts +41 -0
  124. package/es/tx/builder/constants.mjs +11 -19
  125. package/es/tx/builder/constants.mjs.map +1 -1
  126. package/es/tx/builder/field-types.d.ts +62 -0
  127. package/es/tx/builder/field-types.mjs +62 -10
  128. package/es/tx/builder/field-types.mjs.map +1 -1
  129. package/es/tx/builder/helpers.d.ts +131 -0
  130. package/es/tx/builder/helpers.mjs +71 -169
  131. package/es/tx/builder/helpers.mjs.map +1 -1
  132. package/es/tx/builder/index.d.ts +75 -0
  133. package/es/tx/builder/index.mjs +141 -323
  134. package/es/tx/builder/index.mjs.map +1 -1
  135. package/es/tx/builder/schema.d.ts +350 -0
  136. package/es/tx/builder/schema.mjs +173 -510
  137. package/es/tx/builder/schema.mjs.map +1 -1
  138. package/es/tx/index.d.ts +63 -0
  139. package/es/tx/index.mjs +171 -265
  140. package/es/tx/index.mjs.map +1 -1
  141. package/es/tx/min-fee.d.ts +20 -0
  142. package/es/tx/min-fee.mjs +148 -0
  143. package/es/tx/min-fee.mjs.map +1 -0
  144. package/es/tx/validator.d.ts +19 -0
  145. package/es/tx/validator.mjs +64 -71
  146. package/es/tx/validator.mjs.map +1 -1
  147. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  149. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  151. package/es/typings/bip32-path/index.d.mjs +2 -0
  152. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  153. package/es/typings/blakejs/index.d.mjs.map +1 -1
  154. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  155. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  156. package/es/utils/amount-formatter.d.ts +42 -0
  157. package/es/utils/amount-formatter.mjs +28 -41
  158. package/es/utils/amount-formatter.mjs.map +1 -1
  159. package/es/utils/autorest.d.ts +6 -0
  160. package/es/utils/autorest.mjs +97 -0
  161. package/es/utils/autorest.mjs.map +1 -0
  162. package/es/utils/bignumber.d.ts +13 -0
  163. package/es/utils/bignumber.mjs +10 -8
  164. package/es/utils/bignumber.mjs.map +1 -1
  165. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  166. package/es/utils/bytes.mjs +10 -14
  167. package/es/utils/bytes.mjs.map +1 -1
  168. package/es/utils/crypto.d.ts +103 -0
  169. package/es/utils/crypto.mjs +60 -68
  170. package/es/utils/crypto.mjs.map +1 -1
  171. package/es/utils/encoder.d.ts +26 -0
  172. package/es/utils/encoder.mjs +47 -51
  173. package/es/utils/encoder.mjs.map +1 -1
  174. package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
  175. package/es/utils/errors.mjs +318 -125
  176. package/es/utils/errors.mjs.map +1 -1
  177. package/es/utils/hd-wallet.d.ts +34 -0
  178. package/es/utils/hd-wallet.mjs +27 -16
  179. package/es/utils/hd-wallet.mjs.map +1 -1
  180. package/es/utils/json-big.d.ts +5 -0
  181. package/es/utils/json-big.mjs +10 -14
  182. package/es/utils/json-big.mjs.map +1 -1
  183. package/es/utils/keystore.d.ts +51 -0
  184. package/es/utils/keystore.mjs +98 -193
  185. package/es/utils/keystore.mjs.map +1 -1
  186. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  187. package/es/utils/mptree.mjs +13 -14
  188. package/es/utils/mptree.mjs.map +1 -1
  189. package/es/utils/other.d.ts +14 -0
  190. package/es/utils/other.mjs +21 -36
  191. package/es/utils/other.mjs.map +1 -1
  192. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  193. package/es/utils/semver-satisfies.mjs.map +1 -1
  194. package/es/utils/string.d.ts +24 -0
  195. package/es/utils/string.mjs +8 -10
  196. package/es/utils/string.mjs.map +1 -1
  197. package/package.json +49 -39
  198. package/src/AeSdk.ts +65 -0
  199. package/src/AeSdkAepp.ts +167 -0
  200. package/src/AeSdkBase.ts +320 -0
  201. package/src/AeSdkWallet.ts +332 -0
  202. package/src/Node.ts +167 -0
  203. package/src/account/Base.ts +114 -0
  204. package/src/account/Memory.ts +83 -0
  205. package/src/account/Rpc.ts +67 -0
  206. package/src/aens.ts +391 -0
  207. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  208. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  209. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  210. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
  211. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  212. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  213. package/src/aepp-wallet-communication/schema.ts +181 -0
  214. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  215. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  216. package/src/apis/compiler/compiler.ts +585 -0
  217. package/src/apis/compiler/index.ts +2 -0
  218. package/src/apis/compiler/models/index.ts +301 -0
  219. package/src/apis/compiler/models/mappers.ts +583 -0
  220. package/src/apis/compiler/models/parameters.ts +93 -0
  221. package/src/apis/node/code-model-v4.yaml +10046 -0
  222. package/src/apis/node/index.ts +2 -0
  223. package/src/apis/node/models/index.ts +1253 -0
  224. package/src/apis/node/models/mappers.ts +4278 -0
  225. package/src/apis/node/models/parameters.ts +188 -0
  226. package/src/apis/node/node.ts +1299 -0
  227. package/src/chain.ts +444 -0
  228. package/src/channel/{handlers.js → handlers.ts} +220 -128
  229. package/src/channel/index.ts +991 -0
  230. package/src/channel/internal.ts +345 -0
  231. package/src/contract/Compiler.ts +66 -0
  232. package/src/contract/aci.ts +529 -0
  233. package/src/contract/ga.ts +178 -0
  234. package/src/contract/methods.ts +118 -0
  235. package/src/index.ts +51 -0
  236. package/src/oracle.ts +342 -0
  237. package/src/spend.ts +152 -0
  238. package/src/tx/builder/{constants.js → constants.ts} +12 -16
  239. package/src/tx/builder/field-types.ts +111 -0
  240. package/src/tx/builder/helpers.ts +253 -0
  241. package/src/tx/builder/index.ts +394 -0
  242. package/src/tx/builder/schema.ts +771 -0
  243. package/src/tx/index.ts +199 -0
  244. package/src/tx/min-fee.ts +136 -0
  245. package/src/tx/validator.ts +226 -0
  246. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  247. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  248. package/src/typings/bip32-path/index.d.ts +33 -0
  249. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  250. package/src/utils/amount-formatter.ts +29 -42
  251. package/src/utils/autorest.ts +90 -0
  252. package/src/utils/bignumber.ts +9 -11
  253. package/src/utils/bytes.ts +12 -14
  254. package/src/utils/crypto.ts +217 -0
  255. package/src/utils/encoder.ts +52 -55
  256. package/src/utils/errors.ts +268 -134
  257. package/src/utils/hd-wallet.ts +134 -0
  258. package/src/utils/json-big.ts +26 -0
  259. package/src/utils/keystore.ts +179 -0
  260. package/src/utils/mptree.ts +14 -14
  261. package/src/utils/other.ts +28 -43
  262. package/src/utils/string.ts +8 -10
  263. package/es/account/base.mjs +0 -179
  264. package/es/account/base.mjs.map +0 -1
  265. package/es/account/memory.mjs +0 -99
  266. package/es/account/memory.mjs.map +0 -1
  267. package/es/account/multiple.mjs +0 -179
  268. package/es/account/multiple.mjs.map +0 -1
  269. package/es/ae/aens.mjs +0 -404
  270. package/es/ae/aens.mjs.map +0 -1
  271. package/es/ae/aepp.mjs +0 -45
  272. package/es/ae/aepp.mjs.map +0 -1
  273. package/es/ae/contract.mjs +0 -159
  274. package/es/ae/contract.mjs.map +0 -1
  275. package/es/ae/index.mjs +0 -207
  276. package/es/ae/index.mjs.map +0 -1
  277. package/es/ae/oracle.mjs +0 -339
  278. package/es/ae/oracle.mjs.map +0 -1
  279. package/es/ae/universal.mjs +0 -45
  280. package/es/ae/universal.mjs.map +0 -1
  281. package/es/ae/wallet.mjs +0 -50
  282. package/es/ae/wallet.mjs.map +0 -1
  283. package/es/amount-formatter.d.ts +0 -58
  284. package/es/bignumber.d.ts +0 -18
  285. package/es/chain/index.mjs +0 -272
  286. package/es/chain/index.mjs.map +0 -1
  287. package/es/chain/node.mjs +0 -442
  288. package/es/chain/node.mjs.map +0 -1
  289. package/es/contract/compiler.mjs +0 -115
  290. package/es/contract/compiler.mjs.map +0 -1
  291. package/es/contract/ga/helpers.mjs +0 -30
  292. package/es/contract/ga/helpers.mjs.map +0 -1
  293. package/es/contract/ga/index.mjs +0 -178
  294. package/es/contract/ga/index.mjs.map +0 -1
  295. package/es/crypto-ts.d.ts +0 -9
  296. package/es/encoder.d.ts +0 -26
  297. package/es/node-pool/index.mjs +0 -188
  298. package/es/node-pool/index.mjs.map +0 -1
  299. package/es/node.mjs +0 -133
  300. package/es/node.mjs.map +0 -1
  301. package/es/other.d.ts +0 -31
  302. package/es/string.d.ts +0 -26
  303. package/es/tx/tx-object.mjs +0 -283
  304. package/es/tx/tx-object.mjs.map +0 -1
  305. package/es/tx/tx.mjs +0 -938
  306. package/es/tx/tx.mjs.map +0 -1
  307. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  308. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  309. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  310. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  311. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  312. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  313. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  314. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  315. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  316. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  317. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  318. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  319. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  320. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  321. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  322. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  323. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  324. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  325. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  326. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  327. package/es/utils/async-init.mjs +0 -64
  328. package/es/utils/async-init.mjs.map +0 -1
  329. package/es/utils/crypto-ts.mjs.map +0 -1
  330. package/es/utils/swagger.mjs +0 -164
  331. package/es/utils/swagger.mjs.map +0 -1
  332. package/src/account/base.js +0 -153
  333. package/src/account/memory.js +0 -83
  334. package/src/account/multiple.js +0 -162
  335. package/src/ae/aens.js +0 -361
  336. package/src/ae/aepp.js +0 -45
  337. package/src/ae/contract.js +0 -148
  338. package/src/ae/index.js +0 -168
  339. package/src/ae/oracle.js +0 -311
  340. package/src/ae/universal.js +0 -47
  341. package/src/ae/wallet.js +0 -50
  342. package/src/chain/index.js +0 -269
  343. package/src/chain/node.js +0 -320
  344. package/src/channel/index.js +0 -903
  345. package/src/channel/internal.js +0 -236
  346. package/src/contract/aci.js +0 -376
  347. package/src/contract/compiler.js +0 -100
  348. package/src/contract/ga/helpers.js +0 -19
  349. package/src/contract/ga/index.js +0 -150
  350. package/src/index.js +0 -89
  351. package/src/node-pool/index.js +0 -172
  352. package/src/node.js +0 -116
  353. package/src/tx/builder/field-types.js +0 -61
  354. package/src/tx/builder/helpers.js +0 -334
  355. package/src/tx/builder/index.js +0 -465
  356. package/src/tx/builder/schema.js +0 -1100
  357. package/src/tx/index.js +0 -301
  358. package/src/tx/tx-object.js +0 -187
  359. package/src/tx/tx.js +0 -631
  360. package/src/tx/validator.js +0 -181
  361. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  362. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  363. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  364. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  365. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  366. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  367. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  368. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  369. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  370. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  371. package/src/utils/async-init.js +0 -45
  372. package/src/utils/crypto.js +0 -219
  373. package/src/utils/hd-wallet.js +0 -100
  374. package/src/utils/json-big.js +0 -26
  375. package/src/utils/keystore.js +0 -219
  376. package/src/utils/swagger.js +0 -156
@@ -1,181 +0,0 @@
1
- import { verify, hash } from '../utils/crypto'
2
- import { encode, decode } from './builder/helpers'
3
-
4
- import BigNumber from 'bignumber.js'
5
- import { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema'
6
- import { calculateFee, unpackTx } from './builder'
7
- import { UnsupportedProtocolError } from '../utils/errors'
8
-
9
- /**
10
- * Transaction validator
11
- * @module @aeternity/aepp-sdk/es/tx/validator
12
- * @export verifyTransaction
13
- * @example import { verifyTransaction } from '@aeternity/aepp-sdk'
14
- */
15
-
16
- const validators = [
17
- ({ encodedTx, signatures }, { account, node, parentTxTypes }) => {
18
- if ((encodedTx ?? signatures) === undefined) return []
19
- if (signatures.length !== 1) return [] // TODO: Support multisignature?
20
- const prefix = Buffer.from([
21
- node.nodeNetworkId,
22
- ...parentTxTypes.includes(TX_TYPE.payingFor) ? ['inner_tx'] : []
23
- ].join('-'))
24
- const txWithNetworkId = Buffer.concat([prefix, encodedTx.rlpEncoded])
25
- const txHashWithNetworkId = Buffer.concat([prefix, hash(encodedTx.rlpEncoded)])
26
- const decodedPub = decode(account.id, 'ak')
27
- if (verify(txWithNetworkId, signatures[0], decodedPub) ||
28
- verify(txHashWithNetworkId, signatures[0], decodedPub)) return []
29
- return [{
30
- message: 'Signature cannot be verified, please ensure that you transaction have' +
31
- ' the correct prefix and the correct private key for the sender address',
32
- key: 'InvalidSignature',
33
- checkedKeys: ['encodedTx', 'signatures']
34
- }]
35
- },
36
- ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {
37
- if ((encodedTx ?? tx) === undefined) return []
38
- return verifyTransaction(
39
- encode((encodedTx ?? tx).rlpEncoded, 'tx'),
40
- node,
41
- [...parentTxTypes, txType]
42
- )
43
- },
44
- (tx, { txType }) => {
45
- if (tx.fee === undefined) return []
46
- const minFee = calculateFee(0, txType, {
47
- gas: +tx.gas || 0, params: tx, showWarning: false, vsn: tx.VSN
48
- })
49
- if (new BigNumber(minFee).lte(tx.fee)) return []
50
- return [{
51
- message: `Fee ${tx.fee} is too low, minimum fee for this transaction is ${minFee}`,
52
- key: 'InsufficientFee',
53
- checkedKeys: ['fee']
54
- }]
55
- },
56
- ({ ttl }, { height }) => {
57
- if (ttl === undefined) return []
58
- ttl = +ttl
59
- if (ttl === 0 || ttl >= height) return []
60
- return [{
61
- message: `TTL ${ttl} is already expired, current height is ${height}`,
62
- key: 'ExpiredTTL',
63
- checkedKeys: ['ttl']
64
- }]
65
- },
66
- ({ amount, fee, nameFee, tx }, { account, parentTxTypes, txType }) => {
67
- if ((amount ?? fee ?? nameFee) === undefined) return []
68
- const cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0)
69
- .plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0)
70
- .minus(parentTxTypes.includes(TX_TYPE.payingFor) ? fee : 0)
71
- if (cost.lte(account.balance)) return []
72
- return [{
73
- message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost.toFixed()}`,
74
- key: 'InsufficientBalance',
75
- checkedKeys: ['amount', 'fee', 'nameFee']
76
- }]
77
- },
78
- ({ nonce }, { account, parentTxTypes }) => {
79
- if (nonce === undefined || parentTxTypes.includes(TX_TYPE.gaMeta)) return []
80
- nonce = +nonce
81
- const validNonce = account.nonce + 1
82
- if (nonce === validNonce) return []
83
- return [{
84
- ...nonce < validNonce
85
- ? {
86
- message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,
87
- key: 'NonceAlreadyUsed'
88
- }
89
- : {
90
- message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,
91
- key: 'NonceHigh'
92
- },
93
- checkedKeys: ['nonce']
94
- }]
95
- },
96
- ({ gasPrice }) => {
97
- if (gasPrice === undefined) return []
98
- if (gasPrice >= MIN_GAS_PRICE) return []
99
- return [{
100
- message: `Gas price ${gasPrice} must be bigger then ${MIN_GAS_PRICE}`,
101
- key: 'MinGasPrice',
102
- checkedKeys: ['gasPrice']
103
- }]
104
- },
105
- ({ ctVersion, abiVersion }, { txType, node }) => {
106
- const { consensusProtocolVersion } = node.getNodeInfo()
107
- const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion]
108
- if (!protocol) throw new UnsupportedProtocolError(`Unsupported protocol: ${consensusProtocolVersion}`)
109
- // If not contract create tx
110
- if (!ctVersion) ctVersion = { abiVersion }
111
- const txProtocol = protocol[txType]
112
- if (!txProtocol) return []
113
- if (Object.entries(ctVersion).some(([key, value]) => !txProtocol[key].includes(+value))) {
114
- return [{
115
- message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,
116
- key: 'VmAndAbiVersionMismatch',
117
- checkedKeys: ['ctVersion', 'abiVersion']
118
- }]
119
- }
120
- return []
121
- },
122
- async ({ contractId }, { txType, node }) => {
123
- if (TX_TYPE.contractCall !== txType) return []
124
- try {
125
- const { active } = await node.api.getContract(contractId)
126
- if (active) return []
127
- return [{
128
- message: `Contract ${contractId} is not active`,
129
- key: 'ContractNotActive',
130
- checkedKeys: ['contractId']
131
- }]
132
- } catch (error) {
133
- if (!error.response?.body?.reason) throw error
134
- return [{
135
- message: error.response.body.reason,
136
- key: 'ContractNotFound',
137
- checkedKeys: ['contractId']
138
- }]
139
- }
140
- }
141
- ]
142
-
143
- const getSenderAddress = tx => [
144
- 'senderId', 'accountId', 'ownerId', 'callerId',
145
- 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId'
146
- ]
147
- .map(key => tx[key])
148
- .filter(a => a)
149
- .map(a => a.replace(/^ok_/, 'ak_'))[0]
150
-
151
- /**
152
- * Transaction Validator
153
- * This function validates some of transaction properties,
154
- * to make sure it can be posted it to the chain
155
- * @function
156
- * @alias module:@aeternity/aepp-sdk/es/tx/validator
157
- * @rtype (tx: String, node) => void
158
- * @param {String} transaction Base64Check-encoded transaction
159
- * @param {Object} node Node to validate transaction against
160
- * @param {String[]} [parentTxTypes] Types of parent transactions
161
- * @return {Promise<Object[]>} Array with verification errors
162
- * @example const errors = await verifyTransaction(transaction, node)
163
- */
164
- export default async function verifyTransaction (transaction, node, parentTxTypes = []) {
165
- const { tx, txType } = unpackTx(transaction)
166
-
167
- const address = getSenderAddress(tx) ??
168
- (txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null)
169
- const [account, { height }] = await Promise.all([
170
- address && node.api.getAccountByPubkey(address).catch(() => ({
171
- id: address,
172
- balance: new BigNumber(0),
173
- nonce: 0
174
- })),
175
- node.api.getCurrentKeyBlockHeight()
176
- ])
177
-
178
- return (await Promise.all(
179
- validators.map(v => v(tx, { txType, node, account, height, parentTxTypes })))
180
- ).flat()
181
- }
@@ -1,119 +0,0 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
- /**
19
- * Browser runtime connector module
20
- *
21
- * This is the complement to
22
- * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.
23
- * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime
24
- * @export BrowserRuntimeConnection
25
- * @example import { BrowserRuntimeConnection } from '@aeternity/aepp-sdk'
26
- */
27
- import stampit from '@stamp/it'
28
-
29
- import WalletConnection from '.'
30
- import { getBrowserAPI } from '../helpers'
31
- import {
32
- RpcConnectionError,
33
- AlreadyConnectedError,
34
- NoWalletConnectedError
35
- } from '../../errors'
36
-
37
- /**
38
- * Disconnect
39
- * @function disconnect
40
- * @instance
41
- * @rtype () => void
42
- * @return {void}
43
- */
44
- function disconnect () {
45
- try {
46
- this.port.disconnect()
47
- } catch (e) {
48
- console.warning('From BrowserRuntimeConnection: ', e)
49
- }
50
- }
51
-
52
- /**
53
- * Connect
54
- * @function connect
55
- * @instance
56
- * @rtype (onMessage: Function, onDisconnect: Function) => void
57
- * @param {Function} onMessage - Message handler
58
- * @param {Function} onDisconnect - trigger when runtime connection in closed
59
- * @return {void}
60
- */
61
- function connect (onMessage, onDisconnect) {
62
- if (this.isConnected()) throw new AlreadyConnectedError('You already connected')
63
- this.handler = (msg, source) => {
64
- if (this.debug) console.log('Receive message: ', msg)
65
- onMessage(msg, source)
66
- }
67
- this.port.onMessage.addListener(this.handler)
68
- this.port.onDisconnect.addListener(() => {
69
- typeof onDisconnect === 'function' && onDisconnect({}, this)
70
- this.port.disconnect()
71
- })
72
- }
73
-
74
- /**
75
- * Send message
76
- * @function sendMessage
77
- * @instance
78
- * @rtype (msg: Object) => void
79
- * @param {Object} msg - Message
80
- * @return {void}
81
- */
82
- function sendMessage (msg) {
83
- if (!this.port) throw new NoWalletConnectedError('You dont have connection. Please connect before')
84
- if (this.debug) console.log('Send message: ', msg)
85
- this.port.postMessage(msg)
86
- }
87
-
88
- /**
89
- * Check if connected
90
- * @function isConnected
91
- * @instance
92
- * @rtype () => Boolean
93
- * @return {Boolean} Is connected
94
- */
95
- function isConnected () {
96
- return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)
97
- }
98
-
99
- /**
100
- * BrowserRuntimeConnection stamp
101
- * Handle browser runtime communication
102
- * @function
103
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime
104
- * @rtype Stamp
105
- * @param {Object} params={} - Initializer object
106
- * @param {Object} params.port - Runtime `port` object
107
- * @param {Object} [params.connectionInfo={}] - Connection info object
108
- * @param {Boolean} [params.debug=false] - Debug flag
109
- * @return {Object}
110
- */
111
- export default stampit({
112
- init ({ connectionInfo = {}, port, debug = false }) {
113
- if (!getBrowserAPI().runtime) throw new RpcConnectionError('Runtime is not accessible in your environment')
114
- this.debug = debug
115
- this.connectionInfo = connectionInfo
116
- this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])
117
- },
118
- methods: { connect, sendMessage, disconnect, isConnected }
119
- }, WalletConnection)
@@ -1,165 +0,0 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
- /**
19
- * Browser window Post Message connector module
20
- *
21
- * This is the complement to
22
- * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.
23
- * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message
24
- * @export BrowserWindowMessageConnection
25
- * @example
26
- * import BrowserWindowMessageConnection
27
- * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'
28
- */
29
- import stampit from '@stamp/it'
30
- import WalletConnection from '.'
31
- import { v4 as uuid } from '@aeternity/uuid'
32
- import { MESSAGE_DIRECTION } from '../schema'
33
- import { getBrowserAPI, isInIframe } from '../helpers'
34
- import {
35
- AlreadyConnectedError,
36
- NoWalletConnectedError,
37
- MessageDirectionError
38
- } from '../../errors'
39
-
40
- /**
41
- * Check if connected
42
- * @function isConnected
43
- * @instance
44
- * @rtype () => Boolean
45
- * @return {Boolean} Is connected
46
- */
47
- function isConnected () {
48
- return this.listener
49
- }
50
-
51
- /**
52
- * Connect
53
- * @function connect
54
- * @instance
55
- * @rtype (onMessage: Function) => void
56
- * @param {Function} onMessage - Message handler
57
- * @return {void}
58
- */
59
- function connect (onMessage) {
60
- const origin = this.origin
61
- const receiveDirection = this.receiveDirection
62
- const debug = this.debug
63
- const forceOrigin = this.forceOrigin
64
- if (this.listener) throw new AlreadyConnectedError('You already connected')
65
-
66
- this.listener = (msg, source) => {
67
- if (!msg || typeof msg.data !== 'object') return
68
- if (!forceOrigin && origin && origin !== msg.origin) return
69
- if (debug) console.log('Receive message: ', msg)
70
- if (msg.data.type) {
71
- if (msg.data.type !== receiveDirection) return
72
- onMessage(msg.data.data, msg.origin, msg.source)
73
- } else {
74
- onMessage(msg.data, msg.origin, msg.source)
75
- }
76
- }
77
- this.subscribeFn(this.listener)
78
- }
79
-
80
- /**
81
- * Disconnect
82
- * @function disconnect
83
- * @instance
84
- * @rtype () => void
85
- * @return {void}
86
- */
87
- function disconnect () {
88
- if (!this.listener) throw new NoWalletConnectedError('You dont have connection. Please connect before')
89
- this.unsubscribeFn(this.listener)
90
- this.listener = null
91
- }
92
-
93
- /**
94
- * Send message
95
- * @function sendMessage
96
- * @instance
97
- * @rtype (msg: Object) => void
98
- * @param {Object} msg - Message
99
- * @return {void}
100
- */
101
- function sendMessage (msg) {
102
- const message = this.sendDirection ? { type: this.sendDirection, data: msg } : msg
103
- if (this.debug) console.log('Send message: ', message)
104
- this.postFn(message)
105
- }
106
-
107
- const getTarget = () => {
108
- const isExtensionContext = typeof getBrowserAPI(true).extension === 'object'
109
- const isWeb = window && window.location && window.location.protocol.startsWith('http')
110
- const isContentScript = isExtensionContext && isWeb
111
- if (isContentScript) return window
112
- // When we is the main page we need to decide the target by our self
113
- // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which
114
- // Iframe to talk
115
- return isInIframe() ? window.parent : undefined
116
- }
117
-
118
- /**
119
- * BrowserWindowMessageConnection
120
- * @function
121
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication\
122
- * /connection/browser-window-message
123
- * @rtype Stamp
124
- * @param {Object} [params={}] - Initializer object
125
- * @param {Object} [params.target=window.parent] - Target window for message
126
- * @param {Object} [params.self=window] - Host window for message
127
- * @param {Object} [params.origin] - Origin of receiver
128
- * @param {String} [params.sendDirection] Wrapping messages into additional struct
129
- * ({ type: 'to_aepp' || 'to_waellet', data })
130
- * Used for handling messages between content script and page
131
- * @param {String} [params.receiveDirection='to_aepp'] Unwrapping messages from additional struct
132
- * ({ type: 'to_aepp' || 'to_waellet', data })
133
- * Used for handling messages between content script and page
134
- * @param {Object} [params.connectionInfo={}] - Connection info object
135
- * @param {Boolean} [params.debug=false] - Debug flag
136
- * @return {Object}
137
- */
138
- export default stampit({
139
- init ({
140
- connectionInfo = {},
141
- target = getTarget(),
142
- self = window,
143
- origin,
144
- sendDirection,
145
- receiveDirection = MESSAGE_DIRECTION.to_aepp,
146
- debug = false,
147
- forceOrigin = false
148
- } = {}) {
149
- if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new MessageDirectionError(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)
150
- if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new MessageDirectionError(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)
151
- this.connectionInfo = { id: uuid(), ...connectionInfo }
152
-
153
- const selfP = self
154
- const targetP = target
155
- this.origin = origin
156
- this.debug = debug
157
- this.forceOrigin = forceOrigin
158
- this.sendDirection = sendDirection
159
- this.receiveDirection = receiveDirection
160
- this.subscribeFn = (listener) => selfP.addEventListener('message', listener, false)
161
- this.unsubscribeFn = (listener) => selfP.removeEventListener('message', listener, false)
162
- this.postFn = (msg) => targetP.postMessage(msg, this.origin || '*')
163
- },
164
- methods: { connect, sendMessage, disconnect, isConnected }
165
- }, WalletConnection)
@@ -1,85 +0,0 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
- /**
19
- * Wallet Connection base module
20
- * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection
21
- * @export WalletConnection
22
- * @example
23
- * import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'
24
- */
25
-
26
- import { required } from '@stamp/required'
27
-
28
- /**
29
- * Basic Wallet Connection
30
- *
31
- * This stamp include interface for wallet connection functionality.
32
- * Attempting to create instances from the Stamp without overwriting all
33
- * abstract methods using composition will result in an exception.
34
- * @function
35
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection
36
- * @rtype Stamp
37
- * @param {Object} [options={}] - Initializer object
38
- * @return {Object} WalletConnection instance
39
- */
40
- export default required({
41
- methods: {
42
- connect: required,
43
- disconnect: required,
44
- sendMessage: required,
45
- isConnected: required
46
- }
47
- })
48
-
49
- /**
50
- * Connect
51
- * @function connect
52
- * @instance
53
- * @abstract
54
- * @rtype (onMessage: Function) => void
55
- * @param {Function} onMessage - Message handler
56
- * @return {void}
57
- */
58
-
59
- /**
60
- * Disconnect
61
- * @function disconnect
62
- * @instance
63
- * @abstract
64
- * @rtype () => void
65
- * @return {void}
66
- */
67
-
68
- /**
69
- * Send message
70
- * @function sendMessage
71
- * @instance
72
- * @abstract
73
- * @rtype (msg: Object) => void
74
- * @param {Object} msg - Message
75
- * @return {void}
76
- */
77
-
78
- /**
79
- * Check if connected
80
- * @function isConnected
81
- * @instance
82
- * @abstract
83
- * @rtype () => Boolean
84
- * @return {Boolean} Is connected
85
- */
@@ -1,86 +0,0 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
-
18
- /**
19
- * Content Script Bridge module
20
- *
21
- * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge
22
- * @export ContentScriptBridge
23
- * @example
24
- * import ContentScriptBridge
25
- * from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge
26
- */
27
- import stampit from '@stamp/it'
28
- import { UnsupportedPlatformError, MissingParamError } from '../errors'
29
-
30
- /**
31
- * Start message proxy
32
- * @function run
33
- * @instance
34
- * @return {void}
35
- */
36
- function run () {
37
- const allowCrossOrigin = this.allowCrossOrigin
38
- // Connect to extension using runtime
39
- this.extConnection.connect((msg) => {
40
- this.pageConnection.sendMessage(msg)
41
- })
42
- // Connect to page using window.postMessage
43
- this.pageConnection.connect((msg, origin, source) => {
44
- if (!allowCrossOrigin && source !== window) return
45
- this.extConnection.sendMessage(msg)
46
- })
47
- }
48
-
49
- /**
50
- * Stop message proxy
51
- * @function stop
52
- * @instance
53
- * @return {void}
54
- */
55
- function stop () {
56
- this.extConnection.disconnect()
57
- this.pageConnection.disconnect()
58
- }
59
-
60
- /**
61
- * ContentScriptBridge stamp
62
- * Provide functionality to easly redirect messages from page to extension and from extension to
63
- * page through content script
64
- * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections
65
- * @function
66
- * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge
67
- * @rtype Stamp
68
- * @param {Object} params - Initializer object
69
- * @param {Object} params.pageConnection - Page connection object
70
- * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/
71
- * browser-window-message)
72
- * @param {Object} params.extConnection - Extension connection object
73
- * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)
74
- * @return {Object}
75
- */
76
- export default stampit({
77
- init ({ pageConnection, extConnection, allowCrossOrigin = false }) {
78
- if (!window) throw new UnsupportedPlatformError('Window object not found, you can run bridge only in browser')
79
- if (!pageConnection) throw new MissingParamError('pageConnection required')
80
- if (!extConnection) throw new MissingParamError('extConnection required')
81
- this.allowCrossOrigin = allowCrossOrigin
82
- this.pageConnection = pageConnection
83
- this.extConnection = extConnection
84
- },
85
- methods: { run, stop }
86
- })
@@ -1,60 +0,0 @@
1
- /**
2
- * Browser helper functions
3
- */
4
- import { NoBrowserFoundError } from '../errors'
5
-
6
- export const getBrowserAPI = (force = false) => {
7
- const { chrome, browser } = window
8
- // Chrome, Opera support
9
- if (typeof chrome !== 'undefined' && chrome === Object(chrome)) return chrome
10
- // Firefox support
11
- if (typeof browser !== 'undefined' && browser === Object(browser)) return browser
12
- if (!force) throw new NoBrowserFoundError()
13
- return {}
14
- }
15
-
16
- export const isInIframe = () => window !== window.parent
17
-
18
- /**
19
- * RPC helper functions
20
- */
21
- export const sendMessage = (connection) => {
22
- let messageId = 0
23
-
24
- return ({ id, method, params, result, error }, isNotificationOrResponse = false) => {
25
- // Increment id for each request
26
- isNotificationOrResponse || (messageId += 1)
27
- id = isNotificationOrResponse ? (id || null) : messageId
28
- const msgData = params
29
- ? { params }
30
- : result
31
- ? { result }
32
- : { error }
33
- connection.sendMessage({
34
- jsonrpc: '2.0',
35
- ...id ? { id } : {},
36
- method,
37
- ...msgData
38
- })
39
- return id
40
- }
41
- }
42
-
43
- export const getHandler = (schema, msg, { debug = false } = {}) => {
44
- const handler = schema[msg.method]
45
- if (!handler || typeof handler !== 'function') {
46
- debug && console.log(`Unknown message method ${msg.method}`)
47
- return () => async () => true
48
- }
49
- return handler
50
- }
51
-
52
- export const message = (method, params = {}) => ({ method, params })
53
-
54
- export const responseMessage = (id, method, { error, result } = {}) =>
55
- ({ id, method, ...(error ? { error } : { result }) })
56
-
57
- export const sendResponseMessage = (client) => (id, method, data) =>
58
- client.sendMessage(responseMessage(id, method, data), true)
59
-
60
- export const isValidAccounts = (accounts) => (['', 'connected', 'current'].filter(k => typeof (k ? accounts[k] : accounts) === 'object')).length === 3