@subwallet/extension-base 1.0.10-0 → 1.0.11-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 (436) hide show
  1. package/background/KoniTypes.d.ts +6 -0
  2. package/cjs/koni/api/nft/wasm_nft/index.js +4 -1
  3. package/cjs/koni/api/staking/bonding/index.js +3 -0
  4. package/cjs/koni/background/cron.js +4 -29
  5. package/cjs/koni/background/handlers/State.js +74 -23
  6. package/cjs/koni/background/subscription.js +4 -2
  7. package/cjs/packageInfo.js +1 -1
  8. package/cjs/services/chain-service/constants.js +3 -1
  9. package/cjs/services/chain-service/handler/AbstractChainHandler.js +93 -0
  10. package/cjs/services/chain-service/handler/EvmApi.js +131 -0
  11. package/cjs/services/chain-service/handler/EvmChainHandler.js +55 -39
  12. package/cjs/services/chain-service/handler/SubstrateApi.js +212 -0
  13. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +76 -199
  14. package/cjs/services/chain-service/index.js +119 -141
  15. package/cjs/services/event-service/index.js +2 -0
  16. package/cjs/services/history-service/index.js +4 -0
  17. package/cjs/services/migration-service/index.js +0 -3
  18. package/cjs/services/migration-service/scripts/MigrateNetworkSettings.js +1 -1
  19. package/cjs/services/price-service/index.js +4 -1
  20. package/cjs/services/storage-service/DatabaseService.js +6 -1
  21. package/cjs/services/storage-service/databases/index.js +3 -0
  22. package/cjs/services/storage-service/db-stores/Metadata.js +26 -0
  23. package/cjs/services/storage-service/db-stores/index.js +7 -0
  24. package/koni/api/nft/wasm_nft/index.js +4 -1
  25. package/koni/api/staking/bonding/index.js +3 -0
  26. package/koni/background/cron.d.ts +2 -4
  27. package/koni/background/cron.js +5 -30
  28. package/koni/background/handlers/State.d.ts +10 -8
  29. package/koni/background/handlers/State.js +73 -23
  30. package/koni/background/subscription.d.ts +2 -2
  31. package/koni/background/subscription.js +4 -2
  32. package/package.json +33 -668
  33. package/packageInfo.js +1 -1
  34. package/services/chain-service/constants.d.ts +1 -0
  35. package/services/chain-service/constants.js +1 -0
  36. package/services/chain-service/handler/AbstractChainHandler.d.ts +29 -0
  37. package/services/chain-service/handler/AbstractChainHandler.js +83 -0
  38. package/services/chain-service/handler/EvmApi.d.ts +36 -0
  39. package/services/chain-service/handler/EvmApi.js +122 -0
  40. package/services/chain-service/handler/EvmChainHandler.d.ts +15 -9
  41. package/services/chain-service/handler/EvmChainHandler.js +54 -38
  42. package/services/chain-service/handler/SubstrateApi.d.ts +48 -0
  43. package/services/chain-service/handler/SubstrateApi.js +204 -0
  44. package/services/chain-service/handler/SubstrateChainHandler.d.ts +14 -12
  45. package/services/chain-service/handler/SubstrateChainHandler.js +74 -198
  46. package/services/chain-service/handler/types.d.ts +6 -0
  47. package/services/chain-service/index.d.ts +16 -16
  48. package/services/chain-service/index.js +109 -133
  49. package/services/chain-service/types.d.ts +8 -5
  50. package/services/event-service/index.d.ts +2 -0
  51. package/services/event-service/index.js +2 -0
  52. package/services/event-service/types.d.ts +4 -0
  53. package/services/history-service/index.js +4 -0
  54. package/services/migration-service/index.js +0 -3
  55. package/services/migration-service/scripts/MigrateNetworkSettings.js +1 -1
  56. package/services/price-service/index.js +4 -1
  57. package/services/storage-service/DatabaseService.d.ts +5 -2
  58. package/services/storage-service/DatabaseService.js +7 -2
  59. package/services/storage-service/databases/index.d.ts +4 -1
  60. package/services/storage-service/databases/index.js +3 -0
  61. package/services/storage-service/db-stores/Metadata.d.ts +8 -0
  62. package/services/storage-service/db-stores/Metadata.js +18 -0
  63. package/services/storage-service/db-stores/index.d.ts +1 -0
  64. package/services/storage-service/db-stores/index.js +1 -0
  65. package/cjs/services/chain-service/helper/api-helper/chain/crust-maxwell.js +0 -108
  66. package/cjs/services/chain-service/helper/api-helper/chain/index.js +0 -17
  67. package/cjs/services/chain-service/helper/api-helper/index.js +0 -35
  68. package/cjs/services/chain-service/helper/api-helper/spec/acala.js +0 -11
  69. package/cjs/services/chain-service/helper/api-helper/spec/ajuna.js +0 -22
  70. package/cjs/services/chain-service/helper/api-helper/spec/altair.js +0 -31
  71. package/cjs/services/chain-service/helper/api-helper/spec/apron.js +0 -24
  72. package/cjs/services/chain-service/helper/api-helper/spec/ares-gladios.js +0 -191
  73. package/cjs/services/chain-service/helper/api-helper/spec/ares-parachain.js +0 -192
  74. package/cjs/services/chain-service/helper/api-helper/spec/astar.js +0 -44
  75. package/cjs/services/chain-service/helper/api-helper/spec/automata.js +0 -43
  76. package/cjs/services/chain-service/helper/api-helper/spec/basilisk.js +0 -139
  77. package/cjs/services/chain-service/helper/api-helper/spec/beresheet.js +0 -12
  78. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +0 -11
  79. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +0 -11
  80. package/cjs/services/chain-service/helper/api-helper/spec/bifrost.js +0 -11
  81. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +0 -11
  82. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +0 -122
  83. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry.js +0 -84
  84. package/cjs/services/chain-service/helper/api-helper/spec/canvas.js +0 -31
  85. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +0 -77
  86. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge.js +0 -31
  87. package/cjs/services/chain-service/helper/api-helper/spec/chainx.js +0 -403
  88. package/cjs/services/chain-service/helper/api-helper/spec/clover-rococo.js +0 -68
  89. package/cjs/services/chain-service/helper/api-helper/spec/clover.js +0 -34
  90. package/cjs/services/chain-service/helper/api-helper/spec/coinversation.js +0 -24
  91. package/cjs/services/chain-service/helper/api-helper/spec/competitors-club.js +0 -84
  92. package/cjs/services/chain-service/helper/api-helper/spec/crab.js +0 -11
  93. package/cjs/services/chain-service/helper/api-helper/spec/crown-sterling.js +0 -55
  94. package/cjs/services/chain-service/helper/api-helper/spec/crust.js +0 -11
  95. package/cjs/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +0 -24
  96. package/cjs/services/chain-service/helper/api-helper/spec/darwinia.js +0 -11
  97. package/cjs/services/chain-service/helper/api-helper/spec/datahighway.js +0 -240
  98. package/cjs/services/chain-service/helper/api-helper/spec/dock-mainnet.js +0 -16
  99. package/cjs/services/chain-service/helper/api-helper/spec/dock-testnet.js +0 -16
  100. package/cjs/services/chain-service/helper/api-helper/spec/dolphin.js +0 -29
  101. package/cjs/services/chain-service/helper/api-helper/spec/dotmog.js +0 -65
  102. package/cjs/services/chain-service/helper/api-helper/spec/eave.js +0 -416
  103. package/cjs/services/chain-service/helper/api-helper/spec/edgeware.js +0 -11
  104. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +0 -75
  105. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +0 -52
  106. package/cjs/services/chain-service/helper/api-helper/spec/encointer-para.js +0 -79
  107. package/cjs/services/chain-service/helper/api-helper/spec/equilibrium.js +0 -109
  108. package/cjs/services/chain-service/helper/api-helper/spec/fantour.js +0 -70
  109. package/cjs/services/chain-service/helper/api-helper/spec/galital-parachain.js +0 -65
  110. package/cjs/services/chain-service/helper/api-helper/spec/galital.js +0 -70
  111. package/cjs/services/chain-service/helper/api-helper/spec/galois.js +0 -54
  112. package/cjs/services/chain-service/helper/api-helper/spec/gamepower.js +0 -71
  113. package/cjs/services/chain-service/helper/api-helper/spec/genshiro.js +0 -31
  114. package/cjs/services/chain-service/helper/api-helper/spec/hanonycash.js +0 -33
  115. package/cjs/services/chain-service/helper/api-helper/spec/hydrate.js +0 -59
  116. package/cjs/services/chain-service/helper/api-helper/spec/idavoll.js +0 -24
  117. package/cjs/services/chain-service/helper/api-helper/spec/index.js +0 -274
  118. package/cjs/services/chain-service/helper/api-helper/spec/integritee.js +0 -35
  119. package/cjs/services/chain-service/helper/api-helper/spec/interbtc.js +0 -60
  120. package/cjs/services/chain-service/helper/api-helper/spec/ipse.js +0 -113
  121. package/cjs/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +0 -24
  122. package/cjs/services/chain-service/helper/api-helper/spec/jupiter.js +0 -70
  123. package/cjs/services/chain-service/helper/api-helper/spec/khala.js +0 -11
  124. package/cjs/services/chain-service/helper/api-helper/spec/kilt.js +0 -11
  125. package/cjs/services/chain-service/helper/api-helper/spec/konomi.js +0 -24
  126. package/cjs/services/chain-service/helper/api-helper/spec/kpron.js +0 -24
  127. package/cjs/services/chain-service/helper/api-helper/spec/kulupu.js +0 -64
  128. package/cjs/services/chain-service/helper/api-helper/spec/kusari.js +0 -45
  129. package/cjs/services/chain-service/helper/api-helper/spec/kylin.js +0 -36
  130. package/cjs/services/chain-service/helper/api-helper/spec/laminar.js +0 -11
  131. package/cjs/services/chain-service/helper/api-helper/spec/litentry.js +0 -24
  132. package/cjs/services/chain-service/helper/api-helper/spec/mangata.js +0 -20
  133. package/cjs/services/chain-service/helper/api-helper/spec/manta.js +0 -29
  134. package/cjs/services/chain-service/helper/api-helper/spec/mathchain.js +0 -54
  135. package/cjs/services/chain-service/helper/api-helper/spec/moonbeam.js +0 -11
  136. package/cjs/services/chain-service/helper/api-helper/spec/moonsama-development.js +0 -24
  137. package/cjs/services/chain-service/helper/api-helper/spec/mybank.js +0 -87
  138. package/cjs/services/chain-service/helper/api-helper/spec/neatcoin.js +0 -32
  139. package/cjs/services/chain-service/helper/api-helper/spec/neumann.js +0 -55
  140. package/cjs/services/chain-service/helper/api-helper/spec/nftmart.js +0 -134
  141. package/cjs/services/chain-service/helper/api-helper/spec/nodle.js +0 -53
  142. package/cjs/services/chain-service/helper/api-helper/spec/opal.js +0 -15
  143. package/cjs/services/chain-service/helper/api-helper/spec/opportunity.js +0 -12
  144. package/cjs/services/chain-service/helper/api-helper/spec/origintrail.js +0 -206
  145. package/cjs/services/chain-service/helper/api-helper/spec/pangolin.js +0 -11
  146. package/cjs/services/chain-service/helper/api-helper/spec/pangoro.js +0 -12
  147. package/cjs/services/chain-service/helper/api-helper/spec/parallel.js +0 -11
  148. package/cjs/services/chain-service/helper/api-helper/spec/parami.js +0 -21
  149. package/cjs/services/chain-service/helper/api-helper/spec/phoenix.js +0 -52
  150. package/cjs/services/chain-service/helper/api-helper/spec/pichiu.js +0 -36
  151. package/cjs/services/chain-service/helper/api-helper/spec/plasm.js +0 -54
  152. package/cjs/services/chain-service/helper/api-helper/spec/polkadex.js +0 -32
  153. package/cjs/services/chain-service/helper/api-helper/spec/polkafoundry.js +0 -43
  154. package/cjs/services/chain-service/helper/api-helper/spec/polymesh.js +0 -21
  155. package/cjs/services/chain-service/helper/api-helper/spec/pontem.js +0 -11
  156. package/cjs/services/chain-service/helper/api-helper/spec/prism.js +0 -24
  157. package/cjs/services/chain-service/helper/api-helper/spec/quartz.js +0 -15
  158. package/cjs/services/chain-service/helper/api-helper/spec/realis.js +0 -42
  159. package/cjs/services/chain-service/helper/api-helper/spec/riochain.js +0 -104
  160. package/cjs/services/chain-service/helper/api-helper/spec/robonomics.js +0 -41
  161. package/cjs/services/chain-service/helper/api-helper/spec/shibuya.js +0 -54
  162. package/cjs/services/chain-service/helper/api-helper/spec/shiden.js +0 -54
  163. package/cjs/services/chain-service/helper/api-helper/spec/snowbridge.js +0 -11
  164. package/cjs/services/chain-service/helper/api-helper/spec/soraSubstrate.js +0 -11
  165. package/cjs/services/chain-service/helper/api-helper/spec/spanner.js +0 -501
  166. package/cjs/services/chain-service/helper/api-helper/spec/stafi.js +0 -25
  167. package/cjs/services/chain-service/helper/api-helper/spec/standard.js +0 -12
  168. package/cjs/services/chain-service/helper/api-helper/spec/subdao.js +0 -21
  169. package/cjs/services/chain-service/helper/api-helper/spec/subgame.js +0 -185
  170. package/cjs/services/chain-service/helper/api-helper/spec/subsocial.js +0 -15
  171. package/cjs/services/chain-service/helper/api-helper/spec/subspace.js +0 -127
  172. package/cjs/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +0 -23
  173. package/cjs/services/chain-service/helper/api-helper/spec/swapdex.js +0 -45
  174. package/cjs/services/chain-service/helper/api-helper/spec/ternoa.js +0 -95
  175. package/cjs/services/chain-service/helper/api-helper/spec/trustbase.js +0 -24
  176. package/cjs/services/chain-service/helper/api-helper/spec/uart.js +0 -289
  177. package/cjs/services/chain-service/helper/api-helper/spec/unique.js +0 -124
  178. package/cjs/services/chain-service/helper/api-helper/spec/unitv.js +0 -25
  179. package/cjs/services/chain-service/helper/api-helper/spec/vln-rococo.js +0 -109
  180. package/cjs/services/chain-service/helper/api-helper/spec/vln.js +0 -45
  181. package/cjs/services/chain-service/helper/api-helper/spec/vodka.js +0 -22
  182. package/cjs/services/chain-service/helper/api-helper/spec/web3games.js +0 -43
  183. package/cjs/services/chain-service/helper/api-helper/spec/westlake.js +0 -305
  184. package/cjs/services/chain-service/helper/api-helper/spec/zCloak.js +0 -46
  185. package/cjs/services/chain-service/helper/api-helper/spec/zeitgeist.js +0 -33
  186. package/cjs/services/chain-service/helper/api-helper/spec/zenlink.js +0 -57
  187. package/cjs/services/chain-service/helper/api-helper/spec/zero.js +0 -11
  188. package/cjs/services/chain-service/helper/api-helper/util.js +0 -25
  189. package/services/chain-service/helper/api-helper/chain/crust-maxwell.d.ts +0 -98
  190. package/services/chain-service/helper/api-helper/chain/crust-maxwell.js +0 -103
  191. package/services/chain-service/helper/api-helper/chain/index.d.ts +0 -1943
  192. package/services/chain-service/helper/api-helper/chain/index.js +0 -11
  193. package/services/chain-service/helper/api-helper/index.d.ts +0 -7
  194. package/services/chain-service/helper/api-helper/index.js +0 -18
  195. package/services/chain-service/helper/api-helper/spec/acala.d.ts +0 -42
  196. package/services/chain-service/helper/api-helper/spec/acala.js +0 -5
  197. package/services/chain-service/helper/api-helper/spec/ajuna.d.ts +0 -3
  198. package/services/chain-service/helper/api-helper/spec/ajuna.js +0 -15
  199. package/services/chain-service/helper/api-helper/spec/altair.d.ts +0 -3
  200. package/services/chain-service/helper/api-helper/spec/altair.js +0 -24
  201. package/services/chain-service/helper/api-helper/spec/apron.d.ts +0 -3
  202. package/services/chain-service/helper/api-helper/spec/apron.js +0 -17
  203. package/services/chain-service/helper/api-helper/spec/ares-gladios.d.ts +0 -3
  204. package/services/chain-service/helper/api-helper/spec/ares-gladios.js +0 -184
  205. package/services/chain-service/helper/api-helper/spec/ares-parachain.d.ts +0 -3
  206. package/services/chain-service/helper/api-helper/spec/ares-parachain.js +0 -185
  207. package/services/chain-service/helper/api-helper/spec/astar.d.ts +0 -3
  208. package/services/chain-service/helper/api-helper/spec/astar.js +0 -37
  209. package/services/chain-service/helper/api-helper/spec/automata.d.ts +0 -3
  210. package/services/chain-service/helper/api-helper/spec/automata.js +0 -36
  211. package/services/chain-service/helper/api-helper/spec/basilisk.d.ts +0 -3
  212. package/services/chain-service/helper/api-helper/spec/basilisk.js +0 -132
  213. package/services/chain-service/helper/api-helper/spec/beresheet.d.ts +0 -3
  214. package/services/chain-service/helper/api-helper/spec/beresheet.js +0 -9
  215. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.d.ts +0 -3
  216. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +0 -5
  217. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.d.ts +0 -3
  218. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +0 -5
  219. package/services/chain-service/helper/api-helper/spec/bifrost.d.ts +0 -3
  220. package/services/chain-service/helper/api-helper/spec/bifrost.js +0 -5
  221. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.d.ts +0 -2
  222. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +0 -5
  223. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.d.ts +0 -3
  224. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +0 -115
  225. package/services/chain-service/helper/api-helper/spec/bitcountry.d.ts +0 -3
  226. package/services/chain-service/helper/api-helper/spec/bitcountry.js +0 -77
  227. package/services/chain-service/helper/api-helper/spec/canvas.d.ts +0 -3
  228. package/services/chain-service/helper/api-helper/spec/canvas.js +0 -24
  229. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.d.ts +0 -3
  230. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +0 -70
  231. package/services/chain-service/helper/api-helper/spec/centrifuge.d.ts +0 -3
  232. package/services/chain-service/helper/api-helper/spec/centrifuge.js +0 -24
  233. package/services/chain-service/helper/api-helper/spec/chainx.d.ts +0 -3
  234. package/services/chain-service/helper/api-helper/spec/chainx.js +0 -396
  235. package/services/chain-service/helper/api-helper/spec/clover-rococo.d.ts +0 -3
  236. package/services/chain-service/helper/api-helper/spec/clover-rococo.js +0 -61
  237. package/services/chain-service/helper/api-helper/spec/clover.d.ts +0 -3
  238. package/services/chain-service/helper/api-helper/spec/clover.js +0 -27
  239. package/services/chain-service/helper/api-helper/spec/coinversation.d.ts +0 -3
  240. package/services/chain-service/helper/api-helper/spec/coinversation.js +0 -17
  241. package/services/chain-service/helper/api-helper/spec/competitors-club.d.ts +0 -3
  242. package/services/chain-service/helper/api-helper/spec/competitors-club.js +0 -77
  243. package/services/chain-service/helper/api-helper/spec/crab.d.ts +0 -2
  244. package/services/chain-service/helper/api-helper/spec/crab.js +0 -5
  245. package/services/chain-service/helper/api-helper/spec/crown-sterling.d.ts +0 -3
  246. package/services/chain-service/helper/api-helper/spec/crown-sterling.js +0 -48
  247. package/services/chain-service/helper/api-helper/spec/crust.d.ts +0 -3
  248. package/services/chain-service/helper/api-helper/spec/crust.js +0 -5
  249. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.d.ts +0 -3
  250. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +0 -17
  251. package/services/chain-service/helper/api-helper/spec/darwinia.d.ts +0 -2
  252. package/services/chain-service/helper/api-helper/spec/darwinia.js +0 -5
  253. package/services/chain-service/helper/api-helper/spec/datahighway.d.ts +0 -3
  254. package/services/chain-service/helper/api-helper/spec/datahighway.js +0 -233
  255. package/services/chain-service/helper/api-helper/spec/dock-mainnet.d.ts +0 -3
  256. package/services/chain-service/helper/api-helper/spec/dock-mainnet.js +0 -9
  257. package/services/chain-service/helper/api-helper/spec/dock-testnet.d.ts +0 -3
  258. package/services/chain-service/helper/api-helper/spec/dock-testnet.js +0 -9
  259. package/services/chain-service/helper/api-helper/spec/dolphin.d.ts +0 -3
  260. package/services/chain-service/helper/api-helper/spec/dolphin.js +0 -22
  261. package/services/chain-service/helper/api-helper/spec/dotmog.d.ts +0 -3
  262. package/services/chain-service/helper/api-helper/spec/dotmog.js +0 -58
  263. package/services/chain-service/helper/api-helper/spec/eave.d.ts +0 -3
  264. package/services/chain-service/helper/api-helper/spec/eave.js +0 -409
  265. package/services/chain-service/helper/api-helper/spec/edgeware.d.ts +0 -3
  266. package/services/chain-service/helper/api-helper/spec/edgeware.js +0 -7
  267. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.d.ts +0 -3
  268. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +0 -68
  269. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.d.ts +0 -3
  270. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +0 -45
  271. package/services/chain-service/helper/api-helper/spec/encointer-para.d.ts +0 -3
  272. package/services/chain-service/helper/api-helper/spec/encointer-para.js +0 -72
  273. package/services/chain-service/helper/api-helper/spec/equilibrium.d.ts +0 -8
  274. package/services/chain-service/helper/api-helper/spec/equilibrium.js +0 -97
  275. package/services/chain-service/helper/api-helper/spec/fantour.d.ts +0 -3
  276. package/services/chain-service/helper/api-helper/spec/fantour.js +0 -63
  277. package/services/chain-service/helper/api-helper/spec/galital-parachain.d.ts +0 -3
  278. package/services/chain-service/helper/api-helper/spec/galital-parachain.js +0 -58
  279. package/services/chain-service/helper/api-helper/spec/galital.d.ts +0 -3
  280. package/services/chain-service/helper/api-helper/spec/galital.js +0 -63
  281. package/services/chain-service/helper/api-helper/spec/galois.d.ts +0 -3
  282. package/services/chain-service/helper/api-helper/spec/galois.js +0 -47
  283. package/services/chain-service/helper/api-helper/spec/gamepower.d.ts +0 -3
  284. package/services/chain-service/helper/api-helper/spec/gamepower.js +0 -64
  285. package/services/chain-service/helper/api-helper/spec/genshiro.d.ts +0 -3
  286. package/services/chain-service/helper/api-helper/spec/genshiro.js +0 -24
  287. package/services/chain-service/helper/api-helper/spec/hanonycash.d.ts +0 -3
  288. package/services/chain-service/helper/api-helper/spec/hanonycash.js +0 -26
  289. package/services/chain-service/helper/api-helper/spec/hydrate.d.ts +0 -3
  290. package/services/chain-service/helper/api-helper/spec/hydrate.js +0 -52
  291. package/services/chain-service/helper/api-helper/spec/idavoll.d.ts +0 -3
  292. package/services/chain-service/helper/api-helper/spec/idavoll.js +0 -17
  293. package/services/chain-service/helper/api-helper/spec/index.d.ts +0 -3
  294. package/services/chain-service/helper/api-helper/spec/index.js +0 -266
  295. package/services/chain-service/helper/api-helper/spec/integritee.d.ts +0 -3
  296. package/services/chain-service/helper/api-helper/spec/integritee.js +0 -28
  297. package/services/chain-service/helper/api-helper/spec/interbtc.d.ts +0 -7
  298. package/services/chain-service/helper/api-helper/spec/interbtc.js +0 -50
  299. package/services/chain-service/helper/api-helper/spec/ipse.d.ts +0 -3
  300. package/services/chain-service/helper/api-helper/spec/ipse.js +0 -106
  301. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.d.ts +0 -3
  302. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +0 -17
  303. package/services/chain-service/helper/api-helper/spec/jupiter.d.ts +0 -3
  304. package/services/chain-service/helper/api-helper/spec/jupiter.js +0 -63
  305. package/services/chain-service/helper/api-helper/spec/khala.d.ts +0 -3
  306. package/services/chain-service/helper/api-helper/spec/khala.js +0 -5
  307. package/services/chain-service/helper/api-helper/spec/kilt.d.ts +0 -3
  308. package/services/chain-service/helper/api-helper/spec/kilt.js +0 -5
  309. package/services/chain-service/helper/api-helper/spec/konomi.d.ts +0 -3
  310. package/services/chain-service/helper/api-helper/spec/konomi.js +0 -17
  311. package/services/chain-service/helper/api-helper/spec/kpron.d.ts +0 -3
  312. package/services/chain-service/helper/api-helper/spec/kpron.js +0 -17
  313. package/services/chain-service/helper/api-helper/spec/kulupu.d.ts +0 -3
  314. package/services/chain-service/helper/api-helper/spec/kulupu.js +0 -57
  315. package/services/chain-service/helper/api-helper/spec/kusari.d.ts +0 -3
  316. package/services/chain-service/helper/api-helper/spec/kusari.js +0 -38
  317. package/services/chain-service/helper/api-helper/spec/kylin.d.ts +0 -3
  318. package/services/chain-service/helper/api-helper/spec/kylin.js +0 -29
  319. package/services/chain-service/helper/api-helper/spec/laminar.d.ts +0 -3
  320. package/services/chain-service/helper/api-helper/spec/laminar.js +0 -5
  321. package/services/chain-service/helper/api-helper/spec/litentry.d.ts +0 -3
  322. package/services/chain-service/helper/api-helper/spec/litentry.js +0 -17
  323. package/services/chain-service/helper/api-helper/spec/mangata.d.ts +0 -3
  324. package/services/chain-service/helper/api-helper/spec/mangata.js +0 -13
  325. package/services/chain-service/helper/api-helper/spec/manta.d.ts +0 -3
  326. package/services/chain-service/helper/api-helper/spec/manta.js +0 -22
  327. package/services/chain-service/helper/api-helper/spec/mathchain.d.ts +0 -3
  328. package/services/chain-service/helper/api-helper/spec/mathchain.js +0 -47
  329. package/services/chain-service/helper/api-helper/spec/moonbeam.d.ts +0 -2
  330. package/services/chain-service/helper/api-helper/spec/moonbeam.js +0 -5
  331. package/services/chain-service/helper/api-helper/spec/moonsama-development.d.ts +0 -3
  332. package/services/chain-service/helper/api-helper/spec/moonsama-development.js +0 -17
  333. package/services/chain-service/helper/api-helper/spec/mybank.d.ts +0 -3
  334. package/services/chain-service/helper/api-helper/spec/mybank.js +0 -80
  335. package/services/chain-service/helper/api-helper/spec/neatcoin.d.ts +0 -3
  336. package/services/chain-service/helper/api-helper/spec/neatcoin.js +0 -25
  337. package/services/chain-service/helper/api-helper/spec/neumann.d.ts +0 -3
  338. package/services/chain-service/helper/api-helper/spec/neumann.js +0 -48
  339. package/services/chain-service/helper/api-helper/spec/nftmart.d.ts +0 -3
  340. package/services/chain-service/helper/api-helper/spec/nftmart.js +0 -127
  341. package/services/chain-service/helper/api-helper/spec/nodle.d.ts +0 -3
  342. package/services/chain-service/helper/api-helper/spec/nodle.js +0 -46
  343. package/services/chain-service/helper/api-helper/spec/opal.d.ts +0 -3
  344. package/services/chain-service/helper/api-helper/spec/opal.js +0 -9
  345. package/services/chain-service/helper/api-helper/spec/opportunity.d.ts +0 -3
  346. package/services/chain-service/helper/api-helper/spec/opportunity.js +0 -5
  347. package/services/chain-service/helper/api-helper/spec/origintrail.d.ts +0 -5
  348. package/services/chain-service/helper/api-helper/spec/origintrail.js +0 -198
  349. package/services/chain-service/helper/api-helper/spec/pangolin.d.ts +0 -2
  350. package/services/chain-service/helper/api-helper/spec/pangolin.js +0 -5
  351. package/services/chain-service/helper/api-helper/spec/pangoro.d.ts +0 -2
  352. package/services/chain-service/helper/api-helper/spec/pangoro.js +0 -7
  353. package/services/chain-service/helper/api-helper/spec/parallel.d.ts +0 -14
  354. package/services/chain-service/helper/api-helper/spec/parallel.js +0 -5
  355. package/services/chain-service/helper/api-helper/spec/parami.d.ts +0 -3
  356. package/services/chain-service/helper/api-helper/spec/parami.js +0 -14
  357. package/services/chain-service/helper/api-helper/spec/phoenix.d.ts +0 -3
  358. package/services/chain-service/helper/api-helper/spec/phoenix.js +0 -45
  359. package/services/chain-service/helper/api-helper/spec/pichiu.d.ts +0 -3
  360. package/services/chain-service/helper/api-helper/spec/pichiu.js +0 -29
  361. package/services/chain-service/helper/api-helper/spec/plasm.d.ts +0 -3
  362. package/services/chain-service/helper/api-helper/spec/plasm.js +0 -47
  363. package/services/chain-service/helper/api-helper/spec/polkadex.d.ts +0 -3
  364. package/services/chain-service/helper/api-helper/spec/polkadex.js +0 -25
  365. package/services/chain-service/helper/api-helper/spec/polkafoundry.d.ts +0 -3
  366. package/services/chain-service/helper/api-helper/spec/polkafoundry.js +0 -36
  367. package/services/chain-service/helper/api-helper/spec/polymesh.d.ts +0 -3
  368. package/services/chain-service/helper/api-helper/spec/polymesh.js +0 -13
  369. package/services/chain-service/helper/api-helper/spec/pontem.d.ts +0 -2
  370. package/services/chain-service/helper/api-helper/spec/pontem.js +0 -5
  371. package/services/chain-service/helper/api-helper/spec/prism.d.ts +0 -3
  372. package/services/chain-service/helper/api-helper/spec/prism.js +0 -17
  373. package/services/chain-service/helper/api-helper/spec/quartz.d.ts +0 -3
  374. package/services/chain-service/helper/api-helper/spec/quartz.js +0 -9
  375. package/services/chain-service/helper/api-helper/spec/realis.d.ts +0 -3
  376. package/services/chain-service/helper/api-helper/spec/realis.js +0 -35
  377. package/services/chain-service/helper/api-helper/spec/riochain.d.ts +0 -3
  378. package/services/chain-service/helper/api-helper/spec/riochain.js +0 -97
  379. package/services/chain-service/helper/api-helper/spec/robonomics.d.ts +0 -3
  380. package/services/chain-service/helper/api-helper/spec/robonomics.js +0 -34
  381. package/services/chain-service/helper/api-helper/spec/shibuya.d.ts +0 -3
  382. package/services/chain-service/helper/api-helper/spec/shibuya.js +0 -47
  383. package/services/chain-service/helper/api-helper/spec/shiden.d.ts +0 -3
  384. package/services/chain-service/helper/api-helper/spec/shiden.js +0 -47
  385. package/services/chain-service/helper/api-helper/spec/snowbridge.d.ts +0 -2
  386. package/services/chain-service/helper/api-helper/spec/snowbridge.js +0 -5
  387. package/services/chain-service/helper/api-helper/spec/soraSubstrate.d.ts +0 -3
  388. package/services/chain-service/helper/api-helper/spec/soraSubstrate.js +0 -5
  389. package/services/chain-service/helper/api-helper/spec/spanner.d.ts +0 -3
  390. package/services/chain-service/helper/api-helper/spec/spanner.js +0 -494
  391. package/services/chain-service/helper/api-helper/spec/stafi.d.ts +0 -3
  392. package/services/chain-service/helper/api-helper/spec/stafi.js +0 -18
  393. package/services/chain-service/helper/api-helper/spec/standard.d.ts +0 -3
  394. package/services/chain-service/helper/api-helper/spec/standard.js +0 -5
  395. package/services/chain-service/helper/api-helper/spec/subdao.d.ts +0 -3
  396. package/services/chain-service/helper/api-helper/spec/subdao.js +0 -14
  397. package/services/chain-service/helper/api-helper/spec/subgame.d.ts +0 -3
  398. package/services/chain-service/helper/api-helper/spec/subgame.js +0 -178
  399. package/services/chain-service/helper/api-helper/spec/subsocial.d.ts +0 -2
  400. package/services/chain-service/helper/api-helper/spec/subsocial.js +0 -8
  401. package/services/chain-service/helper/api-helper/spec/subspace.d.ts +0 -0
  402. package/services/chain-service/helper/api-helper/spec/subspace.js +0 -126
  403. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.d.ts +0 -3
  404. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +0 -16
  405. package/services/chain-service/helper/api-helper/spec/swapdex.d.ts +0 -3
  406. package/services/chain-service/helper/api-helper/spec/swapdex.js +0 -38
  407. package/services/chain-service/helper/api-helper/spec/ternoa.d.ts +0 -3
  408. package/services/chain-service/helper/api-helper/spec/ternoa.js +0 -88
  409. package/services/chain-service/helper/api-helper/spec/trustbase.d.ts +0 -3
  410. package/services/chain-service/helper/api-helper/spec/trustbase.js +0 -17
  411. package/services/chain-service/helper/api-helper/spec/uart.d.ts +0 -3
  412. package/services/chain-service/helper/api-helper/spec/uart.js +0 -282
  413. package/services/chain-service/helper/api-helper/spec/unique.d.ts +0 -3
  414. package/services/chain-service/helper/api-helper/spec/unique.js +0 -117
  415. package/services/chain-service/helper/api-helper/spec/unitv.d.ts +0 -3
  416. package/services/chain-service/helper/api-helper/spec/unitv.js +0 -18
  417. package/services/chain-service/helper/api-helper/spec/vln-rococo.d.ts +0 -3
  418. package/services/chain-service/helper/api-helper/spec/vln-rococo.js +0 -102
  419. package/services/chain-service/helper/api-helper/spec/vln.d.ts +0 -3
  420. package/services/chain-service/helper/api-helper/spec/vln.js +0 -38
  421. package/services/chain-service/helper/api-helper/spec/vodka.d.ts +0 -3
  422. package/services/chain-service/helper/api-helper/spec/vodka.js +0 -15
  423. package/services/chain-service/helper/api-helper/spec/web3games.d.ts +0 -3
  424. package/services/chain-service/helper/api-helper/spec/web3games.js +0 -36
  425. package/services/chain-service/helper/api-helper/spec/westlake.d.ts +0 -3
  426. package/services/chain-service/helper/api-helper/spec/westlake.js +0 -298
  427. package/services/chain-service/helper/api-helper/spec/zCloak.d.ts +0 -3
  428. package/services/chain-service/helper/api-helper/spec/zCloak.js +0 -39
  429. package/services/chain-service/helper/api-helper/spec/zeitgeist.d.ts +0 -3
  430. package/services/chain-service/helper/api-helper/spec/zeitgeist.js +0 -24
  431. package/services/chain-service/helper/api-helper/spec/zenlink.d.ts +0 -3
  432. package/services/chain-service/helper/api-helper/spec/zenlink.js +0 -50
  433. package/services/chain-service/helper/api-helper/spec/zero.d.ts +0 -3
  434. package/services/chain-service/helper/api-helper/spec/zero.js +0 -5
  435. package/services/chain-service/helper/api-helper/util.d.ts +0 -5
  436. package/services/chain-service/helper/api-helper/util.js +0 -15
