@aztec/bb.js 0.0.1-alpha.7 → 0.0.1-fake-ceab37513c

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 (227) hide show
  1. package/README.md +69 -32
  2. package/package.json +56 -45
  3. package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +156 -0
  4. package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +40 -0
  5. package/src/barretenberg/backend.ts +378 -0
  6. package/src/barretenberg/blake2s.test.ts +70 -0
  7. package/src/{barretenberg_api → barretenberg}/common.test.ts +7 -5
  8. package/src/barretenberg/index.ts +204 -0
  9. package/src/barretenberg/pedersen.test.ts +62 -0
  10. package/src/barretenberg/poseidon.test.ts +39 -0
  11. package/src/barretenberg_api/index.ts +982 -415
  12. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +138 -0
  13. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +11 -0
  14. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +13 -0
  15. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +21 -0
  16. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +19 -0
  17. package/src/{barretenberg_binder/heap_allocator_sync.ts → barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts} +20 -17
  18. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +167 -0
  19. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +11 -0
  20. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +13 -0
  21. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +21 -0
  22. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +19 -0
  23. package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +47 -0
  24. package/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts +3 -0
  25. package/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts +3 -0
  26. package/src/barretenberg_wasm/fetch_code/browser/index.ts +34 -0
  27. package/src/barretenberg_wasm/fetch_code/index.ts +1 -0
  28. package/src/barretenberg_wasm/fetch_code/node/index.ts +34 -0
  29. package/src/barretenberg_wasm/fetch_code/wasm-module.d.ts +4 -0
  30. package/src/barretenberg_wasm/helpers/browser/index.ts +47 -0
  31. package/src/barretenberg_wasm/helpers/index.ts +1 -0
  32. package/src/barretenberg_wasm/{node → helpers/node}/index.ts +24 -15
  33. package/src/barretenberg_wasm/index.test.ts +45 -0
  34. package/src/barretenberg_wasm/index.ts +22 -1
  35. package/src/benchmark/index.ts +26 -0
  36. package/src/benchmark/timer.ts +45 -0
  37. package/src/bigint-array/index.ts +39 -17
  38. package/src/bindgen/index.ts +2 -2
  39. package/src/bindgen/mappings.ts +3 -2
  40. package/src/bindgen/typescript.ts +50 -25
  41. package/src/cbind/README.md +1 -0
  42. package/src/cbind/generate.ts +89 -0
  43. package/src/cbind/schema_compiler.ts +833 -0
  44. package/src/crs/browser/cached_net_crs.ts +41 -1
  45. package/src/crs/browser/index.ts +1 -1
  46. package/src/crs/index.ts +1 -1
  47. package/src/crs/net_crs.ts +114 -19
  48. package/src/crs/node/index.ts +96 -26
  49. package/src/index.html +1 -1
  50. package/src/index.ts +13 -5
  51. package/src/log/browser/index.ts +35 -0
  52. package/src/log/index.ts +1 -0
  53. package/src/log/node/index.ts +52 -0
  54. package/src/log/types.ts +6 -0
  55. package/src/main.ts +391 -168
  56. package/src/proof/index.ts +94 -0
  57. package/src/random/browser/index.ts +1 -1
  58. package/src/retry/index.ts +50 -0
  59. package/src/serialize/buffer_reader.ts +4 -1
  60. package/src/types/fields.ts +46 -18
  61. package/src/types/point.ts +4 -1
  62. package/dest/async_map/index.d.ts +0 -10
  63. package/dest/async_map/index.d.ts.map +0 -1
  64. package/dest/async_map/index.js +0 -16
  65. package/dest/barretenberg-threads.wasm +0 -0
  66. package/dest/barretenberg.wasm +0 -0
  67. package/dest/barretenberg_api/blake2s.test.d.ts +0 -2
  68. package/dest/barretenberg_api/blake2s.test.d.ts.map +0 -1
  69. package/dest/barretenberg_api/blake2s.test.js +0 -30
  70. package/dest/barretenberg_api/common.test.d.ts +0 -2
  71. package/dest/barretenberg_api/common.test.d.ts.map +0 -1
  72. package/dest/barretenberg_api/common.test.js +0 -18
  73. package/dest/barretenberg_api/index.d.ts +0 -103
  74. package/dest/barretenberg_api/index.d.ts.map +0 -1
  75. package/dest/barretenberg_api/index.js +0 -379
  76. package/dest/barretenberg_api/pedersen.test.d.ts +0 -2
  77. package/dest/barretenberg_api/pedersen.test.d.ts.map +0 -1
  78. package/dest/barretenberg_api/pedersen.test.js +0 -69
  79. package/dest/barretenberg_api/schnorr.test.d.ts +0 -2
  80. package/dest/barretenberg_api/schnorr.test.d.ts.map +0 -1
  81. package/dest/barretenberg_api/schnorr.test.js +0 -113
  82. package/dest/barretenberg_binder/heap_allocator.d.ts +0 -22
  83. package/dest/barretenberg_binder/heap_allocator.d.ts.map +0 -1
  84. package/dest/barretenberg_binder/heap_allocator.js +0 -59
  85. package/dest/barretenberg_binder/heap_allocator_sync.d.ts +0 -22
  86. package/dest/barretenberg_binder/heap_allocator_sync.d.ts.map +0 -1
  87. package/dest/barretenberg_binder/heap_allocator_sync.js +0 -58
  88. package/dest/barretenberg_binder/index.d.ts +0 -32
  89. package/dest/barretenberg_binder/index.d.ts.map +0 -1
  90. package/dest/barretenberg_binder/index.js +0 -73
  91. package/dest/barretenberg_wasm/barretenberg_wasm.d.ts +0 -50
  92. package/dest/barretenberg_wasm/barretenberg_wasm.d.ts.map +0 -1
  93. package/dest/barretenberg_wasm/barretenberg_wasm.js +0 -212
  94. package/dest/barretenberg_wasm/barretenberg_wasm.test.d.ts +0 -2
  95. package/dest/barretenberg_wasm/barretenberg_wasm.test.d.ts.map +0 -1
  96. package/dest/barretenberg_wasm/barretenberg_wasm.test.js +0 -43
  97. package/dest/barretenberg_wasm/browser/index.d.ts +0 -8
  98. package/dest/barretenberg_wasm/browser/index.d.ts.map +0 -1
  99. package/dest/barretenberg_wasm/browser/index.js +0 -26
  100. package/dest/barretenberg_wasm/browser/worker.d.ts +0 -2
  101. package/dest/barretenberg_wasm/browser/worker.d.ts.map +0 -1
  102. package/dest/barretenberg_wasm/browser/worker.js +0 -11
  103. package/dest/barretenberg_wasm/index.d.ts +0 -2
  104. package/dest/barretenberg_wasm/index.d.ts.map +0 -1
  105. package/dest/barretenberg_wasm/index.js +0 -2
  106. package/dest/barretenberg_wasm/node/index.d.ts +0 -17
  107. package/dest/barretenberg_wasm/node/index.d.ts.map +0 -1
  108. package/dest/barretenberg_wasm/node/index.js +0 -40
  109. package/dest/barretenberg_wasm/node/node_endpoint.d.ts +0 -8
  110. package/dest/barretenberg_wasm/node/node_endpoint.d.ts.map +0 -1
  111. package/dest/barretenberg_wasm/node/node_endpoint.js +0 -28
  112. package/dest/barretenberg_wasm/node/worker.d.ts +0 -2
  113. package/dest/barretenberg_wasm/node/worker.d.ts.map +0 -1
  114. package/dest/barretenberg_wasm/node/worker.js +0 -9
  115. package/dest/barretenberg_wasm.js +0 -2
  116. package/dest/barretenberg_wasm.js.LICENSE.txt +0 -5
  117. package/dest/bigint-array/index.d.ts +0 -3
  118. package/dest/bigint-array/index.d.ts.map +0 -1
  119. package/dest/bigint-array/index.js +0 -21
  120. package/dest/bindgen/function_declaration.d.ts +0 -11
  121. package/dest/bindgen/function_declaration.d.ts.map +0 -1
  122. package/dest/bindgen/function_declaration.js +0 -2
  123. package/dest/bindgen/index.d.ts +0 -2
  124. package/dest/bindgen/index.d.ts.map +0 -1
  125. package/dest/bindgen/index.js +0 -15
  126. package/dest/bindgen/mappings.d.ts +0 -4
  127. package/dest/bindgen/mappings.d.ts.map +0 -1
  128. package/dest/bindgen/mappings.js +0 -63
  129. package/dest/bindgen/rust.d.ts +0 -2
  130. package/dest/bindgen/rust.d.ts.map +0 -1
  131. package/dest/bindgen/rust.js +0 -43
  132. package/dest/bindgen/to_camel_case.d.ts +0 -2
  133. package/dest/bindgen/to_camel_case.d.ts.map +0 -1
  134. package/dest/bindgen/to_camel_case.js +0 -11
  135. package/dest/bindgen/typescript.d.ts +0 -2
  136. package/dest/bindgen/typescript.d.ts.map +0 -1
  137. package/dest/bindgen/typescript.js +0 -80
  138. package/dest/crs/browser/cached_net_crs.d.ts +0 -25
  139. package/dest/crs/browser/cached_net_crs.d.ts.map +0 -1
  140. package/dest/crs/browser/cached_net_crs.js +0 -54
  141. package/dest/crs/browser/index.d.ts +0 -2
  142. package/dest/crs/browser/index.d.ts.map +0 -1
  143. package/dest/crs/browser/index.js +0 -2
  144. package/dest/crs/index.d.ts +0 -2
  145. package/dest/crs/index.d.ts.map +0 -1
  146. package/dest/crs/index.js +0 -2
  147. package/dest/crs/net_crs.d.ts +0 -36
  148. package/dest/crs/net_crs.d.ts.map +0 -1
  149. package/dest/crs/net_crs.js +0 -59
  150. package/dest/crs/node/ignition_files_crs.d.ts +0 -37
  151. package/dest/crs/node/ignition_files_crs.d.ts.map +0 -1
  152. package/dest/crs/node/ignition_files_crs.js +0 -51
  153. package/dest/crs/node/index.d.ts +0 -21
  154. package/dest/crs/node/index.d.ts.map +0 -1
  155. package/dest/crs/node/index.js +0 -54
  156. package/dest/examples/simple.rawtest.d.ts +0 -2
  157. package/dest/examples/simple.rawtest.d.ts.map +0 -1
  158. package/dest/examples/simple.rawtest.js +0 -29
  159. package/dest/examples/simple.test.d.ts +0 -2
  160. package/dest/examples/simple.test.d.ts.map +0 -1
  161. package/dest/examples/simple.test.js +0 -22
  162. package/dest/factory/index.d.ts +0 -21
  163. package/dest/factory/index.d.ts.map +0 -1
  164. package/dest/factory/index.js +0 -34
  165. package/dest/index.d.ts +0 -6
  166. package/dest/index.d.ts.map +0 -1
  167. package/dest/index.html +0 -1
  168. package/dest/index.js +0 -6
  169. package/dest/main.d.ts +0 -10
  170. package/dest/main.d.ts.map +0 -1
  171. package/dest/main.js +0 -275
  172. package/dest/random/browser/index.d.ts +0 -2
  173. package/dest/random/browser/index.d.ts.map +0 -1
  174. package/dest/random/browser/index.js +0 -31
  175. package/dest/random/index.d.ts +0 -2
  176. package/dest/random/index.d.ts.map +0 -1
  177. package/dest/random/index.js +0 -2
  178. package/dest/random/node/index.d.ts +0 -2
  179. package/dest/random/node/index.d.ts.map +0 -1
  180. package/dest/random/node/index.js +0 -5
  181. package/dest/serialize/buffer_reader.d.ts +0 -28
  182. package/dest/serialize/buffer_reader.d.ts.map +0 -1
  183. package/dest/serialize/buffer_reader.js +0 -66
  184. package/dest/serialize/index.d.ts +0 -4
  185. package/dest/serialize/index.d.ts.map +0 -1
  186. package/dest/serialize/index.js +0 -4
  187. package/dest/serialize/output_type.d.ts +0 -11
  188. package/dest/serialize/output_type.d.ts.map +0 -1
  189. package/dest/serialize/output_type.js +0 -44
  190. package/dest/serialize/serialize.d.ts +0 -53
  191. package/dest/serialize/serialize.d.ts.map +0 -1
  192. package/dest/serialize/serialize.js +0 -139
  193. package/dest/simple_test.js +0 -2
  194. package/dest/simple_test.js.LICENSE.txt +0 -14
  195. package/dest/types/fields.d.ts +0 -33
  196. package/dest/types/fields.d.ts.map +0 -1
  197. package/dest/types/fields.js +0 -86
  198. package/dest/types/fixed_size_buffer.d.ts +0 -26
  199. package/dest/types/fixed_size_buffer.d.ts.map +0 -1
  200. package/dest/types/fixed_size_buffer.js +0 -54
  201. package/dest/types/index.d.ts +0 -6
  202. package/dest/types/index.d.ts.map +0 -1
  203. package/dest/types/index.js +0 -6
  204. package/dest/types/point.d.ts +0 -17
  205. package/dest/types/point.d.ts.map +0 -1
  206. package/dest/types/point.js +0 -32
  207. package/dest/types/ptr.d.ts +0 -13
  208. package/dest/types/ptr.d.ts.map +0 -1
  209. package/dest/types/ptr.js +0 -20
  210. package/dest/types/raw_buffer.d.ts +0 -3
  211. package/dest/types/raw_buffer.d.ts.map +0 -1
  212. package/dest/types/raw_buffer.js +0 -5
  213. package/src/barretenberg_api/blake2s.test.ts +0 -39
  214. package/src/barretenberg_api/pedersen.test.ts +0 -84
  215. package/src/barretenberg_api/schnorr.test.ts +0 -169
  216. package/src/barretenberg_binder/heap_allocator.ts +0 -62
  217. package/src/barretenberg_binder/index.ts +0 -76
  218. package/src/barretenberg_wasm/barretenberg_wasm.test.ts +0 -52
  219. package/src/barretenberg_wasm/barretenberg_wasm.ts +0 -246
  220. package/src/barretenberg_wasm/browser/index.ts +0 -32
  221. package/src/barretenberg_wasm/browser/worker.ts +0 -13
  222. package/src/barretenberg_wasm/node/worker.ts +0 -10
  223. package/src/crs/node/ignition_files_crs.ts +0 -60
  224. package/src/examples/simple.rawtest.ts +0 -37
  225. package/src/examples/simple.test.ts +0 -27
  226. package/src/factory/index.ts +0 -36
  227. /package/src/barretenberg_wasm/{node → helpers/node}/node_endpoint.ts +0 -0
