crypto-aio 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +144 -14
  3. package/dist/adapters/avalanche/address.d.ts +15 -0
  4. package/dist/adapters/avalanche/address.js +74 -0
  5. package/dist/adapters/avalanche/address.js.map +1 -0
  6. package/dist/adapters/avalanche/api.d.ts +100 -0
  7. package/dist/adapters/avalanche/api.js +381 -0
  8. package/dist/adapters/avalanche/api.js.map +1 -0
  9. package/dist/adapters/avalanche/builder.d.ts +13 -0
  10. package/dist/adapters/avalanche/builder.js +336 -0
  11. package/dist/adapters/avalanche/builder.js.map +1 -0
  12. package/dist/adapters/avalanche/cb58.d.ts +7 -0
  13. package/dist/adapters/avalanche/cb58.js +49 -0
  14. package/dist/adapters/avalanche/cb58.js.map +1 -0
  15. package/dist/adapters/avalanche/chains.d.ts +21 -0
  16. package/dist/adapters/avalanche/chains.js +79 -0
  17. package/dist/adapters/avalanche/chains.js.map +1 -0
  18. package/dist/adapters/avalanche/codec.d.ts +94 -0
  19. package/dist/adapters/avalanche/codec.js +371 -0
  20. package/dist/adapters/avalanche/codec.js.map +1 -0
  21. package/dist/adapters/avalanche/context.d.ts +59 -0
  22. package/dist/adapters/avalanche/context.js +114 -0
  23. package/dist/adapters/avalanche/context.js.map +1 -0
  24. package/dist/adapters/avalanche/decode.d.ts +16 -0
  25. package/dist/adapters/avalanche/decode.js +101 -0
  26. package/dist/adapters/avalanche/decode.js.map +1 -0
  27. package/dist/adapters/avalanche/driver.d.ts +22 -0
  28. package/dist/adapters/avalanche/driver.js +81 -0
  29. package/dist/adapters/avalanche/driver.js.map +1 -0
  30. package/dist/adapters/avalanche/errors.d.ts +18 -0
  31. package/dist/adapters/avalanche/errors.js +61 -0
  32. package/dist/adapters/avalanche/errors.js.map +1 -0
  33. package/dist/adapters/avalanche/fees.d.ts +23 -0
  34. package/dist/adapters/avalanche/fees.js +105 -0
  35. package/dist/adapters/avalanche/fees.js.map +1 -0
  36. package/dist/adapters/avalanche/index.d.ts +19 -0
  37. package/dist/adapters/avalanche/index.js +8 -0
  38. package/dist/adapters/avalanche/index.js.map +1 -0
  39. package/dist/adapters/avalanche/network.d.ts +37 -0
  40. package/dist/adapters/avalanche/network.js +135 -0
  41. package/dist/adapters/avalanche/network.js.map +1 -0
  42. package/dist/adapters/avalanche/plugin.d.ts +21 -0
  43. package/dist/adapters/avalanche/plugin.js +46 -0
  44. package/dist/adapters/avalanche/plugin.js.map +1 -0
  45. package/dist/adapters/avalanche/presets.d.ts +6 -0
  46. package/dist/adapters/avalanche/presets.js +86 -0
  47. package/dist/adapters/avalanche/presets.js.map +1 -0
  48. package/dist/adapters/avalanche/proofs.d.ts +41 -0
  49. package/dist/adapters/avalanche/proofs.js +270 -0
  50. package/dist/adapters/avalanche/proofs.js.map +1 -0
  51. package/dist/adapters/avalanche/reader.d.ts +40 -0
  52. package/dist/adapters/avalanche/reader.js +231 -0
  53. package/dist/adapters/avalanche/reader.js.map +1 -0
  54. package/dist/adapters/avalanche/sdk.d.ts +182 -0
  55. package/dist/adapters/avalanche/sdk.js +21 -0
  56. package/dist/adapters/avalanche/sdk.js.map +1 -0
  57. package/dist/adapters/avalanche/types.d.ts +86 -0
  58. package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
  59. package/dist/adapters/avalanche/types.js.map +1 -0
  60. package/dist/adapters/evm/builder.d.ts +11 -0
  61. package/dist/adapters/evm/builder.js +326 -0
  62. package/dist/adapters/evm/builder.js.map +1 -0
  63. package/dist/adapters/evm/chains.d.ts +6 -0
  64. package/dist/adapters/evm/chains.js +203 -0
  65. package/dist/adapters/evm/chains.js.map +1 -0
  66. package/dist/adapters/evm/client.d.ts +84 -0
  67. package/dist/adapters/evm/client.js +335 -0
  68. package/dist/adapters/evm/client.js.map +1 -0
  69. package/dist/adapters/evm/decode.d.ts +35 -0
  70. package/dist/adapters/evm/decode.js +170 -0
  71. package/dist/adapters/evm/decode.js.map +1 -0
  72. package/dist/adapters/evm/driver.d.ts +8 -0
  73. package/dist/adapters/evm/driver.js +61 -0
  74. package/dist/adapters/evm/driver.js.map +1 -0
  75. package/dist/adapters/evm/errors.d.ts +20 -0
  76. package/dist/adapters/evm/errors.js +110 -0
  77. package/dist/adapters/evm/errors.js.map +1 -0
  78. package/dist/adapters/evm/ethers-client.d.ts +43 -0
  79. package/dist/adapters/evm/ethers-client.js +135 -0
  80. package/dist/adapters/evm/ethers-client.js.map +1 -0
  81. package/dist/adapters/evm/fees.d.ts +79 -0
  82. package/dist/adapters/evm/fees.js +234 -0
  83. package/dist/adapters/evm/fees.js.map +1 -0
  84. package/dist/adapters/evm/index.d.ts +20 -0
  85. package/dist/adapters/evm/index.js +11 -0
  86. package/dist/adapters/evm/index.js.map +1 -0
  87. package/dist/adapters/evm/network.d.ts +60 -0
  88. package/dist/adapters/evm/network.js +131 -0
  89. package/dist/adapters/evm/network.js.map +1 -0
  90. package/dist/adapters/evm/plugin.d.ts +36 -0
  91. package/dist/adapters/evm/plugin.js +102 -0
  92. package/dist/adapters/evm/plugin.js.map +1 -0
  93. package/dist/adapters/evm/presets.d.ts +2 -0
  94. package/dist/adapters/evm/presets.js +105 -0
  95. package/dist/adapters/evm/presets.js.map +1 -0
  96. package/dist/adapters/evm/proofs.d.ts +19 -0
  97. package/dist/adapters/evm/proofs.js +358 -0
  98. package/dist/adapters/evm/proofs.js.map +1 -0
  99. package/dist/adapters/evm/rawtx.d.ts +25 -0
  100. package/dist/adapters/evm/rawtx.js +176 -0
  101. package/dist/adapters/evm/rawtx.js.map +1 -0
  102. package/dist/adapters/evm/reader.d.ts +65 -0
  103. package/dist/adapters/evm/reader.js +292 -0
  104. package/dist/adapters/evm/reader.js.map +1 -0
  105. package/dist/adapters/evm/rpc.d.ts +39 -0
  106. package/dist/adapters/evm/rpc.js +152 -0
  107. package/dist/adapters/evm/rpc.js.map +1 -0
  108. package/dist/adapters/evm/tokens.d.ts +7 -0
  109. package/dist/adapters/evm/tokens.js +23 -0
  110. package/dist/adapters/evm/tokens.js.map +1 -0
  111. package/dist/adapters/evm/types.d.ts +255 -0
  112. package/dist/{type/account.js → adapters/evm/types.js} +1 -1
  113. package/dist/adapters/evm/types.js.map +1 -0
  114. package/dist/adapters/evm/web3-client.d.ts +23 -0
  115. package/dist/adapters/evm/web3-client.js +159 -0
  116. package/dist/adapters/evm/web3-client.js.map +1 -0
  117. package/dist/adapters/solana/builder.d.ts +18 -0
  118. package/dist/adapters/solana/builder.js +545 -0
  119. package/dist/adapters/solana/builder.js.map +1 -0
  120. package/dist/adapters/solana/chains.d.ts +13 -0
  121. package/dist/adapters/solana/chains.js +37 -0
  122. package/dist/adapters/solana/chains.js.map +1 -0
  123. package/dist/adapters/solana/decode.d.ts +111 -0
  124. package/dist/adapters/solana/decode.js +595 -0
  125. package/dist/adapters/solana/decode.js.map +1 -0
  126. package/dist/adapters/solana/driver.d.ts +15 -0
  127. package/dist/adapters/solana/driver.js +72 -0
  128. package/dist/adapters/solana/driver.js.map +1 -0
  129. package/dist/adapters/solana/errors.d.ts +36 -0
  130. package/dist/adapters/solana/errors.js +154 -0
  131. package/dist/adapters/solana/errors.js.map +1 -0
  132. package/dist/adapters/solana/fees.d.ts +68 -0
  133. package/dist/adapters/solana/fees.js +205 -0
  134. package/dist/adapters/solana/fees.js.map +1 -0
  135. package/dist/adapters/solana/heights.d.ts +47 -0
  136. package/dist/adapters/solana/heights.js +185 -0
  137. package/dist/adapters/solana/heights.js.map +1 -0
  138. package/dist/adapters/solana/history.d.ts +10 -0
  139. package/dist/adapters/solana/history.js +71 -0
  140. package/dist/adapters/solana/history.js.map +1 -0
  141. package/dist/adapters/solana/index.d.ts +16 -0
  142. package/dist/adapters/solana/index.js +9 -0
  143. package/dist/adapters/solana/index.js.map +1 -0
  144. package/dist/adapters/solana/keys.d.ts +13 -0
  145. package/dist/adapters/solana/keys.js +69 -0
  146. package/dist/adapters/solana/keys.js.map +1 -0
  147. package/dist/adapters/solana/network.d.ts +24 -0
  148. package/dist/adapters/solana/network.js +95 -0
  149. package/dist/adapters/solana/network.js.map +1 -0
  150. package/dist/adapters/solana/plugin.d.ts +18 -0
  151. package/dist/adapters/solana/plugin.js +41 -0
  152. package/dist/adapters/solana/plugin.js.map +1 -0
  153. package/dist/adapters/solana/presets.d.ts +2 -0
  154. package/dist/adapters/solana/presets.js +77 -0
  155. package/dist/adapters/solana/presets.js.map +1 -0
  156. package/dist/adapters/solana/programs.d.ts +44 -0
  157. package/dist/adapters/solana/programs.js +159 -0
  158. package/dist/adapters/solana/programs.js.map +1 -0
  159. package/dist/adapters/solana/proofs.d.ts +56 -0
  160. package/dist/adapters/solana/proofs.js +540 -0
  161. package/dist/adapters/solana/proofs.js.map +1 -0
  162. package/dist/adapters/solana/reader.d.ts +82 -0
  163. package/dist/adapters/solana/reader.js +326 -0
  164. package/dist/adapters/solana/reader.js.map +1 -0
  165. package/dist/adapters/solana/rpc.d.ts +102 -0
  166. package/dist/adapters/solana/rpc.js +301 -0
  167. package/dist/adapters/solana/rpc.js.map +1 -0
  168. package/dist/adapters/solana/tokens.d.ts +7 -0
  169. package/dist/adapters/solana/tokens.js +19 -0
  170. package/dist/adapters/solana/tokens.js.map +1 -0
  171. package/dist/adapters/solana/types.d.ts +121 -0
  172. package/dist/{type/contract.js → adapters/solana/types.js} +1 -1
  173. package/dist/adapters/solana/types.js.map +1 -0
  174. package/dist/adapters/solana/web3.d.ts +5 -0
  175. package/dist/adapters/solana/web3.js +83 -0
  176. package/dist/adapters/solana/web3.js.map +1 -0
  177. package/dist/adapters/solana/wire.d.ts +62 -0
  178. package/dist/adapters/solana/wire.js +168 -0
  179. package/dist/adapters/solana/wire.js.map +1 -0
  180. package/dist/adapters/ton/address.d.ts +43 -0
  181. package/dist/adapters/ton/address.js +168 -0
  182. package/dist/adapters/ton/address.js.map +1 -0
  183. package/dist/adapters/ton/api.d.ts +344 -0
  184. package/dist/adapters/ton/api.js +942 -0
  185. package/dist/adapters/ton/api.js.map +1 -0
  186. package/dist/adapters/ton/builder.d.ts +18 -0
  187. package/dist/adapters/ton/builder.js +701 -0
  188. package/dist/adapters/ton/builder.js.map +1 -0
  189. package/dist/adapters/ton/chains.d.ts +16 -0
  190. package/dist/adapters/ton/chains.js +39 -0
  191. package/dist/adapters/ton/chains.js.map +1 -0
  192. package/dist/adapters/ton/decode.d.ts +43 -0
  193. package/dist/adapters/ton/decode.js +219 -0
  194. package/dist/adapters/ton/decode.js.map +1 -0
  195. package/dist/adapters/ton/driver.d.ts +10 -0
  196. package/dist/adapters/ton/driver.js +117 -0
  197. package/dist/adapters/ton/driver.js.map +1 -0
  198. package/dist/adapters/ton/errors.d.ts +36 -0
  199. package/dist/adapters/ton/errors.js +89 -0
  200. package/dist/adapters/ton/errors.js.map +1 -0
  201. package/dist/adapters/ton/fees.d.ts +28 -0
  202. package/dist/adapters/ton/fees.js +121 -0
  203. package/dist/adapters/ton/fees.js.map +1 -0
  204. package/dist/adapters/ton/index.d.ts +16 -0
  205. package/dist/adapters/ton/index.js +9 -0
  206. package/dist/adapters/ton/index.js.map +1 -0
  207. package/dist/adapters/ton/messages.d.ts +157 -0
  208. package/dist/adapters/ton/messages.js +397 -0
  209. package/dist/adapters/ton/messages.js.map +1 -0
  210. package/dist/adapters/ton/native-client.d.ts +10 -0
  211. package/dist/adapters/ton/native-client.js +47 -0
  212. package/dist/adapters/ton/native-client.js.map +1 -0
  213. package/dist/adapters/ton/network.d.ts +58 -0
  214. package/dist/adapters/ton/network.js +207 -0
  215. package/dist/adapters/ton/network.js.map +1 -0
  216. package/dist/adapters/ton/plugin.d.ts +24 -0
  217. package/dist/adapters/ton/plugin.js +57 -0
  218. package/dist/adapters/ton/plugin.js.map +1 -0
  219. package/dist/adapters/ton/presets.d.ts +6 -0
  220. package/dist/adapters/ton/presets.js +94 -0
  221. package/dist/adapters/ton/presets.js.map +1 -0
  222. package/dist/adapters/ton/proofs.d.ts +66 -0
  223. package/dist/adapters/ton/proofs.js +813 -0
  224. package/dist/adapters/ton/proofs.js.map +1 -0
  225. package/dist/adapters/ton/reader.d.ts +194 -0
  226. package/dist/adapters/ton/reader.js +781 -0
  227. package/dist/adapters/ton/reader.js.map +1 -0
  228. package/dist/adapters/ton/tokens.d.ts +10 -0
  229. package/dist/adapters/ton/tokens.js +27 -0
  230. package/dist/adapters/ton/tokens.js.map +1 -0
  231. package/dist/adapters/ton/trace.d.ts +48 -0
  232. package/dist/adapters/ton/trace.js +277 -0
  233. package/dist/adapters/ton/trace.js.map +1 -0
  234. package/dist/adapters/ton/types.d.ts +105 -0
  235. package/dist/{type/transact.js → adapters/ton/types.js} +1 -1
  236. package/dist/adapters/ton/types.js.map +1 -0
  237. package/dist/adapters/ton/wallets.d.ts +86 -0
  238. package/dist/adapters/ton/wallets.js +373 -0
  239. package/dist/adapters/ton/wallets.js.map +1 -0
  240. package/dist/adapters/tron/abi.d.ts +39 -0
  241. package/dist/adapters/tron/abi.js +110 -0
  242. package/dist/adapters/tron/abi.js.map +1 -0
  243. package/dist/adapters/tron/address.d.ts +20 -0
  244. package/dist/adapters/tron/address.js +110 -0
  245. package/dist/adapters/tron/address.js.map +1 -0
  246. package/dist/adapters/tron/builder.d.ts +12 -0
  247. package/dist/adapters/tron/builder.js +553 -0
  248. package/dist/adapters/tron/builder.js.map +1 -0
  249. package/dist/adapters/tron/chains.d.ts +12 -0
  250. package/dist/adapters/tron/chains.js +35 -0
  251. package/dist/adapters/tron/chains.js.map +1 -0
  252. package/dist/adapters/tron/codec.d.ts +10 -0
  253. package/dist/adapters/tron/codec.js +322 -0
  254. package/dist/adapters/tron/codec.js.map +1 -0
  255. package/dist/adapters/tron/decode.d.ts +50 -0
  256. package/dist/adapters/tron/decode.js +280 -0
  257. package/dist/adapters/tron/decode.js.map +1 -0
  258. package/dist/adapters/tron/driver.d.ts +12 -0
  259. package/dist/adapters/tron/driver.js +106 -0
  260. package/dist/adapters/tron/driver.js.map +1 -0
  261. package/dist/adapters/tron/errors.d.ts +74 -0
  262. package/dist/adapters/tron/errors.js +261 -0
  263. package/dist/adapters/tron/errors.js.map +1 -0
  264. package/dist/adapters/tron/fees.d.ts +49 -0
  265. package/dist/adapters/tron/fees.js +166 -0
  266. package/dist/adapters/tron/fees.js.map +1 -0
  267. package/dist/adapters/tron/http.d.ts +173 -0
  268. package/dist/adapters/tron/http.js +729 -0
  269. package/dist/adapters/tron/http.js.map +1 -0
  270. package/dist/adapters/tron/index.d.ts +16 -0
  271. package/dist/adapters/tron/index.js +15 -0
  272. package/dist/adapters/tron/index.js.map +1 -0
  273. package/dist/adapters/tron/network.d.ts +44 -0
  274. package/dist/adapters/tron/network.js +163 -0
  275. package/dist/adapters/tron/network.js.map +1 -0
  276. package/dist/adapters/tron/plugin.d.ts +17 -0
  277. package/dist/adapters/tron/plugin.js +39 -0
  278. package/dist/adapters/tron/plugin.js.map +1 -0
  279. package/dist/adapters/tron/presets.d.ts +5 -0
  280. package/dist/adapters/tron/presets.js +68 -0
  281. package/dist/adapters/tron/presets.js.map +1 -0
  282. package/dist/adapters/tron/proofs.d.ts +80 -0
  283. package/dist/adapters/tron/proofs.js +370 -0
  284. package/dist/adapters/tron/proofs.js.map +1 -0
  285. package/dist/adapters/tron/protobuf.d.ts +36 -0
  286. package/dist/adapters/tron/protobuf.js +90 -0
  287. package/dist/adapters/tron/protobuf.js.map +1 -0
  288. package/dist/adapters/tron/reader.d.ts +47 -0
  289. package/dist/adapters/tron/reader.js +203 -0
  290. package/dist/adapters/tron/reader.js.map +1 -0
  291. package/dist/adapters/tron/tokens.d.ts +7 -0
  292. package/dist/adapters/tron/tokens.js +14 -0
  293. package/dist/adapters/tron/tokens.js.map +1 -0
  294. package/dist/adapters/tron/types.d.ts +166 -0
  295. package/dist/adapters/tron/types.js +3 -0
  296. package/dist/adapters/tron/types.js.map +1 -0
  297. package/dist/adapters/utxo/address.d.ts +51 -0
  298. package/dist/adapters/utxo/address.js +341 -0
  299. package/dist/adapters/utxo/address.js.map +1 -0
  300. package/dist/adapters/utxo/builder.d.ts +35 -0
  301. package/dist/adapters/utxo/builder.js +380 -0
  302. package/dist/adapters/utxo/builder.js.map +1 -0
  303. package/dist/adapters/utxo/chains.d.ts +17 -0
  304. package/dist/adapters/utxo/chains.js +99 -0
  305. package/dist/adapters/utxo/chains.js.map +1 -0
  306. package/dist/adapters/utxo/codec.d.ts +120 -0
  307. package/dist/adapters/utxo/codec.js +408 -0
  308. package/dist/adapters/utxo/codec.js.map +1 -0
  309. package/dist/adapters/utxo/coinselect.d.ts +48 -0
  310. package/dist/adapters/utxo/coinselect.js +131 -0
  311. package/dist/adapters/utxo/coinselect.js.map +1 -0
  312. package/dist/adapters/utxo/context.d.ts +57 -0
  313. package/dist/adapters/utxo/context.js +118 -0
  314. package/dist/adapters/utxo/context.js.map +1 -0
  315. package/dist/adapters/utxo/decode.d.ts +14 -0
  316. package/dist/adapters/utxo/decode.js +85 -0
  317. package/dist/adapters/utxo/decode.js.map +1 -0
  318. package/dist/adapters/utxo/driver.d.ts +16 -0
  319. package/dist/adapters/utxo/driver.js +74 -0
  320. package/dist/adapters/utxo/driver.js.map +1 -0
  321. package/dist/adapters/utxo/ecc.d.ts +9 -0
  322. package/dist/adapters/utxo/ecc.js +26 -0
  323. package/dist/adapters/utxo/ecc.js.map +1 -0
  324. package/dist/adapters/utxo/errors.d.ts +52 -0
  325. package/dist/adapters/utxo/errors.js +191 -0
  326. package/dist/adapters/utxo/errors.js.map +1 -0
  327. package/dist/adapters/utxo/esplora.d.ts +79 -0
  328. package/dist/adapters/utxo/esplora.js +451 -0
  329. package/dist/adapters/utxo/esplora.js.map +1 -0
  330. package/dist/adapters/utxo/fees.d.ts +41 -0
  331. package/dist/adapters/utxo/fees.js +125 -0
  332. package/dist/adapters/utxo/fees.js.map +1 -0
  333. package/dist/adapters/utxo/index.d.ts +17 -0
  334. package/dist/adapters/utxo/index.js +8 -0
  335. package/dist/adapters/utxo/index.js.map +1 -0
  336. package/dist/adapters/utxo/network.d.ts +50 -0
  337. package/dist/adapters/utxo/network.js +165 -0
  338. package/dist/adapters/utxo/network.js.map +1 -0
  339. package/dist/adapters/utxo/plugin.d.ts +17 -0
  340. package/dist/adapters/utxo/plugin.js +41 -0
  341. package/dist/adapters/utxo/plugin.js.map +1 -0
  342. package/dist/adapters/utxo/presets.d.ts +12 -0
  343. package/dist/adapters/utxo/presets.js +47 -0
  344. package/dist/adapters/utxo/presets.js.map +1 -0
  345. package/dist/adapters/utxo/preview.d.ts +3 -0
  346. package/dist/adapters/utxo/preview.js +65 -0
  347. package/dist/adapters/utxo/preview.js.map +1 -0
  348. package/dist/adapters/utxo/proofs.d.ts +57 -0
  349. package/dist/adapters/utxo/proofs.js +331 -0
  350. package/dist/adapters/utxo/proofs.js.map +1 -0
  351. package/dist/adapters/utxo/rawtx.d.ts +59 -0
  352. package/dist/adapters/utxo/rawtx.js +234 -0
  353. package/dist/adapters/utxo/rawtx.js.map +1 -0
  354. package/dist/adapters/utxo/reader.d.ts +36 -0
  355. package/dist/adapters/utxo/reader.js +265 -0
  356. package/dist/adapters/utxo/reader.js.map +1 -0
  357. package/dist/adapters/utxo/sdk.d.ts +18 -0
  358. package/dist/adapters/utxo/sdk.js +17 -0
  359. package/dist/adapters/utxo/sdk.js.map +1 -0
  360. package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
  361. package/dist/adapters/utxo/signed-psbt.js +428 -0
  362. package/dist/adapters/utxo/signed-psbt.js.map +1 -0
  363. package/dist/adapters/utxo/spend.d.ts +59 -0
  364. package/dist/adapters/utxo/spend.js +230 -0
  365. package/dist/adapters/utxo/spend.js.map +1 -0
  366. package/dist/adapters/utxo/types.d.ts +167 -0
  367. package/dist/adapters/utxo/types.js +3 -0
  368. package/dist/adapters/utxo/types.js.map +1 -0
  369. package/dist/core/assets/service.d.ts +18 -0
  370. package/dist/core/assets/service.js +69 -0
  371. package/dist/core/assets/service.js.map +1 -0
  372. package/dist/core/blockchain/default-ref.d.ts +4 -0
  373. package/dist/core/blockchain/default-ref.js +16 -0
  374. package/dist/core/blockchain/default-ref.js.map +1 -0
  375. package/dist/core/blockchain/handle.d.ts +200 -0
  376. package/dist/core/blockchain/handle.js +579 -0
  377. package/dist/core/blockchain/handle.js.map +1 -0
  378. package/dist/core/blockchain/internal.d.ts +19 -0
  379. package/dist/core/blockchain/internal.js +16 -0
  380. package/dist/core/blockchain/internal.js.map +1 -0
  381. package/dist/core/blockchain/mapping.d.ts +22 -0
  382. package/dist/core/blockchain/mapping.js +136 -0
  383. package/dist/core/blockchain/mapping.js.map +1 -0
  384. package/dist/core/config/env.d.ts +8 -0
  385. package/dist/core/config/env.js +60 -0
  386. package/dist/core/config/env.js.map +1 -0
  387. package/dist/core/config/merge.d.ts +26 -0
  388. package/dist/core/config/merge.js +144 -0
  389. package/dist/core/config/merge.js.map +1 -0
  390. package/dist/core/config/resolve.d.ts +12 -0
  391. package/dist/core/config/resolve.js +251 -0
  392. package/dist/core/config/resolve.js.map +1 -0
  393. package/dist/core/config/types.d.ts +165 -0
  394. package/dist/core/config/types.js +3 -0
  395. package/dist/core/config/types.js.map +1 -0
  396. package/dist/core/container/builtins.d.ts +4 -0
  397. package/dist/core/container/builtins.js +13 -0
  398. package/dist/core/container/builtins.js.map +1 -0
  399. package/dist/core/container/container.d.ts +69 -0
  400. package/dist/core/container/container.js +466 -0
  401. package/dist/core/container/container.js.map +1 -0
  402. package/dist/core/container/default.d.ts +15 -0
  403. package/dist/core/container/default.js +70 -0
  404. package/dist/core/container/default.js.map +1 -0
  405. package/dist/core/container/internals.d.ts +54 -0
  406. package/dist/core/container/internals.js +21 -0
  407. package/dist/core/container/internals.js.map +1 -0
  408. package/dist/core/container/pool.d.ts +27 -0
  409. package/dist/core/container/pool.js +77 -0
  410. package/dist/core/container/pool.js.map +1 -0
  411. package/dist/core/driver/types.d.ts +346 -0
  412. package/dist/core/driver/types.js +3 -0
  413. package/dist/core/driver/types.js.map +1 -0
  414. package/dist/core/errors/codes.d.ts +153 -0
  415. package/dist/core/errors/codes.js +49 -0
  416. package/dist/core/errors/codes.js.map +1 -0
  417. package/dist/core/errors/error.d.ts +66 -0
  418. package/dist/core/errors/error.js +129 -0
  419. package/dist/core/errors/error.js.map +1 -0
  420. package/dist/core/events/bus.d.ts +12 -0
  421. package/dist/core/events/bus.js +46 -0
  422. package/dist/core/events/bus.js.map +1 -0
  423. package/dist/core/events/logger.d.ts +13 -0
  424. package/dist/core/events/logger.js +42 -0
  425. package/dist/core/events/logger.js.map +1 -0
  426. package/dist/core/events/types.d.ts +131 -0
  427. package/dist/core/events/types.js +3 -0
  428. package/dist/core/events/types.js.map +1 -0
  429. package/dist/core/lifecycle/engine-rules.d.ts +107 -0
  430. package/dist/core/lifecycle/engine-rules.js +257 -0
  431. package/dist/core/lifecycle/engine-rules.js.map +1 -0
  432. package/dist/core/lifecycle/engine.d.ts +500 -0
  433. package/dist/core/lifecycle/engine.js +1732 -0
  434. package/dist/core/lifecycle/engine.js.map +1 -0
  435. package/dist/core/lifecycle/evaluate.d.ts +19 -0
  436. package/dist/core/lifecycle/evaluate.js +72 -0
  437. package/dist/core/lifecycle/evaluate.js.map +1 -0
  438. package/dist/core/lifecycle/intent.d.ts +11 -0
  439. package/dist/core/lifecycle/intent.js +88 -0
  440. package/dist/core/lifecycle/intent.js.map +1 -0
  441. package/dist/core/lifecycle/monitor.d.ts +138 -0
  442. package/dist/core/lifecycle/monitor.js +606 -0
  443. package/dist/core/lifecycle/monitor.js.map +1 -0
  444. package/dist/core/lifecycle/observations.d.ts +17 -0
  445. package/dist/core/lifecycle/observations.js +59 -0
  446. package/dist/core/lifecycle/observations.js.map +1 -0
  447. package/dist/core/lifecycle/reconcile.d.ts +58 -0
  448. package/dist/core/lifecycle/reconcile.js +112 -0
  449. package/dist/core/lifecycle/reconcile.js.map +1 -0
  450. package/dist/core/lifecycle/views.d.ts +49 -0
  451. package/dist/core/lifecycle/views.js +57 -0
  452. package/dist/core/lifecycle/views.js.map +1 -0
  453. package/dist/core/lifecycle/workers.d.ts +82 -0
  454. package/dist/core/lifecycle/workers.js +329 -0
  455. package/dist/core/lifecycle/workers.js.map +1 -0
  456. package/dist/core/model/address.d.ts +32 -0
  457. package/dist/core/model/address.js +43 -0
  458. package/dist/core/model/address.js.map +1 -0
  459. package/dist/core/model/amount.d.ts +25 -0
  460. package/dist/core/model/amount.js +102 -0
  461. package/dist/core/model/amount.js.map +1 -0
  462. package/dist/core/model/asset.d.ts +28 -0
  463. package/dist/core/model/asset.js +47 -0
  464. package/dist/core/model/asset.js.map +1 -0
  465. package/dist/core/model/capability.d.ts +3 -0
  466. package/dist/core/model/capability.js +18 -0
  467. package/dist/core/model/capability.js.map +1 -0
  468. package/dist/core/model/chain.d.ts +63 -0
  469. package/dist/core/model/chain.js +8 -0
  470. package/dist/core/model/chain.js.map +1 -0
  471. package/dist/core/model/fee.d.ts +36 -0
  472. package/dist/core/model/fee.js +17 -0
  473. package/dist/core/model/fee.js.map +1 -0
  474. package/dist/core/model/ids.d.ts +37 -0
  475. package/dist/core/model/ids.js +13 -0
  476. package/dist/core/model/ids.js.map +1 -0
  477. package/dist/core/model/intent.d.ts +63 -0
  478. package/dist/core/model/intent.js +81 -0
  479. package/dist/core/model/intent.js.map +1 -0
  480. package/dist/core/model/ordering.d.ts +20 -0
  481. package/dist/core/model/ordering.js +29 -0
  482. package/dist/core/model/ordering.js.map +1 -0
  483. package/dist/core/model/transaction.d.ts +116 -0
  484. package/dist/{type/lib-types.js → core/model/transaction.js} +1 -1
  485. package/dist/core/model/transaction.js.map +1 -0
  486. package/dist/core/observe/scanner.d.ts +135 -0
  487. package/dist/core/observe/scanner.js +355 -0
  488. package/dist/core/observe/scanner.js.map +1 -0
  489. package/dist/core/ordering/reservations.d.ts +16 -0
  490. package/dist/core/ordering/reservations.js +53 -0
  491. package/dist/core/ordering/reservations.js.map +1 -0
  492. package/dist/core/ordering/sequence.d.ts +61 -0
  493. package/dist/core/ordering/sequence.js +155 -0
  494. package/dist/core/ordering/sequence.js.map +1 -0
  495. package/dist/core/registry/adapters.d.ts +10 -0
  496. package/dist/core/registry/adapters.js +56 -0
  497. package/dist/core/registry/adapters.js.map +1 -0
  498. package/dist/core/registry/assets.d.ts +18 -0
  499. package/dist/core/registry/assets.js +90 -0
  500. package/dist/core/registry/assets.js.map +1 -0
  501. package/dist/core/registry/chains.d.ts +10 -0
  502. package/dist/core/registry/chains.js +80 -0
  503. package/dist/core/registry/chains.js.map +1 -0
  504. package/dist/core/registry/plugin.d.ts +41 -0
  505. package/dist/core/registry/plugin.js +109 -0
  506. package/dist/core/registry/plugin.js.map +1 -0
  507. package/dist/core/registry/providers.d.ts +31 -0
  508. package/dist/core/registry/providers.js +43 -0
  509. package/dist/core/registry/providers.js.map +1 -0
  510. package/dist/core/registry/schemes.d.ts +30 -0
  511. package/dist/core/registry/schemes.js +84 -0
  512. package/dist/core/registry/schemes.js.map +1 -0
  513. package/dist/core/secret/fragments.d.ts +33 -0
  514. package/dist/core/secret/fragments.js +110 -0
  515. package/dist/core/secret/fragments.js.map +1 -0
  516. package/dist/core/secret/redact.d.ts +10 -0
  517. package/dist/core/secret/redact.js +110 -0
  518. package/dist/core/secret/redact.js.map +1 -0
  519. package/dist/core/secret/secret.d.ts +14 -0
  520. package/dist/core/secret/secret.js +42 -0
  521. package/dist/core/secret/secret.js.map +1 -0
  522. package/dist/core/signing/callback.d.ts +10 -0
  523. package/dist/core/signing/callback.js +22 -0
  524. package/dist/core/signing/callback.js.map +1 -0
  525. package/dist/core/signing/guard.d.ts +18 -0
  526. package/dist/core/signing/guard.js +72 -0
  527. package/dist/core/signing/guard.js.map +1 -0
  528. package/dist/core/signing/hd.d.ts +36 -0
  529. package/dist/core/signing/hd.js +167 -0
  530. package/dist/core/signing/hd.js.map +1 -0
  531. package/dist/core/signing/local.d.ts +48 -0
  532. package/dist/core/signing/local.js +190 -0
  533. package/dist/core/signing/local.js.map +1 -0
  534. package/dist/core/signing/orchestrator.d.ts +40 -0
  535. package/dist/core/signing/orchestrator.js +300 -0
  536. package/dist/core/signing/orchestrator.js.map +1 -0
  537. package/dist/core/signing/types.d.ts +64 -0
  538. package/dist/core/signing/types.js +3 -0
  539. package/dist/core/signing/types.js.map +1 -0
  540. package/dist/core/signing/wallet.d.ts +48 -0
  541. package/dist/core/signing/wallet.js +153 -0
  542. package/dist/core/signing/wallet.js.map +1 -0
  543. package/dist/core/store/clone.d.ts +25 -0
  544. package/dist/core/store/clone.js +71 -0
  545. package/dist/core/store/clone.js.map +1 -0
  546. package/dist/core/store/memory.d.ts +38 -0
  547. package/dist/core/store/memory.js +325 -0
  548. package/dist/core/store/memory.js.map +1 -0
  549. package/dist/core/store/types.d.ts +246 -0
  550. package/dist/core/store/types.js +117 -0
  551. package/dist/core/store/types.js.map +1 -0
  552. package/dist/core/transport/backoff.d.ts +8 -0
  553. package/dist/core/transport/backoff.js +27 -0
  554. package/dist/core/transport/backoff.js.map +1 -0
  555. package/dist/core/transport/circuit.d.ts +25 -0
  556. package/dist/core/transport/circuit.js +61 -0
  557. package/dist/core/transport/circuit.js.map +1 -0
  558. package/dist/core/transport/http-transport.d.ts +30 -0
  559. package/dist/core/transport/http-transport.js +1695 -0
  560. package/dist/core/transport/http-transport.js.map +1 -0
  561. package/dist/core/transport/rate-limit.d.ts +27 -0
  562. package/dist/core/transport/rate-limit.js +78 -0
  563. package/dist/core/transport/rate-limit.js.map +1 -0
  564. package/dist/core/transport/stale-view.d.ts +11 -0
  565. package/dist/core/transport/stale-view.js +17 -0
  566. package/dist/core/transport/stale-view.js.map +1 -0
  567. package/dist/core/transport/types.d.ts +144 -0
  568. package/dist/core/transport/types.js +6 -0
  569. package/dist/core/transport/types.js.map +1 -0
  570. package/dist/core/util/bytes.d.ts +9 -0
  571. package/dist/core/util/bytes.js +40 -0
  572. package/dist/core/util/bytes.js.map +1 -0
  573. package/dist/core/util/clock.d.ts +6 -0
  574. package/dist/core/util/clock.js +26 -0
  575. package/dist/core/util/clock.js.map +1 -0
  576. package/dist/core/util/freeze.d.ts +8 -0
  577. package/dist/core/util/freeze.js +31 -0
  578. package/dist/core/util/freeze.js.map +1 -0
  579. package/dist/core/util/json.d.ts +29 -0
  580. package/dist/core/util/json.js +165 -0
  581. package/dist/core/util/json.js.map +1 -0
  582. package/dist/core/util/names.d.ts +21 -0
  583. package/dist/core/util/names.js +46 -0
  584. package/dist/core/util/names.js.map +1 -0
  585. package/dist/index.d.ts +64 -14
  586. package/dist/index.js +105 -49
  587. package/dist/index.js.map +1 -1
  588. package/dist/native.d.ts +21 -0
  589. package/dist/native.js +44 -0
  590. package/dist/native.js.map +1 -0
  591. package/dist/testing/contracts/api.d.ts +12 -0
  592. package/dist/testing/contracts/api.js +58 -0
  593. package/dist/testing/contracts/api.js.map +1 -0
  594. package/dist/testing/contracts/cursors.d.ts +6 -0
  595. package/dist/testing/contracts/cursors.js +43 -0
  596. package/dist/testing/contracts/cursors.js.map +1 -0
  597. package/dist/testing/contracts/locks.d.ts +10 -0
  598. package/dist/testing/contracts/locks.js +63 -0
  599. package/dist/testing/contracts/locks.js.map +1 -0
  600. package/dist/testing/contracts/operations.d.ts +21 -0
  601. package/dist/testing/contracts/operations.js +718 -0
  602. package/dist/testing/contracts/operations.js.map +1 -0
  603. package/dist/testing/contracts/sequences.d.ts +6 -0
  604. package/dist/testing/contracts/sequences.js +68 -0
  605. package/dist/testing/contracts/sequences.js.map +1 -0
  606. package/dist/testing/env.d.ts +63 -0
  607. package/dist/testing/env.js +105 -0
  608. package/dist/testing/env.js.map +1 -0
  609. package/dist/testing/fake-chain.d.ts +118 -0
  610. package/dist/testing/fake-chain.js +536 -0
  611. package/dist/testing/fake-chain.js.map +1 -0
  612. package/dist/testing/fake-clock.d.ts +15 -0
  613. package/dist/testing/fake-clock.js +86 -0
  614. package/dist/testing/fake-clock.js.map +1 -0
  615. package/dist/testing/fake-driver.d.ts +15 -0
  616. package/dist/testing/fake-driver.js +458 -0
  617. package/dist/testing/fake-driver.js.map +1 -0
  618. package/dist/testing/fake-fetch.d.ts +32 -0
  619. package/dist/testing/fake-fetch.js +81 -0
  620. package/dist/testing/fake-fetch.js.map +1 -0
  621. package/dist/testing/fake-plugin.d.ts +30 -0
  622. package/dist/testing/fake-plugin.js +66 -0
  623. package/dist/testing/fake-plugin.js.map +1 -0
  624. package/dist/testing/faulty-store.d.ts +36 -0
  625. package/dist/testing/faulty-store.js +66 -0
  626. package/dist/testing/faulty-store.js.map +1 -0
  627. package/dist/testing/generation.d.ts +60 -0
  628. package/dist/testing/generation.js +252 -0
  629. package/dist/testing/generation.js.map +1 -0
  630. package/dist/testing/index.d.ts +28 -0
  631. package/dist/testing/index.js +51 -0
  632. package/dist/testing/index.js.map +1 -0
  633. package/package.json +188 -45
  634. package/dist/libs/eth/account.d.ts +0 -9
  635. package/dist/libs/eth/account.js +0 -58
  636. package/dist/libs/eth/account.js.map +0 -1
  637. package/dist/libs/eth/contract.d.ts +0 -7
  638. package/dist/libs/eth/contract.js +0 -42
  639. package/dist/libs/eth/contract.js.map +0 -1
  640. package/dist/libs/eth/index.d.ts +0 -24
  641. package/dist/libs/eth/index.js +0 -72
  642. package/dist/libs/eth/index.js.map +0 -1
  643. package/dist/libs/eth/transact.d.ts +0 -7
  644. package/dist/libs/eth/transact.js +0 -26
  645. package/dist/libs/eth/transact.js.map +0 -1
  646. package/dist/libs/index.d.ts +0 -2
  647. package/dist/libs/index.js +0 -19
  648. package/dist/libs/index.js.map +0 -1
  649. package/dist/libs/trx/account.d.ts +0 -9
  650. package/dist/libs/trx/account.js +0 -55
  651. package/dist/libs/trx/account.js.map +0 -1
  652. package/dist/libs/trx/contract.d.ts +0 -7
  653. package/dist/libs/trx/contract.js +0 -27
  654. package/dist/libs/trx/contract.js.map +0 -1
  655. package/dist/libs/trx/index.d.ts +0 -22
  656. package/dist/libs/trx/index.js +0 -64
  657. package/dist/libs/trx/index.js.map +0 -1
  658. package/dist/libs/trx/transact.d.ts +0 -7
  659. package/dist/libs/trx/transact.js +0 -26
  660. package/dist/libs/trx/transact.js.map +0 -1
  661. package/dist/tool/common.d.ts +0 -28
  662. package/dist/tool/common.js +0 -33
  663. package/dist/tool/common.js.map +0 -1
  664. package/dist/tool/eth-tools.d.ts +0 -3
  665. package/dist/tool/eth-tools.js +0 -33
  666. package/dist/tool/eth-tools.js.map +0 -1
  667. package/dist/tool/index.d.ts +0 -5
  668. package/dist/tool/index.js +0 -22
  669. package/dist/tool/index.js.map +0 -1
  670. package/dist/tool/logging.d.ts +0 -3
  671. package/dist/tool/logging.js +0 -11
  672. package/dist/tool/logging.js.map +0 -1
  673. package/dist/tool/options.d.ts +0 -6
  674. package/dist/tool/options.js +0 -41
  675. package/dist/tool/options.js.map +0 -1
  676. package/dist/tool/trx-tools.d.ts +0 -3
  677. package/dist/tool/trx-tools.js +0 -20
  678. package/dist/tool/trx-tools.js.map +0 -1
  679. package/dist/type/account.d.ts +0 -9
  680. package/dist/type/account.js.map +0 -1
  681. package/dist/type/common.d.ts +0 -18
  682. package/dist/type/common.js.map +0 -1
  683. package/dist/type/contract.d.ts +0 -10
  684. package/dist/type/contract.js.map +0 -1
  685. package/dist/type/index.d.ts +0 -5
  686. package/dist/type/index.js +0 -22
  687. package/dist/type/index.js.map +0 -1
  688. package/dist/type/lib-types.d.ts +0 -9
  689. package/dist/type/lib-types.js.map +0 -1
  690. package/dist/type/transact.d.ts +0 -7
  691. package/dist/type/transact.js.map +0 -1
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fenceGeneration = fenceGeneration;
4
+ /**
5
+ * The restart generation fence: `restart({ killPrevious: true })` simulates a
6
+ * process that died, so nothing the old generation started may make further progress or
7
+ * write to shared state. `createFakeEnv` uses it, and so does every family's end-to-end env
8
+ * built on its own scripted node. Test-only: not part of `crypto-aio/testing`.
9
+ */
10
+ const error_1 = require("../core/errors/error");
11
+ /** Runs `start` unless the generation is already dead, and settles like its result only while
12
+ * the generation is still alive; otherwise the returned promise never settles. */
13
+ function fenced(generation, start) {
14
+ return new Promise((resolve, reject) => {
15
+ if (!generation.alive)
16
+ return; // never settles: already dead at call time.
17
+ Promise.resolve(start()).then((value) => {
18
+ if (generation.alive)
19
+ resolve(value); // else: never settles, dead before it settled.
20
+ }, (error) => {
21
+ if (generation.alive)
22
+ reject(error);
23
+ });
24
+ });
25
+ }
26
+ /** Per-generation clock: `now()` stays live (harmless to read); `sleep()` is fenced. */
27
+ function generationClock(shared, generation) {
28
+ return {
29
+ now: () => shared.now(),
30
+ sleep: (ms, signal) => fenced(generation, () => shared.sleep(ms, signal)),
31
+ };
32
+ }
33
+ /** Body-reading methods fenced on a fetched Response (`bytes` only where the runtime
34
+ * has it). `clone()` and `body` are fenced separately; everything else (status, ok, headers,
35
+ * ...) passes straight through. */
36
+ const FENCED_RESPONSE_READERS = new Set([
37
+ 'text',
38
+ 'json',
39
+ 'arrayBuffer',
40
+ 'blob',
41
+ 'bytes',
42
+ 'formData',
43
+ ]);
44
+ /**
45
+ * A stand-in for `response.body` whose every chunk is pulled from the real body through
46
+ * the fence, so a `read()` (via `getReader()`, async iteration, `pipeTo`, `tee`, ...) never
47
+ * settles once the generation is dead. `highWaterMark: 0` means nothing is pulled — and the
48
+ * real body isn't even locked — until a consumer actually reads, so merely touching `.body`
49
+ * (e.g. `if (res.body) await res.text()`) still leaves the real body readable by `text()`.
50
+ */
51
+ function generationBody(body, generation) {
52
+ let reader;
53
+ return new ReadableStream({
54
+ pull: (controller) => fenced(generation, () => (reader ??= body.getReader()).read()).then((chunk) => {
55
+ if (chunk.done)
56
+ controller.close();
57
+ else
58
+ controller.enqueue(chunk.value);
59
+ }),
60
+ cancel: (reason) => (reader ? reader.cancel(reason) : body.cancel(reason)),
61
+ }, { highWaterMark: 0 });
62
+ }
63
+ /**
64
+ * Wraps a fetched Response so reading its body is fenced too — once a generation is
65
+ * dead, every body reader (`text()`, `json()`, `blob()`, ...), a read of the `body` stream,
66
+ * and the same on any `clone()` of it (itself a fenced Response) must never settle either,
67
+ * exactly like the fetch call that produced it (a caller may have obtained the Response while
68
+ * still alive and only read its body afterwards). Every other property or method is bound to
69
+ * the real `target` (never invoked through the Proxy itself), so a native accessor like
70
+ * `.ok`/`.status` still sees a genuine `Response` as `this`.
71
+ */
72
+ function generationResponse(response, generation) {
73
+ let body;
74
+ return new Proxy(response, {
75
+ get(target, prop) {
76
+ if (prop === 'body') {
77
+ // Memoized: like the real getter, every access returns the same stream.
78
+ if (body === undefined)
79
+ body = target.body === null ? null : generationBody(target.body, generation);
80
+ return body;
81
+ }
82
+ const value = Reflect.get(target, prop); // no receiver: see generationProxy.
83
+ if (typeof value !== 'function')
84
+ return value;
85
+ const bound = value.bind(target);
86
+ if (prop === 'clone')
87
+ return () => generationResponse(target.clone(), generation);
88
+ if (typeof prop !== 'string' || !FENCED_RESPONSE_READERS.has(prop))
89
+ return bound;
90
+ return (...args) => fenced(generation, () => bound(...args));
91
+ },
92
+ });
93
+ }
94
+ /** Per-generation fetch, fenced the same way as the clock; the Response it resolves with is
95
+ * itself fenced, so a body read issued on it after the kill never settles either. */
96
+ function generationFetch(shared, generation) {
97
+ return ((...args) => fenced(generation, () => shared(...args).then((response) => generationResponse(response, generation))));
98
+ }
99
+ /**
100
+ * Every async method of the `Stores` ports and of `Signer`. Exhaustive at compile time (a
101
+ * port method added later fails the build until it's listed here), and independent of how an
102
+ * implementation spells the method — a non-`async` function returning a Promise counts too.
103
+ */
104
+ const ASYNC_PORT_METHODS = {
105
+ create: true,
106
+ get: true,
107
+ getByKey: true,
108
+ findByRef: true,
109
+ update: true,
110
+ appendAttempt: true,
111
+ getObservation: true,
112
+ putObservation: true,
113
+ claimDue: true,
114
+ releaseClaim: true,
115
+ list: true,
116
+ purge: true,
117
+ acquire: true,
118
+ renew: true,
119
+ release: true,
120
+ put: true,
121
+ getPublicKey: true,
122
+ sign: true,
123
+ cancelRequest: true,
124
+ exportKey: true,
125
+ };
126
+ /**
127
+ * Diagnostics that must keep working on a dead proxy (`JSON.stringify`, `util.inspect`).
128
+ */
129
+ const PASSTHROUGH = new Set([
130
+ 'toJSON',
131
+ 'inspect',
132
+ Symbol.for('nodejs.util.inspect.custom'),
133
+ ]);
134
+ function isAsyncMethod(prop, fn) {
135
+ return ((typeof prop === 'string' && Object.hasOwn(ASYNC_PORT_METHODS, prop)) ||
136
+ Object.prototype.toString.call(fn) === '[object AsyncFunction]');
137
+ }
138
+ /**
139
+ * Wraps every method of `target` so a generation's death fences it, and generalizes the
140
+ * old `generationStore` to any shared object with async methods (`Stores`, `Signer`). An async
141
+ * method (a port method named in `ASYNC_PORT_METHODS`, or a native `async` function) is
142
+ * fenced the way `sleep`/`fetch` are: once the generation is dead it never settles and never
143
+ * throws, whether it was already in flight or is only called afterwards. A genuinely
144
+ * synchronous method throws `StateError` when called on an already-dead generation — there's
145
+ * no "never resolve" for a call that must return synchronously. `toJSON`/`inspect` pass
146
+ * through unfenced.
147
+ */
148
+ function generationProxy(target, generation) {
149
+ // The Proxy wraps an empty, extensible stand-in, never `target` itself: a frozen target
150
+ // (e.g. a `callbackSigner`) has non-configurable read-only properties, and the Proxy
151
+ // invariants would then forbid returning the fenced wrapper instead of the real value.
152
+ // Every read is forwarded to the real object; descriptors are reported configurable.
153
+ // Writes are refused loudly: they would otherwise land silently on the stand-in.
154
+ const refuse = (trap) => {
155
+ throw new TypeError(`crypto-aio/testing: '${trap}' is not supported on a fenced object`);
156
+ };
157
+ return new Proxy({}, {
158
+ set: () => refuse('set'),
159
+ defineProperty: () => refuse('defineProperty'),
160
+ deleteProperty: () => refuse('deleteProperty'),
161
+ has: (_stand, prop) => Reflect.has(target, prop),
162
+ ownKeys: () => Reflect.ownKeys(target),
163
+ getPrototypeOf: () => Reflect.getPrototypeOf(target),
164
+ getOwnPropertyDescriptor: (_stand, prop) => {
165
+ const descriptor = Reflect.getOwnPropertyDescriptor(target, prop);
166
+ return descriptor ? { ...descriptor, configurable: true } : undefined;
167
+ },
168
+ get(_stand, prop) {
169
+ // No receiver, so a native/data getter runs with the real target as `this`.
170
+ const value = Reflect.get(target, prop);
171
+ if (typeof value !== 'function')
172
+ return value;
173
+ const fn = value;
174
+ if (PASSTHROUGH.has(prop))
175
+ return fn.bind(target);
176
+ const isAsync = isAsyncMethod(prop, fn);
177
+ return (...args) => {
178
+ if (!generation.alive) {
179
+ // A call issued once the generation is already dead never invokes the real method
180
+ // (no side effect from a dead continuation). An async one just never settles; a
181
+ // synchronous one can't be left "hanging", so it fails fast instead.
182
+ if (isAsync)
183
+ return new Promise(() => undefined);
184
+ throw new error_1.StateError('INVALID_TRANSITION', 'crypto-aio/testing: this generation was killed by restart({ killPrevious: true })');
185
+ }
186
+ const result = fn.apply(target, args);
187
+ const thenable = typeof result === 'object' &&
188
+ result !== null &&
189
+ typeof result.then === 'function';
190
+ if (!thenable)
191
+ return result; // A synchronous result passes straight through.
192
+ return fenced(generation, () => result);
193
+ };
194
+ },
195
+ });
196
+ }
197
+ function generationStores(stores, generation) {
198
+ return {
199
+ operations: generationProxy(stores.operations, generation),
200
+ locks: generationProxy(stores.locks, generation),
201
+ sequences: generationProxy(stores.sequences, generation),
202
+ cursors: generationProxy(stores.cursors, generation),
203
+ };
204
+ }
205
+ /** The shared signer (see the doc comment on `signers` in `assemble`, `env.ts` — it's
206
+ * stateless and never rebuilt across generations) still has its `sign`/`getPublicKey` calls
207
+ * fenced per generation, the same as any other in-flight call; the underlying `Signer`
208
+ * instance is unchanged, just wrapped. */
209
+ function generationSigner(shared, generation) {
210
+ return generationProxy(shared, generation);
211
+ }
212
+ /**
213
+ * Fences one generation's view of the parts every generation shares. A family env builds
214
+ * each container from the result, never from `parts` directly, and keeps `generation` so a
215
+ * restart can kill it:
216
+ *
217
+ * ```ts
218
+ * const generation = { alive: true };
219
+ * const fenced = fenceGeneration(
220
+ * { clock, fetch: node.fetch.fetch, stores, signers: { [signer.id]: signer } },
221
+ * generation,
222
+ * );
223
+ * const aio = new CryptoAio({
224
+ * clock: fenced.clock,
225
+ * stores: fenced.stores,
226
+ * signers: fenced.signers,
227
+ * transport: { fetch: fenced.fetch },
228
+ * // ...providers, wallets, chains
229
+ * });
230
+ * // restart({ killPrevious: true }): kill this generation, then fence a new one over the
231
+ * // same parts (same clock, node, stores and signer objects).
232
+ * generation.alive = false;
233
+ * ```
234
+ *
235
+ * Once `generation.alive` is `false`, every clock sleep, fetch (and body read), store call
236
+ * and signer call of this generation, in flight or issued later, never settles; a
237
+ * synchronous port method throws `StateError`. `clock.now()` stays live. Keep the raw
238
+ * `clock` for driving time (`drive`, `advance`, `pending`) and the raw `stores` for test
239
+ * assertions: they belong to no generation.
240
+ */
241
+ function fenceGeneration(parts, generation) {
242
+ return {
243
+ clock: generationClock(parts.clock, generation),
244
+ fetch: generationFetch(parts.fetch, generation),
245
+ stores: generationStores(parts.stores, generation),
246
+ signers: Object.fromEntries(Object.entries(parts.signers).map(([id, signer]) => [
247
+ id,
248
+ generationSigner(signer, generation),
249
+ ])),
250
+ };
251
+ }
252
+ //# sourceMappingURL=generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/testing/generation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The restart generation fence: `restart({ killPrevious: true })` simulates a\n * process that died, so nothing the old generation started may make further progress or\n * write to shared state. `createFakeEnv` uses it, and so does every family's end-to-end env\n * built on its own scripted node. Test-only: not part of `crypto-aio/testing`.\n */\nimport { StateError } from '../core/errors/error';\nimport type { Signer } from '../core/signing/types';\nimport type {\n CursorStore,\n LockManager,\n OperationStore,\n SequenceStore,\n Stores,\n} from '../core/store/types';\nimport type { Clock } from '../core/util/clock';\nimport type { FakeClock } from './fake-clock';\n\n/**\n * Flipped to `false` by `restart({ killPrevious: true })`; every wrapper built for this\n * generation (clock, fetch, the fetched Response's body readers, the shared signer, the store\n * proxies) checks it both when invoked and when the real call underneath settles, so a dead\n * generation can neither start nor finish any of them.\n *\n * The fence only becomes complete once the microtask queue has drained past the point\n * where `generation.alive` was flipped. Code from the old generation that was already past a\n * *settled* fenced call (holding a plain value, not awaiting anything) keeps running\n * synchronously — nothing here can interrupt a synchronous continuation mid-expression — right\n * up until it reaches its *next* fenced call, which then never lets it proceed further (or, for\n * a synchronous wrapped call, throws instead — see `generationProxy`).\n */\nexport interface Generation {\n alive: boolean;\n}\n\n/** Runs `start` unless the generation is already dead, and settles like its result only while\n * the generation is still alive; otherwise the returned promise never settles. */\nfunction fenced<T>(generation: Generation, start: () => PromiseLike<T> | T): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n if (!generation.alive) return; // never settles: already dead at call time.\n Promise.resolve(start()).then(\n (value) => {\n if (generation.alive) resolve(value); // else: never settles, dead before it settled.\n },\n (error: unknown) => {\n if (generation.alive) reject(error);\n },\n );\n });\n}\n\n/** Per-generation clock: `now()` stays live (harmless to read); `sleep()` is fenced. */\nfunction generationClock(shared: FakeClock, generation: Generation): Clock {\n return {\n now: () => shared.now(),\n sleep: (ms, signal) => fenced(generation, () => shared.sleep(ms, signal)),\n };\n}\n\n/** Body-reading methods fenced on a fetched Response (`bytes` only where the runtime\n * has it). `clone()` and `body` are fenced separately; everything else (status, ok, headers,\n * ...) passes straight through. */\nconst FENCED_RESPONSE_READERS = new Set([\n 'text',\n 'json',\n 'arrayBuffer',\n 'blob',\n 'bytes',\n 'formData',\n]);\n\n/**\n * A stand-in for `response.body` whose every chunk is pulled from the real body through\n * the fence, so a `read()` (via `getReader()`, async iteration, `pipeTo`, `tee`, ...) never\n * settles once the generation is dead. `highWaterMark: 0` means nothing is pulled — and the\n * real body isn't even locked — until a consumer actually reads, so merely touching `.body`\n * (e.g. `if (res.body) await res.text()`) still leaves the real body readable by `text()`.\n */\nfunction generationBody(\n body: ReadableStream<Uint8Array>,\n generation: Generation,\n): ReadableStream<Uint8Array> {\n let reader: ReadableStreamDefaultReader<Uint8Array> | undefined;\n return new ReadableStream<Uint8Array>(\n {\n pull: (controller) =>\n fenced(generation, () => (reader ??= body.getReader()).read()).then((chunk) => {\n if (chunk.done) controller.close();\n else controller.enqueue(chunk.value);\n }),\n cancel: (reason) => (reader ? reader.cancel(reason) : body.cancel(reason)),\n },\n { highWaterMark: 0 },\n );\n}\n\n/**\n * Wraps a fetched Response so reading its body is fenced too — once a generation is\n * dead, every body reader (`text()`, `json()`, `blob()`, ...), a read of the `body` stream,\n * and the same on any `clone()` of it (itself a fenced Response) must never settle either,\n * exactly like the fetch call that produced it (a caller may have obtained the Response while\n * still alive and only read its body afterwards). Every other property or method is bound to\n * the real `target` (never invoked through the Proxy itself), so a native accessor like\n * `.ok`/`.status` still sees a genuine `Response` as `this`.\n */\nfunction generationResponse(response: Response, generation: Generation): Response {\n let body: ReadableStream<Uint8Array> | null | undefined;\n return new Proxy(response, {\n get(target, prop) {\n if (prop === 'body') {\n // Memoized: like the real getter, every access returns the same stream.\n if (body === undefined)\n body = target.body === null ? null : generationBody(target.body, generation);\n return body;\n }\n const value: unknown = Reflect.get(target, prop); // no receiver: see generationProxy.\n if (typeof value !== 'function') return value;\n const bound = (value as (...args: unknown[]) => unknown).bind(target);\n if (prop === 'clone') return () => generationResponse(target.clone(), generation);\n if (typeof prop !== 'string' || !FENCED_RESPONSE_READERS.has(prop)) return bound;\n return (...args: unknown[]) => fenced(generation, () => bound(...args));\n },\n });\n}\n\n/** Per-generation fetch, fenced the same way as the clock; the Response it resolves with is\n * itself fenced, so a body read issued on it after the kill never settles either. */\nfunction generationFetch(shared: typeof fetch, generation: Generation): typeof fetch {\n return ((...args: Parameters<typeof fetch>) =>\n fenced(generation, () =>\n shared(...args).then((response) => generationResponse(response, generation)),\n )) as typeof fetch;\n}\n\ntype AsyncPortMethod =\n | keyof OperationStore\n | keyof LockManager\n | keyof SequenceStore\n | keyof CursorStore\n | Exclude<keyof Signer, 'id' | 'schemes'>;\n\n/**\n * Every async method of the `Stores` ports and of `Signer`. Exhaustive at compile time (a\n * port method added later fails the build until it's listed here), and independent of how an\n * implementation spells the method — a non-`async` function returning a Promise counts too.\n */\nconst ASYNC_PORT_METHODS: { readonly [K in AsyncPortMethod]: true } = {\n create: true,\n get: true,\n getByKey: true,\n findByRef: true,\n update: true,\n appendAttempt: true,\n getObservation: true,\n putObservation: true,\n claimDue: true,\n releaseClaim: true,\n list: true,\n purge: true,\n acquire: true,\n renew: true,\n release: true,\n put: true,\n getPublicKey: true,\n sign: true,\n cancelRequest: true,\n exportKey: true,\n};\n\n/**\n * Diagnostics that must keep working on a dead proxy (`JSON.stringify`, `util.inspect`).\n */\nconst PASSTHROUGH = new Set<PropertyKey>([\n 'toJSON',\n 'inspect',\n Symbol.for('nodejs.util.inspect.custom'),\n]);\n\nfunction isAsyncMethod(prop: PropertyKey, fn: unknown): boolean {\n return (\n (typeof prop === 'string' && Object.hasOwn(ASYNC_PORT_METHODS, prop)) ||\n Object.prototype.toString.call(fn) === '[object AsyncFunction]'\n );\n}\n\n/**\n * Wraps every method of `target` so a generation's death fences it, and generalizes the\n * old `generationStore` to any shared object with async methods (`Stores`, `Signer`). An async\n * method (a port method named in `ASYNC_PORT_METHODS`, or a native `async` function) is\n * fenced the way `sleep`/`fetch` are: once the generation is dead it never settles and never\n * throws, whether it was already in flight or is only called afterwards. A genuinely\n * synchronous method throws `StateError` when called on an already-dead generation — there's\n * no \"never resolve\" for a call that must return synchronously. `toJSON`/`inspect` pass\n * through unfenced.\n */\nfunction generationProxy<T extends object>(target: T, generation: Generation): T {\n // The Proxy wraps an empty, extensible stand-in, never `target` itself: a frozen target\n // (e.g. a `callbackSigner`) has non-configurable read-only properties, and the Proxy\n // invariants would then forbid returning the fenced wrapper instead of the real value.\n // Every read is forwarded to the real object; descriptors are reported configurable.\n // Writes are refused loudly: they would otherwise land silently on the stand-in.\n const refuse = (trap: string): never => {\n throw new TypeError(\n `crypto-aio/testing: '${trap}' is not supported on a fenced object`,\n );\n };\n return new Proxy({} as T, {\n set: () => refuse('set'),\n defineProperty: () => refuse('defineProperty'),\n deleteProperty: () => refuse('deleteProperty'),\n has: (_stand, prop) => Reflect.has(target, prop),\n ownKeys: () => Reflect.ownKeys(target),\n getPrototypeOf: () => Reflect.getPrototypeOf(target),\n getOwnPropertyDescriptor: (_stand, prop) => {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n return descriptor ? { ...descriptor, configurable: true } : undefined;\n },\n get(_stand, prop) {\n // No receiver, so a native/data getter runs with the real target as `this`.\n const value: unknown = Reflect.get(target, prop);\n if (typeof value !== 'function') return value;\n const fn = value as (...args: unknown[]) => unknown;\n if (PASSTHROUGH.has(prop)) return fn.bind(target);\n const isAsync = isAsyncMethod(prop, fn);\n return (...args: unknown[]) => {\n if (!generation.alive) {\n // A call issued once the generation is already dead never invokes the real method\n // (no side effect from a dead continuation). An async one just never settles; a\n // synchronous one can't be left \"hanging\", so it fails fast instead.\n if (isAsync) return new Promise(() => undefined);\n throw new StateError(\n 'INVALID_TRANSITION',\n 'crypto-aio/testing: this generation was killed by restart({ killPrevious: true })',\n );\n }\n const result = fn.apply(target, args);\n const thenable =\n typeof result === 'object' &&\n result !== null &&\n typeof (result as { then?: unknown }).then === 'function';\n if (!thenable) return result; // A synchronous result passes straight through.\n return fenced(generation, () => result as PromiseLike<unknown>);\n };\n },\n });\n}\n\nfunction generationStores(stores: Stores, generation: Generation): Stores {\n return {\n operations: generationProxy(stores.operations, generation),\n locks: generationProxy(stores.locks, generation),\n sequences: generationProxy(stores.sequences, generation),\n cursors: generationProxy(stores.cursors, generation),\n };\n}\n\n/** The shared signer (see the doc comment on `signers` in `assemble`, `env.ts` — it's\n * stateless and never rebuilt across generations) still has its `sign`/`getPublicKey` calls\n * fenced per generation, the same as any other in-flight call; the underlying `Signer`\n * instance is unchanged, just wrapped. */\nfunction generationSigner(shared: Signer, generation: Generation): Signer {\n return generationProxy(shared, generation);\n}\n\n/**\n * Fences one generation's view of the parts every generation shares. A family env builds\n * each container from the result, never from `parts` directly, and keeps `generation` so a\n * restart can kill it:\n *\n * ```ts\n * const generation = { alive: true };\n * const fenced = fenceGeneration(\n * { clock, fetch: node.fetch.fetch, stores, signers: { [signer.id]: signer } },\n * generation,\n * );\n * const aio = new CryptoAio({\n * clock: fenced.clock,\n * stores: fenced.stores,\n * signers: fenced.signers,\n * transport: { fetch: fenced.fetch },\n * // ...providers, wallets, chains\n * });\n * // restart({ killPrevious: true }): kill this generation, then fence a new one over the\n * // same parts (same clock, node, stores and signer objects).\n * generation.alive = false;\n * ```\n *\n * Once `generation.alive` is `false`, every clock sleep, fetch (and body read), store call\n * and signer call of this generation, in flight or issued later, never settles; a\n * synchronous port method throws `StateError`. `clock.now()` stays live. Keep the raw\n * `clock` for driving time (`drive`, `advance`, `pending`) and the raw `stores` for test\n * assertions: they belong to no generation.\n */\nexport function fenceGeneration(\n parts: {\n readonly clock: FakeClock;\n readonly fetch: typeof fetch;\n readonly stores: Stores;\n readonly signers: Readonly<Record<string, Signer>>;\n },\n generation: Generation,\n): {\n readonly clock: Clock;\n readonly fetch: typeof fetch;\n readonly stores: Stores;\n readonly signers: Readonly<Record<string, Signer>>;\n} {\n return {\n clock: generationClock(parts.clock, generation),\n fetch: generationFetch(parts.fetch, generation),\n stores: generationStores(parts.stores, generation),\n signers: Object.fromEntries(\n Object.entries(parts.signers).map(([id, signer]) => [\n id,\n generationSigner(signer, generation),\n ]),\n ),\n };\n}\n"]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `crypto-aio/testing`: a deterministic, network-free test kit (fake chain, fetch and clock,
3
+ * a crash-injecting store, a ready-made environment) and the store contract suites that any
4
+ * `OperationStore`, `LockManager`, `SequenceStore` or `CursorStore` implementation must pass.
5
+ *
6
+ * @module crypto-aio/testing
7
+ */
8
+ export { FakeClock, drive, settle } from './fake-clock';
9
+ export { FakeFetch, hang, rpcError, rpcResult } from './fake-fetch';
10
+ export type { FakeHandler, FakeReply, FakeRequest, RecordedCall } from './fake-fetch';
11
+ export { FakeChain, REVERT_ADDRESS, decodeEnvelope, encodeEnvelope, fakeAddress, fakeDigest, fakeTxId, isFakeAddress, signFake, } from './fake-chain';
12
+ export type { FakeChainOptions, FakeEndpointOptions, FakeEnvelope, FakeOrdering, FakeReceipt, FakeUnsigned, FakeWireBlock, FakeWireTx, } from './fake-chain';
13
+ export { fakeManifest, fakePlugin } from './fake-plugin';
14
+ export type { FakeExt, FakeNativeClient } from './fake-driver';
15
+ export { createFakeEnv } from './env';
16
+ export type { FakeChainId, FakeEnv, FakeEnvOptions } from './env';
17
+ export { CrashError, FaultyOperationStore } from './faulty-store';
18
+ export type { FaultPoint } from './faulty-store';
19
+ export { rejectsWithCode } from './contracts/api';
20
+ export type { ContractTestApi } from './contracts/api';
21
+ export { describeLockManagerContract } from './contracts/locks';
22
+ export type { LockHarness } from './contracts/locks';
23
+ export { describeSequenceStoreContract } from './contracts/sequences';
24
+ export type { SequenceHarness } from './contracts/sequences';
25
+ export { describeCursorStoreContract } from './contracts/cursors';
26
+ export type { CursorHarness } from './contracts/cursors';
27
+ export { SAMPLE_ORDERINGS, describeOperationStoreContract, sampleAttempt, sampleOperation, } from './contracts/operations';
28
+ export type { OperationHarness } from './contracts/operations';
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sampleOperation = exports.sampleAttempt = exports.describeOperationStoreContract = exports.SAMPLE_ORDERINGS = exports.describeCursorStoreContract = exports.describeSequenceStoreContract = exports.describeLockManagerContract = exports.rejectsWithCode = exports.FaultyOperationStore = exports.CrashError = exports.createFakeEnv = exports.fakePlugin = exports.fakeManifest = exports.signFake = exports.isFakeAddress = exports.fakeTxId = exports.fakeDigest = exports.fakeAddress = exports.encodeEnvelope = exports.decodeEnvelope = exports.REVERT_ADDRESS = exports.FakeChain = exports.rpcResult = exports.rpcError = exports.hang = exports.FakeFetch = exports.settle = exports.drive = exports.FakeClock = void 0;
4
+ /**
5
+ * `crypto-aio/testing`: a deterministic, network-free test kit (fake chain, fetch and clock,
6
+ * a crash-injecting store, a ready-made environment) and the store contract suites that any
7
+ * `OperationStore`, `LockManager`, `SequenceStore` or `CursorStore` implementation must pass.
8
+ *
9
+ * @module crypto-aio/testing
10
+ */
11
+ var fake_clock_1 = require("./fake-clock");
12
+ Object.defineProperty(exports, "FakeClock", { enumerable: true, get: function () { return fake_clock_1.FakeClock; } });
13
+ Object.defineProperty(exports, "drive", { enumerable: true, get: function () { return fake_clock_1.drive; } });
14
+ Object.defineProperty(exports, "settle", { enumerable: true, get: function () { return fake_clock_1.settle; } });
15
+ var fake_fetch_1 = require("./fake-fetch");
16
+ Object.defineProperty(exports, "FakeFetch", { enumerable: true, get: function () { return fake_fetch_1.FakeFetch; } });
17
+ Object.defineProperty(exports, "hang", { enumerable: true, get: function () { return fake_fetch_1.hang; } });
18
+ Object.defineProperty(exports, "rpcError", { enumerable: true, get: function () { return fake_fetch_1.rpcError; } });
19
+ Object.defineProperty(exports, "rpcResult", { enumerable: true, get: function () { return fake_fetch_1.rpcResult; } });
20
+ var fake_chain_1 = require("./fake-chain");
21
+ Object.defineProperty(exports, "FakeChain", { enumerable: true, get: function () { return fake_chain_1.FakeChain; } });
22
+ Object.defineProperty(exports, "REVERT_ADDRESS", { enumerable: true, get: function () { return fake_chain_1.REVERT_ADDRESS; } });
23
+ Object.defineProperty(exports, "decodeEnvelope", { enumerable: true, get: function () { return fake_chain_1.decodeEnvelope; } });
24
+ Object.defineProperty(exports, "encodeEnvelope", { enumerable: true, get: function () { return fake_chain_1.encodeEnvelope; } });
25
+ Object.defineProperty(exports, "fakeAddress", { enumerable: true, get: function () { return fake_chain_1.fakeAddress; } });
26
+ Object.defineProperty(exports, "fakeDigest", { enumerable: true, get: function () { return fake_chain_1.fakeDigest; } });
27
+ Object.defineProperty(exports, "fakeTxId", { enumerable: true, get: function () { return fake_chain_1.fakeTxId; } });
28
+ Object.defineProperty(exports, "isFakeAddress", { enumerable: true, get: function () { return fake_chain_1.isFakeAddress; } });
29
+ Object.defineProperty(exports, "signFake", { enumerable: true, get: function () { return fake_chain_1.signFake; } });
30
+ var fake_plugin_1 = require("./fake-plugin");
31
+ Object.defineProperty(exports, "fakeManifest", { enumerable: true, get: function () { return fake_plugin_1.fakeManifest; } });
32
+ Object.defineProperty(exports, "fakePlugin", { enumerable: true, get: function () { return fake_plugin_1.fakePlugin; } });
33
+ var env_1 = require("./env");
34
+ Object.defineProperty(exports, "createFakeEnv", { enumerable: true, get: function () { return env_1.createFakeEnv; } });
35
+ var faulty_store_1 = require("./faulty-store");
36
+ Object.defineProperty(exports, "CrashError", { enumerable: true, get: function () { return faulty_store_1.CrashError; } });
37
+ Object.defineProperty(exports, "FaultyOperationStore", { enumerable: true, get: function () { return faulty_store_1.FaultyOperationStore; } });
38
+ var api_1 = require("./contracts/api");
39
+ Object.defineProperty(exports, "rejectsWithCode", { enumerable: true, get: function () { return api_1.rejectsWithCode; } });
40
+ var locks_1 = require("./contracts/locks");
41
+ Object.defineProperty(exports, "describeLockManagerContract", { enumerable: true, get: function () { return locks_1.describeLockManagerContract; } });
42
+ var sequences_1 = require("./contracts/sequences");
43
+ Object.defineProperty(exports, "describeSequenceStoreContract", { enumerable: true, get: function () { return sequences_1.describeSequenceStoreContract; } });
44
+ var cursors_1 = require("./contracts/cursors");
45
+ Object.defineProperty(exports, "describeCursorStoreContract", { enumerable: true, get: function () { return cursors_1.describeCursorStoreContract; } });
46
+ var operations_1 = require("./contracts/operations");
47
+ Object.defineProperty(exports, "SAMPLE_ORDERINGS", { enumerable: true, get: function () { return operations_1.SAMPLE_ORDERINGS; } });
48
+ Object.defineProperty(exports, "describeOperationStoreContract", { enumerable: true, get: function () { return operations_1.describeOperationStoreContract; } });
49
+ Object.defineProperty(exports, "sampleAttempt", { enumerable: true, get: function () { return operations_1.sampleAttempt; } });
50
+ Object.defineProperty(exports, "sampleOperation", { enumerable: true, get: function () { return operations_1.sampleOperation; } });
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,2CAAwD;AAA/C,uGAAA,SAAS,OAAA;AAAE,mGAAA,KAAK,OAAA;AAAE,oGAAA,MAAM,OAAA;AACjC,2CAAoE;AAA3D,uGAAA,SAAS,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAAE,uGAAA,SAAS,OAAA;AAE7C,2CAUsB;AATpB,uGAAA,SAAS,OAAA;AACT,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,yGAAA,WAAW,OAAA;AACX,wGAAA,UAAU,OAAA;AACV,sGAAA,QAAQ,OAAA;AACR,2GAAA,aAAa,OAAA;AACb,sGAAA,QAAQ,OAAA;AAYV,6CAAyD;AAAhD,2GAAA,YAAY,OAAA;AAAE,yGAAA,UAAU,OAAA;AAEjC,6BAAsC;AAA7B,oGAAA,aAAa,OAAA;AAEtB,+CAAkE;AAAzD,0GAAA,UAAU,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AAEzC,uCAAkD;AAAzC,sGAAA,eAAe,OAAA;AAExB,2CAAgE;AAAvD,oHAAA,2BAA2B,OAAA;AAEpC,mDAAsE;AAA7D,0HAAA,6BAA6B,OAAA;AAEtC,+CAAkE;AAAzD,sHAAA,2BAA2B,OAAA;AAEpC,qDAKgC;AAJ9B,8GAAA,gBAAgB,OAAA;AAChB,4HAAA,8BAA8B,OAAA;AAC9B,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA","sourcesContent":["/**\n * `crypto-aio/testing`: a deterministic, network-free test kit (fake chain, fetch and clock,\n * a crash-injecting store, a ready-made environment) and the store contract suites that any\n * `OperationStore`, `LockManager`, `SequenceStore` or `CursorStore` implementation must pass.\n *\n * @module crypto-aio/testing\n */\nexport { FakeClock, drive, settle } from './fake-clock';\nexport { FakeFetch, hang, rpcError, rpcResult } from './fake-fetch';\nexport type { FakeHandler, FakeReply, FakeRequest, RecordedCall } from './fake-fetch';\nexport {\n FakeChain,\n REVERT_ADDRESS,\n decodeEnvelope,\n encodeEnvelope,\n fakeAddress,\n fakeDigest,\n fakeTxId,\n isFakeAddress,\n signFake,\n} from './fake-chain';\nexport type {\n FakeChainOptions,\n FakeEndpointOptions,\n FakeEnvelope,\n FakeOrdering,\n FakeReceipt,\n FakeUnsigned,\n FakeWireBlock,\n FakeWireTx,\n} from './fake-chain';\nexport { fakeManifest, fakePlugin } from './fake-plugin';\nexport type { FakeExt, FakeNativeClient } from './fake-driver';\nexport { createFakeEnv } from './env';\nexport type { FakeChainId, FakeEnv, FakeEnvOptions } from './env';\nexport { CrashError, FaultyOperationStore } from './faulty-store';\nexport type { FaultPoint } from './faulty-store';\nexport { rejectsWithCode } from './contracts/api';\nexport type { ContractTestApi } from './contracts/api';\nexport { describeLockManagerContract } from './contracts/locks';\nexport type { LockHarness } from './contracts/locks';\nexport { describeSequenceStoreContract } from './contracts/sequences';\nexport type { SequenceHarness } from './contracts/sequences';\nexport { describeCursorStoreContract } from './contracts/cursors';\nexport type { CursorHarness } from './contracts/cursors';\nexport {\n SAMPLE_ORDERINGS,\n describeOperationStoreContract,\n sampleAttempt,\n sampleOperation,\n} from './contracts/operations';\nexport type { OperationHarness } from './contracts/operations';\n"]}
package/package.json CHANGED
@@ -1,70 +1,213 @@
1
1
  {
2
2
  "name": "crypto-aio",
3
- "version": "0.0.3",
4
- "description": "All-In-One Crypto-Currency for Backend",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "debug": "jest --watch",
9
- "prebuild": "rimraf dist",
10
- "doc": "typedoc --out docs src/",
11
- "build": "tsc -p ./tsconfig.json",
12
- "clean": "rm -rf ./dist && rm -rf ./docs",
13
- "lint": "eslint . '*/**/*.{js,ts}' --quiet --fix",
14
- "fresh": "npm run clean && npm run doc && npm run test",
15
- "format": "prettier --write \"(src|test)/**/*.(ts|js)\"",
16
- "start:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register src/index.ts",
17
- "test": "jest && make-coverage-badge --report-path docs/coverage/coverage-summary.json --output-path docs/coverage.svg"
18
- },
3
+ "version": "0.1.0",
4
+ "description": "Blockchain abstraction layer for exchanges, wallets and payment infrastructure: one consistent API over EVM, Tron, Bitcoin, Solana, TON and Avalanche SDKs",
5
+ "license": "MIT",
6
+ "author": "Vahid V. <vhid.vz@gmail.com>",
19
7
  "repository": {
20
8
  "type": "git",
21
9
  "url": "git+https://github.com/vhidvz/crypto-aio.git"
22
10
  },
