@cardano-sdk/e2e 0.16.2 → 0.16.4

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 (28) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/tools/multi-delegation-data-gen/index.js +14 -2
  3. package/dist/cjs/tools/multi-delegation-data-gen/index.js.map +1 -1
  4. package/dist/cjs/tools/multi-delegation-data-gen/utils/config.d.ts +1 -0
  5. package/dist/cjs/tools/multi-delegation-data-gen/utils/config.d.ts.map +1 -1
  6. package/dist/cjs/tools/multi-delegation-data-gen/utils/config.js +12 -0
  7. package/dist/cjs/tools/multi-delegation-data-gen/utils/config.js.map +1 -1
  8. package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.d.ts +2 -1
  9. package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.d.ts.map +1 -1
  10. package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.js +6 -1
  11. package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.js.map +1 -1
  12. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  13. package/dist/esm/tools/multi-delegation-data-gen/index.js +14 -2
  14. package/dist/esm/tools/multi-delegation-data-gen/index.js.map +1 -1
  15. package/dist/esm/tools/multi-delegation-data-gen/utils/config.d.ts +1 -0
  16. package/dist/esm/tools/multi-delegation-data-gen/utils/config.d.ts.map +1 -1
  17. package/dist/esm/tools/multi-delegation-data-gen/utils/config.js +12 -0
  18. package/dist/esm/tools/multi-delegation-data-gen/utils/config.js.map +1 -1
  19. package/dist/esm/tools/multi-delegation-data-gen/utils/utils.d.ts +2 -1
  20. package/dist/esm/tools/multi-delegation-data-gen/utils/utils.d.ts.map +1 -1
  21. package/dist/esm/tools/multi-delegation-data-gen/utils/utils.js +6 -1
  22. package/dist/esm/tools/multi-delegation-data-gen/utils/utils.js.map +1 -1
  23. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +20 -19
  25. package/src/tools/multi-delegation-data-gen/example.json +1 -0
  26. package/src/tools/multi-delegation-data-gen/index.ts +26 -4
  27. package/src/tools/multi-delegation-data-gen/utils/config.ts +13 -0
  28. package/src/tools/multi-delegation-data-gen/utils/utils.ts +11 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cardano-sdk/e2e",
3
- "version": "0.16.2",
3
+ "version": "0.16.4",
4
4
  "description": "End to end tests for the cardano-js-sdk packages.",