package/README.md CHANGED
@@ -8,22 +8,25 @@ project structures.
8
8
  Max circuit size is 2^19 gates (524,288). This is due to the underlying WASM 4GB memory limit. This should improve
9
9
  with future proving systems, and/or introduction of wasm64.
10
10
 
11
- If running from terminal, or within browser where you can set shared memory COOP/COEP headers, multithreading is enabled.
11
+ If running from node, or within browser where you can set shared memory COOP/COEP headers, multithreading is enabled.
12
12
  Note there are two independent WASM builds, one with threading enabled and one without. This is because the shared
13
13
  memory flag is set within the WASM itself. If you're running in a context where you can't have shared memory, we want
14
14
  to fallback to single threaded performance.
15
15
 
16
- Performance for 2^19 (small witness generation phase):
16
+ Table represents time in ms to build circuit and proof for each test on n threads.
17
+ Ignores proving key construction.
17
18
 
18
- - 16 core (not hyperthreads) x86: ~13s.
19
- - 10 core M1 Mac Pro: ~18s.
20
-
21
- Linear scaling was observed up to 32 cores.
22
-
23
- Witness generation phase is not multithreaded, and an interesting 512k circuit can take ~12s. This results in:
24
-
25
- - 16 core (not hyperthreads) x86: ~26s.
26
- - 10 core M1 Mac Pro: (TBD)
19
+ ```
20
+ +--------------------------+------------+---------------+-----------+-----------+-----------+-----------+-----------+
21
+ | Test | Gate Count | Subgroup Size | 1 | 4 | 16 | 32 | 64 |
22
+ +--------------------------+------------+---------------+-----------+-----------+-----------+-----------+-----------+
23
+ | sha256 | 38799 | 65536 | 18764 | 5116 | 1854 | 1524 | 1635 |
24
+ | ecdsa_secp256k1 | 41049 | 65536 | 19129 | 5595 | 2255 | 2097 | 2166 |
25
+ | ecdsa_secp256r1 | 67331 | 131072 | 38815 | 11257 | 4744 | 3633 | 3702 |
26
+ | schnorr | 33740 | 65536 | 18649 | 5244 | 2019 | 1498 | 1702 |
27
+ | double_verify_proof | 505513 | 524288 | 149652 | 45702 | 20811 | 16979 | 15679 |
28
+ +--------------------------+------------+---------------+-----------+-----------+-----------+-----------+-----------+
29
+ ```
27
30
 
