@aztec/bb.js 3.0.0-nightly.20251125 → 3.0.0-nightly.20251126

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exception_handling.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception_handling.test.d.ts","sourceRoot":"","sources":["../../../src/bbapi/exception_handling.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { BarretenbergWasmSyncBackend } from '../bb_backends/wasm.js';
2
+ import { SyncApi } from '../cbind/generated/sync.js';
3
+ describe('BBApi Exception Handling from bb.js', () => {
4
+ let backend;
5
+ let api;
6
+ beforeAll(async () => {
7
+ backend = await BarretenbergWasmSyncBackend.new();
8
+ api = new SyncApi(backend);
9
+ }, 60000);
10
+ afterAll(() => {
11
+ backend.destroy();
12
+ });
13
+ it('should catch CRS initialization exceptions from WASM', () => {
14
+ // Create an SrsInitSrs command with invalid data that will cause an exception in C++
15
+ // We pass buffers that are too small, which will cause validation to fail
16
+ const invalidCommand = {
17
+ numPoints: 100, // Request 100 points (requires 6400 bytes)
18
+ pointsBuf: new Uint8Array(10), // Only 10 bytes - will cause exception
19
+ g2Point: new Uint8Array(10), // Only 10 bytes (needs 128) - will cause exception
20
+ };
21
+ // In WASM builds, throw_or_abort calls abort directly which throws a generic Error
22
+ // In native builds with exceptions, our try-catch in bbapi converts it to ErrorResponse
23
+ // This test verifies that errors are catchable from bb.js (even if as generic Error in WASM)
24
+ expect(() => {
25
+ api.srsInitSrs(invalidCommand);
26
+ }).toThrow();
27
+ });
28
+ it('should return error message from caught exception', () => {
29
+ const invalidCommand = {
30
+ numPoints: 100,
31
+ pointsBuf: new Uint8Array(10),
32
+ g2Point: new Uint8Array(10),
33
+ };
34
+ try {
35
+ api.srsInitSrs(invalidCommand);
36
+ fail('Expected exception to be thrown');
37
+ }
38
+ catch (error) {
39
+ // Error is catchable and contains a useful message
40
+ expect(error).toBeInstanceOf(Error);
41
+ expect(error.message).toBeTruthy();
42
+ expect(error.message.length).toBeGreaterThan(0);
43
+ expect(error.message).toContain('g1_identity');
44
+ console.log('Successfully caught exception from bb.js with message:', error.message);
45
+ }
46
+ });
47
+ });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uX2hhbmRsaW5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmJhcGkvZXhjZXB0aW9uX2hhbmRsaW5nLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3JELFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7SUFDbkQsSUFBSSxPQUFvQyxDQUFDO0lBQ3pDLElBQUksR0FBWSxDQUFDO0lBRWpCLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNuQixPQUFPLEdBQUcsTUFBTSwyQkFBMkIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsRCxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRVYsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNaLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxHQUFHLEVBQUU7UUFDOUQscUZBQXFGO1FBQ3JGLDBFQUEwRTtRQUMxRSxNQUFNLGNBQWMsR0FBRztZQUNyQixTQUFTLEVBQUUsR0FBRyxFQUFFLDJDQUEyQztZQUMzRCxTQUFTLEVBQUUsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsdUNBQXVDO1lBQ3RFLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxtREFBbUQ7U0FDakYsQ0FBQztRQUVGLG1GQUFtRjtRQUNuRix3RkFBd0Y7UUFDeEYsNkZBQTZGO1FBQzdGLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixHQUFHLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1FBQzNELE1BQU0sY0FBYyxHQUFHO1lBQ3JCLFNBQVMsRUFBRSxHQUFHO1lBQ2QsU0FBUyxFQUFFLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDO1NBQzVCLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxHQUFHLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsbURBQW1EO1lBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsTUFBTSxDQUFFLEtBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QyxNQUFNLENBQUUsS0FBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFFLEtBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3REFBd0QsRUFBRyxLQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEcsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exception_handling.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception_handling.test.d.ts","sourceRoot":"","sources":["../../../src/bbapi/exception_handling.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wasm_js_1 = require("../bb_backends/wasm.js");
4
+ const sync_js_1 = require("../cbind/generated/sync.js");
5
+ describe('BBApi Exception Handling from bb.js', () => {
6
+ let backend;
7
+ let api;
8
+ beforeAll(async () => {
9
+ backend = await wasm_js_1.BarretenbergWasmSyncBackend.new();
10
+ api = new sync_js_1.SyncApi(backend);
11
+ }, 60000);
12
+ afterAll(() => {
13
+ backend.destroy();
14
+ });
15
+ it('should catch CRS initialization exceptions from WASM', () => {
16
+ // Create an SrsInitSrs command with invalid data that will cause an exception in C++
17
+ // We pass buffers that are too small, which will cause validation to fail
18
+ const invalidCommand = {
19
+ numPoints: 100, // Request 100 points (requires 6400 bytes)
20
+ pointsBuf: new Uint8Array(10), // Only 10 bytes - will cause exception
21
+ g2Point: new Uint8Array(10), // Only 10 bytes (needs 128) - will cause exception
22
+ };
23
+ // In WASM builds, throw_or_abort calls abort directly which throws a generic Error
24
+ // In native builds with exceptions, our try-catch in bbapi converts it to ErrorResponse
25
+ // This test verifies that errors are catchable from bb.js (even if as generic Error in WASM)
26
+ expect(() => {
27
+ api.srsInitSrs(invalidCommand);
28
+ }).toThrow();
29
+ });
30
+ it('should return error message from caught exception', () => {
31
+ const invalidCommand = {
32
+ numPoints: 100,
33
+ pointsBuf: new Uint8Array(10),
34
+ g2Point: new Uint8Array(10),
35
+ };
36
+ try {
37
+ api.srsInitSrs(invalidCommand);
38
+ fail('Expected exception to be thrown');
39
+ }
40
+ catch (error) {
41
+ // Error is catchable and contains a useful message
42
+ expect(error).toBeInstanceOf(Error);
43
+ expect(error.message).toBeTruthy();
44
+ expect(error.message.length).toBeGreaterThan(0);
45
+ expect(error.message).toContain('g1_identity');
46
+ console.log('Successfully caught exception from bb.js with message:', error.message);
47
+ }
48
+ });
49
+ });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uX2hhbmRsaW5nLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmJhcGkvZXhjZXB0aW9uX2hhbmRsaW5nLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvREFBcUU7QUFDckUsd0RBQXFEO0FBR3JELFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7SUFDbkQsSUFBSSxPQUFvQyxDQUFDO0lBQ3pDLElBQUksR0FBWSxDQUFDO0lBRWpCLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNuQixPQUFPLEdBQUcsTUFBTSxxQ0FBMkIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsRCxHQUFHLEdBQUcsSUFBSSxpQkFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVWLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDWixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsR0FBRyxFQUFFO1FBQzlELHFGQUFxRjtRQUNyRiwwRUFBMEU7UUFDMUUsTUFBTSxjQUFjLEdBQUc7WUFDckIsU0FBUyxFQUFFLEdBQUcsRUFBRSwyQ0FBMkM7WUFDM0QsU0FBUyxFQUFFLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLHVDQUF1QztZQUN0RSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsbURBQW1EO1NBQ2pGLENBQUM7UUFFRixtRkFBbUY7UUFDbkYsd0ZBQXdGO1FBQ3hGLDZGQUE2RjtRQUM3RixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtRQUMzRCxNQUFNLGNBQWMsR0FBRztZQUNyQixTQUFTLEVBQUUsR0FBRztZQUNkLFNBQVMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQztTQUM1QixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLG1EQUFtRDtZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBRSxLQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDOUMsTUFBTSxDQUFFLEtBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sQ0FBRSxLQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMsd0RBQXdELEVBQUcsS0FBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xHLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aztec/bb.js",
3
3
  "packageManager": "yarn@4.5.2",