5
5
  "engines": {
6
6
  "node": ">=16.0"
@@ -81,18 +81,19 @@
81
81
  "dependencies": {
82
82
  "@cardano-foundation/ledgerjs-hw-app-cardano": "^6.0.0",
83
83
  "@cardano-ogmios/client": "5.6.0",
84
- "@cardano-sdk/cardano-services": "~0.14.2",
85
- "@cardano-sdk/cardano-services-client": "~0.10.2",
86
- "@cardano-sdk/core": "~0.15.2",
87
- "@cardano-sdk/crypto": "~0.1.8",
88
- "@cardano-sdk/hardware-ledger": "~0.2.11",
89
- "@cardano-sdk/key-management": "~0.7.10",
90
- "@cardano-sdk/ogmios": "~0.12.8",
91
- "@cardano-sdk/tx-construction": "~0.8.3",
92
- "@cardano-sdk/util": "~0.12.1",
93
- "@cardano-sdk/util-dev": "~0.13.6",
94
- "@cardano-sdk/util-rxjs": "~0.5.2",
95
- "@cardano-sdk/wallet": "~0.17.2",
84
+ "@cardano-sdk/cardano-services": "~0.14.4",
85
+ "@cardano-sdk/cardano-services-client": "~0.10.4",
86
+ "@cardano-sdk/core": "~0.15.3",
87
+ "@cardano-sdk/crypto": "~0.1.9",
88
+ "@cardano-sdk/hardware-ledger": "~0.2.13",
89
+ "@cardano-sdk/input-selection": "~0.11.0",
90
+ "@cardano-sdk/key-management": "~0.7.11",
91
+ "@cardano-sdk/ogmios": "~0.12.10",
92
+ "@cardano-sdk/tx-construction": "~0.9.0",
93
+ "@cardano-sdk/util": "~0.13.0",
94
+ "@cardano-sdk/util-dev": "~0.13.7",
95
+ "@cardano-sdk/util-rxjs": "~0.5.3",
96
+ "@cardano-sdk/wallet": "~0.18.0",
96
97
  "@vespaiach/axios-fetch-adapter": "^0.3.0",
97
98
  "axios": "^0.27.2",
98
99
  "bunyan": "^1.8.15",
@@ -122,10 +123,10 @@
122
123
  "@babel/core": "^7.18.2",
123
124
  "@babel/preset-env": "^7.18.2",
124
125
  "@babel/preset-typescript": "^7.17.12",
125
- "@cardano-sdk/dapp-connector": "~0.9.9",
126
- "@cardano-sdk/projection": "~0.6.12",
127
- "@cardano-sdk/projection-typeorm": "~0.3.8",
128
- "@cardano-sdk/web-extension": "~0.13.3",
126
+ "@cardano-sdk/dapp-connector": "~0.9.10",
127
+ "@cardano-sdk/projection": "~0.6.14",
128
+ "@cardano-sdk/projection-typeorm": "~0.3.10",
129
+ "@cardano-sdk/web-extension": "~0.13.5",
129
130
  "@dcspark/cardano-multiplatform-lib-browser": "^3.1.1",
130
131
  "@emurgo/cardano-message-signing-asmjs": "^1.0.1",
131
132
  "@types/bunyan": "^1.8.8",
@@ -147,7 +148,7 @@
147
148
  "babel-loader": "^8.2.5",
148
149
  "blake2b-no-wasm": "2.1.4",
149
150
  "buffer": "^6.0.3",
150
- "chromedriver": "^114.0.0",
151
+ "chromedriver": "114.0.1",
151
152
  "copy-webpack-plugin": "^10.2.4",
152
153
  "eslint": "^7.32.0",
153
154
  "events": "^3.3.0",
@@ -174,5 +175,5 @@
174
175
  "webpack-cli": "^4.9.2",
175
176
  "webpack-merge": "^5.8.0"
176
177
  },
177
- "gitHead": "988d44483420da328561a043f024230b626f50a6"
178
+ "gitHead": "a036575fda25ab17463821ef0e22f480f273d66d"
178
179
  }
