@lidofinance/lsv-cli 1.8.0 → 1.10.0-alpha.1

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 (86) hide show
  1. package/README.md +9 -1
  2. package/dist/abi/defi-wrapper/MellowStrategy.d.ts +429 -0
  3. package/dist/abi/defi-wrapper/MellowStrategy.js +892 -0
  4. package/dist/abi/defi-wrapper/MellowStrategy.js.map +1 -0
  5. package/dist/abi/defi-wrapper/index.d.ts +1 -0
  6. package/dist/abi/defi-wrapper/index.js +1 -0
  7. package/dist/abi/defi-wrapper/index.js.map +1 -1
  8. package/dist/configs/constants.d.ts +7 -1
  9. package/dist/features/consolidation.d.ts +2 -3
  10. package/dist/features/consolidation.js +60 -32
  11. package/dist/features/consolidation.js.map +1 -1
  12. package/dist/features/defi-wrapper/timelock.d.ts +8928 -2
  13. package/dist/features/defi-wrapper/timelock.js +82 -8
  14. package/dist/features/defi-wrapper/timelock.js.map +1 -1
  15. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.js +22 -4
  16. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.js.map +1 -1
  17. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.js +194 -16
  18. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.js.map +1 -1
  19. package/dist/programs/use-cases/consolidation/write.js +4 -4
  20. package/dist/programs/use-cases/consolidation/write.js.map +1 -1
  21. package/dist/programs/use-cases/metrics/read.js +4 -4
  22. package/dist/programs/use-cases/metrics/read.js.map +1 -1
  23. package/dist/programs/use-cases/report/read.js +4 -4
  24. package/dist/programs/use-cases/report/read.js.map +1 -1
  25. package/dist/providers/wallet.d.ts +2905 -8441
  26. package/dist/tests/fixtures/consolidation-fixtures.js +1 -0
  27. package/dist/tests/fixtures/consolidation-fixtures.js.map +1 -1
  28. package/dist/tests/integration/helpers/test-client.d.ts +2071 -5761
  29. package/dist/tests/utils/consolidation-fee-exemption-calc.test.d.ts +1 -0
  30. package/dist/tests/utils/consolidation-fee-exemption-calc.test.js +145 -0
  31. package/dist/tests/utils/consolidation-fee-exemption-calc.test.js.map +1 -0
  32. package/dist/tests/utils/consolidation-fee-exemption-confirm.test.d.ts +1 -0
  33. package/dist/tests/utils/consolidation-fee-exemption-confirm.test.js +118 -0
  34. package/dist/tests/utils/consolidation-fee-exemption-confirm.test.js.map +1 -0
  35. package/dist/tests/utils/consolidation-fee-exemption.test.d.ts +1 -0
  36. package/dist/tests/utils/consolidation-fee-exemption.test.js +168 -0
  37. package/dist/tests/utils/consolidation-fee-exemption.test.js.map +1 -0
  38. package/dist/tests/utils/first-validator-gindex.test.d.ts +1 -0
  39. package/dist/tests/utils/first-validator-gindex.test.js +48 -0
  40. package/dist/tests/utils/first-validator-gindex.test.js.map +1 -0
  41. package/dist/tests/utils/ipfs-security.test.js +130 -3
  42. package/dist/tests/utils/ipfs-security.test.js.map +1 -1
  43. package/dist/tests/utils/ipfs.test.js +40 -12
  44. package/dist/tests/utils/ipfs.test.js.map +1 -1
  45. package/dist/tests/utils/parse-abi-arguments.test.d.ts +1 -0
  46. package/dist/tests/utils/parse-abi-arguments.test.js +399 -0
  47. package/dist/tests/utils/parse-abi-arguments.test.js.map +1 -0
  48. package/dist/tests/utils/stream-helpers.d.ts +1 -0
  49. package/dist/tests/utils/stream-helpers.js +11 -0
  50. package/dist/tests/utils/stream-helpers.js.map +1 -0
  51. package/dist/utils/consolidation/confirms.js +19 -8
  52. package/dist/utils/consolidation/confirms.js.map +1 -1
  53. package/dist/utils/consolidation/fee-exemption.d.ts +19 -0
  54. package/dist/utils/consolidation/fee-exemption.js +70 -0
  55. package/dist/utils/consolidation/fee-exemption.js.map +1 -0
  56. package/dist/utils/consolidation/index.d.ts +1 -0
  57. package/dist/utils/consolidation/index.js +1 -0
  58. package/dist/utils/consolidation/index.js.map +1 -1
  59. package/dist/utils/consolidation/pubkeys.js +2 -0
  60. package/dist/utils/consolidation/pubkeys.js.map +1 -1
  61. package/dist/utils/consolidation/types.d.ts +1 -0
  62. package/dist/utils/consolidation/validator-info.d.ts +2 -1
  63. package/dist/utils/consolidation/validator-info.js +6 -0
  64. package/dist/utils/consolidation/validator-info.js.map +1 -1
  65. package/dist/utils/env.d.ts +1 -0
  66. package/dist/utils/env.js +8 -0
  67. package/dist/utils/env.js.map +1 -0
  68. package/dist/utils/ipfs.d.ts +10 -3
  69. package/dist/utils/ipfs.js +109 -27
  70. package/dist/utils/ipfs.js.map +1 -1
  71. package/dist/utils/parse-abi-arguments.d.ts +24 -0
  72. package/dist/utils/parse-abi-arguments.js +159 -0
  73. package/dist/utils/parse-abi-arguments.js.map +1 -0
  74. package/dist/utils/proof/constants.d.ts +1 -0
  75. package/dist/utils/proof/constants.js +1 -0
  76. package/dist/utils/proof/constants.js.map +1 -1
  77. package/dist/utils/proof/first-validator-gindex.js +27 -13
  78. package/dist/utils/proof/first-validator-gindex.js.map +1 -1
  79. package/dist/utils/proof/proofs.d.ts +1 -1
  80. package/dist/utils/proof/proofs.js +1 -1
  81. package/dist/utils/proof/proofs.js.map +1 -1
  82. package/dist/utils/rate-limit.d.ts +9 -0
  83. package/dist/utils/rate-limit.js +1 -6
  84. package/dist/utils/rate-limit.js.map +1 -1
  85. package/dist/version/index.js +1 -1
  86. package/package.json +20 -16