4
- "version": "3.0.0-nightly.20251125",
4
+ "version": "3.0.0-nightly.20251126",
5
5
  "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -0,0 +1,54 @@
1
+ import { BarretenbergWasmSyncBackend } from '../bb_backends/wasm.js';
2
+ import { SyncApi } from '../cbind/generated/sync.js';
3
+ import { BBApiException } from '../bbapi_exception.js';
4
+
5
+ describe('BBApi Exception Handling from bb.js', () => {
6
+ let backend: BarretenbergWasmSyncBackend;
7
+ let api: SyncApi;
8
+
9
+ beforeAll(async () => {
10
+ backend = await BarretenbergWasmSyncBackend.new();
11
+ api = new SyncApi(backend);
12
+ }, 60000);
13
+
14
+ afterAll(() => {
15
+ backend.destroy();
16
+ });
17
+
18
+ it('should catch CRS initialization exceptions from WASM', () => {
19
+ // Create an SrsInitSrs command with invalid data that will cause an exception in C++
20
+ // We pass buffers that are too small, which will cause validation to fail
21
+ const invalidCommand = {
22
+ numPoints: 100, // Request 100 points (requires 6400 bytes)
23
+ pointsBuf: new Uint8Array(10), // Only 10 bytes - will cause exception
24
+ g2Point: new Uint8Array(10), // Only 10 bytes (needs 128) - will cause exception
25
+ };
26
+
27
+ // In WASM builds, throw_or_abort calls abort directly which throws a generic Error
28
+ // In native builds with exceptions, our try-catch in bbapi converts it to ErrorResponse
29
+ // This test verifies that errors are catchable from bb.js (even if as generic Error in WASM)
30
+ expect(() => {
31
+ api.srsInitSrs(invalidCommand);
32
+ }).toThrow();
33
+ });
34
+
35
+ it('should return error message from caught exception', () => {
36
+ const invalidCommand = {
37
+ numPoints: 100,
38
+ pointsBuf: new Uint8Array(10),
39
+ g2Point: new Uint8Array(10),
40
+ };
41
+
42
+ try {
43
+ api.srsInitSrs(invalidCommand);
44
+ fail('Expected exception to be thrown');
45
+ } catch (error) {
46
+ // Error is catchable and contains a useful message
47
+ expect(error).toBeInstanceOf(Error);
48
+ expect((error as Error).message).toBeTruthy();
49
+ expect((error as Error).message.length).toBeGreaterThan(0);
50
+ expect((error as Error).message).toContain('g1_identity');
51
+ console.log('Successfully caught exception from bb.js with message:', (error as Error).message);
52
+ }
53
+ });
54
+ });