@aztec/foundation 0.7.10 → 0.8.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 (135) hide show
  1. package/dest/abi/encoder.d.ts.map +1 -1
  2. package/dest/abi/encoder.js +9 -5
  3. package/dest/abi/function_selector.js +1 -1
  4. package/dest/abi/index.d.ts +1 -0
  5. package/dest/abi/index.d.ts.map +1 -1
  6. package/dest/abi/index.js +2 -1
  7. package/dest/abi/utils.d.ts +20 -0
  8. package/dest/abi/utils.d.ts.map +1 -0
  9. package/dest/abi/utils.js +25 -0
  10. package/dest/fields/coordinate.d.ts +5 -5
  11. package/dest/fields/coordinate.js +5 -5
  12. package/dest/fields/fields.d.ts +4 -0
  13. package/dest/fields/fields.d.ts.map +1 -1
  14. package/dest/fields/fields.js +9 -1
  15. package/dest/fifo/memory_fifo.js +2 -2
  16. package/dest/json-rpc/client/json_rpc_client.d.ts.map +1 -1
  17. package/dest/json-rpc/client/json_rpc_client.js +8 -7
  18. package/dest/json-rpc/convert.js +2 -2
  19. package/dest/json-rpc/server/json_proxy.d.ts.map +1 -1
  20. package/dest/json-rpc/server/json_proxy.js +5 -4
  21. package/dest/json-rpc/server/json_rpc_server.d.ts.map +1 -1
  22. package/dest/json-rpc/server/json_rpc_server.js +52 -7
  23. package/dest/log/index.d.ts +4 -4
  24. package/dest/log/index.d.ts.map +1 -1
  25. package/dest/log/index.js +1 -1
  26. package/dest/log/logger.d.ts +7 -3
  27. package/dest/log/logger.d.ts.map +1 -1
  28. package/dest/log/logger.js +36 -16
  29. package/dest/timer/elapsed.d.ts +14 -0
  30. package/dest/timer/elapsed.d.ts.map +1 -0
  31. package/dest/timer/elapsed.js +22 -0
  32. package/dest/timer/index.d.ts +1 -0
  33. package/dest/timer/index.d.ts.map +1 -1
  34. package/dest/timer/index.js +2 -1
  35. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  36. package/dest/transport/dispatch/create_dispatch_fn.js +3 -2
  37. package/dest/transport/transport_client.d.ts.map +1 -1
  38. package/dest/transport/transport_client.js +4 -3
  39. package/dest/wasm/wasm_module.js +4 -4
  40. package/package.json +65 -3
  41. package/src/abi/encoder.ts +8 -4
  42. package/src/abi/function_selector.ts +1 -1
  43. package/src/abi/index.ts +1 -0
  44. package/src/abi/utils.ts +28 -0
  45. package/src/fields/coordinate.ts +5 -5
  46. package/src/fields/fields.ts +10 -0
  47. package/src/fifo/memory_fifo.ts +1 -1
  48. package/src/json-rpc/client/json_rpc_client.ts +7 -6
  49. package/src/json-rpc/convert.ts +2 -2
  50. package/src/json-rpc/server/json_proxy.ts +5 -3
  51. package/src/json-rpc/server/json_rpc_server.ts +50 -6
  52. package/src/log/index.ts +5 -4
  53. package/src/log/logger.ts +45 -19
  54. package/src/timer/elapsed.ts +23 -0
  55. package/src/timer/index.ts +1 -0
  56. package/src/transport/dispatch/create_dispatch_fn.ts +3 -1
  57. package/src/transport/transport_client.ts +3 -2
  58. package/src/wasm/wasm_module.ts +3 -3
  59. package/.eslintrc.cjs +0 -134
  60. package/.prettierrc.json +0 -10
  61. package/.tsbuildinfo +0 -1
  62. package/dest/abi/decoder.test.d.ts +0 -2
  63. package/dest/abi/decoder.test.d.ts.map +0 -1
  64. package/dest/abi/decoder.test.js +0 -70
  65. package/dest/abi/encoder.test.d.ts +0 -2
  66. package/dest/abi/encoder.test.d.ts.map +0 -1
  67. package/dest/abi/encoder.test.js +0 -74
  68. package/dest/async-map/async_map.test.d.ts +0 -2
  69. package/dest/async-map/async_map.test.d.ts.map +0 -1
  70. package/dest/async-map/async_map.test.js +0 -9
  71. package/dest/bigint-buffer/bigint-buffer.test.d.ts +0 -2
  72. package/dest/bigint-buffer/bigint-buffer.test.d.ts.map +0 -1
  73. package/dest/bigint-buffer/bigint-buffer.test.js +0 -18
  74. package/dest/committable/committable.test.d.ts +0 -2
  75. package/dest/committable/committable.test.d.ts.map +0 -1
  76. package/dest/committable/committable.test.js +0 -26
  77. package/dest/crypto/random/index.test.d.ts +0 -2
  78. package/dest/crypto/random/index.test.d.ts.map +0 -1
  79. package/dest/crypto/random/index.test.js +0 -13
  80. package/dest/crypto/sha256/index.test.d.ts +0 -2
  81. package/dest/crypto/sha256/index.test.d.ts.map +0 -1
  82. package/dest/crypto/sha256/index.test.js +0 -11
  83. package/dest/eth-address/eth_address.test.d.ts +0 -2
  84. package/dest/eth-address/eth_address.test.d.ts.map +0 -1
  85. package/dest/eth-address/eth_address.test.js +0 -95
  86. package/dest/fields/coordinate.test.d.ts +0 -2
  87. package/dest/fields/coordinate.test.d.ts.map +0 -1
  88. package/dest/fields/coordinate.test.js +0 -22
  89. package/dest/fields/grumpkin_scalar.test.d.ts +0 -2
  90. package/dest/fields/grumpkin_scalar.test.d.ts.map +0 -1
  91. package/dest/fields/grumpkin_scalar.test.js +0 -45
  92. package/dest/json-rpc/client/json_rpc_client.test.d.ts +0 -2
  93. package/dest/json-rpc/client/json_rpc_client.test.d.ts.map +0 -1
  94. package/dest/json-rpc/client/json_rpc_client.test.js +0 -20
  95. package/dest/json-rpc/convert.test.d.ts +0 -2
  96. package/dest/json-rpc/convert.test.d.ts.map +0 -1
  97. package/dest/json-rpc/convert.test.js +0 -68
  98. package/dest/json-rpc/server/json_rpc_server.test.d.ts +0 -2
  99. package/dest/json-rpc/server/json_rpc_server.test.d.ts.map +0 -1
  100. package/dest/json-rpc/server/json_rpc_server.test.js +0 -22
  101. package/dest/log/log_history.test.d.ts +0 -2
  102. package/dest/log/log_history.test.d.ts.map +0 -1
  103. package/dest/log/log_history.test.js +0 -78
  104. package/dest/mutex/mutex.test.d.ts +0 -9
  105. package/dest/mutex/mutex.test.d.ts.map +0 -1
  106. package/dest/mutex/mutex.test.js +0 -58
  107. package/dest/serialize/buffer_reader.test.d.ts +0 -2
  108. package/dest/serialize/buffer_reader.test.d.ts.map +0 -1
  109. package/dest/serialize/buffer_reader.test.js +0 -156
  110. package/dest/serialize/serialize.test.d.ts +0 -2
  111. package/dest/serialize/serialize.test.d.ts.map +0 -1
  112. package/dest/serialize/serialize.test.js +0 -68
  113. package/dest/wasm/wasm_module.test.d.ts +0 -2
  114. package/dest/wasm/wasm_module.test.d.ts.map +0 -1
  115. package/dest/wasm/wasm_module.test.js +0 -24
  116. package/src/abi/decoder.test.ts +0 -77
  117. package/src/abi/encoder.test.ts +0 -80
  118. package/src/async-map/async_map.test.ts +0 -9
  119. package/src/bigint-buffer/bigint-buffer.test.ts +0 -21
  120. package/src/committable/committable.test.ts +0 -32
  121. package/src/crypto/random/index.test.ts +0 -13
  122. package/src/crypto/sha256/index.test.ts +0 -14
  123. package/src/eth-address/eth_address.test.ts +0 -114
  124. package/src/fields/coordinate.test.ts +0 -26
  125. package/src/fields/grumpkin_scalar.test.ts +0 -55
  126. package/src/json-rpc/client/json_rpc_client.test.ts +0 -21
  127. package/src/json-rpc/convert.test.ts +0 -77
  128. package/src/json-rpc/server/json_rpc_server.test.ts +0 -24
  129. package/src/log/log_history.test.ts +0 -88
  130. package/src/mutex/mutex.test.ts +0 -76
  131. package/src/serialize/buffer_reader.test.ts +0 -176
  132. package/src/serialize/serialize.test.ts +0 -89
  133. package/src/wasm/wasm_module.test.ts +0 -28
  134. package/tsconfig.dest.json +0 -5
  135. package/tsconfig.json +0 -10