23
- "author": "Vahid V. <vhid.vz@gmail.com>",
24
- "license": "MIT",
25
11
  "bugs": {
26
12
  "url": "https://github.com/vhidvz/crypto-aio/issues"
27
13
  },
28
14
  "keywords": [
29
- "bitcoin",
15
+ "blockchain",
16
+ "crypto",
17
+ "exchange",
18
+ "wallet",
30
19
  "ethereum",
31
- "solana",
20
+ "bitcoin",
32
21
  "tron",
33
- "ton"
22
+ "solana",
23
+ "ton",
24
+ "avalanche",
25
+ "evm"
34
26
  ],
35
27
  "homepage": "https://github.com/vhidvz/crypto-aio#readme",
28
+ "main": "dist/index.js",
29
+ "types": "dist/index.d.ts",
30
+ "scripts": {
31
+ "build": "rimraf dist && tsc -p tsconfig.build.json",
32
+ "typecheck": "tsc -p tsconfig.json --noEmit",
33
+ "lint": "eslint .",
34
+ "prepare": "echo -e prepare for development by: pnpm run husky",
35
+ "format": "prettier --write \"{src,test}/**/*.ts\" \"*.{js,mjs}\" \"scripts/*.mjs\" \"docs/.vitepress/**/*.{mts,ts,vue,css}\"",
36
+ "format:check": "prettier --check \"{src,test}/**/*.ts\" \"*.{js,mjs}\" \"scripts/*.mjs\" \"docs/.vitepress/**/*.{mts,ts,vue,css}\"",
37
+ "test": "jest",
38
+ "husky": "husky",
39
+ "test:coverage": "jest --coverage && pnpm run make-coverage-badge",
40
+ "test:pack": "pnpm run build && node scripts/pack-check.mjs",
41
+ "doc": "typedoc",
42
+ "docs:dev": "pnpm doc && vitepress dev docs",
43
+ "docs:build": "pnpm doc && vitepress build docs",
44
+ "docs:preview": "vitepress preview docs",
45
+ "check": "pnpm run lint && pnpm run typecheck && pnpm test",
46
+ "make-coverage-badge": "make-coverage-badge --report-path coverage/coverage-summary.json --output-path coverage-badge.svg"
47
+ },
48
+ "lint-staged": {
49
+ "*.ts": [
50
+ "pnpm run format",
51
+ "pnpm run lint"
52
+ ]
53
+ },
36
54
  "dependencies": {
37
- "debug": "^4.3.7",
38
- "ethers": "^6.13.4",
39
- "tronweb": "^6.0.0",
40
- "web3": "^4.14.0"
55
+ "@noble/curves": "^1.9.7",
56
+ "@noble/hashes": "^1.8.0",
57
+ "@scure/base": "^1.2.6",
58
+ "@scure/bip32": "^1.7.0",
59
+ "@scure/bip39": "^1.6.0",
60
+ "debug": "^4.4.3"
41
61
  },
