@aztec/bb.js 3.0.0-nightly.20251015 → 3.0.0-nightly.20251022
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.
- package/README.md +12 -78
- package/dest/browser/barretenberg/backend.d.ts +1 -1
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +21 -13
- package/dest/browser/barretenberg/index.d.ts +44 -43
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg/index.js +130 -79
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +51 -13
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/browser/bb_backends/browser/index.d.ts +11 -0
- package/dest/browser/bb_backends/browser/index.d.ts.map +1 -0
- package/dest/browser/bb_backends/browser/index.js +39 -0
- package/dest/browser/bb_backends/index.d.ts +45 -0
- package/dest/browser/bb_backends/index.d.ts.map +1 -0
- package/dest/browser/bb_backends/index.js +15 -0
- package/dest/browser/bb_backends/interface.d.ts +33 -0
- package/dest/browser/bb_backends/interface.d.ts.map +1 -0
- package/dest/browser/bb_backends/interface.js +2 -0
- package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +15 -0
- package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
- package/dest/browser/bb_backends/sync_to_async_adapter.js +20 -0
- package/dest/browser/bb_backends/wasm.d.ts +56 -0
- package/dest/browser/bb_backends/wasm.d.ts.map +1 -0
- package/dest/browser/bb_backends/wasm.js +90 -0
- package/dest/browser/cbind/generate.js +2 -7
- package/dest/browser/cbind/generated/api_types.d.ts +1167 -0
- package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/browser/cbind/generated/api_types.js +1609 -47
- package/dest/browser/cbind/generated/async.d.ts +38 -4
- package/dest/browser/cbind/generated/async.d.ts.map +1 -1
- package/dest/browser/cbind/generated/async.js +327 -21
- package/dest/browser/cbind/generated/sync.d.ts +39 -5
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
- package/dest/browser/cbind/generated/sync.js +294 -21
- package/dest/browser/cbind/schema_compiler.d.ts +2 -4
- package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/browser/cbind/schema_compiler.js +74 -178
- package/dest/browser/index.d.ts +2 -2
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +3 -3
- package/dest/browser/serialize/index.d.ts +0 -1
- package/dest/browser/serialize/index.d.ts.map +1 -1
- package/dest/browser/serialize/index.js +1 -2
- package/dest/browser/serialize/serialize.d.ts +0 -35
- package/dest/browser/serialize/serialize.d.ts.map +1 -1
- package/dest/browser/serialize/serialize.js +1 -68
- package/dest/browser/types/fields.d.ts.map +1 -1
- package/dest/browser/types/fields.js +3 -3
- package/dest/browser/types/index.d.ts +0 -3
- package/dest/browser/types/index.d.ts.map +1 -1
- package/dest/browser/types/index.js +1 -4
- package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +2 -2
- package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +3 -3
- package/dest/node/barretenberg/backend.d.ts +1 -1
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +21 -13
- package/dest/node/barretenberg/blake2s.test.js +21 -18
- package/dest/node/barretenberg/index.d.ts +44 -43
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +130 -79
- package/dest/node/barretenberg/pedersen.test.js +24 -17
- package/dest/node/barretenberg/poseidon.bench.test.d.ts +2 -0
- package/dest/node/barretenberg/poseidon.bench.test.d.ts.map +1 -0
- package/dest/node/barretenberg/poseidon.bench.test.js +216 -0
- package/dest/node/barretenberg/poseidon.test.js +15 -15
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +51 -13
- package/dest/node/barretenberg_wasm/index.test.js +11 -10
- package/dest/node/bb_backends/browser/index.d.ts +11 -0
- package/dest/node/bb_backends/browser/index.d.ts.map +1 -0
- package/dest/node/bb_backends/browser/index.js +39 -0
- package/dest/node/bb_backends/index.d.ts +45 -0
- package/dest/node/bb_backends/index.d.ts.map +1 -0
- package/dest/node/bb_backends/index.js +15 -0
- package/dest/node/bb_backends/interface.d.ts +33 -0
- package/dest/node/bb_backends/interface.d.ts.map +1 -0
- package/dest/node/bb_backends/interface.js +2 -0
- package/dest/node/bb_backends/node/index.d.ts +11 -0
- package/dest/node/bb_backends/node/index.d.ts.map +1 -0
- package/dest/node/bb_backends/node/index.js +80 -0
- package/dest/node/bb_backends/node/native_pipe.d.ts +25 -0
- package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -0
- package/dest/node/bb_backends/node/native_pipe.js +113 -0
- package/dest/node/bb_backends/node/native_shm.d.ts +28 -0
- package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -0
- package/dest/node/bb_backends/node/native_shm.js +150 -0
- package/dest/node/bb_backends/node/native_socket.d.ts +34 -0
- package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -0
- package/dest/node/bb_backends/node/native_socket.js +269 -0
- package/dest/node/bb_backends/node/platform.d.ts +27 -0
- package/dest/node/bb_backends/node/platform.d.ts.map +1 -0
- package/dest/node/bb_backends/node/platform.js +124 -0
- package/dest/node/bb_backends/sync_to_async_adapter.d.ts +15 -0
- package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
- package/dest/node/bb_backends/sync_to_async_adapter.js +20 -0
- package/dest/node/bb_backends/wasm.d.ts +56 -0
- package/dest/node/bb_backends/wasm.d.ts.map +1 -0
- package/dest/node/bb_backends/wasm.js +90 -0
- package/dest/node/cbind/generate.js +2 -7
- package/dest/node/cbind/generated/api_types.d.ts +1167 -0
- package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node/cbind/generated/api_types.js +1609 -47
- package/dest/node/cbind/generated/async.d.ts +38 -4
- package/dest/node/cbind/generated/async.d.ts.map +1 -1
- package/dest/node/cbind/generated/async.js +327 -21
- package/dest/node/cbind/generated/sync.d.ts +39 -5
- package/dest/node/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node/cbind/generated/sync.js +294 -21
- package/dest/node/cbind/schema_compiler.d.ts +2 -4
- package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/node/cbind/schema_compiler.js +74 -178
- package/dest/node/index.d.ts +2 -2
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +3 -3
- package/dest/node/serialize/index.d.ts +0 -1
- package/dest/node/serialize/index.d.ts.map +1 -1
- package/dest/node/serialize/index.js +1 -2
- package/dest/node/serialize/serialize.d.ts +0 -35
- package/dest/node/serialize/serialize.d.ts.map +1 -1
- package/dest/node/serialize/serialize.js +1 -68
- package/dest/node/types/fields.d.ts.map +1 -1
- package/dest/node/types/fields.js +3 -3
- package/dest/node/types/index.d.ts +0 -3
- package/dest/node/types/index.d.ts.map +1 -1
- package/dest/node/types/index.js +1 -4
- package/dest/node-cjs/barretenberg/backend.d.ts +1 -1
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +20 -12
- package/dest/node-cjs/barretenberg/blake2s.test.js +19 -16
- package/dest/node-cjs/barretenberg/index.d.ts +44 -43
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +136 -84
- package/dest/node-cjs/barretenberg/pedersen.test.js +24 -17
- package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/poseidon.bench.test.js +218 -0
- package/dest/node-cjs/barretenberg/poseidon.test.js +15 -15
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +51 -13
- package/dest/node-cjs/barretenberg_wasm/index.test.js +11 -10
- package/dest/node-cjs/bb_backends/browser/index.d.ts +11 -0
- package/dest/node-cjs/bb_backends/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/browser/index.js +43 -0
- package/dest/node-cjs/bb_backends/index.d.ts +45 -0
- package/dest/node-cjs/bb_backends/index.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/index.js +18 -0
- package/dest/node-cjs/bb_backends/interface.d.ts +33 -0
- package/dest/node-cjs/bb_backends/interface.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/interface.js +3 -0
- package/dest/node-cjs/bb_backends/node/index.d.ts +11 -0
- package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/index.js +84 -0
- package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +25 -0
- package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/native_pipe.js +117 -0
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts +28 -0
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/native_shm.js +154 -0
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts +34 -0
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/native_socket.js +274 -0
- package/dest/node-cjs/bb_backends/node/platform.d.ts +27 -0
- package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/platform.js +131 -0
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +15 -0
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +24 -0
- package/dest/node-cjs/bb_backends/wasm.d.ts +56 -0
- package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/wasm.js +95 -0
- package/dest/node-cjs/cbind/generate.js +1 -6
- package/dest/node-cjs/cbind/generated/api_types.d.ts +1167 -0
- package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/api_types.js +1747 -47
- package/dest/node-cjs/cbind/generated/async.d.ts +38 -4
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/async.js +326 -20
- package/dest/node-cjs/cbind/generated/sync.d.ts +39 -5
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/sync.js +293 -20
- package/dest/node-cjs/cbind/schema_compiler.d.ts +2 -4
- package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/node-cjs/cbind/schema_compiler.js +74 -179
- package/dest/node-cjs/index.d.ts +2 -2
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +3 -3
- package/dest/node-cjs/serialize/index.d.ts +0 -1
- package/dest/node-cjs/serialize/index.d.ts.map +1 -1
- package/dest/node-cjs/serialize/index.js +1 -2
- package/dest/node-cjs/serialize/serialize.d.ts +0 -35
- package/dest/node-cjs/serialize/serialize.d.ts.map +1 -1
- package/dest/node-cjs/serialize/serialize.js +1 -79
- package/dest/node-cjs/types/fields.d.ts.map +1 -1
- package/dest/node-cjs/types/fields.js +2 -2
- package/dest/node-cjs/types/index.d.ts +0 -3
- package/dest/node-cjs/types/index.d.ts.map +1 -1
- package/dest/node-cjs/types/index.js +1 -4
- package/package.json +3 -4
- package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +2 -2
- package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +3 -3
- package/src/barretenberg/backend.ts +37 -32
- package/src/barretenberg/blake2s.test.ts +20 -21
- package/src/barretenberg/index.ts +136 -117
- package/src/barretenberg/pedersen.test.ts +23 -16
- package/src/barretenberg/poseidon.bench.test.ts +267 -0
- package/src/barretenberg/poseidon.test.ts +14 -14
- package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +3 -3
- package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +17 -9
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +62 -15
- package/src/barretenberg_wasm/index.test.ts +12 -11
- package/src/bb_backends/browser/index.ts +50 -0
- package/src/bb_backends/index.ts +49 -0
- package/src/bb_backends/interface.ts +35 -0
- package/src/bb_backends/node/index.ts +94 -0
- package/src/bb_backends/node/native_pipe.ts +127 -0
- package/src/bb_backends/node/native_shm.ts +171 -0
- package/src/bb_backends/node/native_socket.ts +312 -0
- package/src/bb_backends/node/platform.ts +151 -0
- package/src/bb_backends/sync_to_async_adapter.ts +21 -0
- package/src/bb_backends/wasm.ts +110 -0
- package/src/cbind/README.md +1 -1
- package/src/cbind/generate.ts +0 -6
- package/src/cbind/schema_compiler.ts +131 -241
- package/src/index.ts +2 -1
- package/src/serialize/index.ts +0 -1
- package/src/serialize/serialize.ts +0 -82
- package/src/types/fields.ts +2 -2
- package/src/types/index.ts +0 -3
- package/dest/browser/barretenberg_api/index.d.ts +0 -109
- package/dest/browser/barretenberg_api/index.d.ts.map +0 -1
- package/dest/browser/barretenberg_api/index.js +0 -699
- package/dest/browser/cbind/generated/native.d.ts +0 -31
- package/dest/browser/cbind/generated/native.d.ts.map +0 -1
- package/dest/browser/cbind/generated/native.js +0 -234
- package/dest/browser/serialize/output_type.d.ts +0 -11
- package/dest/browser/serialize/output_type.d.ts.map +0 -1
- package/dest/browser/serialize/output_type.js +0 -44
- package/dest/browser/types/fixed_size_buffer.d.ts +0 -26
- package/dest/browser/types/fixed_size_buffer.d.ts.map +0 -1
- package/dest/browser/types/fixed_size_buffer.js +0 -51
- package/dest/browser/types/ptr.d.ts +0 -13
- package/dest/browser/types/ptr.d.ts.map +0 -1
- package/dest/browser/types/ptr.js +0 -19
- package/dest/browser/types/raw_buffer.d.ts +0 -3
- package/dest/browser/types/raw_buffer.d.ts.map +0 -1
- package/dest/browser/types/raw_buffer.js +0 -5
- package/dest/node/barretenberg/common.test.d.ts +0 -2
- package/dest/node/barretenberg/common.test.d.ts.map +0 -1
- package/dest/node/barretenberg/common.test.js +0 -20
- package/dest/node/barretenberg_api/index.d.ts +0 -109
- package/dest/node/barretenberg_api/index.d.ts.map +0 -1
- package/dest/node/barretenberg_api/index.js +0 -699
- package/dest/node/bindgen/function_declaration.d.ts +0 -11
- package/dest/node/bindgen/function_declaration.d.ts.map +0 -1
- package/dest/node/bindgen/function_declaration.js +0 -2
- package/dest/node/bindgen/index.d.ts +0 -2
- package/dest/node/bindgen/index.d.ts.map +0 -1
- package/dest/node/bindgen/index.js +0 -15
- package/dest/node/bindgen/mappings.d.ts +0 -4
- package/dest/node/bindgen/mappings.d.ts.map +0 -1
- package/dest/node/bindgen/mappings.js +0 -64
- package/dest/node/bindgen/rust.d.ts +0 -2
- package/dest/node/bindgen/rust.d.ts.map +0 -1
- package/dest/node/bindgen/rust.js +0 -43
- package/dest/node/bindgen/to_camel_case.d.ts +0 -2
- package/dest/node/bindgen/to_camel_case.d.ts.map +0 -1
- package/dest/node/bindgen/to_camel_case.js +0 -11
- package/dest/node/bindgen/typescript.d.ts +0 -2
- package/dest/node/bindgen/typescript.d.ts.map +0 -1
- package/dest/node/bindgen/typescript.js +0 -100
- package/dest/node/cbind/generated/native.d.ts +0 -31
- package/dest/node/cbind/generated/native.d.ts.map +0 -1
- package/dest/node/cbind/generated/native.js +0 -234
- package/dest/node/main.d.ts +0 -13
- package/dest/node/main.d.ts.map +0 -1
- package/dest/node/main.js +0 -459
- package/dest/node/serialize/output_type.d.ts +0 -11
- package/dest/node/serialize/output_type.d.ts.map +0 -1
- package/dest/node/serialize/output_type.js +0 -44
- package/dest/node/types/fixed_size_buffer.d.ts +0 -26
- package/dest/node/types/fixed_size_buffer.d.ts.map +0 -1
- package/dest/node/types/fixed_size_buffer.js +0 -51
- package/dest/node/types/ptr.d.ts +0 -13
- package/dest/node/types/ptr.d.ts.map +0 -1
- package/dest/node/types/ptr.js +0 -19
- package/dest/node/types/raw_buffer.d.ts +0 -3
- package/dest/node/types/raw_buffer.d.ts.map +0 -1
- package/dest/node/types/raw_buffer.js +0 -5
- package/dest/node-cjs/barretenberg/common.test.d.ts +0 -2
- package/dest/node-cjs/barretenberg/common.test.d.ts.map +0 -1
- package/dest/node-cjs/barretenberg/common.test.js +0 -22
- package/dest/node-cjs/barretenberg_api/index.d.ts +0 -109
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +0 -1
- package/dest/node-cjs/barretenberg_api/index.js +0 -704
- package/dest/node-cjs/bindgen/function_declaration.d.ts +0 -11
- package/dest/node-cjs/bindgen/function_declaration.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/function_declaration.js +0 -3
- package/dest/node-cjs/bindgen/index.d.ts +0 -2
- package/dest/node-cjs/bindgen/index.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/index.js +0 -17
- package/dest/node-cjs/bindgen/mappings.d.ts +0 -4
- package/dest/node-cjs/bindgen/mappings.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/mappings.js +0 -69
- package/dest/node-cjs/bindgen/rust.d.ts +0 -2
- package/dest/node-cjs/bindgen/rust.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/rust.js +0 -47
- package/dest/node-cjs/bindgen/to_camel_case.d.ts +0 -2
- package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/to_camel_case.js +0 -14
- package/dest/node-cjs/bindgen/typescript.d.ts +0 -2
- package/dest/node-cjs/bindgen/typescript.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/typescript.js +0 -104
- package/dest/node-cjs/cbind/generated/native.d.ts +0 -31
- package/dest/node-cjs/cbind/generated/native.d.ts.map +0 -1
- package/dest/node-cjs/cbind/generated/native.js +0 -238
- package/dest/node-cjs/main.d.ts +0 -13
- package/dest/node-cjs/main.d.ts.map +0 -1
- package/dest/node-cjs/main.js +0 -470
- package/dest/node-cjs/serialize/output_type.d.ts +0 -11
- package/dest/node-cjs/serialize/output_type.d.ts.map +0 -1
- package/dest/node-cjs/serialize/output_type.js +0 -51
- package/dest/node-cjs/types/fixed_size_buffer.d.ts +0 -26
- package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +0 -1
- package/dest/node-cjs/types/fixed_size_buffer.js +0 -57
- package/dest/node-cjs/types/ptr.d.ts +0 -13
- package/dest/node-cjs/types/ptr.d.ts.map +0 -1
- package/dest/node-cjs/types/ptr.js +0 -23
- package/dest/node-cjs/types/raw_buffer.d.ts +0 -3
- package/dest/node-cjs/types/raw_buffer.d.ts.map +0 -1
- package/dest/node-cjs/types/raw_buffer.js +0 -9
- package/src/barretenberg/common.test.ts +0 -23
- package/src/barretenberg_api/index.ts +0 -1216
- package/src/bindgen/function_declaration.ts +0 -11
- package/src/bindgen/index.ts +0 -17
- package/src/bindgen/mappings.ts +0 -67
- package/src/bindgen/rust.ts +0 -52
- package/src/bindgen/to_camel_case.ts +0 -10
- package/src/bindgen/typescript.ts +0 -116
- package/src/main.ts +0 -534
- package/src/serialize/output_type.ts +0 -53
- package/src/types/fixed_size_buffer.ts +0 -59
- package/src/types/ptr.ts +0 -20
- package/src/types/raw_buffer.ts +0 -3
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { BarretenbergWasmMain, BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
|
|
2
|
+
import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
|
|
3
|
+
import { IMsgpackBackendSync, IMsgpackBackendAsync } from './interface.js';
|
|
4
|
+
import { createMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js';
|
|
5
|
+
import { getRemoteBarretenbergWasm } from '../barretenberg_wasm/helpers/index.js';
|
|
6
|
+
import { createDebugLogger } from '../log/index.js';
|
|
7
|
+
import { proxy } from 'comlink';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Synchronous WASM backend that wraps BarretenbergWasmMain.
|
|
11
|
+
* Encapsulates all WASM initialization and memory management.
|
|
12
|
+
*/
|
|
13
|
+
export class BarretenbergWasmSyncBackend implements IMsgpackBackendSync {
|
|
14
|
+
private constructor(private wasm: BarretenbergWasmMain) {}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Create and initialize a synchronous WASM backend.
|
|
18
|
+
* @param wasmPath Optional path to WASM files
|
|
19
|
+
* @param logger Optional logging function
|
|
20
|
+
*/
|
|
21
|
+
static async new(wasmPath?: string, logger?: (msg: string) => void): Promise<BarretenbergWasmSyncBackend> {
|
|
22
|
+
const wasm = new BarretenbergWasmMain();
|
|
23
|
+
const { module, threads } = await fetchModuleAndThreads(1, wasmPath, logger);
|
|
24
|
+
await wasm.init(module, threads, logger);
|
|
25
|
+
return new BarretenbergWasmSyncBackend(wasm);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
call(inputBuffer: Uint8Array): Uint8Array {
|
|
29
|
+
return this.wasm.cbindCall('bbapi', inputBuffer);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
destroy(): void {
|
|
33
|
+
// BarretenbergWasmMain has async destroy, but for sync API we call it without awaiting
|
|
34
|
+
// This is consistent with the synchronous semantics expected by the caller
|
|
35
|
+
void this.wasm.destroy();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Asynchronous WASM backend that supports both direct WASM and worker-based modes.
|
|
41
|
+
*
|
|
42
|
+
* Worker mode (default): Runs WASM on a worker thread to avoid blocking the main thread.
|
|
43
|
+
* - Browser-safe: Won't block UI during long operations
|
|
44
|
+
* - Overhead: ~3-4x slower due to serialize/deserialize for each call
|
|
45
|
+
* - Use for: Browser environments, long-running operations
|
|
46
|
+
*
|
|
47
|
+
* Direct mode (useWorker: false): Runs WASM directly on the calling thread.
|
|
48
|
+
* - Performance: ~3-4x faster (no serialize/deserialize overhead)
|
|
49
|
+
* - Warning: Will block the thread during operations
|
|
50
|
+
* - Use for: Node.js, benchmarks, tight loops where performance is critical
|
|
51
|
+
*/
|
|
52
|
+
export class BarretenbergWasmAsyncBackend implements IMsgpackBackendAsync {
|
|
53
|
+
private constructor(
|
|
54
|
+
private wasm: BarretenbergWasmMain | BarretenbergWasmMainWorker,
|
|
55
|
+
private worker?: any,
|
|
56
|
+
) {}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Create and initialize an asynchronous WASM backend.
|
|
60
|
+
* @param options.threads Number of threads (defaults to hardware max, up to 32 for parallel proving)
|
|
61
|
+
* @param options.wasmPath Optional path to WASM files
|
|
62
|
+
* @param options.logger Optional logging function
|
|
63
|
+
* @param options.memory Optional initial and maximum memory configuration
|
|
64
|
+
* @param options.useWorker Run on worker thread (default: true for browser safety)
|
|
65
|
+
*/
|
|
66
|
+
static async new(
|
|
67
|
+
options: {
|
|
68
|
+
threads?: number;
|
|
69
|
+
wasmPath?: string;
|
|
70
|
+
logger?: (msg: string) => void;
|
|
71
|
+
memory?: { initial?: number; maximum?: number };
|
|
72
|
+
useWorker?: boolean;
|
|
73
|
+
} = {},
|
|
74
|
+
): Promise<BarretenbergWasmAsyncBackend> {
|
|
75
|
+
// Default to worker mode for browser safety
|
|
76
|
+
const useWorker = options.useWorker ?? true;
|
|
77
|
+
|
|
78
|
+
if (useWorker) {
|
|
79
|
+
// Worker-based mode: runs on worker thread (browser-safe)
|
|
80
|
+
const worker = await createMainWorker();
|
|
81
|
+
const wasm = getRemoteBarretenbergWasm<BarretenbergWasmMainWorker>(worker);
|
|
82
|
+
const { module, threads } = await fetchModuleAndThreads(options.threads, options.wasmPath, options.logger);
|
|
83
|
+
await wasm.init(
|
|
84
|
+
module,
|
|
85
|
+
threads,
|
|
86
|
+
proxy(options.logger ?? createDebugLogger('bb_wasm_async')),
|
|
87
|
+
options.memory?.initial,
|
|
88
|
+
options.memory?.maximum,
|
|
89
|
+
);
|
|
90
|
+
return new BarretenbergWasmAsyncBackend(wasm, worker);
|
|
91
|
+
} else {
|
|
92
|
+
// Direct mode: runs on calling thread (faster but blocks thread)
|
|
93
|
+
const wasm = new BarretenbergWasmMain();
|
|
94
|
+
const { module, threads } = await fetchModuleAndThreads(options.threads, options.wasmPath, options.logger);
|
|
95
|
+
await wasm.init(module, threads, options.logger, options.memory?.initial, options.memory?.maximum);
|
|
96
|
+
return new BarretenbergWasmAsyncBackend(wasm);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async call(inputBuffer: Uint8Array): Promise<Uint8Array> {
|
|
101
|
+
return this.wasm.cbindCall('bbapi', inputBuffer);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async destroy(): Promise<void> {
|
|
105
|
+
await this.wasm.destroy();
|
|
106
|
+
if (this.worker) {
|
|
107
|
+
await this.worker.terminate();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
package/src/cbind/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Derives bindings from the reported msgpack schema from bb.
|
package/src/cbind/generate.ts
CHANGED
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
createSharedTypesCompiler,
|
|
12
12
|
createSyncApiCompiler,
|
|
13
13
|
createAsyncApiCompiler,
|
|
14
|
-
createNativeApiCompiler,
|
|
15
14
|
type SchemaCompiler,
|
|
16
15
|
} from './schema_compiler.js';
|
|
17
16
|
|
|
@@ -39,11 +38,6 @@ const GENERATORS: GeneratorConfig[] = [
|
|
|
39
38
|
outputFile: 'generated/async.ts',
|
|
40
39
|
createCompiler: createAsyncApiCompiler,
|
|
41
40
|
},
|
|
42
|
-
{
|
|
43
|
-
name: 'Native API',
|
|
44
|
-
outputFile: 'generated/native.ts',
|
|
45
|
-
createCompiler: createNativeApiCompiler,
|
|
46
|
-
},
|
|
47
41
|
];
|
|
48
42
|
|
|
49
43
|
// @ts-ignore
|
|
@@ -34,7 +34,7 @@ export interface FunctionMetadata {
|
|
|
34
34
|
|
|
35
35
|
// Compiler configuration
|
|
36
36
|
export interface CompilerConfig {
|
|
37
|
-
mode: 'types' | 'sync' | 'async'
|
|
37
|
+
mode: 'types' | 'sync' | 'async';
|
|
38
38
|
imports?: string[];
|
|
39
39
|
wasmImport?: string;
|
|
40
40
|
}
|
|
@@ -72,8 +72,12 @@ export class SchemaCompiler {
|
|
|
72
72
|
this.processSchema(responsesSchema);
|
|
73
73
|
|
|
74
74
|
// Extract function metadata from named unions
|
|
75
|
-
if (
|
|
76
|
-
|
|
75
|
+
if (
|
|
76
|
+
!Array.isArray(commandsSchema) ||
|
|
77
|
+
commandsSchema[0] !== 'named_union' ||
|
|
78
|
+
!Array.isArray(responsesSchema) ||
|
|
79
|
+
responsesSchema[0] !== 'named_union'
|
|
80
|
+
) {
|
|
77
81
|
throw new Error('Expected named_union schema format');
|
|
78
82
|
}
|
|
79
83
|
|
|
@@ -115,10 +119,7 @@ export class SchemaCompiler {
|
|
|
115
119
|
* Generate the complete output
|
|
116
120
|
*/
|
|
117
121
|
compile(): string {
|
|
118
|
-
const parts: string[] = [
|
|
119
|
-
'// AUTOGENERATED FILE - DO NOT EDIT',
|
|
120
|
-
'',
|
|
121
|
-
];
|
|
122
|
+
const parts: string[] = ['// AUTOGENERATED FILE - DO NOT EDIT', ''];
|
|
122
123
|
|
|
123
124
|
// Generate imports
|
|
124
125
|
parts.push(...this.generateImports());
|
|
@@ -131,55 +132,51 @@ export class SchemaCompiler {
|
|
|
131
132
|
.sort((a, b) => a.typeName.localeCompare(b.typeName));
|
|
132
133
|
|
|
133
134
|
// Group declarations
|
|
134
|
-
const typeAliases = sortedTypes.filter(
|
|
135
|
-
t.declaration?.startsWith('export type') && !t.declaration?.includes('interface')
|
|
135
|
+
const typeAliases = sortedTypes.filter(
|
|
136
|
+
t => t.declaration?.startsWith('export type') && !t.declaration?.includes('interface'),
|
|
136
137
|
);
|
|
137
|
-
const publicInterfaces = sortedTypes.filter(t =>
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
for (const type of typeAliases) {
|
|
148
|
-
parts.push(type.declaration!);
|
|
138
|
+
const publicInterfaces = sortedTypes.filter(t => t.declaration?.includes('export interface'));
|
|
139
|
+
const privateInterfaces = sortedTypes.filter(t => t.declaration?.includes('interface Msgpack'));
|
|
140
|
+
|
|
141
|
+
// Add type aliases if needed
|
|
142
|
+
if (typeAliases.length > 0) {
|
|
143
|
+
parts.push('// Type aliases');
|
|
144
|
+
for (const type of typeAliases) {
|
|
145
|
+
parts.push(type.declaration!);
|
|
146
|
+
}
|
|
147
|
+
parts.push('');
|
|
149
148
|
}
|
|
150
|
-
parts.push('');
|
|
151
|
-
}
|
|
152
149
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
150
|
+
// Add tuple helper if needed
|
|
151
|
+
if (this.needsTupleHelper()) {
|
|
152
|
+
parts.push(
|
|
153
|
+
'// Tuple type for fixed-size arrays',
|
|
154
|
+
'type Tuple<T, N extends number> = N extends N ? (number extends N ? T[] : _TupleOf<T, N, []>) : never;',
|
|
155
|
+
"type _TupleOf<T, N extends number, R extends unknown[]> = R['length'] extends N ? R : _TupleOf<T, N, [T, ...R]>;",
|
|
156
|
+
'',
|
|
157
|
+
'// Helper functions',
|
|
158
|
+
'function mapTuple<T, S, N extends number>(tuple: Tuple<T, N>, fn: (item: T) => S): Tuple<S, N> {',
|
|
159
|
+
' return tuple.map(fn) as Tuple<S, N>;',
|
|
160
|
+
'}',
|
|
161
|
+
'',
|
|
162
|
+
);
|
|
163
|
+
}
|
|
167
164
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
165
|
+
// Add public interfaces
|
|
166
|
+
if (publicInterfaces.length > 0) {
|
|
167
|
+
parts.push('// Public interfaces (exported)');
|
|
168
|
+
for (const type of publicInterfaces) {
|
|
169
|
+
parts.push(type.declaration!, '');
|
|
170
|
+
}
|
|
173
171
|
}
|
|
174
|
-
}
|
|
175
172
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
173
|
+
// Add private interfaces
|
|
174
|
+
if (privateInterfaces.length > 0) {
|
|
175
|
+
parts.push('// Private Msgpack interfaces (not exported)');
|
|
176
|
+
for (const type of privateInterfaces) {
|
|
177
|
+
parts.push(type.declaration!, '');
|
|
178
|
+
}
|
|
181
179
|
}
|
|
182
|
-
}
|
|
183
180
|
|
|
184
181
|
// Add conversion functions (only for api_types.ts)
|
|
185
182
|
const conversions = sortedTypes.filter(t => t.toMethod || t.fromMethod);
|
|
@@ -218,9 +215,7 @@ export class SchemaCompiler {
|
|
|
218
215
|
}
|
|
219
216
|
|
|
220
217
|
private needsTupleHelper(): boolean {
|
|
221
|
-
return Array.from(this.typeCache.values()).some(t =>
|
|
222
|
-
t.typeName.includes('Tuple<')
|
|
223
|
-
);
|
|
218
|
+
return Array.from(this.typeCache.values()).some(t => t.typeName.includes('Tuple<'));
|
|
224
219
|
}
|
|
225
220
|
|
|
226
221
|
private trackTypeUsage(typeName: string): void {
|
|
@@ -296,10 +291,15 @@ export class SchemaCompiler {
|
|
|
296
291
|
switch (type) {
|
|
297
292
|
case 'array': {
|
|
298
293
|
const [subtype, size] = args[0];
|
|
294
|
+
// Special case: byte arrays should be Uint8Array
|
|
295
|
+
if (subtype === 'unsigned char') {
|
|
296
|
+
return { typeName: 'Uint8Array' };
|
|
297
|
+
}
|
|
298
|
+
// For other types, use T[] - idiomatic TypeScript for fixed-length homogeneous arrays
|
|
299
299
|
const subtypeInfo = this.processSchema(subtype);
|
|
300
300
|
return {
|
|
301
|
-
typeName:
|
|
302
|
-
msgpackTypeName:
|
|
301
|
+
typeName: `${subtypeInfo.typeName}[]`,
|
|
302
|
+
msgpackTypeName: `${subtypeInfo.msgpackTypeName || subtypeInfo.typeName}[]`,
|
|
303
303
|
};
|
|
304
304
|
}
|
|
305
305
|
|
|
@@ -392,6 +392,7 @@ export class SchemaCompiler {
|
|
|
392
392
|
case 'unsigned int':
|
|
393
393
|
case 'unsigned short':
|
|
394
394
|
case 'unsigned long':
|
|
395
|
+
case 'unsigned char':
|
|
395
396
|
case 'double':
|
|
396
397
|
return { typeName: 'number' };
|
|
397
398
|
case 'string':
|
|
@@ -477,15 +478,19 @@ export class SchemaCompiler {
|
|
|
477
478
|
return `function to${name}(o: Msgpack${name}): ${name} {\n return {};\n}`;
|
|
478
479
|
}
|
|
479
480
|
|
|
480
|
-
const checks = fields
|
|
481
|
-
|
|
482
|
-
|
|
481
|
+
const checks = fields
|
|
482
|
+
.map(
|
|
483
|
+
([key]) => ` if (o.${key} === undefined) { throw new Error("Expected ${key} in ${name} deserialization"); }`,
|
|
484
|
+
)
|
|
485
|
+
.join('\n');
|
|
483
486
|
|
|
484
|
-
const conversions = fields
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
487
|
+
const conversions = fields
|
|
488
|
+
.map(([key, value]) => {
|
|
489
|
+
const typeInfo = this.processSchema(value);
|
|
490
|
+
const converter = this.generateConverter(typeInfo, `o.${key}`, 'to');
|
|
491
|
+
return ` ${camelCase(key)}: ${converter},`;
|
|
492
|
+
})
|
|
493
|
+
.join('\n');
|
|
489
494
|
|
|
490
495
|
return `function to${name}(o: Msgpack${name}): ${name} {
|
|
491
496
|
${checks};
|
|
@@ -502,15 +507,20 @@ ${conversions}
|
|
|
502
507
|
return `function from${name}(o: ${name}): Msgpack${name} {\n return {};\n}`;
|
|
503
508
|
}
|
|
504
509
|
|
|
505
|
-
const checks = fields
|
|
506
|
-
|
|
507
|
-
|
|
510
|
+
const checks = fields
|
|
511
|
+
.map(
|
|
512
|
+
([key]) =>
|
|
513
|
+
` if (o.${camelCase(key)} === undefined) { throw new Error("Expected ${camelCase(key)} in ${name} serialization"); }`,
|
|
514
|
+
)
|
|
515
|
+
.join('\n');
|
|
508
516
|
|
|
509
|
-
const conversions = fields
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
517
|
+
const conversions = fields
|
|
518
|
+
.map(([key, value]) => {
|
|
519
|
+
const typeInfo = this.processSchema(value);
|
|
520
|
+
const converter = this.generateConverter(typeInfo, `o.${camelCase(key)}`, 'from');
|
|
521
|
+
return ` ${key}: ${converter},`;
|
|
522
|
+
})
|
|
523
|
+
.join('\n');
|
|
514
524
|
|
|
515
525
|
return `function from${name}(o: ${name}): Msgpack${name} {
|
|
516
526
|
${checks};
|
|
@@ -531,8 +541,8 @@ ${conversions}
|
|
|
531
541
|
}
|
|
532
542
|
}
|
|
533
543
|
|
|
534
|
-
// Handle custom types
|
|
535
|
-
if (typeInfo.
|
|
544
|
+
// Handle custom types that have conversion methods (not just type aliases)
|
|
545
|
+
if (typeInfo.toMethod || typeInfo.fromMethod) {
|
|
536
546
|
return `${direction}${typeInfo.typeName}(${value})`;
|
|
537
547
|
}
|
|
538
548
|
|
|
@@ -579,9 +589,9 @@ ${conversions}
|
|
|
579
589
|
}
|
|
580
590
|
|
|
581
591
|
private generateBbApiBaseInterface(): string {
|
|
582
|
-
const methods = this.functionMetadata
|
|
583
|
-
` ${m.name}(command: ${m.commandType}): Promise<${m.responseType}>;`
|
|
584
|
-
|
|
592
|
+
const methods = this.functionMetadata
|
|
593
|
+
.map(m => ` ${m.name}(command: ${m.commandType}): Promise<${m.responseType}>;`)
|
|
594
|
+
.join('\n');
|
|
585
595
|
|
|
586
596
|
return `export interface BbApiBase {
|
|
587
597
|
${methods}
|
|
@@ -593,69 +603,77 @@ ${methods}
|
|
|
593
603
|
const className = this.getApiClassName();
|
|
594
604
|
const methods = this.functionMetadata.map(m => this.generateApiMethod(m)).join('\n\n');
|
|
595
605
|
|
|
596
|
-
if (this.config.mode === 'native') {
|
|
597
|
-
return this.generateNativeApiClass(methods);
|
|
598
|
-
}
|
|
599
|
-
|
|
600
606
|
// For sync API, don't implement BbApiBase since methods are synchronous
|
|
601
607
|
const implementsClause = this.config.mode === 'sync' ? '' : ' implements BbApiBase';
|
|
602
608
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
`
|
|
607
|
-
`}
|
|
609
|
+
// For tracing all calls to bb.
|
|
610
|
+
// const msgpackCallHelper =
|
|
611
|
+
// `${this.config.mode === 'async' ? 'async ' : ''}function msgpackCall(backend: ${this.getBackendType()}, input: any[]) {\n` +
|
|
612
|
+
// ` const commandName = input[0]?.[0] || 'unknown';\n` +
|
|
613
|
+
// ` process.stderr.write(\`[BB MSGPACK ${this.config.mode === 'async' ? 'ASYNC' : 'SYNC'}] \${commandName}\\n\`);\n` +
|
|
614
|
+
// ` const inputBuffer = new Encoder({ useRecords: false }).pack(input);\n` +
|
|
615
|
+
// ` const encodedResult = ${this.config.mode === 'async' ? 'await ' : ''}backend.call(inputBuffer);\n` +
|
|
616
|
+
// ` const result = new Decoder({ useRecords: false }).unpack(encodedResult);\n` +
|
|
617
|
+
// ` process.stderr.write(\`[BB MSGPACK ${this.config.mode === 'async' ? 'ASYNC' : 'SYNC'}] \${commandName} => completed\\n\`);\n` +
|
|
618
|
+
// ` return result;\n` +
|
|
619
|
+
// `}\n`;
|
|
620
|
+
const msgpackCallHelper =
|
|
621
|
+
`${this.config.mode === 'async' ? 'async ' : ''}function msgpackCall(backend: ${this.getBackendType()}, input: any[]) {` +
|
|
622
|
+
` const inputBuffer = new Encoder({ useRecords: false }).pack(input);` +
|
|
623
|
+
` const encodedResult = ${this.config.mode === 'async' ? 'await ' : ''}backend.call(inputBuffer);` +
|
|
624
|
+
` return new Decoder({ useRecords: false }).unpack(encodedResult);` +
|
|
625
|
+
`}\n`;
|
|
626
|
+
const destroyMethod =
|
|
627
|
+
this.config.mode === 'sync'
|
|
628
|
+
? ` destroy(): void {
|
|
629
|
+
if (this.backend.destroy) this.backend.destroy();
|
|
630
|
+
}`
|
|
631
|
+
: ` destroy(): Promise<void> {
|
|
632
|
+
return this.backend.destroy ? this.backend.destroy() : Promise.resolve();
|
|
633
|
+
}`;
|
|
634
|
+
|
|
608
635
|
return (
|
|
609
636
|
msgpackCallHelper +
|
|
610
637
|
`export class ${className}${implementsClause} {
|
|
611
|
-
constructor(protected
|
|
638
|
+
constructor(protected backend: ${this.getBackendType()}) {}
|
|
612
639
|
|
|
613
640
|
${methods}
|
|
614
641
|
|
|
615
|
-
|
|
616
|
-
return this.wasm.destroy();
|
|
617
|
-
}
|
|
642
|
+
${destroyMethod}
|
|
618
643
|
}`
|
|
619
644
|
);
|
|
620
645
|
}
|
|
621
646
|
|
|
622
647
|
private getApiClassName(): string {
|
|
623
648
|
switch (this.config.mode) {
|
|
624
|
-
case 'sync':
|
|
625
|
-
|
|
626
|
-
case '
|
|
627
|
-
|
|
649
|
+
case 'sync':
|
|
650
|
+
return 'SyncApi';
|
|
651
|
+
case 'async':
|
|
652
|
+
return 'AsyncApi';
|
|
653
|
+
default:
|
|
654
|
+
throw new Error(`Invalid mode: ${this.config.mode}`);
|
|
628
655
|
}
|
|
629
656
|
}
|
|
630
657
|
|
|
631
|
-
private
|
|
658
|
+
private getBackendType(): string {
|
|
632
659
|
switch (this.config.mode) {
|
|
633
|
-
case 'sync':
|
|
634
|
-
|
|
635
|
-
|
|
660
|
+
case 'sync':
|
|
661
|
+
return 'IMsgpackBackendSync';
|
|
662
|
+
case 'async':
|
|
663
|
+
return 'IMsgpackBackendAsync';
|
|
664
|
+
default:
|
|
665
|
+
return '';
|
|
636
666
|
}
|
|
637
667
|
}
|
|
638
668
|
|
|
639
669
|
private generateApiMethod(metadata: FunctionMetadata): string {
|
|
640
670
|
const { name, commandType, responseType } = metadata;
|
|
641
671
|
|
|
642
|
-
if (this.config.mode === 'native') {
|
|
643
|
-
return ` ${name}(command: ${commandType}): Promise<${responseType}> {
|
|
644
|
-
const msgpackCommand = from${commandType}(command);
|
|
645
|
-
return this.sendCommand(['${metadata.commandType}', msgpackCommand]).then(([variantName, result]: [string, any]) => {
|
|
646
|
-
if (variantName !== '${responseType}') {
|
|
647
|
-
throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
|
|
648
|
-
}
|
|
649
|
-
return to${responseType}(result);
|
|
650
|
-
});
|
|
651
|
-
}`;
|
|
652
|
-
}
|
|
653
|
-
|
|
654
672
|
// For async mode, queue immediately and return promise
|
|
655
673
|
if (this.config.mode === 'async') {
|
|
656
674
|
return ` ${name}(command: ${commandType}): Promise<${responseType}> {
|
|
657
675
|
const msgpackCommand = from${commandType}(command);
|
|
658
|
-
return msgpackCall(this.
|
|
676
|
+
return msgpackCall(this.backend, [["${capitalize(name)}", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
|
|
659
677
|
if (variantName !== '${responseType}') {
|
|
660
678
|
throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
|
|
661
679
|
}
|
|
@@ -667,131 +685,13 @@ ${methods}
|
|
|
667
685
|
// For sync mode, keep the synchronous behavior
|
|
668
686
|
return ` ${name}(command: ${commandType}): ${responseType} {
|
|
669
687
|
const msgpackCommand = from${commandType}(command);
|
|
670
|
-
const [variantName, result] = msgpackCall(this.
|
|
688
|
+
const [variantName, result] = msgpackCall(this.backend, [["${capitalize(name)}", msgpackCommand]]);
|
|
671
689
|
if (variantName !== '${responseType}') {
|
|
672
690
|
throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
|
|
673
691
|
}
|
|
674
692
|
return to${responseType}(result);
|
|
675
693
|
}`;
|
|
676
694
|
}
|
|
677
|
-
|
|
678
|
-
private generateNativeApiClass(methods: string): string {
|
|
679
|
-
return `interface NativeApiRequest {
|
|
680
|
-
resolve: (value: any) => void;
|
|
681
|
-
reject: (error: any) => void;
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
class StreamBuffer {
|
|
685
|
-
private buffer = Buffer.alloc(0);
|
|
686
|
-
private expectedLength: number | null = null;
|
|
687
|
-
|
|
688
|
-
addData(data: Buffer): Buffer[] {
|
|
689
|
-
// Create buffer to grow as needed
|
|
690
|
-
const newBuffer = Buffer.allocUnsafe(this.buffer.length + data.length);
|
|
691
|
-
this.buffer.copy(newBuffer, 0);
|
|
692
|
-
data.copy(newBuffer, this.buffer.length);
|
|
693
|
-
this.buffer = newBuffer;
|
|
694
|
-
|
|
695
|
-
const messages: Buffer[] = [];
|
|
696
|
-
|
|
697
|
-
while (true) {
|
|
698
|
-
if (this.expectedLength === null) {
|
|
699
|
-
if (this.buffer.length < 4) break;
|
|
700
|
-
this.expectedLength = this.buffer.readUInt32LE(0);
|
|
701
|
-
this.buffer = this.buffer.subarray(4);
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
if (this.buffer.length < this.expectedLength) break;
|
|
705
|
-
|
|
706
|
-
// Extract complete message
|
|
707
|
-
const messageBuffer = this.buffer.subarray(0, this.expectedLength);
|
|
708
|
-
messages.push(messageBuffer);
|
|
709
|
-
this.buffer = this.buffer.subarray(this.expectedLength);
|
|
710
|
-
this.expectedLength = null;
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
return messages;
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
export class NativeApi implements BbApiBase {
|
|
718
|
-
private decoder = new Decoder({ useRecords: false });
|
|
719
|
-
private encoder = new Encoder({ useRecords: false });
|
|
720
|
-
private pendingRequests: NativeApiRequest[] = [];
|
|
721
|
-
|
|
722
|
-
private constructor(private proc: ChildProcess) {}
|
|
723
|
-
|
|
724
|
-
static async new(bbPath = 'bb', logger = console.log): Promise<NativeApi> {
|
|
725
|
-
const proc = spawn(bbPath, ['msgpack', 'run'], {
|
|
726
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
727
|
-
});
|
|
728
|
-
|
|
729
|
-
if (!proc.stdout || !proc.stdin) {
|
|
730
|
-
throw new Error('Failed to initialize bb process');
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
const api = new NativeApi(proc);
|
|
734
|
-
const streamBuffer = new StreamBuffer();
|
|
735
|
-
|
|
736
|
-
proc.stdout.on('data', (data: Buffer) => {
|
|
737
|
-
const messages = streamBuffer.addData(data);
|
|
738
|
-
|
|
739
|
-
for (const messageBuffer of messages) {
|
|
740
|
-
const pendingRequest = api.pendingRequests.shift();
|
|
741
|
-
if (!pendingRequest) {
|
|
742
|
-
throw new Error('Received response without a pending request');
|
|
743
|
-
}
|
|
744
|
-
|
|
745
|
-
try {
|
|
746
|
-
const decoded = api.decoder.decode(messageBuffer);
|
|
747
|
-
if (!Array.isArray(decoded) || decoded.length !== 2) {
|
|
748
|
-
throw new Error(\`Invalid response format: \${JSON.stringify(decoded)}\`);
|
|
749
|
-
}
|
|
750
|
-
const [variantName, result] = decoded;
|
|
751
|
-
pendingRequest.resolve([variantName, result]);
|
|
752
|
-
} catch (error) {
|
|
753
|
-
pendingRequest.reject(error);
|
|
754
|
-
break;
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
});
|
|
758
|
-
|
|
759
|
-
proc.stderr.on('data', (data: Buffer) => {
|
|
760
|
-
logger(data.toString().trim());
|
|
761
|
-
});
|
|
762
|
-
|
|
763
|
-
proc.on('error', err => {
|
|
764
|
-
throw new Error(err.message);
|
|
765
|
-
});
|
|
766
|
-
return api;
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
private sendCommand(command: any): Promise<any> {
|
|
770
|
-
return new Promise((resolve, reject) => {
|
|
771
|
-
this.pendingRequests.push({ resolve, reject });
|
|
772
|
-
const encoded = this.encoder.encode(command);
|
|
773
|
-
|
|
774
|
-
// Write length prefix (4 bytes, little-endian)
|
|
775
|
-
const lengthBuffer = Buffer.allocUnsafe(4);
|
|
776
|
-
lengthBuffer.writeUInt32LE(encoded.length, 0);
|
|
777
|
-
|
|
778
|
-
// Write length prefix followed by the encoded data
|
|
779
|
-
this.proc.stdin!.write(lengthBuffer);
|
|
780
|
-
this.proc.stdin!.write(encoded);
|
|
781
|
-
});
|
|
782
|
-
}
|
|
783
|
-
|
|
784
|
-
async close(): Promise<void> {
|
|
785
|
-
this.proc.kill();
|
|
786
|
-
}
|
|
787
|
-
|
|
788
|
-
destroy(): Promise<void> {
|
|
789
|
-
return this.close();
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
${methods}
|
|
793
|
-
}`;
|
|
794
|
-
}
|
|
795
695
|
}
|
|
796
696
|
|
|
797
697
|
// Factory methods for creating configured compilers
|
|
@@ -806,7 +706,7 @@ export function createSyncApiCompiler(): SchemaCompiler {
|
|
|
806
706
|
return new SchemaCompiler({
|
|
807
707
|
mode: 'sync',
|
|
808
708
|
imports: [
|
|
809
|
-
`import {
|
|
709
|
+
`import { IMsgpackBackendSync } from '../../bb_backends/interface.js';`,
|
|
810
710
|
`import { Decoder, Encoder } from 'msgpackr';`,
|
|
811
711
|
],
|
|
812
712
|
});
|
|
@@ -816,18 +716,8 @@ export function createAsyncApiCompiler(): SchemaCompiler {
|
|
|
816
716
|
return new SchemaCompiler({
|
|
817
717
|
mode: 'async',
|
|
818
718
|
imports: [
|
|
819
|
-
`import {
|
|
820
|
-
`import { Decoder, Encoder } from 'msgpackr'
|
|
821
|
-
],
|
|
822
|
-
});
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
export function createNativeApiCompiler(): SchemaCompiler {
|
|
826
|
-
return new SchemaCompiler({
|
|
827
|
-
mode: 'native',
|
|
828
|
-
imports: [
|
|
829
|
-
`import { spawn, ChildProcess } from 'child_process';`,
|
|
830
|
-
`import { Decoder, Encoder } from 'msgpackr';`
|
|
719
|
+
`import { IMsgpackBackendAsync } from '../../bb_backends/interface.js';`,
|
|
720
|
+
`import { Decoder, Encoder } from 'msgpackr';`,
|
|
831
721
|
],
|
|
832
722
|
});
|
|
833
723
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Crs, GrumpkinCrs } from './crs/index.js';
|
|
2
2
|
export {
|
|
3
3
|
type BackendOptions,
|
|
4
|
+
BackendType,
|
|
4
5
|
Barretenberg,
|
|
5
6
|
BarretenbergSync,
|
|
6
7
|
UltraHonkVerifierBackend,
|
|
@@ -9,5 +10,5 @@ export {
|
|
|
9
10
|
} from './barretenberg/index.js';
|
|
10
11
|
|
|
11
12
|
export { randomBytes } from './random/index.js';
|
|
12
|
-
export {
|
|
13
|
+
export { Fr } from './types/index.js';
|
|
13
14
|
export { splitHonkProof, reconstructHonkProof, deflattenFields, type ProofData } from './proof/index.js';
|
package/src/serialize/index.ts
CHANGED