@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.
- package/_virtual/_rolldown/runtime.js +33 -0
- package/_virtual/_rolldown/runtime.mjs +13 -0
- package/account/account.d.ts +25 -30
- package/account/account.js +151 -146
- package/account/account.js.map +1 -1
- package/account/account.mjs +149 -144
- package/account/account.mjs.map +1 -1
- package/account/get-account-config-from-environment.d.ts +7 -2
- package/account/get-account-config-from-environment.js +19 -21
- package/account/get-account-config-from-environment.js.map +1 -1
- package/account/get-account-config-from-environment.mjs +19 -19
- package/account/get-account-config-from-environment.mjs.map +1 -1
- package/account/get-account.d.ts +14 -12
- package/account/get-account.js +56 -59
- package/account/get-account.js.map +1 -1
- package/account/get-account.mjs +56 -57
- package/account/get-account.mjs.map +1 -1
- package/account/get-dispenser-account.d.ts +9 -5
- package/account/get-dispenser-account.js +20 -18
- package/account/get-dispenser-account.js.map +1 -1
- package/account/get-dispenser-account.mjs +20 -16
- package/account/get-dispenser-account.mjs.map +1 -1
- package/account/mnemonic-account.d.ts +7 -3
- package/account/mnemonic-account.js +17 -17
- package/account/mnemonic-account.js.map +1 -1
- package/account/mnemonic-account.mjs +15 -15
- package/account/mnemonic-account.mjs.map +1 -1
- package/amount.d.ts +40 -35
- package/amount.js +33 -34
- package/amount.js.map +1 -1
- package/amount.mjs +33 -32
- package/amount.mjs.map +1 -1
- package/app-client.d.ts +10 -6
- package/app-client.js +91 -86
- package/app-client.js.map +1 -1
- package/app-client.mjs +91 -84
- package/app-client.mjs.map +1 -1
- package/app-deploy.d.ts +26 -24
- package/app-deploy.js +235 -253
- package/app-deploy.js.map +1 -1
- package/app-deploy.mjs +233 -251
- package/app-deploy.mjs.map +1 -1
- package/app.d.ts +45 -46
- package/app.js +253 -271
- package/app.js.map +1 -1
- package/app.mjs +249 -267
- package/app.mjs.map +1 -1
- package/asset.d.ts +16 -12
- package/asset.js +116 -122
- package/asset.js.map +1 -1
- package/asset.mjs +116 -120
- package/asset.mjs.map +1 -1
- package/config.d.ts +7 -2
- package/config.js +5 -7
- package/config.js.map +1 -1
- package/config.mjs +5 -4
- package/config.mjs.map +1 -1
- package/debugging/debugging.d.ts +5 -1
- package/debugging/debugging.js +11 -11
- package/debugging/debugging.js.map +1 -1
- package/debugging/debugging.mjs +11 -9
- package/debugging/debugging.mjs.map +1 -1
- package/dispenser-client.d.ts +7 -2
- package/dispenser-client.js +23 -24
- package/dispenser-client.js.map +1 -1
- package/dispenser-client.mjs +23 -22
- package/dispenser-client.mjs.map +1 -1
- package/index.d.ts +27 -18
- package/index.js +140 -143
- package/index.mjs +27 -29
- package/indexer-lookup.d.ts +18 -11
- package/indexer-lookup.js +112 -120
- package/indexer-lookup.js.map +1 -1
- package/indexer-lookup.mjs +105 -118
- package/indexer-lookup.mjs.map +1 -1
- package/localnet/get-kmd-wallet-account.d.ts +9 -7
- package/localnet/get-kmd-wallet-account.js +28 -26
- package/localnet/get-kmd-wallet-account.js.map +1 -1
- package/localnet/get-kmd-wallet-account.mjs +28 -24
- package/localnet/get-kmd-wallet-account.mjs.map +1 -1
- package/localnet/get-localnet-dispenser-account.d.ts +7 -5
- package/localnet/get-localnet-dispenser-account.js +17 -15
- package/localnet/get-localnet-dispenser-account.js.map +1 -1
- package/localnet/get-localnet-dispenser-account.mjs +17 -13
- package/localnet/get-localnet-dispenser-account.mjs.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.d.ts +10 -8
- package/localnet/get-or-create-kmd-wallet-account.js +28 -26
- package/localnet/get-or-create-kmd-wallet-account.js.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.mjs +28 -24
- package/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -1
- package/localnet/is-localnet.d.ts +7 -3
- package/localnet/is-localnet.js +9 -10
- package/localnet/is-localnet.js.map +1 -1
- package/localnet/is-localnet.mjs +9 -8
- package/localnet/is-localnet.mjs.map +1 -1
- package/network-client.d.ts +17 -15
- package/network-client.js +115 -116
- package/network-client.js.map +1 -1
- package/network-client.mjs +115 -114
- package/network-client.mjs.map +1 -1
- package/package.json +12 -3
- package/testing/account.d.ts +11 -9
- package/testing/account.js +31 -33
- package/testing/account.js.map +1 -1
- package/testing/account.mjs +29 -31
- package/testing/account.mjs.map +1 -1
- package/testing/fixtures/algokit-log-capture-fixture.d.ts +7 -2
- package/testing/fixtures/algokit-log-capture-fixture.js +36 -41
- package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -1
- package/testing/fixtures/algokit-log-capture-fixture.mjs +36 -39
- package/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -1
- package/testing/fixtures/algorand-fixture.d.ts +9 -4
- package/testing/fixtures/algorand-fixture.js +67 -62
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs +66 -59
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/testing/index.d.ts +7 -5
- package/testing/index.js +13 -18
- package/testing/index.mjs +7 -7
- package/testing/indexer.d.ts +5 -1
- package/testing/indexer.js +28 -37
- package/testing/indexer.js.map +1 -1
- package/testing/indexer.mjs +28 -35
- package/testing/indexer.mjs.map +1 -1
- package/testing/test-logger.d.ts +41 -36
- package/testing/test-logger.js +71 -76
- package/testing/test-logger.js.map +1 -1
- package/testing/test-logger.mjs +71 -74
- package/testing/test-logger.mjs.map +1 -1
- package/testing/transaction-logger.d.ts +30 -27
- package/testing/transaction-logger.js +77 -93
- package/testing/transaction-logger.js.map +1 -1
- package/testing/transaction-logger.mjs +74 -90
- package/testing/transaction-logger.mjs.map +1 -1
- package/transaction/legacy-bridge.js +100 -111
- package/transaction/legacy-bridge.js.map +1 -1
- package/transaction/legacy-bridge.mjs +97 -108
- package/transaction/legacy-bridge.mjs.map +1 -1
- package/transaction/perform-atomic-transaction-composer-simulate.d.ts +7 -5
- package/transaction/perform-atomic-transaction-composer-simulate.js +31 -36
- package/transaction/perform-atomic-transaction-composer-simulate.js.map +1 -1
- package/transaction/perform-atomic-transaction-composer-simulate.mjs +28 -33
- package/transaction/perform-atomic-transaction-composer-simulate.mjs.map +1 -1
- package/transaction/transaction.d.ts +34 -35
- package/transaction/transaction.js +716 -914
- package/transaction/transaction.js.map +1 -1
- package/transaction/transaction.mjs +713 -911
- package/transaction/transaction.mjs.map +1 -1
- package/transfer/transfer-algos.d.ts +9 -5
- package/transfer/transfer-algos.js +26 -27
- package/transfer/transfer-algos.js.map +1 -1
- package/transfer/transfer-algos.mjs +26 -25
- package/transfer/transfer-algos.mjs.map +1 -1
- package/transfer/transfer.d.ts +11 -8
- package/transfer/transfer.js +94 -100
- package/transfer/transfer.js.map +1 -1
- package/transfer/transfer.mjs +94 -98
- package/transfer/transfer.mjs.map +1 -1
- package/types/account-manager.d.ts +432 -429
- package/types/account-manager.js +591 -602
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +587 -599
- package/types/account-manager.mjs.map +1 -1
- package/types/account.d.ts +192 -202
- package/types/account.js +91 -88
- package/types/account.js.map +1 -1
- package/types/account.mjs +88 -86
- package/types/account.mjs.map +1 -1
- package/types/algo-http-client-with-retry.d.ts +15 -10
- package/types/algo-http-client-with-retry.js +70 -92
- package/types/algo-http-client-with-retry.js.map +1 -1
- package/types/algo-http-client-with-retry.mjs +69 -90
- package/types/algo-http-client-with-retry.mjs.map +1 -1
- package/types/algorand-client-transaction-creator.d.ts +778 -771
- package/types/algorand-client-transaction-creator.js +733 -732
- package/types/algorand-client-transaction-creator.js.map +1 -1
- package/types/algorand-client-transaction-creator.mjs +732 -730
- package/types/algorand-client-transaction-creator.mjs.map +1 -1
- package/types/algorand-client-transaction-sender.d.ts +1090 -1360
- package/types/algorand-client-transaction-sender.js +930 -961
- package/types/algorand-client-transaction-sender.js.map +1 -1
- package/types/algorand-client-transaction-sender.mjs +927 -959
- package/types/algorand-client-transaction-sender.mjs.map +1 -1
- package/types/algorand-client.d.ts +239 -236
- package/types/algorand-client.js +322 -320
- package/types/algorand-client.js.map +1 -1
- package/types/algorand-client.mjs +321 -318
- package/types/algorand-client.mjs.map +1 -1
- package/types/amount.d.ts +47 -43
- package/types/amount.js +66 -70
- package/types/amount.js.map +1 -1
- package/types/amount.mjs +63 -68
- package/types/amount.mjs.map +1 -1
- package/types/app-arc56.d.ts +235 -272
- package/types/app-arc56.js +124 -170
- package/types/app-arc56.js.map +1 -1
- package/types/app-arc56.mjs +121 -168
- package/types/app-arc56.mjs.map +1 -1
- package/types/app-client.d.ts +1128 -2009
- package/types/app-client.js +1633 -1791
- package/types/app-client.js.map +1 -1
- package/types/app-client.mjs +1624 -1783
- package/types/app-client.mjs.map +1 -1
- package/types/app-deployer.d.ts +139 -141
- package/types/app-deployer.js +344 -384
- package/types/app-deployer.js.map +1 -1
- package/types/app-deployer.mjs +341 -382
- package/types/app-deployer.mjs.map +1 -1
- package/types/app-factory.d.ts +762 -932
- package/types/app-factory.js +496 -488
- package/types/app-factory.js.map +1 -1
- package/types/app-factory.mjs +491 -484
- package/types/app-factory.mjs.map +1 -1
- package/types/app-manager.d.ts +304 -310
- package/types/app-manager.js +422 -475
- package/types/app-manager.js.map +1 -1
- package/types/app-manager.mjs +419 -473
- package/types/app-manager.mjs.map +1 -1
- package/types/app-spec.d.ts +118 -117
- package/types/app-spec.js +125 -135
- package/types/app-spec.js.map +1 -1
- package/types/app-spec.mjs +121 -132
- package/types/app-spec.mjs.map +1 -1
- package/types/app.d.ts +229 -241
- package/types/app.js +36 -28
- package/types/app.js.map +1 -1
- package/types/app.mjs +33 -26
- package/types/app.mjs.map +1 -1
- package/types/asset-manager.d.ts +204 -199
- package/types/asset-manager.js +165 -174
- package/types/asset-manager.js.map +1 -1
- package/types/asset-manager.mjs +164 -172
- package/types/asset-manager.mjs.map +1 -1
- package/types/asset.d.ts +95 -91
- package/types/asset.js +0 -3
- package/types/asset.mjs +0 -2
- package/types/async-event-emitter.d.ts +18 -13
- package/types/async-event-emitter.js +37 -49
- package/types/async-event-emitter.js.map +1 -1
- package/types/async-event-emitter.mjs +36 -47
- package/types/async-event-emitter.mjs.map +1 -1
- package/types/client-manager.d.ts +453 -451
- package/types/client-manager.js +602 -598
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs +597 -594
- package/types/client-manager.mjs.map +1 -1
- package/types/composer.d.ts +1211 -1258
- package/types/composer.js +1436 -1498
- package/types/composer.js.map +1 -1
- package/types/composer.mjs +1430 -1493
- package/types/composer.mjs.map +1 -1
- package/types/config.d.ts +53 -48
- package/types/config.js +78 -77
- package/types/config.js.map +1 -1
- package/types/config.mjs +77 -75
- package/types/config.mjs.map +1 -1
- package/types/debugging.d.ts +25 -23
- package/types/debugging.js +9 -11
- package/types/debugging.js.map +1 -1
- package/types/debugging.mjs +8 -9
- package/types/debugging.mjs.map +1 -1
- package/types/dispenser-client.d.ts +57 -52
- package/types/dispenser-client.js +120 -141
- package/types/dispenser-client.js.map +1 -1
- package/types/dispenser-client.mjs +119 -139
- package/types/dispenser-client.mjs.map +1 -1
- package/types/expand.d.ts +5 -3
- package/types/expand.js +0 -3
- package/types/expand.mjs +0 -2
- package/types/indexer.d.ts +104 -100
- package/types/indexer.js +36 -31
- package/types/indexer.js.map +1 -1
- package/types/indexer.mjs +32 -30
- package/types/indexer.mjs.map +1 -1
- package/types/instance-of.d.ts +5 -3
- package/types/instance-of.js +0 -3
- package/types/instance-of.mjs +0 -2
- package/types/kmd-account-manager.d.ts +75 -70
- package/types/kmd-account-manager.js +150 -184
- package/types/kmd-account-manager.js.map +1 -1
- package/types/kmd-account-manager.mjs +147 -182
- package/types/kmd-account-manager.mjs.map +1 -1
- package/types/lifecycle-events.d.ts +13 -8
- package/types/lifecycle-events.js +10 -7
- package/types/lifecycle-events.js.map +1 -1
- package/types/lifecycle-events.mjs +9 -7
- package/types/lifecycle-events.mjs.map +1 -1
- package/types/logging.d.ts +15 -11
- package/types/logging.js +30 -31
- package/types/logging.js.map +1 -1
- package/types/logging.mjs +29 -29
- package/types/logging.mjs.map +1 -1
- package/types/logic-error.d.ts +33 -29
- package/types/logic-error.js +50 -49
- package/types/logic-error.js.map +1 -1
- package/types/logic-error.mjs +49 -47
- package/types/logic-error.mjs.map +1 -1
- package/types/network-client.d.ts +32 -27
- package/types/network-client.js +10 -9
- package/types/network-client.js.map +1 -1
- package/types/network-client.mjs +9 -7
- package/types/network-client.mjs.map +1 -1
- package/types/testing.d.ts +131 -132
- package/types/testing.js +0 -3
- package/types/testing.mjs +0 -2
- package/types/transaction.d.ts +110 -110
- package/types/transaction.js +0 -3
- package/types/transaction.mjs +0 -2
- package/types/transfer.d.ts +70 -66
- package/types/transfer.js +0 -3
- package/types/transfer.mjs +0 -2
- package/util.js +73 -118
- package/util.js.map +1 -1
- package/util.mjs +73 -116
- package/util.mjs.map +1 -1
- package/account/index.d.ts +0 -5
- package/debugging/index.d.ts +0 -1
- package/index.js.map +0 -1
- package/index.mjs.map +0 -1
- package/localnet/index.d.ts +0 -4
- package/testing/_asset.d.ts +0 -3
- package/testing/fixtures/index.d.ts +0 -2
- package/testing/index.js.map +0 -1
- package/testing/index.mjs.map +0 -1
- package/transaction/index.d.ts +0 -2
- package/transaction/legacy-bridge.d.ts +0 -35
- package/transfer/index.d.ts +0 -2
- package/types/asset.js.map +0 -1
- package/types/asset.mjs.map +0 -1
- package/types/expand.js.map +0 -1
- package/types/expand.mjs.map +0 -1
- package/types/instance-of.js.map +0 -1
- package/types/instance-of.mjs.map +0 -1
- package/types/testing.js.map +0 -1
- package/types/testing.mjs.map +0 -1
- package/types/transaction.js.map +0 -1
- package/types/transaction.mjs.map +0 -1
- package/types/transfer.js.map +0 -1
- package/types/transfer.mjs.map +0 -1
- package/util.d.ts +0 -48
package/testing/test-logger.d.ts
CHANGED
|
@@ -1,40 +1,45 @@
|
|
|
1
|
-
import { Logger } from
|
|
2
|
-
import { LogSnapshotConfig } from
|
|
1
|
+
import { Logger } from "../types/logging.js";
|
|
2
|
+
import { LogSnapshotConfig } from "../types/testing.js";
|
|
3
|
+
|
|
4
|
+
//#region src/testing/test-logger.d.ts
|
|
3
5
|
/** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.
|
|
4
6
|
* This is useful for automated testing.
|
|
5
7
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
8
|
+
declare class TestLogger implements Logger {
|
|
9
|
+
private originalLogger;
|
|
10
|
+
private logs;
|
|
11
|
+
/**
|
|
12
|
+
* Create a new test logger that wraps the given logger if provided.
|
|
13
|
+
* @param originalLogger The optional original logger to wrap.
|
|
14
|
+
*/
|
|
15
|
+
constructor(originalLogger?: Logger);
|
|
16
|
+
/** Returns all logs captured thus far. */
|
|
17
|
+
get capturedLogs(): string[];
|
|
18
|
+
/** Clears all logs captured so far. */
|
|
19
|
+
clear(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Returns a captured log snapshot.
|
|
22
|
+
* This helps ensure that the provided configuration items won't appear
|
|
23
|
+
* with random values in the log snapshot, but rather will get substituted with predictable ids.
|
|
24
|
+
*
|
|
25
|
+
* https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic
|
|
26
|
+
*
|
|
27
|
+
* @example Jest Example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const logger = new TestLogger()
|
|
30
|
+
* ...
|
|
31
|
+
* expect(logger.getLogSnapshot()).toMatchSnapshot()
|
|
32
|
+
* ```
|
|
33
|
+
* @param config The snapshot configuration
|
|
34
|
+
* @returns The snapshotted logs.
|
|
35
|
+
*/
|
|
36
|
+
getLogSnapshot(config?: LogSnapshotConfig): string;
|
|
37
|
+
error(message: string, ...optionalParams: unknown[]): void;
|
|
38
|
+
warn(message: string, ...optionalParams: unknown[]): void;
|
|
39
|
+
info(message: string, ...optionalParams: unknown[]): void;
|
|
40
|
+
verbose(message: string, ...optionalParams: unknown[]): void;
|
|
41
|
+
debug(message: string, ...optionalParams: unknown[]): void;
|
|
40
42
|
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { TestLogger };
|
|
45
|
+
//# sourceMappingURL=test-logger.d.ts.map
|
package/testing/test-logger.js
CHANGED
|
@@ -1,78 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var util = require('../util.js');
|
|
4
|
-
|
|
1
|
+
const require_util = require("../util.js");
|
|
2
|
+
//#region src/testing/test-logger.ts
|
|
5
3
|
/** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${util.asJson(optionalParams)}` : ''}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
4
|
+
* This is useful for automated testing.
|
|
5
|
+
*/
|
|
6
|
+
var TestLogger = class {
|
|
7
|
+
originalLogger;
|
|
8
|
+
logs;
|
|
9
|
+
/**
|
|
10
|
+
* Create a new test logger that wraps the given logger if provided.
|
|
11
|
+
* @param originalLogger The optional original logger to wrap.
|
|
12
|
+
*/
|
|
13
|
+
constructor(originalLogger) {
|
|
14
|
+
this.originalLogger = originalLogger;
|
|
15
|
+
this.logs = [];
|
|
16
|
+
}
|
|
17
|
+
/** Returns all logs captured thus far. */
|
|
18
|
+
get capturedLogs() {
|
|
19
|
+
return this.logs;
|
|
20
|
+
}
|
|
21
|
+
/** Clears all logs captured so far. */
|
|
22
|
+
clear() {
|
|
23
|
+
this.logs = [];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns a captured log snapshot.
|
|
27
|
+
* This helps ensure that the provided configuration items won't appear
|
|
28
|
+
* with random values in the log snapshot, but rather will get substituted with predictable ids.
|
|
29
|
+
*
|
|
30
|
+
* https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic
|
|
31
|
+
*
|
|
32
|
+
* @example Jest Example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const logger = new TestLogger()
|
|
35
|
+
* ...
|
|
36
|
+
* expect(logger.getLogSnapshot()).toMatchSnapshot()
|
|
37
|
+
* ```
|
|
38
|
+
* @param config The snapshot configuration
|
|
39
|
+
* @returns The snapshotted logs.
|
|
40
|
+
*/
|
|
41
|
+
getLogSnapshot(config) {
|
|
42
|
+
const { transactions: transactionIds, accounts, apps } = config ?? {};
|
|
43
|
+
let snapshot = this.capturedLogs.filter(config?.filterPredicate ?? (() => true)).join("\n");
|
|
44
|
+
transactionIds?.forEach((txn, id) => snapshot = snapshot.replace(new RegExp(typeof txn === "string" ? txn : txn.txID(), "g"), `TXID_${id + 1}`));
|
|
45
|
+
accounts?.forEach((sender, id) => snapshot = snapshot.replace(new RegExp(typeof sender === "string" ? sender : "addr" in sender ? sender.addr.toString() : "address" in sender ? sender.address().toString() : sender.toString(), "g"), `ACCOUNT_${id + 1}`));
|
|
46
|
+
apps?.forEach((app, id) => snapshot = snapshot.replace(new RegExp(`\\b${app.toString()}\\b(?! bytes)`, "g"), `APP_${id + 1}`));
|
|
47
|
+
return snapshot;
|
|
48
|
+
}
|
|
49
|
+
error(message, ...optionalParams) {
|
|
50
|
+
this.originalLogger?.error(message, ...optionalParams);
|
|
51
|
+
this.logs.push(`ERROR: ${message}${optionalParams.length ? ` | ${require_util.asJson(optionalParams)}` : ""}`);
|
|
52
|
+
}
|
|
53
|
+
warn(message, ...optionalParams) {
|
|
54
|
+
this.originalLogger?.warn(message, ...optionalParams);
|
|
55
|
+
this.logs.push(`WARN: ${message}${optionalParams.length ? ` | ${require_util.asJson(optionalParams)}` : ""}`);
|
|
56
|
+
}
|
|
57
|
+
info(message, ...optionalParams) {
|
|
58
|
+
this.originalLogger?.info(message, ...optionalParams);
|
|
59
|
+
this.logs.push(`INFO: ${message}${optionalParams.length ? ` | ${require_util.asJson(optionalParams)}` : ""}`);
|
|
60
|
+
}
|
|
61
|
+
verbose(message, ...optionalParams) {
|
|
62
|
+
this.originalLogger?.verbose(message, ...optionalParams);
|
|
63
|
+
this.logs.push(`VERBOSE: ${message}${optionalParams.length ? ` | ${require_util.asJson(optionalParams)}` : ""}`);
|
|
64
|
+
}
|
|
65
|
+
debug(message, ...optionalParams) {
|
|
66
|
+
this.originalLogger?.debug(message, ...optionalParams);
|
|
67
|
+
this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${require_util.asJson(optionalParams)}` : ""}`);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
//#endregion
|
|
77
71
|
exports.TestLogger = TestLogger;
|
|
78
|
-
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=test-logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-logger.js","sources":["../../src/testing/test-logger.ts"],"sourcesContent":["import { Logger } from '../types/logging'\nimport { LogSnapshotConfig } from '../types/testing'\nimport { asJson } from '../util'\n\n/** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.\n * This is useful for automated testing.\n */\nexport class TestLogger implements Logger {\n private originalLogger: Logger | undefined\n private logs: string[]\n\n /**\n * Create a new test logger that wraps the given logger if provided.\n * @param originalLogger The optional original logger to wrap.\n */\n constructor(originalLogger?: Logger) {\n this.originalLogger = originalLogger\n this.logs = []\n }\n\n /** Returns all logs captured thus far. */\n get capturedLogs(): string[] {\n return this.logs\n }\n\n /** Clears all logs captured so far. */\n clear() {\n this.logs = []\n }\n\n /**\n * Returns a captured log snapshot.\n * This helps ensure that the provided configuration items won't appear\n * with random values in the log snapshot, but rather will get substituted with predictable ids.\n *\n * https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic\n *\n * @example Jest Example\n * ```typescript\n * const logger = new TestLogger()\n * ...\n * expect(logger.getLogSnapshot()).toMatchSnapshot()\n * ```\n * @param config The snapshot configuration\n * @returns The snapshotted logs.\n */\n getLogSnapshot(config?: LogSnapshotConfig) {\n const { transactions: transactionIds, accounts, apps } = config ?? {}\n let snapshot = this.capturedLogs.filter(config?.filterPredicate ?? (() => true)).join('\\n')\n transactionIds?.forEach(\n (txn, id) => (snapshot = snapshot.replace(new RegExp(typeof txn === 'string' ? txn : txn.txID(), 'g'), `TXID_${id + 1}`)),\n )\n accounts?.forEach(\n (sender, id) =>\n (snapshot = snapshot.replace(\n new RegExp(\n typeof sender === 'string'\n ? sender\n : 'addr' in sender\n ? sender.addr.toString()\n : 'address' in sender\n ? sender.address().toString()\n : sender.toString(),\n 'g',\n ),\n `ACCOUNT_${id + 1}`,\n )),\n )\n apps?.forEach((app, id) => (snapshot = snapshot.replace(new RegExp(`\\\\b${app.toString()}\\\\b(?! bytes)`, 'g'), `APP_${id + 1}`)))\n return snapshot\n }\n\n error(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.error(message, ...optionalParams)\n this.logs.push(`ERROR: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n warn(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.warn(message, ...optionalParams)\n this.logs.push(`WARN: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n info(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.info(message, ...optionalParams)\n this.logs.push(`INFO: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n verbose(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.verbose(message, ...optionalParams)\n this.logs.push(`VERBOSE: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n debug(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.debug(message, ...optionalParams)\n this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n}\n"],"
|
|
1
|
+
{"version":3,"file":"test-logger.js","names":["asJson"],"sources":["../../src/testing/test-logger.ts"],"sourcesContent":["import { Logger } from '../types/logging'\nimport { LogSnapshotConfig } from '../types/testing'\nimport { asJson } from '../util'\n\n/** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.\n * This is useful for automated testing.\n */\nexport class TestLogger implements Logger {\n private originalLogger: Logger | undefined\n private logs: string[]\n\n /**\n * Create a new test logger that wraps the given logger if provided.\n * @param originalLogger The optional original logger to wrap.\n */\n constructor(originalLogger?: Logger) {\n this.originalLogger = originalLogger\n this.logs = []\n }\n\n /** Returns all logs captured thus far. */\n get capturedLogs(): string[] {\n return this.logs\n }\n\n /** Clears all logs captured so far. */\n clear() {\n this.logs = []\n }\n\n /**\n * Returns a captured log snapshot.\n * This helps ensure that the provided configuration items won't appear\n * with random values in the log snapshot, but rather will get substituted with predictable ids.\n *\n * https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic\n *\n * @example Jest Example\n * ```typescript\n * const logger = new TestLogger()\n * ...\n * expect(logger.getLogSnapshot()).toMatchSnapshot()\n * ```\n * @param config The snapshot configuration\n * @returns The snapshotted logs.\n */\n getLogSnapshot(config?: LogSnapshotConfig) {\n const { transactions: transactionIds, accounts, apps } = config ?? {}\n let snapshot = this.capturedLogs.filter(config?.filterPredicate ?? (() => true)).join('\\n')\n transactionIds?.forEach(\n (txn, id) => (snapshot = snapshot.replace(new RegExp(typeof txn === 'string' ? txn : txn.txID(), 'g'), `TXID_${id + 1}`)),\n )\n accounts?.forEach(\n (sender, id) =>\n (snapshot = snapshot.replace(\n new RegExp(\n typeof sender === 'string'\n ? sender\n : 'addr' in sender\n ? sender.addr.toString()\n : 'address' in sender\n ? sender.address().toString()\n : sender.toString(),\n 'g',\n ),\n `ACCOUNT_${id + 1}`,\n )),\n )\n apps?.forEach((app, id) => (snapshot = snapshot.replace(new RegExp(`\\\\b${app.toString()}\\\\b(?! bytes)`, 'g'), `APP_${id + 1}`)))\n return snapshot\n }\n\n error(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.error(message, ...optionalParams)\n this.logs.push(`ERROR: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n warn(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.warn(message, ...optionalParams)\n this.logs.push(`WARN: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n info(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.info(message, ...optionalParams)\n this.logs.push(`INFO: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n verbose(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.verbose(message, ...optionalParams)\n this.logs.push(`VERBOSE: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n debug(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.debug(message, ...optionalParams)\n this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,aAAb,MAA0C;CACxC;CACA;;;;;CAMA,YAAY,gBAAyB;EACnC,KAAK,iBAAiB;EACtB,KAAK,OAAO,CAAC;CACf;;CAGA,IAAI,eAAyB;EAC3B,OAAO,KAAK;CACd;;CAGA,QAAQ;EACN,KAAK,OAAO,CAAC;CACf;;;;;;;;;;;;;;;;;CAkBA,eAAe,QAA4B;EACzC,MAAM,EAAE,cAAc,gBAAgB,UAAU,SAAS,UAAU,CAAC;EACpE,IAAI,WAAW,KAAK,aAAa,OAAO,QAAQ,0BAA0B,KAAK,CAAC,CAAC,KAAK,IAAI;EAC1F,gBAAgB,SACb,KAAK,OAAQ,WAAW,SAAS,QAAQ,IAAI,OAAO,OAAO,QAAQ,WAAW,MAAM,IAAI,KAAK,GAAG,GAAG,GAAG,QAAQ,KAAK,GAAG,CACzH;EACA,UAAU,SACP,QAAQ,OACN,WAAW,SAAS,QACnB,IAAI,OACF,OAAO,WAAW,WACd,SACA,UAAU,SACR,OAAO,KAAK,SAAS,IACrB,aAAa,SACX,OAAO,QAAQ,CAAC,CAAC,SAAS,IAC1B,OAAO,SAAS,GACxB,GACF,GACA,WAAW,KAAK,GAClB,CACJ;EACA,MAAM,SAAS,KAAK,OAAQ,WAAW,SAAS,QAAQ,IAAI,OAAO,MAAM,IAAI,SAAS,EAAE,gBAAgB,GAAG,GAAG,OAAO,KAAK,GAAG,CAAE;EAC/H,OAAO;CACT;CAEA,MAAM,SAAiB,GAAG,gBAAiC;EACzD,KAAK,gBAAgB,MAAM,SAAS,GAAG,cAAc;EACrD,KAAK,KAAK,KAAK,UAAU,UAAU,eAAe,SAAS,MAAMA,aAAAA,OAAO,cAAc,MAAM,IAAI;CAClG;CACA,KAAK,SAAiB,GAAG,gBAAiC;EACxD,KAAK,gBAAgB,KAAK,SAAS,GAAG,cAAc;EACpD,KAAK,KAAK,KAAK,SAAS,UAAU,eAAe,SAAS,MAAMA,aAAAA,OAAO,cAAc,MAAM,IAAI;CACjG;CACA,KAAK,SAAiB,GAAG,gBAAiC;EACxD,KAAK,gBAAgB,KAAK,SAAS,GAAG,cAAc;EACpD,KAAK,KAAK,KAAK,SAAS,UAAU,eAAe,SAAS,MAAMA,aAAAA,OAAO,cAAc,MAAM,IAAI;CACjG;CACA,QAAQ,SAAiB,GAAG,gBAAiC;EAC3D,KAAK,gBAAgB,QAAQ,SAAS,GAAG,cAAc;EACvD,KAAK,KAAK,KAAK,YAAY,UAAU,eAAe,SAAS,MAAMA,aAAAA,OAAO,cAAc,MAAM,IAAI;CACpG;CACA,MAAM,SAAiB,GAAG,gBAAiC;EACzD,KAAK,gBAAgB,MAAM,SAAS,GAAG,cAAc;EACrD,KAAK,KAAK,KAAK,UAAU,UAAU,eAAe,SAAS,MAAMA,aAAAA,OAAO,cAAc,MAAM,IAAI;CAClG;AACF"}
|
package/testing/test-logger.mjs
CHANGED
|
@@ -1,76 +1,73 @@
|
|
|
1
|
-
import { asJson } from
|
|
2
|
-
|
|
1
|
+
import { asJson } from "../util.mjs";
|
|
2
|
+
//#region src/testing/test-logger.ts
|
|
3
3
|
/** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
4
|
+
* This is useful for automated testing.
|
|
5
|
+
*/
|
|
6
|
+
var TestLogger = class {
|
|
7
|
+
originalLogger;
|
|
8
|
+
logs;
|
|
9
|
+
/**
|
|
10
|
+
* Create a new test logger that wraps the given logger if provided.
|
|
11
|
+
* @param originalLogger The optional original logger to wrap.
|
|
12
|
+
*/
|
|
13
|
+
constructor(originalLogger) {
|
|
14
|
+
this.originalLogger = originalLogger;
|
|
15
|
+
this.logs = [];
|
|
16
|
+
}
|
|
17
|
+
/** Returns all logs captured thus far. */
|
|
18
|
+
get capturedLogs() {
|
|
19
|
+
return this.logs;
|
|
20
|
+
}
|
|
21
|
+
/** Clears all logs captured so far. */
|
|
22
|
+
clear() {
|
|
23
|
+
this.logs = [];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns a captured log snapshot.
|
|
27
|
+
* This helps ensure that the provided configuration items won't appear
|
|
28
|
+
* with random values in the log snapshot, but rather will get substituted with predictable ids.
|
|
29
|
+
*
|
|
30
|
+
* https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic
|
|
31
|
+
*
|
|
32
|
+
* @example Jest Example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const logger = new TestLogger()
|
|
35
|
+
* ...
|
|
36
|
+
* expect(logger.getLogSnapshot()).toMatchSnapshot()
|
|
37
|
+
* ```
|
|
38
|
+
* @param config The snapshot configuration
|
|
39
|
+
* @returns The snapshotted logs.
|
|
40
|
+
*/
|
|
41
|
+
getLogSnapshot(config) {
|
|
42
|
+
const { transactions: transactionIds, accounts, apps } = config ?? {};
|
|
43
|
+
let snapshot = this.capturedLogs.filter(config?.filterPredicate ?? (() => true)).join("\n");
|
|
44
|
+
transactionIds?.forEach((txn, id) => snapshot = snapshot.replace(new RegExp(typeof txn === "string" ? txn : txn.txID(), "g"), `TXID_${id + 1}`));
|
|
45
|
+
accounts?.forEach((sender, id) => snapshot = snapshot.replace(new RegExp(typeof sender === "string" ? sender : "addr" in sender ? sender.addr.toString() : "address" in sender ? sender.address().toString() : sender.toString(), "g"), `ACCOUNT_${id + 1}`));
|
|
46
|
+
apps?.forEach((app, id) => snapshot = snapshot.replace(new RegExp(`\\b${app.toString()}\\b(?! bytes)`, "g"), `APP_${id + 1}`));
|
|
47
|
+
return snapshot;
|
|
48
|
+
}
|
|
49
|
+
error(message, ...optionalParams) {
|
|
50
|
+
this.originalLogger?.error(message, ...optionalParams);
|
|
51
|
+
this.logs.push(`ERROR: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ""}`);
|
|
52
|
+
}
|
|
53
|
+
warn(message, ...optionalParams) {
|
|
54
|
+
this.originalLogger?.warn(message, ...optionalParams);
|
|
55
|
+
this.logs.push(`WARN: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ""}`);
|
|
56
|
+
}
|
|
57
|
+
info(message, ...optionalParams) {
|
|
58
|
+
this.originalLogger?.info(message, ...optionalParams);
|
|
59
|
+
this.logs.push(`INFO: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ""}`);
|
|
60
|
+
}
|
|
61
|
+
verbose(message, ...optionalParams) {
|
|
62
|
+
this.originalLogger?.verbose(message, ...optionalParams);
|
|
63
|
+
this.logs.push(`VERBOSE: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ""}`);
|
|
64
|
+
}
|
|
65
|
+
debug(message, ...optionalParams) {
|
|
66
|
+
this.originalLogger?.debug(message, ...optionalParams);
|
|
67
|
+
this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ""}`);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
//#endregion
|
|
75
71
|
export { TestLogger };
|
|
76
|
-
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=test-logger.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-logger.mjs","sources":["../../src/testing/test-logger.ts"],"sourcesContent":["import { Logger } from '../types/logging'\nimport { LogSnapshotConfig } from '../types/testing'\nimport { asJson } from '../util'\n\n/** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.\n * This is useful for automated testing.\n */\nexport class TestLogger implements Logger {\n private originalLogger: Logger | undefined\n private logs: string[]\n\n /**\n * Create a new test logger that wraps the given logger if provided.\n * @param originalLogger The optional original logger to wrap.\n */\n constructor(originalLogger?: Logger) {\n this.originalLogger = originalLogger\n this.logs = []\n }\n\n /** Returns all logs captured thus far. */\n get capturedLogs(): string[] {\n return this.logs\n }\n\n /** Clears all logs captured so far. */\n clear() {\n this.logs = []\n }\n\n /**\n * Returns a captured log snapshot.\n * This helps ensure that the provided configuration items won't appear\n * with random values in the log snapshot, but rather will get substituted with predictable ids.\n *\n * https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic\n *\n * @example Jest Example\n * ```typescript\n * const logger = new TestLogger()\n * ...\n * expect(logger.getLogSnapshot()).toMatchSnapshot()\n * ```\n * @param config The snapshot configuration\n * @returns The snapshotted logs.\n */\n getLogSnapshot(config?: LogSnapshotConfig) {\n const { transactions: transactionIds, accounts, apps } = config ?? {}\n let snapshot = this.capturedLogs.filter(config?.filterPredicate ?? (() => true)).join('\\n')\n transactionIds?.forEach(\n (txn, id) => (snapshot = snapshot.replace(new RegExp(typeof txn === 'string' ? txn : txn.txID(), 'g'), `TXID_${id + 1}`)),\n )\n accounts?.forEach(\n (sender, id) =>\n (snapshot = snapshot.replace(\n new RegExp(\n typeof sender === 'string'\n ? sender\n : 'addr' in sender\n ? sender.addr.toString()\n : 'address' in sender\n ? sender.address().toString()\n : sender.toString(),\n 'g',\n ),\n `ACCOUNT_${id + 1}`,\n )),\n )\n apps?.forEach((app, id) => (snapshot = snapshot.replace(new RegExp(`\\\\b${app.toString()}\\\\b(?! bytes)`, 'g'), `APP_${id + 1}`)))\n return snapshot\n }\n\n error(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.error(message, ...optionalParams)\n this.logs.push(`ERROR: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n warn(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.warn(message, ...optionalParams)\n this.logs.push(`WARN: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n info(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.info(message, ...optionalParams)\n this.logs.push(`INFO: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n verbose(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.verbose(message, ...optionalParams)\n this.logs.push(`VERBOSE: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n debug(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.debug(message, ...optionalParams)\n this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n}\n"],"
|
|
1
|
+
{"version":3,"file":"test-logger.mjs","names":[],"sources":["../../src/testing/test-logger.ts"],"sourcesContent":["import { Logger } from '../types/logging'\nimport { LogSnapshotConfig } from '../types/testing'\nimport { asJson } from '../util'\n\n/** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.\n * This is useful for automated testing.\n */\nexport class TestLogger implements Logger {\n private originalLogger: Logger | undefined\n private logs: string[]\n\n /**\n * Create a new test logger that wraps the given logger if provided.\n * @param originalLogger The optional original logger to wrap.\n */\n constructor(originalLogger?: Logger) {\n this.originalLogger = originalLogger\n this.logs = []\n }\n\n /** Returns all logs captured thus far. */\n get capturedLogs(): string[] {\n return this.logs\n }\n\n /** Clears all logs captured so far. */\n clear() {\n this.logs = []\n }\n\n /**\n * Returns a captured log snapshot.\n * This helps ensure that the provided configuration items won't appear\n * with random values in the log snapshot, but rather will get substituted with predictable ids.\n *\n * https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic\n *\n * @example Jest Example\n * ```typescript\n * const logger = new TestLogger()\n * ...\n * expect(logger.getLogSnapshot()).toMatchSnapshot()\n * ```\n * @param config The snapshot configuration\n * @returns The snapshotted logs.\n */\n getLogSnapshot(config?: LogSnapshotConfig) {\n const { transactions: transactionIds, accounts, apps } = config ?? {}\n let snapshot = this.capturedLogs.filter(config?.filterPredicate ?? (() => true)).join('\\n')\n transactionIds?.forEach(\n (txn, id) => (snapshot = snapshot.replace(new RegExp(typeof txn === 'string' ? txn : txn.txID(), 'g'), `TXID_${id + 1}`)),\n )\n accounts?.forEach(\n (sender, id) =>\n (snapshot = snapshot.replace(\n new RegExp(\n typeof sender === 'string'\n ? sender\n : 'addr' in sender\n ? sender.addr.toString()\n : 'address' in sender\n ? sender.address().toString()\n : sender.toString(),\n 'g',\n ),\n `ACCOUNT_${id + 1}`,\n )),\n )\n apps?.forEach((app, id) => (snapshot = snapshot.replace(new RegExp(`\\\\b${app.toString()}\\\\b(?! bytes)`, 'g'), `APP_${id + 1}`)))\n return snapshot\n }\n\n error(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.error(message, ...optionalParams)\n this.logs.push(`ERROR: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n warn(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.warn(message, ...optionalParams)\n this.logs.push(`WARN: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n info(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.info(message, ...optionalParams)\n this.logs.push(`INFO: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n verbose(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.verbose(message, ...optionalParams)\n this.logs.push(`VERBOSE: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n debug(message: string, ...optionalParams: unknown[]): void {\n this.originalLogger?.debug(message, ...optionalParams)\n this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${asJson(optionalParams)}` : ''}`)\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,aAAb,MAA0C;CACxC;CACA;;;;;CAMA,YAAY,gBAAyB;EACnC,KAAK,iBAAiB;EACtB,KAAK,OAAO,CAAC;CACf;;CAGA,IAAI,eAAyB;EAC3B,OAAO,KAAK;CACd;;CAGA,QAAQ;EACN,KAAK,OAAO,CAAC;CACf;;;;;;;;;;;;;;;;;CAkBA,eAAe,QAA4B;EACzC,MAAM,EAAE,cAAc,gBAAgB,UAAU,SAAS,UAAU,CAAC;EACpE,IAAI,WAAW,KAAK,aAAa,OAAO,QAAQ,0BAA0B,KAAK,CAAC,CAAC,KAAK,IAAI;EAC1F,gBAAgB,SACb,KAAK,OAAQ,WAAW,SAAS,QAAQ,IAAI,OAAO,OAAO,QAAQ,WAAW,MAAM,IAAI,KAAK,GAAG,GAAG,GAAG,QAAQ,KAAK,GAAG,CACzH;EACA,UAAU,SACP,QAAQ,OACN,WAAW,SAAS,QACnB,IAAI,OACF,OAAO,WAAW,WACd,SACA,UAAU,SACR,OAAO,KAAK,SAAS,IACrB,aAAa,SACX,OAAO,QAAQ,CAAC,CAAC,SAAS,IAC1B,OAAO,SAAS,GACxB,GACF,GACA,WAAW,KAAK,GAClB,CACJ;EACA,MAAM,SAAS,KAAK,OAAQ,WAAW,SAAS,QAAQ,IAAI,OAAO,MAAM,IAAI,SAAS,EAAE,gBAAgB,GAAG,GAAG,OAAO,KAAK,GAAG,CAAE;EAC/H,OAAO;CACT;CAEA,MAAM,SAAiB,GAAG,gBAAiC;EACzD,KAAK,gBAAgB,MAAM,SAAS,GAAG,cAAc;EACrD,KAAK,KAAK,KAAK,UAAU,UAAU,eAAe,SAAS,MAAM,OAAO,cAAc,MAAM,IAAI;CAClG;CACA,KAAK,SAAiB,GAAG,gBAAiC;EACxD,KAAK,gBAAgB,KAAK,SAAS,GAAG,cAAc;EACpD,KAAK,KAAK,KAAK,SAAS,UAAU,eAAe,SAAS,MAAM,OAAO,cAAc,MAAM,IAAI;CACjG;CACA,KAAK,SAAiB,GAAG,gBAAiC;EACxD,KAAK,gBAAgB,KAAK,SAAS,GAAG,cAAc;EACpD,KAAK,KAAK,KAAK,SAAS,UAAU,eAAe,SAAS,MAAM,OAAO,cAAc,MAAM,IAAI;CACjG;CACA,QAAQ,SAAiB,GAAG,gBAAiC;EAC3D,KAAK,gBAAgB,QAAQ,SAAS,GAAG,cAAc;EACvD,KAAK,KAAK,KAAK,YAAY,UAAU,eAAe,SAAS,MAAM,OAAO,cAAc,MAAM,IAAI;CACpG;CACA,MAAM,SAAiB,GAAG,gBAAiC;EACzD,KAAK,gBAAgB,MAAM,SAAS,GAAG,cAAc;EACrD,KAAK,KAAK,KAAK,UAAU,UAAU,eAAe,SAAS,MAAM,OAAO,cAAc,MAAM,IAAI;CAClG;AACF"}
|
|
@@ -1,32 +1,35 @@
|
|
|
1
|
-
import algosdk from
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import algosdk from "algosdk";
|
|
2
|
+
|
|
3
|
+
//#region src/testing/transaction-logger.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Allows you to keep track of Algorand transaction IDs by wrapping an `Algodv2` in a proxy.
|
|
6
6
|
* Useful for automated tests.
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
8
|
+
declare class TransactionLogger {
|
|
9
|
+
private _sentTransactionIds;
|
|
10
|
+
private _latestLastValidRound?;
|
|
11
|
+
private _pushTxn;
|
|
12
|
+
/**
|
|
13
|
+
* The list of transaction IDs that has been logged thus far.
|
|
14
|
+
*/
|
|
15
|
+
get sentTransactionIds(): Readonly<string[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Clear all logged IDs.
|
|
18
|
+
*/
|
|
19
|
+
clear(): void;
|
|
20
|
+
/**
|
|
21
|
+
* The method that captures raw transactions and stores the transaction IDs.
|
|
22
|
+
*/
|
|
23
|
+
logRawTransaction(signedTransactions: Uint8Array | Uint8Array[]): void;
|
|
24
|
+
/** Return a proxy that wraps the given Algodv2 with this transaction logger.
|
|
25
|
+
*
|
|
26
|
+
* @param algod The `Algodv2` to wrap
|
|
27
|
+
* @returns The wrapped `Algodv2`, any transactions sent using this algod instance will be logged by this transaction logger
|
|
28
|
+
*/
|
|
29
|
+
capture(algod: Algodv2): Algodv2;
|
|
30
|
+
/** Wait until all logged transactions IDs appear in the given `Indexer`. */
|
|
31
|
+
waitForIndexer(indexer: Indexer): Promise<void>;
|
|
32
32
|
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { TransactionLogger };
|
|
35
|
+
//# sourceMappingURL=transaction-logger.d.ts.map
|