@algorandfoundation/algokit-utils 9.2.0 → 9.2.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/_virtual/_rolldown/runtime.js +33 -0
  2. package/_virtual/_rolldown/runtime.mjs +13 -0
  3. package/account/account.d.ts +25 -30
  4. package/account/account.js +151 -146
  5. package/account/account.js.map +1 -1
  6. package/account/account.mjs +149 -144
  7. package/account/account.mjs.map +1 -1
  8. package/account/get-account-config-from-environment.d.ts +7 -2
  9. package/account/get-account-config-from-environment.js +19 -21
  10. package/account/get-account-config-from-environment.js.map +1 -1
  11. package/account/get-account-config-from-environment.mjs +19 -19
  12. package/account/get-account-config-from-environment.mjs.map +1 -1
  13. package/account/get-account.d.ts +14 -12
  14. package/account/get-account.js +56 -59
  15. package/account/get-account.js.map +1 -1
  16. package/account/get-account.mjs +56 -57
  17. package/account/get-account.mjs.map +1 -1
  18. package/account/get-dispenser-account.d.ts +9 -5
  19. package/account/get-dispenser-account.js +20 -18
  20. package/account/get-dispenser-account.js.map +1 -1
  21. package/account/get-dispenser-account.mjs +20 -16
  22. package/account/get-dispenser-account.mjs.map +1 -1
  23. package/account/mnemonic-account.d.ts +7 -3
  24. package/account/mnemonic-account.js +17 -17
  25. package/account/mnemonic-account.js.map +1 -1
  26. package/account/mnemonic-account.mjs +15 -15
  27. package/account/mnemonic-account.mjs.map +1 -1
  28. package/amount.d.ts +40 -35
  29. package/amount.js +33 -34
  30. package/amount.js.map +1 -1
  31. package/amount.mjs +33 -32
  32. package/amount.mjs.map +1 -1
  33. package/app-client.d.ts +10 -6
  34. package/app-client.js +91 -86
  35. package/app-client.js.map +1 -1
  36. package/app-client.mjs +91 -84
  37. package/app-client.mjs.map +1 -1
  38. package/app-deploy.d.ts +26 -24
  39. package/app-deploy.js +235 -253
  40. package/app-deploy.js.map +1 -1
  41. package/app-deploy.mjs +233 -251
  42. package/app-deploy.mjs.map +1 -1
  43. package/app.d.ts +45 -46
  44. package/app.js +253 -271
  45. package/app.js.map +1 -1
  46. package/app.mjs +249 -267
  47. package/app.mjs.map +1 -1
  48. package/asset.d.ts +16 -12
  49. package/asset.js +116 -122
  50. package/asset.js.map +1 -1
  51. package/asset.mjs +116 -120
  52. package/asset.mjs.map +1 -1
  53. package/config.d.ts +7 -2
  54. package/config.js +5 -7
  55. package/config.js.map +1 -1
  56. package/config.mjs +5 -4
  57. package/config.mjs.map +1 -1
  58. package/debugging/debugging.d.ts +5 -1
  59. package/debugging/debugging.js +11 -11
  60. package/debugging/debugging.js.map +1 -1
  61. package/debugging/debugging.mjs +11 -9
  62. package/debugging/debugging.mjs.map +1 -1
  63. package/dispenser-client.d.ts +7 -2
  64. package/dispenser-client.js +23 -24
  65. package/dispenser-client.js.map +1 -1
  66. package/dispenser-client.mjs +23 -22
  67. package/dispenser-client.mjs.map +1 -1
  68. package/index.d.ts +27 -18
  69. package/index.js +140 -143
  70. package/index.mjs +27 -29
  71. package/indexer-lookup.d.ts +18 -11
  72. package/indexer-lookup.js +112 -120
  73. package/indexer-lookup.js.map +1 -1
  74. package/indexer-lookup.mjs +105 -118
  75. package/indexer-lookup.mjs.map +1 -1
  76. package/localnet/get-kmd-wallet-account.d.ts +9 -7
  77. package/localnet/get-kmd-wallet-account.js +28 -26
  78. package/localnet/get-kmd-wallet-account.js.map +1 -1
  79. package/localnet/get-kmd-wallet-account.mjs +28 -24
  80. package/localnet/get-kmd-wallet-account.mjs.map +1 -1
  81. package/localnet/get-localnet-dispenser-account.d.ts +7 -5
  82. package/localnet/get-localnet-dispenser-account.js +17 -15
  83. package/localnet/get-localnet-dispenser-account.js.map +1 -1
  84. package/localnet/get-localnet-dispenser-account.mjs +17 -13
  85. package/localnet/get-localnet-dispenser-account.mjs.map +1 -1
  86. package/localnet/get-or-create-kmd-wallet-account.d.ts +10 -8
  87. package/localnet/get-or-create-kmd-wallet-account.js +28 -26
  88. package/localnet/get-or-create-kmd-wallet-account.js.map +1 -1
  89. package/localnet/get-or-create-kmd-wallet-account.mjs +28 -24
  90. package/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -1
  91. package/localnet/is-localnet.d.ts +7 -3
  92. package/localnet/is-localnet.js +9 -10
  93. package/localnet/is-localnet.js.map +1 -1
  94. package/localnet/is-localnet.mjs +9 -8
  95. package/localnet/is-localnet.mjs.map +1 -1
  96. package/network-client.d.ts +17 -15
  97. package/network-client.js +115 -116
  98. package/network-client.js.map +1 -1
  99. package/network-client.mjs +115 -114
  100. package/network-client.mjs.map +1 -1
  101. package/package.json +12 -3
  102. package/testing/account.d.ts +11 -9
  103. package/testing/account.js +31 -33
  104. package/testing/account.js.map +1 -1
  105. package/testing/account.mjs +29 -31
  106. package/testing/account.mjs.map +1 -1
  107. package/testing/fixtures/algokit-log-capture-fixture.d.ts +7 -2
  108. package/testing/fixtures/algokit-log-capture-fixture.js +36 -41
  109. package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -1
  110. package/testing/fixtures/algokit-log-capture-fixture.mjs +36 -39
  111. package/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -1
  112. package/testing/fixtures/algorand-fixture.d.ts +9 -4
  113. package/testing/fixtures/algorand-fixture.js +67 -62
  114. package/testing/fixtures/algorand-fixture.js.map +1 -1
  115. package/testing/fixtures/algorand-fixture.mjs +66 -59
  116. package/testing/fixtures/algorand-fixture.mjs.map +1 -1
  117. package/testing/index.d.ts +7 -5
  118. package/testing/index.js +13 -18
  119. package/testing/index.mjs +7 -7
  120. package/testing/indexer.d.ts +5 -1
  121. package/testing/indexer.js +28 -37
  122. package/testing/indexer.js.map +1 -1
  123. package/testing/indexer.mjs +28 -35
  124. package/testing/indexer.mjs.map +1 -1
  125. package/testing/test-logger.d.ts +41 -36
  126. package/testing/test-logger.js +71 -76
  127. package/testing/test-logger.js.map +1 -1
  128. package/testing/test-logger.mjs +71 -74
  129. package/testing/test-logger.mjs.map +1 -1
  130. package/testing/transaction-logger.d.ts +30 -27
  131. package/testing/transaction-logger.js +77 -93
  132. package/testing/transaction-logger.js.map +1 -1
  133. package/testing/transaction-logger.mjs +74 -90
  134. package/testing/transaction-logger.mjs.map +1 -1
  135. package/transaction/legacy-bridge.js +100 -111
  136. package/transaction/legacy-bridge.js.map +1 -1
  137. package/transaction/legacy-bridge.mjs +97 -108
  138. package/transaction/legacy-bridge.mjs.map +1 -1
  139. package/transaction/perform-atomic-transaction-composer-simulate.d.ts +7 -5
  140. package/transaction/perform-atomic-transaction-composer-simulate.js +31 -36
  141. package/transaction/perform-atomic-transaction-composer-simulate.js.map +1 -1
  142. package/transaction/perform-atomic-transaction-composer-simulate.mjs +28 -33
  143. package/transaction/perform-atomic-transaction-composer-simulate.mjs.map +1 -1
  144. package/transaction/transaction.d.ts +34 -35
  145. package/transaction/transaction.js +716 -914
  146. package/transaction/transaction.js.map +1 -1
  147. package/transaction/transaction.mjs +713 -911
  148. package/transaction/transaction.mjs.map +1 -1
  149. package/transfer/transfer-algos.d.ts +9 -5
  150. package/transfer/transfer-algos.js +26 -27
  151. package/transfer/transfer-algos.js.map +1 -1
  152. package/transfer/transfer-algos.mjs +26 -25
  153. package/transfer/transfer-algos.mjs.map +1 -1
  154. package/transfer/transfer.d.ts +11 -8
  155. package/transfer/transfer.js +94 -100
  156. package/transfer/transfer.js.map +1 -1
  157. package/transfer/transfer.mjs +94 -98
  158. package/transfer/transfer.mjs.map +1 -1
  159. package/types/account-manager.d.ts +432 -429
  160. package/types/account-manager.js +591 -602
  161. package/types/account-manager.js.map +1 -1
  162. package/types/account-manager.mjs +587 -599
  163. package/types/account-manager.mjs.map +1 -1
  164. package/types/account.d.ts +192 -202
  165. package/types/account.js +91 -88
  166. package/types/account.js.map +1 -1
  167. package/types/account.mjs +88 -86
  168. package/types/account.mjs.map +1 -1
  169. package/types/algo-http-client-with-retry.d.ts +15 -10
  170. package/types/algo-http-client-with-retry.js +70 -92
  171. package/types/algo-http-client-with-retry.js.map +1 -1
  172. package/types/algo-http-client-with-retry.mjs +69 -90
  173. package/types/algo-http-client-with-retry.mjs.map +1 -1
  174. package/types/algorand-client-transaction-creator.d.ts +778 -771
  175. package/types/algorand-client-transaction-creator.js +733 -732
  176. package/types/algorand-client-transaction-creator.js.map +1 -1
  177. package/types/algorand-client-transaction-creator.mjs +732 -730
  178. package/types/algorand-client-transaction-creator.mjs.map +1 -1
  179. package/types/algorand-client-transaction-sender.d.ts +1090 -1360
  180. package/types/algorand-client-transaction-sender.js +930 -961
  181. package/types/algorand-client-transaction-sender.js.map +1 -1
  182. package/types/algorand-client-transaction-sender.mjs +927 -959
  183. package/types/algorand-client-transaction-sender.mjs.map +1 -1
  184. package/types/algorand-client.d.ts +239 -236
  185. package/types/algorand-client.js +322 -320
  186. package/types/algorand-client.js.map +1 -1
  187. package/types/algorand-client.mjs +321 -318
  188. package/types/algorand-client.mjs.map +1 -1
  189. package/types/amount.d.ts +47 -43
  190. package/types/amount.js +66 -70
  191. package/types/amount.js.map +1 -1
  192. package/types/amount.mjs +63 -68
  193. package/types/amount.mjs.map +1 -1
  194. package/types/app-arc56.d.ts +235 -272
  195. package/types/app-arc56.js +124 -170
  196. package/types/app-arc56.js.map +1 -1
  197. package/types/app-arc56.mjs +121 -168
  198. package/types/app-arc56.mjs.map +1 -1
  199. package/types/app-client.d.ts +1128 -2009
  200. package/types/app-client.js +1633 -1791
  201. package/types/app-client.js.map +1 -1
  202. package/types/app-client.mjs +1624 -1783
  203. package/types/app-client.mjs.map +1 -1
  204. package/types/app-deployer.d.ts +139 -141
  205. package/types/app-deployer.js +344 -384
  206. package/types/app-deployer.js.map +1 -1
  207. package/types/app-deployer.mjs +341 -382
  208. package/types/app-deployer.mjs.map +1 -1
  209. package/types/app-factory.d.ts +762 -932
  210. package/types/app-factory.js +496 -488
  211. package/types/app-factory.js.map +1 -1
  212. package/types/app-factory.mjs +491 -484
  213. package/types/app-factory.mjs.map +1 -1
  214. package/types/app-manager.d.ts +304 -310
  215. package/types/app-manager.js +422 -475
  216. package/types/app-manager.js.map +1 -1
  217. package/types/app-manager.mjs +419 -473
  218. package/types/app-manager.mjs.map +1 -1
  219. package/types/app-spec.d.ts +118 -117
  220. package/types/app-spec.js +125 -135
  221. package/types/app-spec.js.map +1 -1
  222. package/types/app-spec.mjs +121 -132
  223. package/types/app-spec.mjs.map +1 -1
  224. package/types/app.d.ts +229 -241
  225. package/types/app.js +36 -28
  226. package/types/app.js.map +1 -1
  227. package/types/app.mjs +33 -26
  228. package/types/app.mjs.map +1 -1
  229. package/types/asset-manager.d.ts +204 -199
  230. package/types/asset-manager.js +165 -174
  231. package/types/asset-manager.js.map +1 -1
  232. package/types/asset-manager.mjs +164 -172
  233. package/types/asset-manager.mjs.map +1 -1
  234. package/types/asset.d.ts +95 -91
  235. package/types/asset.js +0 -3
  236. package/types/asset.mjs +0 -2
  237. package/types/async-event-emitter.d.ts +18 -13
  238. package/types/async-event-emitter.js +37 -49
  239. package/types/async-event-emitter.js.map +1 -1
  240. package/types/async-event-emitter.mjs +36 -47
  241. package/types/async-event-emitter.mjs.map +1 -1
  242. package/types/client-manager.d.ts +453 -451
  243. package/types/client-manager.js +602 -598
  244. package/types/client-manager.js.map +1 -1
  245. package/types/client-manager.mjs +597 -594
  246. package/types/client-manager.mjs.map +1 -1
  247. package/types/composer.d.ts +1211 -1258
  248. package/types/composer.js +1436 -1498
  249. package/types/composer.js.map +1 -1
  250. package/types/composer.mjs +1430 -1493
  251. package/types/composer.mjs.map +1 -1
  252. package/types/config.d.ts +53 -48
  253. package/types/config.js +78 -77
  254. package/types/config.js.map +1 -1
  255. package/types/config.mjs +77 -75
  256. package/types/config.mjs.map +1 -1
  257. package/types/debugging.d.ts +25 -23
  258. package/types/debugging.js +9 -11
  259. package/types/debugging.js.map +1 -1
  260. package/types/debugging.mjs +8 -9
  261. package/types/debugging.mjs.map +1 -1
  262. package/types/dispenser-client.d.ts +57 -52
  263. package/types/dispenser-client.js +120 -141
  264. package/types/dispenser-client.js.map +1 -1
  265. package/types/dispenser-client.mjs +119 -139
  266. package/types/dispenser-client.mjs.map +1 -1
  267. package/types/expand.d.ts +5 -3
  268. package/types/expand.js +0 -3
  269. package/types/expand.mjs +0 -2
  270. package/types/indexer.d.ts +104 -100
  271. package/types/indexer.js +36 -31
  272. package/types/indexer.js.map +1 -1
  273. package/types/indexer.mjs +32 -30
  274. package/types/indexer.mjs.map +1 -1
  275. package/types/instance-of.d.ts +5 -3
  276. package/types/instance-of.js +0 -3
  277. package/types/instance-of.mjs +0 -2
  278. package/types/kmd-account-manager.d.ts +75 -70
  279. package/types/kmd-account-manager.js +150 -184
  280. package/types/kmd-account-manager.js.map +1 -1
  281. package/types/kmd-account-manager.mjs +147 -182
  282. package/types/kmd-account-manager.mjs.map +1 -1
  283. package/types/lifecycle-events.d.ts +13 -8
  284. package/types/lifecycle-events.js +10 -7
  285. package/types/lifecycle-events.js.map +1 -1
  286. package/types/lifecycle-events.mjs +9 -7
  287. package/types/lifecycle-events.mjs.map +1 -1
  288. package/types/logging.d.ts +15 -11
  289. package/types/logging.js +30 -31
  290. package/types/logging.js.map +1 -1
  291. package/types/logging.mjs +29 -29
  292. package/types/logging.mjs.map +1 -1
  293. package/types/logic-error.d.ts +33 -29
  294. package/types/logic-error.js +50 -49
  295. package/types/logic-error.js.map +1 -1
  296. package/types/logic-error.mjs +49 -47
  297. package/types/logic-error.mjs.map +1 -1
  298. package/types/network-client.d.ts +32 -27
  299. package/types/network-client.js +10 -9
  300. package/types/network-client.js.map +1 -1
  301. package/types/network-client.mjs +9 -7
  302. package/types/network-client.mjs.map +1 -1
  303. package/types/testing.d.ts +131 -132
  304. package/types/testing.js +0 -3
  305. package/types/testing.mjs +0 -2
  306. package/types/transaction.d.ts +110 -110
  307. package/types/transaction.js +0 -3
  308. package/types/transaction.mjs +0 -2
  309. package/types/transfer.d.ts +70 -66
  310. package/types/transfer.js +0 -3
  311. package/types/transfer.mjs +0 -2
  312. package/util.js +73 -118
  313. package/util.js.map +1 -1
  314. package/util.mjs +73 -116
  315. package/util.mjs.map +1 -1
  316. package/account/index.d.ts +0 -5
  317. package/debugging/index.d.ts +0 -1
  318. package/index.js.map +0 -1
  319. package/index.mjs.map +0 -1
  320. package/localnet/index.d.ts +0 -4
  321. package/testing/_asset.d.ts +0 -3
  322. package/testing/fixtures/index.d.ts +0 -2
  323. package/testing/index.js.map +0 -1
  324. package/testing/index.mjs.map +0 -1
  325. package/transaction/index.d.ts +0 -2
  326. package/transaction/legacy-bridge.d.ts +0 -35
  327. package/transfer/index.d.ts +0 -2
  328. package/types/asset.js.map +0 -1
  329. package/types/asset.mjs.map +0 -1
  330. package/types/expand.js.map +0 -1
  331. package/types/expand.mjs.map +0 -1
  332. package/types/instance-of.js.map +0 -1
  333. package/types/instance-of.mjs.map +0 -1
  334. package/types/testing.js.map +0 -1
  335. package/types/testing.mjs.map +0 -1
  336. package/types/transaction.js.map +0 -1
  337. package/types/transaction.mjs.map +0 -1
  338. package/types/transfer.js.map +0 -1
  339. package/types/transfer.mjs.map +0 -1
  340. package/util.d.ts +0 -48
