@alephium/web3 2.0.10 → 3.0.0-test.1

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 (493) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +11 -1
  3. package/dist/{src → _cjs}/address/address.js +60 -77
  4. package/dist/_cjs/address/address.js.map +1 -0
  5. package/dist/{src → _cjs}/address/index.js +1 -17
  6. package/dist/_cjs/address/index.js.map +1 -0
  7. package/dist/_cjs/api/api-alephium.d.ts +1152 -0
  8. package/dist/{src → _cjs}/api/api-alephium.js +5 -756
  9. package/dist/_cjs/api/api-alephium.js.map +1 -0
  10. package/dist/_cjs/api/api-explorer.d.ts +586 -0
  11. package/dist/{src → _cjs}/api/api-explorer.js +14 -454
  12. package/dist/_cjs/api/api-explorer.js.map +1 -0
  13. package/dist/{src → _cjs}/api/explorer-provider.js +1 -18
  14. package/dist/_cjs/api/explorer-provider.js.map +1 -0
  15. package/dist/{src → _cjs}/api/index.js +18 -24
  16. package/dist/_cjs/api/index.js.map +1 -0
  17. package/dist/{src → _cjs}/api/node-provider.d.ts +1 -1
  18. package/dist/{src → _cjs}/api/node-provider.js +4 -26
  19. package/dist/_cjs/api/node-provider.js.map +1 -0
  20. package/dist/{src → _cjs}/api/types.js +25 -43
  21. package/dist/_cjs/api/types.js.map +1 -0
  22. package/dist/{src → _cjs}/api/utils.d.ts +1 -1
  23. package/dist/{src → _cjs}/api/utils.js +9 -21
  24. package/dist/_cjs/api/utils.js.map +1 -0
  25. package/dist/{src → _cjs}/block/block.js +20 -26
  26. package/dist/_cjs/block/block.js.map +1 -0
  27. package/dist/_cjs/block/index.d.ts +2 -0
  28. package/dist/_cjs/block/index.js +6 -0
  29. package/dist/_cjs/block/index.js.map +1 -0
  30. package/dist/{src → _cjs}/codec/array-codec.js +1 -17
  31. package/dist/_cjs/codec/array-codec.js.map +1 -0
  32. package/dist/{src → _cjs}/codec/asset-output-codec.js +1 -17
  33. package/dist/_cjs/codec/asset-output-codec.js.map +1 -0
  34. package/dist/{src → _cjs}/codec/bigint-codec.js +2 -33
  35. package/dist/_cjs/codec/bigint-codec.js.map +1 -0
  36. package/dist/{src → _cjs}/codec/bytestring-codec.d.ts +1 -1
  37. package/dist/{src → _cjs}/codec/bytestring-codec.js +1 -17
  38. package/dist/_cjs/codec/bytestring-codec.js.map +1 -0
  39. package/dist/{src → _cjs}/codec/checksum-codec.js +1 -17
  40. package/dist/_cjs/codec/checksum-codec.js.map +1 -0
  41. package/dist/{src → _cjs}/codec/codec.js +3 -19
  42. package/dist/_cjs/codec/codec.js.map +1 -0
  43. package/dist/{src → _cjs}/codec/compact-int-codec.js +2 -18
  44. package/dist/_cjs/codec/compact-int-codec.js.map +1 -0
  45. package/dist/{src → _cjs}/codec/contract-codec.js +1 -17
  46. package/dist/_cjs/codec/contract-codec.js.map +1 -0
  47. package/dist/{src → _cjs}/codec/contract-output-codec.js +1 -17
  48. package/dist/_cjs/codec/contract-output-codec.js.map +1 -0
  49. package/dist/_cjs/codec/contract-output-ref-codec.js +12 -0
  50. package/dist/_cjs/codec/contract-output-ref-codec.js.map +1 -0
  51. package/dist/_cjs/codec/either-codec.js +8 -0
  52. package/dist/_cjs/codec/either-codec.js.map +1 -0
  53. package/dist/{src → _cjs}/codec/hash.d.ts +1 -1
  54. package/dist/_cjs/codec/hash.js +20 -0
  55. package/dist/_cjs/codec/hash.js.map +1 -0
  56. package/dist/{src → _cjs}/codec/index.js +18 -24
  57. package/dist/_cjs/codec/index.js.map +1 -0
  58. package/dist/{src → _cjs}/codec/input-codec.js +1 -0
  59. package/dist/_cjs/codec/input-codec.js.map +1 -0
  60. package/dist/{src → _cjs}/codec/instr-codec.js +4 -21
  61. package/dist/_cjs/codec/instr-codec.js.map +1 -0
  62. package/dist/_cjs/codec/int-as-4bytes-codec.js +16 -0
  63. package/dist/_cjs/codec/int-as-4bytes-codec.js.map +1 -0
  64. package/dist/{src → _cjs}/codec/lockup-script-codec.d.ts +1 -1
  65. package/dist/{src → _cjs}/codec/lockup-script-codec.js +1 -17
  66. package/dist/_cjs/codec/lockup-script-codec.js.map +1 -0
  67. package/dist/{src → _cjs}/codec/method-codec.js +1 -17
  68. package/dist/_cjs/codec/method-codec.js.map +1 -0
  69. package/dist/_cjs/codec/option-codec.js +19 -0
  70. package/dist/_cjs/codec/option-codec.js.map +1 -0
  71. package/dist/_cjs/codec/output-codec.js +10 -0
  72. package/dist/_cjs/codec/output-codec.js.map +1 -0
  73. package/dist/_cjs/codec/public-key-like-codec.js +14 -0
  74. package/dist/_cjs/codec/public-key-like-codec.js.map +1 -0
  75. package/dist/{src → _cjs}/codec/reader.js +1 -17
  76. package/dist/_cjs/codec/reader.js.map +1 -0
  77. package/dist/_cjs/codec/script-codec.js +18 -0
  78. package/dist/_cjs/codec/script-codec.js.map +1 -0
  79. package/dist/{src → _cjs}/codec/signature-codec.d.ts +1 -1
  80. package/dist/_cjs/codec/signature-codec.js +8 -0
  81. package/dist/_cjs/codec/signature-codec.js.map +1 -0
  82. package/dist/{src → _cjs}/codec/timestamp-codec.js +1 -17
  83. package/dist/_cjs/codec/timestamp-codec.js.map +1 -0
  84. package/dist/_cjs/codec/token-codec.js +12 -0
  85. package/dist/_cjs/codec/token-codec.js.map +1 -0
  86. package/dist/{src → _cjs}/codec/transaction-codec.js +1 -17
  87. package/dist/_cjs/codec/transaction-codec.js.map +1 -0
  88. package/dist/{src → _cjs}/codec/unlock-script-codec.d.ts +1 -1
  89. package/dist/{src → _cjs}/codec/unlock-script-codec.js +1 -17
  90. package/dist/_cjs/codec/unlock-script-codec.js.map +1 -0
  91. package/dist/{src → _cjs}/codec/unsigned-tx-codec.js +1 -0
  92. package/dist/_cjs/codec/unsigned-tx-codec.js.map +1 -0
  93. package/dist/{src → _cjs}/codec/val.js +1 -17
  94. package/dist/_cjs/codec/val.js.map +1 -0
  95. package/dist/{src → _cjs}/constants.d.ts +0 -3
  96. package/dist/{src → _cjs}/constants.js +1 -20
  97. package/dist/_cjs/constants.js.map +1 -0
  98. package/dist/{src → _cjs}/contract/contract.js +60 -78
  99. package/dist/_cjs/contract/contract.js.map +1 -0
  100. package/dist/{src → _cjs}/contract/dapp-tx-builder.js +3 -19
  101. package/dist/_cjs/contract/dapp-tx-builder.js.map +1 -0
  102. package/dist/_cjs/contract/deployment.js +3 -0
  103. package/dist/_cjs/contract/deployment.js.map +1 -0
  104. package/dist/{src → _cjs}/contract/events.js +20 -26
  105. package/dist/_cjs/contract/events.js.map +1 -0
  106. package/dist/{src → _cjs}/contract/index.js +1 -17
  107. package/dist/_cjs/contract/index.js.map +1 -0
  108. package/dist/{src → _cjs}/contract/ralph.js +35 -69
  109. package/dist/_cjs/contract/ralph.js.map +1 -0
  110. package/dist/{src → _cjs}/contract/script-simulator.d.ts +0 -12
  111. package/dist/{src → _cjs}/contract/script-simulator.js +23 -64
  112. package/dist/_cjs/contract/script-simulator.js.map +1 -0
  113. package/dist/_cjs/debug.js +29 -0
  114. package/dist/_cjs/debug.js.map +1 -0
  115. package/dist/{src → _cjs}/error.js +1 -17
  116. package/dist/_cjs/error.js.map +1 -0
  117. package/dist/{src → _cjs}/exchange/exchange.js +8 -26
  118. package/dist/_cjs/exchange/exchange.js.map +1 -0
  119. package/dist/_cjs/exchange/index.d.ts +2 -0
  120. package/dist/{src → _cjs}/exchange/index.js +1 -17
  121. package/dist/_cjs/exchange/index.js.map +1 -0
  122. package/dist/{src → _cjs}/global.js +7 -26
  123. package/dist/_cjs/global.js.map +1 -0
  124. package/dist/{src → _cjs}/index.js +18 -27
  125. package/dist/_cjs/index.js.map +1 -0
  126. package/dist/_cjs/package.json +1 -0
  127. package/dist/{src → _cjs}/signer/index.js +1 -17
  128. package/dist/_cjs/signer/index.js.map +1 -0
  129. package/dist/{src → _cjs}/signer/signer.js +16 -63
  130. package/dist/_cjs/signer/signer.js.map +1 -0
  131. package/dist/{src → _cjs}/signer/tx-builder.js +4 -21
  132. package/dist/_cjs/signer/tx-builder.js.map +1 -0
  133. package/dist/{src → _cjs}/signer/types.js +6 -22
  134. package/dist/_cjs/signer/types.js.map +1 -0
  135. package/dist/{src → _cjs}/token/index.js +1 -17
  136. package/dist/_cjs/token/index.js.map +1 -0
  137. package/dist/{src → _cjs}/token/nft.d.ts +0 -1
  138. package/dist/{src → _cjs}/token/nft.js +5 -24
  139. package/dist/_cjs/token/nft.js.map +1 -0
  140. package/dist/{src → _cjs}/transaction/index.js +1 -17
  141. package/dist/_cjs/transaction/index.js.map +1 -0
  142. package/dist/{src → _cjs}/transaction/sign-verify.js +20 -27
  143. package/dist/_cjs/transaction/sign-verify.js.map +1 -0
  144. package/dist/{src → _cjs}/transaction/status.js +20 -26
  145. package/dist/_cjs/transaction/status.js.map +1 -0
  146. package/dist/{src → _cjs}/transaction/utils.js +3 -20
  147. package/dist/_cjs/transaction/utils.js.map +1 -0
  148. package/dist/{src → _cjs}/utils/bs58.d.ts +0 -1
  149. package/dist/{src → _cjs}/utils/bs58.js +4 -21
  150. package/dist/_cjs/utils/bs58.js.map +1 -0
  151. package/dist/_cjs/utils/djb2.js +11 -0
  152. package/dist/_cjs/utils/djb2.js.map +1 -0
  153. package/dist/{src → _cjs}/utils/index.js +1 -17
  154. package/dist/_cjs/utils/index.js.map +1 -0
  155. package/dist/{src → _cjs}/utils/number.d.ts +0 -2
  156. package/dist/{src → _cjs}/utils/number.fixture.js +1 -17
  157. package/dist/_cjs/utils/number.fixture.js.map +1 -0
  158. package/dist/{src → _cjs}/utils/number.js +10 -44
  159. package/dist/_cjs/utils/number.js.map +1 -0
  160. package/dist/_cjs/utils/sign.js +89 -0
  161. package/dist/_cjs/utils/sign.js.map +1 -0
  162. package/dist/{src → _cjs}/utils/subscription.js +1 -17
  163. package/dist/_cjs/utils/subscription.js.map +1 -0
  164. package/dist/{src → _cjs}/utils/utils.d.ts +7 -6
  165. package/dist/{src → _cjs}/utils/utils.js +60 -57
  166. package/dist/_cjs/utils/utils.js.map +1 -0
  167. package/dist/{src → _cjs}/utils/webcrypto.d.ts +1 -3
  168. package/dist/_cjs/utils/webcrypto.js +18 -0
  169. package/dist/_cjs/utils/webcrypto.js.map +1 -0
  170. package/dist/_esm/address/address.d.ts +36 -0
  171. package/dist/_esm/address/address.js +309 -0
  172. package/dist/_esm/address/address.js.map +1 -0
  173. package/dist/_esm/address/index.d.ts +1 -0
  174. package/dist/_esm/address/index.js +2 -0
  175. package/dist/_esm/address/index.js.map +1 -0
  176. package/dist/_esm/api/api-alephium.d.ts +1152 -0
  177. package/dist/_esm/api/api-alephium.js +797 -0
  178. package/dist/_esm/api/api-alephium.js.map +1 -0
  179. package/dist/_esm/api/api-explorer.d.ts +586 -0
  180. package/dist/_esm/api/api-explorer.js +577 -0
  181. package/dist/_esm/api/api-explorer.js.map +1 -0
  182. package/dist/_esm/api/explorer-provider.d.ts +21 -0
  183. package/dist/_esm/api/explorer-provider.js +48 -0
  184. package/dist/_esm/api/explorer-provider.js.map +1 -0
  185. package/dist/_esm/api/index.d.ts +6 -0
  186. package/dist/_esm/api/index.js +7 -0
  187. package/dist/_esm/api/index.js.map +1 -0
  188. package/dist/_esm/api/node-provider.d.ts +46 -0
  189. package/dist/_esm/api/node-provider.js +178 -0
  190. package/dist/_esm/api/node-provider.js.map +1 -0
  191. package/dist/_esm/api/types.d.ts +71 -0
  192. package/dist/_esm/api/types.js +219 -0
  193. package/dist/_esm/api/types.js.map +1 -0
  194. package/dist/_esm/api/utils.d.ts +10 -0
  195. package/dist/_esm/api/utils.js +37 -0
  196. package/dist/_esm/api/utils.js.map +1 -0
  197. package/dist/_esm/block/block.d.ts +27 -0
  198. package/dist/_esm/block/block.js +128 -0
  199. package/dist/_esm/block/block.js.map +1 -0
  200. package/dist/_esm/block/index.d.ts +2 -0
  201. package/dist/_esm/block/index.js +2 -0
  202. package/dist/_esm/block/index.js.map +1 -0
  203. package/dist/_esm/codec/array-codec.d.ts +8 -0
  204. package/dist/_esm/codec/array-codec.js +25 -0
  205. package/dist/_esm/codec/array-codec.js.map +1 -0
  206. package/dist/_esm/codec/asset-output-codec.d.ts +21 -0
  207. package/dist/_esm/codec/asset-output-codec.js +74 -0
  208. package/dist/_esm/codec/asset-output-codec.js.map +1 -0
  209. package/dist/_esm/codec/bigint-codec.d.ts +5 -0
  210. package/dist/_esm/codec/bigint-codec.js +62 -0
  211. package/dist/_esm/codec/bigint-codec.js.map +1 -0
  212. package/dist/_esm/codec/bytestring-codec.d.ts +10 -0
  213. package/dist/_esm/codec/bytestring-codec.js +16 -0
  214. package/dist/_esm/codec/bytestring-codec.js.map +1 -0
  215. package/dist/_esm/codec/checksum-codec.d.ts +8 -0
  216. package/dist/_esm/codec/checksum-codec.js +27 -0
  217. package/dist/_esm/codec/checksum-codec.js.map +1 -0
  218. package/dist/_esm/codec/codec.d.ts +57 -0
  219. package/dist/_esm/codec/codec.js +114 -0
  220. package/dist/_esm/codec/codec.js.map +1 -0
  221. package/dist/_esm/codec/compact-int-codec.d.ts +68 -0
  222. package/dist/_esm/codec/compact-int-codec.js +287 -0
  223. package/dist/_esm/codec/compact-int-codec.js.map +1 -0
  224. package/dist/_esm/codec/contract-codec.d.ts +19 -0
  225. package/dist/_esm/codec/contract-codec.js +47 -0
  226. package/dist/_esm/codec/contract-codec.js.map +1 -0
  227. package/dist/_esm/codec/contract-output-codec.d.ts +14 -0
  228. package/dist/_esm/codec/contract-output-codec.js +40 -0
  229. package/dist/_esm/codec/contract-output-codec.js.map +1 -0
  230. package/dist/_esm/codec/contract-output-ref-codec.d.ts +8 -0
  231. package/dist/_esm/codec/contract-output-ref-codec.js +9 -0
  232. package/dist/_esm/codec/contract-output-ref-codec.js.map +1 -0
  233. package/dist/_esm/codec/either-codec.d.ts +9 -0
  234. package/dist/_esm/codec/either-codec.js +5 -0
  235. package/dist/_esm/codec/either-codec.js.map +1 -0
  236. package/dist/_esm/codec/hash.d.ts +3 -0
  237. package/dist/_esm/codec/hash.js +15 -0
  238. package/dist/_esm/codec/hash.js.map +1 -0
  239. package/dist/_esm/codec/index.d.ts +24 -0
  240. package/dist/_esm/codec/index.js +25 -0
  241. package/dist/_esm/codec/index.js.map +1 -0
  242. package/dist/_esm/codec/input-codec.d.ts +15 -0
  243. package/dist/_esm/codec/input-codec.js +33 -0
  244. package/dist/_esm/codec/input-codec.js.map +1 -0
  245. package/dist/_esm/codec/instr-codec.d.ts +857 -0
  246. package/dist/_esm/codec/instr-codec.js +1138 -0
  247. package/dist/_esm/codec/instr-codec.js.map +1 -0
  248. package/dist/_esm/codec/int-as-4bytes-codec.d.ts +7 -0
  249. package/dist/_esm/codec/int-as-4bytes-codec.js +12 -0
  250. package/dist/_esm/codec/int-as-4bytes-codec.js.map +1 -0
  251. package/dist/_esm/codec/lockup-script-codec.d.ts +42 -0
  252. package/dist/_esm/codec/lockup-script-codec.js +28 -0
  253. package/dist/_esm/codec/lockup-script-codec.js.map +1 -0
  254. package/dist/_esm/codec/method-codec.d.ts +20 -0
  255. package/dist/_esm/codec/method-codec.js +54 -0
  256. package/dist/_esm/codec/method-codec.js.map +1 -0
  257. package/dist/_esm/codec/option-codec.d.ts +9 -0
  258. package/dist/_esm/codec/option-codec.js +16 -0
  259. package/dist/_esm/codec/option-codec.js.map +1 -0
  260. package/dist/_esm/codec/output-codec.d.ts +7 -0
  261. package/dist/_esm/codec/output-codec.js +7 -0
  262. package/dist/_esm/codec/output-codec.js.map +1 -0
  263. package/dist/_esm/codec/public-key-like-codec.d.ts +17 -0
  264. package/dist/_esm/codec/public-key-like-codec.js +11 -0
  265. package/dist/_esm/codec/public-key-like-codec.js.map +1 -0
  266. package/dist/_esm/codec/reader.d.ts +10 -0
  267. package/dist/_esm/codec/reader.js +38 -0
  268. package/dist/_esm/codec/reader.js.map +1 -0
  269. package/dist/_esm/codec/script-codec.d.ts +12 -0
  270. package/dist/_esm/codec/script-codec.js +14 -0
  271. package/dist/_esm/codec/script-codec.js.map +1 -0
  272. package/dist/_esm/codec/signature-codec.d.ts +5 -0
  273. package/dist/_esm/codec/signature-codec.js +5 -0
  274. package/dist/_esm/codec/signature-codec.js.map +1 -0
  275. package/dist/_esm/codec/timestamp-codec.d.ts +8 -0
  276. package/dist/_esm/codec/timestamp-codec.js +19 -0
  277. package/dist/_esm/codec/timestamp-codec.js.map +1 -0
  278. package/dist/_esm/codec/token-codec.d.ts +8 -0
  279. package/dist/_esm/codec/token-codec.js +9 -0
  280. package/dist/_esm/codec/token-codec.js.map +1 -0
  281. package/dist/_esm/codec/transaction-codec.d.ts +21 -0
  282. package/dist/_esm/codec/transaction-codec.js +82 -0
  283. package/dist/_esm/codec/transaction-codec.js.map +1 -0
  284. package/dist/_esm/codec/unlock-script-codec.d.ts +44 -0
  285. package/dist/_esm/codec/unlock-script-codec.js +49 -0
  286. package/dist/_esm/codec/unlock-script-codec.js.map +1 -0
  287. package/dist/_esm/codec/unsigned-tx-codec.d.ts +23 -0
  288. package/dist/_esm/codec/unsigned-tx-codec.js +57 -0
  289. package/dist/_esm/codec/unsigned-tx-codec.js.map +1 -0
  290. package/dist/_esm/codec/val.d.ts +27 -0
  291. package/dist/_esm/codec/val.js +14 -0
  292. package/dist/_esm/codec/val.js.map +1 -0
  293. package/dist/_esm/constants.d.ts +14 -0
  294. package/dist/_esm/constants.js +15 -0
  295. package/dist/_esm/constants.js.map +1 -0
  296. package/dist/_esm/contract/contract.d.ts +328 -0
  297. package/dist/_esm/contract/contract.js +1449 -0
  298. package/dist/_esm/contract/contract.js.map +1 -0
  299. package/dist/_esm/contract/dapp-tx-builder.d.ts +26 -0
  300. package/dist/_esm/contract/dapp-tx-builder.js +166 -0
  301. package/dist/_esm/contract/dapp-tx-builder.js.map +1 -0
  302. package/dist/_esm/contract/deployment.d.ts +21 -0
  303. package/dist/_esm/contract/deployment.js +2 -0
  304. package/dist/_esm/contract/deployment.js.map +1 -0
  305. package/dist/_esm/contract/events.d.ts +17 -0
  306. package/dist/_esm/contract/events.js +59 -0
  307. package/dist/_esm/contract/events.js.map +1 -0
  308. package/dist/_esm/contract/index.d.ts +6 -0
  309. package/dist/_esm/contract/index.js +7 -0
  310. package/dist/_esm/contract/index.js.map +1 -0
  311. package/dist/_esm/contract/ralph.d.ts +73 -0
  312. package/dist/_esm/contract/ralph.js +372 -0
  313. package/dist/_esm/contract/ralph.js.map +1 -0
  314. package/dist/_esm/contract/script-simulator.d.ts +15 -0
  315. package/dist/_esm/contract/script-simulator.js +712 -0
  316. package/dist/_esm/contract/script-simulator.js.map +1 -0
  317. package/dist/_esm/debug.d.ts +6 -0
  318. package/dist/_esm/debug.js +21 -0
  319. package/dist/_esm/debug.js.map +1 -0
  320. package/dist/_esm/error.d.ts +4 -0
  321. package/dist/_esm/error.js +16 -0
  322. package/dist/_esm/error.js.map +1 -0
  323. package/dist/_esm/exchange/exchange.d.ts +21 -0
  324. package/dist/_esm/exchange/exchange.js +137 -0
  325. package/dist/_esm/exchange/exchange.js.map +1 -0
  326. package/dist/_esm/exchange/index.d.ts +2 -0
  327. package/dist/_esm/exchange/index.js +2 -0
  328. package/dist/_esm/exchange/index.js.map +1 -0
  329. package/dist/_esm/global.d.ts +10 -0
  330. package/dist/_esm/global.js +49 -0
  331. package/dist/_esm/global.js.map +1 -0
  332. package/dist/_esm/index.d.ts +15 -0
  333. package/dist/_esm/index.js +16 -0
  334. package/dist/_esm/index.js.map +1 -0
  335. package/dist/_esm/package.json +1 -0
  336. package/dist/_esm/signer/index.d.ts +3 -0
  337. package/dist/_esm/signer/index.js +4 -0
  338. package/dist/_esm/signer/index.js.map +1 -0
  339. package/dist/_esm/signer/signer.d.ts +63 -0
  340. package/dist/_esm/signer/signer.js +279 -0
  341. package/dist/_esm/signer/signer.js.map +1 -0
  342. package/dist/_esm/signer/tx-builder.d.ts +22 -0
  343. package/dist/_esm/signer/tx-builder.js +270 -0
  344. package/dist/_esm/signer/tx-builder.js.map +1 -0
  345. package/dist/_esm/signer/types.d.ts +167 -0
  346. package/dist/_esm/signer/types.js +27 -0
  347. package/dist/_esm/signer/types.js.map +1 -0
  348. package/dist/_esm/token/index.d.ts +1 -0
  349. package/dist/_esm/token/index.js +2 -0
  350. package/dist/_esm/token/index.js.map +1 -0
  351. package/dist/_esm/token/nft.d.ts +8 -0
  352. package/dist/_esm/token/nft.js +95 -0
  353. package/dist/_esm/token/nft.js.map +1 -0
  354. package/dist/_esm/transaction/index.d.ts +3 -0
  355. package/dist/_esm/transaction/index.js +4 -0
  356. package/dist/_esm/transaction/index.js.map +1 -0
  357. package/dist/_esm/transaction/sign-verify.d.ts +3 -0
  358. package/dist/_esm/transaction/sign-verify.js +8 -0
  359. package/dist/_esm/transaction/sign-verify.js.map +1 -0
  360. package/dist/_esm/transaction/status.d.ts +12 -0
  361. package/dist/_esm/transaction/status.js +33 -0
  362. package/dist/_esm/transaction/status.js.map +1 -0
  363. package/dist/_esm/transaction/utils.d.ts +4 -0
  364. package/dist/_esm/transaction/utils.js +35 -0
  365. package/dist/_esm/transaction/utils.js.map +1 -0
  366. package/dist/_esm/utils/bs58.d.ts +5 -0
  367. package/dist/_esm/utils/bs58.js +25 -0
  368. package/dist/_esm/utils/bs58.js.map +1 -0
  369. package/dist/_esm/utils/djb2.d.ts +1 -0
  370. package/dist/_esm/utils/djb2.js +8 -0
  371. package/dist/_esm/utils/djb2.js.map +1 -0
  372. package/dist/_esm/utils/index.d.ts +7 -0
  373. package/dist/_esm/utils/index.js +8 -0
  374. package/dist/_esm/utils/index.js.map +1 -0
  375. package/dist/_esm/utils/number.d.ts +17 -0
  376. package/dist/_esm/utils/number.fixture.d.ts +12 -0
  377. package/dist/_esm/utils/number.fixture.js +170 -0
  378. package/dist/_esm/utils/number.fixture.js.map +1 -0
  379. package/dist/_esm/utils/number.js +104 -0
  380. package/dist/_esm/utils/number.js.map +1 -0
  381. package/dist/_esm/utils/sign.d.ts +3 -0
  382. package/dist/_esm/utils/sign.js +52 -0
  383. package/dist/_esm/utils/sign.js.map +1 -0
  384. package/dist/_esm/utils/subscription.d.ts +22 -0
  385. package/dist/_esm/utils/subscription.js +31 -0
  386. package/dist/_esm/utils/subscription.js.map +1 -0
  387. package/dist/_esm/utils/utils.d.ts +40 -0
  388. package/dist/_esm/utils/utils.js +116 -0
  389. package/dist/_esm/utils/utils.js.map +1 -0
  390. package/dist/_esm/utils/webcrypto.d.ts +4 -0
  391. package/dist/_esm/utils/webcrypto.js +14 -0
  392. package/dist/_esm/utils/webcrypto.js.map +1 -0
  393. package/package.json +58 -34
  394. package/src/address/address.ts +12 -17
  395. package/src/api/api-alephium.ts +4 -5
  396. package/src/api/api-explorer.ts +4 -5
  397. package/src/api/types.ts +3 -2
  398. package/src/api/utils.ts +13 -1
  399. package/src/block/index.ts +2 -1
  400. package/src/codec/hash.ts +2 -2
  401. package/src/contract/contract.ts +14 -12
  402. package/src/exchange/index.ts +1 -3
  403. package/src/index.ts +0 -4
  404. package/src/signer/signer.ts +17 -11
  405. package/src/token/nft.ts +0 -1
  406. package/src/utils/sign.ts +19 -20
  407. package/src/utils/utils.ts +9 -20
  408. package/src/utils/webcrypto.ts +4 -11
  409. package/tsconfig.build.json +9 -0
  410. package/dist/alephium-web3.min.js +0 -3
  411. package/dist/alephium-web3.min.js.LICENSE.txt +0 -12
  412. package/dist/alephium-web3.min.js.map +0 -1
  413. package/dist/scripts/check-versions.d.ts +0 -1
  414. package/dist/scripts/check-versions.js +0 -39
  415. package/dist/scripts/header.d.ts +0 -0
  416. package/dist/scripts/header.js +0 -18
  417. package/dist/src/api/api-alephium.d.ts +0 -2433
  418. package/dist/src/api/api-explorer.d.ts +0 -1472
  419. package/dist/src/block/index.d.ts +0 -1
  420. package/dist/src/block/index.js +0 -22
  421. package/dist/src/codec/contract-output-ref-codec.js +0 -28
  422. package/dist/src/codec/either-codec.js +0 -25
  423. package/dist/src/codec/hash.js +0 -40
  424. package/dist/src/codec/int-as-4bytes-codec.js +0 -32
  425. package/dist/src/codec/option-codec.js +0 -36
  426. package/dist/src/codec/output-codec.js +0 -26
  427. package/dist/src/codec/public-key-like-codec.js +0 -30
  428. package/dist/src/codec/script-codec.js +0 -34
  429. package/dist/src/codec/signature-codec.js +0 -24
  430. package/dist/src/codec/token-codec.js +0 -28
  431. package/dist/src/contract/deployment.js +0 -19
  432. package/dist/src/debug.js +0 -46
  433. package/dist/src/exchange/index.d.ts +0 -1
  434. package/dist/src/utils/djb2.js +0 -27
  435. package/dist/src/utils/sign.js +0 -96
  436. package/dist/src/utils/webcrypto.js +0 -42
  437. package/webpack.config.js +0 -56
  438. /package/dist/{src → _cjs}/address/address.d.ts +0 -0
  439. /package/dist/{src → _cjs}/address/index.d.ts +0 -0
  440. /package/dist/{src → _cjs}/api/explorer-provider.d.ts +0 -0
  441. /package/dist/{src → _cjs}/api/index.d.ts +0 -0
  442. /package/dist/{src → _cjs}/api/types.d.ts +0 -0
  443. /package/dist/{src → _cjs}/block/block.d.ts +0 -0
  444. /package/dist/{src → _cjs}/codec/array-codec.d.ts +0 -0
  445. /package/dist/{src → _cjs}/codec/asset-output-codec.d.ts +0 -0
  446. /package/dist/{src → _cjs}/codec/bigint-codec.d.ts +0 -0
  447. /package/dist/{src → _cjs}/codec/checksum-codec.d.ts +0 -0
  448. /package/dist/{src → _cjs}/codec/codec.d.ts +0 -0
  449. /package/dist/{src → _cjs}/codec/compact-int-codec.d.ts +0 -0
  450. /package/dist/{src → _cjs}/codec/contract-codec.d.ts +0 -0
  451. /package/dist/{src → _cjs}/codec/contract-output-codec.d.ts +0 -0
  452. /package/dist/{src → _cjs}/codec/contract-output-ref-codec.d.ts +0 -0
  453. /package/dist/{src → _cjs}/codec/either-codec.d.ts +0 -0
  454. /package/dist/{src → _cjs}/codec/index.d.ts +0 -0
  455. /package/dist/{src → _cjs}/codec/input-codec.d.ts +0 -0
  456. /package/dist/{src → _cjs}/codec/instr-codec.d.ts +0 -0
  457. /package/dist/{src → _cjs}/codec/int-as-4bytes-codec.d.ts +0 -0
  458. /package/dist/{src → _cjs}/codec/method-codec.d.ts +0 -0
  459. /package/dist/{src → _cjs}/codec/option-codec.d.ts +0 -0
  460. /package/dist/{src → _cjs}/codec/output-codec.d.ts +0 -0
  461. /package/dist/{src → _cjs}/codec/public-key-like-codec.d.ts +0 -0
  462. /package/dist/{src → _cjs}/codec/reader.d.ts +0 -0
  463. /package/dist/{src → _cjs}/codec/script-codec.d.ts +0 -0
  464. /package/dist/{src → _cjs}/codec/timestamp-codec.d.ts +0 -0
  465. /package/dist/{src → _cjs}/codec/token-codec.d.ts +0 -0
  466. /package/dist/{src → _cjs}/codec/transaction-codec.d.ts +0 -0
  467. /package/dist/{src → _cjs}/codec/unsigned-tx-codec.d.ts +0 -0
  468. /package/dist/{src → _cjs}/codec/val.d.ts +0 -0
  469. /package/dist/{src → _cjs}/contract/contract.d.ts +0 -0
  470. /package/dist/{src → _cjs}/contract/dapp-tx-builder.d.ts +0 -0
  471. /package/dist/{src → _cjs}/contract/deployment.d.ts +0 -0
  472. /package/dist/{src → _cjs}/contract/events.d.ts +0 -0
  473. /package/dist/{src → _cjs}/contract/index.d.ts +0 -0
  474. /package/dist/{src → _cjs}/contract/ralph.d.ts +0 -0
  475. /package/dist/{src → _cjs}/debug.d.ts +0 -0
  476. /package/dist/{src → _cjs}/error.d.ts +0 -0
  477. /package/dist/{src → _cjs}/exchange/exchange.d.ts +0 -0
  478. /package/dist/{src → _cjs}/global.d.ts +0 -0
  479. /package/dist/{src → _cjs}/index.d.ts +0 -0
  480. /package/dist/{src → _cjs}/signer/index.d.ts +0 -0
  481. /package/dist/{src → _cjs}/signer/signer.d.ts +0 -0
  482. /package/dist/{src → _cjs}/signer/tx-builder.d.ts +0 -0
  483. /package/dist/{src → _cjs}/signer/types.d.ts +0 -0
  484. /package/dist/{src → _cjs}/token/index.d.ts +0 -0
  485. /package/dist/{src → _cjs}/transaction/index.d.ts +0 -0
  486. /package/dist/{src → _cjs}/transaction/sign-verify.d.ts +0 -0
  487. /package/dist/{src → _cjs}/transaction/status.d.ts +0 -0
  488. /package/dist/{src → _cjs}/transaction/utils.d.ts +0 -0
  489. /package/dist/{src → _cjs}/utils/djb2.d.ts +0 -0
  490. /package/dist/{src → _cjs}/utils/index.d.ts +0 -0
  491. /package/dist/{src → _cjs}/utils/number.fixture.d.ts +0 -0
  492. /package/dist/{src → _cjs}/utils/sign.d.ts +0 -0
  493. /package/dist/{src → _cjs}/utils/subscription.d.ts +0 -0