@@ -1,4 +1,5 @@
1
1
  {
2
+ "changeAddressResolver": "static",
2
3
  "startingFunds": 1000000000000,
3
4
  "stakeDistribution": [
4
5
  0.2,
@@ -18,7 +18,8 @@ import {
18
18
  } from './utils';
19
19
 
20
20
  import { Cardano } from '@cardano-sdk/core';
21
- import { PersonalWallet } from '@cardano-sdk/wallet';
21
+ import { DynamicChangeAddressResolver, PersonalWallet } from '@cardano-sdk/wallet';
22
+ import { roundRobinRandomImprove } from '@cardano-sdk/input-selection';
22
23
  import { walletReady } from '../../';
23
24
  import chalk from 'chalk';
24
25
 
@@ -71,9 +72,15 @@ const monitor = new TerminalProgressMonitor();
71
72
 
72
73
  const stakeAddresses = await generateStakeAddresses(delegationWallet, config.stakeDistribution.length, monitor);
73
74
 
74
- await delegateToMultiplePools(delegationWallet, stakeAddresses, monitor);
75
-
76
- await distributeStake(delegationWallet, config.startingFunds, config.stakeDistribution, stakeAddresses, monitor);
75
+ const pools = await delegateToMultiplePools(delegationWallet, stakeAddresses, monitor);
76
+ const portfolio = await distributeStake(
77
+ delegationWallet,
78
+ config.startingFunds,
79
+ config.stakeDistribution,
80
+ stakeAddresses,
81
+ monitor,
82
+ pools
83
+ );
77
84
 
78
85
  monitor.startTask('Waiting for delegation to be updated on the wallet.');
79
86
  await rewardAccountStatuses(delegationWallet.delegation.rewardAccounts$, [
@@ -82,6 +89,21 @@ const monitor = new TerminalProgressMonitor();
82
89
  ]);
83
90
  monitor.endTask('Delegation updated.', TaskResult.Success);
84
91
 
92
+ if (config.changeAddressResolver === 'dynamic') {
93
+ monitor.logInfo(`Using dynamic change address resolution: Portfolio: ${JSON.stringify(portfolio)}`);
94
+ const selector = roundRobinRandomImprove({
95
+ changeAddressResolver: new DynamicChangeAddressResolver(
96
+ delegationWallet.addresses$,
97
+ delegationWallet.delegation.distribution$,
98
+ async () => portfolio,
99
+ console
100
+ )
101
+ });
102
+ delegationWallet.setInputSelector(selector);
103
+ } else {
104
+ monitor.logInfo('Using static change address resolution');
105
+ }
106
+
85
107
  monitor.logInfo('Setup phase ended. Starting interactions...');
86
108
 
87
109
  // Initial setup done, log starting state.
@@ -23,6 +23,14 @@ convict.addFormat({
23
23
  }
24
24
  });
25
25
 
26
+ convict.addFormat({
27
+ name: 'changeAddressResolver',
28
+ validate(val) {
29
+ if (val !== 'static' && val !== 'dynamic')
30
+ throw new TypeError('changeAddressResolver must be set to either static or dynamic');
31
+ }
32
+ });
33
+
26
34
  export type ValueTransferConfig = {
27
35
  amount: { max: number; min: number };
28
36
  count: { max: number; min: number };
@@ -30,6 +38,11 @@ export type ValueTransferConfig = {
30
38
  };
31
39
 
32
40
  export const configLoader = convict({
41
+ changeAddressResolver: {
42
+ default: 'static',
43
+ doc: 'Whether to use the static or dynamic strategy to resolve change addresses.',
44
+ format: 'changeAddressResolver'
45
+ },
33
46
  iterations: {
34
47
  default: 10,
35
48
  doc: 'How many iterations will be executed before stopping the test.',
@@ -263,14 +263,16 @@ export const generateStakeAddresses = async (
263
263
  * @param stakeDistribution The stake distribution to be followed.
264
264
  * @param stakeAddresses The list of stake addresses.
265
265
  * @param monitor The progress monitor.
266
+ * @param pools The pools we are delegating to.
266
267
  */
267
268
  export const distributeStake = async (
268
269
  delegationWallet: PersonalWallet,
269
270
  startingFunds: number,
270
271
  stakeDistribution: Array<number>,
271
272
  stakeAddresses: Array<GroupedAddress>,
272
- monitor: TerminalProgressMonitor
273
- ) => {
273
+ monitor: TerminalProgressMonitor,
274
+ pools: Array<Cardano.StakePool>
275
+ ): Promise<Cardano.Cip17DelegationPortfolio> => {
274
276
  // TODO: Replace with delegatePortfolio once LW-6702 is merged.
275
277
  const totalWeight = stakeDistribution.reduce((sum, current) => sum + current, 0);
276
278
  const stakeDistributionSsPercent = stakeDistribution.map((value) => value / totalWeight);
@@ -278,6 +280,11 @@ export const distributeStake = async (
278
280
 
279
281
  const txBuilder = delegationWallet.createTxBuilder();
280
282
 
283
+ const portfolio: Cardano.Cip17DelegationPortfolio = {
284
+ name: 'Portfolio',
285
+ pools: stakeDistributionSsPercent.map((weight, index) => ({ id: pools[index].hexId, weight }))
286
+ };
287
+
281
288
  let i = 0;
282
289
  const startingFundsMinusFee = startingFunds - 5_000_000;
283
290
  for (const { address } of stakeAddresses) {
@@ -291,6 +298,8 @@ export const distributeStake = async (
291
298
  await submitAndConfirm(delegationWallet, signedTx);
292
299
 
293
300
  monitor.endTask('Funds distributed', TaskResult.Success);
301
+
302
+ return portfolio;
294
303
  };
295
304
 
296
305
  /**