@@ -42,14 +42,13 @@ class ChainService {
42
42
  constructor(dbService, eventService) {
43
43
  this.dbService = dbService;
44
44
  this.eventService = eventService;
45
- this.substrateChainHandler = new _SubstrateChainHandler.SubstrateChainHandler();
46
- this.evmChainHandler = new _EvmChainHandler.EvmChainHandler();
47
- this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
48
45
  this.chainStateMapSubject.next(this.dataMap.chainStateMap);
46
+ this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
49
47
  this.assetRegistrySubject.next(this.dataMap.assetRegistry);
50
48
  this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
49
+ this.substrateChainHandler = new _SubstrateChainHandler.SubstrateChainHandler(this);
50
+ this.evmChainHandler = new _EvmChainHandler.EvmChainHandler(this);
51
51
  this.logger = (0, _logger.logger)('chain-service');
52
- this.refreshChainStateInterval(3000, 6);
53
52
  }
54
53
 
55
54
  // Getter
@@ -179,6 +178,15 @@ class ChainService {
179
178
  getChainStateByKey(key) {
180
179
  return this.dataMap.chainStateMap[key];
181
180
  }
181
+ getActiveChains() {
182
+ return Object.entries(this.dataMap.chainStateMap).filter(_ref => {
183
+ let [, chainState] = _ref;
184
+ return (0, _utils._isChainEnabled)(chainState);
185
+ }).map(_ref2 => {
186
+ let [key] = _ref2;
187
+ return key;
188
+ });
189
+ }
182
190
  getSupportedSmartContractTypes() {
183
191
  return [_types._AssetType.ERC20, _types._AssetType.ERC721, _types._AssetType.PSP22, _types._AssetType.PSP34];
184
192
  }
@@ -360,6 +368,8 @@ class ChainService {
360
368
 
361
369
  // Business logic
362
370
  async init() {
371
+ await this.eventService.waitDatabaseReady;
372
+
363
373
  // TODO: reconsider the flow of initiation
364
374
  const [latestAssetRefMap, latestMultiChainAssetMap] = await Promise.all([this.fetchLatestData(_constants._ASSET_REF_SRC, _chainList.AssetRefMap), this.fetchLatestData(_constants._MULTI_CHAIN_ASSET_SRC, _chainList.MultiChainAssetMap)]);
365
375
  this.multiChainAssetMapSubject.next(latestMultiChainAssetMap);
@@ -369,29 +379,53 @@ class ChainService {
369
379
  this.chainStateMapSubject.next(this.getChainStateMap());
370
380
  this.assetRegistrySubject.next(this.getAssetRegistry());
371
381
  this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
372
- this.initApis();
382
+ await this.initApis();
373
383
  await this.initAssetSettings();
374
384
  }
375
- initApis() {
376
- // TODO: this might be async
377
- Object.entries(this.getChainInfoMap()).forEach(_ref => {
378
- let [slug, chainInfo] = _ref;
379
- if (this.getChainStateByKey(slug).active) {
380
- this.initApiForChain(chainInfo);
385
+ async initApis() {
386
+ const chainInfoMap = this.getChainInfoMap();
387
+ const chainStateMap = this.getChainStateMap();
388
+ await Promise.all(Object.entries(chainInfoMap).filter(_ref3 => {
389
+ var _chainStateMap$slug;
390
+ let [slug] = _ref3;
391
+ return (_chainStateMap$slug = chainStateMap[slug]) === null || _chainStateMap$slug === void 0 ? void 0 : _chainStateMap$slug.active;
392
+ }).map(_ref4 => {
393
+ let [, chainInfo] = _ref4;
394
+ try {
395
+ return this.initApiForChain(chainInfo);
396
+ } catch (e) {
397
+ console.error(e);
398
+ return Promise.resolve();
381
399
  }
382
- });
400
+ }));
383
401
  }
384
- initApiForChain(chainInfo) {
402
+ async initApiForChain(chainInfo) {
385
403
  const {
386
404
  endpoint,
387
405
  providerName
388
406
  } = this.getChainCurrentProviderByKey(chainInfo.slug);
389
- if (chainInfo.substrateInfo !== null) {
390
- const chainApi = this.initApi(chainInfo.slug, endpoint, 'substrate', providerName);
407
+ const onUpdateStatus = isConnected => {
408
+ const currentStatus = this.getChainStateByKey(chainInfo.slug).connectionStatus;
409
+ const newStatus = isConnected ? _types3._ChainConnectionStatus.CONNECTED : _types3._ChainConnectionStatus.DISCONNECTED;
410
+
411
+ // Avoid unnecessary update in case disable chain
412
+ if (currentStatus !== newStatus) {
413
+ this.setChainConnectionStatus(chainInfo.slug, newStatus);
414
+ this.chainStateMapSubject.next(this.getChainStateMap());
415
+ }
416
+ };
417
+ if (chainInfo.substrateInfo !== null && chainInfo.substrateInfo !== undefined) {
418
+ const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
419
+ providerName,
420
+ onUpdateStatus
421
+ });
391
422
  this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
392
423
  }
393
- if (chainInfo.evmInfo !== null) {
394
- const chainApi = this.initApi(chainInfo.slug, endpoint, 'evm', providerName);
424
+ if (chainInfo.evmInfo !== null && chainInfo.evmInfo !== undefined) {
425
+ const chainApi = await this.evmChainHandler.initApi(chainInfo.slug, endpoint, {
426
+ providerName,
427
+ onUpdateStatus
428
+ });
395
429
  this.evmChainHandler.setEvmApi(chainInfo.slug, chainApi);
396
430
  }
397
431
  }
@@ -403,49 +437,53 @@ class ChainService {
403
437
  this.evmChainHandler.destroyEvmApi(chainInfo.slug);
404
438
  }
405
439
  }
406
- initApi(slug, endpoint) {
407
- let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'substrate';
408
- let providerName = arguments.length > 3 ? arguments[3] : undefined;
409
- switch (type) {
410
- case 'evm':
411
- return this.evmChainHandler.initApi(slug, endpoint, providerName);
412
- default:
413
- // substrate by default
414
- return this.substrateChainHandler.initApi(slug, endpoint, providerName);
415
- }
416
- }
417
- _enableChain(chainSlug) {
440
+ async enableChain(chainSlug) {
418
441
  const chainInfo = this.getChainInfoByKey(chainSlug);
419
442
  const chainStateMap = this.getChainStateMap();
420
443
  if (chainStateMap[chainSlug].active || this.lockChainInfoMap) {
421
444
  return false;
422
445
  }
423
446
  this.lockChainInfoMap = true;
424
- chainStateMap[chainSlug].active = true;
425
- this.initApiForChain(chainInfo);
426
- this.refreshChainStateInterval(3000, 6);
427
447
  this.dbService.updateChainStore({
428
448
  ...chainInfo,
429
449
  active: true,
430
450
  currentProvider: chainStateMap[chainSlug].currentProvider
431
451
  }).catch(console.error);
452
+ chainStateMap[chainSlug].active = true;
453
+ await this.initApiForChain(chainInfo);
432
454
  this.lockChainInfoMap = false;
433
455
  this.eventService.emit('chain.updateState', chainSlug);
456
+ this.updateChainStateMapSubscription();
434
457
  return true;
435
458
  }
436
- enableChain(chainSlug) {
437
- const rs = this._enableChain(chainSlug);
438
- if (rs) {
439
- this.updateChainStateMapSubscription();
440
- }
441
- return rs;
442
- }
443
- enableChains(chainSlugs) {
444
- const rs = chainSlugs.map(this._enableChain.bind(this));
445
- if (rs.some(r => r)) {
446
- this.updateChainStateMapSubscription();
459
+ async enableChains(chainSlugs) {
460
+ const chainInfoMap = this.getChainInfoMap();
461
+ const chainStateMap = this.getChainStateMap();
462
+ let needUpdate = false;
463
+ if (this.lockChainInfoMap) {
464
+ return false;
447
465
  }
448
- return rs.every(r => r);
466
+ this.lockChainInfoMap = true;
467
+ const initPromises = chainSlugs.map(async chainSlug => {
468
+ var _chainStateMap$chainS;
469
+ const chainInfo = chainInfoMap[chainSlug];
470
+ const currentState = (_chainStateMap$chainS = chainStateMap[chainSlug]) === null || _chainStateMap$chainS === void 0 ? void 0 : _chainStateMap$chainS.active;
471
+ if (!currentState) {
472
+ this.dbService.updateChainStore({
473
+ ...chainInfo,
474
+ active: true,
475
+ currentProvider: chainStateMap[chainSlug].currentProvider
476
+ }).catch(console.error);
477
+ chainStateMap[chainSlug].active = true;
478
+ await this.initApiForChain(chainInfo);
479
+ this.eventService.emit('chain.updateState', chainSlug);
480
+ needUpdate = true;
481
+ }
482
+ });
483
+ await Promise.all(initPromises);
484
+ this.lockChainInfoMap = false;
485
+ needUpdate && this.updateChainStateMapSubscription();
486
+ return needUpdate;
449
487
  }
450
488
  disableChain(chainSlug) {
451
489
  const chainInfo = this.getChainInfoByKey(chainSlug);
@@ -621,8 +659,8 @@ class ChainService {
621
659
  }
622
660
 
623
661
  // Fill in the missing chainState and storageData (new chains never before seen)
624
- Object.entries(mergedChainInfoMap).forEach(_ref2 => {
625
- let [slug, chainInfo] = _ref2;
662
+ Object.entries(mergedChainInfoMap).forEach(_ref5 => {
663
+ let [slug, chainInfo] = _ref5;
626
664
  if (!(slug in this.dataMap.chainStateMap)) {
627
665
  this.dataMap.chainStateMap[slug] = {
628
666
  currentProvider: Object.keys(chainInfo.providers)[0],
@@ -700,7 +738,7 @@ class ChainService {
700
738
  }
701
739
 
702
740
  // Can only update providers or block explorer, crowdloan url
703
- updateChain(params) {
741
+ async updateChain(params) {
704
742
  const chainSlug = params.chainEditInfo.slug;
705
743
  const targetChainInfo = this.getChainInfoByKey(chainSlug);
706
744
  const targetChainState = this.getChainStateByKey(chainSlug);
@@ -714,8 +752,8 @@ class ChainService {
714
752
  targetChainState.active = true;
715
753
  }
716
754
 
717
- // TODO: it might override existed API
718
- this.initApiForChain(targetChainInfo);
755
+ // It auto detects the change of api url to create new instance or reuse existed one
756
+ await this.initApiForChain(targetChainInfo);
719
757
  this.updateChainStateMapSubscription();
720
758
  }
721
759
  if (targetChainInfo.substrateInfo) {
@@ -740,7 +778,7 @@ class ChainService {
740
778
  this.eventService.emit('chain.updateState', chainSlug);
741
779
  }).catch(e => this.logger.error(e));
742
780
  }
743
- insertChain(params) {
781
+ async insertChain(params) {
744
782
  const chainInfoMap = this.getChainInfoMap();
745
783
  if (!params.chainSpec) {
746
784
  return;
@@ -798,7 +836,7 @@ class ChainService {
798
836
  currentProvider: params.chainEditInfo.currentProvider,
799
837
  slug: newChainSlug
800
838
  };
801
- this.initApiForChain(chainInfo);
839
+ await this.initApiForChain(chainInfo);
802
840
 
803
841
  // create a record in assetRegistry for native token and update store/subscription
804
842
  const nativeTokenSlug = this.upsertCustomToken({
@@ -829,7 +867,7 @@ class ChainService {
829
867
  }).catch(e => this.logger.error(e));
830
868
  return nativeTokenSlug;
831
869
  }
832
- upsertChain(params) {
870
+ async upsertChain(params) {
833
871
  if (this.lockChainInfoMap) {
834
872
  return;
835
873
  }
@@ -837,10 +875,10 @@ class ChainService {
837
875
  let result;
838
876
  if (params.mode === 'update') {
839
877
  // update existing chainInfo
840
- this.updateChain(params);
878
+ await this.updateChain(params);
841
879
  } else {
842
880
  // insert custom network
843
- result = this.insertChain(params);
881
+ result = await this.insertChain(params);
844
882
  }
845
883
  this.lockChainInfoMap = false;
846
884
  return result;
@@ -882,9 +920,9 @@ class ChainService {
882
920
  // TODO: EVM chain might have WS provider
883
921
  if (provider.startsWith('http')) {
884
922
  // HTTP provider is EVM by default
885
- api = this.evmChainHandler.initApi('custom', provider);
923
+ api = await this.evmChainHandler.initApi('custom', provider);
886
924
  } else {
887
- api = this.substrateChainHandler.initApi('custom', provider);
925
+ api = await this.substrateChainHandler.initApi('custom', provider);
888
926
  }
889
927
  const connectionTimeout = new Promise(resolve => {
890
928
  const id = setTimeout(() => {
@@ -1069,70 +1107,21 @@ class ChainService {
1069
1107
  return `${originChain}-${assetType}-${symbol}`;
1070
1108
  }
1071
1109
  refreshSubstrateApi(slug) {
1072
- this.substrateChainHandler.refreshApi(slug);
1110
+ this.substrateChainHandler.recoverApi(slug).catch(console.error);
1073
1111
  }
1074
1112
  refreshEvmApi(slug) {
1075
- const {
1076
- endpoint,
1077
- providerName
1078
- } = this.getChainCurrentProviderByKey(slug);
1079
- this.evmChainHandler.refreshApi(slug, endpoint, providerName);
1080
- }
1081
- stopAllChainApis() {
1082
- // TODO: add logic for EvmApi
1083
- // Object.entries(this.apiMap.web3).forEach(([key, network]) => {
1084
- // if (network.currentProvider instanceof Web3.providers.WebsocketProvider) {
1085
- // if (network.currentProvider?.connected) {
1086
- // console.log(`[Web3] ${key} is connected`);
1087
- // network.currentProvider?.disconnect(code, reason);
1088
- // console.log(`[Web3] ${key} is ${network.currentProvider.connected ? 'connected' : 'disconnected'} now`);
1089
- // }
1090
- // }
1091
- // });
1092
-
1093
- return this.substrateChainHandler.disconnectAllApis();
1113
+ this.evmChainHandler.recoverApi(slug).catch(console.error);
1094
1114
  }
1095
- resumeAllChainApis() {
1096
- // TODO: add logic for EvmApi
1097
- // Object.entries(this.apiMap.web3).forEach(([key, network]) => {
1098
- // const currentProvider = network.currentProvider;
1099
-
1100
- // if (currentProvider instanceof Web3.providers.WebsocketProvider) {
1101
- // if (!currentProvider.connected) {
1102
- // console.log(`[Web3] ${key} is disconnected`);
1103
- // currentProvider?.connect();
1104
- // setTimeout(() => console.log(`[Web3] ${key} is ${currentProvider.connected ? 'connected' : 'disconnected'} now`), 500);
1105
- // }
1106
- // }
1107
- // });
1108
-
1109
- return this.substrateChainHandler.resumeAllApis();
1110
- }
1111
- refreshChainStateTimeout = undefined;
1112
- refreshChainStateTimes = 0;
1113
- refreshChainStateInterval() {
1114
- let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
1115
- let times = arguments.length > 1 ? arguments[1] : undefined;
1116
- clearTimeout(this.refreshChainStateTimeout);
1117
- setTimeout(() => {
1118
- if (times) {
1119
- this.refreshChainStateTimes = times;
1120
- }
1121
- this.refreshChainStateTimes -= 1;
1122
- if (this.refreshChainStateTimes < 0) {
1123
- return;
1124
- }
1125
- this.updateApiMapStatus().catch(console.error);
1126
- this.refreshChainStateTimeout = setTimeout(() => {
1127
- this.updateApiMapStatus().catch(console.error);
1128
- this.refreshChainStateInterval(0);
1129
- }, 3000);
1130
- }, delay);
1131
- }
1132
- async updateApiMapStatus() {
1115
+ async stopAllChainApis() {
1116
+ await Promise.all([this.substrateChainHandler.sleep(), this.evmChainHandler.sleep()]);
1117
+ }
1118
+ async resumeAllChainApis() {
1119
+ await Promise.all([this.substrateChainHandler.wakeUp(), this.evmChainHandler.wakeUp()]);
1120
+ }
1121
+ checkAndUpdateStatusMapForChain(chainSlug) {
1133
1122
  const substrateApiMap = this.getSubstrateApiMap();
1134
1123
  const evmApiMap = this.getEvmApiMap();
1135
- const chainStateMap = this.getChainStateMap();
1124
+ const chainState = this.getChainStateByKey(chainSlug);
1136
1125
  let update = false;
1137
1126
  function updateState(current, status) {
1138
1127
  if (current.connectionStatus !== status) {
@@ -1140,33 +1129,16 @@ class ChainService {
1140
1129
  update = true;
1141
1130
  }
1142
1131
  }
1143
- const promiseList = Object.entries(chainStateMap).map(async _ref3 => {
1144
- let [chain, chainState] = _ref3;
1145
- try {
1146
- if (chainState.active) {
1147
- if (substrateApiMap[chain]) {
1148
- const api = substrateApiMap[chain];
1149
- if (api.isApiConnected) {
1150
- updateState(chainState, _types3._ChainConnectionStatus.CONNECTED);
1151
- return;
1152
- }
1153
- } else if (evmApiMap[chain]) {
1154
- var _api$api;
1155
- const api = evmApiMap[chain];
1156
- if (await (api === null || api === void 0 ? void 0 : (_api$api = api.api) === null || _api$api === void 0 ? void 0 : _api$api.eth.net.isListening())) {
1157
- updateState(chainState, _types3._ChainConnectionStatus.CONNECTED);
1158
- return;
1159
- }
1160
- }
1161
- }
1162
- updateState(chainState, _types3._ChainConnectionStatus.DISCONNECTED);
1163
- } catch (e) {
1164
- updateState(chainState, _types3._ChainConnectionStatus.DISCONNECTED);
1132
+ if (chainState.active) {
1133
+ const api = substrateApiMap[chainSlug] || evmApiMap[chainSlug];
1134
+ if (api) {
1135
+ updateState(chainState, api.isApiConnected ? _types3._ChainConnectionStatus.CONNECTED : _types3._ChainConnectionStatus.DISCONNECTED);
1165
1136
  }
1166
- });
1167
- await Promise.all(promiseList);
1137
+ } else {
1138
+ updateState(chainState, _types3._ChainConnectionStatus.DISCONNECTED);
1139
+ }
1168
1140
  if (update) {
1169
- this.chainStateMapSubject.next(chainStateMap);
1141
+ this.dataMap.chainStateMap[chainSlug] = chainState;
1170
1142
  }
1171
1143
  }
1172
1144
  async initAssetSettings() {
@@ -1231,7 +1203,7 @@ class ChainService {
1231
1203
 
1232
1204
  // if chain not enabled, then automatically enable
1233
1205
  if (chainState && !chainState.active) {
1234
- this.enableChain(chainState.slug);
1206
+ await this.enableChain(chainState.slug);
1235
1207
  needUpdateSubject = true;
1236
1208
  if (autoEnableNativeToken) {
1237
1209
  const nativeAsset = this.getNativeTokenInfo(assetInfo.originChain);
@@ -1295,5 +1267,11 @@ class ChainService {
1295
1267
  this.deleteCustomAssets(customToken);
1296
1268
  }
1297
1269
  }
1270
+ getMetadata(chain) {
1271
+ return this.dbService.stores.metadata.getMetadata(chain);
1272
+ }
1273
+ upsertMetadata(chain, metadata) {
1274
+ return this.dbService.stores.metadata.upsertMetadata(chain, metadata);
1275
+ }
1298
1276
  }
1299
1277
  exports.ChainService = ChainService;
@@ -21,6 +21,8 @@ class EventService extends _eventemitter.default {
21
21
  super();
22
22
  this.lazyTime = options.lazyTime;
23
23
  this.timeoutId = null;
24
+ this.waitCryptoReady = this.generateWaitPromise('crypto.ready');
25
+ this.waitDatabaseReady = this.generateWaitPromise('database.ready');
24
26
  this.waitKeyringReady = this.generateWaitPromise('keyring.ready');
25
27
  this.waitAccountReady = this.generateWaitPromise('account.ready');
26
28
  this.waitChainReady = this.generateWaitPromise('chain.ready');
@@ -208,7 +208,11 @@ class HistoryService {
208
208
  this.startRecoverHistories().catch(console.error);
209
209
  }
210
210
  async start() {
211
+ if (this.status === _types.ServiceStatus.STARTED) {
212
+ return;
213
+ }
211
214
  try {
215
+ await Promise.all([this.eventService.waitKeyringReady, this.eventService.waitChainReady]);
212
216
  this.startPromiseHandler = (0, _promise.createPromiseHandler)();
213
217
  this.status = _types.ServiceStatus.STARTING;
214
218
  await this.startCron();
@@ -18,9 +18,6 @@ class MigrationService {
18
18
  }
19
19
  async run() {
20
20
  const keys = Object.keys(_scripts.default).sort((a, b) => a.localeCompare(b));
21
-
22
- // Await timeout 1s
23
- await new Promise(resolve => setTimeout(resolve, 1000));
24
21
  for (let i = 0; i < keys.length; i++) {
25
22
  try {
26
23
  const JobClass = _scripts.default[keys[i]];
@@ -34,7 +34,7 @@ class MigrateNetworkSettings extends _Base.default {
34
34
  }
35
35
  });
36
36
  if (enableList.length > 0) {
37
- state.chainService.enableChains(enableList);
37
+ await state.chainService.enableChains(enableList);
38
38
 
39
39
  // Enable native token of these chains
40
40
  const currentAssetSettings = await state.chainService.getAssetSettings();
@@ -65,7 +65,6 @@ class PriceService {
65
65
  this.refreshPriceData(this.priceIds);
66
66
  }
67
67
  };
68
- await this.eventService.waitAssetReady;
69
68
  this.status = _types.ServiceStatus.INITIALIZED;
70
69
  this.eventService.on('asset.updateState', eventHandler);
71
70
  }
@@ -78,7 +77,11 @@ class PriceService {
78
77
  }
79
78
  startPromiseHandler = (0, _promise.createPromiseHandler)();
80
79
  async start() {
80
+ if (this.status === _types.ServiceStatus.STARTED) {
81
+ return;
82
+ }
81
83
  try {
84
+ await this.eventService.waitAssetReady;
82
85
  this.startPromiseHandler = (0, _promise.createPromiseHandler)();
83
86
  this.status = _types.ServiceStatus.STARTING;
84
87
  await this.startCron();
@@ -18,9 +18,13 @@ var _util = require("@polkadot/util");
18
18
  class DatabaseService {
19
19
  // TODO: might remove this
20
20
 
21
- constructor() {
21
+ constructor(eventService) {
22
+ this.eventService = eventService;
22
23
  this.logger = (0, _util.logger)('DB-Service');
23
24
  this._db = new _databases.default();
25
+ this._db.on('ready', () => {
26
+ this.eventService.emit('database.ready', true);
27
+ });
24
28
  this.stores = {
25
29
  price: new _dbStores.PriceStore(this._db.price),
26
30
  balance: new _dbStores.BalanceStore(this._db.balances),
@@ -30,6 +34,7 @@ class DatabaseService {
30
34
  staking: new _dbStores.StakingStore(this._db.stakings),
31
35
  transaction: new _dbStores.TransactionStore(this._db.transactions),
32
36
  migration: new _dbStores.MigrationStore(this._db.migrations),
37
+ metadata: new _dbStores.MetadataStore(this._db.metadata),
33
38
  chain: new _dbStores.ChainStore(this._db.chain),
34
39
  asset: new _dbStores.AssetStore(this._db.asset),
35
40
  // staking
@@ -33,6 +33,9 @@ class KoniDatabase extends _dexie.default {
33
33
  chainStakingMetadata: '[chain+type], chain, type',
34
34
  nominatorMetadata: '[chain+address+type], [chain+address], chain, address, type'
35
35
  });
36
+ this.conditionalVersion(2, {
37
+ metadata: 'genesisHash, chain'
38
+ });
36
39
  }
37
40
  conditionalVersion(version, schema, upgrade) {
38
41
  if (this.schemaVersion != null && this.schemaVersion < version) {
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _BaseStoreWithChain = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/BaseStoreWithChain"));
9
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
10
+ // SPDX-License-Identifier: Apache-2.0
11
+
12
+ class MetadataStore extends _BaseStoreWithChain.default {
13
+ getMetadata(chain) {
14
+ return this.table.where('chain').equals(chain).first();
15
+ }
16
+ upsertMetadata(chain, metadata) {
17
+ return this.table.put(metadata, chain);
18
+ }
19
+ getMetadataByGenesisHash(genesisHash) {
20
+ return this.table.where('[genesisHash]').equals([genesisHash]).first();
21
+ }
22
+ updateMetadataByGenesisHash(genesisHash, metadata) {
23
+ return this.table.put(metadata, genesisHash);
24
+ }
25
+ }
26
+ exports.default = MetadataStore;
@@ -28,6 +28,12 @@ Object.defineProperty(exports, "CrowdloanStore", {
28
28
  return _Crowdloan.default;
29
29
  }
30
30
  });
31
+ Object.defineProperty(exports, "MetadataStore", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _Metadata.default;
35
+ }
36
+ });
31
37
  Object.defineProperty(exports, "MigrationStore", {
32
38
  enumerable: true,
33
39
  get: function () {
@@ -72,5 +78,6 @@ var _NftCollection = _interopRequireDefault(require("./NftCollection"));
72
78
  var _Staking = _interopRequireDefault(require("./Staking"));
73
79
  var _Transaction = _interopRequireDefault(require("./Transaction"));
74
80
  var _Migration = _interopRequireDefault(require("./Migration"));
81
+ var _Metadata = _interopRequireDefault(require("./Metadata"));
75
82
  var _Chain = _interopRequireDefault(require("./Chain"));
76
83
  var _Asset = _interopRequireDefault(require("./Asset"));
@@ -61,7 +61,10 @@ export class WasmNftApi extends BaseNftApi {
61
61
  });
62
62
  const _attributeCount = _onChainAttributeCount === null || _onChainAttributeCount === void 0 ? void 0 : (_onChainAttributeCoun = _onChainAttributeCount.output) === null || _onChainAttributeCoun === void 0 ? void 0 : _onChainAttributeCoun.toJSON();
63
63
  const onChainAttributeCount = _onChainAttributeCount.output ? (_attributeCount === null || _attributeCount === void 0 ? void 0 : _attributeCount.ok) || (_attributeCount === null || _attributeCount === void 0 ? void 0 : _attributeCount.Ok) : '0';
64
- return parseInt(onChainAttributeCount) !== 0;
64
+ if (!_onChainAttributeCount.result.isOk) {
65
+ return false;
66
+ }
67
+ return !!onChainAttributeCount && parseInt(onChainAttributeCount) !== 0;
65
68
  }
66
69
  parseFeaturedTokenUri(tokenUri) {
67
70
  if (!tokenUri || tokenUri.length === 0) {
@@ -106,6 +106,9 @@ export function subscribeEssentialChainStakingMetadata(substrateApiMap, chainInf
106
106
 
107
107
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
108
108
  Object.values(chainInfoMap).forEach(async chainInfo => {
109
+ if (!substrateApiMap[chainInfo.slug]) {
110
+ return;
111
+ }
109
112
  const substrateApi = await substrateApiMap[chainInfo.slug].isReady;
110
113
  if (_STAKING_CHAIN_GROUP.astar.includes(chainInfo.slug)) {
111
114
  const unsub = await subscribeAstarStakingMetadata(chainInfo.slug, substrateApi, callback);
@@ -22,10 +22,8 @@ export declare class KoniCron {
22
22
  addSubscribeCron: <T>(name: string, callback: (subject: Subject<T>) => void, interval: number) => void;
23
23
  removeCron: (name: string) => void;
24
24
  removeAllCrons: () => void;
25
- start: () => void;
26
- stop: () => void;
27
- updateApiMapStatus: () => void;
28
- recoverApiMap: () => void;
25
+ start: () => Promise<void>;
26
+ stop: () => Promise<void>;
29
27
  refreshNft: (address: string, apiMap: ApiMap, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>) => () => void;
30
28
  resetNft: (newAddress: string) => void;
31
29
  resetStakingReward: () => void;