@walletmesh/aztec-rpc-wallet 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +6 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/aztecRemoteWallet.d.ts +7 -6
- package/dist/aztecRemoteWallet.d.ts.map +1 -1
- package/dist/aztecRemoteWallet.js +15 -9
- package/dist/handlers/aztecAccountWallet.d.ts.map +1 -1
- package/dist/handlers/aztecAccountWallet.js +22 -22
- package/dist/serializers/account.d.ts +4 -7
- package/dist/serializers/account.d.ts.map +1 -1
- package/dist/serializers/account.js +28 -29
- package/dist/serializers/contract.d.ts +4 -56
- package/dist/serializers/contract.d.ts.map +1 -1
- package/dist/serializers/contract.js +62 -148
- package/dist/serializers/index.d.ts +1 -4
- package/dist/serializers/index.d.ts.map +1 -1
- package/dist/serializers/index.js +12 -12
- package/dist/serializers/log.d.ts +36 -83
- package/dist/serializers/log.d.ts.map +1 -1
- package/dist/serializers/log.js +96 -107
- package/dist/serializers/note.d.ts +14 -17
- package/dist/serializers/note.d.ts.map +1 -1
- package/dist/serializers/note.js +52 -29
- package/dist/serializers/transaction-utils.d.ts +44 -100
- package/dist/serializers/transaction-utils.d.ts.map +1 -1
- package/dist/serializers/transaction-utils.js +82 -118
- package/dist/serializers/transaction.d.ts +3 -6
- package/dist/serializers/transaction.d.ts.map +1 -1
- package/dist/serializers/transaction.js +39 -50
- package/dist/types.d.ts +8 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +5 -5
- package/src/aztecRemoteWallet.test.ts +33 -29
- package/src/aztecRemoteWallet.ts +25 -14
- package/src/handlers/aztecAccountWallet.test.ts +78 -75
- package/src/handlers/aztecAccountWallet.ts +32 -35
- package/src/serializers/account.test.ts +18 -17
- package/src/serializers/account.ts +31 -49
- package/src/serializers/contract.test.ts +14 -16
- package/src/serializers/contract.ts +75 -164
- package/src/serializers/index.test.ts +20 -8
- package/src/serializers/index.ts +16 -20
- package/src/serializers/log.test.ts +201 -28
- package/src/serializers/log.ts +153 -146
- package/src/serializers/note.test.ts +26 -28
- package/src/serializers/note.ts +60 -36
- package/src/serializers/transaction-utils.ts +135 -211
- package/src/serializers/transaction.test.ts +190 -30
- package/src/serializers/transaction.ts +51 -72
- package/src/types.ts +9 -8
- package/vitest.config.ts +1 -1
- package/dist/serializers/contract-utils.d.ts +0 -40
- package/dist/serializers/contract-utils.d.ts.map +0 -1
- package/dist/serializers/contract-utils.js +0 -102
- package/dist/serializers/core.d.ts +0 -110
- package/dist/serializers/core.d.ts.map +0 -1
- package/dist/serializers/core.js +0 -130
- package/dist/serializers/types.d.ts +0 -49
- package/dist/serializers/types.d.ts.map +0 -1
- package/dist/serializers/types.js +0 -22
- package/src/serializers/contract-utils.ts +0 -104
- package/src/serializers/core.test.ts +0 -56
- package/src/serializers/core.ts +0 -141
- package/src/serializers/types.ts +0 -58
@@ -3,37 +3,43 @@ import { Point, AztecAddress } from '@aztec/aztec.js';
|
|
3
3
|
import { EventSelector } from '@aztec/foundation/abi';
|
4
4
|
import type { AbiType } from '@aztec/foundation/abi';
|
5
5
|
import {
|
6
|
-
|
7
|
-
type
|
6
|
+
ExtendedPublicLog,
|
7
|
+
type GetPublicLogsResponse,
|
8
|
+
type GetContractClassLogsResponse,
|
8
9
|
type LogFilter,
|
9
10
|
LogId,
|
10
11
|
TxHash,
|
11
12
|
} from '@aztec/circuit-types';
|
12
13
|
import {
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
aztecGetPublicLogsSerializer,
|
15
|
+
aztecGetPrivateEventsSerializer,
|
16
|
+
aztecGetPublicEventsSerializer,
|
17
|
+
aztecGetContractClassLogsSerializer,
|
16
18
|
} from './log.js';
|
17
19
|
|
18
20
|
describe('Log Serializers', () => {
|
19
|
-
|
20
|
-
const
|
21
|
+
const createRandomLog = async () => {
|
22
|
+
const log = await ExtendedPublicLog.random();
|
23
|
+
return log;
|
24
|
+
};
|
25
|
+
describe('aztec_getPublicLogs', () => {
|
26
|
+
const METHOD = 'aztec_getPublicLogs';
|
21
27
|
|
22
|
-
it('should serialize and deserialize params', () => {
|
28
|
+
it('should serialize and deserialize params', async () => {
|
23
29
|
const filter: LogFilter = {
|
24
|
-
txHash: TxHash.random(),
|
30
|
+
txHash: await TxHash.random(),
|
25
31
|
fromBlock: 0,
|
26
32
|
toBlock: 100,
|
27
|
-
afterLog: LogId.random(),
|
28
|
-
contractAddress: AztecAddress.random(),
|
33
|
+
afterLog: await LogId.random(),
|
34
|
+
contractAddress: await AztecAddress.random(),
|
29
35
|
};
|
30
36
|
|
31
37
|
const params = { filter };
|
32
38
|
|
33
|
-
const serialized =
|
39
|
+
const serialized = aztecGetPublicLogsSerializer.params.serialize(METHOD, params);
|
34
40
|
expect(serialized.method).toBe(METHOD);
|
35
41
|
|
36
|
-
const deserialized =
|
42
|
+
const deserialized = aztecGetPublicLogsSerializer.params.deserialize(METHOD, serialized);
|
37
43
|
expect(deserialized.filter.contractAddress?.toString()).toBe(filter.contractAddress?.toString());
|
38
44
|
expect(deserialized.filter.txHash?.toString()).toBe(filter.txHash?.toString());
|
39
45
|
expect(deserialized.filter.fromBlock).toBe(filter.fromBlock);
|
@@ -41,26 +47,27 @@ describe('Log Serializers', () => {
|
|
41
47
|
expect(deserialized.filter.afterLog?.toString()).toBe(filter.afterLog?.toString());
|
42
48
|
});
|
43
49
|
|
44
|
-
it('should serialize and deserialize result', () => {
|
45
|
-
const
|
46
|
-
|
50
|
+
it('should serialize and deserialize result', async () => {
|
51
|
+
const log = await ExtendedPublicLog.random();
|
52
|
+
const result: GetPublicLogsResponse = {
|
53
|
+
logs: [log],
|
47
54
|
maxLogsHit: false,
|
48
55
|
};
|
49
56
|
|
50
|
-
const serialized =
|
57
|
+
const serialized = aztecGetPublicLogsSerializer.result.serialize(METHOD, result);
|
51
58
|
expect(serialized.method).toBe(METHOD);
|
52
59
|
|
53
|
-
const deserialized =
|
60
|
+
const deserialized = aztecGetPublicLogsSerializer.result.deserialize(METHOD, serialized);
|
54
61
|
expect(deserialized.logs[0].toString()).toBe(result.logs[0].toString());
|
55
62
|
expect(deserialized.logs.length).toBe(result.logs.length);
|
56
63
|
expect(deserialized.maxLogsHit).toBe(result.maxLogsHit);
|
57
64
|
});
|
58
65
|
});
|
59
66
|
|
60
|
-
describe('
|
61
|
-
const METHOD = '
|
67
|
+
describe('aztec_getPrivateEvents', () => {
|
68
|
+
const METHOD = 'aztec_getPrivateEvents';
|
62
69
|
|
63
|
-
it('should serialize and deserialize params', () => {
|
70
|
+
it('should serialize and deserialize params', async () => {
|
64
71
|
const event = {
|
65
72
|
eventSelector: EventSelector.fromString('0x12345678'),
|
66
73
|
abiType: {
|
@@ -72,13 +79,13 @@ describe('Log Serializers', () => {
|
|
72
79
|
event,
|
73
80
|
from: 0,
|
74
81
|
limit: 10,
|
75
|
-
vpks: [Point.random(), Point.random()],
|
82
|
+
vpks: [await Point.random(), await Point.random()],
|
76
83
|
};
|
77
84
|
|
78
|
-
const serialized =
|
85
|
+
const serialized = aztecGetPrivateEventsSerializer.params.serialize(METHOD, params);
|
79
86
|
expect(serialized.method).toBe(METHOD);
|
80
87
|
|
81
|
-
const deserialized =
|
88
|
+
const deserialized = aztecGetPrivateEventsSerializer.params.deserialize(METHOD, serialized);
|
82
89
|
expect(deserialized.event.eventSelector.toString()).toBe(event.eventSelector.toString());
|
83
90
|
expect(deserialized.event.abiType).toEqual(event.abiType);
|
84
91
|
expect(deserialized.event.fieldNames).toEqual(event.fieldNames);
|
@@ -88,8 +95,8 @@ describe('Log Serializers', () => {
|
|
88
95
|
});
|
89
96
|
});
|
90
97
|
|
91
|
-
describe('
|
92
|
-
const METHOD = '
|
98
|
+
describe('aztec_getPublicEvents', () => {
|
99
|
+
const METHOD = 'aztec_getPublicEvents';
|
93
100
|
|
94
101
|
it('should serialize and deserialize params', () => {
|
95
102
|
const event = {
|
@@ -105,10 +112,10 @@ describe('Log Serializers', () => {
|
|
105
112
|
limit: 10,
|
106
113
|
};
|
107
114
|
|
108
|
-
const serialized =
|
115
|
+
const serialized = aztecGetPublicEventsSerializer.params.serialize(METHOD, params);
|
109
116
|
expect(serialized.method).toBe(METHOD);
|
110
117
|
|
111
|
-
const deserialized =
|
118
|
+
const deserialized = aztecGetPublicEventsSerializer.params.deserialize(METHOD, serialized);
|
112
119
|
expect(deserialized.event.eventSelector.toString()).toBe(event.eventSelector.toString());
|
113
120
|
expect(deserialized.event.abiType).toEqual(event.abiType);
|
114
121
|
expect(deserialized.event.fieldNames).toEqual(event.fieldNames);
|
@@ -116,4 +123,170 @@ describe('Log Serializers', () => {
|
|
116
123
|
expect(deserialized.limit).toBe(params.limit);
|
117
124
|
});
|
118
125
|
});
|
126
|
+
|
127
|
+
describe('aztec_getContractClassLogs', () => {
|
128
|
+
const METHOD = 'aztec_getContractClassLogs';
|
129
|
+
|
130
|
+
it('should serialize and deserialize params with complete filter', async () => {
|
131
|
+
const txHash = await TxHash.random();
|
132
|
+
const contractAddress = await AztecAddress.random();
|
133
|
+
const afterLog = await LogId.random();
|
134
|
+
|
135
|
+
const filter: LogFilter = {
|
136
|
+
txHash,
|
137
|
+
fromBlock: 0,
|
138
|
+
toBlock: 100,
|
139
|
+
afterLog,
|
140
|
+
contractAddress,
|
141
|
+
};
|
142
|
+
|
143
|
+
const params = { filter };
|
144
|
+
const serialized = aztecGetContractClassLogsSerializer.params.serialize(METHOD, params);
|
145
|
+
expect(serialized.method).toBe(METHOD);
|
146
|
+
|
147
|
+
const deserialized = aztecGetContractClassLogsSerializer.params.deserialize(METHOD, serialized);
|
148
|
+
expect(deserialized.filter.contractAddress?.toString()).toBe(filter.contractAddress?.toString());
|
149
|
+
expect(deserialized.filter.txHash?.toString()).toBe(filter.txHash?.toString());
|
150
|
+
expect(deserialized.filter.fromBlock).toBe(filter.fromBlock);
|
151
|
+
expect(deserialized.filter.toBlock).toBe(filter.toBlock);
|
152
|
+
expect(deserialized.filter.afterLog?.toString()).toBe(filter.afterLog?.toString());
|
153
|
+
});
|
154
|
+
|
155
|
+
it('should serialize and deserialize params with minimal filter', () => {
|
156
|
+
const filter: LogFilter = {
|
157
|
+
fromBlock: 0,
|
158
|
+
toBlock: 100,
|
159
|
+
};
|
160
|
+
|
161
|
+
const params = { filter };
|
162
|
+
const serialized = aztecGetContractClassLogsSerializer.params.serialize(METHOD, params);
|
163
|
+
expect(serialized.method).toBe(METHOD);
|
164
|
+
|
165
|
+
const deserialized = aztecGetContractClassLogsSerializer.params.deserialize(METHOD, serialized);
|
166
|
+
expect(deserialized.filter.contractAddress).toBeUndefined();
|
167
|
+
expect(deserialized.filter.txHash).toBeUndefined();
|
168
|
+
expect(deserialized.filter.fromBlock).toBe(filter.fromBlock);
|
169
|
+
expect(deserialized.filter.toBlock).toBe(filter.toBlock);
|
170
|
+
expect(deserialized.filter.afterLog).toBeUndefined();
|
171
|
+
});
|
172
|
+
|
173
|
+
it('should serialize and deserialize result', async () => {
|
174
|
+
// Create a mock response that matches the schema
|
175
|
+
const result: GetContractClassLogsResponse = {
|
176
|
+
logs: [],
|
177
|
+
maxLogsHit: false,
|
178
|
+
};
|
179
|
+
|
180
|
+
const serialized = aztecGetContractClassLogsSerializer.result.serialize(METHOD, result);
|
181
|
+
expect(serialized.method).toBe(METHOD);
|
182
|
+
|
183
|
+
const deserialized = aztecGetContractClassLogsSerializer.result.deserialize(METHOD, serialized);
|
184
|
+
expect(deserialized.logs).toEqual([]);
|
185
|
+
expect(deserialized.maxLogsHit).toBe(result.maxLogsHit);
|
186
|
+
});
|
187
|
+
});
|
188
|
+
|
189
|
+
describe('aztec_getPrivateEvents result handling', () => {
|
190
|
+
const METHOD = 'aztec_getPrivateEvents';
|
191
|
+
|
192
|
+
it('should serialize and deserialize empty result array', () => {
|
193
|
+
const result: unknown[] = [];
|
194
|
+
const serialized = aztecGetPrivateEventsSerializer.result.serialize(METHOD, result);
|
195
|
+
expect(serialized.method).toBe(METHOD);
|
196
|
+
|
197
|
+
const deserialized = aztecGetPrivateEventsSerializer.result.deserialize(METHOD, serialized);
|
198
|
+
expect(deserialized).toEqual([]);
|
199
|
+
});
|
200
|
+
|
201
|
+
it('should serialize and deserialize result with multiple events', () => {
|
202
|
+
const result = [
|
203
|
+
{ id: 1, data: 'event1' },
|
204
|
+
{ id: 2, data: 'event2' },
|
205
|
+
{ id: 3, data: 'event3' },
|
206
|
+
];
|
207
|
+
|
208
|
+
const serialized = aztecGetPrivateEventsSerializer.result.serialize(METHOD, result);
|
209
|
+
expect(serialized.method).toBe(METHOD);
|
210
|
+
|
211
|
+
const deserialized = aztecGetPrivateEventsSerializer.result.deserialize(METHOD, serialized);
|
212
|
+
expect(deserialized).toEqual(result);
|
213
|
+
});
|
214
|
+
});
|
215
|
+
|
216
|
+
describe('aztec_getPublicEvents result handling', () => {
|
217
|
+
const METHOD = 'aztec_getPublicEvents';
|
218
|
+
|
219
|
+
it('should serialize and deserialize empty result array', () => {
|
220
|
+
const result: unknown[] = [];
|
221
|
+
const serialized = aztecGetPublicEventsSerializer.result.serialize(METHOD, result);
|
222
|
+
expect(serialized.method).toBe(METHOD);
|
223
|
+
|
224
|
+
const deserialized = aztecGetPublicEventsSerializer.result.deserialize(METHOD, serialized);
|
225
|
+
expect(deserialized).toEqual([]);
|
226
|
+
});
|
227
|
+
|
228
|
+
it('should serialize and deserialize result with multiple events', () => {
|
229
|
+
const result = [
|
230
|
+
{ id: 1, data: 'event1' },
|
231
|
+
{ id: 2, data: 'event2' },
|
232
|
+
{ id: 3, data: 'event3' },
|
233
|
+
];
|
234
|
+
|
235
|
+
const serialized = aztecGetPublicEventsSerializer.result.serialize(METHOD, result);
|
236
|
+
expect(serialized.method).toBe(METHOD);
|
237
|
+
|
238
|
+
const deserialized = aztecGetPublicEventsSerializer.result.deserialize(METHOD, serialized);
|
239
|
+
expect(deserialized).toEqual(result);
|
240
|
+
});
|
241
|
+
});
|
242
|
+
|
243
|
+
describe('Edge Cases', () => {
|
244
|
+
it('should handle invalid JSON in deserialization', () => {
|
245
|
+
const METHOD = 'aztec_getPublicLogs';
|
246
|
+
const invalidData = { method: METHOD, serialized: 'invalid json' };
|
247
|
+
|
248
|
+
expect(() => {
|
249
|
+
aztecGetPublicLogsSerializer.params.deserialize(METHOD, invalidData);
|
250
|
+
}).toThrow();
|
251
|
+
});
|
252
|
+
|
253
|
+
it('should handle malformed event selector', () => {
|
254
|
+
const METHOD = 'aztec_getPublicEvents';
|
255
|
+
const params = {
|
256
|
+
event: {
|
257
|
+
// Create an invalid event selector by extending a valid one
|
258
|
+
eventSelector: Object.create(EventSelector.fromString('0x12345678'), {
|
259
|
+
toString: {
|
260
|
+
value: () => {
|
261
|
+
throw new Error('Invalid selector');
|
262
|
+
},
|
263
|
+
},
|
264
|
+
}),
|
265
|
+
abiType: { kind: 'field' } as AbiType,
|
266
|
+
fieldNames: ['field1'],
|
267
|
+
},
|
268
|
+
from: 0,
|
269
|
+
limit: 10,
|
270
|
+
};
|
271
|
+
|
272
|
+
expect(() => {
|
273
|
+
aztecGetPublicEventsSerializer.params.serialize(METHOD, params);
|
274
|
+
}).toThrow();
|
275
|
+
});
|
276
|
+
|
277
|
+
it('should handle undefined filter fields', async () => {
|
278
|
+
const METHOD = 'aztec_getPublicLogs';
|
279
|
+
const filter: LogFilter = {
|
280
|
+
fromBlock: undefined,
|
281
|
+
toBlock: undefined,
|
282
|
+
};
|
283
|
+
|
284
|
+
const params = { filter };
|
285
|
+
const serialized = aztecGetPublicLogsSerializer.params.serialize(METHOD, params);
|
286
|
+
const deserialized = aztecGetPublicLogsSerializer.params.deserialize(METHOD, serialized);
|
287
|
+
|
288
|
+
expect(deserialized.filter.fromBlock).toBeUndefined();
|
289
|
+
expect(deserialized.filter.toBlock).toBeUndefined();
|
290
|
+
});
|
291
|
+
});
|
119
292
|
});
|