@@ -1,95 +1,79 @@
1
- 'use strict';
2
-
3
- var algosdk = require('algosdk');
4
- var config = require('../config.js');
5
- var indexer = require('./indexer.js');
6
-
7
- var decodeSignedTransaction = algosdk.decodeSignedTransaction;
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.js");
2
+ const require_config = require("../config.js");
3
+ const require_indexer = require("./indexer.js");
4
+ let algosdk = require("algosdk");
5
+ algosdk = require_runtime.__toESM(algosdk);
6
+ //#region src/testing/transaction-logger.ts
7
+ var decodeSignedTransaction = algosdk.default.decodeSignedTransaction;
8
8
  /**
9
- * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.
10
- * Useful for automated tests.
11
- */
12
- class TransactionLogger {
13
- constructor() {
14
- this._sentTransactionIds = [];
15
- }
16
- _pushTxn(stxn) {
17
- const decoded = decodeSignedTransaction(stxn);
18
- if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) {
19
- this._latestLastValidRound = BigInt(decoded.txn.lastValid);
20
- }
21
- this._sentTransactionIds.push(decoded.txn.txID());
22
- }
23
- /**
24
- * The list of transaction IDs that has been logged thus far.
25
- */
26
- get sentTransactionIds() {
27
- return this._sentTransactionIds;
28
- }
29
- /**
30
- * Clear all logged IDs.
31
- */
32
- clear() {
33
- this._sentTransactionIds = [];
34
- }
35
- /**
36
- * The method that captures raw transactions and stores the transaction IDs.
37
- */
38
- logRawTransaction(signedTransactions) {
39
- if (Array.isArray(signedTransactions)) {
40
- signedTransactions.forEach((stxn) => this._pushTxn(stxn));
41
- }
42
- else {
43
- this._pushTxn(signedTransactions);
44
- }
45
- }
46
- /** Return a proxy that wraps the given Algodv2 with this transaction logger.
47
- *
48
- * @param algod The `Algodv2` to wrap
49
- * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger
50
- */
51
- capture(algod) {
52
- return new Proxy(algod, new TransactionLoggingAlgodv2ProxyHandler(this));
53
- }
54
- /** Wait until all logged transactions IDs appear in the given `Indexer`. */
55
- async waitForIndexer(indexer$1) {
56
- if (this._sentTransactionIds.length === 0)
57
- return;
58
- const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1];
59
- await indexer.runWhenIndexerCaughtUp(async () => {
60
- try {
61
- await indexer$1.lookupTransactionByID(lastTxId).do();
62
- }
63
- catch (e) {
64
- // If the txid lookup failed, then try to look up the last valid round
65
- // If that round exists, then we know indexer is caught up
66
- if (this._latestLastValidRound) {
67
- await indexer$1.lookupBlock(this._latestLastValidRound).do();
68
- config.Config.getLogger().debug(`waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`);
69
- }
70
- else {
71
- throw e;
72
- }
73
- }
74
- });
75
- }
76
- }
77
- class TransactionLoggingAlgodv2ProxyHandler {
78
- constructor(transactionLogger) {
79
- this.transactionLogger = transactionLogger;
80
- }
81
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
- get(target, property, receiver) {
83
- if (property === 'sendRawTransaction') {
84
- return (stxOrStxs) => {
85
- this.transactionLogger.logRawTransaction(stxOrStxs);
86
- return target[property].call(receiver, stxOrStxs);
87
- };
88
- }
89
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
- return target[property];
91
- }
92
- }
93
-
9
+ * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.
10
+ * Useful for automated tests.
11
+ */
12
+ var TransactionLogger = class {
13
+ _sentTransactionIds = [];
14
+ _latestLastValidRound;
15
+ _pushTxn(stxn) {
16
+ const decoded = decodeSignedTransaction(stxn);
17
+ if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) this._latestLastValidRound = BigInt(decoded.txn.lastValid);
18
+ this._sentTransactionIds.push(decoded.txn.txID());
19
+ }
20
+ /**
21
+ * The list of transaction IDs that has been logged thus far.
22
+ */
23
+ get sentTransactionIds() {
24
+ return this._sentTransactionIds;
25
+ }
26
+ /**
27
+ * Clear all logged IDs.
28
+ */
29
+ clear() {
30
+ this._sentTransactionIds = [];
31
+ }
32
+ /**
33
+ * The method that captures raw transactions and stores the transaction IDs.
34
+ */
35
+ logRawTransaction(signedTransactions) {
36
+ if (Array.isArray(signedTransactions)) signedTransactions.forEach((stxn) => this._pushTxn(stxn));
37
+ else this._pushTxn(signedTransactions);
38
+ }
39
+ /** Return a proxy that wraps the given Algodv2 with this transaction logger.
40
+ *
41
+ * @param algod The `Algodv2` to wrap
42
+ * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger
43
+ */
44
+ capture(algod) {
45
+ return new Proxy(algod, new TransactionLoggingAlgodv2ProxyHandler(this));
46
+ }
47
+ /** Wait until all logged transactions IDs appear in the given `Indexer`. */
48
+ async waitForIndexer(indexer) {
49
+ if (this._sentTransactionIds.length === 0) return;
50
+ const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1];
51
+ await require_indexer.runWhenIndexerCaughtUp(async () => {
52
+ try {
53
+ await indexer.lookupTransactionByID(lastTxId).do();
54
+ } catch (e) {
55
+ if (this._latestLastValidRound) {
56
+ await indexer.lookupBlock(this._latestLastValidRound).do();
57
+ require_config.Config.getLogger().debug(`waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`);
58
+ } else throw e;
59
+ }
60
+ });
61
+ }
62
+ };
63
+ var TransactionLoggingAlgodv2ProxyHandler = class {
64
+ transactionLogger;
65
+ constructor(transactionLogger) {
66
+ this.transactionLogger = transactionLogger;
67
+ }
68
+ get(target, property, receiver) {
69
+ if (property === "sendRawTransaction") return (stxOrStxs) => {
70
+ this.transactionLogger.logRawTransaction(stxOrStxs);
71
+ return target[property].call(receiver, stxOrStxs);
72
+ };
73
+ return target[property];
74
+ }
75
+ };
76
+ //#endregion
94
77
  exports.TransactionLogger = TransactionLogger;
