@aztec/bb.js 3.0.0-nightly.20251016 → 3.0.0-nightly.20251023

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 (368) hide show
  1. package/README.md +12 -78
  2. package/dest/browser/barretenberg/backend.d.ts +1 -1
  3. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  4. package/dest/browser/barretenberg/backend.js +21 -13
  5. package/dest/browser/barretenberg/index.d.ts +44 -43
  6. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  7. package/dest/browser/barretenberg/index.js +130 -79
  8. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  9. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  10. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  11. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  12. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  13. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  14. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  15. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +54 -13
  17. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  18. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  19. package/dest/browser/bb_backends/browser/index.d.ts +11 -0
  20. package/dest/browser/bb_backends/browser/index.d.ts.map +1 -0
  21. package/dest/browser/bb_backends/browser/index.js +39 -0
  22. package/dest/browser/bb_backends/index.d.ts +45 -0
  23. package/dest/browser/bb_backends/index.d.ts.map +1 -0
  24. package/dest/browser/bb_backends/index.js +15 -0
  25. package/dest/browser/bb_backends/interface.d.ts +33 -0
  26. package/dest/browser/bb_backends/interface.d.ts.map +1 -0
  27. package/dest/browser/bb_backends/interface.js +2 -0
  28. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +15 -0
  29. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  30. package/dest/browser/bb_backends/sync_to_async_adapter.js +20 -0
  31. package/dest/browser/bb_backends/wasm.d.ts +56 -0
  32. package/dest/browser/bb_backends/wasm.d.ts.map +1 -0
  33. package/dest/browser/bb_backends/wasm.js +90 -0
  34. package/dest/browser/cbind/generate.js +2 -7
  35. package/dest/browser/cbind/generated/api_types.d.ts +1167 -0
  36. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  37. package/dest/browser/cbind/generated/api_types.js +1609 -47
  38. package/dest/browser/cbind/generated/async.d.ts +38 -4
  39. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  40. package/dest/browser/cbind/generated/async.js +327 -21
  41. package/dest/browser/cbind/generated/sync.d.ts +39 -5
  42. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  43. package/dest/browser/cbind/generated/sync.js +294 -21
  44. package/dest/browser/cbind/schema_compiler.d.ts +2 -4
  45. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
  46. package/dest/browser/cbind/schema_compiler.js +74 -178
  47. package/dest/browser/index.d.ts +2 -2
  48. package/dest/browser/index.d.ts.map +1 -1
  49. package/dest/browser/index.js +3 -3
  50. package/dest/browser/serialize/index.d.ts +0 -1
  51. package/dest/browser/serialize/index.d.ts.map +1 -1
  52. package/dest/browser/serialize/index.js +1 -2
  53. package/dest/browser/serialize/serialize.d.ts +0 -35
  54. package/dest/browser/serialize/serialize.d.ts.map +1 -1
  55. package/dest/browser/serialize/serialize.js +1 -68
  56. package/dest/browser/types/fields.d.ts.map +1 -1
  57. package/dest/browser/types/fields.js +3 -3
  58. package/dest/browser/types/index.d.ts +0 -3
  59. package/dest/browser/types/index.d.ts.map +1 -1
  60. package/dest/browser/types/index.js +1 -4
  61. package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +2 -2
  62. package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +3 -3
  63. package/dest/node/barretenberg/backend.d.ts +1 -1
  64. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  65. package/dest/node/barretenberg/backend.js +21 -13
  66. package/dest/node/barretenberg/blake2s.test.js +21 -18
  67. package/dest/node/barretenberg/index.d.ts +44 -43
  68. package/dest/node/barretenberg/index.d.ts.map +1 -1
  69. package/dest/node/barretenberg/index.js +130 -79
  70. package/dest/node/barretenberg/pedersen.test.js +24 -17
  71. package/dest/node/barretenberg/poseidon.bench.test.d.ts +2 -0
  72. package/dest/node/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  73. package/dest/node/barretenberg/poseidon.bench.test.js +216 -0
  74. package/dest/node/barretenberg/poseidon.test.js +15 -15
  75. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  76. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  77. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  78. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  79. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  80. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  81. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  82. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  83. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  84. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +54 -13
  85. package/dest/node/barretenberg_wasm/index.test.js +11 -10
  86. package/dest/node/bb_backends/browser/index.d.ts +11 -0
  87. package/dest/node/bb_backends/browser/index.d.ts.map +1 -0
  88. package/dest/node/bb_backends/browser/index.js +39 -0
  89. package/dest/node/bb_backends/index.d.ts +45 -0
  90. package/dest/node/bb_backends/index.d.ts.map +1 -0
  91. package/dest/node/bb_backends/index.js +15 -0
  92. package/dest/node/bb_backends/interface.d.ts +33 -0
  93. package/dest/node/bb_backends/interface.d.ts.map +1 -0
  94. package/dest/node/bb_backends/interface.js +2 -0
  95. package/dest/node/bb_backends/node/index.d.ts +11 -0
  96. package/dest/node/bb_backends/node/index.d.ts.map +1 -0
  97. package/dest/node/bb_backends/node/index.js +80 -0
  98. package/dest/node/bb_backends/node/native_pipe.d.ts +25 -0
  99. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -0
  100. package/dest/node/bb_backends/node/native_pipe.js +113 -0
  101. package/dest/node/bb_backends/node/native_shm.d.ts +28 -0
  102. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -0
  103. package/dest/node/bb_backends/node/native_shm.js +150 -0
  104. package/dest/node/bb_backends/node/native_socket.d.ts +34 -0
  105. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -0
  106. package/dest/node/bb_backends/node/native_socket.js +269 -0
  107. package/dest/node/bb_backends/node/platform.d.ts +27 -0
  108. package/dest/node/bb_backends/node/platform.d.ts.map +1 -0
  109. package/dest/node/bb_backends/node/platform.js +124 -0
  110. package/dest/node/bb_backends/sync_to_async_adapter.d.ts +15 -0
  111. package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  112. package/dest/node/bb_backends/sync_to_async_adapter.js +20 -0
  113. package/dest/node/bb_backends/wasm.d.ts +56 -0
  114. package/dest/node/bb_backends/wasm.d.ts.map +1 -0
  115. package/dest/node/bb_backends/wasm.js +90 -0
  116. package/dest/node/cbind/generate.js +2 -7
  117. package/dest/node/cbind/generated/api_types.d.ts +1167 -0
  118. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  119. package/dest/node/cbind/generated/api_types.js +1609 -47
  120. package/dest/node/cbind/generated/async.d.ts +38 -4
  121. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  122. package/dest/node/cbind/generated/async.js +327 -21
  123. package/dest/node/cbind/generated/sync.d.ts +39 -5
  124. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  125. package/dest/node/cbind/generated/sync.js +294 -21
  126. package/dest/node/cbind/schema_compiler.d.ts +2 -4
  127. package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
  128. package/dest/node/cbind/schema_compiler.js +74 -178
  129. package/dest/node/index.d.ts +2 -2
  130. package/dest/node/index.d.ts.map +1 -1
  131. package/dest/node/index.js +3 -3
  132. package/dest/node/serialize/index.d.ts +0 -1
  133. package/dest/node/serialize/index.d.ts.map +1 -1
  134. package/dest/node/serialize/index.js +1 -2
  135. package/dest/node/serialize/serialize.d.ts +0 -35
  136. package/dest/node/serialize/serialize.d.ts.map +1 -1
  137. package/dest/node/serialize/serialize.js +1 -68
  138. package/dest/node/types/fields.d.ts.map +1 -1
  139. package/dest/node/types/fields.js +3 -3
  140. package/dest/node/types/index.d.ts +0 -3
  141. package/dest/node/types/index.d.ts.map +1 -1
  142. package/dest/node/types/index.js +1 -4
  143. package/dest/node-cjs/barretenberg/backend.d.ts +1 -1
  144. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  145. package/dest/node-cjs/barretenberg/backend.js +20 -12
  146. package/dest/node-cjs/barretenberg/blake2s.test.js +19 -16
  147. package/dest/node-cjs/barretenberg/index.d.ts +44 -43
  148. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  149. package/dest/node-cjs/barretenberg/index.js +136 -84
  150. package/dest/node-cjs/barretenberg/pedersen.test.js +24 -17
  151. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +2 -0
  152. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  153. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +218 -0
  154. package/dest/node-cjs/barretenberg/poseidon.test.js +15 -15
  155. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  156. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  157. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  158. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  159. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  160. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  161. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  162. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  163. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  164. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +54 -13
  165. package/dest/node-cjs/barretenberg_wasm/index.test.js +11 -10
  166. package/dest/node-cjs/bb_backends/browser/index.d.ts +11 -0
  167. package/dest/node-cjs/bb_backends/browser/index.d.ts.map +1 -0
  168. package/dest/node-cjs/bb_backends/browser/index.js +43 -0
  169. package/dest/node-cjs/bb_backends/index.d.ts +45 -0
  170. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -0
  171. package/dest/node-cjs/bb_backends/index.js +18 -0
  172. package/dest/node-cjs/bb_backends/interface.d.ts +33 -0
  173. package/dest/node-cjs/bb_backends/interface.d.ts.map +1 -0
  174. package/dest/node-cjs/bb_backends/interface.js +3 -0
  175. package/dest/node-cjs/bb_backends/node/index.d.ts +11 -0
  176. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -0
  177. package/dest/node-cjs/bb_backends/node/index.js +84 -0
  178. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +25 -0
  179. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -0
  180. package/dest/node-cjs/bb_backends/node/native_pipe.js +117 -0
  181. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +28 -0
  182. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -0
  183. package/dest/node-cjs/bb_backends/node/native_shm.js +154 -0
  184. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +34 -0
  185. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -0
  186. package/dest/node-cjs/bb_backends/node/native_socket.js +274 -0
  187. package/dest/node-cjs/bb_backends/node/platform.d.ts +27 -0
  188. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -0
  189. package/dest/node-cjs/bb_backends/node/platform.js +131 -0
  190. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +15 -0
  191. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  192. package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +24 -0
  193. package/dest/node-cjs/bb_backends/wasm.d.ts +56 -0
  194. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -0
  195. package/dest/node-cjs/bb_backends/wasm.js +95 -0
  196. package/dest/node-cjs/cbind/generate.js +1 -6
  197. package/dest/node-cjs/cbind/generated/api_types.d.ts +1167 -0
  198. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  199. package/dest/node-cjs/cbind/generated/api_types.js +1747 -47
  200. package/dest/node-cjs/cbind/generated/async.d.ts +38 -4
  201. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  202. package/dest/node-cjs/cbind/generated/async.js +326 -20
  203. package/dest/node-cjs/cbind/generated/sync.d.ts +39 -5
  204. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  205. package/dest/node-cjs/cbind/generated/sync.js +293 -20
  206. package/dest/node-cjs/cbind/schema_compiler.d.ts +2 -4
  207. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
  208. package/dest/node-cjs/cbind/schema_compiler.js +74 -179
  209. package/dest/node-cjs/index.d.ts +2 -2
  210. package/dest/node-cjs/index.d.ts.map +1 -1
  211. package/dest/node-cjs/index.js +3 -3
  212. package/dest/node-cjs/serialize/index.d.ts +0 -1
  213. package/dest/node-cjs/serialize/index.d.ts.map +1 -1
  214. package/dest/node-cjs/serialize/index.js +1 -2
  215. package/dest/node-cjs/serialize/serialize.d.ts +0 -35
  216. package/dest/node-cjs/serialize/serialize.d.ts.map +1 -1
  217. package/dest/node-cjs/serialize/serialize.js +1 -79
  218. package/dest/node-cjs/types/fields.d.ts.map +1 -1
  219. package/dest/node-cjs/types/fields.js +2 -2
  220. package/dest/node-cjs/types/index.d.ts +0 -3
  221. package/dest/node-cjs/types/index.d.ts.map +1 -1
  222. package/dest/node-cjs/types/index.js +1 -4
  223. package/package.json +3 -4
  224. package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +2 -2
  225. package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +3 -3
  226. package/src/barretenberg/backend.ts +37 -32
  227. package/src/barretenberg/blake2s.test.ts +20 -21
  228. package/src/barretenberg/index.ts +136 -117
  229. package/src/barretenberg/pedersen.test.ts +23 -16
  230. package/src/barretenberg/poseidon.bench.test.ts +267 -0
  231. package/src/barretenberg/poseidon.test.ts +14 -14
  232. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +3 -3
  233. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +17 -9
  234. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +66 -15
  235. package/src/barretenberg_wasm/index.test.ts +12 -11
  236. package/src/bb_backends/browser/index.ts +50 -0
  237. package/src/bb_backends/index.ts +49 -0
  238. package/src/bb_backends/interface.ts +35 -0
  239. package/src/bb_backends/node/index.ts +94 -0
  240. package/src/bb_backends/node/native_pipe.ts +127 -0
  241. package/src/bb_backends/node/native_shm.ts +171 -0
  242. package/src/bb_backends/node/native_socket.ts +312 -0
  243. package/src/bb_backends/node/platform.ts +151 -0
  244. package/src/bb_backends/sync_to_async_adapter.ts +21 -0
  245. package/src/bb_backends/wasm.ts +110 -0
  246. package/src/cbind/README.md +1 -1
  247. package/src/cbind/generate.ts +0 -6
  248. package/src/cbind/schema_compiler.ts +131 -241
  249. package/src/index.ts +2 -1
  250. package/src/serialize/index.ts +0 -1
  251. package/src/serialize/serialize.ts +0 -82
  252. package/src/types/fields.ts +2 -2
  253. package/src/types/index.ts +0 -3
  254. package/dest/browser/barretenberg_api/index.d.ts +0 -109
  255. package/dest/browser/barretenberg_api/index.d.ts.map +0 -1
  256. package/dest/browser/barretenberg_api/index.js +0 -699
  257. package/dest/browser/cbind/generated/native.d.ts +0 -31
  258. package/dest/browser/cbind/generated/native.d.ts.map +0 -1
  259. package/dest/browser/cbind/generated/native.js +0 -234
  260. package/dest/browser/serialize/output_type.d.ts +0 -11
  261. package/dest/browser/serialize/output_type.d.ts.map +0 -1
  262. package/dest/browser/serialize/output_type.js +0 -44
  263. package/dest/browser/types/fixed_size_buffer.d.ts +0 -26
  264. package/dest/browser/types/fixed_size_buffer.d.ts.map +0 -1
  265. package/dest/browser/types/fixed_size_buffer.js +0 -51
  266. package/dest/browser/types/ptr.d.ts +0 -13
  267. package/dest/browser/types/ptr.d.ts.map +0 -1
  268. package/dest/browser/types/ptr.js +0 -19
  269. package/dest/browser/types/raw_buffer.d.ts +0 -3
  270. package/dest/browser/types/raw_buffer.d.ts.map +0 -1
  271. package/dest/browser/types/raw_buffer.js +0 -5
  272. package/dest/node/barretenberg/common.test.d.ts +0 -2
  273. package/dest/node/barretenberg/common.test.d.ts.map +0 -1
  274. package/dest/node/barretenberg/common.test.js +0 -20
  275. package/dest/node/barretenberg_api/index.d.ts +0 -109
  276. package/dest/node/barretenberg_api/index.d.ts.map +0 -1
  277. package/dest/node/barretenberg_api/index.js +0 -699
  278. package/dest/node/bindgen/function_declaration.d.ts +0 -11
  279. package/dest/node/bindgen/function_declaration.d.ts.map +0 -1
  280. package/dest/node/bindgen/function_declaration.js +0 -2
  281. package/dest/node/bindgen/index.d.ts +0 -2
  282. package/dest/node/bindgen/index.d.ts.map +0 -1
  283. package/dest/node/bindgen/index.js +0 -15
  284. package/dest/node/bindgen/mappings.d.ts +0 -4
  285. package/dest/node/bindgen/mappings.d.ts.map +0 -1
  286. package/dest/node/bindgen/mappings.js +0 -64
  287. package/dest/node/bindgen/rust.d.ts +0 -2
  288. package/dest/node/bindgen/rust.d.ts.map +0 -1
  289. package/dest/node/bindgen/rust.js +0 -43
  290. package/dest/node/bindgen/to_camel_case.d.ts +0 -2
  291. package/dest/node/bindgen/to_camel_case.d.ts.map +0 -1
  292. package/dest/node/bindgen/to_camel_case.js +0 -11
  293. package/dest/node/bindgen/typescript.d.ts +0 -2
  294. package/dest/node/bindgen/typescript.d.ts.map +0 -1
  295. package/dest/node/bindgen/typescript.js +0 -100
  296. package/dest/node/cbind/generated/native.d.ts +0 -31
  297. package/dest/node/cbind/generated/native.d.ts.map +0 -1
  298. package/dest/node/cbind/generated/native.js +0 -234
  299. package/dest/node/main.d.ts +0 -13
  300. package/dest/node/main.d.ts.map +0 -1
  301. package/dest/node/main.js +0 -459
  302. package/dest/node/serialize/output_type.d.ts +0 -11
  303. package/dest/node/serialize/output_type.d.ts.map +0 -1
  304. package/dest/node/serialize/output_type.js +0 -44
  305. package/dest/node/types/fixed_size_buffer.d.ts +0 -26
  306. package/dest/node/types/fixed_size_buffer.d.ts.map +0 -1
  307. package/dest/node/types/fixed_size_buffer.js +0 -51
  308. package/dest/node/types/ptr.d.ts +0 -13
  309. package/dest/node/types/ptr.d.ts.map +0 -1
  310. package/dest/node/types/ptr.js +0 -19
  311. package/dest/node/types/raw_buffer.d.ts +0 -3
  312. package/dest/node/types/raw_buffer.d.ts.map +0 -1
  313. package/dest/node/types/raw_buffer.js +0 -5
  314. package/dest/node-cjs/barretenberg/common.test.d.ts +0 -2
  315. package/dest/node-cjs/barretenberg/common.test.d.ts.map +0 -1
  316. package/dest/node-cjs/barretenberg/common.test.js +0 -22
  317. package/dest/node-cjs/barretenberg_api/index.d.ts +0 -109
  318. package/dest/node-cjs/barretenberg_api/index.d.ts.map +0 -1
  319. package/dest/node-cjs/barretenberg_api/index.js +0 -704
  320. package/dest/node-cjs/bindgen/function_declaration.d.ts +0 -11
  321. package/dest/node-cjs/bindgen/function_declaration.d.ts.map +0 -1
  322. package/dest/node-cjs/bindgen/function_declaration.js +0 -3
  323. package/dest/node-cjs/bindgen/index.d.ts +0 -2
  324. package/dest/node-cjs/bindgen/index.d.ts.map +0 -1
  325. package/dest/node-cjs/bindgen/index.js +0 -17
  326. package/dest/node-cjs/bindgen/mappings.d.ts +0 -4
  327. package/dest/node-cjs/bindgen/mappings.d.ts.map +0 -1
  328. package/dest/node-cjs/bindgen/mappings.js +0 -69
  329. package/dest/node-cjs/bindgen/rust.d.ts +0 -2
  330. package/dest/node-cjs/bindgen/rust.d.ts.map +0 -1
  331. package/dest/node-cjs/bindgen/rust.js +0 -47
  332. package/dest/node-cjs/bindgen/to_camel_case.d.ts +0 -2
  333. package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +0 -1
  334. package/dest/node-cjs/bindgen/to_camel_case.js +0 -14
  335. package/dest/node-cjs/bindgen/typescript.d.ts +0 -2
  336. package/dest/node-cjs/bindgen/typescript.d.ts.map +0 -1
  337. package/dest/node-cjs/bindgen/typescript.js +0 -104
  338. package/dest/node-cjs/cbind/generated/native.d.ts +0 -31
  339. package/dest/node-cjs/cbind/generated/native.d.ts.map +0 -1
  340. package/dest/node-cjs/cbind/generated/native.js +0 -238
  341. package/dest/node-cjs/main.d.ts +0 -13
  342. package/dest/node-cjs/main.d.ts.map +0 -1
  343. package/dest/node-cjs/main.js +0 -470
  344. package/dest/node-cjs/serialize/output_type.d.ts +0 -11
  345. package/dest/node-cjs/serialize/output_type.d.ts.map +0 -1
  346. package/dest/node-cjs/serialize/output_type.js +0 -51
  347. package/dest/node-cjs/types/fixed_size_buffer.d.ts +0 -26
  348. package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +0 -1
  349. package/dest/node-cjs/types/fixed_size_buffer.js +0 -57
  350. package/dest/node-cjs/types/ptr.d.ts +0 -13
  351. package/dest/node-cjs/types/ptr.d.ts.map +0 -1
  352. package/dest/node-cjs/types/ptr.js +0 -23
  353. package/dest/node-cjs/types/raw_buffer.d.ts +0 -3
  354. package/dest/node-cjs/types/raw_buffer.d.ts.map +0 -1
  355. package/dest/node-cjs/types/raw_buffer.js +0 -9
  356. package/src/barretenberg/common.test.ts +0 -23
  357. package/src/barretenberg_api/index.ts +0 -1216
  358. package/src/bindgen/function_declaration.ts +0 -11
  359. package/src/bindgen/index.ts +0 -17
  360. package/src/bindgen/mappings.ts +0 -67
  361. package/src/bindgen/rust.ts +0 -52
  362. package/src/bindgen/to_camel_case.ts +0 -10
  363. package/src/bindgen/typescript.ts +0 -116
  364. package/src/main.ts +0 -534
  365. package/src/serialize/output_type.ts +0 -53
  366. package/src/types/fixed_size_buffer.ts +0 -59
  367. package/src/types/ptr.ts +0 -20
  368. package/src/types/raw_buffer.ts +0 -3
