@aztec/bb.js 3.0.0-canary.a9708bd → 3.0.0-manual.20251030
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 +13 -79
- package/dest/browser/barretenberg/backend.d.ts +2 -2
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +40 -25
- package/dest/browser/barretenberg/index.d.ts +45 -44
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg/index.js +131 -80
- 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 +55 -14
- 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 +49 -0
- package/dest/browser/bb_backends/wasm.d.ts.map +1 -0
- package/dest/browser/bb_backends/wasm.js +83 -0
- package/dest/browser/bbapi_exception.d.ts +7 -0
- package/dest/browser/bbapi_exception.d.ts.map +1 -0
- package/dest/browser/bbapi_exception.js +14 -0
- package/dest/browser/cbind/generate.js +94 -7
- package/dest/browser/cbind/generated/api_types.d.ts +1640 -227
- package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/browser/cbind/generated/api_types.js +2366 -478
- package/dest/browser/cbind/generated/async.d.ts +52 -13
- package/dest/browser/cbind/generated/async.d.ts.map +1 -1
- package/dest/browser/cbind/generated/async.js +586 -72
- package/dest/browser/cbind/generated/curve_constants.d.ts +45 -0
- package/dest/browser/cbind/generated/curve_constants.d.ts.map +1 -0
- package/dest/browser/cbind/generated/curve_constants.js +45 -0
- package/dest/browser/cbind/generated/sync.d.ts +53 -14
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
- package/dest/browser/cbind/generated/sync.js +548 -72
- 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 +97 -181
- package/dest/browser/index.d.ts +4 -2
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +5 -3
- package/dest/browser/serialize/index.d.ts +0 -2
- package/dest/browser/serialize/index.d.ts.map +1 -1
- package/dest/browser/serialize/index.js +1 -3
- 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 +6 -26
- package/dest/browser/types/fields.d.ts.map +1 -1
- package/dest/browser/types/fields.js +16 -57
- 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/browser/types/point.d.ts +8 -6
- package/dest/browser/types/point.d.ts.map +1 -1
- package/dest/browser/types/point.js +12 -15
- 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 +2 -2
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +40 -25
- package/dest/node/barretenberg/blake2s.test.js +21 -18
- package/dest/node/barretenberg/index.d.ts +45 -44
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +131 -80
- 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 +217 -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 +55 -14
- 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 +49 -0
- package/dest/node/bb_backends/wasm.d.ts.map +1 -0
- package/dest/node/bb_backends/wasm.js +83 -0
- package/dest/node/bbapi_exception.d.ts +7 -0
- package/dest/node/bbapi_exception.d.ts.map +1 -0
- package/dest/node/bbapi_exception.js +14 -0
- package/dest/node/cbind/generate.js +94 -7
- package/dest/node/cbind/generated/api_types.d.ts +1640 -227
- package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node/cbind/generated/api_types.js +2366 -478
- package/dest/node/cbind/generated/async.d.ts +52 -13
- package/dest/node/cbind/generated/async.d.ts.map +1 -1
- package/dest/node/cbind/generated/async.js +586 -72
- package/dest/node/cbind/generated/curve_constants.d.ts +45 -0
- package/dest/node/cbind/generated/curve_constants.d.ts.map +1 -0
- package/dest/node/cbind/generated/curve_constants.js +45 -0
- package/dest/node/cbind/generated/sync.d.ts +53 -14
- package/dest/node/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node/cbind/generated/sync.js +548 -72
- 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 +97 -181
- package/dest/node/index.d.ts +4 -2
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +5 -3
- package/dest/node/serialize/index.d.ts +0 -2
- package/dest/node/serialize/index.d.ts.map +1 -1
- package/dest/node/serialize/index.js +1 -3
- 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 +6 -26
- package/dest/node/types/fields.d.ts.map +1 -1
- package/dest/node/types/fields.js +16 -57
- 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/types/point.d.ts +8 -6
- package/dest/node/types/point.d.ts.map +1 -1
- package/dest/node/types/point.js +12 -15
- package/dest/node-cjs/barretenberg/backend.d.ts +2 -2
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +38 -23
- package/dest/node-cjs/barretenberg/blake2s.test.js +19 -16
- package/dest/node-cjs/barretenberg/index.d.ts +45 -44
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +137 -85
- 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 +219 -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 +55 -14
- 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 +49 -0
- package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/wasm.js +88 -0
- package/dest/node-cjs/bbapi_exception.d.ts +7 -0
- package/dest/node-cjs/bbapi_exception.d.ts.map +1 -0
- package/dest/node-cjs/bbapi_exception.js +18 -0
- package/dest/node-cjs/cbind/generate.js +93 -6
- package/dest/node-cjs/cbind/generated/api_types.d.ts +1640 -227
- package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/api_types.js +2572 -516
- package/dest/node-cjs/cbind/generated/async.d.ts +52 -13
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/async.js +585 -71
- package/dest/node-cjs/cbind/generated/curve_constants.d.ts +45 -0
- package/dest/node-cjs/cbind/generated/curve_constants.d.ts.map +1 -0
- package/dest/node-cjs/cbind/generated/curve_constants.js +48 -0
- package/dest/node-cjs/cbind/generated/sync.d.ts +53 -14
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/sync.js +547 -71
- 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 +97 -182
- package/dest/node-cjs/index.d.ts +4 -2
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +24 -9
- package/dest/node-cjs/serialize/index.d.ts +0 -2
- package/dest/node-cjs/serialize/index.d.ts.map +1 -1
- package/dest/node-cjs/serialize/index.js +1 -3
- 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 +6 -26
- package/dest/node-cjs/types/fields.d.ts.map +1 -1
- package/dest/node-cjs/types/fields.js +16 -58
- 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/dest/node-cjs/types/point.d.ts +8 -6
- package/dest/node-cjs/types/point.d.ts.map +1 -1
- package/dest/node-cjs/types/point.js +13 -16
- package/package.json +6 -6
- 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 +54 -42
- package/src/barretenberg/blake2s.test.ts +20 -21
- package/src/barretenberg/index.ts +137 -118
- package/src/barretenberg/pedersen.test.ts +23 -16
- package/src/barretenberg/poseidon.bench.test.ts +268 -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 +67 -16
- 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 +103 -0
- package/src/bbapi_exception.ts +13 -0
- package/src/cbind/README.md +1 -1
- package/src/cbind/generate.ts +99 -6
- package/src/cbind/schema_compiler.ts +156 -244
- package/src/index.ts +29 -1
- package/src/serialize/index.ts +0 -2
- package/src/serialize/serialize.ts +0 -82
- package/src/types/fields.ts +15 -64
- package/src/types/index.ts +0 -3
- package/src/types/point.ts +13 -19
- 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/buffer_reader.d.ts +0 -28
- package/dest/browser/serialize/buffer_reader.d.ts.map +0 -1
- package/dest/browser/serialize/buffer_reader.js +0 -66
- 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/buffer_reader.d.ts +0 -28
- package/dest/node/serialize/buffer_reader.d.ts.map +0 -1
- package/dest/node/serialize/buffer_reader.js +0 -66
- 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/buffer_reader.d.ts +0 -28
- package/dest/node-cjs/serialize/buffer_reader.d.ts.map +0 -1
- package/dest/node-cjs/serialize/buffer_reader.js +0 -70
- 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/buffer_reader.ts +0 -85
- 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
package/dest/node-cjs/main.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import 'source-map-support/register.js';
|
|
3
|
-
import { UltraHonkBackendOptions } from './barretenberg/backend.js';
|
|
4
|
-
export declare function proveAndVerifyUltraHonk(bytecodePath: string, witnessPath: string, crsPath: string): Promise<boolean>;
|
|
5
|
-
export declare function proveAndVerifyMegaHonk(bytecodePath: string, witnessPath: string, crsPath: string): Promise<boolean>;
|
|
6
|
-
export declare function gateCountUltra(bytecodePath: string, recursive: boolean, honkRecursion: boolean): Promise<void>;
|
|
7
|
-
export declare function contractUltraHonk(bytecodePath: string, vkPath: string, crsPath: string, outputPath: string): Promise<void>;
|
|
8
|
-
export declare function proveUltraHonk(bytecodePath: string, witnessPath: string, crsPath: string, vkPath: string, outputPath: string, options?: UltraHonkBackendOptions): Promise<void>;
|
|
9
|
-
export declare function writeVkUltraHonk(bytecodePath: string, crsPath: string, outputPath: string, options?: UltraHonkBackendOptions): Promise<void>;
|
|
10
|
-
export declare function verifyUltraHonk(proofPath: string, vkPath: string, crsPath: string, options?: UltraHonkBackendOptions): Promise<boolean>;
|
|
11
|
-
export declare function proofAsFieldsUltraHonk(proofPath: string, outputPath: string, crsPath: string): Promise<void>;
|
|
12
|
-
export declare function vkAsFieldsUltraHonk(vkPath: string, vkeyOutputPath: string, crsPath: string): Promise<void>;
|
|
13
|
-
//# sourceMappingURL=main.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,OAAO,gCAAgC,CAAC;AAMxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAwEpE,wBAAsB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAavG;AAED,wBAAsB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAatG;AAED,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,iBAepG;AAED,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAkBhH;AAED,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,uBAAuB,iBA6BlC;AAED,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,uBAAuB,iBA4BlC;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,uBAAuB,oBAuBlC;AAED,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAiBlG;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAkBhG"}
|
package/dest/node-cjs/main.js
DELETED
|
@@ -1,470 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.proveAndVerifyUltraHonk = proveAndVerifyUltraHonk;
|
|
5
|
-
exports.proveAndVerifyMegaHonk = proveAndVerifyMegaHonk;
|
|
6
|
-
exports.gateCountUltra = gateCountUltra;
|
|
7
|
-
exports.contractUltraHonk = contractUltraHonk;
|
|
8
|
-
exports.proveUltraHonk = proveUltraHonk;
|
|
9
|
-
exports.writeVkUltraHonk = writeVkUltraHonk;
|
|
10
|
-
exports.verifyUltraHonk = verifyUltraHonk;
|
|
11
|
-
exports.proofAsFieldsUltraHonk = proofAsFieldsUltraHonk;
|
|
12
|
-
exports.vkAsFieldsUltraHonk = vkAsFieldsUltraHonk;
|
|
13
|
-
require("source-map-support/register.js");
|
|
14
|
-
const index_js_1 = require("./index.js");
|
|
15
|
-
const index_js_2 = require("./log/index.js");
|
|
16
|
-
const fs_1 = require("fs");
|
|
17
|
-
const zlib_1 = require("zlib");
|
|
18
|
-
const commander_1 = require("commander");
|
|
19
|
-
let debug;
|
|
20
|
-
const threads = +process.env.HARDWARE_CONCURRENCY || undefined;
|
|
21
|
-
function getBytecode(bytecodePath) {
|
|
22
|
-
const extension = bytecodePath.substring(bytecodePath.lastIndexOf('.') + 1);
|
|
23
|
-
if (extension == 'json') {
|
|
24
|
-
const encodedCircuit = JSON.parse((0, fs_1.readFileSync)(bytecodePath, 'utf8'));
|
|
25
|
-
const decompressed = (0, zlib_1.gunzipSync)(Buffer.from(encodedCircuit.bytecode, 'base64'));
|
|
26
|
-
return Uint8Array.from(decompressed);
|
|
27
|
-
}
|
|
28
|
-
const encodedCircuit = (0, fs_1.readFileSync)(bytecodePath);
|
|
29
|
-
const decompressed = (0, zlib_1.gunzipSync)(encodedCircuit);
|
|
30
|
-
return Uint8Array.from(decompressed);
|
|
31
|
-
}
|
|
32
|
-
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1126): split this into separate Plonk and Honk functions as their gate count differs
|
|
33
|
-
async function getGatesUltra(bytecodePath, recursive, honkRecursion, api) {
|
|
34
|
-
const { total } = await computeCircuitSize(bytecodePath, recursive, honkRecursion, api);
|
|
35
|
-
return total;
|
|
36
|
-
}
|
|
37
|
-
function getWitness(witnessPath) {
|
|
38
|
-
const data = (0, fs_1.readFileSync)(witnessPath);
|
|
39
|
-
const decompressed = (0, zlib_1.gunzipSync)(data);
|
|
40
|
-
return Uint8Array.from(decompressed);
|
|
41
|
-
}
|
|
42
|
-
async function computeCircuitSize(bytecodePath, recursive, honkRecursion, api) {
|
|
43
|
-
debug(`Computing circuit size for ${bytecodePath}`);
|
|
44
|
-
const bytecode = getBytecode(bytecodePath);
|
|
45
|
-
const [total, subgroup] = await api.acirGetCircuitSizes(bytecode, recursive, honkRecursion);
|
|
46
|
-
return { total, subgroup };
|
|
47
|
-
}
|
|
48
|
-
async function initUltraHonk(bytecodePath, crsPath) {
|
|
49
|
-
const api = await index_js_1.Barretenberg.new({
|
|
50
|
-
threads,
|
|
51
|
-
});
|
|
52
|
-
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1248): Get rid of this call to avoid building the circuit twice.
|
|
53
|
-
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1126): use specific UltraHonk function
|
|
54
|
-
// recursive here is useless for UH, as it does not affect anything
|
|
55
|
-
const circuitSize = await getGatesUltra(bytecodePath, /*recursive=*/ false, /*honkRecursion=*/ true, api);
|
|
56
|
-
// TODO(https://github.com/AztecProtocol/barretenberg/issues/811): remove subgroupSizeOverride hack for goblin
|
|
57
|
-
const dyadicCircuitSize = Math.pow(2, Math.ceil(Math.log2(circuitSize)));
|
|
58
|
-
debug(`Loading CRS for UltraHonk with circuit-size=${circuitSize} dyadic-circuit-size=${dyadicCircuitSize}`);
|
|
59
|
-
const crs = await index_js_1.Crs.new(dyadicCircuitSize + 1, crsPath);
|
|
60
|
-
// Load CRS into wasm global CRS state.
|
|
61
|
-
// TODO: Make RawBuffer be default behavior, and have a specific Vector type for when wanting length prefixed.
|
|
62
|
-
await api.srsInitSrs(new index_js_1.RawBuffer(crs.getG1Data()), crs.numPoints, new index_js_1.RawBuffer(crs.getG2Data()));
|
|
63
|
-
return { api, circuitSize, dyadicCircuitSize };
|
|
64
|
-
}
|
|
65
|
-
async function initLite(crsPath) {
|
|
66
|
-
const api = await index_js_1.Barretenberg.new({ threads: 1 });
|
|
67
|
-
// Plus 1 needed! (Move +1 into Crs?)
|
|
68
|
-
const crs = await index_js_1.Crs.new(1, crsPath);
|
|
69
|
-
// Load CRS into wasm global CRS state.
|
|
70
|
-
await api.srsInitSrs(new index_js_1.RawBuffer(crs.getG1Data()), crs.numPoints, new index_js_1.RawBuffer(crs.getG2Data()));
|
|
71
|
-
return { api };
|
|
72
|
-
}
|
|
73
|
-
async function proveAndVerifyUltraHonk(bytecodePath, witnessPath, crsPath) {
|
|
74
|
-
/* eslint-disable camelcase */
|
|
75
|
-
const { api } = await initUltraHonk(bytecodePath, crsPath);
|
|
76
|
-
try {
|
|
77
|
-
const bytecode = getBytecode(bytecodePath);
|
|
78
|
-
const witness = getWitness(witnessPath);
|
|
79
|
-
const verified = await api.acirProveAndVerifyUltraHonk(bytecode, witness);
|
|
80
|
-
return verified;
|
|
81
|
-
}
|
|
82
|
-
finally {
|
|
83
|
-
await api.destroy();
|
|
84
|
-
}
|
|
85
|
-
/* eslint-enable camelcase */
|
|
86
|
-
}
|
|
87
|
-
async function proveAndVerifyMegaHonk(bytecodePath, witnessPath, crsPath) {
|
|
88
|
-
/* eslint-disable camelcase */
|
|
89
|
-
const { api } = await initUltraHonk(bytecodePath, crsPath);
|
|
90
|
-
try {
|
|
91
|
-
const bytecode = getBytecode(bytecodePath);
|
|
92
|
-
const witness = getWitness(witnessPath);
|
|
93
|
-
const verified = await api.acirProveAndVerifyMegaHonk(bytecode, witness);
|
|
94
|
-
return verified;
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
await api.destroy();
|
|
98
|
-
}
|
|
99
|
-
/* eslint-enable camelcase */
|
|
100
|
-
}
|
|
101
|
-
async function gateCountUltra(bytecodePath, recursive, honkRecursion) {
|
|
102
|
-
const api = await index_js_1.Barretenberg.new({ threads: 1 });
|
|
103
|
-
try {
|
|
104
|
-
const numberOfGates = await getGatesUltra(bytecodePath, recursive, honkRecursion, api);
|
|
105
|
-
debug(`Number of gates: ${numberOfGates}`);
|
|
106
|
-
// Create an 8-byte buffer and write the number into it.
|
|
107
|
-
// Writing number directly to stdout will result in a variable sized
|
|
108
|
-
// input depending on the size.
|
|
109
|
-
const buffer = Buffer.alloc(8);
|
|
110
|
-
buffer.writeBigInt64LE(BigInt(numberOfGates));
|
|
111
|
-
process.stdout.write(Uint8Array.from(buffer));
|
|
112
|
-
}
|
|
113
|
-
finally {
|
|
114
|
-
await api.destroy();
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
async function contractUltraHonk(bytecodePath, vkPath, crsPath, outputPath) {
|
|
118
|
-
const { api } = await initUltraHonk(bytecodePath, crsPath);
|
|
119
|
-
try {
|
|
120
|
-
debug(`Creating UltraHonk verifier contract bytecode=${bytecodePath} vk=${vkPath}`);
|
|
121
|
-
const bytecode = getBytecode(bytecodePath);
|
|
122
|
-
const vk = new index_js_1.RawBuffer((0, fs_1.readFileSync)(vkPath));
|
|
123
|
-
const contract = await api.acirHonkSolidityVerifier(bytecode, vk);
|
|
124
|
-
if (outputPath === '-') {
|
|
125
|
-
process.stdout.write(contract);
|
|
126
|
-
debug(`Solidity verifier contract written to stdout`);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
(0, fs_1.writeFileSync)(outputPath, contract);
|
|
130
|
-
debug(`Solidity verifier contract written to ${outputPath}`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
finally {
|
|
134
|
-
await api.destroy();
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
async function proveUltraHonk(bytecodePath, witnessPath, crsPath, vkPath, outputPath, options) {
|
|
138
|
-
const { api } = await initUltraHonk(bytecodePath, crsPath);
|
|
139
|
-
try {
|
|
140
|
-
debug(`Creating UltraHonk proof bytecode=${bytecodePath}`);
|
|
141
|
-
const bytecode = getBytecode(bytecodePath);
|
|
142
|
-
const witness = getWitness(witnessPath);
|
|
143
|
-
const acirProveUltraHonk = options?.keccak
|
|
144
|
-
? api.acirProveUltraKeccakHonk.bind(api)
|
|
145
|
-
: options?.keccakZK
|
|
146
|
-
? api.acirProveUltraKeccakZkHonk.bind(api)
|
|
147
|
-
: options?.starknet
|
|
148
|
-
? api.acirProveUltraStarknetHonk.bind(api)
|
|
149
|
-
: options?.starknetZK
|
|
150
|
-
? api.acirProveUltraStarknetZkHonk.bind(api)
|
|
151
|
-
: api.acirProveUltraZKHonk.bind(api);
|
|
152
|
-
const proof = await acirProveUltraHonk(bytecode, witness, new index_js_1.RawBuffer((0, fs_1.readFileSync)(vkPath)));
|
|
153
|
-
if (outputPath === '-') {
|
|
154
|
-
process.stdout.write(proof);
|
|
155
|
-
debug(`Proof written to stdout`);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
(0, fs_1.writeFileSync)(outputPath, proof);
|
|
159
|
-
debug(`Proof written to ${outputPath}`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
finally {
|
|
163
|
-
await api.destroy();
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
async function writeVkUltraHonk(bytecodePath, crsPath, outputPath, options) {
|
|
167
|
-
const { api } = await initUltraHonk(bytecodePath, crsPath);
|
|
168
|
-
try {
|
|
169
|
-
const bytecode = getBytecode(bytecodePath);
|
|
170
|
-
debug(`Initializing UltraHonk verification key bytecode=${bytecodePath}`);
|
|
171
|
-
const acirWriteVkUltraHonk = options?.keccak
|
|
172
|
-
? api.acirWriteVkUltraKeccakHonk.bind(api)
|
|
173
|
-
: options?.keccakZK
|
|
174
|
-
? api.acirWriteVkUltraKeccakZkHonk.bind(api)
|
|
175
|
-
: options?.starknet
|
|
176
|
-
? api.acirWriteVkUltraStarknetHonk.bind(api)
|
|
177
|
-
: options?.starknetZK
|
|
178
|
-
? api.acirWriteVkUltraStarknetZkHonk.bind(api)
|
|
179
|
-
: api.acirWriteVkUltraHonk.bind(api);
|
|
180
|
-
const vk = await acirWriteVkUltraHonk(bytecode);
|
|
181
|
-
if (outputPath === '-') {
|
|
182
|
-
process.stdout.write(vk);
|
|
183
|
-
debug(`Verification key written to stdout`);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
(0, fs_1.writeFileSync)(outputPath, vk);
|
|
187
|
-
debug(`Verification key written to ${outputPath}`);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
finally {
|
|
191
|
-
await api.destroy();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
async function verifyUltraHonk(proofPath, vkPath, crsPath, options) {
|
|
195
|
-
const { api } = await initLite(crsPath);
|
|
196
|
-
try {
|
|
197
|
-
const acirVerifyUltraHonk = options?.keccak
|
|
198
|
-
? api.acirVerifyUltraKeccakHonk.bind(api)
|
|
199
|
-
: options?.keccakZK
|
|
200
|
-
? api.acirVerifyUltraKeccakZkHonk.bind(api)
|
|
201
|
-
: options?.starknet
|
|
202
|
-
? api.acirVerifyUltraStarknetHonk.bind(api)
|
|
203
|
-
: options?.starknetZK
|
|
204
|
-
? api.acirVerifyUltraStarknetZkHonk.bind(api)
|
|
205
|
-
: api.acirVerifyUltraZKHonk.bind(api);
|
|
206
|
-
const verified = await acirVerifyUltraHonk(Uint8Array.from((0, fs_1.readFileSync)(proofPath)), new index_js_1.RawBuffer((0, fs_1.readFileSync)(vkPath)));
|
|
207
|
-
debug(`Verification ${verified ? 'successful' : 'failed'}`);
|
|
208
|
-
return verified;
|
|
209
|
-
}
|
|
210
|
-
finally {
|
|
211
|
-
await api.destroy();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
async function proofAsFieldsUltraHonk(proofPath, outputPath, crsPath) {
|
|
215
|
-
const { api } = await initLite(crsPath);
|
|
216
|
-
try {
|
|
217
|
-
debug(`Outputting UltraHonk proof as vector of fields proof=${proofPath}`);
|
|
218
|
-
const proofAsFields = await api.acirProofAsFieldsUltraHonk(Uint8Array.from((0, fs_1.readFileSync)(proofPath)));
|
|
219
|
-
const jsonProofAsFields = JSON.stringify(proofAsFields.map(f => f.toString()));
|
|
220
|
-
if (outputPath === '-') {
|
|
221
|
-
process.stdout.write(jsonProofAsFields);
|
|
222
|
-
debug(`Proof as fields written to stdout`);
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
(0, fs_1.writeFileSync)(outputPath, jsonProofAsFields);
|
|
226
|
-
debug(`Proof as fields written to ${outputPath}`);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
finally {
|
|
230
|
-
await api.destroy();
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
async function vkAsFieldsUltraHonk(vkPath, vkeyOutputPath, crsPath) {
|
|
234
|
-
const { api } = await initLite(crsPath);
|
|
235
|
-
try {
|
|
236
|
-
debug(`Serializing vk byte array into field elements vk=${vkPath}`);
|
|
237
|
-
const vkAsFields = await api.acirVkAsFieldsUltraHonk(new index_js_1.RawBuffer((0, fs_1.readFileSync)(vkPath)));
|
|
238
|
-
const jsonVKAsFields = JSON.stringify(vkAsFields.map(f => f.toString()));
|
|
239
|
-
if (vkeyOutputPath === '-') {
|
|
240
|
-
process.stdout.write(jsonVKAsFields);
|
|
241
|
-
debug(`Verification key as fields written to stdout`);
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
(0, fs_1.writeFileSync)(vkeyOutputPath, jsonVKAsFields);
|
|
245
|
-
debug(`Verification key as fields written to ${vkeyOutputPath}`);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
finally {
|
|
249
|
-
await api.destroy();
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
const program = new commander_1.Command('bb');
|
|
253
|
-
program.option('-v, --verbose', 'enable verbose logging', false);
|
|
254
|
-
program.option('-c, --crs-path <path>', 'set crs path', './crs');
|
|
255
|
-
function handleGlobalOptions() {
|
|
256
|
-
(0, index_js_2.initLogger)({ useStdErr: true, level: program.opts().verbose ? 'debug' : 'info' });
|
|
257
|
-
debug = (0, index_js_2.createDebugLogger)('bb');
|
|
258
|
-
return { crsPath: program.opts().crsPath };
|
|
259
|
-
}
|
|
260
|
-
const deprecatedCommandError = () => async () => {
|
|
261
|
-
console.error(`Error: UltraPlonk is now deprecated (see https://github.com/AztecProtocol/barretenberg/issues/1377). Use UltraHonk!`);
|
|
262
|
-
process.exit(1);
|
|
263
|
-
};
|
|
264
|
-
program
|
|
265
|
-
.command('prove_and_verify')
|
|
266
|
-
.description('Generate a proof and verify it. Process exits with success or failure code. [DEPRECATED]')
|
|
267
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
268
|
-
.option('-r, --recursive', 'Whether to use a SNARK friendly proof', false)
|
|
269
|
-
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.gz')
|
|
270
|
-
.action(deprecatedCommandError());
|
|
271
|
-
program
|
|
272
|
-
.command('prove_and_verify_ultra_honk')
|
|
273
|
-
.description('Generate an UltraHonk proof and verify it. Process exits with success or failure code.')
|
|
274
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
275
|
-
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.gz')
|
|
276
|
-
.action(async ({ bytecodePath, witnessPath }) => {
|
|
277
|
-
const { crsPath } = handleGlobalOptions();
|
|
278
|
-
const result = await proveAndVerifyUltraHonk(bytecodePath, witnessPath, crsPath);
|
|
279
|
-
process.exit(result ? 0 : 1);
|
|
280
|
-
});
|
|
281
|
-
program
|
|
282
|
-
.command('prove_and_verify_mega_honk')
|
|
283
|
-
.description('Generate a MegaHonk proof and verify it. Process exits with success or failure code.')
|
|
284
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
285
|
-
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.gz')
|
|
286
|
-
.action(async ({ bytecodePath, witnessPath }) => {
|
|
287
|
-
const { crsPath } = handleGlobalOptions();
|
|
288
|
-
const result = await proveAndVerifyMegaHonk(bytecodePath, witnessPath, crsPath);
|
|
289
|
-
process.exit(result ? 0 : 1);
|
|
290
|
-
});
|
|
291
|
-
program
|
|
292
|
-
.command('prove')
|
|
293
|
-
.description('Generate a proof and write it to a file. [DEPRECATED]')
|
|
294
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
295
|
-
.option('-r, --recursive', 'Create a SNARK friendly proof', false)
|
|
296
|
-
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.gz')
|
|
297
|
-
.option('-o, --output-path <path>', 'Specify the proof output path', './proofs/proof')
|
|
298
|
-
.action(deprecatedCommandError());
|
|
299
|
-
program
|
|
300
|
-
.command('gates')
|
|
301
|
-
.description('Print Ultra Builder gate count to standard output.')
|
|
302
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
303
|
-
.option('-r, --recursive', 'Create a SNARK friendly proof', false)
|
|
304
|
-
.option('-hr, --honk-recursion', 'Specify whether to use UltraHonk recursion', false)
|
|
305
|
-
.action(async ({ bytecodePath, recursive, honkRecursion: honkRecursion }) => {
|
|
306
|
-
handleGlobalOptions();
|
|
307
|
-
await gateCountUltra(bytecodePath, recursive, honkRecursion);
|
|
308
|
-
});
|
|
309
|
-
program
|
|
310
|
-
.command('verify')
|
|
311
|
-
.description('Verify a proof. Process exists with success or failure code. [DEPRECATED]')
|
|
312
|
-
.requiredOption('-p, --proof-path <path>', 'Specify the path to the proof')
|
|
313
|
-
.requiredOption('-k, --vk <path>', 'path to a verification key. avoids recomputation.')
|
|
314
|
-
.action(deprecatedCommandError());
|
|
315
|
-
program
|
|
316
|
-
.command('contract')
|
|
317
|
-
.description('Output solidity verification key contract. [DEPRECATED]')
|
|
318
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
319
|
-
.option('-o, --output-path <path>', 'Specify the path to write the contract', './target/contract.sol')
|
|
320
|
-
.requiredOption('-k, --vk-path <path>', 'Path to a verification key. avoids recomputation.')
|
|
321
|
-
.action(deprecatedCommandError());
|
|
322
|
-
program
|
|
323
|
-
.command('contract_ultra_honk')
|
|
324
|
-
.description('Output solidity verification key contract.')
|
|
325
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
326
|
-
.option('-o, --output-path <path>', 'Specify the path to write the contract', './target/contract.sol')
|
|
327
|
-
.requiredOption('-k, --vk-path <path>', 'Path to a verification key.')
|
|
328
|
-
.action(async ({ bytecodePath, outputPath, vkPath }) => {
|
|
329
|
-
const { crsPath } = handleGlobalOptions();
|
|
330
|
-
await contractUltraHonk(bytecodePath, vkPath, crsPath, outputPath);
|
|
331
|
-
});
|
|
332
|
-
program
|
|
333
|
-
.command('write_vk')
|
|
334
|
-
.description('Output verification key. [DEPRECATED]')
|
|
335
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
336
|
-
.option('-r, --recursive', 'Create a SNARK friendly proof', false)
|
|
337
|
-
.option('-o, --output-path <path>', 'Specify the path to write the key')
|
|
338
|
-
.action(deprecatedCommandError());
|
|
339
|
-
program
|
|
340
|
-
.command('write_pk')
|
|
341
|
-
.description('Output proving key. [DEPRECATED]')
|
|
342
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
343
|
-
.option('-r, --recursive', 'Create a SNARK friendly proof', false)
|
|
344
|
-
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key')
|
|
345
|
-
.action(deprecatedCommandError());
|
|
346
|
-
program
|
|
347
|
-
.command('proof_as_fields')
|
|
348
|
-
.description('Return the proof as fields elements. [DEPRECATED]')
|
|
349
|
-
.requiredOption('-p, --proof-path <path>', 'Specify the proof path')
|
|
350
|
-
.requiredOption('-k, --vk-path <path>', 'Path to verification key.')
|
|
351
|
-
.requiredOption('-o, --output-path <path>', 'Specify the JSON path to write the proof fields')
|
|
352
|
-
.action(deprecatedCommandError());
|
|
353
|
-
program
|
|
354
|
-
.command('vk_as_fields')
|
|
355
|
-
.description('Return the verification key represented as fields elements. Also return the verification key hash. [DEPRECATED]')
|
|
356
|
-
.requiredOption('-k, --vk-path <path>', 'Path to verification key.')
|
|
357
|
-
.requiredOption('-o, --output-path <path>', 'Specify the JSON path to write the verification key fields and key hash')
|
|
358
|
-
.action(deprecatedCommandError());
|
|
359
|
-
program
|
|
360
|
-
.command('prove_ultra_honk')
|
|
361
|
-
.description('Generate a proof and write it to a file.')
|
|
362
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
363
|
-
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.gz')
|
|
364
|
-
.option('-k, --vk-path <path>', 'path to a verification key. avoids recomputation.')
|
|
365
|
-
.option('-o, --output-path <path>', 'Specify the proof output path', './proofs/proof')
|
|
366
|
-
.action(async ({ bytecodePath, witnessPath, vkPath, outputPath }) => {
|
|
367
|
-
const { crsPath } = handleGlobalOptions();
|
|
368
|
-
debug(`Creating UltraHonk proof bytecodePath=${bytecodePath}, witnessPath=${witnessPath}, vkPath=${vkPath}`);
|
|
369
|
-
await proveUltraHonk(bytecodePath, witnessPath, crsPath, vkPath, outputPath);
|
|
370
|
-
});
|
|
371
|
-
program
|
|
372
|
-
.command('prove_ultra_keccak_honk')
|
|
373
|
-
.description('Generate a proof and write it to a file.')
|
|
374
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
375
|
-
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.gz')
|
|
376
|
-
.option('-k, --vk-path <path>', 'path to a verification key. avoids recomputation.')
|
|
377
|
-
.option('-o, --output-path <path>', 'Specify the proof output path', './proofs/proof')
|
|
378
|
-
.action(async ({ bytecodePath, witnessPath, vkPath, outputPath }) => {
|
|
379
|
-
const { crsPath } = handleGlobalOptions();
|
|
380
|
-
await proveUltraHonk(bytecodePath, witnessPath, crsPath, vkPath, outputPath, { keccak: true });
|
|
381
|
-
});
|
|
382
|
-
program
|
|
383
|
-
.command('prove_ultra_starknet_honk')
|
|
384
|
-
.description('Generate a proof and write it to a file.')
|
|
385
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
386
|
-
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.gz')
|
|
387
|
-
.option('-k, --vk-path <path>', 'path to a verification key. avoids recomputation.')
|
|
388
|
-
.option('-o, --output-path <path>', 'Specify the proof output path', './proofs/proof')
|
|
389
|
-
.action(async ({ bytecodePath, witnessPath, vkPath, outputPath }) => {
|
|
390
|
-
const { crsPath } = handleGlobalOptions();
|
|
391
|
-
await proveUltraHonk(bytecodePath, witnessPath, crsPath, vkPath, outputPath, { starknet: true });
|
|
392
|
-
});
|
|
393
|
-
program
|
|
394
|
-
.command('write_vk_ultra_honk')
|
|
395
|
-
.description('Output verification key.')
|
|
396
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
397
|
-
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key')
|
|
398
|
-
.action(async ({ bytecodePath, outputPath }) => {
|
|
399
|
-
const { crsPath } = handleGlobalOptions();
|
|
400
|
-
debug(`Writing verification key to ${outputPath}`);
|
|
401
|
-
await writeVkUltraHonk(bytecodePath, crsPath, outputPath);
|
|
402
|
-
});
|
|
403
|
-
program
|
|
404
|
-
.command('write_vk_ultra_keccak_honk')
|
|
405
|
-
.description('Output verification key.')
|
|
406
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
407
|
-
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key')
|
|
408
|
-
.action(async ({ bytecodePath, outputPath }) => {
|
|
409
|
-
const { crsPath } = handleGlobalOptions();
|
|
410
|
-
await writeVkUltraHonk(bytecodePath, crsPath, outputPath, { keccak: true });
|
|
411
|
-
});
|
|
412
|
-
program
|
|
413
|
-
.command('write_vk_ultra_starknet_honk')
|
|
414
|
-
.description('Output verification key.')
|
|
415
|
-
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/program.json')
|
|
416
|
-
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key')
|
|
417
|
-
.action(async ({ bytecodePath, outputPath }) => {
|
|
418
|
-
const { crsPath } = handleGlobalOptions();
|
|
419
|
-
await writeVkUltraHonk(bytecodePath, crsPath, outputPath, { starknet: true });
|
|
420
|
-
});
|
|
421
|
-
program
|
|
422
|
-
.command('verify_ultra_honk')
|
|
423
|
-
.description('Verify a proof. Process exists with success or failure code.')
|
|
424
|
-
.requiredOption('-p, --proof-path <path>', 'Specify the path to the proof')
|
|
425
|
-
.requiredOption('-k, --vk-path <path>', 'path to a verification key. avoids recomputation.')
|
|
426
|
-
.action(async ({ proofPath, vkPath }) => {
|
|
427
|
-
const { crsPath } = handleGlobalOptions();
|
|
428
|
-
const result = await verifyUltraHonk(proofPath, vkPath, crsPath);
|
|
429
|
-
process.exit(result ? 0 : 1);
|
|
430
|
-
});
|
|
431
|
-
program
|
|
432
|
-
.command('verify_ultra_keccak_honk')
|
|
433
|
-
.description('Verify a proof. Process exists with success or failure code.')
|
|
434
|
-
.requiredOption('-p, --proof-path <path>', 'Specify the path to the proof')
|
|
435
|
-
.requiredOption('-k, --vk-path <path>', 'path to a verification key. avoids recomputation.')
|
|
436
|
-
.action(async ({ proofPath, vkPath }) => {
|
|
437
|
-
const { crsPath } = handleGlobalOptions();
|
|
438
|
-
const result = await verifyUltraHonk(proofPath, vkPath, crsPath, { keccak: true });
|
|
439
|
-
process.exit(result ? 0 : 1);
|
|
440
|
-
});
|
|
441
|
-
program
|
|
442
|
-
.command('verify_ultra_starknet_honk')
|
|
443
|
-
.description('Verify a proof. Process exists with success or failure code.')
|
|
444
|
-
.requiredOption('-p, --proof-path <path>', 'Specify the path to the proof')
|
|
445
|
-
.requiredOption('-k, --vk <path>', 'path to a verification key. avoids recomputation.')
|
|
446
|
-
.action(async ({ proofPath, vk }) => {
|
|
447
|
-
const { crsPath } = handleGlobalOptions();
|
|
448
|
-
const result = await verifyUltraHonk(proofPath, vk, crsPath, { starknet: true });
|
|
449
|
-
process.exit(result ? 0 : 1);
|
|
450
|
-
});
|
|
451
|
-
program
|
|
452
|
-
.command('proof_as_fields_honk')
|
|
453
|
-
.description('Return the proof as fields elements')
|
|
454
|
-
.requiredOption('-p, --proof-path <path>', 'Specify the proof path')
|
|
455
|
-
.requiredOption('-o, --output-path <path>', 'Specify the JSON path to write the proof fields')
|
|
456
|
-
.action(async ({ proofPath, outputPath }) => {
|
|
457
|
-
const { crsPath } = handleGlobalOptions();
|
|
458
|
-
await proofAsFieldsUltraHonk(proofPath, outputPath, crsPath);
|
|
459
|
-
});
|
|
460
|
-
program
|
|
461
|
-
.command('vk_as_fields_ultra_honk')
|
|
462
|
-
.description('Return the verification key represented as fields elements.')
|
|
463
|
-
.requiredOption('-k, --vk-path <path>', 'Path to verification key.')
|
|
464
|
-
.requiredOption('-o, --output-path <path>', 'Specify the JSON path to write the verification key fields.')
|
|
465
|
-
.action(async ({ vkPath, outputPath }) => {
|
|
466
|
-
const { crsPath } = handleGlobalOptions();
|
|
467
|
-
await vkAsFieldsUltraHonk(vkPath, outputPath, crsPath);
|
|
468
|
-
});
|
|
469
|
-
program.name('bb.js').parse(process.argv);
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStFQSwwREFhQztBQUVELHdEQWFDO0FBRUQsd0NBZUM7QUFFRCw4Q0FrQkM7QUFFRCx3Q0FtQ0M7QUFFRCw0Q0FnQ0M7QUFFRCwwQ0EyQkM7QUFFRCx3REFpQkM7QUFFRCxrREFrQkM7QUExUkQsMENBQXdDO0FBQ3hDLHlDQUEwRDtBQUMxRCw2Q0FBK0Q7QUFDL0QsMkJBQWlEO0FBQ2pELCtCQUFrQztBQUNsQyx5Q0FBb0M7QUFHcEMsSUFBSSxLQUE0QixDQUFDO0FBRWpDLE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBcUIsSUFBSSxTQUFTLENBQUM7QUFFaEUsU0FBUyxXQUFXLENBQUMsWUFBb0I7SUFDdkMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTVFLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBQSxpQkFBWSxFQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLElBQUEsaUJBQVUsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNoRixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLElBQUEsaUJBQVksRUFBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFBLGlCQUFVLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsT0FBTyxVQUFVLENBQUMsSUFB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
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export declare class BufferReader {
|
|
2
|
-
private buffer;
|
|
3
|
-
private index;
|
|
4
|
-
constructor(buffer: Uint8Array, offset?: number);
|
|
5
|
-
static asReader(bufferOrReader: Uint8Array | BufferReader): BufferReader;
|
|
6
|
-
readNumber(): number;
|
|
7
|
-
readBoolean(): boolean;
|
|
8
|
-
readBytes(n: number): Uint8Array;
|
|
9
|
-
readNumberVector(): number[];
|
|
10
|
-
readVector<T>(itemDeserializer: {
|
|
11
|
-
fromBuffer: (reader: BufferReader) => T;
|
|
12
|
-
}): T[];
|
|
13
|
-
readArray<T>(size: number, itemDeserializer: {
|
|
14
|
-
fromBuffer: (reader: BufferReader) => T;
|
|
15
|
-
}): T[];
|
|
16
|
-
readObject<T>(deserializer: {
|
|
17
|
-
fromBuffer: (reader: BufferReader) => T;
|
|
18
|
-
}): T;
|
|
19
|
-
peekBytes(n?: number): Uint8Array<ArrayBufferLike>;
|
|
20
|
-
readString(): string;
|
|
21
|
-
readBuffer(): Uint8Array;
|
|
22
|
-
readMap<T>(deserializer: {
|
|
23
|
-
fromBuffer: (reader: BufferReader) => T;
|
|
24
|
-
}): {
|
|
25
|
-
[key: string]: T;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=buffer_reader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buffer_reader.d.ts","sourceRoot":"","sources":["../../../src/serialize/buffer_reader.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IAGrB,OAAO,CAAC,MAAM;IAFhB,OAAO,CAAC,KAAK,CAAS;gBAEZ,MAAM,EAAE,UAAU,EAC1B,MAAM,SAAI;WAKE,QAAQ,CAAC,cAAc,EAAE,UAAU,GAAG,YAAY;IAIzD,UAAU,IAAI,MAAM;IAMpB,WAAW,IAAI,OAAO;IAKtB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAKhC,gBAAgB,IAAI,MAAM,EAAE;IAM5B,UAAU,CAAC,CAAC,EAAE,gBAAgB,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAA;KAAE,GAAG,CAAC,EAAE;IASjF,SAAS,CAAC,CAAC,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE;QAChB,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GACA,CAAC,EAAE;IAQC,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAA;KAAE,GAAG,CAAC;IAI3E,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM;IAIpB,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,UAAU;IAKxB,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAA;KAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;CAUnG"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BufferReader = void 0;
|
|
4
|
-
class BufferReader {
|
|
5
|
-
constructor(buffer, offset = 0) {
|
|
6
|
-
this.buffer = buffer;
|
|
7
|
-
this.index = offset;
|
|
8
|
-
}
|
|
9
|
-
static asReader(bufferOrReader) {
|
|
10
|
-
return bufferOrReader instanceof BufferReader ? bufferOrReader : new BufferReader(bufferOrReader);
|
|
11
|
-
}
|
|
12
|
-
readNumber() {
|
|
13
|
-
const dataView = new DataView(this.buffer.buffer, this.buffer.byteOffset + this.index, 4);
|
|
14
|
-
this.index += 4;
|
|
15
|
-
return dataView.getUint32(0, false);
|
|
16
|
-
}
|
|
17
|
-
readBoolean() {
|
|
18
|
-
this.index += 1;
|
|
19
|
-
return Boolean(this.buffer.at(this.index - 1));
|
|
20
|
-
}
|
|
21
|
-
readBytes(n) {
|
|
22
|
-
this.index += n;
|
|
23
|
-
return this.buffer.slice(this.index - n, this.index);
|
|
24
|
-
}
|
|
25
|
-
readNumberVector() {
|
|
26
|
-
return this.readVector({
|
|
27
|
-
fromBuffer: (reader) => reader.readNumber(),
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
readVector(itemDeserializer) {
|
|
31
|
-
const size = this.readNumber();
|
|
32
|
-
const result = new Array(size);
|
|
33
|
-
for (let i = 0; i < size; i++) {
|
|
34
|
-
result[i] = itemDeserializer.fromBuffer(this);
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
readArray(size, itemDeserializer) {
|
|
39
|
-
const result = new Array(size);
|
|
40
|
-
for (let i = 0; i < size; i++) {
|
|
41
|
-
result[i] = itemDeserializer.fromBuffer(this);
|
|
42
|
-
}
|
|
43
|
-
return result;
|
|
44
|
-
}
|
|
45
|
-
readObject(deserializer) {
|
|
46
|
-
return deserializer.fromBuffer(this);
|
|
47
|
-
}
|
|
48
|
-
peekBytes(n) {
|
|
49
|
-
return this.buffer.subarray(this.index, n ? this.index + n : undefined);
|
|
50
|
-
}
|
|
51
|
-
readString() {
|
|
52
|
-
return new TextDecoder().decode(this.readBuffer());
|
|
53
|
-
}
|
|
54
|
-
readBuffer() {
|
|
55
|
-
const size = this.readNumber();
|
|
56
|
-
return this.readBytes(size);
|
|
57
|
-
}
|
|
58
|
-
readMap(deserializer) {
|
|
59
|
-
const numEntries = this.readNumber();
|
|
60
|
-
const map = {};
|
|
61
|
-
for (let i = 0; i < numEntries; i++) {
|
|
62
|
-
const key = this.readString();
|
|
63
|
-
const value = this.readObject(deserializer);
|
|
64
|
-
map[key] = value;
|
|
65
|
-
}
|
|
66
|
-
return map;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
exports.BufferReader = BufferReader;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJpYWxpemUvYnVmZmVyX3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLFlBQVk7SUFFdkIsWUFDVSxNQUFrQixFQUMxQixNQUFNLEdBQUcsQ0FBQztRQURGLFdBQU0sR0FBTixNQUFNLENBQVk7UUFHMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBeUM7UUFDOUQsT0FBTyxjQUFjLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSxVQUFVO1FBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNoQixPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sU0FBUyxDQUFDLENBQVM7UUFDeEIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFH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
|