@aztec/bb.js 0.0.1-alpha.7 → 0.0.1-commit.5daedc8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) hide show
  1. package/README.md +55 -84
  2. package/build/amd64-linux/bb +0 -0
  3. package/build/amd64-linux/nodejs_module.node +0 -0
  4. package/build/amd64-macos/bb +0 -0
  5. package/build/amd64-macos/nodejs_module.node +0 -0
  6. package/build/arm64-linux/bb +0 -0
  7. package/build/arm64-linux/nodejs_module.node +0 -0
  8. package/build/arm64-macos/bb +0 -0
  9. package/build/arm64-macos/nodejs_module.node +0 -0
  10. package/dest/{async_map → browser/async_map}/index.d.ts +1 -1
  11. package/dest/browser/async_map/index.d.ts.map +1 -0
  12. package/dest/{async_map → browser/async_map}/index.js +1 -1
  13. package/dest/browser/barretenberg/backend.d.ts +61 -0
  14. package/dest/browser/barretenberg/backend.d.ts.map +1 -0
  15. package/dest/browser/barretenberg/backend.js +250 -0
  16. package/dest/browser/barretenberg/index.d.ts +65 -0
  17. package/dest/browser/barretenberg/index.d.ts.map +1 -0
  18. package/dest/browser/barretenberg/index.js +182 -0
  19. package/dest/browser/barretenberg/testing/bigint-buffer.d.ts +17 -0
  20. package/dest/browser/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  21. package/dest/browser/barretenberg/testing/bigint-buffer.js +37 -0
  22. package/dest/browser/barretenberg/testing/fields.d.ts +16 -0
  23. package/dest/browser/barretenberg/testing/fields.d.ts.map +1 -0
  24. package/dest/browser/barretenberg/testing/fields.js +47 -0
  25. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +45 -0
  26. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
  27. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +124 -0
  28. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
  29. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
  30. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +9 -0
  31. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +2 -0
  32. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
  33. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +6 -0
  34. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
  35. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
  36. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +71 -0
  37. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +59 -0
  38. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
  39. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +197 -0
  40. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
  41. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
  42. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +9 -0
  43. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +2 -0
  44. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
  45. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +6 -0
  46. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +30 -0
  47. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
  48. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.js +41 -0
  49. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
  50. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
  51. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +2 -0
  52. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
  53. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
  54. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +2 -0
  55. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
  56. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
  57. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.js +36 -0
  58. package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts +2 -0
  59. package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
  60. package/dest/browser/barretenberg_wasm/fetch_code/index.js +2 -0
  61. package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts +13 -0
  62. package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
  63. package/dest/browser/barretenberg_wasm/helpers/browser/index.js +47 -0
  64. package/dest/browser/barretenberg_wasm/helpers/index.d.ts +2 -0
  65. package/dest/browser/barretenberg_wasm/helpers/index.d.ts.map +1 -0
  66. package/dest/browser/barretenberg_wasm/helpers/index.js +2 -0
  67. package/dest/browser/barretenberg_wasm/index.d.ts +5 -0
  68. package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -0
  69. package/dest/browser/barretenberg_wasm/index.js +15 -0
  70. package/dest/browser/bb_backends/browser/index.d.ts +11 -0
  71. package/dest/browser/bb_backends/browser/index.d.ts.map +1 -0
  72. package/dest/browser/bb_backends/browser/index.js +39 -0
  73. package/dest/browser/bb_backends/browser/platform.d.ts +4 -0
  74. package/dest/browser/bb_backends/browser/platform.d.ts.map +1 -0
  75. package/dest/browser/bb_backends/browser/platform.js +10 -0
  76. package/dest/browser/bb_backends/index.d.ts +48 -0
  77. package/dest/browser/bb_backends/index.d.ts.map +1 -0
  78. package/dest/browser/bb_backends/index.js +16 -0
  79. package/dest/browser/bb_backends/interface.d.ts +33 -0
  80. package/dest/browser/bb_backends/interface.d.ts.map +1 -0
  81. package/dest/browser/bb_backends/interface.js +2 -0
  82. package/dest/browser/bb_backends/wasm.d.ts +49 -0
  83. package/dest/browser/bb_backends/wasm.d.ts.map +1 -0
  84. package/dest/browser/bb_backends/wasm.js +85 -0
  85. package/dest/browser/bbapi_exception.d.ts +7 -0
  86. package/dest/browser/bbapi_exception.d.ts.map +1 -0
  87. package/dest/browser/bbapi_exception.js +14 -0
  88. package/dest/browser/bin/index.d.ts +3 -0
  89. package/dest/{bindgen → browser/bin}/index.d.ts.map +1 -1
  90. package/dest/browser/bin/index.js +11 -0
  91. package/dest/browser/cbind/generate.d.ts +5 -0
  92. package/dest/browser/cbind/generate.d.ts.map +1 -0
  93. package/dest/browser/cbind/generate.js +151 -0
  94. package/dest/browser/cbind/generated/api_types.d.ts +2051 -0
  95. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -0
  96. package/dest/browser/cbind/generated/api_types.js +2747 -0
  97. package/dest/browser/cbind/generated/async.d.ts +62 -0
  98. package/dest/browser/cbind/generated/async.d.ts.map +1 -0
  99. package/dest/browser/cbind/generated/async.js +663 -0
  100. package/dest/browser/cbind/generated/curve_constants.d.ts +45 -0
  101. package/dest/browser/cbind/generated/curve_constants.d.ts.map +1 -0
  102. package/dest/browser/cbind/generated/curve_constants.js +45 -0
  103. package/dest/browser/cbind/generated/sync.d.ts +62 -0
  104. package/dest/browser/cbind/generated/sync.d.ts.map +1 -0
  105. package/dest/browser/cbind/generated/sync.js +610 -0
  106. package/dest/browser/cbind/schema_compiler.d.ts +68 -0
  107. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -0
  108. package/dest/browser/cbind/schema_compiler.js +600 -0
  109. package/dest/browser/crs/browser/cached_net_crs.d.ts +43 -0
  110. package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -0
  111. package/dest/browser/crs/browser/cached_net_crs.js +95 -0
  112. package/dest/browser/crs/browser/index.d.ts +2 -0
  113. package/dest/browser/crs/browser/index.d.ts.map +1 -0
  114. package/dest/browser/crs/browser/index.js +2 -0
  115. package/dest/browser/crs/index.d.ts +2 -0
  116. package/dest/browser/crs/index.d.ts.map +1 -0
  117. package/dest/browser/crs/index.js +2 -0
  118. package/dest/browser/crs/net_crs.d.ts +70 -0
  119. package/dest/browser/crs/net_crs.d.ts.map +1 -0
  120. package/dest/browser/crs/net_crs.js +141 -0
  121. package/dest/browser/index.d.ts +9 -0
  122. package/dest/browser/index.d.ts.map +1 -0
  123. package/dest/browser/index.js +9 -0
  124. package/dest/browser/proof/index.d.ts +21 -0
  125. package/dest/browser/proof/index.d.ts.map +1 -0
  126. package/dest/browser/proof/index.js +63 -0
  127. package/dest/browser/random/browser/index.d.ts +2 -0
  128. package/dest/browser/random/browser/index.d.ts.map +1 -0
  129. package/dest/browser/random/browser/index.js +31 -0
  130. package/dest/browser/random/index.d.ts +2 -0
  131. package/dest/browser/random/index.d.ts.map +1 -0
  132. package/dest/browser/random/index.js +2 -0
  133. package/dest/browser/retry/index.d.ts +26 -0
  134. package/dest/browser/retry/index.d.ts.map +1 -0
  135. package/dest/browser/retry/index.js +50 -0
  136. package/dest/node/async_map/index.d.ts +10 -0
  137. package/dest/node/async_map/index.d.ts.map +1 -0
  138. package/dest/node/async_map/index.js +16 -0
  139. package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +156 -0
  140. package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +40 -0
  141. package/dest/node/barretenberg/backend.d.ts +61 -0
  142. package/dest/node/barretenberg/backend.d.ts.map +1 -0
  143. package/dest/node/barretenberg/backend.js +250 -0
  144. package/dest/node/barretenberg/blake2s.test.d.ts +2 -0
  145. package/dest/node/barretenberg/blake2s.test.d.ts.map +1 -0
  146. package/dest/node/barretenberg/blake2s.test.js +57 -0
  147. package/dest/node/barretenberg/index.d.ts +65 -0
  148. package/dest/node/barretenberg/index.d.ts.map +1 -0
  149. package/dest/node/barretenberg/index.js +182 -0
  150. package/dest/node/barretenberg/pedersen.test.d.ts +2 -0
  151. package/dest/node/barretenberg/pedersen.test.d.ts.map +1 -0
  152. package/dest/node/barretenberg/pedersen.test.js +62 -0
  153. package/dest/node/barretenberg/poseidon.bench.test.d.ts +2 -0
  154. package/dest/node/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  155. package/dest/node/barretenberg/poseidon.bench.test.js +218 -0
  156. package/dest/node/barretenberg/poseidon.test.d.ts +2 -0
  157. package/dest/node/barretenberg/poseidon.test.d.ts.map +1 -0
  158. package/dest/node/barretenberg/poseidon.test.js +35 -0
  159. package/dest/node/barretenberg/testing/bigint-buffer.d.ts +17 -0
  160. package/dest/node/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  161. package/dest/node/barretenberg/testing/bigint-buffer.js +37 -0
  162. package/dest/node/barretenberg/testing/fields.d.ts +16 -0
  163. package/dest/node/barretenberg/testing/fields.d.ts.map +1 -0
  164. package/dest/node/barretenberg/testing/fields.js +47 -0
  165. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  166. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +45 -0
  167. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
  168. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +124 -0
  169. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
  170. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
  171. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +9 -0
  172. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +2 -0
  173. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
  174. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +6 -0
  175. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +3 -0
  176. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
  177. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +19 -0
  178. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +2 -0
  179. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts.map +1 -0
  180. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +9 -0
  181. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
  182. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
  183. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +71 -0
  184. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +59 -0
  185. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
  186. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +197 -0
  187. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
  188. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
  189. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +9 -0
  190. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +2 -0
  191. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
  192. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +6 -0
  193. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +3 -0
  194. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
  195. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +19 -0
  196. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +2 -0
  197. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts.map +1 -0
  198. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +10 -0
  199. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +30 -0
  200. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
  201. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +41 -0
  202. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
  203. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
  204. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +3 -0
  205. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
  206. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
  207. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.js +3 -0
  208. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
  209. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
  210. package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +36 -0
  211. package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +2 -0
  212. package/dest/node/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
  213. package/dest/node/barretenberg_wasm/fetch_code/index.js +2 -0
  214. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +2 -0
  215. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
  216. package/dest/node/barretenberg_wasm/fetch_code/node/index.js +35 -0
  217. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +13 -0
  218. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
  219. package/dest/node/barretenberg_wasm/helpers/browser/index.js +47 -0
  220. package/dest/node/barretenberg_wasm/helpers/index.d.ts +2 -0
  221. package/dest/node/barretenberg_wasm/helpers/index.d.ts.map +1 -0
  222. package/dest/node/barretenberg_wasm/helpers/index.js +2 -0
  223. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +21 -0
  224. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
  225. package/dest/node/barretenberg_wasm/helpers/node/index.js +56 -0
  226. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
  227. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
  228. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +28 -0
  229. package/dest/node/barretenberg_wasm/index.d.ts +5 -0
  230. package/dest/node/barretenberg_wasm/index.d.ts.map +1 -0
  231. package/dest/node/barretenberg_wasm/index.js +15 -0
  232. package/dest/node/barretenberg_wasm/index.test.d.ts +2 -0
  233. package/dest/node/barretenberg_wasm/index.test.d.ts.map +1 -0
  234. package/dest/node/barretenberg_wasm/index.test.js +39 -0
  235. package/dest/node/bb_backends/browser/index.d.ts +11 -0
  236. package/dest/node/bb_backends/browser/index.d.ts.map +1 -0
  237. package/dest/node/bb_backends/browser/index.js +39 -0
  238. package/dest/node/bb_backends/browser/platform.d.ts +4 -0
  239. package/dest/node/bb_backends/browser/platform.d.ts.map +1 -0
  240. package/dest/node/bb_backends/browser/platform.js +10 -0
  241. package/dest/node/bb_backends/index.d.ts +48 -0
  242. package/dest/node/bb_backends/index.d.ts.map +1 -0
  243. package/dest/node/bb_backends/index.js +16 -0
  244. package/dest/node/bb_backends/interface.d.ts +33 -0
  245. package/dest/node/bb_backends/interface.d.ts.map +1 -0
  246. package/dest/node/bb_backends/interface.js +2 -0
  247. package/dest/node/bb_backends/node/index.d.ts +11 -0
  248. package/dest/node/bb_backends/node/index.d.ts.map +1 -0
  249. package/dest/node/bb_backends/node/index.js +86 -0
  250. package/dest/node/bb_backends/node/native_pipe.d.ts +25 -0
  251. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -0
  252. package/dest/node/bb_backends/node/native_pipe.js +114 -0
  253. package/dest/node/bb_backends/node/native_shm.d.ts +28 -0
  254. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -0
  255. package/dest/node/bb_backends/node/native_shm.js +177 -0
  256. package/dest/node/bb_backends/node/native_shm_async.d.ts +51 -0
  257. package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -0
  258. package/dest/node/bb_backends/node/native_shm_async.js +237 -0
  259. package/dest/node/bb_backends/node/native_socket.d.ts +34 -0
  260. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -0
  261. package/dest/node/bb_backends/node/native_socket.js +281 -0
  262. package/dest/node/bb_backends/node/platform.d.ts +27 -0
  263. package/dest/node/bb_backends/node/platform.d.ts.map +1 -0
  264. package/dest/node/bb_backends/node/platform.js +124 -0
  265. package/dest/node/bb_backends/wasm.d.ts +49 -0
  266. package/dest/node/bb_backends/wasm.d.ts.map +1 -0
  267. package/dest/node/bb_backends/wasm.js +85 -0
  268. package/dest/node/bbapi/exception_handling.test.d.ts +2 -0
  269. package/dest/node/bbapi/exception_handling.test.d.ts.map +1 -0
  270. package/dest/node/bbapi/exception_handling.test.js +48 -0
  271. package/dest/node/bbapi_exception.d.ts +7 -0
  272. package/dest/node/bbapi_exception.d.ts.map +1 -0
  273. package/dest/node/bbapi_exception.js +14 -0
  274. package/dest/node/benchmark/index.d.ts +3 -0
  275. package/dest/node/benchmark/index.d.ts.map +1 -0
  276. package/dest/node/benchmark/index.js +25 -0
  277. package/dest/node/benchmark/timer.d.ts +34 -0
  278. package/dest/node/benchmark/timer.d.ts.map +1 -0
  279. package/dest/node/benchmark/timer.js +42 -0
  280. package/dest/node/bin/index.d.ts +3 -0
  281. package/dest/node/bin/index.d.ts.map +1 -0
  282. package/dest/node/bin/index.js +11 -0
  283. package/dest/node/cbind/generate.d.ts +5 -0
  284. package/dest/node/cbind/generate.d.ts.map +1 -0
  285. package/dest/node/cbind/generate.js +151 -0
  286. package/dest/node/cbind/generated/api_types.d.ts +2051 -0
  287. package/dest/node/cbind/generated/api_types.d.ts.map +1 -0
  288. package/dest/node/cbind/generated/api_types.js +2747 -0
  289. package/dest/node/cbind/generated/async.d.ts +62 -0
  290. package/dest/node/cbind/generated/async.d.ts.map +1 -0
  291. package/dest/node/cbind/generated/async.js +663 -0
  292. package/dest/node/cbind/generated/curve_constants.d.ts +45 -0
  293. package/dest/node/cbind/generated/curve_constants.d.ts.map +1 -0
  294. package/dest/node/cbind/generated/curve_constants.js +45 -0
  295. package/dest/node/cbind/generated/sync.d.ts +62 -0
  296. package/dest/node/cbind/generated/sync.d.ts.map +1 -0
  297. package/dest/node/cbind/generated/sync.js +610 -0
  298. package/dest/node/cbind/schema_compiler.d.ts +68 -0
  299. package/dest/node/cbind/schema_compiler.d.ts.map +1 -0
  300. package/dest/node/cbind/schema_compiler.js +600 -0
  301. package/dest/node/crs/browser/cached_net_crs.d.ts +43 -0
  302. package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -0
  303. package/dest/node/crs/browser/cached_net_crs.js +95 -0
  304. package/dest/node/crs/browser/index.d.ts +2 -0
  305. package/dest/node/crs/browser/index.d.ts.map +1 -0
  306. package/dest/node/crs/browser/index.js +2 -0
  307. package/dest/node/crs/index.d.ts +2 -0
  308. package/dest/node/crs/index.d.ts.map +1 -0
  309. package/dest/node/crs/index.js +2 -0
  310. package/dest/node/crs/net_crs.d.ts +70 -0
  311. package/dest/node/crs/net_crs.d.ts.map +1 -0
  312. package/dest/node/crs/net_crs.js +141 -0
  313. package/dest/node/crs/node/index.d.ts +38 -0
  314. package/dest/node/crs/node/index.d.ts.map +1 -0
  315. package/dest/node/crs/node/index.js +107 -0
  316. package/dest/node/index.d.ts +9 -0
  317. package/dest/node/index.d.ts.map +1 -0
  318. package/dest/node/index.js +9 -0
  319. package/dest/node/proof/index.d.ts +21 -0
  320. package/dest/node/proof/index.d.ts.map +1 -0
  321. package/dest/node/proof/index.js +63 -0
  322. package/dest/node/random/browser/index.d.ts +2 -0
  323. package/dest/node/random/browser/index.d.ts.map +1 -0
  324. package/dest/node/random/browser/index.js +31 -0
  325. package/dest/node/random/index.d.ts +2 -0
  326. package/dest/node/random/index.d.ts.map +1 -0
  327. package/dest/{random → node/random}/index.js +1 -1
  328. package/dest/node/random/node/index.d.ts +2 -0
  329. package/dest/node/random/node/index.d.ts.map +1 -0
  330. package/dest/node/random/node/index.js +5 -0
  331. package/dest/node/retry/index.d.ts +26 -0
  332. package/dest/node/retry/index.d.ts.map +1 -0
  333. package/dest/node/retry/index.js +50 -0
  334. package/dest/node-cjs/async_map/index.d.ts +10 -0
  335. package/dest/node-cjs/async_map/index.d.ts.map +1 -0
  336. package/dest/node-cjs/async_map/index.js +19 -0
  337. package/dest/node-cjs/barretenberg/backend.d.ts +61 -0
  338. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -0
  339. package/dest/node-cjs/barretenberg/backend.js +257 -0
  340. package/dest/node-cjs/barretenberg/blake2s.test.d.ts +2 -0
  341. package/dest/node-cjs/barretenberg/blake2s.test.d.ts.map +1 -0
  342. package/dest/node-cjs/barretenberg/blake2s.test.js +59 -0
  343. package/dest/node-cjs/barretenberg/index.d.ts +65 -0
  344. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -0
  345. package/dest/node-cjs/barretenberg/index.js +191 -0
  346. package/dest/node-cjs/barretenberg/pedersen.test.d.ts +2 -0
  347. package/dest/node-cjs/barretenberg/pedersen.test.d.ts.map +1 -0
  348. package/dest/node-cjs/barretenberg/pedersen.test.js +64 -0
  349. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +2 -0
  350. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  351. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +220 -0
  352. package/dest/node-cjs/barretenberg/poseidon.test.d.ts +2 -0
  353. package/dest/node-cjs/barretenberg/poseidon.test.d.ts.map +1 -0
  354. package/dest/node-cjs/barretenberg/poseidon.test.js +37 -0
  355. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts +17 -0
  356. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  357. package/dest/node-cjs/barretenberg/testing/bigint-buffer.js +43 -0
  358. package/dest/node-cjs/barretenberg/testing/fields.d.ts +16 -0
  359. package/dest/node-cjs/barretenberg/testing/fields.d.ts.map +1 -0
  360. package/dest/node-cjs/barretenberg/testing/fields.js +51 -0
  361. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  362. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +45 -0
  363. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
  364. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +128 -0
  365. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
  366. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
  367. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +12 -0
  368. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +2 -0
  369. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
  370. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +8 -0
  371. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +3 -0
  372. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
  373. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +22 -0
  374. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +2 -0
  375. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts.map +1 -0
  376. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +11 -0
  377. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
  378. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
  379. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +75 -0
  380. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +59 -0
  381. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
  382. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +201 -0
  383. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
  384. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
  385. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +12 -0
  386. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +2 -0
  387. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
  388. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +8 -0
  389. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +3 -0
  390. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
  391. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +22 -0
  392. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +2 -0
  393. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts.map +1 -0
  394. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +12 -0
  395. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +30 -0
  396. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
  397. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +45 -0
  398. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
  399. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
  400. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +6 -0
  401. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
  402. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
  403. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +6 -0
  404. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
  405. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
  406. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +40 -0
  407. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +2 -0
  408. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
  409. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.js +5 -0
  410. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +2 -0
  411. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
  412. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +39 -0
  413. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +13 -0
  414. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
  415. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +57 -0
  416. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +2 -0
  417. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts.map +1 -0
  418. package/dest/node-cjs/barretenberg_wasm/helpers/index.js +5 -0
  419. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +21 -0
  420. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
  421. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +65 -0
  422. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
  423. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
  424. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +31 -0
  425. package/dest/node-cjs/barretenberg_wasm/index.d.ts +5 -0
  426. package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -0
  427. package/dest/node-cjs/barretenberg_wasm/index.js +18 -0
  428. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +2 -0
  429. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts.map +1 -0
  430. package/dest/node-cjs/barretenberg_wasm/index.test.js +41 -0
  431. package/dest/node-cjs/bb_backends/browser/index.d.ts +11 -0
  432. package/dest/node-cjs/bb_backends/browser/index.d.ts.map +1 -0
  433. package/dest/node-cjs/bb_backends/browser/index.js +43 -0
  434. package/dest/node-cjs/bb_backends/browser/platform.d.ts +4 -0
  435. package/dest/node-cjs/bb_backends/browser/platform.d.ts.map +1 -0
  436. package/dest/node-cjs/bb_backends/browser/platform.js +15 -0
  437. package/dest/node-cjs/bb_backends/index.d.ts +48 -0
  438. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -0
  439. package/dest/node-cjs/bb_backends/index.js +18 -0
  440. package/dest/node-cjs/bb_backends/interface.d.ts +33 -0
  441. package/dest/node-cjs/bb_backends/interface.d.ts.map +1 -0
  442. package/dest/node-cjs/bb_backends/interface.js +3 -0
  443. package/dest/node-cjs/bb_backends/node/index.d.ts +11 -0
  444. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -0
  445. package/dest/node-cjs/bb_backends/node/index.js +90 -0
  446. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +25 -0
  447. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -0
  448. package/dest/node-cjs/bb_backends/node/native_pipe.js +118 -0
  449. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +28 -0
  450. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -0
  451. package/dest/node-cjs/bb_backends/node/native_shm.js +181 -0
  452. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +51 -0
  453. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -0
  454. package/dest/node-cjs/bb_backends/node/native_shm_async.js +241 -0
  455. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +34 -0
  456. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -0
  457. package/dest/node-cjs/bb_backends/node/native_socket.js +286 -0
  458. package/dest/node-cjs/bb_backends/node/platform.d.ts +27 -0
  459. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -0
  460. package/dest/node-cjs/bb_backends/node/platform.js +131 -0
  461. package/dest/node-cjs/bb_backends/wasm.d.ts +49 -0
  462. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -0
  463. package/dest/node-cjs/bb_backends/wasm.js +90 -0
  464. package/dest/node-cjs/bbapi/exception_handling.test.d.ts +2 -0
  465. package/dest/node-cjs/bbapi/exception_handling.test.d.ts.map +1 -0
  466. package/dest/node-cjs/bbapi/exception_handling.test.js +50 -0
  467. package/dest/node-cjs/bbapi_exception.d.ts +7 -0
  468. package/dest/node-cjs/bbapi_exception.d.ts.map +1 -0
  469. package/dest/node-cjs/bbapi_exception.js +18 -0
  470. package/dest/node-cjs/benchmark/index.d.ts +3 -0
  471. package/dest/node-cjs/benchmark/index.d.ts.map +1 -0
  472. package/dest/node-cjs/benchmark/index.js +29 -0
  473. package/dest/node-cjs/benchmark/timer.d.ts +34 -0
  474. package/dest/node-cjs/benchmark/timer.d.ts.map +1 -0
  475. package/dest/node-cjs/benchmark/timer.js +46 -0
  476. package/dest/node-cjs/bin/index.d.ts +3 -0
  477. package/dest/node-cjs/bin/index.d.ts.map +1 -0
  478. package/dest/node-cjs/bin/index.js +13 -0
  479. package/dest/node-cjs/cbind/generate.d.ts +5 -0
  480. package/dest/node-cjs/cbind/generate.d.ts.map +1 -0
  481. package/dest/node-cjs/cbind/generate.js +153 -0
  482. package/dest/node-cjs/cbind/generated/api_types.d.ts +2051 -0
  483. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -0
  484. package/dest/node-cjs/cbind/generated/api_types.js +2989 -0
  485. package/dest/node-cjs/cbind/generated/async.d.ts +62 -0
  486. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -0
  487. package/dest/node-cjs/cbind/generated/async.js +667 -0
  488. package/dest/node-cjs/cbind/generated/curve_constants.d.ts +45 -0
  489. package/dest/node-cjs/cbind/generated/curve_constants.d.ts.map +1 -0
  490. package/dest/node-cjs/cbind/generated/curve_constants.js +48 -0
  491. package/dest/node-cjs/cbind/generated/sync.d.ts +62 -0
  492. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -0
  493. package/dest/node-cjs/cbind/generated/sync.js +614 -0
  494. package/dest/node-cjs/cbind/schema_compiler.d.ts +68 -0
  495. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -0
  496. package/dest/node-cjs/cbind/schema_compiler.js +607 -0
  497. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +43 -0
  498. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -0
  499. package/dest/node-cjs/crs/browser/cached_net_crs.js +100 -0
  500. package/dest/node-cjs/crs/browser/index.d.ts +2 -0
  501. package/dest/node-cjs/crs/browser/index.d.ts.map +1 -0
  502. package/dest/node-cjs/crs/browser/index.js +7 -0
  503. package/dest/node-cjs/crs/index.d.ts +2 -0
  504. package/dest/node-cjs/crs/index.d.ts.map +1 -0
  505. package/dest/node-cjs/crs/index.js +7 -0
  506. package/dest/node-cjs/crs/net_crs.d.ts +70 -0
  507. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -0
  508. package/dest/node-cjs/crs/net_crs.js +146 -0
  509. package/dest/node-cjs/crs/node/index.d.ts +38 -0
  510. package/dest/node-cjs/crs/node/index.d.ts.map +1 -0
  511. package/dest/node-cjs/crs/node/index.js +112 -0
  512. package/dest/node-cjs/index.d.ts +9 -0
  513. package/dest/node-cjs/index.d.ts.map +1 -0
  514. package/dest/node-cjs/index.js +39 -0
  515. package/dest/node-cjs/package.json +3 -0
  516. package/dest/node-cjs/proof/index.d.ts +21 -0
  517. package/dest/node-cjs/proof/index.d.ts.map +1 -0
  518. package/dest/node-cjs/proof/index.js +72 -0
  519. package/dest/node-cjs/random/browser/index.d.ts +2 -0
  520. package/dest/node-cjs/random/browser/index.d.ts.map +1 -0
  521. package/dest/node-cjs/random/browser/index.js +35 -0
  522. package/dest/node-cjs/random/index.d.ts +2 -0
  523. package/dest/node-cjs/random/index.d.ts.map +1 -0
  524. package/dest/node-cjs/random/index.js +5 -0
  525. package/dest/node-cjs/random/node/index.d.ts +2 -0
  526. package/dest/node-cjs/random/node/index.d.ts.map +1 -0
  527. package/dest/node-cjs/random/node/index.js +8 -0
  528. package/dest/node-cjs/retry/index.d.ts +26 -0
  529. package/dest/node-cjs/retry/index.d.ts.map +1 -0
  530. package/dest/node-cjs/retry/index.js +55 -0
  531. package/package.json +59 -46
  532. package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +156 -0
  533. package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +40 -0
  534. package/src/barretenberg/backend.ts +312 -0
  535. package/src/barretenberg/blake2s.test.ts +69 -0
  536. package/src/barretenberg/index.ts +212 -0
  537. package/src/barretenberg/pedersen.test.ts +69 -0
  538. package/src/barretenberg/poseidon.bench.test.ts +271 -0
  539. package/src/barretenberg/poseidon.test.ts +39 -0
  540. package/src/barretenberg/testing/bigint-buffer.ts +43 -0
  541. package/src/barretenberg/testing/fields.ts +63 -0
  542. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +137 -0
  543. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +9 -0
  544. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +6 -0
  545. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +19 -0
  546. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +10 -0
  547. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +72 -0
  548. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +251 -0
  549. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +9 -0
  550. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +6 -0
  551. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +19 -0
  552. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +12 -0
  553. package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +48 -0
  554. package/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts +3 -0
  555. package/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts +3 -0
  556. package/src/barretenberg_wasm/fetch_code/browser/index.ts +34 -0
  557. package/src/barretenberg_wasm/fetch_code/index.ts +1 -0
  558. package/src/barretenberg_wasm/fetch_code/node/index.ts +34 -0
  559. package/src/barretenberg_wasm/fetch_code/wasm-module.d.ts +4 -0
  560. package/src/barretenberg_wasm/helpers/browser/index.ts +54 -0
  561. package/src/barretenberg_wasm/helpers/index.ts +1 -0
  562. package/src/barretenberg_wasm/helpers/node/index.ts +62 -0
  563. package/src/barretenberg_wasm/index.test.ts +46 -0
  564. package/src/barretenberg_wasm/index.ts +21 -1
  565. package/src/bb_backends/browser/index.ts +50 -0
  566. package/src/bb_backends/browser/platform.ts +11 -0
  567. package/src/bb_backends/index.ts +52 -0
  568. package/src/bb_backends/interface.ts +35 -0
  569. package/src/bb_backends/node/index.ts +102 -0
  570. package/src/bb_backends/node/native_pipe.ts +127 -0
  571. package/src/bb_backends/node/native_shm.ts +195 -0
  572. package/src/bb_backends/node/native_shm_async.ts +266 -0
  573. package/src/bb_backends/node/native_socket.ts +326 -0
  574. package/src/bb_backends/node/platform.ts +151 -0
  575. package/src/bb_backends/wasm.ts +102 -0
  576. package/src/bbapi/exception_handling.test.ts +54 -0
  577. package/src/bbapi_exception.ts +13 -0
  578. package/src/benchmark/index.ts +26 -0
  579. package/src/benchmark/timer.ts +45 -0
  580. package/src/bin/index.ts +14 -0
  581. package/src/cbind/README.md +1 -0
  582. package/src/cbind/generate.ts +182 -0
  583. package/src/cbind/schema_compiler.ts +745 -0
  584. package/src/crs/browser/cached_net_crs.ts +41 -1
  585. package/src/crs/browser/index.ts +1 -1
  586. package/src/crs/index.ts +1 -1
  587. package/src/crs/net_crs.ts +114 -19
  588. package/src/crs/node/index.ts +95 -26
  589. package/src/index.html +1 -1
  590. package/src/index.ts +43 -5
  591. package/src/proof/index.ts +94 -0
  592. package/src/random/browser/index.ts +1 -1
  593. package/src/retry/index.ts +50 -0
  594. package/dest/async_map/index.d.ts.map +0 -1
  595. package/dest/barretenberg-threads.wasm +0 -0
  596. package/dest/barretenberg.wasm +0 -0
  597. package/dest/barretenberg_api/blake2s.test.d.ts +0 -2
  598. package/dest/barretenberg_api/blake2s.test.d.ts.map +0 -1
  599. package/dest/barretenberg_api/blake2s.test.js +0 -30
  600. package/dest/barretenberg_api/common.test.d.ts +0 -2
  601. package/dest/barretenberg_api/common.test.d.ts.map +0 -1
  602. package/dest/barretenberg_api/common.test.js +0 -18
  603. package/dest/barretenberg_api/index.d.ts +0 -103
  604. package/dest/barretenberg_api/index.d.ts.map +0 -1
  605. package/dest/barretenberg_api/index.js +0 -379
  606. package/dest/barretenberg_api/pedersen.test.d.ts +0 -2
  607. package/dest/barretenberg_api/pedersen.test.d.ts.map +0 -1
  608. package/dest/barretenberg_api/pedersen.test.js +0 -69
  609. package/dest/barretenberg_api/schnorr.test.d.ts +0 -2
  610. package/dest/barretenberg_api/schnorr.test.d.ts.map +0 -1
  611. package/dest/barretenberg_api/schnorr.test.js +0 -113
  612. package/dest/barretenberg_binder/heap_allocator.d.ts +0 -22
  613. package/dest/barretenberg_binder/heap_allocator.d.ts.map +0 -1
  614. package/dest/barretenberg_binder/heap_allocator.js +0 -59
  615. package/dest/barretenberg_binder/heap_allocator_sync.d.ts +0 -22
  616. package/dest/barretenberg_binder/heap_allocator_sync.d.ts.map +0 -1
  617. package/dest/barretenberg_binder/heap_allocator_sync.js +0 -58
  618. package/dest/barretenberg_binder/index.d.ts +0 -32
  619. package/dest/barretenberg_binder/index.d.ts.map +0 -1
  620. package/dest/barretenberg_binder/index.js +0 -73
  621. package/dest/barretenberg_wasm/barretenberg_wasm.d.ts +0 -50
  622. package/dest/barretenberg_wasm/barretenberg_wasm.d.ts.map +0 -1
  623. package/dest/barretenberg_wasm/barretenberg_wasm.js +0 -212
  624. package/dest/barretenberg_wasm/barretenberg_wasm.test.d.ts +0 -2
  625. package/dest/barretenberg_wasm/barretenberg_wasm.test.d.ts.map +0 -1
  626. package/dest/barretenberg_wasm/barretenberg_wasm.test.js +0 -43
  627. package/dest/barretenberg_wasm/browser/index.d.ts +0 -8
  628. package/dest/barretenberg_wasm/browser/index.d.ts.map +0 -1
  629. package/dest/barretenberg_wasm/browser/index.js +0 -26
  630. package/dest/barretenberg_wasm/browser/worker.d.ts +0 -2
  631. package/dest/barretenberg_wasm/browser/worker.d.ts.map +0 -1
  632. package/dest/barretenberg_wasm/browser/worker.js +0 -11
  633. package/dest/barretenberg_wasm/index.d.ts +0 -2
  634. package/dest/barretenberg_wasm/index.d.ts.map +0 -1
  635. package/dest/barretenberg_wasm/index.js +0 -2
  636. package/dest/barretenberg_wasm/node/index.d.ts +0 -17
  637. package/dest/barretenberg_wasm/node/index.d.ts.map +0 -1
  638. package/dest/barretenberg_wasm/node/index.js +0 -40
  639. package/dest/barretenberg_wasm/node/node_endpoint.d.ts +0 -8
  640. package/dest/barretenberg_wasm/node/node_endpoint.d.ts.map +0 -1
  641. package/dest/barretenberg_wasm/node/node_endpoint.js +0 -28
  642. package/dest/barretenberg_wasm/node/worker.d.ts +0 -2
  643. package/dest/barretenberg_wasm/node/worker.d.ts.map +0 -1
  644. package/dest/barretenberg_wasm/node/worker.js +0 -9
  645. package/dest/barretenberg_wasm.js +0 -2
  646. package/dest/barretenberg_wasm.js.LICENSE.txt +0 -5
  647. package/dest/bigint-array/index.d.ts +0 -3
  648. package/dest/bigint-array/index.d.ts.map +0 -1
  649. package/dest/bigint-array/index.js +0 -21
  650. package/dest/bindgen/function_declaration.d.ts +0 -11
  651. package/dest/bindgen/function_declaration.d.ts.map +0 -1
  652. package/dest/bindgen/function_declaration.js +0 -2
  653. package/dest/bindgen/index.d.ts +0 -2
  654. package/dest/bindgen/index.js +0 -15
  655. package/dest/bindgen/mappings.d.ts +0 -4
  656. package/dest/bindgen/mappings.d.ts.map +0 -1
  657. package/dest/bindgen/mappings.js +0 -63
  658. package/dest/bindgen/rust.d.ts +0 -2
  659. package/dest/bindgen/rust.d.ts.map +0 -1
  660. package/dest/bindgen/rust.js +0 -43
  661. package/dest/bindgen/to_camel_case.d.ts +0 -2
  662. package/dest/bindgen/to_camel_case.d.ts.map +0 -1
  663. package/dest/bindgen/to_camel_case.js +0 -11
  664. package/dest/bindgen/typescript.d.ts +0 -2
  665. package/dest/bindgen/typescript.d.ts.map +0 -1
  666. package/dest/bindgen/typescript.js +0 -80
  667. package/dest/crs/browser/cached_net_crs.d.ts +0 -25
  668. package/dest/crs/browser/cached_net_crs.d.ts.map +0 -1
  669. package/dest/crs/browser/cached_net_crs.js +0 -54
  670. package/dest/crs/browser/index.d.ts +0 -2
  671. package/dest/crs/browser/index.d.ts.map +0 -1
  672. package/dest/crs/browser/index.js +0 -2
  673. package/dest/crs/index.d.ts +0 -2
  674. package/dest/crs/index.d.ts.map +0 -1
  675. package/dest/crs/index.js +0 -2
  676. package/dest/crs/net_crs.d.ts +0 -36
  677. package/dest/crs/net_crs.d.ts.map +0 -1
  678. package/dest/crs/net_crs.js +0 -59
  679. package/dest/crs/node/ignition_files_crs.d.ts +0 -37
  680. package/dest/crs/node/ignition_files_crs.d.ts.map +0 -1
  681. package/dest/crs/node/ignition_files_crs.js +0 -51
  682. package/dest/crs/node/index.d.ts +0 -21
  683. package/dest/crs/node/index.d.ts.map +0 -1
  684. package/dest/crs/node/index.js +0 -54
  685. package/dest/examples/simple.rawtest.d.ts +0 -2
  686. package/dest/examples/simple.rawtest.d.ts.map +0 -1
  687. package/dest/examples/simple.rawtest.js +0 -29
  688. package/dest/examples/simple.test.d.ts +0 -2
  689. package/dest/examples/simple.test.d.ts.map +0 -1
  690. package/dest/examples/simple.test.js +0 -22
  691. package/dest/factory/index.d.ts +0 -21
  692. package/dest/factory/index.d.ts.map +0 -1
  693. package/dest/factory/index.js +0 -34
  694. package/dest/index.d.ts +0 -6
  695. package/dest/index.d.ts.map +0 -1
  696. package/dest/index.html +0 -1
  697. package/dest/index.js +0 -6
  698. package/dest/main.d.ts +0 -10
  699. package/dest/main.d.ts.map +0 -1
  700. package/dest/main.js +0 -275
  701. package/dest/random/browser/index.d.ts +0 -2
  702. package/dest/random/browser/index.d.ts.map +0 -1
  703. package/dest/random/browser/index.js +0 -31
  704. package/dest/random/index.d.ts +0 -2
  705. package/dest/random/index.d.ts.map +0 -1
  706. package/dest/random/node/index.d.ts +0 -2
  707. package/dest/random/node/index.d.ts.map +0 -1
  708. package/dest/random/node/index.js +0 -5
  709. package/dest/serialize/buffer_reader.d.ts +0 -28
  710. package/dest/serialize/buffer_reader.d.ts.map +0 -1
  711. package/dest/serialize/buffer_reader.js +0 -66
  712. package/dest/serialize/index.d.ts +0 -4
  713. package/dest/serialize/index.d.ts.map +0 -1
  714. package/dest/serialize/index.js +0 -4
  715. package/dest/serialize/output_type.d.ts +0 -11
  716. package/dest/serialize/output_type.d.ts.map +0 -1
  717. package/dest/serialize/output_type.js +0 -44
  718. package/dest/serialize/serialize.d.ts +0 -53
  719. package/dest/serialize/serialize.d.ts.map +0 -1
  720. package/dest/serialize/serialize.js +0 -139
  721. package/dest/simple_test.js +0 -2
  722. package/dest/simple_test.js.LICENSE.txt +0 -14
  723. package/dest/types/fields.d.ts +0 -33
  724. package/dest/types/fields.d.ts.map +0 -1
  725. package/dest/types/fields.js +0 -86
  726. package/dest/types/fixed_size_buffer.d.ts +0 -26
  727. package/dest/types/fixed_size_buffer.d.ts.map +0 -1
  728. package/dest/types/fixed_size_buffer.js +0 -54
  729. package/dest/types/index.d.ts +0 -6
  730. package/dest/types/index.d.ts.map +0 -1
  731. package/dest/types/index.js +0 -6
  732. package/dest/types/point.d.ts +0 -17
  733. package/dest/types/point.d.ts.map +0 -1
  734. package/dest/types/point.js +0 -32
  735. package/dest/types/ptr.d.ts +0 -13
  736. package/dest/types/ptr.d.ts.map +0 -1
  737. package/dest/types/ptr.js +0 -20
  738. package/dest/types/raw_buffer.d.ts +0 -3
  739. package/dest/types/raw_buffer.d.ts.map +0 -1
  740. package/dest/types/raw_buffer.js +0 -5
  741. package/src/barretenberg_api/blake2s.test.ts +0 -39
  742. package/src/barretenberg_api/common.test.ts +0 -21
  743. package/src/barretenberg_api/index.ts +0 -649
  744. package/src/barretenberg_api/pedersen.test.ts +0 -84
  745. package/src/barretenberg_api/schnorr.test.ts +0 -169
  746. package/src/barretenberg_binder/heap_allocator.ts +0 -62
  747. package/src/barretenberg_binder/heap_allocator_sync.ts +0 -61
  748. package/src/barretenberg_binder/index.ts +0 -76
  749. package/src/barretenberg_wasm/barretenberg_wasm.test.ts +0 -52
  750. package/src/barretenberg_wasm/barretenberg_wasm.ts +0 -246
  751. package/src/barretenberg_wasm/browser/index.ts +0 -32
  752. package/src/barretenberg_wasm/browser/worker.ts +0 -13
  753. package/src/barretenberg_wasm/node/index.ts +0 -46
  754. package/src/barretenberg_wasm/node/worker.ts +0 -10
  755. package/src/bigint-array/index.ts +0 -21
  756. package/src/bindgen/function_declaration.ts +0 -11
  757. package/src/bindgen/index.ts +0 -17
  758. package/src/bindgen/mappings.ts +0 -66
  759. package/src/bindgen/rust.ts +0 -52
  760. package/src/bindgen/to_camel_case.ts +0 -10
  761. package/src/bindgen/typescript.ts +0 -91
  762. package/src/crs/node/ignition_files_crs.ts +0 -60
  763. package/src/examples/simple.rawtest.ts +0 -37
  764. package/src/examples/simple.test.ts +0 -27
  765. package/src/factory/index.ts +0 -36
  766. package/src/main.ts +0 -311
  767. package/src/serialize/buffer_reader.ts +0 -82
  768. package/src/serialize/index.ts +0 -3
  769. package/src/serialize/output_type.ts +0 -53
  770. package/src/serialize/serialize.ts +0 -157
  771. package/src/types/fields.ts +0 -98
  772. package/src/types/fixed_size_buffer.ts +0 -59
  773. package/src/types/index.ts +0 -5
  774. package/src/types/point.ts +0 -35
  775. package/src/types/ptr.ts +0 -20
  776. package/src/types/raw_buffer.ts +0 -3
  777. /package/src/barretenberg_wasm/{node → helpers/node}/node_endpoint.ts +0 -0