@@ -0,0 +1,150 @@
1
+ import { createRequire } from 'module';
2
+ import { spawn } from 'child_process';
3
+ import { findNapiBinary, findPackageRoot } from './platform.js';
4
+ // Import the NAPI module
5
+ // The addon is built to the nodejs_module directory
6
+ const addonPath = findNapiBinary();
7
+ // Try loading, but don't throw if it doesn't exist (will be caught in constructor)
8
+ let addon = null;
9
+ try {
10
+ if (addonPath) {
11
+ const require = createRequire(findPackageRoot());
12
+ addon = require(addonPath);
13
+ }
14
+ }
15
+ catch (err) {
16
+ // Addon not built yet or not available
17
+ addon = null;
18
+ }
19
+ /**
20
+ * Synchronous shared memory backend that communicates with bb binary via shared memory.
21
+ * Uses NAPI module to interface with shared memory IPC.
22
+ *
23
+ * Architecture: bb acts as the SERVER, TypeScript is the CLIENT
24
+ * - bb creates the shared memory region
25
+ * - TypeScript connects via NAPI wrapper
26
+ *
27
+ * Protocol:
28
+ * - Handled internally by IpcClient (no manual length prefixes needed)
29
+ */
30
+ export class BarretenbergNativeShmSyncBackend {
31
+ constructor(process, client) {
32
+ this.process = process;
33
+ this.client = client;
34
+ }
35
+ /**
36
+ * Create and initialize a shared memory backend.
37
+ * @param bbBinaryPath Path to bb binary
38
+ * @param threads Optional number of threads
39
+ * @param maxClients Optional maximum concurrent clients (default: 1)
40
+ */
41
+ static async new(bbBinaryPath, threads, maxClients) {
42
+ if (!addon || !addon.MsgpackClient) {
43
+ throw new Error('Shared memory NAPI not available.');
44
+ }
45
+ // Create a unique shared memory name
46
+ const shmName = `bb-${process.pid}-${Date.now()}`;
47
+ // Default maxClients to 1 if not specified
48
+ const clientCount = maxClients ?? 1;
49
+ // Set HARDWARE_CONCURRENCY if threads specified
50
+ const env = threads !== undefined ? { ...process.env, HARDWARE_CONCURRENCY: threads.toString() } : process.env;
51
+ // Spawn bb process with shared memory mode
52
+ const args = [bbBinaryPath, 'msgpack', 'run', '--input', `${shmName}.shm`, '--max-clients', clientCount.toString()];
53
+ const bbProcess = spawn(findPackageRoot() + '/scripts/kill_wrapper.sh', args, {
54
+ stdio: ['ignore', 'ignore', 'ignore'],
55
+ env,
56
+ });
57
+ // Disconnect from event loop so process can exit. The kill wrapper will reap bb once parent (node) dies.
58
+ bbProcess.unref();
59
+ // Capture stderr for error diagnostics
60
+ // bbProcess.stderr?.on('data', (data: Buffer) => {
61
+ // stderrOutput += data.toString();
62
+ // });
63
+ // Track if process has exited
64
+ let processExited = false;
65
+ let exitError = null;
66
+ bbProcess.on('error', err => {
67
+ processExited = true;
68
+ exitError = new Error(`Native backend process error: ${err.message}`);
69
+ });
70
+ bbProcess.on('exit', (code, signal) => {
71
+ processExited = true;
72
+ if (code !== null && code !== 0) {
73
+ exitError = new Error(`Native backend process exited with code ${code}`);
74
+ }
75
+ else if (signal && signal !== 'SIGTERM') {
76
+ exitError = new Error(`Native backend process killed with signal ${signal}`);
77
+ }
78
+ });
79
+ // Wait for bb to create shared memory
80
+ // Retry connection every 100ms for up to 3 seconds
81
+ const retryInterval = 100; // ms
82
+ const timeout = 3000; // ms
83
+ const maxAttempts = Math.floor(timeout / retryInterval);
84
+ let client = null;
85
+ try {
86
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
87
+ // Check if bb process has exited before attempting connection
88
+ if (processExited) {
89
+ throw exitError || new Error('Native backend process exited unexpectedly during startup');
90
+ }
91
+ // Wait before attempting connection (except first attempt)
92
+ if (attempt > 0) {
93
+ await new Promise(resolve => setTimeout(resolve, retryInterval));
94
+ }
95
+ try {
96
+ // Create NAPI client with matching max_clients value
97
+ client = new addon.MsgpackClient(shmName, clientCount);
98
+ break; // Success!
99
+ }
100
+ catch (err) {
101
+ // Connection failed, will retry
102
+ if (attempt === maxAttempts - 1) {
103
+ // Last attempt failed - check one more time if process exited
104
+ if (processExited && exitError) {
105
+ throw exitError;
106
+ }
107
+ throw new Error(`Failed to connect to shared memory after ${timeout}ms: ${err.message}`);
108
+ }
109
+ }
110
+ }
111
+ if (!client) {
112
+ throw new Error('Failed to create client connection');
113
+ }
114
+ return new BarretenbergNativeShmSyncBackend(bbProcess, client);
115
+ }
116
+ finally {
117
+ // If we failed to connect, ensure the process is killed
118
+ // kill() returns false if process already exited, but doesn't throw
119
+ if (!client) {
120
+ bbProcess.kill('SIGKILL');
121
+ }
122
+ }
123
+ }
124
+ call(inputBuffer) {
125
+ try {
126
+ const responseBuffer = this.client.call(Buffer.from(inputBuffer));
127
+ return new Uint8Array(responseBuffer);
128
+ }
129
+ catch (err) {
130
+ throw new Error(`Shared memory call failed: ${err.message}`);
131
+ }
132
+ }
133
+ cleanup() {
134
+ if (this.client) {
135
+ try {
136
+ this.client.close();
137
+ }
138
+ catch (e) {
139
+ // Ignore errors during cleanup
140
+ }
141
+ }
142
+ }
143
+ destroy() {
144
+ this.cleanup();
145
+ this.process.kill('SIGTERM');
146
+ // Remove process event listeners to prevent hanging
147
+ this.process.removeAllListeners();
148
+ }
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3NobS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYl9iYWNrZW5kcy9ub2RlL25hdGl2ZV9zaG0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSx5QkFBeUI7QUFDekIsb0RBQW9EO0FBQ3BELE1BQU0sU0FBUyxHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQ25DLG1GQUFtRjtBQUNuRixJQUFJLEtBQUssR0FBUSxJQUFJLENBQUM7QUFDdEIsSUFBSSxDQUFDO0lBQ0gsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxlQUFlLEVBQUcsQ0FBQyxDQUFDO1FBQ2xELEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsQ0FBQztBQUNILENBQUM7QUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2IsdUNBQXVDO0lBQ3ZDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxnQ0FBZ0M7SUFJM0MsWUFBb0IsT0FBcUIsRUFBRSxNQUFXO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNkLFlBQW9CLEVBQ3BCLE9BQWdCLEVBQ2hCLFVBQW1CO1FBRW5CLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJ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
@@ -0,0 +1,34 @@
1
+ import { IMsgpackBackendAsync } from '../interface.js';
2
+ /**
3
+ * Asynchronous native backend that communicates with bb binary via Unix Domain Socket.
4
+ * Uses event-based I/O with a state machine to handle partial reads.
5
+ *
6
+ * Architecture: bb acts as the SERVER, TypeScript is the CLIENT
7
+ * - bb creates the socket and listens for connections
8
+ * - TypeScript waits for socket file to exist, then connects
9
+ *
10
+ * Protocol:
11
+ * - Request: 4-byte little-endian length + msgpack buffer
12
+ * - Response: 4-byte little-endian length + msgpack buffer
13
+ */
14
+ export declare class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsync {
15
+ private process;
16
+ private socket;
17
+ private socketPath;
18
+ private connectionPromise;
19
+ private connectionTimeout;
20
+ private pendingCallbacks;
21
+ private readingLength;
22
+ private lengthBuffer;
23
+ private lengthBytesRead;
24
+ private responseLength;
25
+ private responseBuffer;
26
+ private responseBytesRead;
27
+ constructor(bbBinaryPath: string, threads?: number);
28
+ private waitForSocketAndConnect;
29
+ private handleData;
30
+ call(inputBuffer: Uint8Array): Promise<Uint8Array>;
31
+ private cleanup;
32
+ destroy(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=native_socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native_socket.d.ts","sourceRoot":"","sources":["../../../../src/bb_backends/node/native_socket.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;;;;;;;;;GAWG;AACH,qBAAa,oCAAqC,YAAW,oBAAoB;IAC/E,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,iBAAiB,CAA+B;IAIxD,OAAO,CAAC,gBAAgB,CAGhB;IAGR,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;YA4FpC,uBAAuB;IAiErC,OAAO,CAAC,UAAU;IA8CZ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBxD,OAAO,CAAC,OAAO;IAiCT,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}
@@ -0,0 +1,269 @@
1
+ import { spawn } from 'child_process';
2
+ import * as net from 'net';
3
+ import * as fs from 'fs';
4
+ import * as os from 'os';
5
+ import * as path from 'path';
6
+ import { findPackageRoot } from './platform.js';
7
+ /**
8
+ * Asynchronous native backend that communicates with bb binary via Unix Domain Socket.
9
+ * Uses event-based I/O with a state machine to handle partial reads.
10
+ *
11
+ * Architecture: bb acts as the SERVER, TypeScript is the CLIENT
12
+ * - bb creates the socket and listens for connections
13
+ * - TypeScript waits for socket file to exist, then connects
14
+ *
15
+ * Protocol:
16
+ * - Request: 4-byte little-endian length + msgpack buffer
17
+ * - Response: 4-byte little-endian length + msgpack buffer
18
+ */
19
+ export class BarretenbergNativeSocketAsyncBackend {
20
+ constructor(bbBinaryPath, threads) {
21
+ this.socket = null;
22
+ this.connectionTimeout = null;
23
+ // Queue of pending callbacks for pipelined requests
24
+ // Responses come back in FIFO order, so we match them with queued callbacks
25
+ this.pendingCallbacks = [];
26
+ // State machine for reading responses
27
+ this.readingLength = true;
28
+ this.lengthBuffer = Buffer.alloc(4);
29
+ this.lengthBytesRead = 0;
30
+ this.responseLength = 0;
31
+ this.responseBuffer = null;
32
+ this.responseBytesRead = 0;
33
+ // Create a unique socket path in temp directory
34
+ this.socketPath = path.join(os.tmpdir(), `bb-${process.pid}-${Date.now()}.sock`);
35
+ // Ensure socket path doesn't already exist (cleanup from previous crashes)
36
+ if (fs.existsSync(this.socketPath)) {
37
+ fs.unlinkSync(this.socketPath);
38
+ }
39
+ let connectionResolve = null;
40
+ let connectionReject = null;
41
+ this.connectionPromise = new Promise((resolve, reject) => {
42
+ connectionResolve = resolve;
43
+ connectionReject = reject;
44
+ });
45
+ // Set HARDWARE_CONCURRENCY if threads specified
46
+ const env = threads !== undefined ? { ...process.env, HARDWARE_CONCURRENCY: threads.toString() } : process.env;
47
+ // Spawn bb process - it will create the socket server
48
+ const args = [bbBinaryPath, 'msgpack', 'run', '--input', this.socketPath];
49
+ this.process = spawn(findPackageRoot() + '/scripts/kill_wrapper.sh', args, {
50
+ stdio: ['ignore', 'ignore', 'ignore'],
51
+ env,
52
+ });
53
+ // Disconnect from event loop so process can exit. The kill wrapper will reap bb once parent (node) dies.
54
+ this.process.unref();
55
+ this.process.on('error', err => {
56
+ if (connectionReject) {
57
+ connectionReject(new Error(`Native backend process error: ${err.message}`));
58
+ connectionReject = null;
59
+ connectionResolve = null;
60
+ }
61
+ // Reject all pending callbacks
62
+ const error = new Error(`Native backend process error: ${err.message}`);
63
+ for (const callback of this.pendingCallbacks) {
64
+ callback.reject(error);
65
+ }
66
+ this.pendingCallbacks = [];
67
+ });
68
+ this.process.on('exit', (code, signal) => {
69
+ const errorMsg = code !== null && code !== 0
70
+ ? `Native backend process exited with code ${code}`
71
+ : signal && signal !== 'SIGTERM'
72
+ ? `Native backend process killed with signal ${signal}`
73
+ : 'Native backend process exited unexpectedly';
74
+ if (connectionReject) {
75
+ connectionReject(new Error(errorMsg));
76
+ connectionReject = null;
77
+ connectionResolve = null;
78
+ }
79
+ // Reject all pending callbacks
80
+ const error = new Error(errorMsg);
81
+ for (const callback of this.pendingCallbacks) {
82
+ callback.reject(error);
83
+ }
84
+ this.pendingCallbacks = [];
85
+ });
86
+ // Wait for bb to create socket file, then connect
87
+ this.waitForSocketAndConnect()
88
+ .then(() => {
89
+ if (connectionResolve) {
90
+ connectionResolve();
91
+ connectionResolve = null;
92
+ connectionReject = null;
93
+ }
94
+ })
95
+ .catch(err => {
96
+ if (connectionReject) {
97
+ connectionReject(err);
98
+ connectionReject = null;
99
+ connectionResolve = null;
100
+ }
101
+ });
102
+ // Set a timeout for connection
103
+ this.connectionTimeout = setTimeout(() => {
104
+ if (connectionReject) {
105
+ connectionReject(new Error('Timeout waiting for bb socket connection'));
106
+ connectionReject = null;
107
+ connectionResolve = null;
108
+ this.cleanup();
109
+ }
110
+ }, 5000);
111
+ }
112
+ async waitForSocketAndConnect() {
113
+ // Poll for socket file to exist (bb is creating it)
114
+ const startTime = Date.now();
115
+ while (!fs.existsSync(this.socketPath)) {
116
+ if (Date.now() - startTime > 5000) {
117
+ throw new Error('Timeout waiting for bb to create socket file');
118
+ }
119
+ await new Promise(resolve => setTimeout(resolve, 50));
120
+ }
121
+ // Additional check: ensure it's actually a socket
122
+ const stats = fs.statSync(this.socketPath);
123
+ if (!stats.isSocket()) {
124
+ throw new Error(`Path exists but is not a socket: ${this.socketPath}`);
125
+ }
126
+ // Connect to bb's socket server as a client
127
+ return new Promise((resolve, reject) => {
128
+ this.socket = net.connect(this.socketPath);
129
+ // Disable Nagle's algorithm for lower latency
130
+ this.socket.setNoDelay(true);
131
+ // Set up event handlers
132
+ this.socket.once('connect', () => {
133
+ this.socket.unref();
134
+ // Clear connection timeout on successful connection
135
+ if (this.connectionTimeout) {
136
+ clearTimeout(this.connectionTimeout);
137
+ this.connectionTimeout = null;
138
+ }
139
+ resolve();
140
+ });
141
+ this.socket.once('error', err => {
142
+ reject(new Error(`Failed to connect to bb socket: ${err.message}`));
143
+ });
144
+ // Set up data handler after connection is established
145
+ this.socket.on('data', (chunk) => {
146
+ this.handleData(chunk);
147
+ });
148
+ // Handle ongoing errors after initial connection
149
+ this.socket.on('error', err => {
150
+ // Reject all pending callbacks
151
+ const error = new Error(`Socket error: ${err.message}`);
152
+ for (const callback of this.pendingCallbacks) {
153
+ callback.reject(error);
154
+ }
155
+ this.pendingCallbacks = [];
156
+ });
157
+ this.socket.on('end', () => {
158
+ // Reject all pending callbacks
159
+ const error = new Error('Socket connection ended unexpectedly');
160
+ for (const callback of this.pendingCallbacks) {
161
+ callback.reject(error);
162
+ }
163
+ this.pendingCallbacks = [];
164
+ });
165
+ });
166
+ }
167
+ handleData(chunk) {
168
+ let offset = 0;
169
+ while (offset < chunk.length) {
170
+ if (this.readingLength) {
171
+ // Reading 4-byte length prefix
172
+ const bytesToCopy = Math.min(4 - this.lengthBytesRead, chunk.length - offset);
173
+ chunk.copy(this.lengthBuffer, this.lengthBytesRead, offset, offset + bytesToCopy);
174
+ this.lengthBytesRead += bytesToCopy;
175
+ offset += bytesToCopy;
176
+ if (this.lengthBytesRead === 4) {
177
+ // Length is complete, switch to reading data
178
+ this.responseLength = this.lengthBuffer.readUInt32LE(0);
179
+ this.responseBuffer = Buffer.alloc(this.responseLength);
180
+ this.responseBytesRead = 0;
181
+ this.readingLength = false;
182
+ }
183
+ }
184
+ else {
185
+ // Reading response data
186
+ const bytesToCopy = Math.min(this.responseLength - this.responseBytesRead, chunk.length - offset);
187
+ chunk.copy(this.responseBuffer, this.responseBytesRead, offset, offset + bytesToCopy);
188
+ this.responseBytesRead += bytesToCopy;
189
+ offset += bytesToCopy;
190
+ if (this.responseBytesRead === this.responseLength) {
191
+ // Response is complete - dequeue the next pending callback (FIFO)
192
+ const callback = this.pendingCallbacks.shift();
193
+ if (callback) {
194
+ callback.resolve(new Uint8Array(this.responseBuffer));
195
+ }
196
+ else {
197
+ // This shouldn't happen - response without a pending request
198
+ console.warn('Received response but no pending callback');
199
+ }
200
+ // Reset state for next message
201
+ this.readingLength = true;
202
+ this.lengthBytesRead = 0;
203
+ this.responseLength = 0;
204
+ this.responseBuffer = null;
205
+ this.responseBytesRead = 0;
206
+ }
207
+ }
208
+ }
209
+ }
210
+ async call(inputBuffer) {
211
+ // Wait for connection to be established
212
+ await this.connectionPromise;
213
+ if (!this.socket) {
214
+ throw new Error('Socket not connected');
215
+ }
216
+ return new Promise((resolve, reject) => {
217
+ // Enqueue this promise's callbacks (FIFO order)
218
+ this.pendingCallbacks.push({ resolve, reject });
219
+ // Write request: 4-byte little-endian length + msgpack data
220
+ // Socket will buffer these if needed, maintaining order
221
+ const lengthBuf = Buffer.alloc(4);
222
+ lengthBuf.writeUInt32LE(inputBuffer.length, 0);
223
+ this.socket.write(lengthBuf);
224
+ this.socket.write(inputBuffer);
225
+ });
226
+ }
227
+ cleanup() {
228
+ // Reject any remaining pending callbacks
229
+ const error = new Error('Backend connection closed');
230
+ for (const callback of this.pendingCallbacks) {
231
+ callback.reject(error);
232
+ }
233
+ this.pendingCallbacks = [];
234
+ try {
235
+ // Remove all event listeners to prevent hanging
236
+ if (this.socket) {
237
+ this.socket.removeAllListeners();
238
+ // Unref so socket doesn't keep event loop alive
239
+ // this.socket.unref();
240
+ this.socket.destroy();
241
+ }
242
+ }
243
+ catch (e) {
244
+ // Ignore errors during cleanup
245
+ }
246
+ // Clear connection timeout if still pending
247
+ if (this.connectionTimeout) {
248
+ clearTimeout(this.connectionTimeout);
249
+ this.connectionTimeout = null;
250
+ }
251
+ // Remove process event listeners and unref to not block event loop
252
+ this.process.removeAllListeners();
253
+ // this.process.unref();
254
+ // Don't try to unlink socket - bb owns it and will clean it up
255
+ }
256
+ async destroy() {
257
+ // Cleanup first (closes socket, unrefs everything)
258
+ this.cleanup();
259
+ // Send SIGTERM for graceful shutdown
260
+ // Process is unref'd so won't block event loop - just kill and return
261
+ try {
262
+ this.process.kill('SIGTERM');
263
+ }
264
+ catch (e) {
265
+ // Already dead
266
+ }
267
+ }
268
+ }
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3NvY2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYl9iYWNrZW5kcy9ub2RlL25hdGl2ZV9zb2NrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDM0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxvQ0FBb0M7SUFzQi9DLFlBQVksWUFBb0IsRUFBRSxPQUFnQjtRQXBCMUMsV0FBTSxHQUFzQixJQUFJLENBQUM7UUFHakMsc0JBQWlCLEdBQTBCLElBQUksQ0FBQztRQUV4RCxvREFBb0Q7UUFDcEQsNEVBQTRFO1FBQ3BFLHFCQUFnQixHQUduQixFQUFFLENBQUM7UUFFUixzQ0FBc0M7UUFDOUIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsaUJBQVksR0FBVyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUNyQyxzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFHcEMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFF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
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Find package root by climbing directory tree until package.json is found.
3
+ * @param startDir Starting directory to search from
4
+ * @returns Absolute path to package root, or null if not found
5
+ */
6
+ export declare function findPackageRoot(): string | null;
7
+ /**
8
+ * Supported platform/architecture combinations.
9
+ */
10
+ export type Platform = 'x86_64-linux' | 'x86_64-darwin' | 'aarch64-linux' | 'aarch64-darwin';
11
+ /**
12
+ * Detect the current platform and architecture.
13
+ * @returns Platform identifier or null if unsupported
14
+ */
15
+ export declare function detectPlatform(): Platform | null;
16
+ /**
17
+ * Find the bb binary for the native backend.
18
+ * @param customPath Optional custom path to bb binary (overrides automatic detection)
19
+ * @returns Absolute path to bb binary, or null if not found
20
+ *
21
+ * Search order:
22
+ * 1. If customPath is provided and exists, return it
23
+ * 2. Otherwise search in <package-root>/build/<platform>/bb
24
+ */
25
+ export declare function findBbBinary(customPath?: string): string | null;
26
+ export declare function findNapiBinary(customPath?: string): string | null;
27
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../src/bb_backends/node/platform.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAa/C;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAY7F;;;GAGG;AACH,wBAAgB,cAAc,IAAI,QAAQ,GAAG,IAAI,CAkBhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiC/D;AAED,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCjE"}
@@ -0,0 +1,124 @@
1
+ import * as path from 'path';
2
+ import * as fs from 'fs';
3
+ import { fileURLToPath } from 'url';
4
+ function getCurrentDir() {
5
+ if (typeof __dirname !== 'undefined') {
6
+ return __dirname;
7
+ }
8
+ else {
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ // @ts-ignore
11
+ return path.dirname(fileURLToPath(import.meta.url));
12
+ }
13
+ }
14
+ /**
15
+ * Find package root by climbing directory tree until package.json is found.
16
+ * @param startDir Starting directory to search from
17
+ * @returns Absolute path to package root, or null if not found
18
+ */
19
+ export function findPackageRoot() {
20
+ let currentDir = getCurrentDir();
21
+ const root = path.parse(currentDir).root;
22
+ while (currentDir !== root) {
23
+ const packageJsonPath = path.join(currentDir, 'package.json');
24
+ if (fs.existsSync(packageJsonPath)) {
25
+ return currentDir;
26
+ }
27
+ currentDir = path.dirname(currentDir);
28
+ }
29
+ return null;
30
+ }
31
+ /**
32
+ * Map from Platform to build directory name.
33
+ */
34
+ const PLATFORM_TO_BUILD_DIR = {
35
+ 'x86_64-linux': 'amd64-linux',
36
+ 'x86_64-darwin': 'amd64-macos',
37
+ 'aarch64-linux': 'arm64-linux',
38
+ 'aarch64-darwin': 'arm64-macos',
39
+ };
40
+ /**
41
+ * Detect the current platform and architecture.
42
+ * @returns Platform identifier or null if unsupported
43
+ */
44
+ export function detectPlatform() {
45
+ const arch = process.arch; // 'x64' | 'arm64' | ...
46
+ const platform = process.platform; // 'linux' | 'darwin' | 'win32' | ...
47
+ if (arch === 'x64' && platform === 'linux') {
48
+ return 'x86_64-linux';
49
+ }
50
+ if (arch === 'x64' && platform === 'darwin') {
51
+ return 'x86_64-darwin';
52
+ }
53
+ if (arch === 'arm64' && platform === 'linux') {
54
+ return 'aarch64-linux';
55
+ }
56
+ if (arch === 'arm64' && platform === 'darwin') {
57
+ return 'aarch64-darwin';
58
+ }
59
+ return null;
60
+ }
61
+ /**
62
+ * Find the bb binary for the native backend.
63
+ * @param customPath Optional custom path to bb binary (overrides automatic detection)
64
+ * @returns Absolute path to bb binary, or null if not found
65
+ *
66
+ * Search order:
67
+ * 1. If customPath is provided and exists, return it
68
+ * 2. Otherwise search in <package-root>/build/<platform>/bb
69
+ */
70
+ export function findBbBinary(customPath) {
71
+ // Check custom path first if provided
72
+ if (customPath) {
73
+ if (fs.existsSync(customPath)) {
74
+ return path.resolve(customPath);
75
+ }
76
+ // Custom path provided but doesn't exist - return null
77
+ return null;
78
+ }
79
+ // Automatic detection
80
+ const platform = detectPlatform();
81
+ if (!platform) {
82
+ return null;
83
+ }
84
+ const buildDir = PLATFORM_TO_BUILD_DIR[platform];
85
+ // Get package root by climbing directory tree to find package.json
86
+ const packageRoot = findPackageRoot();
87
+ if (!packageRoot) {
88
+ return null;
89
+ }
90
+ // Check in build/<platform>/bb
91
+ const bbPath = path.join(packageRoot, 'build', buildDir, 'bb');
92
+ if (fs.existsSync(bbPath)) {
93
+ return bbPath;
94
+ }
95
+ return null;
96
+ }
97
+ export function findNapiBinary(customPath) {
98
+ // Check custom path first if provided
99
+ if (customPath) {
100
+ if (fs.existsSync(customPath)) {
101
+ return path.resolve(customPath);
102
+ }
103
+ // Custom path provided but doesn't exist - return null
104
+ return null;
105
+ }
106
+ // Automatic detection
107
+ const platform = detectPlatform();
108
+ if (!platform) {
109
+ return null;
110
+ }
111
+ const buildDir = PLATFORM_TO_BUILD_DIR[platform];
112
+ // Get package root by climbing directory tree to find package.json
113
+ const packageRoot = findPackageRoot();
114
+ if (!packageRoot) {
115
+ return null;
116
+ }
117
+ // Check in build/<platform>/nodejs_module.node
118
+ const bbPath = path.join(packageRoot, 'build', buildDir, 'nodejs_module.node');
119
+ if (fs.existsSync(bbPath)) {
120
+ return bbPath;
121
+ }
122
+ return null;
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmJfYmFja2VuZHMvbm9kZS9wbGF0Zm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXBDLFNBQVMsYUFBYTtJQUNwQixJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7U0FBTSxDQUFDO1FBQ04sNkRBQTZEO1FBQzdELGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQUM3QixJQUFJLFVBQVUsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUV6QyxPQUFPLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMzQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM5RCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQU9EOztHQUVHO0FBQ0gsTUFBTSxx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
@@ -0,0 +1,15 @@
1
+ import { IMsgpackBackendSync, IMsgpackBackendAsync } from './interface.js';
2
+ /**
3
+ * Adapter that wraps a synchronous backend to provide an async interface.
4
+ * The sync backend's blocking calls are simply wrapped in Promise.resolve().
5
+ *
6
+ * This is useful for backends like shared memory where the call is actually
7
+ * synchronous but we want to use it with the async API.
8
+ */
9
+ export declare class SyncToAsyncAdapter implements IMsgpackBackendAsync {
10
+ private syncBackend;
11
+ constructor(syncBackend: IMsgpackBackendSync);
12
+ call(inputBuffer: Uint8Array): Promise<Uint8Array>;
13
+ destroy(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=sync_to_async_adapter.d.ts.map