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