95
- //# sourceMappingURL=transaction-logger.js.map
78
+
79
+ //# sourceMappingURL=transaction-logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-logger.js","sources":["../../src/testing/transaction-logger.ts"],"sourcesContent":["import algosdk from 'algosdk'\nimport { Config } from '../config'\nimport { runWhenIndexerCaughtUp } from './indexer'\nimport Algodv2 = algosdk.Algodv2\nimport decodeSignedTransaction = algosdk.decodeSignedTransaction\nimport Indexer = algosdk.Indexer\n\n/**\n * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.\n * Useful for automated tests.\n */\nexport class TransactionLogger {\n private _sentTransactionIds: string[] = []\n private _latestLastValidRound?: bigint\n\n private _pushTxn(stxn: Uint8Array) {\n const decoded = decodeSignedTransaction(stxn)\n if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) {\n this._latestLastValidRound = BigInt(decoded.txn.lastValid)\n }\n this._sentTransactionIds.push(decoded.txn.txID())\n }\n\n /**\n * The list of transaction IDs that has been logged thus far.\n */\n get sentTransactionIds(): Readonly<string[]> {\n return this._sentTransactionIds\n }\n\n /**\n * Clear all logged IDs.\n */\n clear() {\n this._sentTransactionIds = []\n }\n\n /**\n * The method that captures raw transactions and stores the transaction IDs.\n */\n logRawTransaction(signedTransactions: Uint8Array | Uint8Array[]) {\n if (Array.isArray(signedTransactions)) {\n signedTransactions.forEach((stxn) => this._pushTxn(stxn))\n } else {\n this._pushTxn(signedTransactions)\n }\n }\n\n /** Return a proxy that wraps the given Algodv2 with this transaction logger.\n *\n * @param algod The `Algodv2` to wrap\n * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger\n */\n capture(algod: Algodv2): Algodv2 {\n return new Proxy<Algodv2>(algod, new TransactionLoggingAlgodv2ProxyHandler(this))\n }\n\n /** Wait until all logged transactions IDs appear in the given `Indexer`. */\n async waitForIndexer(indexer: Indexer) {\n if (this._sentTransactionIds.length === 0) return\n const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1]\n await runWhenIndexerCaughtUp(async () => {\n try {\n await indexer.lookupTransactionByID(lastTxId).do()\n } catch (e) {\n // If the txid lookup failed, then try to look up the last valid round\n // If that round exists, then we know indexer is caught up\n if (this._latestLastValidRound) {\n await indexer.lookupBlock(this._latestLastValidRound).do()\n Config.getLogger().debug(\n `waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`,\n )\n } else {\n throw e\n }\n }\n })\n }\n}\n\nclass TransactionLoggingAlgodv2ProxyHandler implements ProxyHandler<Algodv2> {\n private transactionLogger: TransactionLogger\n\n constructor(transactionLogger: TransactionLogger) {\n this.transactionLogger = transactionLogger\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(target: Algodv2, property: string | symbol, receiver: any) {\n if (property === 'sendRawTransaction') {\n return (stxOrStxs: Uint8Array | Uint8Array[]) => {\n this.transactionLogger.logRawTransaction(stxOrStxs)\n return target[property].call(receiver, stxOrStxs)\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (target as any)[property]\n }\n}\n"],"names":["indexer","runWhenIndexerCaughtUp","Config"],"mappings":";;;;;;AAIA,IAAO,uBAAuB,GAAG,OAAO,CAAC,uBAAuB;AAGhE;;;AAGG;MACU,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACU,IAAmB,CAAA,mBAAA,GAAa,EAAE;;AAGlC,IAAA,QAAQ,CAAC,IAAgB,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,qBAAqB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACrE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;;AAE5D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;;AAGnD;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB;;AAGjC;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;;AAG/B;;AAEG;AACH,IAAA,iBAAiB,CAAC,kBAA6C,EAAA;AAC7D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AACrC,YAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;aACpD;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;;;AAIrC;;;;AAIG;AACH,IAAA,OAAO,CAAC,KAAc,EAAA;QACpB,OAAO,IAAI,KAAK,CAAU,KAAK,EAAE,IAAI,qCAAqC,CAAC,IAAI,CAAC,CAAC;;;IAInF,MAAM,cAAc,CAACA,SAAgB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;YAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9E,QAAA,MAAMC,8BAAsB,CAAC,YAAW;AACtC,YAAA,IAAI;gBACF,MAAMD,SAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE;;YAClD,OAAO,CAAC,EAAE;;;AAGV,gBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBAC9B,MAAMA,SAAO,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,EAAE;AAC1D,oBAAAE,aAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CACtB,CAAA,qDAAA,EAAwD,IAAI,CAAC,qBAAqB,CAAA,2CAAA,EAA8C,QAAQ,CAAA,gBAAA,CAAkB,CAC3J;;qBACI;AACL,oBAAA,MAAM,CAAC;;;AAGb,SAAC,CAAC;;AAEL;AAED,MAAM,qCAAqC,CAAA;AAGzC,IAAA,WAAA,CAAY,iBAAoC,EAAA;AAC9C,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;;;AAI5C,IAAA,GAAG,CAAC,MAAe,EAAE,QAAyB,EAAE,QAAa,EAAA;AAC3D,QAAA,IAAI,QAAQ,KAAK,oBAAoB,EAAE;YACrC,OAAO,CAAC,SAAoC,KAAI;AAC9C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACnD,aAAC;;;AAGH,QAAA,OAAQ,MAAc,CAAC,QAAQ,CAAC;;AAEnC;;;;"}
1
+ {"version":3,"file":"transaction-logger.js","names":["runWhenIndexerCaughtUp"],"sources":["../../src/testing/transaction-logger.ts"],"sourcesContent":["import algosdk from 'algosdk'\nimport { Config } from '../config'\nimport { runWhenIndexerCaughtUp } from './indexer'\nimport Algodv2 = algosdk.Algodv2\nimport decodeSignedTransaction = algosdk.decodeSignedTransaction\nimport Indexer = algosdk.Indexer\n\n/**\n * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.\n * Useful for automated tests.\n */\nexport class TransactionLogger {\n private _sentTransactionIds: string[] = []\n private _latestLastValidRound?: bigint\n\n private _pushTxn(stxn: Uint8Array) {\n const decoded = decodeSignedTransaction(stxn)\n if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) {\n this._latestLastValidRound = BigInt(decoded.txn.lastValid)\n }\n this._sentTransactionIds.push(decoded.txn.txID())\n }\n\n /**\n * The list of transaction IDs that has been logged thus far.\n */\n get sentTransactionIds(): Readonly<string[]> {\n return this._sentTransactionIds\n }\n\n /**\n * Clear all logged IDs.\n */\n clear() {\n this._sentTransactionIds = []\n }\n\n /**\n * The method that captures raw transactions and stores the transaction IDs.\n */\n logRawTransaction(signedTransactions: Uint8Array | Uint8Array[]) {\n if (Array.isArray(signedTransactions)) {\n signedTransactions.forEach((stxn) => this._pushTxn(stxn))\n } else {\n this._pushTxn(signedTransactions)\n }\n }\n\n /** Return a proxy that wraps the given Algodv2 with this transaction logger.\n *\n * @param algod The `Algodv2` to wrap\n * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger\n */\n capture(algod: Algodv2): Algodv2 {\n return new Proxy<Algodv2>(algod, new TransactionLoggingAlgodv2ProxyHandler(this))\n }\n\n /** Wait until all logged transactions IDs appear in the given `Indexer`. */\n async waitForIndexer(indexer: Indexer) {\n if (this._sentTransactionIds.length === 0) return\n const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1]\n await runWhenIndexerCaughtUp(async () => {\n try {\n await indexer.lookupTransactionByID(lastTxId).do()\n } catch (e) {\n // If the txid lookup failed, then try to look up the last valid round\n // If that round exists, then we know indexer is caught up\n if (this._latestLastValidRound) {\n await indexer.lookupBlock(this._latestLastValidRound).do()\n Config.getLogger().debug(\n `waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`,\n )\n } else {\n throw e\n }\n }\n })\n }\n}\n\nclass TransactionLoggingAlgodv2ProxyHandler implements ProxyHandler<Algodv2> {\n private transactionLogger: TransactionLogger\n\n constructor(transactionLogger: TransactionLogger) {\n this.transactionLogger = transactionLogger\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(target: Algodv2, property: string | symbol, receiver: any) {\n if (property === 'sendRawTransaction') {\n return (stxOrStxs: Uint8Array | Uint8Array[]) => {\n this.transactionLogger.logRawTransaction(stxOrStxs)\n return target[property].call(receiver, stxOrStxs)\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (target as any)[property]\n }\n}\n"],"mappings":";;;;;;AAIO,IAAA,0BAA0B,QAAA,QAAQ;;;;;AAOzC,IAAa,oBAAb,MAA+B;CAC7B,sBAAwC,CAAC;CACzC;CAEA,SAAiB,MAAkB;EACjC,MAAM,UAAU,wBAAwB,IAAI;EAC5C,IAAI,QAAQ,IAAI,aAAa,KAAK,yBAAyB,OAAO,CAAC,IACjE,KAAK,wBAAwB,OAAO,QAAQ,IAAI,SAAS;EAE3D,KAAK,oBAAoB,KAAK,QAAQ,IAAI,KAAK,CAAC;CAClD;;;;CAKA,IAAI,qBAAyC;EAC3C,OAAO,KAAK;CACd;;;;CAKA,QAAQ;EACN,KAAK,sBAAsB,CAAC;CAC9B;;;;CAKA,kBAAkB,oBAA+C;EAC/D,IAAI,MAAM,QAAQ,kBAAkB,GAClC,mBAAmB,SAAS,SAAS,KAAK,SAAS,IAAI,CAAC;OAExD,KAAK,SAAS,kBAAkB;CAEpC;;;;;;CAOA,QAAQ,OAAyB;EAC/B,OAAO,IAAI,MAAe,OAAO,IAAI,sCAAsC,IAAI,CAAC;CAClF;;CAGA,MAAM,eAAe,SAAkB;EACrC,IAAI,KAAK,oBAAoB,WAAW,GAAG;EAC3C,MAAM,WAAW,KAAK,oBAAoB,KAAK,oBAAoB,SAAS;EAC5E,MAAMA,gBAAAA,uBAAuB,YAAY;GACvC,IAAI;IACF,MAAM,QAAQ,sBAAsB,QAAQ,CAAC,CAAC,GAAG;GACnD,SAAS,GAAG;IAGV,IAAI,KAAK,uBAAuB;KAC9B,MAAM,QAAQ,YAAY,KAAK,qBAAqB,CAAC,CAAC,GAAG;KACzD,eAAA,OAAO,UAAU,CAAC,CAAC,MACjB,wDAAwD,KAAK,sBAAsB,6CAA6C,SAAS,iBAC3I;IACF,OACE,MAAM;GAEV;EACF,CAAC;CACH;AACF;AAEA,IAAM,wCAAN,MAA6E;CAC3E;CAEA,YAAY,mBAAsC;EAChD,KAAK,oBAAoB;CAC3B;CAGA,IAAI,QAAiB,UAA2B,UAAe;EAC7D,IAAI,aAAa,sBACf,QAAQ,cAAyC;GAC/C,KAAK,kBAAkB,kBAAkB,SAAS;GAClD,OAAO,OAAO,SAAS,CAAC,KAAK,UAAU,SAAS;EAClD;EAGF,OAAQ,OAAe;CACzB;AACF"}
@@ -1,93 +1,77 @@
1
- import algosdk from 'algosdk';
2
- import { Config } from '../config.mjs';
3
- import { runWhenIndexerCaughtUp } from './indexer.mjs';
4
-
1
+ import { Config } from "../config.mjs";
2
+ import { runWhenIndexerCaughtUp } from "./indexer.mjs";
3
+ import algosdk from "algosdk";
4
+ //#region src/testing/transaction-logger.ts
5
5
  var decodeSignedTransaction = algosdk.decodeSignedTransaction;