@@ -25,7 +25,19 @@ vi.mock('../../utils/logging/console.js', () => ({
25
25
  logInfo: vi.fn(),
26
26
  logTable: vi.fn(),
27
27
  }));
28
+ // Force a cache miss so the cached path falls through to a real fetch,
29
+ // and keep the test from touching the disk.
30
+ vi.mock('node:fs/promises', () => ({
31
+ default: {
32
+ mkdir: vi.fn(async () => { }),
33
+ readFile: vi.fn(async () => {
34
+ throw new Error('ENOENT');
35
+ }),
36
+ writeFile: vi.fn(async () => { }),
37
+ },
38
+ }));
28
39
  import * as ipfs from '../../utils/ipfs.js';
40
+ import { streamOf } from './stream-helpers.js';
29
41
  beforeEach(() => {
30
42
  vi.clearAllMocks();
31
43
  globalThis.fetch = vi.fn();
@@ -48,18 +60,18 @@ describe('IPFS SSRF guards (H2/H3)', () => {
48
60
  test('fetchIPFSDirect allows https gateway', async () => {
49
61
  globalThis.fetch.mockResolvedValueOnce({
50
62
  ok: true,
51
- text: async () => '{"x":1}',
63
+ body: streamOf(new TextEncoder().encode('{"x":1}')),
52
64
  });
53
65
  const result = await ipfs.fetchIPFSDirect({
54
66
  cid: 'abc',
55
- gateway: 'https://ipfs.io/ipfs',
67
+ gateway: ipfs.IPFS_GATEWAYS.ipfsIo,
56
68
  });
57
69
  expect(result).toEqual({ x: 1 });
58
70
  });
59
71
  test('fetchIPFSDirect allows http gateway', async () => {
60
72
  globalThis.fetch.mockResolvedValueOnce({
61
73
  ok: true,
62
- text: async () => '{"y":2}',
74
+ body: streamOf(new TextEncoder().encode('{"y":2}')),
63
75
  });
64
76
  const result = await ipfs.fetchIPFSDirect({
65
77
  cid: 'abc',
@@ -91,6 +103,121 @@ describe('IPFS SSRF guards (H2/H3)', () => {
91
103
  expect(result).toEqual({ IpfsHash: 'Qm123' });
92
104
  });
93
105
  });
106
+ describe('IPFS content size limit', () => {
107
+ const headersOf = (h) => ({
108
+ get: (k) => h[k.toLowerCase()] ?? null,
109
+ });
110
+ // Stub the next fetch() with an ok response carrying the given body and,
111
+ // optionally, a Content-Length header.
112
+ const mockFetchOnce = (body, contentLength) => {
113
+ const headers = contentLength === undefined
114
+ ? {}
115
+ : { 'content-length': String(contentLength) };
116
+ globalThis.fetch.mockResolvedValueOnce({
117
+ ok: true,
118
+ headers: headersOf(headers),
119
+ body,
120
+ });
121
+ };
122
+ // Run fn with IPFS_MAX_CONTENT_BYTES set, always restoring the prior value.
123
+ const withEnvLimit = async (value, fn) => {
124
+ const prev = process.env.IPFS_MAX_CONTENT_BYTES;
125
+ process.env.IPFS_MAX_CONTENT_BYTES = String(value);
126
+ try {
127
+ await fn();
128
+ }
129
+ finally {
130
+ if (prev === undefined)
131
+ delete process.env.IPFS_MAX_CONTENT_BYTES;
132
+ else
133
+ process.env.IPFS_MAX_CONTENT_BYTES = prev;
134
+ }
135
+ };
136
+ test('rejects on Content-Length over limit without reading body', async () => {
137
+ const getReader = vi.fn(() => {
138
+ throw new Error('body must not be read when Content-Length exceeds limit');
139
+ });
140
+ mockFetchOnce({ getReader }, 2_785_017_856);
141
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc', maxBytes: 20 * 1024 * 1024 })).rejects.toThrow(/too large|exceeds/i);
142
+ expect(getReader).not.toHaveBeenCalled();
143
+ });
144
+ test('aborts streaming when body exceeds limit (no Content-Length)', async () => {
145
+ mockFetchOnce(streamOf(new Uint8Array(300 * 1024).fill(7)));
146
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc', maxBytes: 128 * 1024 })).rejects.toThrow(/exceeds/i);
147
+ });
148
+ test('returns content within the limit', async () => {
149
+ const payload = new Uint8Array([1, 2, 3, 4, 5]);
150
+ mockFetchOnce(streamOf(payload), payload.byteLength);
151
+ const res = await ipfs.fetchIPFSBuffer({
152
+ cid: 'abc',
153
+ maxBytes: 20 * 1024 * 1024,
154
+ });
155
+ expect(res).toEqual(payload);
156
+ });
157
+ test('fails closed when the response has no body', async () => {
158
+ mockFetchOnce(null);
159
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc' })).rejects.toThrow(/no readable body/i);
160
+ });
161
+ test('fetchIPFSDirect aborts streaming when body exceeds limit', async () => {
162
+ mockFetchOnce(streamOf(new TextEncoder().encode('x'.repeat(300 * 1024))));
163
+ await expect(ipfs.fetchIPFSDirect({ cid: 'abc', maxBytes: 128 * 1024 })).rejects.toThrow(/exceeds/i);
164
+ });
165
+ test('enforces the 20MB default when no override / env is set', async () => {
166
+ mockFetchOnce({ getReader: vi.fn() }, 20 * 1024 * 1024 + 1);
167
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc' })).rejects.toThrow(`limit of ${20 * 1024 * 1024} bytes`);
168
+ });
169
+ test('IPFS_MAX_CONTENT_BYTES env overrides the default', async () => {
170
+ await withEnvLimit(64 * 1024, async () => {
171
+ mockFetchOnce({ getReader: vi.fn() }, 128 * 1024);
172
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc' })).rejects.toThrow(`limit of ${64 * 1024} bytes`);
173
+ });
174
+ });
175
+ test('explicit maxBytes arg takes priority over env', async () => {
176
+ await withEnvLimit(1024 * 1024 * 1024, async () => {
177
+ mockFetchOnce({ getReader: vi.fn() }, 256 * 1024);
178
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc', maxBytes: 128 * 1024 })).rejects.toThrow(`limit of ${128 * 1024} bytes`);
179
+ });
180
+ });
181
+ test('streaming enforces limit even when Content-Length lies', async () => {
182
+ // header claims 1 KiB, body is actually 300 KiB
183
+ mockFetchOnce(streamOf(new Uint8Array(300 * 1024).fill(9)), 1024);
184
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc', maxBytes: 128 * 1024 })).rejects.toThrow(`exceeds size limit of ${128 * 1024} bytes`);
185
+ });
186
+ test('accepts content exactly at the limit, rejects one byte over', async () => {
187
+ const limit = 200 * 1024;
188
+ mockFetchOnce(streamOf(new Uint8Array(limit).fill(1)));
189
+ const ok = await ipfs.fetchIPFSBuffer({ cid: 'abc', maxBytes: limit });
190
+ expect(ok.byteLength).toBe(limit);
191
+ mockFetchOnce(streamOf(new Uint8Array(limit + 1).fill(1)));
192
+ await expect(ipfs.fetchIPFSBuffer({ cid: 'abc', maxBytes: limit })).rejects.toThrow(`exceeds size limit of ${limit} bytes`);
193
+ });
194
+ test('reassembles a multi-chunk stream in order under the limit', async () => {
195
+ const chunkSize = 64 * 1024;
196
+ const parts = [0, 1, 2, 3, 4].map((i) => new Uint8Array(chunkSize).fill(i + 1));
197
+ const payload = new Uint8Array(chunkSize * parts.length);
198
+ for (const [i, p] of parts.entries()) {
199
+ payload.set(p, i * chunkSize);
200
+ }
201
+ mockFetchOnce(streamOf(payload, chunkSize)); // one read() per chunk
202
+ const res = await ipfs.fetchIPFSBuffer({
203
+ cid: 'abc',
204
+ maxBytes: 20 * 1024 * 1024,
205
+ });
206
+ expect(res).toEqual(payload); // order + bytes preserved across chunks
207
+ });
208
+ // Threading: maxBytes must survive every hop of the public API, not just
209
+ // the leaf fetchIPFSBuffer. A dropped arg at any wrapper = silent bypass.
210
+ test('fetchIPFS (default cached path) threads maxBytes end-to-end', async () => {
211
+ mockFetchOnce(streamOf(new Uint8Array(300 * 1024).fill(3)));
212
+ // cache default true -> WithCacheAndVerify -> DirectAndVerify -> Buffer
213
+ await expect(ipfs.fetchIPFS({ cid: 'abc', maxBytes: 128 * 1024 })).rejects.toThrow(`exceeds size limit of ${128 * 1024} bytes`);
214
+ });
215
+ test('fetchIPFS (no-cache path) threads maxBytes end-to-end', async () => {
216
+ mockFetchOnce(streamOf(new Uint8Array(300 * 1024).fill(4)));
217
+ // cache false -> DirectAndVerify -> Buffer
218
+ await expect(ipfs.fetchIPFS({ cid: 'abc', maxBytes: 128 * 1024 }, false)).rejects.toThrow(`exceeds size limit of ${128 * 1024} bytes`);
219
+ });
220
+ });
94
221
  describe('IPFS CID validation (M6)', () => {
95
222
  test('fetchIPFSDirectAndVerify rejects invalid CID', async () => {
96
223
  await expect(ipfs.fetchIPFSDirectAndVerify('INVALID_CID')).rejects.toThrow('Invalid IPFS CID: INVALID_CID');
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs-security.test.js","sourceRoot":"","sources":["../../../tests/utils/ipfs-security.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipfs-security.test.js","sourceRoot":"","sources":["../../../tests/utils/ipfs-security.test.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ vi.mock('../../utils/logging/console.js', () => ({
25
25
  }));
26
26
  import { CID } from 'multiformats/cid';
27
27
  import * as ipfs from '../../utils/ipfs.js';
28
+ import { streamOf } from './stream-helpers.js';
28
29
  const fakeCid = CID.parse('bafkreigh2akiscaildcjk2d6gtrevhb7f7esg6k4t4u5p4sqkgfa6vlriu');
29
30
  let logInfo;
30
31
  let logTable;
@@ -42,38 +43,65 @@ describe('ipfs helpers', () => {
42
43
  test('fetchIPFS parses JSON response', async () => {
43
44
  const jsonData = '{"foo":1}';
44
45
  const encoder = new TextEncoder();
45
- const buffer = encoder.encode(jsonData).buffer;
46
+ const bytes = encoder.encode(jsonData);
46
47
  const testCid = fakeCid.toString();
47
48
  globalThis.fetch.mockResolvedValueOnce({
48
49
  ok: true,
49
- text: async () => jsonData,
50
- arrayBuffer: async () => buffer,
50
+ body: streamOf(bytes),
51
51
  });
52
52
  // Mock importer for calculateIPFSAddCID
53
53
  importer.mockImplementationOnce(async function* () {
54
54
  yield { cid: fakeCid };
55
55
  });
56
56
  const res = await ipfs.fetchIPFS({ cid: testCid }, false);
57
- expect(globalThis.fetch).toHaveBeenCalledWith(`https://ipfs.io/ipfs/${testCid}`);
57
+ expect(globalThis.fetch).toHaveBeenCalledWith(`${ipfs.IPFS_GATEWAYS.ipfsIo}/${testCid}`);
58
58
  expect(res).toEqual({ foo: 1 });
59
59
  expect(logInfo).toHaveBeenCalled();
60
60
  });
61
61
  test('fetchIPFS throws on bad response', async () => {
62
- globalThis.fetch.mockResolvedValueOnce({
62
+ globalThis.fetch.mockResolvedValue({
63
63
  ok: false,
64
+ status: 503,
64
65
  statusText: 'bad',
65
66
  });
66
- await expect(ipfs.fetchIPFS({ cid: 'fail' }, false)).rejects.toThrow('Failed to fetch IPFS content: bad');
67
+ await expect(ipfs.fetchIPFS({ cid: 'fail' }, false)).rejects.toThrow('Failed to fetch IPFS content from all gateways');
68
+ });
69
+ test('fetchIPFS falls back through gateways', async () => {
70
+ const jsonData = '{"foo":1}';
71
+ const bytes = new TextEncoder().encode(jsonData);
72
+ globalThis.fetch
73
+ .mockResolvedValueOnce({
74
+ ok: false,
75
+ status: 429,
76
+ statusText: 'Too Many Requests',
77
+ })
78
+ .mockResolvedValueOnce({
79
+ ok: false,
80
+ status: 503,
81
+ statusText: 'Service Unavailable',
82
+ })
83
+ .mockResolvedValueOnce({
84
+ ok: true,
85
+ body: streamOf(bytes),
86
+ });
87
+ importer.mockImplementationOnce(async function* () {
88
+ yield { cid: fakeCid };
89
+ });
90
+ const result = await ipfs.fetchIPFS({ cid: fakeCid.toString() }, false);
91
+ expect(globalThis.fetch).toHaveBeenNthCalledWith(1, `${ipfs.IPFS_GATEWAYS.ipfsIo}/${fakeCid}`);
92
+ expect(globalThis.fetch).toHaveBeenNthCalledWith(2, `${ipfs.IPFS_GATEWAYS.filebase}/${fakeCid}`);
93
+ expect(globalThis.fetch).toHaveBeenNthCalledWith(3, `${ipfs.IPFS_GATEWAYS.pinata}/${fakeCid}`);
94
+ expect(result).toEqual({ foo: 1 });
67
95
  });
68
96
  test('fetchIPFSBuffer returns buffer', async () => {
69
- const buf = new ArrayBuffer(4);
97
+ const bytes = new Uint8Array(4);
70
98
  globalThis.fetch.mockResolvedValueOnce({
71
99
  ok: true,
72
- arrayBuffer: async () => buf,
100
+ body: streamOf(bytes),
73
101
  });
74
102
  const res = await ipfs.fetchIPFSBuffer({ cid: 'abc' });
75
- expect(globalThis.fetch).toHaveBeenCalledWith('https://ipfs.io/ipfs/abc');
76
- expect(res).toEqual(new Uint8Array(buf));
103
+ expect(globalThis.fetch).toHaveBeenCalledWith(`${ipfs.IPFS_GATEWAYS.ipfsIo}/abc`);
104
+ expect(res).toEqual(bytes);
77
105
  });
78
106
  test('calculateIPFSAddCID returns last CID', async () => {
79
107
  importer.mockImplementationOnce(async function* () {
@@ -93,7 +121,7 @@ describe('ipfs helpers', () => {
93
121
  // Mock fetch to prevent actual network calls
94
122
  globalThis.fetch.mockResolvedValueOnce({
95
123
  ok: true,
96
- arrayBuffer: async () => fileContent.buffer,
124
+ body: streamOf(fileContent),
97
125
  });
98
126
  importer.mockImplementationOnce(async function* () {
99
127
  yield { cid: fakeCid };
@@ -112,7 +140,7 @@ describe('ipfs helpers', () => {
112
140
  // Mock fetch to return the file content
113
141
  globalThis.fetch.mockResolvedValueOnce({
114
142
  ok: true,
115
- arrayBuffer: async () => fileContent.buffer,
143
+ body: streamOf(fileContent),
116
144
  });
117
145
  // Mock importer to return different CID
118
146
  importer.mockImplementationOnce(async function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs.test.js","sourceRoot":"","sources":["../../../tests/utils/ipfs.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipfs.test.js","sourceRoot":"","sources":["../../../tests/utils/ipfs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};