28
31
  ## Using as a standalone binary
29
32
 
@@ -32,10 +35,10 @@ Witness generation phase is not multithreaded, and an interesting 512k circuit c
32
35
  To install the package globally for running as a terminal application:
33
36
 
34
37
  ```
35
- npm install -g @aztec/bb.js@alpha
38
+ npm install -g @aztec/bb.js
36
39
  ```
37
40
 
38
- This will install `bb.js` into your path.
41
+ Assuming `$(npm prefix -g)/bin` is in your `PATH`, you can now run the command `bb.js`.
39
42
 
40
43
  ### Usage
41
44
 
@@ -57,7 +60,7 @@ Commands:
57
60
  contract [options] Output solidity verification key contract.
58
61
  write_vk [options] Output verification key.
59
62
  proof_as_fields [options] Return the proof as fields elements
60
- vk_as_fields [options] Return the verifiation key represented as fields elements. Also return the verification key hash.
63
+ vk_as_fields [options] Return the verification key represented as field elements. Also return the verification key hash.
61
64
  help [command] display help for command
62
65
  ```
63
66
 
@@ -68,53 +71,87 @@ Commands:
68
71
  To install as a package to be used as a library:
69
72
 
70
73
  ```
71
- npm install @aztec/bb.js@alpha
74
+ npm install @aztec/bb.js
72
75
  ```
73
76
 
74
77
  or with yarn
75
78
 
76
79
  ```