42
62
  "devDependencies": {
43
- "@types/debug": "^4.1.12",
44
- "@types/jest": "^29.5.12",
45
- "@types/node": "^20.12.11",
46
- "@typescript-eslint/eslint-plugin": "^7.8.0",
47
- "@typescript-eslint/parser": "^7.8.0",
48
- "dotenv": "^16.4.5",
49
- "eslint": "^8.57.0",
50
- "eslint-config-prettier": "^9.1.0",
51
- "eslint-plugin-prettier": "^5.1.3",
52
- "jest": "^29.7.0",
53
- "jshint": "^2.13.6",
63
+ "@avalabs/avalanchejs": "5.2.0",
64
+ "@eslint/js": "^9.39.5",
65
+ "@solana/web3.js": "1.99.0",
66
+ "@ton/core": "0.63.1",
67
+ "@ton/crypto": "3.3.0",
68
+ "@ton/ton": "16.3.0",
69
+ "@types/debug": "^4.1.13",
70
+ "@types/jest": "^30.0.0",
71
+ "@types/node": "^22.20.4",
72
+ "bitcoinjs-lib": "7.0.2",
73
+ "eslint": "^9.39.5",
74
+ "eslint-config-prettier": "^10.1.8",
75
+ "eslint-plugin-prettier": "^5.5.6",
76
+ "ethers": "6.17.0",
77
+ "husky": "^9.1.7",
78
+ "jest": "^30.5.2",
79
+ "lint-staged": "^17.6.0",
54
80
  "make-coverage-badge": "^1.2.0",
55
- "prettier": "^3.2.5",
56
- "rimraf": "^5.0.5",
57
- "ts-jest": "^29.1.2",
58
- "ts-node": "^10.9.2",
59
- "tsconfig-paths": "^4.2.0",
60
- "typedoc": "^0.25.13",
61
- "typescript": "^5.4.5"
81
+ "mermaid": "^11.17.2",
82
+ "prettier": "^3.9.8",
83
+ "rimraf": "^6.1.3",
84
+ "tronweb": "6.5.1",
85
+ "ts-jest": "29.4.12",
86
+ "typedoc": "^0.28.20",
87
+ "typedoc-plugin-markdown": "^4.13.1",
88
+ "typescript": "5.9.3",
89
+ "typescript-eslint": "^8.70.1",
90
+ "vitepress": "^1.6.4",
91
+ "web3": "4.16.0"
92
+ },
93
+ "peerDependencies": {
94
+ "@avalabs/avalanchejs": "^5.2.0",
95
+ "@solana/web3.js": "^1.99.0",
96
+ "@ton/core": "^0.63.1",
97
+ "@ton/crypto": "^3.3.0",
98
+ "@ton/ton": "^16.3.0",
99
+ "bitcoinjs-lib": "^7.0.2",
100
+ "ethers": "^6.17.0",
101
+ "tronweb": "^6.5.1",
102
+ "web3": "^4.16.0"
103
+ },
104
+ "peerDependenciesMeta": {
105
+ "@avalabs/avalanchejs": {
106
+ "optional": true
107
+ },
108
+ "@solana/web3.js": {
109
+ "optional": true
110
+ },
111
+ "@ton/core": {
112
+ "optional": true
113
+ },
114
+ "@ton/crypto": {
115
+ "optional": true
116
+ },
117
+ "@ton/ton": {
118
+ "optional": true
119
+ },
120
+ "bitcoinjs-lib": {
121
+ "optional": true
122
+ },
123
+ "ethers": {
124
+ "optional": true
125
+ },
126
+ "tronweb": {
127
+ "optional": true
128
+ },
129
+ "web3": {
130
+ "optional": true
131
+ }
62
132
  },