@@ -0,0 +1,251 @@
1
+ import { type Worker } from 'worker_threads';
2
+ import { Remote } from 'comlink';
3
+ import { getNumCpu, getRemoteBarretenbergWasm, getSharedMemoryAvailable } from '../helpers/index.js';
4
+ import { createThreadWorker } from '../barretenberg_wasm_thread/factory/node/index.js';
5
+ import { type BarretenbergWasmThreadWorker } from '../barretenberg_wasm_thread/index.js';
6
+ import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js';
7
+ import { HeapAllocator } from './heap_allocator.js';
8
+
9
+ /**
10
+ * This is the "main thread" implementation of BarretenbergWasm.
11
+ * It spawns a bunch of "child thread" implementations.
12
+ * In a browser context, this still runs on a worker, as it will block waiting on child threads.
13
+ */
14
+ export class BarretenbergWasmMain extends BarretenbergWasmBase {
15
+ static MAX_THREADS = 32;
16
+ private workers: Worker[] = [];
17
+ private remoteWasms: BarretenbergWasmThreadWorker[] = [];
18
+ private nextWorker = 0;
19
+ private nextThreadId = 1;
20
+ private useCustomLogger = false;
21
+
22
+ // Pre-allocated scratch buffers for msgpack I/O to avoid malloc/free overhead
23
+ private msgpackInputScratch: number = 0; // 8MB input buffer
24
+ private msgpackOutputScratch: number = 0; // 8MB output buffer
25
+ private readonly MSGPACK_SCRATCH_SIZE = 1024 * 1024 * 8; // 8MB
26
+
27
+ public getNumThreads() {
28
+ return this.workers.length + 1;
29
+ }
30
+
31
+ /**
32
+ * Init as main thread. Spawn child threads.
33
+ */
34
+ public async init(
35
+ module: WebAssembly.Module,
36
+ threads = Math.min(getNumCpu(), BarretenbergWasmMain.MAX_THREADS),
37
+ logger?: (msg: string) => void,
38
+ initial = 33,
39
+ maximum = this.getDefaultMaximumMemoryPages(),
40
+ ) {
41
+ // Track whether a custom logger was provided so workers know whether to postMessage logs
42
+ this.useCustomLogger = logger !== undefined;
43
+ this.logger = logger ?? (() => {});
44
+
45
+ const initialMb = (initial * 2 ** 16) / (1024 * 1024);
46
+ const maxMb = (maximum * 2 ** 16) / (1024 * 1024);
47
+ const shared = getSharedMemoryAvailable();
48
+
49
+ this.logger(
50
+ `Initializing bb wasm: initial memory ${initial} pages ${initialMb}MiB; ` +
51
+ `max memory: ${maximum} pages, ${maxMb}MiB; ` +
52
+ `threads: ${threads}; shared memory: ${shared}`,
53
+ );
54
+
55
+ this.memory = new WebAssembly.Memory({ initial, maximum, shared });
56
+
57
+ const instance = await WebAssembly.instantiate(module, this.getImportObj(this.memory));
58
+
59
+ this.instance = instance;
60
+
61
+ // Init all global/static data.
62
+ this.call('_initialize');
63
+
64
+ // Allocate dedicated msgpack scratch buffers (never freed, reused for all msgpack calls)
65
+ this.msgpackInputScratch = this.call('bbmalloc', this.MSGPACK_SCRATCH_SIZE);
66
+ this.msgpackOutputScratch = this.call('bbmalloc', this.MSGPACK_SCRATCH_SIZE);
67
+ this.logger(
68
+ `Allocated msgpack scratch buffers: ` +
69
+ `input @ ${this.msgpackInputScratch}, output @ ${this.msgpackOutputScratch} (${this.MSGPACK_SCRATCH_SIZE} bytes each)`,
70
+ );
71
+
72
+ // Create worker threads. Create 1 less than requested, as main thread counts as a thread.
73
+ if (threads > 1) {
74
+ this.logger(`Creating ${threads} worker threads`);
75
+ this.workers = await Promise.all(Array.from({ length: threads - 1 }).map(createThreadWorker));
76
+
77
+ // Set up log message forwarding from workers to our logger (only if custom logger provided)
78
+ if (this.useCustomLogger) {
79
+ this.workers.forEach(worker => this.setupWorkerLogForwarding(worker));
80
+ }
81
+
82
+ this.remoteWasms = await Promise.all(this.workers.map(getRemoteBarretenbergWasm<BarretenbergWasmThreadWorker>));
83
+ await Promise.all(this.remoteWasms.map(w => w.initThread(module, this.memory, this.useCustomLogger)));
84
+ }
85
+ }
86
+
87
+ private getDefaultMaximumMemoryPages(): number {
88
+ // iOS browser is very aggressive with memory. Check if running in browser and on iOS
89
+ // We at any rate expect the mobile iOS browser to kill us >=1GB, so we don't set a maximum higher than that.
90
+ if (typeof window !== 'undefined' && /iPad|iPhone/.test(navigator.userAgent)) {
91
+ return 2 ** 14;
92
+ }
93
+ return 2 ** 16;
94
+ }
95
+
96
+ /**
97
+ * Set up forwarding of log messages from worker threads to our logger.
98
+ * Workers post messages with { type: 'log', msg: string } which we intercept here.
99
+ */
100
+ private setupWorkerLogForwarding(worker: Worker) {
101
+ const handler = (data: unknown) => {
102
+ if (data && typeof data === 'object' && 'type' in data && data.type === 'log' && 'msg' in data) {
103
+ this.logger(data.msg as string);
104
+ }
105
+ };
106
+
107
+ // Node Workers use 'on' method, browser Workers use 'addEventListener'
108
+ // The 'worker' variable is typed as Node's Worker, but at runtime in browser
109
+ // it will be a browser Worker (due to browser_postprocess.sh import rewriting)
110
+ if ('on' in worker && typeof worker.on === 'function') {
111
+ // Node.js worker_threads Worker
112
+ worker.on('message', handler);
113
+ } else if ('addEventListener' in worker) {
114
+ // Browser Web Worker
115
+ (worker as unknown as globalThis.Worker).addEventListener('message', (event: MessageEvent) => {
116
+ handler(event.data);
117
+ });
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Called on main thread. Signals child threads to gracefully exit.
123
+ */
124
+ public async destroy() {
125
+ await Promise.all(this.workers.map(w => w.terminate()));
126
+ }
127
+
128
+ protected getImportObj(memory: WebAssembly.Memory) {
129
+ const baseImports = super.getImportObj(memory);
130
+
131
+ /* eslint-disable camelcase */
132
+ return {
133
+ ...baseImports,
134
+ wasi: {
135
+ 'thread-spawn': (arg: number) => {
136
+ arg = arg >>> 0;
137
+ const id = this.nextThreadId++;
138
+ const worker = this.nextWorker++ % this.remoteWasms.length;
139
+ // this.logger(`spawning thread ${id} on worker ${worker} with arg ${arg >>> 0}`);
140
+ this.remoteWasms[worker].call('wasi_thread_start', id, arg).catch(this.logger);
141
+ // this.remoteWasms[worker].postMessage({ msg: 'thread', data: { id, arg } });
142
+ return id;
143
+ },
144
+ },
145
+ env: {
146
+ ...baseImports.env,
147
+ env_hardware_concurrency: () => {
148
+ // If there are no workers (we're already running as a worker, or the main thread requested no workers)
149
+ // then we return 1, which should cause any algos using threading to just not create a thread.
150
+ return this.remoteWasms.length + 1;
151
+ },
152
+ },
153
+ };
154
+ /* eslint-enable camelcase */
155
+ }
156
+
157
+ callWasmExport(funcName: string, inArgs: (Uint8Array | number)[], outLens: (number | undefined)[]) {
158
+ const alloc = new HeapAllocator(this);
159
+ const inPtrs = alloc.getInputs(inArgs);
160
+ const outPtrs = alloc.getOutputPtrs(outLens);
161
+ this.call(funcName, ...inPtrs, ...outPtrs);
162
+ const outArgs = this.getOutputArgs(outLens, outPtrs, alloc);
163
+ alloc.freeAll();
164
+ return outArgs;
165
+ }
166
+
167
+ private getOutputArgs(outLens: (number | undefined)[], outPtrs: number[], alloc: HeapAllocator) {
168
+ return outLens.map((len, i) => {
169
+ if (len) {
170
+ return this.getMemorySlice(outPtrs[i], outPtrs[i] + len);
171
+ }
172
+ const slice = this.getMemorySlice(outPtrs[i], outPtrs[i] + 4);
173
+ const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true);
174
+
175
+ // Add our heap buffer to the dealloc list.
176
+ alloc.addOutputPtr(ptr);
177
+
178
+ // The length will be found in the first 4 bytes of the buffer, big endian. See to_heap_buffer.
179
+ const lslice = this.getMemorySlice(ptr, ptr + 4);
180
+ const length = new DataView(lslice.buffer, lslice.byteOffset, lslice.byteLength).getUint32(0, false);
181
+
182
+ return this.getMemorySlice(ptr + 4, ptr + 4 + length);
183
+ });
184
+ }
185
+
186
+ cbindCall(cbind: string, inputBuffer: Uint8Array): any {
187
+ const needsCustomInputBuffer = inputBuffer.length > this.MSGPACK_SCRATCH_SIZE;
188
+ let inputPtr: number;
189
+
190
+ if (needsCustomInputBuffer) {
191
+ // Allocate temporary buffer for oversized input
192
+ inputPtr = this.call('bbmalloc', inputBuffer.length);
193
+ } else {
194
+ // Use pre-allocated scratch buffer
195
+ inputPtr = this.msgpackInputScratch;
196
+ }
197
+
198
+ // Write input to buffer
199
+ this.writeMemory(inputPtr, inputBuffer);
200
+
201
+ // Setup output scratch buffer with IN-OUT parameter pattern:
202
+ // Reserve 8 bytes for metadata (pointer + size), rest is scratch data space
203
+ const METADATA_SIZE = 8;
204
+ const outputPtrLocation = this.msgpackOutputScratch;
205
+ const outputSizeLocation = this.msgpackOutputScratch + 4;
206
+ const scratchDataPtr = this.msgpackOutputScratch + METADATA_SIZE;
207
+ const scratchDataSize = this.MSGPACK_SCRATCH_SIZE - METADATA_SIZE;
208
+
209
+ // Get memory and create DataView for writing IN values
210
+ let mem = this.getMemory();
211
+ let view = new DataView(mem.buffer);
212
+
213
+ // Write IN values: provide scratch buffer pointer and size to C++
214
+ view.setUint32(outputPtrLocation, scratchDataPtr, true);
215
+ view.setUint32(outputSizeLocation, scratchDataSize, true);
216
+
217
+ // Call WASM
218
+ this.call(cbind, inputPtr, inputBuffer.length, outputPtrLocation, outputSizeLocation);
219
+
220
+ // Free custom input buffer if allocated
221
+ if (needsCustomInputBuffer) {
222
+ this.call('bbfree', inputPtr);
223
+ }
224
+
225
+ // Re-fetch memory after WASM call, as the buffer may have been detached if memory grew
226
+ mem = this.getMemory();
227
+ view = new DataView(mem.buffer);
228
+
229
+ // Read OUT values: C++ returns actual buffer pointer and size
230
+ const outputDataPtr = view.getUint32(outputPtrLocation, true);
231
+ const outputSize = view.getUint32(outputSizeLocation, true);
232
+
233
+ // Check if C++ used scratch (pointer unchanged) or allocated (pointer changed)
234
+ const usedScratch = outputDataPtr === scratchDataPtr;
235
+
236
+ // Copy output data from WASM memory
237
+ const encodedResult = this.getMemorySlice(outputDataPtr, outputDataPtr + outputSize);
238
+
239
+ // Only free if C++ allocated beyond scratch
240
+ if (!usedScratch) {
241
+ this.call('bbfree', outputDataPtr);
242
+ }
243
+
244
+ return encodedResult;
245
+ }
246
+ }
247
+
248
+ /**
249
+ * The comlink type that asyncifies the BarretenbergWasmMain api.
250
+ */
251
+ export type BarretenbergWasmMainWorker = Remote<BarretenbergWasmMain>;
@@ -0,0 +1,9 @@
1
+ import { readinessListener } from '../../../helpers/browser/index.js';
2
+
3
+ export async function createThreadWorker() {
4
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
5
+ // @ts-ignore
6
+ const worker = new Worker(new URL('./thread.worker.js', import.meta.url), { type: 'module' });
7
+ await new Promise<void>(resolve => readinessListener(worker, resolve));
8
+ return worker;
9
+ }
@@ -0,0 +1,6 @@
1
+ import { expose } from 'comlink';
2
+ import { BarretenbergWasmThread } from '../../index.js';
3
+ import { Ready } from '../../../helpers/browser/index.js';
4
+
5
+ expose(new BarretenbergWasmThread());
6
+ postMessage(Ready);
@@ -0,0 +1,19 @@
1
+ import { Worker } from 'worker_threads';
2
+ import { dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+
5
+ function getCurrentDir() {
6
+ if (typeof __dirname !== 'undefined') {
7
+ return __dirname;
8
+ } else {
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ // @ts-ignore
11
+ return dirname(fileURLToPath(import.meta.url));
12
+ }
13
+ }
14
+
15
+ export function createThreadWorker() {
16
+ const __dirname = getCurrentDir();
17
+ const worker = new Worker(__dirname + `/thread.worker.js`);
18
+ return Promise.resolve(worker);
19
+ }
@@ -0,0 +1,12 @@
1
+ import { parentPort } from 'worker_threads';
2
+ import { expose } from 'comlink';
3
+ import { BarretenbergWasmThread } from '../../index.js';
4
+ import { nodeEndpoint } from '../../../helpers/node/node_endpoint.js';
5
+
6
+ if (!parentPort) {
7
+ throw new Error('No parentPort');
8
+ }
9
+
10
+ const endpoint = nodeEndpoint(parentPort);
11
+
12
+ expose(new BarretenbergWasmThread(), endpoint);
@@ -0,0 +1,48 @@
1
+ import { Remote } from 'comlink';
2
+ import { killSelf, threadLogger } from '../helpers/index.js';
3
+ import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js';
4
+
5
+ export class BarretenbergWasmThread extends BarretenbergWasmBase {
6
+ /**
7
+ * Init as worker thread.
8
+ * @param useCustomLogger - If true, logs will be posted back to main thread for custom logger routing
9
+ */
10
+ public async initThread(module: WebAssembly.Module, memory: WebAssembly.Memory, useCustomLogger = false) {
11
+ this.logger = threadLogger(useCustomLogger) || this.logger;
12
+ this.memory = memory;
13
+ this.instance = await WebAssembly.instantiate(module, this.getImportObj(this.memory));
14
+ }
15
+
16
+ public destroy() {
17
+ killSelf();
18
+ }
19
+
20
+ protected getImportObj(memory: WebAssembly.Memory) {
21
+ const baseImports = super.getImportObj(memory);
22
+
23
+ /* eslint-disable camelcase */
24
+ return {
25
+ ...baseImports,
26
+ wasi: {
27
+ 'thread-spawn': () => {
28
+ this.logger('PANIC: threads cannot spawn threads!');
29
+ this.logger(new Error().stack!);
30
+ killSelf();
31
+ },
32
+ },
33
+
34
+ // These are functions implementations for imports we've defined are needed.
35
+ // The native C++ build defines these in a module called "env". We must implement TypeScript versions here.
36
+ env: {
37
+ ...baseImports.env,
38
+ env_hardware_concurrency: () => {
39
+ // We return 1, which should cause any algos using threading to just not create a thread.
40
+ return 1;
41
+ },
42
+ },
43
+ };
44
+ /* eslint-enable camelcase */
45
+ }
46
+ }
47
+
48
+ export type BarretenbergWasmThreadWorker = Remote<BarretenbergWasmThread>;
@@ -0,0 +1,3 @@
1
+ import barretenbergThreadsModule from '../../barretenberg-threads.wasm.gz';
2
+
3
+ export default barretenbergThreadsModule;
@@ -0,0 +1,3 @@
1
+ import barretenbergModule from '../../barretenberg.wasm.gz';
2
+
3
+ export default barretenbergModule;
@@ -0,0 +1,34 @@
1
+ import pako from 'pako';
2
+
3
+ // Annoyingly the wasm declares if it's memory is shared or not. So now we need two wasms if we want to be
4
+ // able to fallback on "non shared memory" situations.
5
+ export async function fetchCode(multithreaded: boolean, wasmPath?: string) {
6
+ let url: string;
7
+ if (wasmPath) {
8
+ const suffix = multithreaded ? '-threads' : '';
9
+ const filePath = wasmPath.split('/').slice(0, -1).join('/');
10
+ const fileNameWithExtensions = wasmPath.split('/').pop();
11
+ const [fileName, ...extensions] = fileNameWithExtensions!.split('.');
12
+ url = `${filePath}/${fileName}${suffix}.${extensions.join('.')}`;
13
+ } else {
14
+ url = multithreaded
15
+ ? (await import('./barretenberg-threads.js')).default
16
+ : (await import('./barretenberg.js')).default;
17
+ }
18
+ const res = await fetch(url);
19
+ // Default bb wasm is compressed, but user could point it to a non-compressed version
20
+ const maybeCompressedData = await res.arrayBuffer();
21
+ const buffer = new Uint8Array(maybeCompressedData);
22
+ const isGzip =
23
+ // Check magic number
24
+ buffer[0] === 0x1f &&
25
+ buffer[1] === 0x8b &&
26
+ // Check compression method:
27
+ buffer[2] === 0x08;
28
+ if (isGzip) {
29
+ const decompressedData = pako.ungzip(buffer);
30
+ return decompressedData.buffer as unknown as Uint8Array<ArrayBuffer>;
31
+ } else {
32
+ return buffer;
33
+ }
34
+ }
@@ -0,0 +1 @@
1
+ export * from './node/index.js';
@@ -0,0 +1,34 @@
1
+ import { readFile } from 'fs/promises';
2
+ import { dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import pako from 'pako';
5
+
6
+ function getCurrentDir() {
7
+ if (typeof __dirname !== 'undefined') {
8
+ return __dirname;
9
+ } else {
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-ignore
12
+ return dirname(fileURLToPath(import.meta.url));
13
+ }
14
+ }
15
+
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
+ export async function fetchCode(multithreaded: boolean, wasmPath?: string) {
18
+ const path = wasmPath ?? getCurrentDir() + '/../../barretenberg-threads.wasm.gz';
19
+ // Default bb wasm is compressed, but user could point it to a non-compressed version
20
+ const maybeCompressedData = await readFile(path);
21
+ const buffer = new Uint8Array(maybeCompressedData);
22
+ const isGzip =
23
+ // Check magic number
24
+ buffer[0] === 0x1f &&
25
+ buffer[1] === 0x8b &&
26
+ // Check compression method:
27
+ buffer[2] === 0x08;
28
+ if (isGzip) {
29
+ const decompressedData = pako.ungzip(buffer);
30
+ return decompressedData.buffer as unknown as Uint8Array<ArrayBuffer>;
31
+ } else {
32
+ return buffer;
33
+ }
34
+ }
@@ -0,0 +1,4 @@
1
+ declare module '*.wasm.gz' {
2
+ const content: string;
3
+ export default content;
4
+ }
@@ -0,0 +1,54 @@
1
+ import { wrap } from 'comlink';
2
+
3
+ export function getSharedMemoryAvailable() {
4
+ const globalScope = typeof window !== 'undefined' ? window : globalThis;
5
+ return typeof SharedArrayBuffer !== 'undefined' && globalScope.crossOriginIsolated;
6
+ }
7
+
8
+ export function getRemoteBarretenbergWasm<T>(worker: Worker) {
9
+ return wrap<T>(worker);
10
+ }
11
+
12
+ export function getNumCpu() {
13
+ return navigator.hardwareConcurrency;
14
+ }
15
+
16
+ export function threadLogger(useCustomLogger: boolean): ((msg: string) => void) | undefined {
17
+ if (useCustomLogger) {
18
+ // Post log messages back to main thread for routing through user-provided logger
19
+ return (msg: string) => {
20
+ postMessage({ type: 'log', msg });
21
+ };
22
+ }
23
+ // Use console.log directly when no custom logger is provided
24
+ return console.log;
25
+ }
26
+
27
+ export function killSelf() {
28
+ self.close();
29
+ }
30
+
31
+ export function getAvailableThreads(logger: (msg: string) => void): number {
32
+ if (typeof navigator !== 'undefined' && navigator.hardwareConcurrency) {
33
+ return navigator.hardwareConcurrency;
34
+ } else {
35
+ logger(`Could not detect environment to query number of threads. Falling back to one thread.`);
36
+ return 1;
37
+ }
38
+ }
39
+
40
+ // Solution to async initialization of workers, taken from
41
+ // https://github.com/GoogleChromeLabs/comlink/issues/635#issuecomment-1598913044
42
+
43
+ /** The message expected by the `readinessListener`. */
44
+ export const Ready = { ready: true };
45
+
46
+ /** Listen for the readiness message from the Worker and call the `callback` once. */
47
+ export function readinessListener(worker: Worker, callback: () => void) {
48
+ worker.addEventListener('message', function ready(event: MessageEvent<typeof Ready>) {
49
+ if (!!event.data && event.data.ready === true) {
50
+ worker.removeEventListener('message', ready);
51
+ callback();
52
+ }
53
+ });
54
+ }
@@ -0,0 +1 @@
1
+ export * from './node/index.js';
@@ -0,0 +1,62 @@
1
+ import { Worker, parentPort } from 'worker_threads';
2
+ import os from 'os';
3
+ import { wrap } from 'comlink';
4
+ import { nodeEndpoint } from './node_endpoint.js';
5
+ import { writeSync } from 'fs';
6
+
7
+ export function getSharedMemoryAvailable() {
8
+ return true;
9
+ }
10
+
11
+ /**
12
+ * Comlink allows you to produce a Proxy to the worker, enabling you to call methods as if it were a normal class.
13
+ * Note we give it the type information it needs so the returned Proxy object looks like that type.
14
+ * Node has a different implementation, needing this nodeEndpoint wrapper, hence this function exists here.
15
+ */
16
+ export function getRemoteBarretenbergWasm<T>(worker: Worker) {
17
+ return wrap<T>(nodeEndpoint(worker));
18
+ }
19
+
20
+ /**
21
+ * Returns number of cpus as reported by the system, unless overriden by HARDWARE_CONCURRENCY env var.
22
+ */
23
+ export function getNumCpu() {
24
+ return +process.env.HARDWARE_CONCURRENCY! || os.cpus().length;
25
+ }
26
+
27
+ /**
28
+ * Returns a logger function for worker threads.
29
+ * When a custom logger is provided, posts messages back to the main thread.
30
+ * Otherwise, writes directly to stdout.
31
+ */
32
+ export function threadLogger(useCustomLogger: boolean): ((msg: string) => void) | undefined {
33
+ if (useCustomLogger) {
34
+ return (msg: string) => {
35
+ if (parentPort) {
36
+ parentPort.postMessage({ type: 'log', msg });
37
+ }
38
+ };
39
+ }
40
+ // Write directly to stdout when no custom logger is provided
41
+ return (msg: string) => {
42
+ writeSync(1, msg + '\n');
43
+ };
44
+ }
45
+
46
+ export function killSelf(): never {
47
+ // Extordinarily hard process termination. Due to how parent threads block on child threads etc, even process.exit
48
+ // doesn't seem to be able to abort the process. The following does.
49
+ process.kill(process.pid);
50
+ throw new Error();
51
+ }
52
+
53
+ export function getAvailableThreads(logger: (msg: string) => void): number {
54
+ try {
55
+ return os.cpus().length;
56
+ } catch (e: any) {
57
+ logger(
58
+ `Could not detect environment to query number of threads. Falling back to one thread. Error: ${e.message ?? e}`,
59
+ );
60
+ return 1;
61
+ }
62
+ }
@@ -0,0 +1,46 @@
1
+ import { createMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js';
2
+ import { BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
3
+ import { getRemoteBarretenbergWasm } from '../barretenberg_wasm/helpers/index.js';
4
+ import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
5
+ import { Worker } from 'worker_threads';
6
+
7
+ describe('barretenberg wasm', () => {
8
+ let wasm: BarretenbergWasmMainWorker;
9
+ let worker: Worker;
10
+
11
+ beforeAll(async () => {
12
+ worker = await createMainWorker();
13
+ wasm = getRemoteBarretenbergWasm<BarretenbergWasmMainWorker>(worker);
14
+ const { module, threads } = await fetchModuleAndThreads(2);
15
+ await wasm.init(module, threads);
16
+ }, 20000);
17
+
18
+ afterAll(async () => {
19
+ await wasm.destroy();
20
+ await worker.terminate();
21
+ });
22
+
23
+ it('should new malloc, transfer and slice mem', async () => {
24
+ const length = 1024;
25
+ const ptr = await wasm.call('bbmalloc', length);
26
+ const buf = Buffer.alloc(length, 128);
27
+ await wasm.writeMemory(ptr, Uint8Array.from(buf));
28
+ const result = Buffer.from(await wasm.getMemorySlice(ptr, ptr + length));
29
+ await wasm.call('bbfree', ptr);
30
+ expect(result).toStrictEqual(buf);
31
+ });
32
+
33
+ it('test abort', async () => {
34
+ await expect(() => wasm.call('test_abort')).rejects.toThrow();
35
+ });
36
+
37
+ it('should new malloc, transfer and slice mem', async () => {
38
+ const length = 1024;
39
+ const ptr = await wasm.call('bbmalloc', length);
40
+ const buf = Buffer.alloc(length, 128);
41
+ await wasm.writeMemory(ptr, Uint8Array.from(buf));
42
+ const result = Buffer.from(await wasm.getMemorySlice(ptr, ptr + length));
43
+ await wasm.call('bbfree', ptr);
44
+ expect(result).toStrictEqual(buf);
45
+ });
46
+ });
@@ -1 +1,21 @@
1
- export * from './barretenberg_wasm.js';
1
+ import { getSharedMemoryAvailable, getAvailableThreads } from './helpers/node/index.js';
2
+ import { fetchCode } from './fetch_code/index.js';
3
+
4
+ export async function fetchModuleAndThreads(
5
+ desiredThreads = 32,
6
+ wasmPath?: string,
7
+ logger: (msg: string) => void = () => {},
8
+ ) {
9
+ const shared = getSharedMemoryAvailable();
10
+
11
+ const availableThreads = shared ? await getAvailableThreads(logger) : 1;
12
+ // We limit the number of threads to 32 as we do not benefit from greater numbers.
13
+ const limitedThreads = Math.min(desiredThreads, availableThreads, 32);
14
+
15
+ logger(`Fetching bb wasm from ${wasmPath ?? 'default location'}`);
16
+ const code = await fetchCode(shared, wasmPath);
17
+ logger(`Compiling bb wasm of ${code.byteLength} bytes`);
18
+ const module = await WebAssembly.compile(code);
19
+ logger('Compilation of bb wasm complete');
20
+ return { module, threads: limitedThreads };
21
+ }