@@ -1,156 +0,0 @@
1
- import { jest } from '@jest/globals';
2
- import { randomBytes } from '../crypto/index.js';
3
- import { Fq, Fr } from '../fields/fields.js';
4
- import { BufferReader } from './buffer_reader.js';
5
- import { serializeBufferArrayToVector } from './free_funcs.js';
6
- const ARRAY = Array.from(Array(32)).map((_, idx) => (idx % 2 === 0 ? 0 : 1));
7
- const BUFFER = Buffer.from(ARRAY);
8
- const NUMBER = 65537;
9
- const sizes = [16, 48, 32];
10
- describe('buffer reader', () => {
11
- let bufferReader;
12
- beforeEach(() => {
13
- bufferReader = new BufferReader(BUFFER);
14
- });
15
- describe('readNumber', () => {
16
- it('should return number', () => {
17
- expect(bufferReader.readNumber()).toBe(NUMBER);
18
- });
19
- });
20
- describe('readBoolean', () => {
21
- it('should read true when 1 and false when 0', () => {
22
- ARRAY.forEach(element => {
23
- if (element !== 0) {
24
- expect(bufferReader.readBoolean()).toBe(true);
25
- }
26
- else {
27
- expect(bufferReader.readBoolean()).toBe(false);
28
- }
29
- });
30
- });
31
- });
32
- describe('readBytes', () => {
33
- it('should read buffer by slices', () => {
34
- expect(bufferReader.readBytes(2)).toEqual(Buffer.from(ARRAY.slice(0, 2)));
35
- expect(bufferReader.readBytes(3)).toEqual(Buffer.from(ARRAY.slice(2, 5)));
36
- });
37
- });
38
- describe('readFr', () => {
39
- it('should get Fr from buffer', () => {
40
- expect(bufferReader.readFr()).toEqual(Fr.fromBuffer(BUFFER));
41
- });
42
- });
43
- describe('readFq', () => {
44
- it('should get Fq from buffer', () => {
45
- expect(bufferReader.readFq()).toEqual(Fq.fromBuffer(BUFFER));
46
- });
47
- });
48
- describe('readNumberVector', () => {
49
- let vectorBufferReader;
50
- beforeEach(() => {
51
- const uintArr = [7, 13, 16];
52
- const uintBufArr = uintArr.map(num => {
53
- const uintBuf = Buffer.alloc(4);
54
- uintBuf.writeUInt32BE(num, 0);
55
- return uintBuf;
56
- });
57
- const uintArrVec = serializeBufferArrayToVector(uintBufArr);
58
- vectorBufferReader = new BufferReader(uintArrVec);
59
- });
60
- it('should read number vector', () => {
61
- expect(vectorBufferReader.readNumberVector()).toEqual([7, 13, 16]);
62
- });
63
- });
64
- describe('readVector', () => {
65
- it('should read vector and generate result array', () => {
66
- const fn = jest.fn();
67
- let i = -1;
68
- const result = bufferReader.readVector({
69
- fromBuffer: () => {
70
- fn();
71
- i++;
72
- return i;
73
- },
74
- });
75
- expect(result.length).toBe(NUMBER);
76
- expect(result).toEqual(Array.from(Array(NUMBER).keys()));
77
- expect(fn).toHaveBeenCalledTimes(NUMBER);
78
- });
79
- });
80
- describe('readArray', () => {
81
- it('should read array from buffer', () => {
82
- const fn = jest.fn();
83
- let i = -1;
84
- expect(bufferReader.readArray(10, {
85
- fromBuffer: () => {
86
- fn();
87
- i++;
88
- return i;
89
- },
90
- })).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
91
- });
92
- });
93
- describe('readBufferArray', () => {
94
- it('should read variable length array from buffer', () => {
95
- // Testing `readBufferArray` with a buffer that ONLY contains the data that will be read.
96
- // No `size` variable is passed in this case.
97
- const bufferArray = [];
98
- let buf = Buffer.alloc(0);
99
- for (const size of sizes) {
100
- const sizeBuf = Buffer.alloc(4);
101
- sizeBuf.writeUInt32BE(size);
102
- const bytes = randomBytes(size);
103
- const ranBuf = Buffer.concat([sizeBuf, bytes]);
104
- bufferArray.push(bytes);
105
- buf = Buffer.concat([buf, ranBuf]);
106
- }
107
- const reader = BufferReader.asReader(buf);
108
- const res = reader.readBufferArray();
109
- expect(res).toEqual(bufferArray);
110
- });
111
- it('should read variable length array from buffer with other contents', () => {
112
- // testing `readBufferArray` with a buffer that includes some other data before and after the data that will be read.
113
- // The `size` variable needs to be passed in this case.
114
- const bufferArray = [];
115
- const prefixBytes = randomBytes(32);
116
- const postfixBytes = randomBytes(16);
117
- let bufLen = 0;
118
- let buf = Buffer.alloc(32, prefixBytes);
119
- for (const size of sizes) {
120
- const sizeBuf = Buffer.alloc(4);
121
- sizeBuf.writeUInt32BE(size);
122
- const bytes = randomBytes(size);
123
- const ranBuf = Buffer.concat([sizeBuf, bytes]);
124
- buf = Buffer.concat([buf, ranBuf]);
125
- bufferArray.push(bytes);
126
- bufLen += ranBuf.length;
127
- }
128
- buf = Buffer.concat([buf, postfixBytes]);
129
- const reader = BufferReader.asReader(buf);
130
- const preRes = reader.readBytes(prefixBytes.length);
131
- expect(preRes).toEqual(prefixBytes);
132
- expect(reader.readBufferArray(bufLen)).toEqual(bufferArray);
133
- expect(reader.readBytes(postfixBytes.length)).toEqual(postfixBytes);
134
- });
135
- });
136
- describe('readObject', () => {
137
- it('should read object from buffer', () => {
138
- const fn = jest.fn();
139
- const object = bufferReader.readObject({
140
- fromBuffer: (reader) => {
141
- fn();
142
- return { value: 'test-string', buffer: reader };
143
- },
144
- });
145
- expect(object.value).toEqual('test-string');
146
- expect(object.buffer).toEqual(bufferReader);
147
- expect(fn).toHaveBeenCalledTimes(1);
148
- });
149
- });
150
- describe('peekBytes', () => {
151
- it('should return bytes from buffer', () => {
152
- expect(bufferReader.peekBytes(10)).toEqual(Buffer.from(ARRAY.slice(0, 10)));
153
- });
154
- });
155
- });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9idWZmZXJfcmVhZGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDckIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRTNCLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLElBQUksWUFBMEIsQ0FBQztJQUUvQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFD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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=serialize.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialize.test.d.ts","sourceRoot":"","sources":["../../src/serialize/serialize.test.ts"],"names":[],"mappings":""}
@@ -1,68 +0,0 @@
1
- import { randomBytes } from '../crypto/index.js';
2
- import { Fr } from '../fields/fields.js';
3
- import { deserializeArrayFromVector, deserializeBufferFromVector, deserializeField, deserializeUInt32, serializeBufferArrayToVector, serializeBufferToVector, } from './index.js';
4
- describe('serialize', () => {
5
- it('serialize buffer to vector and deserialize it back', () => {
6
- const data = randomBytes(32);
7
- const vector = serializeBufferToVector(data);
8
- expect(vector.length).toBe(36);
9
- const recovered = deserializeBufferFromVector(vector);
10
- expect(recovered.elem).toEqual(data);
11
- expect(recovered.adv).toEqual(4 + 32);
12
- const paddedVector = Buffer.concat([randomBytes(10), vector, randomBytes(20)]);
13
- const recovered2 = deserializeBufferFromVector(paddedVector, 10);
14
- expect(recovered2.elem).toEqual(data);
15
- expect(recovered2.adv).toEqual(4 + 32);
16
- });
17
- it('deserialize uint32', () => {
18
- const uintBuf = Buffer.alloc(4);
19
- uintBuf.writeUInt32BE(19, 0);
20
- const recovered = deserializeUInt32(uintBuf);
21
- expect(recovered.elem).toBe(19);
22
- expect(recovered.adv).toBe(4);
23
- const paddedBuf = Buffer.concat([randomBytes(10), uintBuf, randomBytes(20)]);
24
- const recovered2 = deserializeUInt32(paddedBuf, 10);
25
- expect(recovered2.elem).toBe(19);
26
- expect(recovered2.adv).toBe(4);
27
- });
28
- it('deserialize field', () => {
29
- const field = Fr.random();
30
- const recovered = deserializeField(field.toBuffer());
31
- expect(recovered.elem).toEqual(field);
32
- expect(recovered.adv).toBe(32);
33
- const paddedBuf = Buffer.concat([randomBytes(10), field.toBuffer(), randomBytes(20)]);
34
- const recovered2 = deserializeField(paddedBuf, 10);
35
- expect(recovered2.elem).toEqual(field);
36
- expect(recovered2.adv).toBe(32);
37
- });
38
- it('serialize buffer array to vector and deserialize it back', () => {
39
- // Array of uint32
40
- const uintArr = [7, 13, 16];
41
- const uintBufArr = uintArr.map(num => {
42
- const uintBuf = Buffer.alloc(4);
43
- uintBuf.writeUInt32BE(num, 0);
44
- return uintBuf;
45
- });
46
- const uintArrVec = serializeBufferArrayToVector(uintBufArr);
47
- expect(uintArrVec.length).toBe(4 + 4 * 3);
48
- const recoveredUintArr = deserializeArrayFromVector(deserializeUInt32, uintArrVec);
49
- expect(recoveredUintArr.elem).toEqual(uintArr);
50
- expect(recoveredUintArr.adv).toEqual(4 + 4 * 3);
51
- const paddedUintArrVec = Buffer.concat([randomBytes(10), uintArrVec, randomBytes(20)]);
52
- const recoveredUintArr2 = deserializeArrayFromVector(deserializeUInt32, paddedUintArrVec, 10);
53
- expect(recoveredUintArr2.elem).toEqual(uintArr);
54
- expect(recoveredUintArr2.adv).toEqual(4 + 4 * 3);
55
- // Array of field
56
- const fieldArr = [Fr.random(), Fr.random(), Fr.random()];
57
- const fieldArrVec = serializeBufferArrayToVector(fieldArr.map(fr => fr.toBuffer()));
58
- expect(fieldArrVec.length).toBe(4 + 32 * 3);
59
- const recoveredFieldArr = deserializeArrayFromVector(deserializeField, fieldArrVec);
60
- expect(recoveredFieldArr.elem).toEqual(fieldArr);
61
- expect(recoveredFieldArr.adv).toEqual(4 + 32 * 3);
62
- const paddedFieldVec = Buffer.concat([randomBytes(10), fieldArrVec, randomBytes(20)]);
63
- const recoveredFieldArr2 = deserializeArrayFromVector(deserializeField, paddedFieldVec, 10);
64
- expect(recoveredFieldArr2.elem).toEqual(fieldArr);
65
- expect(recoveredFieldArr2.adv).toEqual(4 + 32 * 3);
66
- });
67
- });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplL3NlcmlhbGl6ZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekMsT0FBTyxFQUNMLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEdBQ3hCLE1BQU0sWUFBWSxDQUFDO0FBRXBCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sU0FBUyxHQUFHLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUV0QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sVUFBVSxHQUFHLDJCQUEyQixDQUFDLFlB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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wasm_module.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wasm_module.test.d.ts","sourceRoot":"","sources":["../../src/wasm/wasm_module.test.ts"],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- import { readFile } from 'fs/promises';
2
- import { dirname } from 'path';
3
- import { fileURLToPath } from '../url/index.js';
4
- import { WasmModule } from './wasm_module.js';
5
- /**
6
- * Fetch a simple WASM.
7
- */
8
- async function fetchCode() {
9
- const __dirname = dirname(fileURLToPath(import.meta.url));
10
- return await readFile(`${__dirname}/fixtures/gcd.wasm`);
11
- }
12
- describe('simple wasm', () => {
13
- let wasm;
14
- beforeAll(async () => {
15
- wasm = new WasmModule(await fetchCode(), () => ({
16
- /*no imports*/
17
- }));
18
- await wasm.init(1, 1, /* No init method */ null);
19
- });
20
- it('should call gcd with correct result', () => {
21
- expect(wasm.call('gcd', 12312, 12123)).toBe(27);
22
- });
23
- });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbV9tb2R1bGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93YXNtL3dhc21fbW9kdWxlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUM7O0dBRUc7QUFDSCxLQUFLLFVBQVUsU0FBUztJQUN0QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLE1BQU0sUUFBUSxDQUFDLEdBQUcsU0FBUyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixJQUFJLElBQWlCLENBQUM7SUFFdEIsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ25CLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUMsY0FBYztTQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
@@ -1,77 +0,0 @@
1
- import { ABIParameterVisibility, FunctionAbi } from './abi.js';
2
- import { decodeFunctionSignature, decodeFunctionSignatureWithParameterNames } from './decoder.js';
3
-
4
- describe('abi/decoder', () => {
5
- // Copied from yarn-project/noir-contracts/src/contracts/test_contract/target/Test.json
6
- const abi = {
7
- name: 'testCodeGen',
8
- parameters: [
9
- { name: 'aField', type: { kind: 'field' }, visibility: 'private' },
10
- { name: 'aBool', type: { kind: 'boolean' }, visibility: 'private' },
11
- { name: 'aNumber', type: { kind: 'integer', sign: 'unsigned', width: 32 }, visibility: 'private' },
12
- { name: 'anArray', type: { kind: 'array', length: 2, type: { kind: 'field' } }, visibility: 'private' },
13
- {
14
- name: 'aStruct',
15
- type: {
16
- kind: 'struct',
17
- path: 'Test::DummyNote',
18
- fields: [
19
- { name: 'amount', type: { kind: 'field' } },
20
- { name: 'secretHash', type: { kind: 'field' } },
21
- ],
22
- },
23
- visibility: 'private' as ABIParameterVisibility,
24
- },
25
- {
26
- name: 'aDeepStruct',
27
- type: {
28
- kind: 'struct',
29
- path: 'Test::DeepStruct',
30
- fields: [
31
- { name: 'aField', type: { kind: 'field' } },
32
- { name: 'aBool', type: { kind: 'boolean' } },
33
- {
34
- name: 'aNote',
35
- type: {
36
- kind: 'struct',
37
- path: 'Test::DummyNote',
38
- fields: [
39
- { name: 'amount', type: { kind: 'field' } },
40
- { name: 'secretHash', type: { kind: 'field' } },
41
- ],
42
- },
43
- },
44
- {
45
- name: 'manyNotes',
46
- type: {
47
- kind: 'array',
48
- length: 3,
49
- type: {
50
- kind: 'struct',
51
- path: 'Test::DummyNote',
52
- fields: [
53
- { name: 'amount', type: { kind: 'field' } },
54
- { name: 'secretHash', type: { kind: 'field' } },
55
- ],
56
- },
57
- },
58
- },
59
- ],
60
- },
61
- visibility: 'private' as ABIParameterVisibility,
62
- },
63
- ],
64
- } as Pick<FunctionAbi, 'name' | 'parameters'>;
65
-
66
- it('decodes function signature', () => {
67
- expect(decodeFunctionSignature(abi.name, abi.parameters)).toMatchInlineSnapshot(
68
- `"testCodeGen(Field,bool,u32,[Field;2],(Field,Field),(Field,bool,(Field,Field),[(Field,Field);3]))"`,
69
- );
70
- });
71
-
72
- it('decodes function signature with parameter names', () => {
73
- expect(decodeFunctionSignatureWithParameterNames(abi.name, abi.parameters)).toMatchInlineSnapshot(
74
- `"testCodeGen(aField: Field, aBool: bool, aNumber: u32, anArray: [Field;2], aStruct: (amount: Field, secretHash: Field), aDeepStruct: (aField: Field, aBool: bool, aNote: (amount: Field, secretHash: Field), manyNotes: [(amount: Field, secretHash: Field);3]))"`,
75
- );
76
- });
77
- });
@@ -1,80 +0,0 @@
1
- import { ABIParameterVisibility, FunctionAbi, FunctionType } from './abi.js';
2
- import { encodeArguments } from './encoder.js';
3
-
4
- describe('abi/encoder', () => {
5
- it('throws when passing string argument as field', () => {
6
- const testFunctionAbi: FunctionAbi = {
7
- name: 'constructor',
8
- functionType: FunctionType.SECRET,
9
- isInternal: false,
10
- parameters: [
11
- {
12
- name: 'owner',
13
- type: {
14
- kind: 'field',
15
- },
16
- visibility: ABIParameterVisibility.SECRET,
17
- },
18
- ],
19
- returnTypes: [],
20
- bytecode: '',
21
- verificationKey: '',
22
- };
23
- const args = ['garbage'];
24
-
25
- expect(() => encodeArguments(testFunctionAbi, args)).toThrowError('Invalid argument "garbage" of type field');
26
- });
27
-
28
- it('throws when passing string argument as integer', () => {
29
- const testFunctionAbi: FunctionAbi = {
30
- name: 'constructor',
31
- functionType: FunctionType.SECRET,
32
- isInternal: false,
33
- parameters: [
34
- {
35
- name: 'isOwner',
36
- type: {
37
- sign: 'value',
38
- width: 5,
39
- kind: 'integer',
40
- },
41
- visibility: ABIParameterVisibility.SECRET,
42
- },
43
- ],
44
- returnTypes: [],
45
- bytecode: '',
46
- verificationKey: '',
47
- };
48
- const args = ['garbage'];
49
- expect(() => encodeArguments(testFunctionAbi, args)).toThrowError('Cannot convert garbage to a BigInt');
50
- });
51
-
52
- it('throws when passing object argument as field', () => {
53
- const testFunctionAbi: FunctionAbi = {
54
- name: 'constructor',
55
- functionType: FunctionType.SECRET,
56
- isInternal: false,
57
- parameters: [
58
- {
59
- name: 'owner',
60
- type: {
61
- kind: 'field',
62
- },
63
- visibility: ABIParameterVisibility.SECRET,
64
- },
65
- ],
66
- returnTypes: [],
67
- bytecode: '',
68
- verificationKey: '',
69
- };
70
- const args = [
71
- {
72
- value: 'garbage',
73
- },
74
- ];
75
-
76
- expect(() => encodeArguments(testFunctionAbi, args)).toThrowError(
77
- 'Argument for owner cannot be serialised to a field',
78
- );
79
- });
80
- });
@@ -1,9 +0,0 @@
1
- import { asyncMap } from './index.js';
2
-
3
- describe('asyncMap', () => {
4
- test('execute list item sequentially', async () => {
5
- const sleepAndLog = (ms: number, idx: number) => new Promise(resolve => setTimeout(() => resolve(idx), ms));
6
- const result = await asyncMap([100, 0, 30, 1], (ms, i) => sleepAndLog(ms, i));
7
- expect(result).toEqual([0, 1, 2, 3]);
8
- });
9
- });
@@ -1,21 +0,0 @@
1
- import { toHex } from './index.js';
2
-
3
- describe('bigint-buffer', () => {
4
- describe('toHex', () => {
5
- it('does not pad even length', () => {
6
- expect(toHex(16n)).toEqual('0x10');
7
- });
8
-
9
- it('pads odd length hex to even length', () => {
10
- expect(toHex(10n)).toEqual('0x0a');
11
- });
12
-
13
- it('pads zero to even length', () => {
14
- expect(toHex(0n)).toEqual('0x00');
15
- });
16
-
17
- it('pads zero to 32 bytes', () => {
18
- expect(toHex(0n, true)).toEqual('0x0000000000000000000000000000000000000000000000000000000000000000');
19
- });
20
- });
21
- });
@@ -1,32 +0,0 @@
1
- import { Committable } from './committable.js';
2
-
3
- describe('committable', () => {
4
- it('include uncommitted should work as expected', () => {
5
- const committableNumber: Committable<number> = new Committable(0);
6
-
7
- // Check the initial value is 0
8
- expect(committableNumber.get(true)).toBe(0);
9
-
10
- // Update the value to 1
11
- committableNumber.set(1);
12
- committableNumber.commit();
13
-
14
- // Check the value is 1
15
- expect(committableNumber.get()).toBe(1);
16
-
17
- // Test include uncommitted
18
- committableNumber.set(2);
19
- expect(committableNumber.get(true)).toBe(2);
20
- expect(committableNumber.get(false)).toBe(1);
21
-
22
- committableNumber.commit();
23
- expect(committableNumber.get()).toBe(2);
24
-
25
- // Test rollback
26
- committableNumber.set(3);
27
- expect(committableNumber.get(true)).toBe(3);
28
- expect(committableNumber.get(false)).toBe(2);
29
- committableNumber.rollback();
30
- expect(committableNumber.get()).toBe(2);
31
- });
32
- });
@@ -1,13 +0,0 @@
1
- import { randomBytes } from './index.js';
2
-
3
- describe('random', () => {
4
- it('randomBytes returns a filled byte array', () => {
5
- const data = randomBytes(32);
6
- expect(data.length).toEqual(32);
7
- let identical = true;
8
- for (let i = 1; i < data.length; ++i) {
9
- identical = identical && data[i] == data[i - 1];
10
- }
11
- expect(identical).toEqual(false);
12
- });
13
- });
@@ -1,14 +0,0 @@
1
- import { createHash, randomBytes } from 'crypto';
2
-
3
- import { sha256 } from './index.js';
4
-
5
- describe('sha256', () => {
6
- it('should correctly hash data using hash.js', () => {
7
- const data = randomBytes(67);
8
-
9
- const expected = createHash('sha256').update(data).digest();
10
-
11
- const result = sha256(data);
12
- expect(result).toEqual(expected);
13
- });
14
- });
@@ -1,114 +0,0 @@
1
- import { EthAddress } from './index.js';
2
-
3
- describe('address', () => {
4
- it('should return correct string', () => {
5
- const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
6
- expect(address.toChecksumString()).toBe('0xc6d9d2cD449A754c494264e1809c50e34D64562b');
7
- });
8
-
9
- it('should return correct buffer', () => {
10
- const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
11
- expect(address.toBuffer20()).toEqual(Buffer.from('c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex'));
12
- });
13
-
14
- it('should return correct 32 byte buffer', () => {
15
- const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
16
- expect(address.toBuffer32()).toEqual(
17
- Buffer.from('000000000000000000000000c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex'),
18
- );
19
- });
20
-
21
- it('should create address from 32 byte buffer', () => {
22
- const buffer = Buffer.from('000000000000000000000000c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex');
23
- expect(new EthAddress(buffer)).toEqual(EthAddress.fromString('0xc6d9d2cD449A754c494264e1809c50e34D64562b'));
24
- });
25
-
26
- it('should not create address from 32 byte buffer that does not start with 12 0 bytes', () => {
27
- const buffer = Buffer.from('010000000000000000000000c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex');
28
- expect(() => new EthAddress(buffer)).toThrowError();
29
- });
30
-
31
- it('should have correct zero address', () => {
32
- expect(EthAddress.ZERO.toString()).toBe('0x0000000000000000000000000000000000000000');
33
- });
34
-
35
- it('should check if is zero', () => {
36
- const zero = EthAddress.fromString('0x0000000000000000000000000000000000000000');
37
- expect(zero.isZero()).toBeTruthy();
38
- });
39
-
40
- it('should encode and decode as field', () => {
41
- const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
42
- expect(EthAddress.fromField(address.toField())).toEqual(address);
43
- });
44
-
45
- describe('isAddress', () => {
46
- it(`should return true for valid prefixed address`, () => {
47
- expect(EthAddress.isAddress('0xc6d9d2cd449a754c494264e1809c50e34d64562b')).toBe(true);
48
- });
49
-
50
- it(`should return true for valid unprefixed address`, () => {
51
- expect(EthAddress.isAddress('c6d9d2cd449a754c494264e1809c50e34d64562b')).toBe(true);
52
- });
53
-
54
- it(`should return true for valid all uppercase address`, () => {
55
- expect(EthAddress.isAddress('0xC6D9D2CD449A754C494264E1809C50E34D64562B')).toBe(true);
56
- });
57
-
58
- it(`should return true for correctly checksummed address`, () => {
59
- expect(EthAddress.isAddress('0xE247A45c287191d435A8a5D72A7C8dc030451E9F')).toBe(true);
60
- });
61
-
62
- it(`should return false for badly checksummed address`, () => {
63
- expect(EthAddress.isAddress('0xE247A45C287191d435A8a5D72A7C8dc030451E9F')).toBe(false);
64
- });
65
-
66
- it(`should return false for non hex characters`, () => {
67
- expect(EthAddress.isAddress('0xg6d9d2cd449a754c494264e1809c50e34d64562b')).toBe(false);
68
- });
69
- });
70
-
71
- describe('checkAddressChecksum', () => {
72
- const tests = [
73
- { value: '0x52908400098527886E0F7030069857D2E4169EE7', is: true },
74
- { value: '0x8617E340B3D01FA5F11F306F4090FD50E238070D', is: true },
75
- { value: '0xde709f2102306220921060314715629080e2fb77', is: true },
76
- { value: '0x27b1fdb04752bbc536007a920d24acb045561c26', is: true },
77
- { value: '0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed', is: true },
78
- { value: '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359', is: true },
79
- { value: '0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB', is: true },
80
- { value: '0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb', is: true },
81
- { value: '0XD1220A0CF47C7B9BE7A2E6BA89F429762E7B9ADB', is: false },
82
- { value: '0xd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb', is: false },
83
- ];
84
-
85
- tests.forEach(test => {
86
- it(`should return ${test.is} for address ${test.value}`, () => {
87
- expect(EthAddress.checkAddressChecksum(test.value)).toBe(test.is);
88
- });
89
- });
90
- });
91
-
92
- describe('toChecksumAddress', () => {
93
- const tests = [
94
- {
95
- value: '0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed',
96
- is: '0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed',
97
- },
98
- {
99
- value: '0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359',
100
- is: '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359',
101
- },
102
- {
103
- value: '0xdbf03b407c01e7cd3cbea99509d93f8dddc8c6fb',
104
- is: '0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB',
105
- },
106
- ];
107
-
108
- tests.forEach(test => {
109
- it(`should return ${test.is} for address ${test.value}`, () => {
110
- expect(EthAddress.toChecksumAddress(test.value)).toBe(test.is);
111
- });
112
- });
113
- });
114
- });