@algorandfoundation/algokit-utils 6.1.0-beta.1 → 6.1.0-beta.3
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/README.md +8 -0
- package/account/account.d.ts +24 -3
- package/account/account.d.ts.map +1 -1
- package/account/account.js +29 -53
- package/account/account.js.map +1 -1
- package/account/account.mjs +29 -53
- package/account/account.mjs.map +1 -1
- package/account/get-account.d.ts +2 -2
- package/account/get-account.d.ts.map +1 -1
- package/account/get-account.js +9 -29
- package/account/get-account.js.map +1 -1
- package/account/get-account.mjs +4 -24
- package/account/get-account.mjs.map +1 -1
- package/account/get-dispenser-account.d.ts +7 -2
- package/account/get-dispenser-account.d.ts.map +1 -1
- package/account/get-dispenser-account.js +7 -8
- package/account/get-dispenser-account.js.map +1 -1
- package/account/get-dispenser-account.mjs +7 -8
- package/account/get-dispenser-account.mjs.map +1 -1
- package/account/mnemonic-account.d.ts +4 -1
- package/account/mnemonic-account.d.ts.map +1 -1
- package/account/mnemonic-account.js +4 -1
- package/account/mnemonic-account.js.map +1 -1
- package/account/mnemonic-account.mjs +4 -1
- package/account/mnemonic-account.mjs.map +1 -1
- package/dispenser-client.d.ts +2 -0
- package/dispenser-client.d.ts.map +1 -1
- package/dispenser-client.js +2 -0
- package/dispenser-client.js.map +1 -1
- package/dispenser-client.mjs +2 -0
- package/dispenser-client.mjs.map +1 -1
- package/index.d.ts +7 -7
- package/index.d.ts.map +1 -1
- package/index.js +31 -31
- package/index.mjs +9 -9
- package/localnet/get-kmd-wallet-account.d.ts +2 -0
- package/localnet/get-kmd-wallet-account.d.ts.map +1 -1
- package/localnet/get-kmd-wallet-account.js +5 -30
- package/localnet/get-kmd-wallet-account.js.map +1 -1
- package/localnet/get-kmd-wallet-account.mjs +5 -30
- package/localnet/get-kmd-wallet-account.mjs.map +1 -1
- package/localnet/get-localnet-dispenser-account.d.ts +2 -0
- package/localnet/get-localnet-dispenser-account.d.ts.map +1 -1
- package/localnet/get-localnet-dispenser-account.js +5 -7
- package/localnet/get-localnet-dispenser-account.js.map +1 -1
- package/localnet/get-localnet-dispenser-account.mjs +5 -7
- package/localnet/get-localnet-dispenser-account.mjs.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.d.ts +2 -0
- package/localnet/get-or-create-kmd-wallet-account.d.ts.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.js +5 -27
- package/localnet/get-or-create-kmd-wallet-account.js.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.mjs +5 -27
- package/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -1
- package/localnet/is-localnet.d.ts +4 -1
- package/localnet/is-localnet.d.ts.map +1 -1
- package/localnet/is-localnet.js +7 -3
- package/localnet/is-localnet.js.map +1 -1
- package/localnet/is-localnet.mjs +7 -3
- package/localnet/is-localnet.mjs.map +1 -1
- package/network-client.d.ts +36 -8
- package/network-client.d.ts.map +1 -1
- package/network-client.js +49 -88
- package/network-client.js.map +1 -1
- package/network-client.mjs +49 -88
- package/network-client.mjs.map +1 -1
- package/package.json +3 -2
- package/testing/account.d.ts +3 -5
- package/testing/account.d.ts.map +1 -1
- package/testing/account.js +6 -9
- package/testing/account.js.map +1 -1
- package/testing/account.mjs +6 -9
- package/testing/account.mjs.map +1 -1
- package/testing/fixtures/algorand-fixture.d.ts +20 -2
- package/testing/fixtures/algorand-fixture.d.ts.map +1 -1
- package/testing/fixtures/algorand-fixture.js +11 -30
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs +11 -30
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/transaction/transaction.d.ts.map +1 -1
- package/transaction/transaction.js +8 -8
- package/transaction/transaction.js.map +1 -1
- package/transaction/transaction.mjs +8 -8
- package/transaction/transaction.mjs.map +1 -1
- package/transfer/transfer.js +4 -4
- package/transfer/transfer.js.map +1 -1
- package/transfer/transfer.mjs +4 -4
- package/transfer/transfer.mjs.map +1 -1
- package/types/account-manager.d.ts +108 -24
- package/types/account-manager.d.ts.map +1 -1
- package/types/account-manager.js +167 -34
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +166 -34
- package/types/account-manager.mjs.map +1 -1
- package/types/account.d.ts +13 -11
- package/types/account.d.ts.map +1 -1
- package/types/algorand-client.d.ts +12 -6
- package/types/algorand-client.d.ts.map +1 -1
- package/types/algorand-client.js +20 -15
- package/types/algorand-client.js.map +1 -1
- package/types/algorand-client.mjs +20 -15
- package/types/algorand-client.mjs.map +1 -1
- package/types/client-manager.d.ts +197 -4
- package/types/client-manager.d.ts.map +1 -1
- package/types/client-manager.js +284 -7
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs +284 -7
- package/types/client-manager.mjs.map +1 -1
- package/types/indexer.d.ts +11 -2
- package/types/indexer.d.ts.map +1 -1
- package/types/indexer.js.map +1 -1
- package/types/indexer.mjs.map +1 -1
- package/types/kmd-account-manager.d.ts +70 -0
- package/types/kmd-account-manager.d.ts.map +1 -0
- package/types/kmd-account-manager.js +144 -0
- package/types/kmd-account-manager.js.map +1 -0
- package/types/kmd-account-manager.mjs +142 -0
- package/types/kmd-account-manager.mjs.map +1 -0
- package/types/network-client.d.ts +2 -2
- package/types/network-client.d.ts.map +1 -1
- package/types/testing.d.ts +9 -6
- package/types/testing.d.ts.map +1 -1
package/network-client.mjs
CHANGED
|
@@ -1,90 +1,54 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { AlgoHttpClientWithRetry } from './types/algo-http-client-with-retry.mjs';
|
|
1
|
+
import { ClientManager } from './types/client-manager.mjs';
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use `ClientManager.getConfigFromEnvironmentOrLocalNet()` instead.
|
|
5
|
+
*
|
|
6
|
+
* Retrieve configurations from environment variables when defined or get defaults (expects to be called from a Node.js environment not algod-side)
|
|
7
|
+
*/
|
|
8
8
|
function getConfigFromEnvOrDefaults() {
|
|
9
|
-
|
|
10
|
-
throw new Error('Attempt to get default algod configuration from a non Node.js context; supply the config instead');
|
|
11
|
-
}
|
|
12
|
-
const algodConfig = !process.env.ALGOD_SERVER
|
|
13
|
-
? getDefaultLocalNetConfig('algod')
|
|
14
|
-
: { server: process.env.ALGOD_SERVER, port: process.env.ALGOD_PORT, token: process.env.ALGOD_TOKEN };
|
|
15
|
-
const indexerConfig = !process.env.INDEXER_SERVER
|
|
16
|
-
? getDefaultLocalNetConfig('indexer')
|
|
17
|
-
: {
|
|
18
|
-
server: process.env.INDEXER_SERVER,
|
|
19
|
-
port: process.env.INDEXER_PORT,
|
|
20
|
-
token: process.env.INDEXER_TOKEN,
|
|
21
|
-
};
|
|
22
|
-
return {
|
|
23
|
-
algodConfig,
|
|
24
|
-
indexerConfig,
|
|
25
|
-
kmdConfig: process && process.env && process.env.ALGOD_SERVER
|
|
26
|
-
? { ...algodConfig, port: process?.env?.KMD_PORT ?? '4002' }
|
|
27
|
-
: getDefaultLocalNetConfig('kmd'),
|
|
28
|
-
};
|
|
9
|
+
return ClientManager.getConfigFromEnvironmentOrLocalNet();
|
|
29
10
|
}
|
|
30
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Use `ClientManager.getAlgodConfigFromEnvironment()` instead.
|
|
13
|
+
*
|
|
14
|
+
* Retrieve the algod configuration from environment variables (expects to be called from a Node.js environment not algod-side)
|
|
15
|
+
*/
|
|
31
16
|
function getAlgodConfigFromEnvironment() {
|
|
32
|
-
|
|
33
|
-
throw new Error('Attempt to get default algod configuration from a non Node.js context; supply the config instead');
|
|
34
|
-
}
|
|
35
|
-
if (!process.env.ALGOD_SERVER) {
|
|
36
|
-
throw new Error('Attempt to get default algod configuration without specifying ALGOD_SERVER in the environment variables');
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
server: process.env.ALGOD_SERVER,
|
|
40
|
-
port: process.env.ALGOD_PORT,
|
|
41
|
-
token: process.env.ALGOD_TOKEN,
|
|
42
|
-
};
|
|
17
|
+
return ClientManager.getAlgodConfigFromEnvironment();
|
|
43
18
|
}
|
|
44
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Use `ClientManager.getIndexerConfigFromEnvironment()` instead.
|
|
21
|
+
*
|
|
22
|
+
* Retrieve the indexer configuration from environment variables (expects to be called from a Node.js environment not algod-side)
|
|
23
|
+
*/
|
|
45
24
|
function getIndexerConfigFromEnvironment() {
|
|
46
|
-
|
|
47
|
-
throw new Error('Attempt to get default indexer configuration from a non Node.js context; supply the config instead');
|
|
48
|
-
}
|
|
49
|
-
if (!process.env.INDEXER_SERVER) {
|
|
50
|
-
throw new Error('Attempt to get default indexer configuration without specifying INDEXER_SERVER in the environment variables');
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
server: process.env.INDEXER_SERVER,
|
|
54
|
-
port: process.env.INDEXER_PORT,
|
|
55
|
-
token: process.env.INDEXER_TOKEN,
|
|
56
|
-
};
|
|
25
|
+
return ClientManager.getIndexerConfigFromEnvironment();
|
|
57
26
|
}
|
|
58
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Use `ClientManager.getAlgoNodeConfig(network, config)` instead.
|
|
29
|
+
*
|
|
30
|
+
* Returns the Algorand configuration to point to the AlgoNode service
|
|
59
31
|
*
|
|
60
32
|
* @param network Which network to connect to - TestNet or MainNet
|
|
61
33
|
* @param config Which algod config to return - Algod or Indexer
|
|
62
34
|
*/
|
|
63
35
|
function getAlgoNodeConfig(network, config) {
|
|
64
|
-
return
|
|
65
|
-
server: `https://${network}-${config === 'algod' ? 'api' : 'idx'}.algonode.cloud/`,
|
|
66
|
-
port: 443,
|
|
67
|
-
};
|
|
36
|
+
return ClientManager.getAlgoNodeConfig(network, config);
|
|
68
37
|
}
|
|
69
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated Use `ClientManager.getDefaultLocalNetConfig(configOrPort)` instead.
|
|
40
|
+
*
|
|
41
|
+
* Returns the Algorand configuration to point to the default LocalNet
|
|
70
42
|
*
|
|
71
43
|
* @param configOrPort Which algod config to return - algod, kmd, or indexer OR a port number
|
|
72
44
|
*/
|
|
73
45
|
function getDefaultLocalNetConfig(configOrPort) {
|
|
74
|
-
return
|
|
75
|
-
server: `http://localhost`,
|
|
76
|
-
port: configOrPort === 'algod' ? 4001 : configOrPort === 'indexer' ? 8980 : configOrPort === 'kmd' ? 4002 : configOrPort,
|
|
77
|
-
token: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
|
78
|
-
};
|
|
46
|
+
return ClientManager.getDefaultLocalNetConfig(configOrPort);
|
|
79
47
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
// Because we override the default HTTP Client construction (to get retries) we need to put a string token into the standard header ourselves
|
|
85
|
-
return typeof token === 'string' ? { [defaultHeader ?? 'X-Algo-API-Token']: token } : token ?? {};
|
|
86
|
-
}
|
|
87
|
-
/** Returns an algod SDK client that automatically retries on idempotent calls
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated Use `ClientManager.getAlgodClient(config)` or `ClientManager.getAlgodClientFromEnvironment()` instead.
|
|
50
|
+
*
|
|
51
|
+
* Returns an algod SDK client that automatically retries transient failures on idempotent calls
|
|
88
52
|
*
|
|
89
53
|
* @param config The config if you want to override the default (getting config from process.env)
|
|
90
54
|
* @example Default (load from environment variables)
|
|
@@ -112,11 +76,12 @@ function getAlgoTokenHeader(server, token, defaultHeader) {
|
|
|
112
76
|
* ```
|
|
113
77
|
*/
|
|
114
78
|
function getAlgoClient(config) {
|
|
115
|
-
|
|
116
|
-
const httpClientWithRetry = new AlgoHttpClientWithRetry(getAlgoTokenHeader(server, token), server, port);
|
|
117
|
-
return new algosdk.Algodv2(httpClientWithRetry, server);
|
|
79
|
+
return config ? ClientManager.getAlgodClient(config) : ClientManager.getAlgodClientFromEnvironment();
|
|
118
80
|
}
|
|
119
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated Use `ClientManager.getIndexerClient(config, overrideIntDecoding)` or `ClientManager.getIndexerClientFromEnvironment(overrideIntDecoding)` instead.
|
|
83
|
+
*
|
|
84
|
+
* Returns an indexer SDK client that automatically retries transient failures on idempotent calls
|
|
120
85
|
*
|
|
121
86
|
* @param config The config if you want to override the default (getting config from process.env)
|
|
122
87
|
* @param overrideIntDecoding Override the default int decoding for responses, uses MIXED by default to avoid lost precision for big integers
|
|
@@ -148,15 +113,14 @@ function getAlgoClient(config) {
|
|
|
148
113
|
* ```
|
|
149
114
|
*/
|
|
150
115
|
function getAlgoIndexerClient(config, overrideIntDecoding) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
// Use mixed int decoding by default so bigints don't have lost precision
|
|
155
|
-
indexer.setIntEncoding(overrideIntDecoding ?? IntDecoding.MIXED);
|
|
156
|
-
return indexer;
|
|
116
|
+
return config
|
|
117
|
+
? ClientManager.getIndexerClient(config, overrideIntDecoding)
|
|
118
|
+
: ClientManager.getIndexerClientFromEnvironment(overrideIntDecoding);
|
|
157
119
|
}
|
|
158
120
|
/**
|
|
159
|
-
*
|
|
121
|
+
* @deprecated Use `ClientManager.getKmdClient(config)` or `ClientManager.getKmdClientFromEnvironment()` instead.
|
|
122
|
+
*
|
|
123
|
+
* Returns a KMD SDK client that automatically retries transient failures on idempotent calls.
|
|
160
124
|
*
|
|
161
125
|
* KMD client allows you to export private keys, which is useful to get the default account in a LocalNet network.
|
|
162
126
|
*
|
|
@@ -173,18 +137,15 @@ function getAlgoIndexerClient(config, overrideIntDecoding) {
|
|
|
173
137
|
* ```
|
|
174
138
|
*/
|
|
175
139
|
function getAlgoKmdClient(config) {
|
|
176
|
-
|
|
177
|
-
// We can only use Kmd on the LocalNet otherwise it's not exposed so this makes some assumptions
|
|
178
|
-
// (e.g. same token and server as algod and port 4002 by default)
|
|
179
|
-
return new Kmd(token, server, process?.env?.KMD_PORT ?? '4002');
|
|
140
|
+
return config ? ClientManager.getKmdClient(config) : ClientManager.getKmdClientFromEnvironment();
|
|
180
141
|
}
|
|
142
|
+
/** @deprecated Use `await algorandClient.client.isTestNet()` or `await new ClientManager({ algod }).isTestNet()` instead. */
|
|
181
143
|
async function isTestNet(algod) {
|
|
182
|
-
|
|
183
|
-
return ['testnet-v1.0', 'testnet-v1', 'testnet'].includes(params.genesisID);
|
|
144
|
+
return await new ClientManager({ algod }).isTestNet();
|
|
184
145
|
}
|
|
146
|
+
/** @deprecated Use `await algorandClient.client.isMainNet()` or `await new ClientManager({ algod }).isMainNet()` instead. */
|
|
185
147
|
async function isMainNet(algod) {
|
|
186
|
-
|
|
187
|
-
return ['mainnet-v1.0', 'mainnet-v1', 'mainnet'].includes(params.genesisID);
|
|
148
|
+
return await new ClientManager({ algod }).isMainNet();
|
|
188
149
|
}
|
|
189
150
|
|
|
190
151
|
export { getAlgoClient, getAlgoIndexerClient, getAlgoKmdClient, getAlgoNodeConfig, getAlgodConfigFromEnvironment, getConfigFromEnvOrDefaults, getDefaultLocalNetConfig, getIndexerConfigFromEnvironment, isMainNet, isTestNet };
|
package/network-client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-client.mjs","sources":["../src/network-client.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"network-client.mjs","sources":["../src/network-client.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAQA;;;;AAIG;SACa,0BAA0B,GAAA;AACxC,IAAA,OAAO,aAAa,CAAC,kCAAkC,EAAE,CAAA;AAC3D,CAAC;AAED;;;;AAIG;SACa,6BAA6B,GAAA;AAC3C,IAAA,OAAO,aAAa,CAAC,6BAA6B,EAAE,CAAA;AACtD,CAAC;AAED;;;;AAIG;SACa,+BAA+B,GAAA;AAC7C,IAAA,OAAO,aAAa,CAAC,+BAA+B,EAAE,CAAA;AACxD,CAAC;AAED;;;;;;;AAOG;AACa,SAAA,iBAAiB,CAAC,OAA8B,EAAE,MAA2B,EAAA;IAC3F,OAAO,aAAa,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;AAMG;AACG,SAAU,wBAAwB,CAAC,YAAkD,EAAA;AACzF,IAAA,OAAO,aAAa,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AACG,SAAU,aAAa,CAAC,MAAyB,EAAA;AACrD,IAAA,OAAO,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,6BAA6B,EAAE,CAAA;AACtG,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;AACa,SAAA,oBAAoB,CAAC,MAAyB,EAAE,mBAAiC,EAAA;AAC/F,IAAA,OAAO,MAAM;UACT,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,CAAC;AAC7D,UAAE,aAAa,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,gBAAgB,CAAC,MAAyB,EAAA;AACxD,IAAA,OAAO,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,2BAA2B,EAAE,CAAA;AAClG,CAAC;AAED;AACO,eAAe,SAAS,CAAC,KAAc,EAAA;IAC5C,OAAO,MAAM,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAA;AACvD,CAAC;AAED;AACO,eAAe,SAAS,CAAC,KAAc,EAAA;IAC5C,OAAO,MAAM,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAA;AACvD;;;;"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"**"
|
|
7
7
|
],
|
|
8
8
|
"name": "@algorandfoundation/algokit-utils",
|
|
9
|
-
"version": "6.1.0-beta.
|
|
9
|
+
"version": "6.1.0-beta.3",
|
|
10
10
|
"private": false,
|
|
11
11
|
"description": "A set of core Algorand utilities written in TypeScript and released via npm that make it easier to build solutions on Algorand.",
|
|
12
12
|
"author": "Algorand Foundation",
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
},
|
|
38
38
|
"overrides": {
|
|
39
39
|
"semver": "7.5.2",
|
|
40
|
-
"eslint-plugin-prettier": "5.0.0"
|
|
40
|
+
"eslint-plugin-prettier": "5.0.0",
|
|
41
|
+
"braces": "3.0.3"
|
|
41
42
|
},
|
|
42
43
|
"dependencies": {
|
|
43
44
|
"buffer": "^6.0.3"
|
package/testing/account.d.ts
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import algosdk from 'algosdk';
|
|
2
|
+
import { AlgorandClient } from '../';
|
|
2
3
|
import { GetTestAccountParams } from '../types/testing';
|
|
3
4
|
import Account = algosdk.Account;
|
|
4
|
-
import Algodv2 = algosdk.Algodv2;
|
|
5
|
-
import Kmd = algosdk.Kmd;
|
|
6
5
|
/**
|
|
7
6
|
* Creates an ephemeral Algorand account for the purposes of testing.
|
|
8
7
|
* Returns a newly created random test account that is funded from the dispenser
|
|
9
8
|
* DO NOT USE THIS TO CREATE A MAINNET ACCOUNT!
|
|
10
9
|
* Note: By default this will log the mnemonic of the account.
|
|
11
10
|
* @param param0 The config for the test account to generate
|
|
12
|
-
* @param
|
|
13
|
-
* @param kmd A KMD client, if not specified then a default KMD client will be loaded from environment variables
|
|
11
|
+
* @param algorand An AlgorandClient client
|
|
14
12
|
* @returns The account, with private key loaded
|
|
15
13
|
*/
|
|
16
|
-
export declare function getTestAccount({ suppressLog, initialFunds, accountGetter }: GetTestAccountParams,
|
|
14
|
+
export declare function getTestAccount({ suppressLog, initialFunds, accountGetter }: GetTestAccountParams, algorand: AlgorandClient): Promise<Account>;
|
|
17
15
|
//# sourceMappingURL=account.d.ts.map
|
package/testing/account.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/testing/account.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/testing/account.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAU,MAAM,KAAK,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AAEhC;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,oBAAoB,EAClE,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
package/testing/account.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var algosdk = require('algosdk');
|
|
4
|
-
var transferAlgos = require('../transfer/transfer-algos.js');
|
|
5
4
|
var config = require('../config.js');
|
|
6
|
-
var getDispenserAccount = require('../account/get-dispenser-account.js');
|
|
7
5
|
|
|
8
6
|
/**
|
|
9
7
|
* Creates an ephemeral Algorand account for the purposes of testing.
|
|
@@ -11,16 +9,15 @@ var getDispenserAccount = require('../account/get-dispenser-account.js');
|
|
|
11
9
|
* DO NOT USE THIS TO CREATE A MAINNET ACCOUNT!
|
|
12
10
|
* Note: By default this will log the mnemonic of the account.
|
|
13
11
|
* @param param0 The config for the test account to generate
|
|
14
|
-
* @param
|
|
15
|
-
* @param kmd A KMD client, if not specified then a default KMD client will be loaded from environment variables
|
|
12
|
+
* @param algorand An AlgorandClient client
|
|
16
13
|
* @returns The account, with private key loaded
|
|
17
14
|
*/
|
|
18
|
-
async function getTestAccount({ suppressLog, initialFunds, accountGetter },
|
|
19
|
-
const account = accountGetter ? await accountGetter(
|
|
15
|
+
async function getTestAccount({ suppressLog, initialFunds, accountGetter }, algorand) {
|
|
16
|
+
const account = accountGetter ? await accountGetter(algorand) : algosdk.generateAccount();
|
|
20
17
|
config.Config.getLogger(suppressLog).info(`New test account created with address '${account.addr}' and mnemonic '${algosdk.secretKeyToMnemonic(account.sk)}'.`);
|
|
21
|
-
const dispenser = await
|
|
22
|
-
await
|
|
23
|
-
const accountInfo = await
|
|
18
|
+
const dispenser = await algorand.account.dispenserFromEnvironment();
|
|
19
|
+
await algorand.send.payment({ sender: dispenser.addr, receiver: account.addr, amount: initialFunds, note: 'Funding test account' }, { suppressLog });
|
|
20
|
+
const accountInfo = await algorand.account.getInformation(account.addr);
|
|
24
21
|
config.Config.getLogger(suppressLog).info('Test account funded; account balance: %d µAlgos', accountInfo.amount);
|
|
25
22
|
return account;
|
|
26
23
|
}
|
package/testing/account.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sources":["../../src/testing/account.ts"],"sourcesContent":[null],"names":["Config"
|
|
1
|
+
{"version":3,"file":"account.js","sources":["../../src/testing/account.ts"],"sourcesContent":[null],"names":["Config"],"mappings":";;;;;AAKA;;;;;;;;AAQG;AACI,eAAe,cAAc,CAClC,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAwB,EAClE,QAAwB,EAAA;AAExB,IAAA,MAAM,OAAO,GAAG,aAAa,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAA;IAEzFA,aAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAChC,CAAA,uCAAA,EAA0C,OAAO,CAAC,IAAI,CAAmB,gBAAA,EAAA,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAI,EAAA,CAAA,CACrH,CAAA;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAA;AAEnE,IAAA,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CACzB,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,EAAE,EACtG,EAAE,WAAW,EAAE,CAChB,CAAA;AAED,IAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEvE,IAAAA,aAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iDAAiD,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;AAEzG,IAAA,OAAO,OAAO,CAAA;AAChB;;;;"}
|
package/testing/account.mjs
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import algosdk from 'algosdk';
|
|
2
|
-
import { transferAlgos } from '../transfer/transfer-algos.mjs';
|
|
3
2
|
import { Config } from '../config.mjs';
|
|
4
|
-
import { getDispenserAccount } from '../account/get-dispenser-account.mjs';
|
|
5
3
|
|
|
6
4
|
/**
|
|
7
5
|
* Creates an ephemeral Algorand account for the purposes of testing.
|
|
@@ -9,16 +7,15 @@ import { getDispenserAccount } from '../account/get-dispenser-account.mjs';
|
|
|
9
7
|
* DO NOT USE THIS TO CREATE A MAINNET ACCOUNT!
|
|
10
8
|
* Note: By default this will log the mnemonic of the account.
|
|
11
9
|
* @param param0 The config for the test account to generate
|
|
12
|
-
* @param
|
|
13
|
-
* @param kmd A KMD client, if not specified then a default KMD client will be loaded from environment variables
|
|
10
|
+
* @param algorand An AlgorandClient client
|
|
14
11
|
* @returns The account, with private key loaded
|
|
15
12
|
*/
|
|
16
|
-
async function getTestAccount({ suppressLog, initialFunds, accountGetter },
|
|
17
|
-
const account = accountGetter ? await accountGetter(
|
|
13
|
+
async function getTestAccount({ suppressLog, initialFunds, accountGetter }, algorand) {
|
|
14
|
+
const account = accountGetter ? await accountGetter(algorand) : algosdk.generateAccount();
|
|
18
15
|
Config.getLogger(suppressLog).info(`New test account created with address '${account.addr}' and mnemonic '${algosdk.secretKeyToMnemonic(account.sk)}'.`);
|
|
19
|
-
const dispenser = await
|
|
20
|
-
await
|
|
21
|
-
const accountInfo = await
|
|
16
|
+
const dispenser = await algorand.account.dispenserFromEnvironment();
|
|
17
|
+
await algorand.send.payment({ sender: dispenser.addr, receiver: account.addr, amount: initialFunds, note: 'Funding test account' }, { suppressLog });
|
|
18
|
+
const accountInfo = await algorand.account.getInformation(account.addr);
|
|
22
19
|
Config.getLogger(suppressLog).info('Test account funded; account balance: %d µAlgos', accountInfo.amount);
|
|
23
20
|
return account;
|
|
24
21
|
}
|
package/testing/account.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.mjs","sources":["../../src/testing/account.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"account.mjs","sources":["../../src/testing/account.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAKA;;;;;;;;AAQG;AACI,eAAe,cAAc,CAClC,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAwB,EAClE,QAAwB,EAAA;AAExB,IAAA,MAAM,OAAO,GAAG,aAAa,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAA;IAEzF,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAChC,CAAA,uCAAA,EAA0C,OAAO,CAAC,IAAI,CAAmB,gBAAA,EAAA,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAI,EAAA,CAAA,CACrH,CAAA;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAA;AAEnE,IAAA,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CACzB,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,EAAE,EACtG,EAAE,WAAW,EAAE,CAChB,CAAA;AAED,IAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEvE,IAAA,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iDAAiD,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;AAEzG,IAAA,OAAO,OAAO,CAAA;AAChB;;;;"}
|
|
@@ -5,9 +5,10 @@ import { AlgorandFixture, AlgorandFixtureConfig } from '../../types/testing';
|
|
|
5
5
|
* By default it tests against an environment variable specified client
|
|
6
6
|
* if the standard environment variables are specified, otherwise against
|
|
7
7
|
* a default LocalNet instance, but you can pass in an algod, indexer
|
|
8
|
-
* and/or kmd if you want to test against
|
|
8
|
+
* and/or kmd (or their respective config) if you want to test against
|
|
9
|
+
* an explicitly defined network.
|
|
9
10
|
*
|
|
10
|
-
* @example
|
|
11
|
+
* @example No config
|
|
11
12
|
* ```typescript
|
|
12
13
|
* const algorand = algorandFixture()
|
|
13
14
|
*
|
|
@@ -19,11 +20,28 @@ import { AlgorandFixture, AlgorandFixtureConfig } from '../../types/testing';
|
|
|
19
20
|
* })
|
|
20
21
|
* ```
|
|
21
22
|
*
|
|
23
|
+
* @example With config
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const algorand = algorandFixture({
|
|
26
|
+
* algod: new Algodv2('localhost', 12345, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
|
|
27
|
+
* // ...
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* beforeEach(algorand.beforeEach, 10_000)
|
|
31
|
+
*
|
|
32
|
+
* test('My test', async () => {
|
|
33
|
+
* const {algod, indexer, testAccount, ...} = algorand.context
|
|
34
|
+
* // test things...
|
|
35
|
+
* })
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
22
38
|
* @param fixtureConfig The fixture configuration
|
|
23
39
|
* @returns The fixture
|
|
24
40
|
*/
|
|
25
41
|
export declare function algorandFixture(fixtureConfig?: AlgorandFixtureConfig): AlgorandFixture;
|
|
26
42
|
/**
|
|
43
|
+
* @deprecated Config can be passed in directly to fixture config now.
|
|
44
|
+
*
|
|
27
45
|
* Creates a test fixture for automated testing against Algorand.
|
|
28
46
|
* By default it tests against an environment variable specified client
|
|
29
47
|
* if the standard environment variables are specified, otherwise against
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorand-fixture.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"algorand-fixture.d.ts","sourceRoot":"","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAuD,MAAM,qBAAqB,CAAA;AAKjI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAAA;AAEvF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,qBAAqB,GAAG,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,eAAe,CAAA"}
|
|
@@ -1,59 +1,40 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var types_algorandClient = require('../../types/algorand-client.js');
|
|
4
|
+
var types_clientManager = require('../../types/client-manager.js');
|
|
4
5
|
var account = require('../account.js');
|
|
5
6
|
var indexer = require('../indexer.js');
|
|
6
7
|
var transactionLogger = require('../transaction-logger.js');
|
|
7
|
-
var networkClient = require('../../network-client.js');
|
|
8
8
|
var amount = require('../../amount.js');
|
|
9
9
|
var indexerLookup = require('../../indexer-lookup.js');
|
|
10
10
|
var config = require('../../config.js');
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* Creates a test fixture for automated testing against Algorand.
|
|
14
|
-
* By default it tests against an environment variable specified client
|
|
15
|
-
* if the standard environment variables are specified, otherwise against
|
|
16
|
-
* a default LocalNet instance, but you can pass in an algod, indexer
|
|
17
|
-
* and/or kmd if you want to test against an explicitly defined network.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```typescript
|
|
21
|
-
* const algorand = algorandFixture(undefined, getConfigFromEnvOrDefaults())
|
|
22
|
-
*
|
|
23
|
-
* beforeEach(algorand.beforeEach, 10_000)
|
|
24
|
-
*
|
|
25
|
-
* test('My test', async () => {
|
|
26
|
-
* const {algod, indexer, testAccount, ...} = algorand.context
|
|
27
|
-
* // test things...
|
|
28
|
-
* })
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* @param fixtureConfig The fixture configuration
|
|
32
|
-
* @param config The algo configuration
|
|
33
|
-
* @returns The fixture
|
|
34
|
-
*/
|
|
35
12
|
function algorandFixture(fixtureConfig, config$1) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
13
|
+
fixtureConfig = { ...fixtureConfig, ...config$1 };
|
|
14
|
+
if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) {
|
|
15
|
+
fixtureConfig = { ...types_clientManager.ClientManager.getConfigFromEnvironmentOrLocalNet(), ...fixtureConfig };
|
|
16
|
+
}
|
|
17
|
+
const algod = fixtureConfig.algod ?? types_clientManager.ClientManager.getAlgodClient(fixtureConfig.algodConfig);
|
|
18
|
+
const indexer$1 = fixtureConfig.indexer ?? types_clientManager.ClientManager.getIndexerClient(fixtureConfig.indexerConfig);
|
|
19
|
+
const kmd = fixtureConfig.kmd ?? types_clientManager.ClientManager.getKmdClient(fixtureConfig.kmdConfig);
|
|
40
20
|
let context;
|
|
41
21
|
let algorandClient;
|
|
42
22
|
const beforeEach = async () => {
|
|
43
23
|
config.Config.configure({ debug: true });
|
|
44
24
|
const transactionLogger$1 = new transactionLogger.TransactionLogger();
|
|
45
25
|
const transactionLoggerAlgod = transactionLogger$1.capture(algod);
|
|
46
|
-
const acc = await account.getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? amount.algos(10), suppressLog: true }, transactionLoggerAlgod, kmd);
|
|
47
26
|
algorandClient = algorandClient ?? types_algorandClient.AlgorandClient.fromClients({ algod: transactionLoggerAlgod, indexer: indexer$1, kmd });
|
|
27
|
+
const acc = await account.getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? amount.algos(10), suppressLog: true }, algorandClient);
|
|
48
28
|
algorandClient.setSignerFromAccount(acc).setDefaultValidityWindow(1000).setSuggestedParamsTimeout(0);
|
|
49
29
|
const testAccount = { ...acc, signer: algorandClient.account.getSigner(acc.addr) };
|
|
50
30
|
context = {
|
|
31
|
+
algorand: algorandClient,
|
|
51
32
|
algod: transactionLoggerAlgod,
|
|
52
33
|
indexer: indexer$1,
|
|
53
34
|
kmd: kmd,
|
|
54
35
|
testAccount,
|
|
55
36
|
generateAccount: async (params) => {
|
|
56
|
-
const account$1 = await account.getTestAccount(params,
|
|
37
|
+
const account$1 = await account.getTestAccount(params, algorandClient);
|
|
57
38
|
algorandClient.setSignerFromAccount(account$1);
|
|
58
39
|
return { ...account$1, signer: algorandClient.account.getSigner(account$1.addr) };
|
|
59
40
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorand-fixture.js","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":[null],"names":["config","
|
|
1
|
+
{"version":3,"file":"algorand-fixture.js","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":[null],"names":["config","ClientManager","indexer","Config","transactionLogger","TransactionLogger","AlgorandClient","getTestAccount","algos","account","runWhenIndexerCaughtUp","lookupTransactionById"],"mappings":"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"}
|
|
@@ -1,57 +1,38 @@
|
|
|
1
1
|
import { AlgorandClient } from '../../types/algorand-client.mjs';
|
|
2
|
+
import { ClientManager } from '../../types/client-manager.mjs';
|
|
2
3
|
import { getTestAccount } from '../account.mjs';
|
|
3
4
|
import { runWhenIndexerCaughtUp } from '../indexer.mjs';
|
|
4
5
|
import { TransactionLogger } from '../transaction-logger.mjs';
|
|
5
|
-
import { getConfigFromEnvOrDefaults, getAlgoClient, getAlgoIndexerClient, getAlgoKmdClient } from '../../network-client.mjs';
|
|
6
6
|
import { algos } from '../../amount.mjs';
|
|
7
7
|
import { lookupTransactionById } from '../../indexer-lookup.mjs';
|
|
8
8
|
import { Config } from '../../config.mjs';
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
* Creates a test fixture for automated testing against Algorand.
|
|
12
|
-
* By default it tests against an environment variable specified client
|
|
13
|
-
* if the standard environment variables are specified, otherwise against
|
|
14
|
-
* a default LocalNet instance, but you can pass in an algod, indexer
|
|
15
|
-
* and/or kmd if you want to test against an explicitly defined network.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const algorand = algorandFixture(undefined, getConfigFromEnvOrDefaults())
|
|
20
|
-
*
|
|
21
|
-
* beforeEach(algorand.beforeEach, 10_000)
|
|
22
|
-
*
|
|
23
|
-
* test('My test', async () => {
|
|
24
|
-
* const {algod, indexer, testAccount, ...} = algorand.context
|
|
25
|
-
* // test things...
|
|
26
|
-
* })
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* @param fixtureConfig The fixture configuration
|
|
30
|
-
* @param config The algo configuration
|
|
31
|
-
* @returns The fixture
|
|
32
|
-
*/
|
|
33
10
|
function algorandFixture(fixtureConfig, config) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
11
|
+
fixtureConfig = { ...fixtureConfig, ...config };
|
|
12
|
+
if (!fixtureConfig.algod || !fixtureConfig.indexer || !fixtureConfig.kmd) {
|
|
13
|
+
fixtureConfig = { ...ClientManager.getConfigFromEnvironmentOrLocalNet(), ...fixtureConfig };
|
|
14
|
+
}
|
|
15
|
+
const algod = fixtureConfig.algod ?? ClientManager.getAlgodClient(fixtureConfig.algodConfig);
|
|
16
|
+
const indexer = fixtureConfig.indexer ?? ClientManager.getIndexerClient(fixtureConfig.indexerConfig);
|
|
17
|
+
const kmd = fixtureConfig.kmd ?? ClientManager.getKmdClient(fixtureConfig.kmdConfig);
|
|
38
18
|
let context;
|
|
39
19
|
let algorandClient;
|
|
40
20
|
const beforeEach = async () => {
|
|
41
21
|
Config.configure({ debug: true });
|
|
42
22
|
const transactionLogger = new TransactionLogger();
|
|
43
23
|
const transactionLoggerAlgod = transactionLogger.capture(algod);
|
|
44
|
-
const acc = await getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? algos(10), suppressLog: true }, transactionLoggerAlgod, kmd);
|
|
45
24
|
algorandClient = algorandClient ?? AlgorandClient.fromClients({ algod: transactionLoggerAlgod, indexer, kmd });
|
|
25
|
+
const acc = await getTestAccount({ initialFunds: fixtureConfig?.testAccountFunding ?? algos(10), suppressLog: true }, algorandClient);
|
|
46
26
|
algorandClient.setSignerFromAccount(acc).setDefaultValidityWindow(1000).setSuggestedParamsTimeout(0);
|
|
47
27
|
const testAccount = { ...acc, signer: algorandClient.account.getSigner(acc.addr) };
|
|
48
28
|
context = {
|
|
29
|
+
algorand: algorandClient,
|
|
49
30
|
algod: transactionLoggerAlgod,
|
|
50
31
|
indexer: indexer,
|
|
51
32
|
kmd: kmd,
|
|
52
33
|
testAccount,
|
|
53
34
|
generateAccount: async (params) => {
|
|
54
|
-
const account = await getTestAccount(params,
|
|
35
|
+
const account = await getTestAccount(params, algorandClient);
|
|
55
36
|
algorandClient.setSignerFromAccount(account);
|
|
56
37
|
return { ...account, signer: algorandClient.account.getSigner(account.addr) };
|
|
57
38
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algorand-fixture.mjs","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"algorand-fixture.mjs","sources":["../../../src/testing/fixtures/algorand-fixture.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/transaction/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAI7B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,EACpC,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EAClB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AAChC,OAAO,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAA;AACpE,OAAO,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;AAClC,OAAO,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;AAChD,OAAO,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;AAExC,OAAO,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAA;AAE5D,eAAO,MAAM,0BAA0B,KAAK,CAAA;AAC5C,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAChD,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAEhD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,CAcpF;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CA0B/E;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WAAqB,MAAM,GAAG,mBAAmB,WAE7E,CAAA;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/transaction/transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,14 +85,6 @@ function encodeLease(lease) {
|
|
|
85
85
|
const getSenderAddress = function (sender) {
|
|
86
86
|
return typeof sender === 'string' ? sender : 'addr' in sender ? sender.addr : sender.address();
|
|
87
87
|
};
|
|
88
|
-
const memoize = (fn) => {
|
|
89
|
-
const cache = new Map();
|
|
90
|
-
const cached = function (val) {
|
|
91
|
-
return cache.has(val) ? cache.get(val) : cache.set(val, fn.call(this, val)) && cache.get(val);
|
|
92
|
-
};
|
|
93
|
-
cached.cache = cache;
|
|
94
|
-
return cached;
|
|
95
|
-
};
|
|
96
88
|
/**
|
|
97
89
|
* Given a transaction in a variety of supported formats, returns a TransactionWithSigner object ready to be passed to an
|
|
98
90
|
* AtomicTransactionComposer's addTransaction method.
|
|
@@ -123,6 +115,14 @@ const getTransactionWithSigner = async (transaction, defaultSender) => {
|
|
|
123
115
|
signer: getSenderTransactionSigner(defaultSender),
|
|
124
116
|
};
|
|
125
117
|
};
|
|
118
|
+
const memoize = (fn) => {
|
|
119
|
+
const cache = new Map();
|
|
120
|
+
const cached = function (val) {
|
|
121
|
+
return cache.has(val) ? cache.get(val) : cache.set(val, fn.call(this, val)) && cache.get(val);
|
|
122
|
+
};
|
|
123
|
+
cached.cache = cache;
|
|
124
|
+
return cached;
|
|
125
|
+
};
|
|
126
126
|
/**
|
|
127
127
|
* Returns a `TransactionSigner` for the given transaction sender.
|
|
128
128
|
* This function has memoization, so will return the same transaction signer for a given sender.
|