6
6
  /**
7
- * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.
8
- * Useful for automated tests.
9
- */
10
- class TransactionLogger {
11
- constructor() {
12
- this._sentTransactionIds = [];
13
- }
14
- _pushTxn(stxn) {
15
- const decoded = decodeSignedTransaction(stxn);
16
- if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) {
17
- this._latestLastValidRound = BigInt(decoded.txn.lastValid);
18
- }
19
- this._sentTransactionIds.push(decoded.txn.txID());
20
- }
21
- /**
22
- * The list of transaction IDs that has been logged thus far.
23
- */
24
- get sentTransactionIds() {
25
- return this._sentTransactionIds;
26
- }
27
- /**
28
- * Clear all logged IDs.
29
- */
30
- clear() {
31
- this._sentTransactionIds = [];
32
- }
33
- /**
34
- * The method that captures raw transactions and stores the transaction IDs.
35
- */
36
- logRawTransaction(signedTransactions) {
37
- if (Array.isArray(signedTransactions)) {
38
- signedTransactions.forEach((stxn) => this._pushTxn(stxn));
39
- }
40
- else {
41
- this._pushTxn(signedTransactions);
42
- }
43
- }
44
- /** Return a proxy that wraps the given Algodv2 with this transaction logger.
45
- *
46
- * @param algod The `Algodv2` to wrap
47
- * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger
48
- */
49
- capture(algod) {
50
- return new Proxy(algod, new TransactionLoggingAlgodv2ProxyHandler(this));
51
- }
52
- /** Wait until all logged transactions IDs appear in the given `Indexer`. */
53
- async waitForIndexer(indexer) {
54
- if (this._sentTransactionIds.length === 0)
55
- return;
56
- const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1];
57
- await runWhenIndexerCaughtUp(async () => {
58
- try {
59
- await indexer.lookupTransactionByID(lastTxId).do();
60
- }
61
- catch (e) {
62
- // If the txid lookup failed, then try to look up the last valid round
63
- // If that round exists, then we know indexer is caught up
64
- if (this._latestLastValidRound) {
65
- await indexer.lookupBlock(this._latestLastValidRound).do();
66
- Config.getLogger().debug(`waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`);
67
- }
68
- else {
69
- throw e;
70
- }
71
- }
72
- });
73
- }
74
- }
75
- class TransactionLoggingAlgodv2ProxyHandler {
76
- constructor(transactionLogger) {
77
- this.transactionLogger = transactionLogger;
78
- }
79
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
- get(target, property, receiver) {
81
- if (property === 'sendRawTransaction') {
82
- return (stxOrStxs) => {
83
- this.transactionLogger.logRawTransaction(stxOrStxs);
84
- return target[property].call(receiver, stxOrStxs);
85
- };
86
- }
87
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
88
- return target[property];
89
- }
90
- }
91
-
7
+ * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.
8
+ * Useful for automated tests.
9
+ */
10
+ var TransactionLogger = class {
11
+ _sentTransactionIds = [];
12
+ _latestLastValidRound;
13
+ _pushTxn(stxn) {
14
+ const decoded = decodeSignedTransaction(stxn);
15
+ if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) this._latestLastValidRound = BigInt(decoded.txn.lastValid);
16
+ this._sentTransactionIds.push(decoded.txn.txID());
17
+ }
18
+ /**
19
+ * The list of transaction IDs that has been logged thus far.
20
+ */
21
+ get sentTransactionIds() {
22
+ return this._sentTransactionIds;
23
+ }
24
+ /**
25
+ * Clear all logged IDs.
26
+ */
27
+ clear() {
28
+ this._sentTransactionIds = [];
29
+ }
30
+ /**
31
+ * The method that captures raw transactions and stores the transaction IDs.
32
+ */
33
+ logRawTransaction(signedTransactions) {
34
+ if (Array.isArray(signedTransactions)) signedTransactions.forEach((stxn) => this._pushTxn(stxn));
35
+ else this._pushTxn(signedTransactions);
36
+ }
37
+ /** Return a proxy that wraps the given Algodv2 with this transaction logger.
38
+ *
39
+ * @param algod The `Algodv2` to wrap
40
+ * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger
41
+ */
42
+ capture(algod) {
43
+ return new Proxy(algod, new TransactionLoggingAlgodv2ProxyHandler(this));
44
+ }
45
+ /** Wait until all logged transactions IDs appear in the given `Indexer`. */
46
+ async waitForIndexer(indexer) {
47
+ if (this._sentTransactionIds.length === 0) return;
48
+ const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1];
49
+ await runWhenIndexerCaughtUp(async () => {
50
+ try {
51
+ await indexer.lookupTransactionByID(lastTxId).do();
52
+ } catch (e) {
53
+ if (this._latestLastValidRound) {
54
+ await indexer.lookupBlock(this._latestLastValidRound).do();
55
+ Config.getLogger().debug(`waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`);
56
+ } else throw e;
57
+ }
58
+ });
59
+ }
60
+ };
61
+ var TransactionLoggingAlgodv2ProxyHandler = class {
62
+ transactionLogger;
63
+ constructor(transactionLogger) {
64
+ this.transactionLogger = transactionLogger;
65
+ }
66
+ get(target, property, receiver) {
67
+ if (property === "sendRawTransaction") return (stxOrStxs) => {
68
+ this.transactionLogger.logRawTransaction(stxOrStxs);
69
+ return target[property].call(receiver, stxOrStxs);
70
+ };
71
+ return target[property];
72
+ }
73
+ };
74
+ //#endregion
92
75
  export { TransactionLogger };
