@aztec/bb.js 0.0.1-alpha.6 → 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 -33
  2. package/package.json +56 -41
  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 +1128 -383
  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 -2
  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 +98 -20
  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 +395 -185
  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/file_crs.d.ts +0 -37
  151. package/dest/crs/node/file_crs.d.ts.map +0 -1
  152. package/dest/crs/node/file_crs.js +0 -51
  153. package/dest/crs/node/index.d.ts +0 -31
  154. package/dest/crs/node/index.d.ts.map +0 -1
  155. package/dest/crs/node/index.js +0 -41
  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 -280
  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/file_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,23 +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 x86: ~13s.
19
- - 10 core M1 Mac Pro: ~18s.
20
-
21
- Linear scaling was observed up to 32 cores, however we limit to 16 as 2^19 runs out of memory with 32 cores.
22
- This maybe resolvable.
23
-
24
- Witness generation phase is not multithreaded, and an interesting 512k circuit can take ~12s. This results in:
25
-
26
- - 16 core x86: ~26s.
27
- - 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
+ ```
28
30
 
29
31
  ## Using as a standalone binary
30
32
 
@@ -33,10 +35,10 @@ Witness generation phase is not multithreaded, and an interesting 512k circuit c
33
35
  To install the package globally for running as a terminal application:
34
36
 
35
37
  ```
36
- npm install -g @aztec/bb.js@alpha
38
+ npm install -g @aztec/bb.js
37
39
  ```
38
40
 
39
- 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`.
40
42
 
41
43
  ### Usage
42
44
 
@@ -58,7 +60,7 @@ Commands:
58
60
  contract [options] Output solidity verification key contract.
59
61
  write_vk [options] Output verification key.
60
62
  proof_as_fields [options] Return the proof as fields elements
61
- 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.
62
64
  help [command] display help for command
63
65
  ```
64
66
 
@@ -69,53 +71,87 @@ Commands:
69
71
  To install as a package to be used as a library:
70
72
 
71
73
  ```
72
- npm install @aztec/bb.js@alpha
74
+ npm install @aztec/bb.js
73
75
  ```
74
76
 
75
77
  or with yarn
76
78
 
77
79
  ```
78
- yarn add @aztec/bb.js@alpha
80
+ yarn add @aztec/bb.js
79
81
  ```
80
82
 
81
83
  ### Usage
82
84
 
83
- To create a multithreaded version of the API:
85
+ To create the API and do a blake2s hash:
84
86
 
85
87
  ```typescript
86
- const api = await newBarretenbergApiAsync(/* num_threads */);
87
- // Use.
88
+ import { Crs, Barretenberg, RawBuffer } from './index.js';
89
+
90
+ const api = await Barretenberg.new(/* num_threads */ { threads: 1 });
88
91
  const input = Buffer.from('hello world!');
89
92
  const result = await api.blake2s(input);
90
93
  await api.destroy();
91
94
  ```
92
95
 
93
- 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.
94
97
  If `1` is specified, fallback to non multi-threaded wasm that doesn't need shared memory.
95
98
 
96
- You can also create a synchronous version of the api that also has no multi-threading. This is only useful in the
97
- browser if you don't call any multi-threaded functions. It's probably best to just always use async version of the api
98
- 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.
99
105
 
100
106
  ```typescript
101
- const api = await newBarretenbergApiSync();
102
- // Use.
103
- const input = Buffer.from('hello world!');
104
- const result = api.blake2s(input);
105
- 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
+ }
106
131
  ```
107
132
 
108
- 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.
109
136
 
110
137
  ## Development
111
138
 
112
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
113
140
  anywhere in your filesystem with no `yarn build` required.
114
141
 
115
- 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.
116
143
 
117
144
  To run the tests run `yarn test`.
118
145
 
119
- 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
+ ```
120
156
 
121
- 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,79 +1,94 @@
1
1
  {
2
2
  "name": "@aztec/bb.js",
3
- "version": "0.0.1-alpha.6",
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",
6
+ "license": "MIT",
4
7
  "type": "module",
5
- "typedoc": {
6
- "entryPoint": "./src/index.ts",
7
- "displayName": "bb.js",
8
- "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
+ }
9
15
  },