package/package.json CHANGED
@@ -1,31 +1,58 @@
1
1
  {
2
2
  "name": "@alephium/web3",
3
- "version": "2.0.10",
3
+ "version": "3.0.0-test.1",
4
4
  "description": "A JS/TS library to interact with the Alephium platform",
5
5
  "license": "GPL",
6
- "main": "dist/src/index.js",
7
- "browser": "dist/alephium-web3.min.js",
8
- "types": "dist/src/index.d.ts",
6
+ "type": "commonjs",
7
+ "sideEffects": false,
8
+ "main": "dist/_cjs/index.js",
9
+ "module": "dist/_esm/index.js",
10
+ "types": "dist/_cjs/index.d.ts",
9
11
  "exports": {
10
- "node": {
11
- "types": "./dist/src/index.d.ts",
12
- "default": "./dist/src/index.js"
12
+ ".": {
13
+ "import": {
14
+ "types": "./dist/_esm/index.d.ts",
15
+ "default": "./dist/_esm/index.js"
16
+ },
17
+ "require": {
18
+ "types": "./dist/_cjs/index.d.ts",
19
+ "default": "./dist/_cjs/index.js"
20
+ }
21
+ },
22
+ "./api/explorer": {
23
+ "import": {
24
+ "types": "./dist/_esm/api/api-explorer.d.ts",
25
+ "default": "./dist/_esm/api/api-explorer.js"
26
+ },
27
+ "require": {
28
+ "types": "./dist/_cjs/api/api-explorer.d.ts",
29
+ "default": "./dist/_cjs/api/api-explorer.js"
30
+ }
13
31
  },
14
- "default": {
15
- "types": "./dist/src/index.d.ts",
16
- "default": "./dist/alephium-web3.min.js"
32
+ "./api/node": {
33
+ "import": {
34
+ "types": "./dist/_esm/api/api-alephium.d.ts",
35
+ "default": "./dist/_esm/api/api-alephium.js"
36
+ },
37
+ "require": {
38
+ "types": "./dist/_cjs/api/api-alephium.d.ts",
39
+ "default": "./dist/_cjs/api/api-alephium.js"
40
+ }
17
41
  }
18
42
  },
19
43
  "typesVersions": {
20
44
  "*": {
21
- "test": [
22
- "dist/src/test/"
45
+ "api/explorer": [
46
+ "dist/_cjs/api/api-explorer.d.ts"
47
+ ],
48
+ "api/node": [
49
+ "dist/_cjs/api/api-alephium.d.ts"
23
50
  ]
24
51
  }
25
52
  },
26
53
  "repository": {
27
54
  "type": "git",
28
- "url": "git@github.com:alephium/alephium-web3.git"
55
+ "url": "git+https://github.com/alephium/alephium-web3.git"
29
56
  },
30
57
  "homepage": "https://github.com/alephium/alephium-web3",
31
58
  "bugs": {
@@ -36,38 +63,31 @@
36
63
  "alephium_version": "4.2.5",
37
64
  "explorer_backend_version": "3.3.2"
38
65
  },
39
- "type": "commonjs",
40
66
  "dependencies": {
67
+ "@noble/curves": "1.6.0",
68
+ "@noble/hashes": "1.6.1",
41
69
  "@noble/secp256k1": "1.7.1",
42
70
  "base-x": "4.0.0",
43
71
  "bignumber.js": "^9.1.1",
44
- "blakejs": "1.2.1",
45
- "bn.js": "5.2.1",
46
- "cross-fetch": "^3.1.5",
47
- "crypto-browserify": "^3.12.0",
48
- "elliptic": "6.6.1",
49
- "eventemitter3": "^4.0.7",
50
- "path-browserify": "^1.0.1",
51
- "stream-browserify": "^3.0.0"
72
+ "eventemitter3": "^4.0.7"
52
73
  },
53
74
  "devDependencies": {
75
+ "@arethetypeswrong/cli": "^0.18.2",
54
76
  "@babel/eslint-parser": "^7.21.3",
55
- "@types/elliptic": "^6.4.18",
77
+ "@size-limit/esbuild": "^11.0.0",
78
+ "@size-limit/file": "^11.0.0",
56
79
  "@types/find-up": "^2.1.1",
57
80
  "@types/fs-extra": "^9.0.13",
58
81
  "@types/jest": "^27.5.2",
59
82
  "@types/mock-fs": "^4.13.1",
60
- "@types/node": "^16.18.23",
83
+ "@types/node": "^20.0.0",
61
84
  "@types/rewire": "^2.5.28",
62
85
  "@typescript-eslint/eslint-plugin": "^5.57.0",
63
86
  "@typescript-eslint/parser": "^5.57.0",
64
- "clean-webpack-plugin": "4.0.0",
65
87
  "eslint": "^8.37.0",
66
88
  "eslint-config-prettier": "^8.8.0",
67
- "eslint-plugin-header": "^3.1.1",
68
89
  "eslint-plugin-prettier": "^4.2.1",
69
90
  "eslint-plugin-security": "1.6.0",
70
- "html-webpack-plugin": "5.5.0",
71
91
  "jest": "^28.1.3",
72
92
  "jest-localstorage-mock": "^2.4.26",
73
93
  "jest-websocket-mock": "^2.4.0",
@@ -75,27 +95,31 @@
75
95
  "mock-socket": "^9.2.1",
76
96
  "prettier": "^2.8.7",
77
97
  "process": "^0.11.10",
98
+ "publint": "^0.3.18",
78
99
  "rewire": "^6.0.0",
79
100
  "shelljs": "^0.8.5",
101
+ "size-limit": "^11.0.0",
80
102
  "swagger-typescript-api": "12.0.3",
81
- "terser-webpack-plugin": "^5.3.7",
82
103
  "ts-jest": "^28.0.8",
83
104
  "ts-node": "^10.9.1",
84
105
  "tslib": "^2.5.0",
85
- "typescript": "^4.9.5",
86
- "webpack": "^5.94.0",
87
- "webpack-cli": "^4.10.0"
106
+ "typescript": "^5.9.3"
88
107
  },
89
108
  "engines": {
90
- "node": ">=14.0.0",
109
+ "node": ">=20.0.0",
91
110
  "npm": ">=7.0.0"
92
111
  },
93
112
  "scripts": {
94
- "build": "rm -rf dist/* && npx tsc --build . && webpack",
113
+ "clean": "rm -rf node_modules dist",
114
+ "build": "rm -rf dist && pnpm build:cjs && pnpm build:esm",
115
+ "build:cjs": "tsc --project tsconfig.build.json --module commonjs --moduleResolution node --outDir dist/_cjs --declaration --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > dist/_cjs/package.json",
116
+ "build:esm": "tsc --project tsconfig.build.json --outDir dist/_esm --declaration && printf '{\"type\":\"module\",\"sideEffects\":false}' > dist/_esm/package.json",
117
+ "check": "publint && attw --pack --ignore-rules internal-resolution-error",
95
118
  "test": "jest -i --config ./jest-config.json",
96
119
  "update-schemas": "npm run update-schema:alephium && npm run update-schema:explorer",
97
120
  "update-schema:alephium": "npx swagger-typescript-api --disable-throw-on-error -t ./configs -o ./src/api -n api-alephium.ts -p https://raw.githubusercontent.com/alephium/alephium/v${npm_package_config_alephium_version}/api/src/main/resources/openapi.json",
98
121
  "update-schema:explorer": "npx swagger-typescript-api --disable-throw-on-error -t ./configs -o ./src/api -n api-explorer.ts -p https://raw.githubusercontent.com/alephium/explorer-backend/v${npm_package_config_explorer_backend_version}/app/src/main/resources/explorer-backend-openapi.json",
99
- "check-versions": "node scripts/check-versions.js ${npm_package_config_alephium_version} ${npm_package_config_explorer_backend_version}"
122
+ "check-versions": "node scripts/check-versions.js ${npm_package_config_alephium_version} ${npm_package_config_explorer_backend_version}",
123
+ "size": "npx size-limit"
100
124
  }
101
125
  }
@@ -16,10 +16,11 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import { ec as EC, eddsa as EdDSA } from 'elliptic'
20
- import BN from 'bn.js'
19
+ import * as secp from '@noble/secp256k1'
20
+ import { p256 } from '@noble/curves/p256'
21
+ import { ed25519 } from '@noble/curves/ed25519'
21
22
  import { TOTAL_NUMBER_OF_GROUPS } from '../constants'
22
- import blake from 'blakejs'
23
+ import { blake2b } from '@noble/hashes/blake2b'
23
24
  import bs58, { base58ToBytes } from '../utils/bs58'
24
25
  import { binToHex, concatBytes, hexToBinUnsafe, isHexString, xorByte } from '../utils'
25
26
  import { KeyType } from '../signer'
@@ -31,9 +32,6 @@ import { TraceableError } from '../error'
31
32
  import { byteCodec } from '../codec/codec'
32
33
  import { PublicKeyLike, safePublicKeyLikeCodec } from '../codec/public-key-like-codec'
33
34
 
34
- const secp256k1 = new EC('secp256k1')
35
- const secp256r1 = new EC('p256')
36
- const ed25519 = new EdDSA('ed25519')
37
35
  const PublicKeyHashSize = 32
38
36
 
39
37
  export enum AddressType {
@@ -220,14 +218,14 @@ export function publicKeyFromPrivateKey(privateKey: string, _keyType?: KeyType):
220
218
  switch (keyType) {
221
219
  case 'default':
222
220
  case 'gl-secp256k1':
223
- return secp256k1.keyFromPrivate(privateKey).getPublic(true, 'hex')
221
+ return binToHex(secp.getPublicKey(privateKey, true))
224
222
  case 'gl-secp256r1':
225
223
  case 'gl-webauthn':
226
- return secp256r1.keyFromPrivate(privateKey).getPublic(true, 'hex')
224
+ return binToHex(p256.getPublicKey(hexToBinUnsafe(privateKey), true))
227
225
  case 'gl-ed25519':
228
- return ed25519.keyFromSecret(privateKey).getPublic('hex')
226
+ return binToHex(ed25519.getPublicKey(hexToBinUnsafe(privateKey)))
229
227
  case 'bip340-schnorr':
230
- return secp256k1.g.mul(new BN(privateKey, 16)).encode('hex', true).slice(2)
228
+ return secp.Point.fromPrivateKey(privateKey).toHex(true).slice(2)
231
229
  }
232
230
  }
233
231
 
@@ -254,7 +252,7 @@ export function addressFromPublicKey(publicKey: string, _keyType?: KeyType): str
254
252
 
255
253
  switch (keyType) {
256
254
  case 'default': {
257
- const hash = blake.blake2b(hexToBinUnsafe(publicKey), undefined, 32)
255
+ const hash = blake2b(hexToBinUnsafe(publicKey), { dkLen: 32 })
258
256
  const bytes = new Uint8Array([AddressType.P2PKH, ...hash])
259
257
  return bs58.encode(bytes)
260
258
  }
@@ -268,7 +266,7 @@ export function addressFromPublicKey(publicKey: string, _keyType?: KeyType): str
268
266
  }
269
267
 
270
268
  export function addressFromScript(script: Uint8Array): string {
271
- const scriptHash = blake.blake2b(script, undefined, 32)
269
+ const scriptHash = blake2b(script, { dkLen: 32 })
272
270
  return bs58.encode(new Uint8Array([AddressType.P2SH, ...scriptHash]))
273
271
  }
274
272
 
@@ -286,7 +284,7 @@ export function addressFromTokenId(tokenId: string): string {
286
284
  export function contractIdFromTx(txId: string, outputIndex: number): string {
287
285
  const txIdBin = hexToBinUnsafe(txId)
288
286
  const data = new Uint8Array([...txIdBin, outputIndex])
289
- const hash = blake.blake2b(data, undefined, 32)
287
+ const hash = blake2b(data, { dkLen: 32 })
290
288
  return binToHex(hash)
291
289
  }
292
290
 
@@ -301,10 +299,7 @@ export function subContractId(parentContractId: string, pathInHex: string, group
301
299
  throw new Error(`Invalid path: ${pathInHex}, expected hex string`)
302
300
  }
303
301
  const data = concatBytes([hexToBinUnsafe(parentContractId), hexToBinUnsafe(pathInHex)])
304
- const bytes = new Uint8Array([
305
- ...blake.blake2b(blake.blake2b(data, undefined, 32), undefined, 32).slice(0, -1),
306
- group
307
- ])
302
+ const bytes = new Uint8Array([...blake2b(blake2b(data, { dkLen: 32 }), { dkLen: 32 }).slice(0, -1), group])
308
303
  return binToHex(bytes)
309
304
  }
310
305
 
@@ -1566,8 +1566,7 @@ export interface WalletUnlock {
1566
1566
  mnemonicPassphrase?: string
1567
1567
  }
1568
1568
 
1569
- import 'cross-fetch/polyfill'
1570
- import { convertHttpResponse } from './utils'
1569
+ import { convertHttpResponse, stringify } from './utils'
1571
1570
 
1572
1571
  export type QueryParamsType = Record<string | number, any>
1573
1572
  export type ResponseFormat = keyof Omit<Body, 'body' | 'bodyUsed'>
@@ -1665,8 +1664,8 @@ export class HttpClient<SecurityDataType = unknown> {
1665
1664
 
1666
1665
  private contentFormatters: Record<ContentType, (input: any) => any> = {
1667
1666
  [ContentType.Json]: (input: any) =>
1668
- input !== null && (typeof input === 'object' || typeof input === 'string') ? JSON.stringify(input) : input,
1669
- [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? JSON.stringify(input) : input),
1667
+ input !== null && (typeof input === 'object' || typeof input === 'string') ? stringify(input) : input,
1668
+ [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? stringify(input) : input),
1670
1669
  [ContentType.FormData]: (input: any) =>
1671
1670
  Object.keys(input || {}).reduce((formData, key) => {
1672
1671
  const property = input[key]
@@ -1675,7 +1674,7 @@ export class HttpClient<SecurityDataType = unknown> {
1675
1674
  property instanceof Blob
1676
1675
  ? property
1677
1676
  : typeof property === 'object' && property !== null
1678
- ? JSON.stringify(property)
1677
+ ? stringify(property)
1679
1678
  : `${property}`
1680
1679
  )
1681
1680
  return formData
@@ -637,8 +637,7 @@ export enum Currencies {
637
637
  Cny = 'cny'
638
638
  }
639
639
 
640
- import 'cross-fetch/polyfill'
641
- import { convertHttpResponse } from './utils'
640
+ import { convertHttpResponse, stringify } from './utils'
642
641
 
643
642
  export type QueryParamsType = Record<string | number, any>
644
643
  export type ResponseFormat = keyof Omit<Body, 'body' | 'bodyUsed'>
@@ -736,8 +735,8 @@ export class HttpClient<SecurityDataType = unknown> {
736
735
 
737
736
  private contentFormatters: Record<ContentType, (input: any) => any> = {
738
737
  [ContentType.Json]: (input: any) =>
739
- input !== null && (typeof input === 'object' || typeof input === 'string') ? JSON.stringify(input) : input,
740
- [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? JSON.stringify(input) : input),
738
+ input !== null && (typeof input === 'object' || typeof input === 'string') ? stringify(input) : input,
739
+ [ContentType.Text]: (input: any) => (input !== null && typeof input !== 'string' ? stringify(input) : input),
741
740
  [ContentType.FormData]: (input: any) =>
742
741
  Object.keys(input || {}).reduce((formData, key) => {
743
742
  const property = input[key]
@@ -746,7 +745,7 @@ export class HttpClient<SecurityDataType = unknown> {
746
745
  property instanceof Blob
747
746
  ? property
748
747
  : typeof property === 'object' && property !== null
749
- ? JSON.stringify(property)
748
+ ? stringify(property)
750
749
  : `${property}`
751
750
  )
752
751
  return formData
package/src/api/types.ts CHANGED
@@ -22,6 +22,7 @@ import { isDebugModeEnabled } from '../debug'
22
22
  import { TraceableError } from '../error'
23
23
  import { assertType, base58ToBytes, binToHex, bs58, Eq, isBase58, isHexString } from '../utils'
24
24
  import * as node from './api-alephium'
25
+ import { stringify } from './utils'
25
26
 
26
27
  export type Number256 = bigint | string
27
28
  export type Val = Number256 | boolean | string | Val[] | ValObject | Map<Val, Val>
@@ -209,12 +210,12 @@ async function call(args: ApiRequestArguments, handler: ApiRequestHandler): Prom
209
210
  const debugModeEnabled = isDebugModeEnabled()
210
211
  const { path, method, params } = args
211
212
  if (debugModeEnabled) {
212
- console.log(`[REQUEST] ${path} ${method} ${JSON.stringify(params)}`)
213
+ console.log(`[REQUEST] ${path} ${method} ${stringify(params)}`)
213
214
  }
214
215
  try {
215
216
  const response = await handler(args)
216
217
  if (debugModeEnabled) {
217
- console.log(`[RESPONSE] ${path} ${method} ${JSON.stringify(response)}`)
218
+ console.log(`[RESPONSE] ${path} ${method} ${stringify(response)}`)
218
219
  }
219
220
  return response
220
221
  } catch (error) {
package/src/api/utils.ts CHANGED
@@ -16,7 +16,6 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import 'cross-fetch/polyfill'
20
19
  import * as node from '../api/api-alephium'
21
20
 
22
21
  export function convertHttpResponse<T>(response: { status: number; data: T; error?: { detail: string } }): T {
@@ -51,3 +50,16 @@ export function isBalanceEqual(b0: node.Balance, b1: node.Balance): boolean {
51
50
  isTokenBalanceEqual(b0.lockedTokenBalances, b1.lockedTokenBalances)
52
51
  )
53
52
  }
53
+
54
+ // Drop-in replacement for JSON.stringify that handles BigInt values
55
+ // by converting them to strings. This avoids the need for a global
56
+ // BigInt.prototype.toJSON monkey-patch, enabling "sideEffects": false.
57
+ export const stringify: typeof JSON.stringify = (value: any, replacer?: any, space?: any) =>
58
+ JSON.stringify(
59
+ value,
60
+ (key: string, value_: any) => {
61
+ const value = typeof value_ === 'bigint' ? value_.toString() : value_
62
+ return typeof replacer === 'function' ? replacer(key, value) : value
63
+ },
64
+ space
65
+ )
@@ -16,4 +16,5 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- export { ReorgCallback, BlockSubscribeOptions, BlockSubscription } from './block'
19
+ export type { ReorgCallback, BlockSubscribeOptions } from './block'
20
+ export { BlockSubscription } from './block'
package/src/codec/hash.ts CHANGED
@@ -15,10 +15,10 @@ GNU Lesser General Public License for more details.
15
15
  You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import blake from 'blakejs'
18
+ import { blake2b } from '@noble/hashes/blake2b'
19
19
 
20
20
  export function blakeHash(raw: Uint8Array) {
21
- return blake.blake2b(raw, undefined, 32)
21
+ return blake2b(raw, { dkLen: 32 })
22
22
  }
23
23
 
24
24
  export function djbIntHash(bytes: Uint8Array): number {
@@ -16,7 +16,6 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import { promises as fsPromises } from 'fs'
20
19
  import {
21
20
  fromApiNumber256,
22
21
  toApiNumber256,
@@ -34,7 +33,8 @@ import {
34
33
  decodeArrayType,
35
34
  fromApiPrimitiveVal,
36
35
  tryGetCallResult,
37
- decodeTupleType
36
+ decodeTupleType,
37
+ stringify
38
38
  } from '../api'
39
39
  import {
40
40
  SignDeployContractTxParams,
@@ -71,7 +71,7 @@ import {
71
71
  import { getCurrentNodeProvider } from '../global'
72
72
  import { EventSubscribeOptions, EventSubscription, subscribeToEvents } from './events'
73
73
  import { MINIMAL_CONTRACT_DEPOSIT, ONE_ALPH, TOTAL_NUMBER_OF_GROUPS } from '../constants'
74
- import * as blake from 'blakejs'
74
+ import { blake2b } from '@noble/hashes/blake2b'
75
75
  import { isContractDebugMessageEnabled } from '../debug'
76
76
  import {
77
77
  contract,
@@ -279,7 +279,7 @@ export class Contract extends Artifact {
279
279
  fieldLength: decodedDebugContract.fieldLength,
280
280
  methods: methods
281
281
  })
282
- const codeHashForTesting = blake.blake2b(bytecodeForTesting, undefined, 32)
282
+ const codeHashForTesting = blake2b(bytecodeForTesting, { dkLen: 32 })
283
283
  this.bytecodeForTesting = binToHex(bytecodeForTesting)
284
284
  this.codeHashForTesting = binToHex(codeHashForTesting)
285
285
  return this.bytecodeForTesting
@@ -378,7 +378,8 @@ export class Contract extends Artifact {
378
378
  codeHashDebug: string,
379
379
  structs: Struct[] = []
380
380
  ): Promise<Contract> {
381
- const content = await fsPromises.readFile(path)
381
+ const fs = await import('fs')
382
+ const content = await fs.promises.readFile(path)
382
383
  const artifact = JSON.parse(content.toString())
383
384
  return Contract.fromJson(artifact, bytecodeDebugPatch, codeHashDebug, structs)
384
385
  }
@@ -401,7 +402,7 @@ export class Contract extends Artifact {
401
402
  if (this.stdInterfaceId !== undefined) {
402
403
  object.stdInterfaceId = this.stdInterfaceId
403
404
  }
404
- return JSON.stringify(object, null, 2)
405
+ return stringify(object, null, 2)
405
406
  }
406
407
 
407
408
  getInitialFieldsWithDefaultValues(): Fields {
@@ -779,7 +780,8 @@ export class Script extends Artifact {
779
780
  }
780
781
 
781
782
  static async fromArtifactFile(path: string, bytecodeDebugPatch: string, structs: Struct[] = []): Promise<Script> {
782
- const content = await fsPromises.readFile(path)
783
+ const fs = await import('fs')
784
+ const content = await fs.promises.readFile(path)
783
785
  const artifact = JSON.parse(content.toString())
784
786
  return this.fromJson(artifact, bytecodeDebugPatch, structs)
785
787
  }
@@ -792,7 +794,7 @@ export class Script extends Artifact {
792
794
  fieldsSig: this.fieldsSig,
793
795
  functions: this.functions
794
796
  }
795
- return JSON.stringify(object, null, 2)
797
+ return stringify(object, null, 2)
796
798
  }
797
799
 
798
800
  async txParamsForExecution<P extends Fields>(params: ExecuteScriptParams<P>): Promise<SignExecuteScriptTxParams> {
@@ -1087,7 +1089,7 @@ export interface DeployContractParams<P extends Fields = Fields> {
1087
1089
  }
1088
1090
  assertType<
1089
1091
  Eq<
1090
- Omit<DeployContractParams<undefined>, 'initialFields' | 'exposePrivateFunctions'>,
1092
+ Omit<DeployContractParams<Fields>, 'initialFields' | 'exposePrivateFunctions'>,
1091
1093
  Omit<SignDeployContractTxParams, 'signerAddress' | 'signerKeyType' | 'bytecode'>
1092
1094
  >
1093
1095
  >
@@ -1418,7 +1420,7 @@ function genCodeForType(type: string, structs: Struct[]): { bytecode: string; co
1418
1420
  methods: [loadImmFieldByIndex, loadMutFieldByIndex, storeMutFieldByIndex, destroy]
1419
1421
  }
1420
1422
  const bytecode = contract.contractCodec.encodeContract(c)
1421
- const codeHash = blake.blake2b(bytecode, undefined, 32)
1423
+ const codeHash = blake2b(bytecode, { dkLen: 32 })
1422
1424
  return { bytecode: binToHex(bytecode), codeHash: binToHex(codeHash) }
1423
1425
  }
1424
1426
 
@@ -1615,7 +1617,7 @@ export async function getDebugMessagesFromTx(txId: HexString, provider?: NodePro
1615
1617
  message: hexToString(e.fields[0].value as string)
1616
1618
  }
1617
1619
  } else {
1618
- throw new Error(`Invalid debug log: ${JSON.stringify(e.fields)}`)
1620
+ throw new Error(`Invalid debug log: ${stringify(e.fields)}`)
1619
1621
  }
1620
1622
  })
1621
1623
  } else {
@@ -2285,7 +2287,7 @@ export const getContractIdFromUnsignedTx = async (
2285
2287
  const result = await nodeProvider.transactions.postTransactionsDecodeUnsignedTx({ unsignedTx })
2286
2288
  const outputIndex = result.unsignedTx.fixedOutputs.length
2287
2289
  const hex = result.unsignedTx.txId + outputIndex.toString(16).padStart(8, '0')
2288
- const hashHex = binToHex(blake.blake2b(hexToBinUnsafe(hex), undefined, 32))
2290
+ const hashHex = binToHex(blake2b(hexToBinUnsafe(hex), { dkLen: 32 }))
2289
2291
  return hashHex.slice(0, 62) + result.fromGroup.toString(16).padStart(2, '0')
2290
2292
  }
2291
2293
 
@@ -21,8 +21,6 @@ export {
21
21
  getSenderAddress,
22
22
  isALPHTransferTx,
23
23
  getALPHDepositInfo,
24
- BaseDepositInfo,
25
- TokenDepositInfo,
26
- DepositInfo,
27
24
  getDepositInfo
28
25
  } from './exchange'
26
+ export type { BaseDepositInfo, TokenDepositInfo, DepositInfo } from './exchange'
package/src/index.ts CHANGED
@@ -16,10 +16,6 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- BigInt.prototype['toJSON'] = function () {
20
- return this.toString()
21
- }
22
-
23
19
  export * from './api'
24
20
  export * from './contract'
25
21
  export * from './signer'
@@ -16,11 +16,18 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import { createHash } from 'crypto'
20
- import { ExplorerProvider, fromApiNumber256, fromApiTokens, NodeProvider, toApiNumber256, toApiTokens } from '../api'
19
+ import {
20
+ ExplorerProvider,
21
+ fromApiNumber256,
22
+ fromApiTokens,
23
+ NodeProvider,
24
+ stringify,
25
+ toApiNumber256,
26
+ toApiTokens
27
+ } from '../api'
21
28
  import { node } from '../api'
22
- import * as utils from '../utils'
23
- import blake from 'blakejs'
29
+ import { blake2b } from '@noble/hashes/blake2b'
30
+ import { sha256 } from '@noble/hashes/sha256'
24
31
  import {
25
32
  Account,
26
33
  Address,
@@ -48,6 +55,7 @@ import {
48
55
  } from './types'
49
56
  import { TransactionBuilder } from './tx-builder'
50
57
  import { addressFromPublicKey, groupOfAddress } from '../address'
58
+ import { binToHex, verifySignature } from '../utils'
51
59
 
52
60
  export abstract class SignerProvider {
53
61
  abstract get nodeProvider(): NodeProvider | undefined
@@ -64,7 +72,7 @@ export abstract class SignerProvider {
64
72
  const derivedAddress = addressFromPublicKey(account.publicKey, account.keyType)
65
73
  const derivedGroup = groupOfAddress(derivedAddress)
66
74
  if (derivedAddress !== account.address || (isGroupedAccount(account) && derivedGroup !== account.group)) {
67
- throw Error(`Invalid accounot data: ${JSON.stringify(account)}`)
75
+ throw Error(`Invalid accounot data: ${stringify(account)}`)
68
76
  }
69
77
  }
70
78
 
@@ -380,13 +388,11 @@ export function extendMessage(message: string): string {
380
388
  export function hashMessage(message: string, hasher: MessageHasher): string {
381
389
  switch (hasher) {
382
390
  case 'alephium':
383
- return utils.binToHex(blake.blake2b(extendMessage(message), undefined, 32))
391
+ return binToHex(blake2b(new TextEncoder().encode(extendMessage(message)), { dkLen: 32 }))
384
392
  case 'sha256':
385
- const sha256 = createHash('sha256')
386
- sha256.update(new TextEncoder().encode(message))
387
- return utils.binToHex(sha256.digest())
393
+ return binToHex(sha256(new TextEncoder().encode(message)))
388
394
  case 'blake2b':
389
- return utils.binToHex(blake.blake2b(message, undefined, 32))
395
+ return binToHex(blake2b(new TextEncoder().encode(message), { dkLen: 32 }))
390
396
  case 'identity':
391
397
  return message
392
398
  default:
@@ -402,7 +408,7 @@ export function verifySignedMessage(
402
408
  keyType?: KeyType
403
409
  ): boolean {
404
410
  const messageHash = hashMessage(message, messageHasher)
405
- return utils.verifySignature(messageHash, publicKey, signature, keyType)
411
+ return verifySignature(messageHash, publicKey, signature, keyType)
406
412
  }
407
413
 
408
414
  export function toApiDestination(data: Destination): node.Destination {
package/src/token/nft.ts CHANGED
@@ -19,7 +19,6 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
19
19
  // JSON Schema for the NFT metadata, which is pointed to by the value
20
20
  // returned from the `getTokenUri` method of the NFT contract
21
21
 
22
- import 'cross-fetch/polyfill'
23
22
  import { NFTCollectionUriMetaData, NFTTokenUriMetaData } from '../api'
24
23
  import { TraceableError } from '../error'
25
24
 
package/src/utils/sign.ts CHANGED
@@ -16,24 +16,22 @@ You should have received a copy of the GNU Lesser General Public License
16
16
  along with the library. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
- import { ec as EC } from 'elliptic'
20
19
  import { binToHex, encodeSignature, hexToBinUnsafe, signatureDecode } from '../utils'
21
20
  import { KeyType } from '../signer'
22
- import * as necc from '@noble/secp256k1'
23
- import { createHash, createHmac } from 'crypto'
21
+ import * as secp from '@noble/secp256k1'
22
+ import { sha256 } from '@noble/hashes/sha256'
23
+ import { hmac } from '@noble/hashes/hmac'
24
24
 
25
- const ec = new EC('secp256k1')
26
-
27
- necc.utils.sha256Sync = (...messages: Uint8Array[]): Uint8Array => {
28
- const sha256 = createHash('sha256')
29
- for (const message of messages) sha256.update(message)
30
- return sha256.digest()
25
+ secp.utils.sha256Sync = (...messages: Uint8Array[]): Uint8Array => {
26
+ const h = sha256.create()
27
+ for (const message of messages) h.update(message)
28
+ return h.digest()
31
29
  }
32
30
 
33
- necc.utils.hmacSha256Sync = (key: Uint8Array, ...messages: Uint8Array[]): Uint8Array => {
34
- const hash = createHmac('sha256', key)
35
- messages.forEach((m) => hash.update(m))
36
- return Uint8Array.from(hash.digest())
31
+ secp.utils.hmacSha256Sync = (key: Uint8Array, ...messages: Uint8Array[]): Uint8Array => {
32
+ const h = hmac.create(sha256, key)
33
+ for (const message of messages) h.update(message)
34
+ return h.digest()
37
35
  }
38
36
 
39
37
  function checkKeyType(keyType: KeyType) {
@@ -48,11 +46,11 @@ export function sign(hash: string, privateKey: string, _keyType?: KeyType): stri
48
46
  checkKeyType(keyType)
49
47
 
50
48
  if (keyType === 'default' || keyType === 'gl-secp256k1') {
51
- const key = ec.keyFromPrivate(privateKey)
52
- const signature = key.sign(hash)
53
- return encodeSignature(signature)
49
+ const sig = secp.signSync(hexToBinUnsafe(hash), hexToBinUnsafe(privateKey), { der: false })
50
+ const signature = secp.Signature.fromCompact(sig)
51
+ return encodeSignature({ r: signature.r, s: signature.s })
54
52
  } else {
55
- const signature = necc.schnorr.signSync(hexToBinUnsafe(hash), hexToBinUnsafe(privateKey))
53
+ const signature = secp.schnorr.signSync(hexToBinUnsafe(hash), hexToBinUnsafe(privateKey))
56
54
  return binToHex(signature)
57
55
  }
58
56
  }
@@ -63,10 +61,11 @@ export function verifySignature(hash: string, publicKey: string, signature: stri
63
61
 
64
62
  try {
65
63
  if (keyType === 'default' || keyType === 'gl-secp256k1') {
66
- const key = ec.keyFromPublic(publicKey, 'hex')
67
- return key.verify(hash, signatureDecode(ec, signature))
64
+ const decoded = signatureDecode(signature)
65
+ const sig = secp.Signature.fromCompact(decoded.r + decoded.s)
66
+ return secp.verify(sig, hexToBinUnsafe(hash), hexToBinUnsafe(publicKey))
68
67
  } else {
69
- return necc.schnorr.verifySync(hexToBinUnsafe(signature), hexToBinUnsafe(hash), hexToBinUnsafe(publicKey))
68
+ return secp.schnorr.verifySync(hexToBinUnsafe(signature), hexToBinUnsafe(hash), hexToBinUnsafe(publicKey))
70
69
  }
71
70
  } catch (error) {
72
71
  return false