@aeternity/aepp-sdk 12.0.0 → 12.1.2

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 (283) hide show
  1. package/dist/aepp-sdk.browser-script.js +1 -1
  2. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -15
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +2 -1
  5. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +20765 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +7 -7
  10. package/es/AeSdk.mjs.map +1 -1
  11. package/es/AeSdkAepp.d.ts +4 -3
  12. package/es/AeSdkAepp.mjs +2 -1
  13. package/es/AeSdkAepp.mjs.map +1 -1
  14. package/es/AeSdkBase.d.ts +22 -21
  15. package/es/AeSdkBase.mjs +25 -21
  16. package/es/AeSdkBase.mjs.map +1 -1
  17. package/es/AeSdkWallet.d.ts +4 -3
  18. package/es/AeSdkWallet.mjs +5 -1
  19. package/es/AeSdkWallet.mjs.map +1 -1
  20. package/es/Node.d.ts +7 -10
  21. package/es/Node.mjs +63 -57
  22. package/es/Node.mjs.map +1 -1
  23. package/es/account/Base.d.ts +7 -4
  24. package/es/account/Base.mjs +3 -3
  25. package/es/account/Base.mjs.map +1 -1
  26. package/es/account/Memory.d.ts +5 -4
  27. package/es/account/Memory.mjs +24 -2
  28. package/es/account/Memory.mjs.map +1 -1
  29. package/es/account/Rpc.d.ts +6 -6
  30. package/es/account/Rpc.mjs +3 -2
  31. package/es/account/Rpc.mjs.map +1 -1
  32. package/es/aens.d.ts +27 -14
  33. package/es/aens.mjs +27 -21
  34. package/es/aens.mjs.map +1 -1
  35. package/es/aepp-wallet-communication/connection/Browser.d.ts +2 -1
  36. package/es/aepp-wallet-communication/connection/Browser.mjs +5 -2
  37. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  38. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +5 -1
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  44. package/es/aepp-wallet-communication/connection-proxy.d.ts +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.mjs +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -5
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  50. package/es/aepp-wallet-communication/rpc/types.d.ts +8 -8
  51. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  52. package/es/aepp-wallet-communication/schema.d.ts +17 -2
  53. package/es/aepp-wallet-communication/schema.mjs +54 -17
  54. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  55. package/es/aepp-wallet-communication/wallet-detector.d.ts +2 -1
  56. package/es/aepp-wallet-communication/wallet-detector.mjs +2 -3
  57. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  58. package/es/apis/node/models/index.d.ts +6 -2
  59. package/es/apis/node/models/index.mjs.map +1 -1
  60. package/es/apis/node/models/mappers.mjs +4 -2
  61. package/es/apis/node/models/mappers.mjs.map +1 -1
  62. package/es/chain.d.ts +92 -64
  63. package/es/chain.mjs +190 -154
  64. package/es/chain.mjs.map +1 -1
  65. package/es/channel/handlers.d.ts +3 -3
  66. package/es/channel/handlers.mjs +42 -44
  67. package/es/channel/handlers.mjs.map +1 -1
  68. package/es/channel/index.d.ts +43 -52
  69. package/es/channel/index.mjs +46 -49
  70. package/es/channel/index.mjs.map +1 -1
  71. package/es/channel/internal.d.ts +16 -15
  72. package/es/channel/internal.mjs +67 -62
  73. package/es/channel/internal.mjs.map +1 -1
  74. package/es/contract/Compiler.d.ts +1 -0
  75. package/es/contract/Compiler.mjs +5 -4
  76. package/es/contract/Compiler.mjs.map +1 -1
  77. package/es/contract/aci.d.ts +17 -15
  78. package/es/contract/aci.mjs +58 -45
  79. package/es/contract/aci.mjs.map +1 -1
  80. package/es/contract/ga.d.ts +16 -15
  81. package/es/contract/ga.mjs +12 -7
  82. package/es/contract/ga.mjs.map +1 -1
  83. package/es/contract/methods.d.ts +9 -6
  84. package/es/contract/methods.mjs +9 -6
  85. package/es/contract/methods.mjs.map +1 -1
  86. package/es/deprecated/index.d.ts +143 -0
  87. package/es/deprecated/index.mjs +162 -0
  88. package/es/deprecated/index.mjs.map +1 -0
  89. package/es/deprecated/methods.d.ts +18 -0
  90. package/es/deprecated/methods.mjs +26 -0
  91. package/es/deprecated/methods.mjs.map +1 -0
  92. package/es/index.d.ts +4 -1
  93. package/es/index.mjs +4 -1
  94. package/es/index.mjs.map +1 -1
  95. package/es/oracle.d.ts +69 -62
  96. package/es/oracle.mjs +121 -103
  97. package/es/oracle.mjs.map +1 -1
  98. package/es/spend.d.ts +16 -15
  99. package/es/spend.mjs +19 -30
  100. package/es/spend.mjs.map +1 -1
  101. package/es/tx/builder/address.d.ts +25 -0
  102. package/es/tx/builder/address.mjs +45 -0
  103. package/es/tx/builder/address.mjs.map +1 -0
  104. package/es/tx/builder/constants.d.ts +55 -26
  105. package/es/tx/builder/constants.mjs +60 -38
  106. package/es/tx/builder/constants.mjs.map +1 -1
  107. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  108. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  109. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  110. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  111. package/es/tx/builder/field-types/deposit.mjs +19 -0
  112. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  113. package/es/tx/builder/field-types/fee.d.ts +25 -0
  114. package/es/tx/{min-fee.mjs → builder/field-types/fee.mjs} +62 -60
  115. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  116. package/es/tx/builder/field-types/field.d.ts +6 -0
  117. package/es/tx/builder/field-types/field.mjs +15 -0
  118. package/es/tx/builder/field-types/field.mjs.map +1 -0
  119. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  120. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  121. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  122. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  123. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  124. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  125. package/es/tx/builder/field-types/index.d.ts +70 -0
  126. package/es/tx/builder/field-types/index.mjs +25 -0
  127. package/es/tx/builder/field-types/index.mjs.map +1 -0
  128. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  129. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  130. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  131. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  132. package/es/tx/builder/field-types/name-id.mjs +19 -0
  133. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  134. package/es/tx/builder/field-types/name.d.ts +13 -0
  135. package/es/tx/builder/field-types/name.mjs +18 -0
  136. package/es/tx/builder/field-types/name.mjs.map +1 -0
  137. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  138. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  139. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  140. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  141. package/es/tx/builder/field-types/u-int.mjs +14 -0
  142. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  143. package/es/tx/builder/helpers.d.ts +27 -33
  144. package/es/tx/builder/helpers.mjs +41 -47
  145. package/es/tx/builder/helpers.mjs.map +1 -1
  146. package/es/tx/builder/index.d.ts +25 -12
  147. package/es/tx/builder/index.mjs +74 -83
  148. package/es/tx/builder/index.mjs.map +1 -1
  149. package/es/tx/builder/schema.d.ts +995 -144
  150. package/es/tx/builder/schema.mjs +121 -170
  151. package/es/tx/builder/schema.mjs.map +1 -1
  152. package/es/tx/index.d.ts +28 -27
  153. package/es/tx/index.mjs +97 -117
  154. package/es/tx/index.mjs.map +1 -1
  155. package/es/tx/validator.d.ts +4 -3
  156. package/es/tx/validator.mjs +79 -92
  157. package/es/tx/validator.mjs.map +1 -1
  158. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -1
  159. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -1
  160. package/es/typings/bip32-path/index.d.mjs.map +1 -1
  161. package/es/typings/blakejs/index.d.mjs.map +1 -1
  162. package/es/typings/sha-js/index.d.mjs +2 -0
  163. package/es/typings/sha-js/index.d.mjs.map +1 -0
  164. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -1
  165. package/es/utils/amount-formatter.d.ts +9 -9
  166. package/es/utils/amount-formatter.mjs +17 -17
  167. package/es/utils/amount-formatter.mjs.map +1 -1
  168. package/es/utils/autorest.mjs +7 -7
  169. package/es/utils/autorest.mjs.map +1 -1
  170. package/es/utils/bignumber.mjs +2 -1
  171. package/es/utils/bignumber.mjs.map +1 -1
  172. package/es/utils/bytes.mjs +1 -1
  173. package/es/utils/bytes.mjs.map +1 -1
  174. package/es/utils/crypto.d.ts +8 -23
  175. package/es/utils/crypto.mjs +15 -41
  176. package/es/utils/crypto.mjs.map +1 -1
  177. package/es/utils/encoder-types.d.ts +61 -0
  178. package/es/utils/encoder-types.mjs +36 -0
  179. package/es/utils/encoder-types.mjs.map +1 -0
  180. package/es/utils/encoder.d.ts +6 -7
  181. package/es/utils/encoder.mjs +42 -26
  182. package/es/utils/encoder.mjs.map +1 -1
  183. package/es/utils/errors.d.ts +1 -11
  184. package/es/utils/errors.mjs +4 -20
  185. package/es/utils/errors.mjs.map +1 -1
  186. package/es/utils/hd-wallet.d.ts +18 -2
  187. package/es/utils/hd-wallet.mjs +64 -34
  188. package/es/utils/hd-wallet.mjs.map +1 -1
  189. package/es/utils/json-big.mjs +2 -2
  190. package/es/utils/json-big.mjs.map +1 -1
  191. package/es/utils/keystore.mjs +4 -2
  192. package/es/utils/keystore.mjs.map +1 -1
  193. package/es/utils/mptree.d.ts +2 -2
  194. package/es/utils/mptree.mjs +11 -6
  195. package/es/utils/mptree.mjs.map +1 -1
  196. package/es/utils/other.d.ts +8 -2
  197. package/es/utils/other.mjs +15 -3
  198. package/es/utils/other.mjs.map +1 -1
  199. package/es/utils/semver-satisfies.d.ts +1 -1
  200. package/es/utils/semver-satisfies.mjs +2 -2
  201. package/es/utils/semver-satisfies.mjs.map +1 -1
  202. package/es/utils/string.mjs.map +1 -1
  203. package/package.json +36 -34
  204. package/src/AeSdk.ts +30 -27
  205. package/src/AeSdkAepp.ts +93 -84
  206. package/src/AeSdkBase.ts +148 -130
  207. package/src/AeSdkWallet.ts +172 -156
  208. package/src/Node.ts +108 -102
  209. package/src/account/Base.ts +42 -32
  210. package/src/account/Memory.ts +45 -30
  211. package/src/account/Rpc.ts +32 -30
  212. package/src/aens.ts +124 -108
  213. package/src/aepp-wallet-communication/connection/Browser.ts +18 -15
  214. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +22 -21
  215. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +63 -52
  216. package/src/aepp-wallet-communication/connection-proxy.ts +8 -7
  217. package/src/aepp-wallet-communication/rpc/RpcClient.ts +67 -61
  218. package/src/aepp-wallet-communication/rpc/types.ts +32 -32
  219. package/src/aepp-wallet-communication/schema.ts +117 -74
  220. package/src/aepp-wallet-communication/wallet-detector.ts +29 -28
  221. package/src/apis/node/code-model-v4.yaml +54 -20
  222. package/src/apis/node/models/index.ts +6 -2
  223. package/src/apis/node/models/mappers.ts +4 -2
  224. package/src/chain.ts +286 -228
  225. package/src/channel/handlers.ts +424 -372
  226. package/src/channel/index.ts +285 -251
  227. package/src/channel/internal.ts +248 -232
  228. package/src/contract/Compiler.ts +22 -21
  229. package/src/contract/aci.ts +267 -258
  230. package/src/contract/ga.ts +93 -72
  231. package/src/contract/methods.ts +32 -27
  232. package/src/deprecated/index.ts +172 -0
  233. package/src/deprecated/methods.ts +25 -0
  234. package/src/index.ts +37 -32
  235. package/src/oracle.ts +211 -189
  236. package/src/spend.ts +82 -70
  237. package/src/tx/builder/address.ts +50 -0
  238. package/src/tx/builder/constants.ts +82 -52
  239. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  240. package/src/tx/builder/field-types/deposit.ts +21 -0
  241. package/src/tx/builder/field-types/fee.ts +143 -0
  242. package/src/tx/builder/field-types/field.ts +9 -0
  243. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  244. package/src/tx/builder/field-types/gas-price.ts +16 -0
  245. package/src/tx/builder/field-types/index.ts +45 -0
  246. package/src/tx/builder/field-types/name-fee.ts +32 -0
  247. package/src/tx/builder/field-types/name-id.ts +20 -0
  248. package/src/tx/builder/field-types/name.ts +18 -0
  249. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  250. package/src/tx/builder/field-types/u-int.ts +16 -0
  251. package/src/tx/builder/helpers.ts +112 -117
  252. package/src/tx/builder/index.ts +203 -197
  253. package/src/tx/builder/schema.ts +421 -465
  254. package/src/tx/index.ts +128 -135
  255. package/src/tx/validator.ts +165 -161
  256. package/src/typings/@aeternity__argon2-browser/index.d.ts +1 -1
  257. package/src/typings/@aeternity__uuid/index.d.ts +3 -1
  258. package/src/typings/bip32-path/index.d.ts +6 -6
  259. package/src/typings/blakejs/index.d.ts +4 -32
  260. package/src/typings/sha-js/index.d.ts +5 -0
  261. package/src/typings/tweetnacl-auth/index.d.ts +2 -2
  262. package/src/utils/amount-formatter.ts +41 -41
  263. package/src/utils/autorest.ts +57 -54
  264. package/src/utils/bignumber.ts +7 -6
  265. package/src/utils/bytes.ts +19 -19
  266. package/src/utils/crypto.ts +82 -94
  267. package/src/utils/encoder-types.ts +63 -0
  268. package/src/utils/encoder.ts +104 -56
  269. package/src/utils/errors.ts +246 -264
  270. package/src/utils/hd-wallet.ts +114 -82
  271. package/src/utils/json-big.ts +16 -15
  272. package/src/utils/keystore.ts +65 -62
  273. package/src/utils/mptree.ts +59 -56
  274. package/src/utils/other.ts +26 -18
  275. package/src/utils/semver-satisfies.ts +15 -11
  276. package/src/utils/string.ts +10 -10
  277. package/es/tx/builder/field-types.d.ts +0 -62
  278. package/es/tx/builder/field-types.mjs +0 -126
  279. package/es/tx/builder/field-types.mjs.map +0 -1
  280. package/es/tx/min-fee.d.ts +0 -20
  281. package/es/tx/min-fee.mjs.map +0 -1
  282. package/src/tx/builder/field-types.ts +0 -111
  283. package/src/tx/min-fee.ts +0 -136