93
- //# sourceMappingURL=transaction-logger.mjs.map
76
+
77
+ //# sourceMappingURL=transaction-logger.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-logger.mjs","sources":["../../src/testing/transaction-logger.ts"],"sourcesContent":["import algosdk from 'algosdk'\nimport { Config } from '../config'\nimport { runWhenIndexerCaughtUp } from './indexer'\nimport Algodv2 = algosdk.Algodv2\nimport decodeSignedTransaction = algosdk.decodeSignedTransaction\nimport Indexer = algosdk.Indexer\n\n/**\n * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.\n * Useful for automated tests.\n */\nexport class TransactionLogger {\n private _sentTransactionIds: string[] = []\n private _latestLastValidRound?: bigint\n\n private _pushTxn(stxn: Uint8Array) {\n const decoded = decodeSignedTransaction(stxn)\n if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) {\n this._latestLastValidRound = BigInt(decoded.txn.lastValid)\n }\n this._sentTransactionIds.push(decoded.txn.txID())\n }\n\n /**\n * The list of transaction IDs that has been logged thus far.\n */\n get sentTransactionIds(): Readonly<string[]> {\n return this._sentTransactionIds\n }\n\n /**\n * Clear all logged IDs.\n */\n clear() {\n this._sentTransactionIds = []\n }\n\n /**\n * The method that captures raw transactions and stores the transaction IDs.\n */\n logRawTransaction(signedTransactions: Uint8Array | Uint8Array[]) {\n if (Array.isArray(signedTransactions)) {\n signedTransactions.forEach((stxn) => this._pushTxn(stxn))\n } else {\n this._pushTxn(signedTransactions)\n }\n }\n\n /** Return a proxy that wraps the given Algodv2 with this transaction logger.\n *\n * @param algod The `Algodv2` to wrap\n * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger\n */\n capture(algod: Algodv2): Algodv2 {\n return new Proxy<Algodv2>(algod, new TransactionLoggingAlgodv2ProxyHandler(this))\n }\n\n /** Wait until all logged transactions IDs appear in the given `Indexer`. */\n async waitForIndexer(indexer: Indexer) {\n if (this._sentTransactionIds.length === 0) return\n const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1]\n await runWhenIndexerCaughtUp(async () => {\n try {\n await indexer.lookupTransactionByID(lastTxId).do()\n } catch (e) {\n // If the txid lookup failed, then try to look up the last valid round\n // If that round exists, then we know indexer is caught up\n if (this._latestLastValidRound) {\n await indexer.lookupBlock(this._latestLastValidRound).do()\n Config.getLogger().debug(\n `waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`,\n )\n } else {\n throw e\n }\n }\n })\n }\n}\n\nclass TransactionLoggingAlgodv2ProxyHandler implements ProxyHandler<Algodv2> {\n private transactionLogger: TransactionLogger\n\n constructor(transactionLogger: TransactionLogger) {\n this.transactionLogger = transactionLogger\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(target: Algodv2, property: string | symbol, receiver: any) {\n if (property === 'sendRawTransaction') {\n return (stxOrStxs: Uint8Array | Uint8Array[]) => {\n this.transactionLogger.logRawTransaction(stxOrStxs)\n return target[property].call(receiver, stxOrStxs)\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (target as any)[property]\n }\n}\n"],"names":[],"mappings":";;;;AAIA,IAAO,uBAAuB,GAAG,OAAO,CAAC,uBAAuB;AAGhE;;;AAGG;MACU,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACU,IAAmB,CAAA,mBAAA,GAAa,EAAE;;AAGlC,IAAA,QAAQ,CAAC,IAAgB,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,qBAAqB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACrE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;;AAE5D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;;AAGnD;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB;;AAGjC;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;;AAG/B;;AAEG;AACH,IAAA,iBAAiB,CAAC,kBAA6C,EAAA;AAC7D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AACrC,YAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;aACpD;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;;;AAIrC;;;;AAIG;AACH,IAAA,OAAO,CAAC,KAAc,EAAA;QACpB,OAAO,IAAI,KAAK,CAAU,KAAK,EAAE,IAAI,qCAAqC,CAAC,IAAI,CAAC,CAAC;;;IAInF,MAAM,cAAc,CAAC,OAAgB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;YAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9E,QAAA,MAAM,sBAAsB,CAAC,YAAW;AACtC,YAAA,IAAI;gBACF,MAAM,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE;;YAClD,OAAO,CAAC,EAAE;;;AAGV,gBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBAC9B,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,EAAE;AAC1D,oBAAA,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CACtB,CAAA,qDAAA,EAAwD,IAAI,CAAC,qBAAqB,CAAA,2CAAA,EAA8C,QAAQ,CAAA,gBAAA,CAAkB,CAC3J;;qBACI;AACL,oBAAA,MAAM,CAAC;;;AAGb,SAAC,CAAC;;AAEL;AAED,MAAM,qCAAqC,CAAA;AAGzC,IAAA,WAAA,CAAY,iBAAoC,EAAA;AAC9C,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;;;AAI5C,IAAA,GAAG,CAAC,MAAe,EAAE,QAAyB,EAAE,QAAa,EAAA;AAC3D,QAAA,IAAI,QAAQ,KAAK,oBAAoB,EAAE;YACrC,OAAO,CAAC,SAAoC,KAAI;AAC9C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACnD,aAAC;;;AAGH,QAAA,OAAQ,MAAc,CAAC,QAAQ,CAAC;;AAEnC;;;;"}
1
+ {"version":3,"file":"transaction-logger.mjs","names":[],"sources":["../../src/testing/transaction-logger.ts"],"sourcesContent":["import algosdk from 'algosdk'\nimport { Config } from '../config'\nimport { runWhenIndexerCaughtUp } from './indexer'\nimport Algodv2 = algosdk.Algodv2\nimport decodeSignedTransaction = algosdk.decodeSignedTransaction\nimport Indexer = algosdk.Indexer\n\n/**\n * Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.\n * Useful for automated tests.\n */\nexport class TransactionLogger {\n private _sentTransactionIds: string[] = []\n private _latestLastValidRound?: bigint\n\n private _pushTxn(stxn: Uint8Array) {\n const decoded = decodeSignedTransaction(stxn)\n if (decoded.txn.lastValid > (this._latestLastValidRound ?? BigInt(0))) {\n this._latestLastValidRound = BigInt(decoded.txn.lastValid)\n }\n this._sentTransactionIds.push(decoded.txn.txID())\n }\n\n /**\n * The list of transaction IDs that has been logged thus far.\n */\n get sentTransactionIds(): Readonly<string[]> {\n return this._sentTransactionIds\n }\n\n /**\n * Clear all logged IDs.\n */\n clear() {\n this._sentTransactionIds = []\n }\n\n /**\n * The method that captures raw transactions and stores the transaction IDs.\n */\n logRawTransaction(signedTransactions: Uint8Array | Uint8Array[]) {\n if (Array.isArray(signedTransactions)) {\n signedTransactions.forEach((stxn) => this._pushTxn(stxn))\n } else {\n this._pushTxn(signedTransactions)\n }\n }\n\n /** Return a proxy that wraps the given Algodv2 with this transaction logger.\n *\n * @param algod The `Algodv2` to wrap\n * @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger\n */\n capture(algod: Algodv2): Algodv2 {\n return new Proxy<Algodv2>(algod, new TransactionLoggingAlgodv2ProxyHandler(this))\n }\n\n /** Wait until all logged transactions IDs appear in the given `Indexer`. */\n async waitForIndexer(indexer: Indexer) {\n if (this._sentTransactionIds.length === 0) return\n const lastTxId = this._sentTransactionIds[this._sentTransactionIds.length - 1]\n await runWhenIndexerCaughtUp(async () => {\n try {\n await indexer.lookupTransactionByID(lastTxId).do()\n } catch (e) {\n // If the txid lookup failed, then try to look up the last valid round\n // If that round exists, then we know indexer is caught up\n if (this._latestLastValidRound) {\n await indexer.lookupBlock(this._latestLastValidRound).do()\n Config.getLogger().debug(\n `waitForIndexer has waited until the last valid round ${this._latestLastValidRound} was indexed, but did not find transaction ${lastTxId} in the indexer.`,\n )\n } else {\n throw e\n }\n }\n })\n }\n}\n\nclass TransactionLoggingAlgodv2ProxyHandler implements ProxyHandler<Algodv2> {\n private transactionLogger: TransactionLogger\n\n constructor(transactionLogger: TransactionLogger) {\n this.transactionLogger = transactionLogger\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(target: Algodv2, property: string | symbol, receiver: any) {\n if (property === 'sendRawTransaction') {\n return (stxOrStxs: Uint8Array | Uint8Array[]) => {\n this.transactionLogger.logRawTransaction(stxOrStxs)\n return target[property].call(receiver, stxOrStxs)\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (target as any)[property]\n }\n}\n"],"mappings":";;;;AAIO,IAAA,0BAA0B,QAAQ;;;;;AAOzC,IAAa,oBAAb,MAA+B;CAC7B,sBAAwC,CAAC;CACzC;CAEA,SAAiB,MAAkB;EACjC,MAAM,UAAU,wBAAwB,IAAI;EAC5C,IAAI,QAAQ,IAAI,aAAa,KAAK,yBAAyB,OAAO,CAAC,IACjE,KAAK,wBAAwB,OAAO,QAAQ,IAAI,SAAS;EAE3D,KAAK,oBAAoB,KAAK,QAAQ,IAAI,KAAK,CAAC;CAClD;;;;CAKA,IAAI,qBAAyC;EAC3C,OAAO,KAAK;CACd;;;;CAKA,QAAQ;EACN,KAAK,sBAAsB,CAAC;CAC9B;;;;CAKA,kBAAkB,oBAA+C;EAC/D,IAAI,MAAM,QAAQ,kBAAkB,GAClC,mBAAmB,SAAS,SAAS,KAAK,SAAS,IAAI,CAAC;OAExD,KAAK,SAAS,kBAAkB;CAEpC;;;;;;CAOA,QAAQ,OAAyB;EAC/B,OAAO,IAAI,MAAe,OAAO,IAAI,sCAAsC,IAAI,CAAC;CAClF;;CAGA,MAAM,eAAe,SAAkB;EACrC,IAAI,KAAK,oBAAoB,WAAW,GAAG;EAC3C,MAAM,WAAW,KAAK,oBAAoB,KAAK,oBAAoB,SAAS;EAC5E,MAAM,uBAAuB,YAAY;GACvC,IAAI;IACF,MAAM,QAAQ,sBAAsB,QAAQ,CAAC,CAAC,GAAG;GACnD,SAAS,GAAG;IAGV,IAAI,KAAK,uBAAuB;KAC9B,MAAM,QAAQ,YAAY,KAAK,qBAAqB,CAAC,CAAC,GAAG;KACzD,OAAO,UAAU,CAAC,CAAC,MACjB,wDAAwD,KAAK,sBAAsB,6CAA6C,SAAS,iBAC3I;IACF,OACE,MAAM;GAEV;EACF,CAAC;CACH;AACF;AAEA,IAAM,wCAAN,MAA6E;CAC3E;CAEA,YAAY,mBAAsC;EAChD,KAAK,oBAAoB;CAC3B;CAGA,IAAI,QAAiB,UAA2B,UAAe;EAC7D,IAAI,aAAa,sBACf,QAAQ,cAAyC;GAC/C,KAAK,kBAAkB,kBAAkB,SAAS;GAClD,OAAO,OAAO,SAAS,CAAC,KAAK,UAAU,SAAS;EAClD;EAGF,OAAQ,OAAe;CACzB;AACF"}