63
133
  "publishConfig": {
64
134
  "access": "public",
65
135
  "registry": "https://registry.npmjs.org/"
66
136
  },
67
137
  "files": [
68
- "/dist"
69
- ]
138
+ "dist",
139
+ "CHANGELOG.md"
140
+ ],
141
+ "exports": {
142
+ ".": {
143
+ "types": "./dist/index.d.ts",
144
+ "default": "./dist/index.js"
145
+ },
146
+ "./avalanche": {
147
+ "types": "./dist/adapters/avalanche/index.d.ts",
148
+ "default": "./dist/adapters/avalanche/index.js"
149
+ },
150
+ "./evm": {
151
+ "types": "./dist/adapters/evm/index.d.ts",
152
+ "default": "./dist/adapters/evm/index.js"
153
+ },
154
+ "./native": {
155
+ "types": "./dist/native.d.ts",
156
+ "default": "./dist/native.js"
157
+ },
158
+ "./solana": {
159
+ "types": "./dist/adapters/solana/index.d.ts",
160
+ "default": "./dist/adapters/solana/index.js"
161
+ },
162
+ "./testing": {
163
+ "types": "./dist/testing/index.d.ts",
164
+ "default": "./dist/testing/index.js"
165
+ },
166
+ "./ton": {
167
+ "types": "./dist/adapters/ton/index.d.ts",
168
+ "default": "./dist/adapters/ton/index.js"
169
+ },
170
+ "./tron": {
171
+ "types": "./dist/adapters/tron/index.d.ts",
172
+ "default": "./dist/adapters/tron/index.js"
173
+ },
174
+ "./utxo": {
175
+ "types": "./dist/adapters/utxo/index.d.ts",
176
+ "default": "./dist/adapters/utxo/index.js"
177
+ },
178
+ "./package.json": "./package.json"
179
+ },
180
+ "typesVersions": {
181
+ "*": {
182
+ "avalanche": [
183
+ "dist/adapters/avalanche/index.d.ts"
184
+ ],
185
+ "evm": [
186
+ "dist/adapters/evm/index.d.ts"
187
+ ],
188
+ "native": [
189
+ "dist/native.d.ts"
190
+ ],
191
+ "solana": [
192
+ "dist/adapters/solana/index.d.ts"
193
+ ],
194
+ "testing": [
195
+ "dist/testing/index.d.ts"
196
+ ],
197
+ "ton": [
198
+ "dist/adapters/ton/index.d.ts"
199
+ ],
200
+ "tron": [
201
+ "dist/adapters/tron/index.d.ts"
202
+ ],
203
+ "utxo": [
204
+ "dist/adapters/utxo/index.d.ts"
205
+ ]
206
+ }
207
+ },
208
+ "engines": {
209
+ "node": ">=22.x.x <28",
210
+ "npm": "~10.9.2"
211
+ },
212
+ "packageManager": "pnpm@10.5.2"
70
213
  }