10
- "bin": "./dest/main.js",
16
+ "bin": "dest/node/main.js",
11
17
  "files": [
12
18
  "src/",
13
19
  "dest/",
20
+ "cjs-entry/",
14
21
  "README.md"
15
22
  ],
16
23
  "scripts": {
17
- "clean": "rm -rf ./dest .tsbuildinfo",
18
- "build": "yarn clean && yarn build:wasm && tsc -b && webpack && chmod +x ./dest/main.js",
19
- "build:dev": "tsc -b --watch",
20
- "build:wasm": "cd ../cpp && cmake --preset wasm-threads && cmake --build --preset wasm-threads && cmake --preset wasm && cmake --build --preset wasm",
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",
21
30
  "build:bindings": "cd .. && ./scripts/bindgen.sh",
22
- "serve": "webpack serve",
31
+ "generate": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 ts-node src/cbind/generate.ts",
23
32
  "formatting": "prettier --check ./src && eslint --max-warnings 0 ./src",
24
33
  "formatting:fix": "prettier -w ./src",
25
34
  "test": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests",
26
- "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",
27
- "simple_test": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node ./src/examples/simple.rawtest.ts",
28
- "prepack": "yarn build",
29
- "deploy": "npm publish --tag alpha --access public"
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"
30
38
  },
31
39
  "jest": {
32
40
  "preset": "ts-jest/presets/default-esm",
33
41
  "transform": {
34
- "./src/.*\\.ts": [
35
- "ts-jest",
42
+ "^.+\\.tsx?$": [
43
+ "@swc/jest",
36
44
  {
37
- "useESM": true
45
+ "jsc": {
46
+ "parser": {
47
+ "syntax": "typescript",
48
+ "decorators": true
49
+ },
50
+ "transform": {
51
+ "decoratorVersion": "2022-03"
52
+ }
53
+ }
38
54
  }
39
55
  ]
40
56
  },
41
57
  "moduleNameMapper": {
42
58
  "^(\\.{1,2}/.*)\\.js$": "$1"
43
59
  },
60
+ "extensionsToTreatAsEsm": [
61
+ ".ts"
62
+ ],
44
63
  "testRegex": "./src/.*\\.test\\.ts$",
45
64
  "rootDir": "./src"
46
65
  },
47
66
  "dependencies": {
48
67
  "comlink": "^4.4.1",
49
- "commander": "^10.0.1",
50
- "debug": "^4.3.4",
51
- "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",
52
73
  "tslib": "^2.4.0"
53
74
  },
54
75
  "devDependencies": {
55
- "@jest/globals": "^29.4.3",
56
- "@types/debug": "^4.1.7",
76
+ "@jest/globals": "^30.0.0",
77
+ "@swc/core": "^1.10.1",
78
+ "@swc/jest": "^0.2.37",
57
79
  "@types/detect-node": "^2.0.0",
58
- "@types/jest": "^29.4.0",
59
- "@types/node": "^18.7.23",
80
+ "@types/jest": "^30.0.0",
81
+ "@types/node": "^22.15.17",
82
+ "@types/pako": "^2.0.3",
60
83
  "@types/source-map-support": "^0.5.6",
61
- "@typescript-eslint/eslint-plugin": "^5.54.1",
62
- "@typescript-eslint/parser": "^5.54.1",
63
- "buffer": "^6.0.3",
64
- "copy-webpack-plugin": "^11.0.0",
65
- "eslint": "^8.35.0",
66
- "eslint-config-prettier": "^8.8.0",
67
- "html-webpack-plugin": "^5.5.1",
68
- "idb-keyval": "^6.2.1",
69
- "jest": "^29.5.0",
70
- "prettier": "^2.8.4",
71
- "resolve-typescript-plugin": "^2.0.1",
72
- "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",
73
89
  "ts-loader": "^9.4.2",
74
- "typescript": "^5.0.4",
75
- "webpack": "^5.82.1",
76
- "webpack-cli": "^5.1.1",
77
- "webpack-dev-server": "^4.15.0"
90
+ "ts-node": "^10.9.1",
91
+ "typescript": "^5.3.3",
92
+ "typescript-eslint": "^8.32.1"
78
93
  }
79
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
+ `;