77
- yarn add @aztec/bb.js@alpha
80
+ yarn add @aztec/bb.js
78
81
  ```
79
82
 
80
83
  ### Usage
81
84
 
82
- To create a multithreaded version of the API:
85
+ To create the API and do a blake2s hash:
83
86
 
84
87
  ```typescript
85
- const api = await newBarretenbergApiAsync(/* num_threads */);
86
- // Use.
88
+ import { Crs, Barretenberg, RawBuffer } from './index.js';
89
+
90
+ const api = await Barretenberg.new(/* num_threads */ { threads: 1 });
87
91
  const input = Buffer.from('hello world!');
88
92
  const result = await api.blake2s(input);
89
93
  await api.destroy();
90
94
  ```
91
95
 
92
- All methods are asynchronous. If no threads are specified, will default to number of cores with a maximum of 16.
96
+ All methods are asynchronous. If no threads are specified, will default to number of cores with a maximum of 32.
93
97
  If `1` is specified, fallback to non multi-threaded wasm that doesn't need shared memory.
94
98
 
95
- You can also create a synchronous version of the api that also has no multi-threading. This is only useful in the
96
- browser if you don't call any multi-threaded functions. It's probably best to just always use async version of the api
97
- unless you're really trying to avoid the small overhead of worker communication.
99
+ See `src/main.ts` for larger example of how to use.
100
+
101
+ ### Browser Context
102
+
103
+ It's recommended to use a dynamic import. This allows the developer to pick the time at which the package (several MB
104
+ in size) is loaded and keeps page load times responsive.
98
105
 
99
106
  ```typescript