@@ -1 +1 @@
1
- {"version":3,"file":"json-big.mjs","names":["JsonBig","BigNumber","mapObject","jsonBig","storeAsString","convertValuesToBigNumbers","value","constructor","Object","key","Array","isArray","map","item","toString","bn","toJSON","stringify","args","slice","parse"],"sources":["../../src/utils/json-big.ts"],"sourcesContent":["import JsonBig from 'json-bigint'\nimport BigNumber from 'bignumber.js'\nimport { mapObject } from './other'\n\nconst jsonBig = JsonBig({ storeAsString: true })\n\nconst convertValuesToBigNumbers = (value: any): any => {\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n return mapObject(value, ([key, value]) => [key, convertValuesToBigNumbers(value)])\n }\n if (Array.isArray(value)) {\n return value.map(item => convertValuesToBigNumbers(item))\n }\n if (typeof value === 'string' && new BigNumber(value).toString(10) === value) {\n const bn = new BigNumber(value)\n bn.toJSON = () => bn.toString(10)\n return bn\n }\n return value\n}\n\nexport default {\n stringify: (...args: Parameters<typeof JsonBig['stringify']>): string =>\n jsonBig.stringify(convertValuesToBigNumbers(args[0]), ...args.slice(1)),\n parse: jsonBig.parse\n}\n"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,aAApB;AACA,OAAOC,SAAP,MAAsB,cAAtB;SACSC,S;AAET,MAAMC,OAAO,GAAGH,OAAO,CAAC;EAAEI,aAAa,EAAE;AAAjB,CAAD,CAAvB;;AAEA,MAAMC,yBAAyB,GAAIC,KAAD,IAAqB;EACrD,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+CA,KAAK,CAACC,WAAN,KAAsBC,MAAzE,EAAiF;IAC/E,OAAON,SAAS,CAACI,KAAD,EAAQ;MAAA,IAAC,CAACG,GAAD,EAAMH,KAAN,CAAD;MAAA,OAAkB,CAACG,GAAD,EAAMJ,yBAAyB,CAACC,KAAD,CAA/B,CAAlB;IAAA,CAAR,CAAhB;EACD;;EACD,IAAII,KAAK,CAACC,OAAN,CAAcL,KAAd,CAAJ,EAA0B;IACxB,OAAOA,KAAK,CAACM,GAAN,CAAUC,IAAI,IAAIR,yBAAyB,CAACQ,IAAD,CAA3C,CAAP;EACD;;EACD,IAAI,OAAOP,KAAP,KAAiB,QAAjB,IAA6B,IAAIL,SAAJ,CAAcK,KAAd,EAAqBQ,QAArB,CAA8B,EAA9B,MAAsCR,KAAvE,EAA8E;IAC5E,MAAMS,EAAE,GAAG,IAAId,SAAJ,CAAcK,KAAd,CAAX;;IACAS,EAAE,CAACC,MAAH,GAAY,MAAMD,EAAE,CAACD,QAAH,CAAY,EAAZ,CAAlB;;IACA,OAAOC,EAAP;EACD;;EACD,OAAOT,KAAP;AACD,CAbD;;AAeA,eAAe;EACbW,SAAS,EAAE;IAAA,kCAAIC,IAAJ;MAAIA,IAAJ;IAAA;;IAAA,OACTf,OAAO,CAACc,SAAR,CAAkBZ,yBAAyB,CAACa,IAAI,CAAC,CAAD,CAAL,CAA3C,EAAsD,GAAGA,IAAI,CAACC,KAAL,CAAW,CAAX,CAAzD,CADS;EAAA,CADE;EAGbC,KAAK,EAAEjB,OAAO,CAACiB;AAHF,CAAf"}
1
+ {"version":3,"file":"json-big.mjs","names":["JsonBig","BigNumber","mapObject","jsonBig","storeAsString","convertValuesToBigNumbers","value","constructor","Object","k","v","Array","isArray","map","item","toString","bn","toJSON","stringify","args","slice","parse"],"sources":["../../src/utils/json-big.ts"],"sourcesContent":["import JsonBig from 'json-bigint';\nimport BigNumber from 'bignumber.js';\nimport { mapObject } from './other';\n\nconst jsonBig = JsonBig({ storeAsString: true });\n\nconst convertValuesToBigNumbers = (value: any): any => {\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n return mapObject(value, ([k, v]) => [k, convertValuesToBigNumbers(v)]);\n }\n if (Array.isArray(value)) {\n return value.map((item) => convertValuesToBigNumbers(item));\n }\n if (typeof value === 'string' && new BigNumber(value).toString(10) === value) {\n const bn = new BigNumber(value);\n bn.toJSON = () => bn.toString(10);\n return bn;\n }\n return value;\n};\n\nexport default {\n stringify: (...args: Parameters<typeof JsonBig['stringify']>): string => (\n jsonBig.stringify(convertValuesToBigNumbers(args[0]), ...args.slice(1))\n ),\n parse: jsonBig.parse,\n};\n"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,aAApB;AACA,OAAOC,SAAP,MAAsB,cAAtB;SACSC,S;AAET,MAAMC,OAAO,GAAGH,OAAO,CAAC;EAAEI,aAAa,EAAE;AAAjB,CAAD,CAAvB;;AAEA,MAAMC,yBAAyB,GAAIC,KAAD,IAAqB;EACrD,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+CA,KAAK,CAACC,WAAN,KAAsBC,MAAzE,EAAiF;IAC/E,OAAON,SAAS,CAACI,KAAD,EAAQ;MAAA,IAAC,CAACG,CAAD,EAAIC,CAAJ,CAAD;MAAA,OAAY,CAACD,CAAD,EAAIJ,yBAAyB,CAACK,CAAD,CAA7B,CAAZ;IAAA,CAAR,CAAhB;EACD;;EACD,IAAIC,KAAK,CAACC,OAAN,CAAcN,KAAd,CAAJ,EAA0B;IACxB,OAAOA,KAAK,CAACO,GAAN,CAAWC,IAAD,IAAUT,yBAAyB,CAACS,IAAD,CAA7C,CAAP;EACD;;EACD,IAAI,OAAOR,KAAP,KAAiB,QAAjB,IAA6B,IAAIL,SAAJ,CAAcK,KAAd,EAAqBS,QAArB,CAA8B,EAA9B,MAAsCT,KAAvE,EAA8E;IAC5E,MAAMU,EAAE,GAAG,IAAIf,SAAJ,CAAcK,KAAd,CAAX;;IACAU,EAAE,CAACC,MAAH,GAAY,MAAMD,EAAE,CAACD,QAAH,CAAY,EAAZ,CAAlB;;IACA,OAAOC,EAAP;EACD;;EACD,OAAOV,KAAP;AACD,CAbD;;AAeA,eAAe;EACbY,SAAS,EAAE;IAAA,kCAAIC,IAAJ;MAAIA,IAAJ;IAAA;;IAAA,OACThB,OAAO,CAACe,SAAR,CAAkBb,yBAAyB,CAACc,IAAI,CAAC,CAAD,CAAL,CAA3C,EAAsD,GAAGA,IAAI,CAACC,KAAL,CAAW,CAAX,CAAzD,CADS;EAAA,CADE;EAIbC,KAAK,EAAElB,OAAO,CAACkB;AAJF,CAAf"}
@@ -1,5 +1,7 @@
1
1
  import nacl from 'tweetnacl';
2
- import { v4 as uuid } from '@aeternity/uuid';
2
+ import { v4 as uuid } from '@aeternity/uuid'; // js extension is required for mjs build
3
+ // eslint-disable-next-line import/extensions
4
+
3
5
  import _aeternityArgon2BrowserDistArgon2BundledMinJs from '@aeternity/argon2-browser/dist/argon2-bundled.min.js';
4
6
  const {
5
7
  ArgonType,
@@ -85,7 +87,7 @@ function decrypt(ciphertext, key, nonce) {
85
87
 
86
88
 
87
89
  async function deriveKey(password, nonce, kdf, kdfParams) {
88
- return await DERIVED_KEY_FUNCTIONS[kdf](password, nonce, kdfParams);
90
+ return DERIVED_KEY_FUNCTIONS[kdf](password, nonce, kdfParams);
89
91
  }
90
92
  /**
91
93
  * Recover plaintext private key from secret-storage key object.
@@ -1 +1 @@
1
- {"version":3,"file":"keystore.mjs","names":["nacl","v4","uuid","getAddressFromPriv","bytesToHex","hexToBytes","InvalidPasswordError","DERIVED_KEY_FUNCTIONS","argon2id","pass","salt","params","memlimit_kib","mem","opslimit","time","hash","hashLen","type","ArgonType","Argon2id","CRYPTO_FUNCTIONS","encrypt","secretbox","decrypt","res","open","CRYPTO_DEFAULTS","secret_type","symmetric_alg","kdf","kdf_params","parallelism","plaintext","key","nonce","algo","ciphertext","deriveKey","password","kdfParams","recover","crypto","cipher_params","dump","name","privateKey","randomBytes","options","opt","derivedKey","payload","version","public_key","id"],"sources":["../../src/utils/keystore.ts"],"sourcesContent":["import nacl from 'tweetnacl'\nimport { v4 as uuid } from '@aeternity/uuid'\nimport { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js'\nimport { getAddressFromPriv } from './crypto'\nimport { bytesToHex, hexToBytes } from './bytes'\nimport { InvalidPasswordError } from './errors'\n\nconst DERIVED_KEY_FUNCTIONS = {\n async argon2id (\n pass: string | Uint8Array,\n salt: string | Uint8Array,\n params: Partial<Keystore['crypto']['kdf_params']>\n ): Promise<Uint8Array> {\n const { memlimit_kib: mem, opslimit: time } = params\n\n return (await hash({\n hashLen: 32,\n pass,\n salt,\n time,\n mem,\n type: ArgonType.Argon2id\n })).hash\n }\n}\n\nconst CRYPTO_FUNCTIONS = {\n 'xsalsa20-poly1305': {\n encrypt: nacl.secretbox,\n decrypt (...args: Parameters<typeof nacl.secretbox.open>): Uint8Array {\n const res = nacl.secretbox.open(...args)\n if (res == null) throw new InvalidPasswordError()\n return res\n }\n }\n}\n\nexport interface Keystore {\n name: string\n version: 1\n public_key: string\n id: string\n crypto: {\n secret_type: 'ed25519'\n symmetric_alg: keyof typeof CRYPTO_FUNCTIONS\n ciphertext: string\n cipher_params: {\n nonce: string\n }\n kdf: keyof typeof DERIVED_KEY_FUNCTIONS\n kdf_params: {\n memlimit_kib: number\n opslimit: number\n parallelism: number\n salt: string\n }\n }\n}\n\nconst CRYPTO_DEFAULTS = {\n secret_type: 'ed25519',\n symmetric_alg: 'xsalsa20-poly1305',\n kdf: 'argon2id',\n kdf_params: {\n memlimit_kib: 65536,\n opslimit: 3,\n parallelism: 1\n }\n} as const\n\n/**\n * Symmetric private key encryption using secret (derived) key.\n * @param plaintext - Data to be encrypted.\n * @param key - Secret key.\n * @param nonce - Randomly generated nonce.\n * @param algo - Encryption algorithm.\n * @returns Encrypted data.\n */\nfunction encrypt (\n plaintext: Uint8Array,\n key: Uint8Array,\n nonce: Uint8Array,\n algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg\n): Uint8Array {\n return CRYPTO_FUNCTIONS[algo].encrypt(plaintext, nonce, key)\n}\n\n/**\n * Symmetric private key decryption using secret (derived) key.\n * @param ciphertext - Data to be decrypted.\n * @param key - Secret key.\n * @param nonce - Nonce from key-object.\n * @param algo - Encryption algorithm.\n * @returns Decrypted data.\n */\nfunction decrypt (\n ciphertext: Uint8Array,\n key: Uint8Array,\n nonce: Uint8Array,\n algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg\n): Uint8Array {\n return CRYPTO_FUNCTIONS[algo].decrypt(ciphertext, nonce, key)\n}\n\n/**\n * Derive secret key from password with key derivation function.\n * @param password - User-supplied password.\n * @param nonce - Randomly generated nonce.\n * @param kdf - Key derivation function.\n * @param kdfParams - KDF parameters.\n * @returns Secret key derived from password.\n */\nasync function deriveKey (\n password: string | Uint8Array,\n nonce: string | Uint8Array,\n kdf: Keystore['crypto']['kdf'],\n kdfParams: Omit<Keystore['crypto']['kdf_params'], 'salt'>\n): Promise<Uint8Array> {\n return await DERIVED_KEY_FUNCTIONS[kdf](password, nonce, kdfParams)\n}\n\n/**\n * Recover plaintext private key from secret-storage key object.\n * @param password - Keystore object password.\n * @param keystore - Keystore object.\n * @returns Plaintext private key.\n */\nexport async function recover (\n password: string | Uint8Array, { crypto }: Keystore\n): Promise<string> {\n const salt = hexToBytes(crypto.kdf_params.salt)\n return bytesToHex(decrypt(\n hexToBytes(crypto.ciphertext),\n await deriveKey(password, salt, crypto.kdf, crypto.kdf_params),\n hexToBytes(crypto.cipher_params.nonce),\n crypto.symmetric_alg\n ))\n}\n\n/**\n * Export private key to keystore secret-storage format.\n * @param name - Key name.\n * @param password - User-supplied password.\n * @param privateKey - Private key as hex-string or a Buffer.\n * @param nonce - Randomly generated 24byte nonce.\n * @param salt - Randomly generated 16byte salt.\n * @param options - Encryption parameters.\n * @param options.kdf - Key derivation function.\n * @param options.kdf_params - KDF parameters.\n */\nexport async function dump (\n name: string,\n password: string | Uint8Array,\n privateKey: string | Uint8Array,\n nonce: Uint8Array = nacl.randomBytes(24),\n salt: Uint8Array = nacl.randomBytes(16),\n options?: Partial<Keystore['crypto']>\n): Promise<Keystore> {\n const opt = { ...CRYPTO_DEFAULTS, ...options }\n const derivedKey = await deriveKey(password, salt, opt.kdf, opt.kdf_params)\n const payload = typeof privateKey === 'string' ? hexToBytes(privateKey) : privateKey\n return {\n name,\n version: 1,\n public_key: getAddressFromPriv(payload),\n id: uuid(),\n crypto: {\n secret_type: opt.secret_type,\n symmetric_alg: opt.symmetric_alg,\n ciphertext: bytesToHex(encrypt(payload, derivedKey, nonce, opt.symmetric_alg)),\n cipher_params: { nonce: bytesToHex(nonce) },\n kdf: opt.kdf,\n kdf_params: {\n ...opt.kdf_params,\n salt: bytesToHex(salt)\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"keystore.mjs","names":["nacl","v4","uuid","getAddressFromPriv","bytesToHex","hexToBytes","InvalidPasswordError","DERIVED_KEY_FUNCTIONS","argon2id","pass","salt","params","memlimit_kib","mem","opslimit","time","hash","hashLen","type","ArgonType","Argon2id","CRYPTO_FUNCTIONS","encrypt","secretbox","decrypt","res","open","CRYPTO_DEFAULTS","secret_type","symmetric_alg","kdf","kdf_params","parallelism","plaintext","key","nonce","algo","ciphertext","deriveKey","password","kdfParams","recover","crypto","cipher_params","dump","name","privateKey","randomBytes","options","opt","derivedKey","payload","version","public_key","id"],"sources":["../../src/utils/keystore.ts"],"sourcesContent":["import nacl from 'tweetnacl';\nimport { v4 as uuid } from '@aeternity/uuid';\n// js extension is required for mjs build\n// eslint-disable-next-line import/extensions\nimport { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js';\nimport { getAddressFromPriv } from './crypto';\nimport { bytesToHex, hexToBytes } from './bytes';\nimport { InvalidPasswordError } from './errors';\n\nconst DERIVED_KEY_FUNCTIONS = {\n async argon2id(\n pass: string | Uint8Array,\n salt: string | Uint8Array,\n params: Partial<Keystore['crypto']['kdf_params']>,\n ): Promise<Uint8Array> {\n const { memlimit_kib: mem, opslimit: time } = params;\n\n return (await hash({\n hashLen: 32,\n pass,\n salt,\n time,\n mem,\n type: ArgonType.Argon2id,\n })).hash;\n },\n};\n\nconst CRYPTO_FUNCTIONS = {\n 'xsalsa20-poly1305': {\n encrypt: nacl.secretbox,\n decrypt(...args: Parameters<typeof nacl.secretbox.open>): Uint8Array {\n const res = nacl.secretbox.open(...args);\n if (res == null) throw new InvalidPasswordError();\n return res;\n },\n },\n};\n\nexport interface Keystore {\n name: string;\n version: 1;\n public_key: string;\n id: string;\n crypto: {\n secret_type: 'ed25519';\n symmetric_alg: keyof typeof CRYPTO_FUNCTIONS;\n ciphertext: string;\n cipher_params: {\n nonce: string;\n };\n kdf: keyof typeof DERIVED_KEY_FUNCTIONS;\n kdf_params: {\n memlimit_kib: number;\n opslimit: number;\n parallelism: number;\n salt: string;\n };\n };\n}\n\nconst CRYPTO_DEFAULTS = {\n secret_type: 'ed25519',\n symmetric_alg: 'xsalsa20-poly1305',\n kdf: 'argon2id',\n kdf_params: {\n memlimit_kib: 65536,\n opslimit: 3,\n parallelism: 1,\n },\n} as const;\n\n/**\n * Symmetric private key encryption using secret (derived) key.\n * @param plaintext - Data to be encrypted.\n * @param key - Secret key.\n * @param nonce - Randomly generated nonce.\n * @param algo - Encryption algorithm.\n * @returns Encrypted data.\n */\nfunction encrypt(\n plaintext: Uint8Array,\n key: Uint8Array,\n nonce: Uint8Array,\n algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg,\n): Uint8Array {\n return CRYPTO_FUNCTIONS[algo].encrypt(plaintext, nonce, key);\n}\n\n/**\n * Symmetric private key decryption using secret (derived) key.\n * @param ciphertext - Data to be decrypted.\n * @param key - Secret key.\n * @param nonce - Nonce from key-object.\n * @param algo - Encryption algorithm.\n * @returns Decrypted data.\n */\nfunction decrypt(\n ciphertext: Uint8Array,\n key: Uint8Array,\n nonce: Uint8Array,\n algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg,\n): Uint8Array {\n return CRYPTO_FUNCTIONS[algo].decrypt(ciphertext, nonce, key);\n}\n\n/**\n * Derive secret key from password with key derivation function.\n * @param password - User-supplied password.\n * @param nonce - Randomly generated nonce.\n * @param kdf - Key derivation function.\n * @param kdfParams - KDF parameters.\n * @returns Secret key derived from password.\n */\nasync function deriveKey(\n password: string | Uint8Array,\n nonce: string | Uint8Array,\n kdf: Keystore['crypto']['kdf'],\n kdfParams: Omit<Keystore['crypto']['kdf_params'], 'salt'>,\n): Promise<Uint8Array> {\n return DERIVED_KEY_FUNCTIONS[kdf](password, nonce, kdfParams);\n}\n\n/**\n * Recover plaintext private key from secret-storage key object.\n * @param password - Keystore object password.\n * @param keystore - Keystore object.\n * @returns Plaintext private key.\n */\nexport async function recover(\n password: string | Uint8Array,\n { crypto }: Keystore,\n): Promise<string> {\n const salt = hexToBytes(crypto.kdf_params.salt);\n return bytesToHex(decrypt(\n hexToBytes(crypto.ciphertext),\n await deriveKey(password, salt, crypto.kdf, crypto.kdf_params),\n hexToBytes(crypto.cipher_params.nonce),\n crypto.symmetric_alg,\n ));\n}\n\n/**\n * Export private key to keystore secret-storage format.\n * @param name - Key name.\n * @param password - User-supplied password.\n * @param privateKey - Private key as hex-string or a Buffer.\n * @param nonce - Randomly generated 24byte nonce.\n * @param salt - Randomly generated 16byte salt.\n * @param options - Encryption parameters.\n * @param options.kdf - Key derivation function.\n * @param options.kdf_params - KDF parameters.\n */\nexport async function dump(\n name: string,\n password: string | Uint8Array,\n privateKey: string | Uint8Array,\n nonce: Uint8Array = nacl.randomBytes(24),\n salt: Uint8Array = nacl.randomBytes(16),\n options?: Partial<Keystore['crypto']>,\n): Promise<Keystore> {\n const opt = { ...CRYPTO_DEFAULTS, ...options };\n const derivedKey = await deriveKey(password, salt, opt.kdf, opt.kdf_params);\n const payload = typeof privateKey === 'string' ? hexToBytes(privateKey) : privateKey;\n return {\n name,\n version: 1,\n public_key: getAddressFromPriv(payload),\n id: uuid(),\n crypto: {\n secret_type: opt.secret_type,\n symmetric_alg: opt.symmetric_alg,\n ciphertext: bytesToHex(encrypt(payload, derivedKey, nonce, opt.symmetric_alg)),\n cipher_params: { nonce: bytesToHex(nonce) },\n kdf: opt.kdf,\n kdf_params: {\n ...opt.kdf_params,\n salt: bytesToHex(salt),\n },\n },\n };\n}\n"],"mappings":"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"}
@@ -19,8 +19,8 @@ export default class MPTree {
19
19
  serialize(): MPTreeBinary;
20
20
  /**
21
21
  * Retrieve value from Merkle Patricia Tree
22
- * @param key - The key of the element to retrieve
22
+ * @param _key - The key of the element to retrieve
23
23
  * @returns Value associated to the specified key
24
24
  */
25
- get(key: string): Buffer | undefined;
25
+ get(_key: string): Buffer | undefined;
26
26
  }
@@ -20,6 +20,8 @@ const {
20
20
  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
21
21
  * PERFORMANCE OF THIS SOFTWARE.
22
22
  */
23
+
24
+ /* eslint-disable default-case */
23
25
  import _rlp from 'rlp';
24
26
  const {
25
27
  encode: rlpEncode
@@ -92,7 +94,8 @@ export default class MPTree {
92
94
  {
93
95
  var _context;
94
96
 
95
- const nibble = node[0][0] >> 4;
97
+ const nibble = node[0][0] >> 4; // eslint-disable-line no-bitwise
98
+
96
99
  if (nibble > 3) throw new UnknownPathNibbleError(nibble);
97
100
  const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf;
98
101
  const slice = _includesInstanceProperty(_context = [0, 2]).call(_context, nibble) ? 2 : 1;
@@ -121,15 +124,17 @@ export default class MPTree {
121
124
  }
122
125
  /**
123
126
  * Retrieve value from Merkle Patricia Tree
124
- * @param key - The key of the element to retrieve
127
+ * @param _key - The key of the element to retrieve
125
128
  * @returns Value associated to the specified key
126
129
  */
127
130
 
128
131
 
129
- get(key) {
132
+ get(_key) {
130
133
  let searchFrom = this.rootHash;
134
+ let key = _key;
131
135
 
132
136
  while (true) {
137
+ // eslint-disable-line no-constant-condition
133
138
  const {
134
139
  type,
135
140
  payload,
@@ -140,13 +145,13 @@ export default class MPTree {
140
145
  case NodeType.Branch:
141
146
  if (key.length === 0) return payload[16];
142
147
  searchFrom = payload[+`0x${key[0]}`].toString('hex');
143
- key = key.substr(1);
148
+ key = key.substring(1);
144
149
  break;
145
150
 
146
151
  case NodeType.Extension:
147
- if (key.substr(0, path === null || path === void 0 ? void 0 : path.length) !== path) return undefined;
152
+ if (key.substring(0, path === null || path === void 0 ? void 0 : path.length) !== path) return undefined;
148
153
  searchFrom = payload[0].toString('hex');
149
- key = key.substr(path.length);
154
+ key = key.substring(path.length);
150
155
  break;
151
156
 
152
157
  case NodeType.Leaf:
@@ -1 +1 @@
1
- {"version":3,"file":"mptree.mjs","names":["hash","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnknownPathNibbleError","UnknownNodeLengthError","NodeType","MPTree","nodeHash","node","from","rlpEncode","toString","constructor","binary","rootHash","nodes","Object","fromEntries","map","undefined","entries","forEach","key","type","payload","parseNode","Branch","slice","filter","n","length","Extension","isEqual","tree","path","nibble","Leaf","serialize","mptHash","value","get","searchFrom","substr"],"sources":["../../src/utils/mptree.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { encode as rlpEncode } from 'rlp'\nimport type { Input } from 'rlp'\nimport { hash } from './crypto'\nimport {\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownPathNibbleError,\n UnknownNodeLengthError\n} from './errors'\n\nenum NodeType {\n Branch,\n Extension,\n Leaf\n}\n\nexport type MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>]\n\nexport default class MPTree {\n private readonly rootHash: string\n private readonly nodes: { [key: string]: Buffer[] }\n\n private static nodeHash (node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex')\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @param binary - Binary\n * @returns Merkle Patricia Tree\n */\n constructor (binary: MPTreeBinary) {\n this.rootHash = binary[0].toString('hex')\n this.nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]])\n )\n\n if (this.nodes[this.rootHash] === undefined) throw new MissingNodeInTreeError('Can\\'t find a node by root hash')\n Object.entries(this.nodes).forEach(([key, node]) => {\n if (MPTree.nodeHash(node) !== key) throw new MerkleTreeHashMismatchError()\n const { type, payload } = MPTree.parseNode(node)\n switch (type) {\n case NodeType.Branch:\n payload\n .slice(0, 16)\n .filter(n => n.length)\n .forEach((n) => {\n if (this.nodes[n.toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in branch node')\n }\n })\n break\n case NodeType.Extension:\n if (this.nodes[payload[0].toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in extension node')\n }\n }\n })\n }\n\n isEqual (tree: MPTree): boolean {\n return this.rootHash === tree.rootHash\n }\n\n private static parseNode (node: Buffer[]): {\n type: NodeType\n payload: Buffer[]\n path: string | null\n } {\n switch (node.length) {\n case 17:\n return { type: NodeType.Branch, payload: node, path: null }\n case 2: {\n const nibble = node[0][0] >> 4\n if (nibble > 3) throw new UnknownPathNibbleError(nibble)\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf\n const slice = [0, 2].includes(nibble) ? 2 : 1\n return { type, payload: [node[1]], path: node[0].toString('hex').slice(slice) }\n }\n default:\n throw new UnknownNodeLengthError(node.length)\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @returns Binary\n */\n serialize (): MPTreeBinary {\n return [\n Buffer.from(this.rootHash, 'hex'),\n Object.entries(this.nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value\n ]))\n ]\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @param key - The key of the element to retrieve\n * @returns Value associated to the specified key\n */\n get (key: string): Buffer | undefined {\n let searchFrom = this.rootHash\n while (true) {\n const { type, payload, path } = MPTree.parseNode(this.nodes[searchFrom])\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return payload[16]\n searchFrom = payload[+`0x${key[0]}`].toString('hex')\n key = key.substr(1)\n break\n case NodeType.Extension:\n if (key.substr(0, path?.length) !== path) return undefined\n searchFrom = payload[0].toString('hex')\n key = key.substr(path.length)\n break\n case NodeType.Leaf:\n if (path !== key) return undefined\n return payload[0]\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mptree.mjs","names":["hash","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnknownPathNibbleError","UnknownNodeLengthError","NodeType","MPTree","nodeHash","node","from","rlpEncode","toString","constructor","binary","rootHash","nodes","Object","fromEntries","map","undefined","entries","forEach","key","type","payload","parseNode","Branch","slice","filter","n","length","Extension","isEqual","tree","path","nibble","Leaf","serialize","mptHash","value","get","_key","searchFrom","substring"],"sources":["../../src/utils/mptree.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/* eslint-disable default-case */\nimport { encode as rlpEncode } from 'rlp';\nimport type { Input } from 'rlp';\nimport { hash } from './crypto';\nimport {\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownPathNibbleError,\n UnknownNodeLengthError,\n} from './errors';\n\nenum NodeType {\n Branch,\n Extension,\n Leaf,\n}\n\nexport type MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>];\n\nexport default class MPTree {\n private readonly rootHash: string;\n\n private readonly nodes: { [key: string]: Buffer[] };\n\n private static nodeHash(node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex');\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @param binary - Binary\n * @returns Merkle Patricia Tree\n */\n constructor(binary: MPTreeBinary) {\n this.rootHash = binary[0].toString('hex');\n this.nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]]),\n );\n\n if (this.nodes[this.rootHash] === undefined) throw new MissingNodeInTreeError('Can\\'t find a node by root hash');\n Object.entries(this.nodes).forEach(([key, node]) => {\n if (MPTree.nodeHash(node) !== key) throw new MerkleTreeHashMismatchError();\n const { type, payload } = MPTree.parseNode(node);\n switch (type) {\n case NodeType.Branch:\n payload\n .slice(0, 16)\n .filter((n) => n.length)\n .forEach((n) => {\n if (this.nodes[n.toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in branch node');\n }\n });\n break;\n case NodeType.Extension:\n if (this.nodes[payload[0].toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in extension node');\n }\n }\n });\n }\n\n isEqual(tree: MPTree): boolean {\n return this.rootHash === tree.rootHash;\n }\n\n private static parseNode(node: Buffer[]): {\n type: NodeType;\n payload: Buffer[];\n path: string | null;\n } {\n switch (node.length) {\n case 17:\n return { type: NodeType.Branch, payload: node, path: null };\n case 2: {\n const nibble = node[0][0] >> 4; // eslint-disable-line no-bitwise\n if (nibble > 3) throw new UnknownPathNibbleError(nibble);\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf;\n const slice = [0, 2].includes(nibble) ? 2 : 1;\n return { type, payload: [node[1]], path: node[0].toString('hex').slice(slice) };\n }\n default:\n throw new UnknownNodeLengthError(node.length);\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @returns Binary\n */\n serialize(): MPTreeBinary {\n return [\n Buffer.from(this.rootHash, 'hex'),\n Object.entries(this.nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value,\n ])),\n ];\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @param _key - The key of the element to retrieve\n * @returns Value associated to the specified key\n */\n get(_key: string): Buffer | undefined {\n let searchFrom = this.rootHash;\n let key = _key;\n while (true) { // eslint-disable-line no-constant-condition\n const { type, payload, path } = MPTree.parseNode(this.nodes[searchFrom]);\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return payload[16];\n searchFrom = payload[+`0x${key[0]}`].toString('hex');\n key = key.substring(1);\n break;\n case NodeType.Extension:\n if (key.substring(0, path?.length) !== path) return undefined;\n searchFrom = payload[0].toString('hex');\n key = key.substring(path.length);\n break;\n case NodeType.Leaf:\n if (path !== key) return undefined;\n return payload[0];\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -8,7 +8,13 @@ export declare const mapObject: <InputV, OutputV>(object: {
8
8
  export declare const concatBuffers: (list: readonly Uint8Array[], totalLength?: number | undefined) => Buffer;
9
9
  /**
10
10
  * Object key type guard
11
- * @param key - Object key
12
- * @param object - object
11
+ * @param key - Maybe object key
12
+ * @param object - Object
13
13
  */
14
14
  export declare function isKeyOfObject<T>(key: string | number | symbol, object: T): key is keyof T;
15
+ /**
16
+ * Array item type guard
17
+ * @param item - Maybe array item
18
+ * @param array - Array
19
+ */
20
+ export declare function isItemOfArray<T>(item: any, array: readonly T[]): item is T;
@@ -1,8 +1,11 @@
1
1
  import _buffer from "buffer";
2
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
3
  const {
3
4
  Buffer: _Buffer
4
5
  } = _buffer;
5
- export const pause = async duration => await new Promise(resolve => setTimeout(resolve, duration));
6
+ export const pause = async duration => new Promise(resolve => {
7
+ setTimeout(resolve, duration);
8
+ });
6
9
  export const mapObject = (object, fn) => Object.fromEntries(Object.entries(object).map(fn)); // remove after dropping webpack4 support
7
10
 
8
11
  const isWebpack4Buffer = (() => {
@@ -18,11 +21,20 @@ const isWebpack4Buffer = (() => {
18
21
  export const concatBuffers = isWebpack4Buffer ? (list, totalLength) => _Buffer.concat(list.map(el => _Buffer.from(el)), totalLength) : _Buffer.concat;
19
22
  /**
20
23
  * Object key type guard
21
- * @param key - Object key
22
- * @param object - object
24
+ * @param key - Maybe object key
25
+ * @param object - Object
23
26
  */
24
27
 
25
28
  export function isKeyOfObject(key, object) {
26
29
  return key in object;
27
30
  }
31
+ /**
32
+ * Array item type guard
33
+ * @param item - Maybe array item
34
+ * @param array - Array
35
+ */
36
+
37
+ export function isItemOfArray(item, array) {
38
+ return _includesInstanceProperty(array).call(array, item);
39
+ }
28
40
  //# sourceMappingURL=other.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"other.mjs","names":["pause","duration","Promise","resolve","setTimeout","mapObject","object","fn","Object","fromEntries","entries","map","isWebpack4Buffer","concat","Uint8Array","from","error","concatBuffers","list","totalLength","el","isKeyOfObject","key"],"sources":["../../src/utils/other.ts"],"sourcesContent":["export const pause = async (duration: number): Promise<void> =>\n await new Promise(resolve => setTimeout(resolve, duration))\n\nexport const mapObject = <InputV, OutputV>(\n object: { [k: string]: InputV },\n fn: (\n value: [string, InputV], index: number, array: Array<[string, InputV]>\n ) => [number | string, OutputV]\n): { [k: string]: OutputV } => Object.fromEntries(Object.entries(object).map(fn))\n\n// remove after dropping webpack4 support\nconst isWebpack4Buffer = (() => {\n try {\n Buffer.concat([Uint8Array.from([])])\n return false\n } catch (error) {\n return true\n }\n})()\n\nexport const concatBuffers = isWebpack4Buffer\n ? (list: readonly Uint8Array[], totalLength?: number): Buffer =>\n Buffer.concat(list.map(el => Buffer.from(el)), totalLength)\n : Buffer.concat\n\n/**\n * Object key type guard\n * @param key - Object key\n * @param object - object\n */\nexport function isKeyOfObject<T> (\n key: string | number | symbol,\n object: T\n): key is keyof T {\n return key in object\n}\n"],"mappings":";;;;AAAA,OAAO,MAAMA,KAAK,GAAG,MAAOC,QAAP,IACnB,MAAM,IAAIC,OAAJ,CAAYC,OAAO,IAAIC,UAAU,CAACD,OAAD,EAAUF,QAAV,CAAjC,CADD;AAGP,OAAO,MAAMI,SAAS,GAAG,CACvBC,MADuB,EAEvBC,EAFuB,KAKMC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeJ,MAAf,EAAuBK,GAAvB,CAA2BJ,EAA3B,CAAnB,CALxB,C,CAOP;;AACA,MAAMK,gBAAgB,GAAG,CAAC,MAAM;EAC9B,IAAI;IACF,QAAOC,MAAP,CAAc,CAACC,UAAU,CAACC,IAAX,CAAgB,EAAhB,CAAD,CAAd;;IACA,OAAO,KAAP;EACD,CAHD,CAGE,OAAOC,KAAP,EAAc;IACd,OAAO,IAAP;EACD;AACF,CAPwB,GAAzB;;AASA,OAAO,MAAMC,aAAa,GAAGL,gBAAgB,GACzC,CAACM,IAAD,EAA8BC,WAA9B,KACE,QAAON,MAAP,CAAcK,IAAI,CAACP,GAAL,CAASS,EAAE,IAAI,QAAOL,IAAP,CAAYK,EAAZ,CAAf,CAAd,EAA+CD,WAA/C,CAFuC,GAGzC,QAAON,MAHJ;AAKP;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASQ,aAAT,CACLC,GADK,EAELhB,MAFK,EAGW;EAChB,OAAOgB,GAAG,IAAIhB,MAAd;AACD"}
1
+ {"version":3,"file":"other.mjs","names":["pause","duration","Promise","resolve","setTimeout","mapObject","object","fn","Object","fromEntries","entries","map","isWebpack4Buffer","concat","Uint8Array","from","error","concatBuffers","list","totalLength","el","isKeyOfObject","key","isItemOfArray","item","array"],"sources":["../../src/utils/other.ts"],"sourcesContent":["export const pause = async (duration: number): Promise<void> => new Promise((resolve) => {\n setTimeout(resolve, duration);\n});\n\nexport const mapObject = <InputV, OutputV>(\n object: { [k: string]: InputV },\n fn: (\n value: [string, InputV], index: number, array: Array<[string, InputV]>\n ) => [number | string, OutputV],\n): { [k: string]: OutputV } => Object.fromEntries(Object.entries(object).map(fn));\n\n// remove after dropping webpack4 support\nconst isWebpack4Buffer = (() => {\n try {\n Buffer.concat([Uint8Array.from([])]);\n return false;\n } catch (error) {\n return true;\n }\n})();\n\nexport const concatBuffers = isWebpack4Buffer\n ? (list: readonly Uint8Array[], totalLength?: number): Buffer => (\n Buffer.concat(list.map((el) => Buffer.from(el)), totalLength)\n )\n : Buffer.concat;\n\n/**\n * Object key type guard\n * @param key - Maybe object key\n * @param object - Object\n */\nexport function isKeyOfObject<T>(key: string | number | symbol, object: T): key is keyof T {\n return key in object;\n}\n\n/**\n * Array item type guard\n * @param item - Maybe array item\n * @param array - Array\n */\nexport function isItemOfArray<T>(item: any, array: readonly T[]): item is T {\n return array.includes(item);\n}\n"],"mappings":";;;;;AAAA,OAAO,MAAMA,KAAK,GAAG,MAAOC,QAAP,IAA2C,IAAIC,OAAJ,CAAaC,OAAD,IAAa;EACvFC,UAAU,CAACD,OAAD,EAAUF,QAAV,CAAV;AACD,CAF+D,CAAzD;AAIP,OAAO,MAAMI,SAAS,GAAG,CACvBC,MADuB,EAEvBC,EAFuB,KAKMC,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACE,OAAP,CAAeJ,MAAf,EAAuBK,GAAvB,CAA2BJ,EAA3B,CAAnB,CALxB,C,CAOP;;AACA,MAAMK,gBAAgB,GAAG,CAAC,MAAM;EAC9B,IAAI;IACF,QAAOC,MAAP,CAAc,CAACC,UAAU,CAACC,IAAX,CAAgB,EAAhB,CAAD,CAAd;;IACA,OAAO,KAAP;EACD,CAHD,CAGE,OAAOC,KAAP,EAAc;IACd,OAAO,IAAP;EACD;AACF,CAPwB,GAAzB;;AASA,OAAO,MAAMC,aAAa,GAAGL,gBAAgB,GACzC,CAACM,IAAD,EAA8BC,WAA9B,KACA,QAAON,MAAP,CAAcK,IAAI,CAACP,GAAL,CAAUS,EAAD,IAAQ,QAAOL,IAAP,CAAYK,EAAZ,CAAjB,CAAd,EAAiDD,WAAjD,CAFyC,GAIzC,QAAON,MAJJ;AAMP;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASQ,aAAT,CAA0BC,GAA1B,EAAyDhB,MAAzD,EAAoF;EACzF,OAAOgB,GAAG,IAAIhB,MAAd;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASiB,aAAT,CAA0BC,IAA1B,EAAqCC,KAArC,EAAqE;EAC1E,OAAO,0BAAAA,KAAK,MAAL,CAAAA,KAAK,EAAUD,IAAV,CAAZ;AACD"}
@@ -1 +1 @@
1
- export default function (version: string, geVersion: string, ltVersion: string): boolean;
1
+ export default function semverSatisfies(version: string, geVersion: string, ltVersion: string): boolean;
@@ -1,4 +1,4 @@
1
- export default function (version, geVersion, ltVersion) {
1
+ export default function semverSatisfies(version, geVersion, ltVersion) {
2
2
  const getComponents = v => v.split(/[-+]/)[0].split('.').map(i => +i);
3
3
 
4
4
  const versionComponents = getComponents(version);
@@ -6,7 +6,7 @@ export default function (version, geVersion, ltVersion) {
6
6
  const ltComponents = getComponents(ltVersion);
7
7
  const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1;
8
8
 
9
- const componentsToNumber = components => components.reverse().reduce((acc, n, idx) => acc + n * Math.pow(base, idx), 0);
9
+ const componentsToNumber = components => components.reverse().reduce((acc, n, idx) => acc + n * base ** idx, 0);
10
10
 
11
11
  const vNumber = componentsToNumber(versionComponents);
12
12
  const geNumber = componentsToNumber(geComponents);
@@ -1 +1 @@
1
- {"version":3,"file":"semver-satisfies.mjs","names":["version","geVersion","ltVersion","getComponents","v","split","map","i","versionComponents","geComponents","ltComponents","base","Math","max","componentsToNumber","components","reverse","reduce","acc","n","idx","pow","vNumber","geNumber","ltNumber"],"sources":["../../src/utils/semver-satisfies.ts"],"sourcesContent":["export default function (version: string, geVersion: string, ltVersion: string): boolean {\n const getComponents = (v: string): number[] => v\n .split(/[-+]/)[0].split('.').map(i => +i)\n\n const versionComponents = getComponents(version)\n const geComponents = getComponents(geVersion)\n const ltComponents = getComponents(ltVersion)\n\n const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * Math.pow(base, idx), 0)\n\n const vNumber = componentsToNumber(versionComponents)\n const geNumber = componentsToNumber(geComponents)\n const ltNumber = componentsToNumber(ltComponents)\n return vNumber >= geNumber && vNumber < ltNumber\n}\n"],"mappings":"AAAA,eAAe,UAAUA,OAAV,EAA2BC,SAA3B,EAA8CC,SAA9C,EAA0E;EACvF,MAAMC,aAAa,GAAIC,CAAD,IAAyBA,CAAC,CAC7CC,KAD4C,CACtC,MADsC,EAC9B,CAD8B,EAC3BA,KAD2B,CACrB,GADqB,EAChBC,GADgB,CACZC,CAAC,IAAI,CAACA,CADM,CAA/C;;EAGA,MAAMC,iBAAiB,GAAGL,aAAa,CAACH,OAAD,CAAvC;EACA,MAAMS,YAAY,GAAGN,aAAa,CAACF,SAAD,CAAlC;EACA,MAAMS,YAAY,GAAGP,aAAa,CAACD,SAAD,CAAlC;EAEA,MAAMS,IAAI,GAAGC,IAAI,CAACC,GAAL,CAAS,GAAGL,iBAAZ,EAA+B,GAAGC,YAAlC,EAAgD,GAAGC,YAAnD,IAAmE,CAAhF;;EACA,MAAMI,kBAAkB,GAAIC,UAAD,IAAkCA,UAAU,CAACC,OAAX,GAC1DC,MAD0D,CACnD,CAACC,GAAD,EAAMC,CAAN,EAASC,GAAT,KAAiBF,GAAG,GAAGC,CAAC,GAAGP,IAAI,CAACS,GAAL,CAASV,IAAT,EAAeS,GAAf,CADwB,EACH,CADG,CAA7D;;EAGA,MAAME,OAAO,GAAGR,kBAAkB,CAACN,iBAAD,CAAlC;EACA,MAAMe,QAAQ,GAAGT,kBAAkB,CAACL,YAAD,CAAnC;EACA,MAAMe,QAAQ,GAAGV,kBAAkB,CAACJ,YAAD,CAAnC;EACA,OAAOY,OAAO,IAAIC,QAAX,IAAuBD,OAAO,GAAGE,QAAxC;AACD"}
1
+ {"version":3,"file":"semver-satisfies.mjs","names":["semverSatisfies","version","geVersion","ltVersion","getComponents","v","split","map","i","versionComponents","geComponents","ltComponents","base","Math","max","componentsToNumber","components","reverse","reduce","acc","n","idx","vNumber","geNumber","ltNumber"],"sources":["../../src/utils/semver-satisfies.ts"],"sourcesContent":["export default function semverSatisfies(\n version: string,\n geVersion: string,\n ltVersion: string,\n): boolean {\n const getComponents = (v: string): number[] => v\n .split(/[-+]/)[0].split('.').map((i) => +i);\n\n const versionComponents = getComponents(version);\n const geComponents = getComponents(geVersion);\n const ltComponents = getComponents(ltVersion);\n\n const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1;\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * base ** idx, 0);\n\n const vNumber = componentsToNumber(versionComponents);\n const geNumber = componentsToNumber(geComponents);\n const ltNumber = componentsToNumber(ltComponents);\n return vNumber >= geNumber && vNumber < ltNumber;\n}\n"],"mappings":"AAAA,eAAe,SAASA,eAAT,CACbC,OADa,EAEbC,SAFa,EAGbC,SAHa,EAIJ;EACT,MAAMC,aAAa,GAAIC,CAAD,IAAyBA,CAAC,CAC7CC,KAD4C,CACtC,MADsC,EAC9B,CAD8B,EAC3BA,KAD2B,CACrB,GADqB,EAChBC,GADgB,CACXC,CAAD,IAAO,CAACA,CADI,CAA/C;;EAGA,MAAMC,iBAAiB,GAAGL,aAAa,CAACH,OAAD,CAAvC;EACA,MAAMS,YAAY,GAAGN,aAAa,CAACF,SAAD,CAAlC;EACA,MAAMS,YAAY,GAAGP,aAAa,CAACD,SAAD,CAAlC;EAEA,MAAMS,IAAI,GAAGC,IAAI,CAACC,GAAL,CAAS,GAAGL,iBAAZ,EAA+B,GAAGC,YAAlC,EAAgD,GAAGC,YAAnD,IAAmE,CAAhF;;EACA,MAAMI,kBAAkB,GAAIC,UAAD,IAAkCA,UAAU,CAACC,OAAX,GAC1DC,MAD0D,CACnD,CAACC,GAAD,EAAMC,CAAN,EAASC,GAAT,KAAiBF,GAAG,GAAGC,CAAC,GAAGR,IAAI,IAAIS,GADgB,EACX,CADW,CAA7D;;EAGA,MAAMC,OAAO,GAAGP,kBAAkB,CAACN,iBAAD,CAAlC;EACA,MAAMc,QAAQ,GAAGR,kBAAkB,CAACL,YAAD,CAAnC;EACA,MAAMc,QAAQ,GAAGT,kBAAkB,CAACJ,YAAD,CAAnC;EACA,OAAOW,OAAO,IAAIC,QAAX,IAAuBD,OAAO,GAAGE,QAAxC;AACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"string.mjs","names":["snakeToPascal","s","replace","match","toUpperCase","pascalToSnake","toLowerCase","isHex","str","length","test","isBase64","index","indexOf","slice"],"sources":["../../src/utils/string.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Convert string from snake_case to PascalCase\n * @param s - String to convert\n * @returns Converted string\n */\nexport function snakeToPascal (s: string): string {\n return s.replace(/_./g, match => match[1].toUpperCase())\n}\n\n/**\n * Convert string from PascalCase to snake_case\n * @param s - String to convert\n * @returns Converted string\n */\nexport function pascalToSnake (s: string): string {\n return s.replace(/[A-Z]/g, match => `_${match.toLowerCase()}`)\n}\n\n/**\n * Check whether a string is valid hex.\n * @param str - String to validate.\n * @returns True if the string is valid hex, false otherwise.\n */\nexport function isHex (str: string): boolean {\n return str.length % 2 === 0 && /^[0-9a-f]+$/i.test(str)\n}\n\n/**\n * Check whether a string is valid base-64.\n * @param str - String to validate.\n * @returns True if the string is valid base-64, false otherwise.\n */\nexport function isBase64 (str: string): boolean {\n if (str.length % 4 > 0 || /[^0-9a-z+/=]/i.test(str)) return false\n const index = str.indexOf('=')\n return index === -1 || /={1,2}/.test(str.slice(index))\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,aAAT,CAAwBC,CAAxB,EAA2C;EAChD,OAAOA,CAAC,CAACC,OAAF,CAAU,KAAV,EAAiBC,KAAK,IAAIA,KAAK,CAAC,CAAD,CAAL,CAASC,WAAT,EAA1B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,CAAwBJ,CAAxB,EAA2C;EAChD,OAAOA,CAAC,CAACC,OAAF,CAAU,QAAV,EAAoBC,KAAK,IAAK,IAAGA,KAAK,CAACG,WAAN,EAAoB,EAArD,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,KAAT,CAAgBC,GAAhB,EAAsC;EAC3C,OAAOA,GAAG,CAACC,MAAJ,GAAa,CAAb,KAAmB,CAAnB,IAAwB,eAAeC,IAAf,CAAoBF,GAApB,CAA/B;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,QAAT,CAAmBH,GAAnB,EAAyC;EAC9C,IAAIA,GAAG,CAACC,MAAJ,GAAa,CAAb,GAAiB,CAAjB,IAAsB,gBAAgBC,IAAhB,CAAqBF,GAArB,CAA1B,EAAqD,OAAO,KAAP;EACrD,MAAMI,KAAK,GAAGJ,GAAG,CAACK,OAAJ,CAAY,GAAZ,CAAd;EACA,OAAOD,KAAK,KAAK,CAAC,CAAX,IAAgB,SAASF,IAAT,CAAcF,GAAG,CAACM,KAAJ,CAAUF,KAAV,CAAd,CAAvB;AACD"}
1
+ {"version":3,"file":"string.mjs","names":["snakeToPascal","s","replace","match","toUpperCase","pascalToSnake","toLowerCase","isHex","str","length","test","isBase64","index","indexOf","slice"],"sources":["../../src/utils/string.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Convert string from snake_case to PascalCase\n * @param s - String to convert\n * @returns Converted string\n */\nexport function snakeToPascal(s: string): string {\n return s.replace(/_./g, (match) => match[1].toUpperCase());\n}\n\n/**\n * Convert string from PascalCase to snake_case\n * @param s - String to convert\n * @returns Converted string\n */\nexport function pascalToSnake(s: string): string {\n return s.replace(/[A-Z]/g, (match) => `_${match.toLowerCase()}`);\n}\n\n/**\n * Check whether a string is valid hex.\n * @param str - String to validate.\n * @returns True if the string is valid hex, false otherwise.\n */\nexport function isHex(str: string): boolean {\n return str.length % 2 === 0 && /^[0-9a-f]+$/i.test(str);\n}\n\n/**\n * Check whether a string is valid base-64.\n * @param str - String to validate.\n * @returns True if the string is valid base-64, false otherwise.\n */\nexport function isBase64(str: string): boolean {\n if (str.length % 4 > 0 || /[^0-9a-z+/=]/i.test(str)) return false;\n const index = str.indexOf('=');\n return index === -1 || /={1,2}/.test(str.slice(index));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,aAAT,CAAuBC,CAAvB,EAA0C;EAC/C,OAAOA,CAAC,CAACC,OAAF,CAAU,KAAV,EAAkBC,KAAD,IAAWA,KAAK,CAAC,CAAD,CAAL,CAASC,WAAT,EAA5B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,CAAuBJ,CAAvB,EAA0C;EAC/C,OAAOA,CAAC,CAACC,OAAF,CAAU,QAAV,EAAqBC,KAAD,IAAY,IAAGA,KAAK,CAACG,WAAN,EAAoB,EAAvD,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,KAAT,CAAeC,GAAf,EAAqC;EAC1C,OAAOA,GAAG,CAACC,MAAJ,GAAa,CAAb,KAAmB,CAAnB,IAAwB,eAAeC,IAAf,CAAoBF,GAApB,CAA/B;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,QAAT,CAAkBH,GAAlB,EAAwC;EAC7C,IAAIA,GAAG,CAACC,MAAJ,GAAa,CAAb,GAAiB,CAAjB,IAAsB,gBAAgBC,IAAhB,CAAqBF,GAArB,CAA1B,EAAqD,OAAO,KAAP;EACrD,MAAMI,KAAK,GAAGJ,GAAG,CAACK,OAAJ,CAAY,GAAZ,CAAd;EACA,OAAOD,KAAK,KAAK,CAAC,CAAX,IAAgB,SAASF,IAAT,CAAcF,GAAG,CAACM,KAAJ,CAAUF,KAAV,CAAd,CAAvB;AACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeternity/aepp-sdk",
3
- "version": "12.0.0",
3
+ "version": "12.1.2",
4
4
  "description": "SDK for the æternity blockchain",
5
5
  "main": "dist/aepp-sdk.js",
6
6
  "types": "es/index.d.ts",
@@ -16,7 +16,9 @@
16
16
  "build:dev": "webpack --mode=development && npm run build:es",
17
17
  "docs:examples": "node tooling/docs/examples-to-md.js examples/node/*.js",
18
18
  "docs:api": "typedoc",
19
- "lint": "eslint . --ext .ts,.js",
19
+ "commitlint": "commitlint --from develop",
20
+ "lint": "eslint . --ext .ts,.js,.mjs",
21
+ "report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov",
20
22
  "test": "nyc mocha './test/unit/' './test/integration/'",
21
23
  "test:integration": "nyc mocha './test/integration/'",
22
24
  "test:unit": "nyc mocha './test/unit/'",
@@ -33,12 +35,19 @@
33
35
  "SDK"
34
36
  ],
35
37
  "dependencies": {
36
- "@aeternity/aepp-calldata": "^1.1.1",
38
+ "@aeternity/aepp-calldata": "^1.2.0",
37
39
  "@aeternity/argon2-browser": "^0.1.2",
38
40
  "@aeternity/uuid": "^0.0.1",
39
- "@azure/core-client": "^1.6.0",
41
+ "@azure/core-client": "1.6.0",
40
42
  "@azure/core-rest-pipeline": "^1.9.0",
41
- "@babel/runtime-corejs3": "^7.18.3",
43
+ "@babel/runtime-corejs3": "^7.18.9",
44
+ "@types/aes-js": "^3.1.1",
45
+ "@types/argon2-browser": "^1.18.1",
46
+ "@types/json-bigint": "^1.0.1",
47
+ "@types/sha.js": "^2.4.0",
48
+ "@types/uuid": "^8.3.4",
49
+ "@types/webextension-polyfill": "^0.9.0",
50
+ "@types/websocket": "^1.0.5",
42
51
  "aes-js": "^3.1.2",
43
52
  "bignumber.js": "^9.0.2",
44
53
  "bip32-path": "^0.4.2",
@@ -60,38 +69,31 @@
60
69
  "url": "https://github.com/aeternity/aepp-sdk-js"
61
70
  },
62
71
  "devDependencies": {
63
- "@babel/cli": "^7.17.10",
64
- "@babel/core": "^7.18.2",
65
- "@babel/node": "^7.17.10",
66
- "@babel/plugin-transform-runtime": "^7.18.2",
67
- "@babel/preset-env": "^7.18.2",
68
- "@babel/preset-typescript": "^7.17.12",
69
- "@babel/register": "^7.17.7",
70
- "@commitlint/cli": "^17.0.2",
71
- "@commitlint/config-conventional": "^17.0.2",
72
- "@types/aes-js": "^3.1.1",
73
- "@types/argon2-browser": "^1.18.1",
74
- "@types/bn.js": "^5.1.0",
72
+ "@babel/cli": "^7.18.9",
73
+ "@babel/core": "^7.18.9",
74
+ "@babel/node": "^7.18.9",
75
+ "@babel/plugin-transform-runtime": "^7.18.9",
76
+ "@babel/preset-env": "^7.18.9",
77
+ "@babel/preset-typescript": "^7.18.6",
78
+ "@babel/register": "^7.18.9",
79
+ "@commitlint/cli": "^17.0.3",
80
+ "@commitlint/config-conventional": "^17.0.3",
75
81
  "@types/chai": "^4.3.1",
76
82
  "@types/chai-as-promised": "^7.1.5",
77
- "@types/json-bigint": "^1.0.1",
78
83
  "@types/mocha": "^9.1.1",
79
- "@types/node": "^17.0.42",
80
- "@types/sha.js": "^2.4.0",
81
- "@types/sinon": "^10.0.11",
82
- "@types/uuid": "^8.3.4",
83
- "@types/webextension-polyfill": "^0.9.0",
84
- "@types/websocket": "^1.0.5",
85
- "@typescript-eslint/eslint-plugin": "^5.27.1",
86
- "@typescript-eslint/parser": "^5.27.1",
84
+ "@types/sinon": "^10.0.13",
85
+ "@typescript-eslint/eslint-plugin": "^5.31.0",
86
+ "@typescript-eslint/parser": "^5.31.0",
87
87
  "babel-loader": "^8.2.5",
88
88
  "babel-plugin-add-import-extension": "^1.6.0",
89
89
  "babel-plugin-import-globals": "^2.0.0",
90
90
  "babel-plugin-transform-default-named-imports": "^1.2.2",
91
91
  "chai": "^4.3.6",
92
92
  "chai-as-promised": "^7.1.1",
93
- "eslint": "^8.17.0",
94
- "eslint-config-standard": "^17.0.0",
93
+ "codecov": "^3.8.3",
94
+ "eslint": "^8.20.0",
95
+ "eslint-config-airbnb-base": "^15.0.0",
96
+ "eslint-config-airbnb-typescript": "^17.0.0",
95
97
  "eslint-plugin-rulesdir": "^0.2.1",
96
98
  "eslint-plugin-tsdoc": "^0.2.16",
97
99
  "mocha": "^10.0.0",
@@ -99,13 +101,13 @@
99
101
  "sinon": "^14.0.0",
100
102
  "source-map": "^0.7.4",
101
103
  "standard-version": "^9.5.0",
102
- "ts-node": "^10.8.1",
103
- "typedoc": "^0.22.17",
104
- "typedoc-plugin-missing-exports": "^0.22.6",
105
- "typescript": "^4.7.3",
106
- "webpack": "^5.73.0",
104
+ "ts-node": "^10.9.1",
105
+ "typedoc": "^0.23.9",
106
+ "typedoc-plugin-missing-exports": "^0.23.0",
107
+ "typescript": "^4.7.4",
108
+ "webpack": "^5.74.0",
107
109
  "webpack-bundle-analyzer": "^4.5.0",
108
- "webpack-cli": "^4.9.2"
110
+ "webpack-cli": "^4.10.0"
109
111
  },
110
112
  "files": [
111
113
  "dist",
package/src/AeSdk.ts CHANGED
@@ -1,28 +1,31 @@
1
- import AeSdkBase, { Account } from './AeSdkBase'
2
- import AccountBase from './account/Base'
3
- import { decode, EncodedData } from './utils/encoder'
4
- import { UnavailableAccountError } from './utils/errors'
1
+ import AeSdkBase, { Account } from './AeSdkBase';
2
+ import AccountBase from './account/Base';
3
+ import { decode, Encoded } from './utils/encoder';
4
+ import { UnavailableAccountError } from './utils/errors';
5
5
 
6
6
  export default class AeSdk extends AeSdkBase {
7
- accounts: { [key: EncodedData<'ak'>]: AccountBase } = {}
8
- selectedAddress?: EncodedData<'ak'>
7
+ accounts: { [key: Encoded.AccountAddress]: AccountBase } = {};
9
8
 
10
- _resolveAccount (account: Account | EncodedData<'ak'> = this.selectedAddress): AccountBase {
9
+ selectedAddress?: Encoded.AccountAddress;
10
+
11
+ _resolveAccount(
12
+ account: Account | Encoded.AccountAddress = this.selectedAddress,
13
+ ): AccountBase {
11
14
  if (typeof account === 'string') {
12
- const address = account as EncodedData<'ak'>
13
- decode(address)
14
- if (this.accounts[address] == null) throw new UnavailableAccountError(account)
15
- account = this.accounts[address]
15
+ const address = account as Encoded.AccountAddress;
16
+ decode(address);
17
+ if (this.accounts[address] == null) throw new UnavailableAccountError(account);
18
+ account = this.accounts[address];
16
19
  }
17
- return super._resolveAccount(account)
20
+ return super._resolveAccount(account);
18
21
  }
19
22
 
20
23
  /**
21
24
  * Get accounts addresses
22
25
  * @example addresses()
23
26
  */
24
- addresses (): Array<EncodedData<'ak'>> {
25
- return Object.keys(this.accounts) as Array<EncodedData<'ak'>>
27
+ addresses(): Encoded.AccountAddress[] {
28
+ return Object.keys(this.accounts) as Encoded.AccountAddress[];
26
29
  }
27
30
 
28
31
  /**
@@ -32,10 +35,10 @@ export default class AeSdk extends AeSdkBase {
32
35
  * @param options.select - Select account
33
36
  * @example addAccount(account)
34
37
  */
35
- async addAccount (account: AccountBase, { select }: { select?: boolean } = {}): Promise<void> {
36
- const address = await account.address()
37
- this.accounts[address] = account
38
- if (select === true) this.selectAccount(address)
38
+ async addAccount(account: AccountBase, { select }: { select?: boolean } = {}): Promise<void> {
39
+ const address = await account.address();
40
+ this.accounts[address] = account;
41
+ if (select === true) this.selectAccount(address);
39
42
  }
40
43
 
41
44
  /**
@@ -43,13 +46,13 @@ export default class AeSdk extends AeSdkBase {
43
46
  * @param address - Address of account to remove
44
47
  * @example removeAccount(address)
45
48
  */
46
- removeAccount (address: EncodedData<'ak'>): void {
49
+ removeAccount(address: Encoded.AccountAddress): void {
47
50
  if (this.accounts[address] == null) {
48
- console.warn(`removeAccount: Account for ${address} not available`)
49
- return
51
+ console.warn(`removeAccount: Account for ${address} not available`);
52
+ return;
50
53
  }
51
- delete this.accounts[address] // eslint-disable-line @typescript-eslint/no-dynamic-delete
52
- if (this.selectedAddress === address) delete this.selectedAddress
54
+ delete this.accounts[address]; // eslint-disable-line @typescript-eslint/no-dynamic-delete
55
+ if (this.selectedAddress === address) delete this.selectedAddress;
53
56
  }
54
57
 
55
58
  /**
@@ -57,9 +60,9 @@ export default class AeSdk extends AeSdkBase {
57
60
  * @param address - Address of account to select
58
61
  * @example selectAccount('ak_xxxxxxxx')
59
62
  */
60
- selectAccount (address: EncodedData<'ak'>): void {
61
- decode(address)
62
- if (this.accounts[address] == null) throw new UnavailableAccountError(address)
63
- this.selectedAddress = address
63
+ selectAccount(address: Encoded.AccountAddress): void {
64
+ decode(address);
65
+ if (this.accounts[address] == null) throw new UnavailableAccountError(address);
66
+ this.selectedAddress = address;
64
67
  }
65
68
  }