@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"function_declaration.d.ts","sourceRoot":"","sources":["../../../src/bindgen/function_declaration.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25fZGVjbGFyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmluZGdlbi9mdW5jdGlvbl9kZWNsYXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bindgen/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const rust_js_1 = require("./rust.js");
|
|
4
|
-
const typescript_js_1 = require("./typescript.js");
|
|
5
|
-
const [, , exp = '../exports.json', lang = 'ts'] = process.argv;
|
|
6
|
-
function generateCode(exports, lang) {
|
|
7
|
-
switch (lang) {
|
|
8
|
-
case 'ts':
|
|
9
|
-
return (0, typescript_js_1.generateTypeScriptCode)(exports);
|
|
10
|
-
case 'rust':
|
|
11
|
-
return (0, rust_js_1.generateRustCode)(exports);
|
|
12
|
-
default:
|
|
13
|
-
throw new Error(`Unknown lang: ${lang}`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
console.log(generateCode(exp, lang));
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmluZGdlbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVDQUE2QztBQUM3QyxtREFBeUQ7QUFFekQsTUFBTSxDQUFDLEVBQUUsQUFBRCxFQUFHLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUVoRSxTQUFTLFlBQVksQ0FBQyxPQUFlLEVBQUUsSUFBWTtJQUNqRCxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxJQUFJO1lBQ1AsT0FBTyxJQUFBLHNDQUFzQixFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLEtBQUssTUFBTTtZQUNULE9BQU8sSUFBQSwwQkFBZ0IsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNuQztZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNILENBQUM7QUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mappings.d.ts","sourceRoot":"","sources":["../../../src/bindgen/mappings.ts"],"names":[],"mappings":"AAoDA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,UAKnC;AAED,eAAO,MAAM,WAAW,gBAAU,CAAC;AAEnC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,UAK3C"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapRustType = void 0;
|
|
4
|
-
exports.mapType = mapType;
|
|
5
|
-
exports.mapDeserializer = mapDeserializer;
|
|
6
|
-
/* eslint-disable camelcase */
|
|
7
|
-
const typeMap = {
|
|
8
|
-
in_ptr: 'Ptr',
|
|
9
|
-
out_ptr: 'Ptr',
|
|
10
|
-
'bb::fr::in_buf': 'Fr',
|
|
11
|
-
'bb::fr::vec_in_buf': 'Fr[]',
|
|
12
|
-
'fr::in_buf': 'Fr',
|
|
13
|
-
'fr::out_buf': 'Fr',
|
|
14
|
-
'fr::vec_in_buf': 'Fr[]',
|
|
15
|
-
'fr::vec_out_buf': 'Fr[]',
|
|
16
|
-
'fq::in_buf': 'Fq',
|
|
17
|
-
'fq::out_buf': 'Fq',
|
|
18
|
-
'fq::vec_in_buf': 'Fq[]',
|
|
19
|
-
'fq::vec_out_buf': 'Fq[]',
|
|
20
|
-
'const uint8_t *': 'Uint8Array',
|
|
21
|
-
uint8_vec_vec_in_buf: 'Uint8Array[]',
|
|
22
|
-
'uint8_t **': 'Uint8Array',
|
|
23
|
-
in_str_buf: 'string',
|
|
24
|
-
out_str_buf: 'string',
|
|
25
|
-
in_buf32: 'Buffer32',
|
|
26
|
-
out_buf32: 'Buffer32',
|
|
27
|
-
'uint32_t *': 'number',
|
|
28
|
-
'const uint32_t *': 'number',
|
|
29
|
-
'affine_element::in_buf': 'Point',
|
|
30
|
-
'affine_element::out_buf': 'Point',
|
|
31
|
-
'const bool *': 'boolean',
|
|
32
|
-
'bool *': 'boolean',
|
|
33
|
-
'multisig::MultiSigPublicKey::vec_in_buf': 'Buffer128[]',
|
|
34
|
-
'multisig::MultiSigPublicKey::out_buf': 'Buffer128',
|
|
35
|
-
'multisig::RoundOnePublicOutput::vec_in_buf': 'Buffer128[]',
|
|
36
|
-
'multisig::RoundOnePublicOutput::out_buf': 'Buffer128',
|
|
37
|
-
'multisig::RoundOnePrivateOutput::in_buf': 'Buffer128',
|
|
38
|
-
'multisig::RoundOnePrivateOutput::out_buf': 'Buffer128',
|
|
39
|
-
};
|
|
40
|
-
const deserializerMap = {
|
|
41
|
-
out_ptr: 'Ptr',
|
|
42
|
-
'fr::out_buf': 'Fr',
|
|
43
|
-
'fr::vec_out_buf': 'VectorDeserializer(Fr)',
|
|
44
|
-
'fq::out_buf': 'Fq',
|
|
45
|
-
'fq::vec_out_buf': 'VectorDeserializer(Fq)',
|
|
46
|
-
'uint8_t **': 'BufferDeserializer()',
|
|
47
|
-
out_str_buf: 'StringDeserializer()',
|
|
48
|
-
out_buf32: 'Buffer32',
|
|
49
|
-
'uint32_t *': 'NumberDeserializer()',
|
|
50
|
-
'affine_element::out_buf': 'Point',
|
|
51
|
-
'bool *': 'BoolDeserializer()',
|
|
52
|
-
'multisig::MultiSigPublicKey::out_buf': 'Buffer128',
|
|
53
|
-
'multisig::RoundOnePublicOutput::out_buf': 'Buffer128',
|
|
54
|
-
'multisig::RoundOnePrivateOutput::out_buf': 'Buffer128',
|
|
55
|
-
};
|
|
56
|
-
function mapType(type) {
|
|
57
|
-
if (typeMap[type]) {
|
|
58
|
-
return typeMap[type];
|
|
59
|
-
}
|
|
60
|
-
throw new Error(`Unknown type: ${type}`);
|
|
61
|
-
}
|
|
62
|
-
exports.mapRustType = mapType;
|
|
63
|
-
function mapDeserializer(type) {
|
|
64
|
-
if (deserializerMap[type]) {
|
|
65
|
-
return deserializerMap[type];
|
|
66
|
-
}
|
|
67
|
-
throw new Error(`Unknown deserializer for type: ${type}`);
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmluZGdlbi9tYXBwaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvREEsMEJBS0M7QUFJRCwwQ0FLQztBQWxFRCw4QkFBOEI7QUFDOUIsTUFBTSxPQUFPLEdBQThCO0lBQ3pDLE1BQU0sRUFBRSxLQUFLO0lBQ2IsT0FBTyxFQUFFLEtBQUs7SUFDZCxnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLG9CQUFvQixFQUFFLE1BQU07SUFDNUIsWUFBWSxFQUFFLElBQUk7SUFDbEIsYUFBYSxFQUFFLElBQUk7SUFDbkIsZ0JBQWdCLEVBQUUsTUFBTTtJQUN4QixpQkFBaUIsRUFBRSxNQUFNO0lBQ3pCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGdCQUFnQixFQUFFLE1BQU07SUFDeEIsaUJBQWlCLEVBQUUsTUFBTTtJQUN6QixpQkFBaUIsRUFBRSxZQUFZO0lBQy9CLG9CQUFvQixFQUFFLGNBQWM7SUFDcEMsWUFBWSxFQUFFLFlBQVk7SUFDMUIsVUFBVSxFQUFFLFFBQVE7SUFDcEIsV0FBVyxFQUFFLFFBQVE7SUFDckIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsU0FBUyxFQUFFLFVBQVU7SUFDckIsWUFBWSxFQUFFLFFBQVE7SUFDdEIsa0JBQWtCLEVBQUUsUUFBUTtJQUM1Qix3QkFBd0IsRUFBRSxPQUFPO0lBQ2pDLHlCQUF5QixFQUFFLE9BQU87SUFDbEMsY0FBYyxFQUFFLFNBQVM7SUFDekIsUUFBUSxFQUFFLFNBQVM7SUFDbkIseUNBQXlDLEVBQUUsYUFBYTtJQUN4RCxzQ0FBc0MsRUFBRSxXQUFXO0lBQ25ELDRDQUE0QyxFQUFFLGFBQWE7SUFDM0QseUNBQXlDLEVBQUUsV0FBVztJQUN0RCx5Q0FBeUMsRUFBRSxXQUFXO0lBQ3RELDBDQUEwQyxFQUFFLFdBQVc7Q0FDeEQsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUE4QjtJQUNqRCxPQUFPLEVBQUUsS0FBSztJQUNkLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGlCQUFpQixFQUFFLHdCQUF3QjtJQUMzQyxhQUFhLEVBQUUsSUFBSTtJQUNuQixpQkFBaUIsRUFBRSx3QkFBd0I7SUFDM0MsWUFBWSxFQUFFLHNCQUFzQjtJQUNwQyxXQUFXLEVBQUUsc0JBQXNCO0lBQ25DLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLFlBQVksRUFBRSxzQkFBc0I7SUFDcEMseUJBQXlCLEVBQUUsT0FBTztJQUNsQyxRQUFRLEVBQUUsb0JBQW9CO0lBQzlCLHNDQUFzQyxFQUFFLFdBQVc7SUFDbkQseUNBQXlDLEVBQUUsV0FBVztJQUN0RCwwQ0FBMEMsRUFBRSxXQUFXO0NBQ3hELENBQUM7QUFFRixTQUFnQixPQUFPLENBQUMsSUFBWTtJQUNsQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFWSxRQUFBLFdBQVcsR0FBRyxPQUFPLENBQUM7QUFFbkMsU0FBZ0IsZUFBZSxDQUFDLElBQVk7SUFDMUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM1RCxDQUFDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/bindgen/rust.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,UAoChD"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateRustCode = generateRustCode;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
6
|
-
const mappings_js_1 = require("./mappings.js");
|
|
7
|
-
function generateRustCode(filename) {
|
|
8
|
-
const fileContent = fs_1.default.readFileSync(filename, 'utf-8');
|
|
9
|
-
const functionDeclarations = JSON.parse(fileContent);
|
|
10
|
-
let output = `
|
|
11
|
-
// WARNING: FILE CODE GENERATED BY BINDGEN UTILITY. DO NOT EDIT!
|
|
12
|
-
use crate::call_wasm_export::call_wasm_export;
|
|
13
|
-
use crate::serialize::{BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer};
|
|
14
|
-
use crate::types::{Fr, Fq, Point, Buffer32, Buffer128};
|
|
15
|
-
`;
|
|
16
|
-
for (const { functionName, inArgs, outArgs } of functionDeclarations) {
|
|
17
|
-
const parameters = inArgs.map(({ name, type }) => `${name}: ${(0, mappings_js_1.mapRustType)(type)}`).join(', ');
|
|
18
|
-
const inArgsVar = `let in_args = vec![${inArgs.map(arg => arg.name).join(', ')}];`;
|
|
19
|
-
const outTypesVar = `let out_types = vec![${outArgs.map(arg => (0, mappings_js_1.mapDeserializer)(arg.type)).join(', ')}];`;
|
|
20
|
-
const wasmCall = `let result = call_wasm_export(&"${functionName}", &in_args, &out_types)?;`;
|
|
21
|
-
const returnStmt = getReturnStmt(outArgs);
|
|
22
|
-
const returnType = outArgs.length === 0
|
|
23
|
-
? '-> Result<(), Box<dyn std::error::Error>>'
|
|
24
|
-
: `-> Result<(${outArgs.map(a => (0, mappings_js_1.mapRustType)(a.type)).join(', ')}), Box<dyn std::error::Error>>`;
|
|
25
|
-
const functionDecl = `
|
|
26
|
-
pub fn ${functionName}(${parameters})${returnType} {
|
|
27
|
-
${inArgsVar}
|
|
28
|
-
${outTypesVar}
|
|
29
|
-
${wasmCall}
|
|
30
|
-
${returnStmt}
|
|
31
|
-
}
|
|
32
|
-
`;
|
|
33
|
-
output += functionDecl;
|
|
34
|
-
}
|
|
35
|
-
return output;
|
|
36
|
-
}
|
|
37
|
-
function getReturnStmt(outArgs) {
|
|
38
|
-
switch (outArgs.length) {
|
|
39
|
-
case 0:
|
|
40
|
-
return 'Ok(())';
|
|
41
|
-
case 1:
|
|
42
|
-
return `Ok(result[0].clone())`;
|
|
43
|
-
default:
|
|
44
|
-
return `Ok((${outArgs.map((_, idx) => `result[${idx}].clone()`).join(', ')}))`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZ2VuL3J1c3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSw0Q0FvQ0M7O0FBeENELG9EQUFvQjtBQUVwQiwrQ0FBNkQ7QUFFN0QsU0FBZ0IsZ0JBQWdCLENBQUMsUUFBZ0I7SUFDL0MsTUFBTSxXQUFXLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsTUFBTSxvQkFBb0IsR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU1RSxJQUFJLE1BQU0sR0FBRzs7Ozs7Q0FLZCxDQUFDO0lBRUEsS0FBSyxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEtBQUssSUFBQSx5QkFBVyxFQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUYsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkYsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDekcsTUFBTSxRQUFRLEdBQUcsbUNBQW1DLFlBQVksNEJBQTRCLENBQUM7UUFFN0YsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sVUFBVSxHQUNkLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNsQixDQUFDLENBQUMsMkNBQTJDO1lBQzdDLENBQUMsQ0FBQyxjQUFjLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFBLHlCQUFXLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQztRQUVyRyxNQUFNLFlBQVksR0FBRztTQUNoQixZQUFZLElBQUksVUFBVSxJQUFJLFVBQVU7TUFDM0MsU0FBUztNQUNULFdBQVc7TUFDWCxRQUFRO01BQ1IsVUFBVTs7Q0FFZixDQUFDO1FBRUUsTUFBTSxJQUFJLFlBQVksQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE9BQWM7SUFDbkMsUUFBUSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDO1lBQ0osT0FBTyxRQUFRLENBQUM7UUFDbEIsS0FBSyxDQUFDO1lBQ0osT0FBTyx1QkFBdUIsQ0FBQztRQUNqQztZQUNFLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25GLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to_camel_case.d.ts","sourceRoot":"","sources":["../../../src/bindgen/to_camel_case.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASjD"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toCamelCase = toCamelCase;
|
|
4
|
-
function toCamelCase(input) {
|
|
5
|
-
const words = input.split('_');
|
|
6
|
-
const camelCasedWords = words.map((word, index) => {
|
|
7
|
-
if (index === 0) {
|
|
8
|
-
return word;
|
|
9
|
-
}
|
|
10
|
-
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
11
|
-
});
|
|
12
|
-
return camelCasedWords.join('');
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9fY2FtZWxfY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZ2VuL3RvX2NhbWVsX2Nhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQ0FTQztBQVRELFNBQWdCLFdBQVcsQ0FBQyxLQUFhO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNoRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxDQUFDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/bindgen/typescript.ts"],"names":[],"mappings":"AAKA,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,UAgBtD"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateTypeScriptCode = generateTypeScriptCode;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
6
|
-
const mappings_js_1 = require("./mappings.js");
|
|
7
|
-
const to_camel_case_js_1 = require("./to_camel_case.js");
|
|
8
|
-
function generateTypeScriptCode(filename) {
|
|
9
|
-
const fileContent = fs_1.default.readFileSync(filename, 'utf-8');
|
|
10
|
-
const functionDeclarations = JSON.parse(fileContent);
|
|
11
|
-
let output = `// WARNING: FILE CODE GENERATED BY BINDGEN UTILITY. DO NOT EDIT!
|
|
12
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
13
|
-
import { BarretenbergWasmMain, BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
|
|
14
|
-
import { BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer, StringDeserializer, serializeBufferable, OutputType } from '../serialize/index.js';
|
|
15
|
-
import { Fr, Point, Buffer32, Ptr } from '../types/index.js';
|
|
16
|
-
|
|
17
|
-
`;
|
|
18
|
-
output += generateClass(functionDeclarations);
|
|
19
|
-
output += generateSyncClass(functionDeclarations);
|
|
20
|
-
return output;
|
|
21
|
-
}
|
|
22
|
-
function generateClass(functionDeclarations) {
|
|
23
|
-
let output = `
|
|
24
|
-
export class BarretenbergApi {
|
|
25
|
-
constructor(protected wasm: BarretenbergWasmMainWorker) {}
|
|
26
|
-
|
|
27
|
-
`;
|
|
28
|
-
for (const { functionName, inArgs, outArgs } of functionDeclarations) {
|
|
29
|
-
try {
|
|
30
|
-
const parameters = inArgs.map(({ name, type }) => `${(0, to_camel_case_js_1.toCamelCase)(name)}: ${(0, mappings_js_1.mapType)(type)}`).join(', ');
|
|
31
|
-
const inArgsVar = `const inArgs = [${inArgs
|
|
32
|
-
.map(arg => (0, to_camel_case_js_1.toCamelCase)(arg.name))
|
|
33
|
-
.join(', ')}].map(serializeBufferable);`;
|
|
34
|
-
const outTypesVar = `const outTypes: OutputType[] = [${outArgs
|
|
35
|
-
.map(arg => (0, mappings_js_1.mapDeserializer)(arg.type))
|
|
36
|
-
.join(', ')}];`;
|
|
37
|
-
const wasmCall = `const result = await this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`;
|
|
38
|
-
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`;
|
|
39
|
-
const n = outArgs.length;
|
|
40
|
-
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;';
|
|
41
|
-
const returnType = outArgs.length === 0
|
|
42
|
-
? 'void'
|
|
43
|
-
: outArgs.length === 1
|
|
44
|
-
? `${(0, mappings_js_1.mapType)(outArgs[0].type)}`
|
|
45
|
-
: `[${outArgs.map(a => (0, mappings_js_1.mapType)(a.type)).join(', ')}]`;
|
|
46
|
-
output += `
|
|
47
|
-
async ${(0, to_camel_case_js_1.toCamelCase)(functionName)}(${parameters}): Promise<${returnType}> {
|
|
48
|
-
${inArgsVar}
|
|
49
|
-
${outTypesVar}
|
|
50
|
-
${wasmCall}
|
|
51
|
-
${outVar}
|
|
52
|
-
${returnStmt}
|
|
53
|
-
}
|
|
54
|
-
`;
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
throw new Error(`Function ${functionName}: ${err.message}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
output += `}`;
|
|
61
|
-
return output;
|
|
62
|
-
}
|
|
63
|
-
function generateSyncClass(functionDeclarations) {
|
|
64
|
-
let output = `
|
|
65
|
-
export class BarretenbergApiSync {
|
|
66
|
-
constructor(protected wasm: BarretenbergWasmMain) {}
|
|
67
|
-
|
|
68
|
-
`;
|
|
69
|
-
for (const { functionName, inArgs, outArgs } of functionDeclarations) {
|
|
70
|
-
try {
|
|
71
|
-
const parameters = inArgs.map(({ name, type }) => `${(0, to_camel_case_js_1.toCamelCase)(name)}: ${(0, mappings_js_1.mapType)(type)}`).join(', ');
|
|
72
|
-
const inArgsVar = `const inArgs = [${inArgs
|
|
73
|
-
.map(arg => (0, to_camel_case_js_1.toCamelCase)(arg.name))
|
|
74
|
-
.join(', ')}].map(serializeBufferable);`;
|
|
75
|
-
const outTypesVar = `const outTypes: OutputType[] = [${outArgs
|
|
76
|
-
.map(arg => (0, mappings_js_1.mapDeserializer)(arg.type))
|
|
77
|
-
.join(', ')}];`;
|
|
78
|
-
const wasmCall = `const result = this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`;
|
|
79
|
-
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`;
|
|
80
|
-
const n = outArgs.length;
|
|
81
|
-
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;';
|
|
82
|
-
const returnType = outArgs.length === 0
|
|
83
|
-
? 'void'
|
|
84
|
-
: outArgs.length === 1
|
|
85
|
-
? `${(0, mappings_js_1.mapType)(outArgs[0].type)}`
|
|
86
|
-
: `[${outArgs.map(a => (0, mappings_js_1.mapType)(a.type)).join(', ')}]`;
|
|
87
|
-
output += `
|
|
88
|
-
${(0, to_camel_case_js_1.toCamelCase)(functionName)}(${parameters}): ${returnType} {
|
|
89
|
-
${inArgsVar}
|
|
90
|
-
${outTypesVar}
|
|
91
|
-
${wasmCall}
|
|
92
|
-
${outVar}
|
|
93
|
-
${returnStmt}
|
|
94
|
-
}
|
|
95
|
-
`;
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
throw new Error(`Function ${functionName}: ${err.message}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
output += `}`;
|
|
102
|
-
return output;
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZ2VuL3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSx3REFnQkM7O0FBckJELG9EQUFvQjtBQUNwQiwrQ0FBeUQ7QUFDekQseURBQWlEO0FBR2pELFNBQWdCLHNCQUFzQixDQUFDLFFBQWdCO0lBQ3JELE1BQU0sV0FBVyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sb0JBQW9CLEdBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFNUUsSUFBSSxNQUFNLEdBQUc7Ozs7OztDQU1kLENBQUM7SUFFQSxNQUFNLElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDOUMsTUFBTSxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLG9CQUEyQztJQUNoRSxJQUFJLE1BQU0sR0FBRzs7OztDQUlkLENBQUM7SUFFQSxLQUFLLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUEsOEJBQVcsRUFBQyxJQUFJLENBQUMsS0FBSyxJQUFBLHFCQUFPLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RyxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsTUFBTTtpQkFDeEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBQSw4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
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { BbApiBase, CircuitComputeVk, CircuitComputeVkResponse, CircuitInfoResponse, CircuitProve, CircuitProveResponse, CircuitStats, CircuitVerify, CircuitVerifyResponse, CircuitWriteSolidityVerifier, CircuitWriteSolidityVerifierResponse, ClientIvcAccumulate, ClientIvcAccumulateResponse, ClientIvcCheckPrecomputedVk, ClientIvcCheckPrecomputedVkResponse, ClientIvcComputeIvcVk, ClientIvcComputeIvcVkResponse, ClientIvcComputeStandaloneVk, ClientIvcComputeStandaloneVkResponse, ClientIvcLoad, ClientIvcLoadResponse, ClientIvcProve, ClientIvcProveResponse, ClientIvcStart, ClientIvcStartResponse, ClientIvcStats, ClientIvcStatsResponse, ClientIvcVerify, ClientIvcVerifyResponse, VkAsFields, VkAsFieldsResponse } from './api_types.js';
|
|
2
|
-
export declare class NativeApi implements BbApiBase {
|
|
3
|
-
private proc;
|
|
4
|
-
private decoder;
|
|
5
|
-
private encoder;
|
|
6
|
-
private pendingRequests;
|
|
7
|
-
private constructor();
|
|
8
|
-
static new(bbPath?: string, logger?: {
|
|
9
|
-
(...data: any[]): void;
|
|
10
|
-
(message?: any, ...optionalParams: any[]): void;
|
|
11
|
-
}): Promise<NativeApi>;
|
|
12
|
-
private sendCommand;
|
|
13
|
-
close(): Promise<void>;
|
|
14
|
-
destroy(): Promise<void>;
|
|
15
|
-
circuitProve(command: CircuitProve): Promise<CircuitProveResponse>;
|
|
16
|
-
circuitComputeVk(command: CircuitComputeVk): Promise<CircuitComputeVkResponse>;
|
|
17
|
-
circuitStats(command: CircuitStats): Promise<CircuitInfoResponse>;
|
|
18
|
-
circuitVerify(command: CircuitVerify): Promise<CircuitVerifyResponse>;
|
|
19
|
-
clientIvcComputeStandaloneVk(command: ClientIvcComputeStandaloneVk): Promise<ClientIvcComputeStandaloneVkResponse>;
|
|
20
|
-
clientIvcComputeIvcVk(command: ClientIvcComputeIvcVk): Promise<ClientIvcComputeIvcVkResponse>;
|
|
21
|
-
clientIvcStart(command: ClientIvcStart): Promise<ClientIvcStartResponse>;
|
|
22
|
-
clientIvcLoad(command: ClientIvcLoad): Promise<ClientIvcLoadResponse>;
|
|
23
|
-
clientIvcAccumulate(command: ClientIvcAccumulate): Promise<ClientIvcAccumulateResponse>;
|
|
24
|
-
clientIvcProve(command: ClientIvcProve): Promise<ClientIvcProveResponse>;
|
|
25
|
-
clientIvcVerify(command: ClientIvcVerify): Promise<ClientIvcVerifyResponse>;
|
|
26
|
-
vkAsFields(command: VkAsFields): Promise<VkAsFieldsResponse>;
|
|
27
|
-
circuitWriteSolidityVerifier(command: CircuitWriteSolidityVerifier): Promise<CircuitWriteSolidityVerifierResponse>;
|
|
28
|
-
clientIvcCheckPrecomputedVk(command: ClientIvcCheckPrecomputedVk): Promise<ClientIvcCheckPrecomputedVkResponse>;
|
|
29
|
-
clientIvcStats(command: ClientIvcStats): Promise<ClientIvcStatsResponse>;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=native.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../../src/cbind/generated/native.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,mBAAmB,EAAkC,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,oCAAoC,EAAkB,mBAAmB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,oCAAoC,EAAE,aAAa,EAAE,qBAAqB,EAAE,cAAc,EAAE,sBAAsB,EAAE,cAAc,EAAE,sBAAsB,EAAE,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,uBAAuB,EAA8D,UAAU,EAAE,kBAAkB,EAA+wB,MAAM,gBAAgB,CAAC;AAwCvlD,qBAAa,SAAU,YAAW,SAAS;IAKrB,OAAO,CAAC,IAAI;IAJhC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,eAAe,CAA0B;IAEjD,OAAO;WAEM,GAAG,CAAC,MAAM,SAAO,EAAE,MAAM;;;KAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IA6CzE,OAAO,CAAC,WAAW;IAeb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAUlE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAU9E,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAUjE,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUrE,4BAA4B,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,oCAAoC,CAAC;IAUlH,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAU7F,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAUxE,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUrE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAUvF,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAUxE,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAU3E,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAU5D,4BAA4B,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,oCAAoC,CAAC;IAUlH,2BAA2B,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,mCAAmC,CAAC;IAU/G,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;CASzE"}
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// AUTOGENERATED FILE - DO NOT EDIT
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.NativeApi = void 0;
|
|
5
|
-
const child_process_1 = require("child_process");
|
|
6
|
-
const msgpackr_1 = require("msgpackr");
|
|
7
|
-
const api_types_js_1 = require("./api_types.js");
|
|
8
|
-
class StreamBuffer {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.buffer = Buffer.alloc(0);
|
|
11
|
-
this.expectedLength = null;
|
|
12
|
-
}
|
|
13
|
-
addData(data) {
|
|
14
|
-
// Create buffer to grow as needed
|
|
15
|
-
const newBuffer = Buffer.allocUnsafe(this.buffer.length + data.length);
|
|
16
|
-
this.buffer.copy(newBuffer, 0);
|
|
17
|
-
data.copy(newBuffer, this.buffer.length);
|
|
18
|
-
this.buffer = newBuffer;
|
|
19
|
-
const messages = [];
|
|
20
|
-
while (true) {
|
|
21
|
-
if (this.expectedLength === null) {
|
|
22
|
-
if (this.buffer.length < 4)
|
|
23
|
-
break;
|
|
24
|
-
this.expectedLength = this.buffer.readUInt32LE(0);
|
|
25
|
-
this.buffer = this.buffer.subarray(4);
|
|
26
|
-
}
|
|
27
|
-
if (this.buffer.length < this.expectedLength)
|
|
28
|
-
break;
|
|
29
|
-
// Extract complete message
|
|
30
|
-
const messageBuffer = this.buffer.subarray(0, this.expectedLength);
|
|
31
|
-
messages.push(messageBuffer);
|
|
32
|
-
this.buffer = this.buffer.subarray(this.expectedLength);
|
|
33
|
-
this.expectedLength = null;
|
|
34
|
-
}
|
|
35
|
-
return messages;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
class NativeApi {
|
|
39
|
-
constructor(proc) {
|
|
40
|
-
this.proc = proc;
|
|
41
|
-
this.decoder = new msgpackr_1.Decoder({ useRecords: false });
|
|
42
|
-
this.encoder = new msgpackr_1.Encoder({ useRecords: false });
|
|
43
|
-
this.pendingRequests = [];
|
|
44
|
-
}
|
|
45
|
-
static async new(bbPath = 'bb', logger = console.log) {
|
|
46
|
-
const proc = (0, child_process_1.spawn)(bbPath, ['msgpack', 'run'], {
|
|
47
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
48
|
-
});
|
|
49
|
-
if (!proc.stdout || !proc.stdin) {
|
|
50
|
-
throw new Error('Failed to initialize bb process');
|
|
51
|
-
}
|
|
52
|
-
const api = new NativeApi(proc);
|
|
53
|
-
const streamBuffer = new StreamBuffer();
|
|
54
|
-
proc.stdout.on('data', (data) => {
|
|
55
|
-
const messages = streamBuffer.addData(data);
|
|
56
|
-
for (const messageBuffer of messages) {
|
|
57
|
-
const pendingRequest = api.pendingRequests.shift();
|
|
58
|
-
if (!pendingRequest) {
|
|
59
|
-
throw new Error('Received response without a pending request');
|
|
60
|
-
}
|
|
61
|
-
try {
|
|
62
|
-
const decoded = api.decoder.decode(messageBuffer);
|
|
63
|
-
if (!Array.isArray(decoded) || decoded.length !== 2) {
|
|
64
|
-
throw new Error(`Invalid response format: ${JSON.stringify(decoded)}`);
|
|
65
|
-
}
|
|
66
|
-
const [variantName, result] = decoded;
|
|
67
|
-
pendingRequest.resolve([variantName, result]);
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
pendingRequest.reject(error);
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
proc.stderr.on('data', (data) => {
|
|
76
|
-
logger(data.toString().trim());
|
|
77
|
-
});
|
|
78
|
-
proc.on('error', err => {
|
|
79
|
-
throw new Error(err.message);
|
|
80
|
-
});
|
|
81
|
-
return api;
|
|
82
|
-
}
|
|
83
|
-
sendCommand(command) {
|
|
84
|
-
return new Promise((resolve, reject) => {
|
|
85
|
-
this.pendingRequests.push({ resolve, reject });
|
|
86
|
-
const encoded = this.encoder.encode(command);
|
|
87
|
-
// Write length prefix (4 bytes, little-endian)
|
|
88
|
-
const lengthBuffer = Buffer.allocUnsafe(4);
|
|
89
|
-
lengthBuffer.writeUInt32LE(encoded.length, 0);
|
|
90
|
-
// Write length prefix followed by the encoded data
|
|
91
|
-
this.proc.stdin.write(lengthBuffer);
|
|
92
|
-
this.proc.stdin.write(encoded);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
async close() {
|
|
96
|
-
this.proc.kill();
|
|
97
|
-
}
|
|
98
|
-
destroy() {
|
|
99
|
-
return this.close();
|
|
100
|
-
}
|
|
101
|
-
circuitProve(command) {
|
|
102
|
-
const msgpackCommand = (0, api_types_js_1.fromCircuitProve)(command);
|
|
103
|
-
return this.sendCommand(['CircuitProve', msgpackCommand]).then(([variantName, result]) => {
|
|
104
|
-
if (variantName !== 'CircuitProveResponse') {
|
|
105
|
-
throw new Error(`Expected variant name 'CircuitProveResponse' but got '${variantName}'`);
|
|
106
|
-
}
|
|
107
|
-
return (0, api_types_js_1.toCircuitProveResponse)(result);
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
circuitComputeVk(command) {
|
|
111
|
-
const msgpackCommand = (0, api_types_js_1.fromCircuitComputeVk)(command);
|
|
112
|
-
return this.sendCommand(['CircuitComputeVk', msgpackCommand]).then(([variantName, result]) => {
|
|
113
|
-
if (variantName !== 'CircuitComputeVkResponse') {
|
|
114
|
-
throw new Error(`Expected variant name 'CircuitComputeVkResponse' but got '${variantName}'`);
|
|
115
|
-
}
|
|
116
|
-
return (0, api_types_js_1.toCircuitComputeVkResponse)(result);
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
circuitStats(command) {
|
|
120
|
-
const msgpackCommand = (0, api_types_js_1.fromCircuitStats)(command);
|
|
121
|
-
return this.sendCommand(['CircuitStats', msgpackCommand]).then(([variantName, result]) => {
|
|
122
|
-
if (variantName !== 'CircuitInfoResponse') {
|
|
123
|
-
throw new Error(`Expected variant name 'CircuitInfoResponse' but got '${variantName}'`);
|
|
124
|
-
}
|
|
125
|
-
return (0, api_types_js_1.toCircuitInfoResponse)(result);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
circuitVerify(command) {
|
|
129
|
-
const msgpackCommand = (0, api_types_js_1.fromCircuitVerify)(command);
|
|
130
|
-
return this.sendCommand(['CircuitVerify', msgpackCommand]).then(([variantName, result]) => {
|
|
131
|
-
if (variantName !== 'CircuitVerifyResponse') {
|
|
132
|
-
throw new Error(`Expected variant name 'CircuitVerifyResponse' but got '${variantName}'`);
|
|
133
|
-
}
|
|
134
|
-
return (0, api_types_js_1.toCircuitVerifyResponse)(result);
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
clientIvcComputeStandaloneVk(command) {
|
|
138
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcComputeStandaloneVk)(command);
|
|
139
|
-
return this.sendCommand(['ClientIvcComputeStandaloneVk', msgpackCommand]).then(([variantName, result]) => {
|
|
140
|
-
if (variantName !== 'ClientIvcComputeStandaloneVkResponse') {
|
|
141
|
-
throw new Error(`Expected variant name 'ClientIvcComputeStandaloneVkResponse' but got '${variantName}'`);
|
|
142
|
-
}
|
|
143
|
-
return (0, api_types_js_1.toClientIvcComputeStandaloneVkResponse)(result);
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
clientIvcComputeIvcVk(command) {
|
|
147
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcComputeIvcVk)(command);
|
|
148
|
-
return this.sendCommand(['ClientIvcComputeIvcVk', msgpackCommand]).then(([variantName, result]) => {
|
|
149
|
-
if (variantName !== 'ClientIvcComputeIvcVkResponse') {
|
|
150
|
-
throw new Error(`Expected variant name 'ClientIvcComputeIvcVkResponse' but got '${variantName}'`);
|
|
151
|
-
}
|
|
152
|
-
return (0, api_types_js_1.toClientIvcComputeIvcVkResponse)(result);
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
clientIvcStart(command) {
|
|
156
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcStart)(command);
|
|
157
|
-
return this.sendCommand(['ClientIvcStart', msgpackCommand]).then(([variantName, result]) => {
|
|
158
|
-
if (variantName !== 'ClientIvcStartResponse') {
|
|
159
|
-
throw new Error(`Expected variant name 'ClientIvcStartResponse' but got '${variantName}'`);
|
|
160
|
-
}
|
|
161
|
-
return (0, api_types_js_1.toClientIvcStartResponse)(result);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
clientIvcLoad(command) {
|
|
165
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcLoad)(command);
|
|
166
|
-
return this.sendCommand(['ClientIvcLoad', msgpackCommand]).then(([variantName, result]) => {
|
|
167
|
-
if (variantName !== 'ClientIvcLoadResponse') {
|
|
168
|
-
throw new Error(`Expected variant name 'ClientIvcLoadResponse' but got '${variantName}'`);
|
|
169
|
-
}
|
|
170
|
-
return (0, api_types_js_1.toClientIvcLoadResponse)(result);
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
clientIvcAccumulate(command) {
|
|
174
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcAccumulate)(command);
|
|
175
|
-
return this.sendCommand(['ClientIvcAccumulate', msgpackCommand]).then(([variantName, result]) => {
|
|
176
|
-
if (variantName !== 'ClientIvcAccumulateResponse') {
|
|
177
|
-
throw new Error(`Expected variant name 'ClientIvcAccumulateResponse' but got '${variantName}'`);
|
|
178
|
-
}
|
|
179
|
-
return (0, api_types_js_1.toClientIvcAccumulateResponse)(result);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
clientIvcProve(command) {
|
|
183
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcProve)(command);
|
|
184
|
-
return this.sendCommand(['ClientIvcProve', msgpackCommand]).then(([variantName, result]) => {
|
|
185
|
-
if (variantName !== 'ClientIvcProveResponse') {
|
|
186
|
-
throw new Error(`Expected variant name 'ClientIvcProveResponse' but got '${variantName}'`);
|
|
187
|
-
}
|
|
188
|
-
return (0, api_types_js_1.toClientIvcProveResponse)(result);
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
clientIvcVerify(command) {
|
|
192
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcVerify)(command);
|
|
193
|
-
return this.sendCommand(['ClientIvcVerify', msgpackCommand]).then(([variantName, result]) => {
|
|
194
|
-
if (variantName !== 'ClientIvcVerifyResponse') {
|
|
195
|
-
throw new Error(`Expected variant name 'ClientIvcVerifyResponse' but got '${variantName}'`);
|
|
196
|
-
}
|
|
197
|
-
return (0, api_types_js_1.toClientIvcVerifyResponse)(result);
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
vkAsFields(command) {
|
|
201
|
-
const msgpackCommand = (0, api_types_js_1.fromVkAsFields)(command);
|
|
202
|
-
return this.sendCommand(['VkAsFields', msgpackCommand]).then(([variantName, result]) => {
|
|
203
|
-
if (variantName !== 'VkAsFieldsResponse') {
|
|
204
|
-
throw new Error(`Expected variant name 'VkAsFieldsResponse' but got '${variantName}'`);
|
|
205
|
-
}
|
|
206
|
-
return (0, api_types_js_1.toVkAsFieldsResponse)(result);
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
circuitWriteSolidityVerifier(command) {
|
|
210
|
-
const msgpackCommand = (0, api_types_js_1.fromCircuitWriteSolidityVerifier)(command);
|
|
211
|
-
return this.sendCommand(['CircuitWriteSolidityVerifier', msgpackCommand]).then(([variantName, result]) => {
|
|
212
|
-
if (variantName !== 'CircuitWriteSolidityVerifierResponse') {
|
|
213
|
-
throw new Error(`Expected variant name 'CircuitWriteSolidityVerifierResponse' but got '${variantName}'`);
|
|
214
|
-
}
|
|
215
|
-
return (0, api_types_js_1.toCircuitWriteSolidityVerifierResponse)(result);
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
clientIvcCheckPrecomputedVk(command) {
|
|
219
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcCheckPrecomputedVk)(command);
|
|
220
|
-
return this.sendCommand(['ClientIvcCheckPrecomputedVk', msgpackCommand]).then(([variantName, result]) => {
|
|
221
|
-
if (variantName !== 'ClientIvcCheckPrecomputedVkResponse') {
|
|
222
|
-
throw new Error(`Expected variant name 'ClientIvcCheckPrecomputedVkResponse' but got '${variantName}'`);
|
|
223
|
-
}
|
|
224
|
-
return (0, api_types_js_1.toClientIvcCheckPrecomputedVkResponse)(result);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
clientIvcStats(command) {
|
|
228
|
-
const msgpackCommand = (0, api_types_js_1.fromClientIvcStats)(command);
|
|
229
|
-
return this.sendCommand(['ClientIvcStats', msgpackCommand]).then(([variantName, result]) => {
|
|
230
|
-
if (variantName !== 'ClientIvcStatsResponse') {
|
|
231
|
-
throw new Error(`Expected variant name 'ClientIvcStatsResponse' but got '${variantName}'`);
|
|
232
|
-
}
|
|
233
|
-
return (0, api_types_js_1.toClientIvcStatsResponse)(result);
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
exports.NativeApi = NativeApi;
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NiaW5kL2dlbmVyYXRlZC9uYXRpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1DQUFtQzs7O0FBRW5DLGlEQUFvRDtBQUNwRCx1Q0FBNEM7QUFDNUMsaURBQXVsRDtBQU92bEQsTUFBTSxZQUFZO0lBQWxCO1FBQ1UsV0FBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO0lBNkIvQyxDQUFDO0lBM0JDLE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLGtDQUFrQztRQUNsQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUV4QixNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFFOUIsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUFFLE1BQU07Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFD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
|