100
- const api = await newBarretenbergApiSync();
101
- // Use.
102
- const input = Buffer.from('hello world!');
103
- const result = api.blake2s(input);
104
- await api.destroy();
107
+ const { Barretenberg, RawBuffer, Crs } = await import('@aztec/bb.js');
108
+ ```
109
+
110
+ ### Multithreading in browser
111
+
112
+ Multithreading in bb.js requires [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) to be enabled. It is only enabled in browsers if COOP and COEP headers are set by the server. Read more [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements).
113
+
114
+ You can configure your server to set these headers for pages that perform proof generation. See [this example project](https://github.com/saleel/gitclaim/blob/main/app/next.config.mjs#L48-L67) that implements multi-threaded browser proving, which contains the below Next.js config:
115
+
116
+ ```typescript
117
+ {
118
+ ...
119
+ async headers() {
120
+ return [
121
+ {
122
+ source: '/:path*',
123
+ headers: [
124
+ { key: 'Cross-Origin-Embedder-Policy', value: 'require-corp' },
125
+ { key: 'Cross-Origin-Opener-Policy', value: 'same-origin' },
126
+ ],
127
+ },
128
+ ];
129
+ },
130
+ }
105
131
  ```
106
132
 
107
- See `src/main.ts` for one example of how to use.
133
+ Note that adding COOP and COEP headers will disable loading of external scripts, which might be required by your application.
134
+
135
+ You can enable these headers for specific pages that perform proof generation, but this may be challenging, especially in single-page applications. One workaround is to move the proof generation to a separate page, load it in an invisible iframe within your main application, and then use `postMessage` to communicate between the pages for generating proofs.
108
136
 
109
137
  ## Development
110
138
 
111
139
  Create a symlink to the root script `bb.js-dev` in your path. You can now run the current state of the code from
112
140
  anywhere in your filesystem with no `yarn build` required.
113
141
 
114
- If you change the C++ code run `yarn build:wasm`.
142
+ If you change the C++ code run `yarn build:wasm` to rebuild the webassembly.
115
143
 
116
144
  To run the tests run `yarn test`.
117
145
 
118
- To run a continuous "stress test" run `yarn simple_test` to do 10 full pk/proof/vk iterations.
146
+ To run a continuous "stress test" run `yarn simple_test` to do 10 full pk/proof/vk iterations. This is useful for
147
+ inspecting memory growth as we continuously use the library.
148
+
149
+ ## Debugging
150
+
151
+ Got an unhelpful stack trace in wasm? Run:
152
+
153
+ ```
154
+ NO_STRIP=1 ./script/build_wasm.sh
155
+ ```
119
156
 
120
- To run the same test in the browser run `yarn serve`, navigate to appropriate URL and open the console.
157
+ This will drop unstripped wasms into the dest folder. Run your test again to get a trace.
package/package.json CHANGED
@@ -1,83 +1,94 @@
1
1
  {
2
2
  "name": "@aztec/bb.js",
3
- "version": "0.0.1-alpha.7",
3
+ "packageManager": "yarn@4.5.2",
4
+ "version": "0.0.1-fake-ceab37513c",
5
+ "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts",
4
6
  "license": "MIT",
5
7
  "type": "module",
6
- "typedoc": {
7
- "entryPoint": "./src/index.ts",
8
- "displayName": "bb.js",
9
- "tsconfig": "./tsconfig.json"
8
+ "types": "./dest/node/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "require": "./dest/node-cjs/index.js",
12
+ "browser": "./dest/browser/index.js",
13
+ "default": "./dest/node/index.js"
14
+ }
10
15
  },
11
- "bin": "./dest/main.js",
16
+ "bin": "dest/node/main.js",
12
17
  "files": [
13
18
  "src/",
14
19
  "dest/",
20
+ "cjs-entry/",
15
21
  "README.md"
16
22
  ],
17
23
  "scripts": {
18
- "clean": "rm -rf ./dest .tsbuildinfo",
19
- "build": "yarn clean && yarn build:wasm && yarn build:ts",
20
- "build:dev": "tsc -b --watch",
21
- "build:wasm": "cd ../cpp && cmake --preset wasm-threads && cmake --build --preset wasm-threads && cmake --preset wasm && cmake --build --preset wasm",
22
- "build:ts": "tsc -b && webpack && chmod +x ./dest/main.js",
24
+ "clean": "rm -rf ./dest .tsbuildinfo .tsbuildinfo.cjs ./src/cbind/generated",
25
+ "build": "yarn clean && yarn generate && yarn build:wasm && yarn build:esm && yarn build:cjs && yarn build:browser",
26
+ "build:wasm": "./scripts/build_wasm.sh",
27
+ "build:esm": "tsc -b tsconfig.esm.json && chmod +x ./dest/node/main.js",
28
+ "build:cjs": "tsc -b tsconfig.cjs.json && ./scripts/cjs_postprocess.sh",
29
+ "build:browser": "tsc -b tsconfig.browser.json && ./scripts/browser_postprocess.sh",
23
30
  "build:bindings": "cd .. && ./scripts/bindgen.sh",
24
- "serve": "webpack serve",
31
+ "generate": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 ts-node src/cbind/generate.ts",
25
32
  "formatting": "prettier --check ./src && eslint --max-warnings 0 ./src",
26
33
  "formatting:fix": "prettier -w ./src",
27
- "test": "yarn test:jest && yarn test:bin",
28
- "test:jest": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests",
29
- "test:bin": "cd ./test && ./bin-test.sh",
30
- "test-debug": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node --inspect-brk=0.0.0.0 --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests --runInBand",
31
- "simple_test": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node ./src/examples/simple.rawtest.ts",
32
- "prepack": "yarn build",
33
- "deploy": "npm publish --tag alpha --access public"
34
+ "test": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests",
35
+ "test:debug": "NODE_NO_WARNINGS=1 node --inspect-brk=0.0.0.0 --experimental-vm-modules ./node_modules/.bin/jest --no-cache --passWithNoTests --runInBand",
36
+ "simple_test": "NODE_NO_WARNINGS=1 node ./src/examples/simple.rawtest.ts",
37
+ "deploy": "npm publish --access public"
34
38
  },
35
39
  "jest": {
36
40
  "preset": "ts-jest/presets/default-esm",
37
41
  "transform": {
38
- "./src/.*\\.ts": [
39
- "ts-jest",
42
+ "^.+\\.tsx?$": [
43
+ "@swc/jest",
40
44
  {
41
- "useESM": true
45
+ "jsc": {
46
+ "parser": {
47
+ "syntax": "typescript",
48
+ "decorators": true
49
+ },
50
+ "transform": {
51
+ "decoratorVersion": "2022-03"
52
+ }
53
+ }
42
54
  }
43
55
  ]
44
56
  },
45
57
  "moduleNameMapper": {
46
58
  "^(\\.{1,2}/.*)\\.js$": "$1"
47
59
  },
60
+ "extensionsToTreatAsEsm": [
61
+ ".ts"
62
+ ],
48
63
  "testRegex": "./src/.*\\.test\\.ts$",
49
64
  "rootDir": "./src"
50
65
  },
51
66
  "dependencies": {
52
67
  "comlink": "^4.4.1",
53
- "commander": "^10.0.1",
54
- "debug": "^4.3.4",
55
- "ts-node": "^10.9.1",
68
+ "commander": "^12.1.0",
69
+ "idb-keyval": "^6.2.1",
70
+ "msgpackr": "^1.11.2",
71
+ "pako": "^2.1.0",
72
+ "pino": "^9.5.0",
56
73
  "tslib": "^2.4.0"
57
74
  },
58
75
  "devDependencies": {
59
- "@jest/globals": "^29.4.3",
60
- "@types/debug": "^4.1.7",
76
+ "@jest/globals": "^30.0.0",
77
+ "@swc/core": "^1.10.1",
78
+ "@swc/jest": "^0.2.37",
61
79
  "@types/detect-node": "^2.0.0",
62
- "@types/jest": "^29.4.0",
63
- "@types/node": "^18.7.23",
80
+ "@types/jest": "^30.0.0",
81
+ "@types/node": "^22.15.17",
82
+ "@types/pako": "^2.0.3",
64
83
  "@types/source-map-support": "^0.5.6",
65
- "@typescript-eslint/eslint-plugin": "^5.54.1",
66
- "@typescript-eslint/parser": "^5.54.1",
67
- "buffer": "^6.0.3",
68
- "copy-webpack-plugin": "^11.0.0",
69
- "eslint": "^8.35.0",
70
- "eslint-config-prettier": "^8.8.0",
71
- "html-webpack-plugin": "^5.5.1",
72
- "idb-keyval": "^6.2.1",
73
- "jest": "^29.5.0",
74
- "prettier": "^2.8.4",
75
- "resolve-typescript-plugin": "^2.0.1",
76
- "ts-jest": "^29.1.0",
84
+ "eslint": "^9.26.0",
85
+ "eslint-config-prettier": "^10.1.5",
86
+ "jest": "^30.0.0",
87
+ "prettier": "^3.5.3",
88
+ "ts-jest": "^29.4.0",
77
89
  "ts-loader": "^9.4.2",
78
- "typescript": "^5.0.4",
79
- "webpack": "^5.82.1",
80
- "webpack-cli": "^5.1.1",
81
- "webpack-dev-server": "^4.15.0"
90
+ "ts-node": "^10.9.1",
91
+ "typescript": "^5.3.3",
92
+ "typescript-eslint": "^8.32.1"
82
93
  }
83
94
  }
@@ -0,0 +1,156 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`pedersen sync pedersenCommit 1`] = `
4
+ Point {
5
+ "x": Fr {
6
+ "value": Uint8Array [
7
+ 40,
8
+ 159,
9
+ 125,
10
+ 144,
11
+ 234,
12
+ 153,
13
+ 219,
14
+ 166,
15
+ 76,
16
+ 75,
17
+ 47,
18
+ 51,
19
+ 253,
20
+ 27,
21
+ 9,
22
+ 101,
23
+ 2,
24
+ 145,
25
+ 223,
26
+ 38,
27
+ 43,
28
+ 114,
29
+ 5,
30
+ 21,
31
+ 90,
32
+ 97,
33
+ 2,
34
+ 6,
35
+ 219,
36
+ 97,
37
+ 109,
38
+ 152,
39
+ ],
40
+ },
41
+ "y": Fr {
42
+ "value": Uint8Array [
43
+ 5,
44
+ 175,
45
+ 199,
46
+ 200,
47
+ 35,
48
+ 67,
49
+ 88,
50
+ 76,
51
+ 19,
52
+ 203,
53
+ 45,
54
+ 50,
55
+ 137,
56
+ 153,
57
+ 67,
58
+ 200,
59
+ 57,
60
+ 87,
61
+ 22,
62
+ 209,
63
+ 141,
64
+ 173,
65
+ 205,
66
+ 189,
67
+ 23,
68
+ 215,
69
+ 206,
70
+ 3,
71
+ 174,
72
+ 112,
73
+ 128,
74
+ 11,
75
+ ],
76
+ },
77
+ }
78
+ `;
79
+
80
+ exports[`pedersen sync pedersenHash 1`] = `
81
+ Fr {
82
+ "value": Uint8Array [
83
+ 4,
84
+ 194,
85
+ 53,
86
+ 42,
87
+ 6,
88
+ 13,
89
+ 74,
90
+ 193,
91
+ 205,
92
+ 251,
93
+ 96,
94
+ 62,
95
+ 188,
96
+ 67,
97
+ 39,
98
+ 181,
99
+ 118,
100
+ 69,
101
+ 151,
102
+ 35,
103
+ 22,
104
+ 20,
105
+ 246,
106
+ 29,
107
+ 36,
108
+ 91,
109
+ 243,
110
+ 87,
111
+ 114,
112
+ 192,
113
+ 134,
114
+ 150,
115
+ ],
116
+ }
117
+ `;
118
+
119
+ exports[`pedersen sync pedersenHashBuffer 1`] = `
120
+ Fr {
121
+ "value": Uint8Array [
122
+ 43,
123
+ 213,
124
+ 196,
125
+ 82,
126
+ 160,
127
+ 201,
128
+ 113,
129
+ 98,
130
+ 41,
131
+ 79,
132
+ 201,
133
+ 223,
134
+ 208,
135
+ 241,
136
+ 224,
137
+ 157,
138
+ 14,
139
+ 9,
140
+ 201,
141
+ 95,
142
+ 165,
143
+ 237,
144
+ 63,
145
+ 241,
146
+ 73,
147
+ 251,
148
+ 222,
149
+ 243,
150
+ 102,
151
+ 203,
152
+ 81,
153
+ 249,
154
+ ],
155
+ }
156
+ `;
@@ -0,0 +1,40 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`poseidon sync poseidonHash 1`] = `
4
+ Fr {
5
+ "value": Uint8Array [
6
+ 43,
7
+ 202,
8
+ 235,
9
+ 109,
10
+ 88,
11
+ 187,
12
+ 56,
13
+ 186,
14
+ 247,
15
+ 83,
16
+ 213,
17
+ 140,
18
+ 60,
19
+ 150,
20
+ 97,
21
+ 143,
22
+ 234,
23
+ 130,
24
+ 22,
25
+ 51,
26
+ 69,
27
+ 41,
28
+ 94,
29
+ 180,
30
+ 14,
31
+ 136,
32
+ 52,
33
+ 78,
34
+ 235,
35
+ 12,
36
+ 226,
37
+ 161,
38
+ ],
39
+ }
40
+ `;