@proto-kit/common 0.1.1-develop.211 → 0.1.1-develop.2137

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 (258) hide show
  1. package/dist/cache/CacheManifest.d.ts +11 -0
  2. package/dist/cache/CacheManifest.d.ts.map +1 -0
  3. package/dist/cache/CacheManifest.js +56 -0
  4. package/dist/cache/CacheManifest.js.map +1 -0
  5. package/dist/cache/ProxyCache.d.ts +13 -0
  6. package/dist/cache/ProxyCache.d.ts.map +1 -0
  7. package/dist/cache/ProxyCache.js +24 -0
  8. package/dist/cache/ProxyCache.js.map +1 -0
  9. package/dist/cache/RemoteCache.d.ts +8 -0
  10. package/dist/cache/RemoteCache.d.ts.map +1 -0
  11. package/dist/cache/RemoteCache.js +2 -0
  12. package/dist/cache/RemoteCache.js.map +1 -0
  13. package/dist/cache/RemoteCacheCompiler.d.ts +16 -0
  14. package/dist/cache/RemoteCacheCompiler.d.ts.map +1 -0
  15. package/dist/cache/RemoteCacheCompiler.js +104 -0
  16. package/dist/cache/RemoteCacheCompiler.js.map +1 -0
  17. package/dist/compiling/AtomicCompileHelper.d.ts +15 -0
  18. package/dist/compiling/AtomicCompileHelper.d.ts.map +1 -0
  19. package/dist/compiling/AtomicCompileHelper.js +61 -0
  20. package/dist/compiling/AtomicCompileHelper.js.map +1 -0
  21. package/dist/compiling/CompilableModule.d.ts +6 -0
  22. package/dist/compiling/CompilableModule.d.ts.map +1 -0
  23. package/dist/compiling/CompilableModule.js +2 -0
  24. package/dist/compiling/CompilableModule.js.map +1 -0
  25. package/dist/compiling/CompileRegistry.d.ts +25 -0
  26. package/dist/compiling/CompileRegistry.d.ts.map +1 -0
  27. package/dist/compiling/CompileRegistry.js +62 -0
  28. package/dist/compiling/CompileRegistry.js.map +1 -0
  29. package/dist/compiling/services/ChildVerificationKeyService.d.ts +10 -0
  30. package/dist/compiling/services/ChildVerificationKeyService.d.ts.map +1 -0
  31. package/dist/compiling/services/ChildVerificationKeyService.js +27 -0
  32. package/dist/compiling/services/ChildVerificationKeyService.js.map +1 -0
  33. package/dist/config/ChildContainerCreatable.d.ts +5 -0
  34. package/dist/config/ChildContainerCreatable.d.ts.map +1 -0
  35. package/dist/config/ChildContainerCreatable.js +2 -0
  36. package/dist/config/ChildContainerCreatable.js.map +1 -0
  37. package/dist/config/ChildContainerProvider.d.ts +5 -0
  38. package/dist/config/ChildContainerProvider.d.ts.map +1 -0
  39. package/dist/config/ChildContainerProvider.js +2 -0
  40. package/dist/config/ChildContainerProvider.js.map +1 -0
  41. package/dist/config/ConfigurableModule.d.ts +6 -2
  42. package/dist/config/ConfigurableModule.d.ts.map +1 -1
  43. package/dist/config/ConfigurableModule.js +5 -0
  44. package/dist/config/ConfigurableModule.js.map +1 -0
  45. package/dist/config/ModuleContainer.d.ts +70 -23
  46. package/dist/config/ModuleContainer.d.ts.map +1 -1
  47. package/dist/config/ModuleContainer.js +164 -31
  48. package/dist/config/ModuleContainer.js.map +1 -0
  49. package/dist/config/Startable.d.ts +4 -0
  50. package/dist/config/Startable.d.ts.map +1 -0
  51. package/dist/config/Startable.js +2 -0
  52. package/dist/config/Startable.js.map +1 -0
  53. package/dist/config/injectAlias.d.ts +18 -0
  54. package/dist/config/injectAlias.d.ts.map +1 -0
  55. package/dist/config/injectAlias.js +47 -0
  56. package/dist/config/injectAlias.js.map +1 -0
  57. package/dist/dependencyFactory/DependencyFactory.d.ts +14 -9
  58. package/dist/dependencyFactory/DependencyFactory.d.ts.map +1 -1
  59. package/dist/dependencyFactory/DependencyFactory.js +2 -96
  60. package/dist/dependencyFactory/DependencyFactory.js.map +1 -0
  61. package/dist/dependencyFactory/injectOptional.d.ts +16 -0
  62. package/dist/dependencyFactory/injectOptional.d.ts.map +1 -0
  63. package/dist/dependencyFactory/injectOptional.js +40 -0
  64. package/dist/dependencyFactory/injectOptional.js.map +1 -0
  65. package/dist/dummyVerificationKey.d.ts +3 -0
  66. package/dist/dummyVerificationKey.d.ts.map +1 -0
  67. package/dist/dummyVerificationKey.js +8 -0
  68. package/dist/dummyVerificationKey.js.map +1 -0
  69. package/dist/events/EventEmitter.d.ts +19 -0
  70. package/dist/events/EventEmitter.d.ts.map +1 -0
  71. package/dist/events/EventEmitter.js +35 -0
  72. package/dist/events/EventEmitter.js.map +1 -0
  73. package/dist/events/EventEmitterProxy.d.ts +18 -0
  74. package/dist/events/EventEmitterProxy.d.ts.map +1 -0
  75. package/dist/events/EventEmitterProxy.js +35 -0
  76. package/dist/events/EventEmitterProxy.js.map +1 -0
  77. package/dist/events/EventEmittingComponent.d.ts +9 -0
  78. package/dist/events/EventEmittingComponent.d.ts.map +1 -0
  79. package/dist/events/EventEmittingComponent.js +2 -0
  80. package/dist/events/EventEmittingComponent.js.map +1 -0
  81. package/dist/events/ReplayingSingleUseEventEmitter.d.ts +17 -0
  82. package/dist/events/ReplayingSingleUseEventEmitter.d.ts.map +1 -0
  83. package/dist/events/ReplayingSingleUseEventEmitter.js +34 -0
  84. package/dist/events/ReplayingSingleUseEventEmitter.js.map +1 -0
  85. package/dist/index.d.ts +27 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +28 -2
  88. package/dist/index.js.map +1 -0
  89. package/dist/log.d.ts +37 -0
  90. package/dist/log.d.ts.map +1 -0
  91. package/dist/log.js +117 -0
  92. package/dist/log.js.map +1 -0
  93. package/dist/trees/InMemoryLinkedLeafStore.d.ts +21 -0
  94. package/dist/trees/InMemoryLinkedLeafStore.d.ts.map +1 -0
  95. package/dist/trees/InMemoryLinkedLeafStore.js +26 -0
  96. package/dist/trees/InMemoryLinkedLeafStore.js.map +1 -0
  97. package/dist/trees/InMemoryLinkedMerkleLeafStore.d.ts +7 -0
  98. package/dist/trees/InMemoryLinkedMerkleLeafStore.d.ts.map +1 -0
  99. package/dist/trees/InMemoryLinkedMerkleLeafStore.js +6 -0
  100. package/dist/trees/InMemoryLinkedMerkleLeafStore.js.map +1 -0
  101. package/dist/trees/InMemoryMerkleTreeStorage.d.ts +11 -0
  102. package/dist/trees/InMemoryMerkleTreeStorage.d.ts.map +1 -0
  103. package/dist/trees/InMemoryMerkleTreeStorage.js +13 -0
  104. package/dist/trees/InMemoryMerkleTreeStorage.js.map +1 -0
  105. package/dist/trees/LinkedMerkleTree.d.ts +345 -0
  106. package/dist/trees/LinkedMerkleTree.d.ts.map +1 -0
  107. package/dist/trees/LinkedMerkleTree.js +337 -0
  108. package/dist/trees/LinkedMerkleTree.js.map +1 -0
  109. package/dist/trees/LinkedMerkleTreeStore.d.ts +24 -0
  110. package/dist/trees/LinkedMerkleTreeStore.d.ts.map +1 -0
  111. package/dist/trees/LinkedMerkleTreeStore.js +2 -0
  112. package/dist/trees/LinkedMerkleTreeStore.js.map +1 -0
  113. package/dist/trees/MerkleTreeStore.d.ts +5 -0
  114. package/dist/trees/MerkleTreeStore.d.ts.map +1 -0
  115. package/dist/trees/MerkleTreeStore.js +2 -0
  116. package/dist/trees/MerkleTreeStore.js.map +1 -0
  117. package/dist/trees/MockAsyncMerkleStore.d.ts +9 -0
  118. package/dist/trees/MockAsyncMerkleStore.d.ts.map +1 -0
  119. package/dist/trees/MockAsyncMerkleStore.js +20 -0
  120. package/dist/trees/MockAsyncMerkleStore.js.map +1 -0
  121. package/dist/trees/RollupMerkleTree.d.ts +147 -0
  122. package/dist/trees/RollupMerkleTree.d.ts.map +1 -0
  123. package/dist/trees/RollupMerkleTree.js +218 -0
  124. package/dist/trees/RollupMerkleTree.js.map +1 -0
  125. package/dist/trees/VirtualMerkleTreeStore.d.ts +13 -0
  126. package/dist/trees/VirtualMerkleTreeStore.d.ts.map +1 -0
  127. package/dist/trees/VirtualMerkleTreeStore.js +18 -0
  128. package/dist/trees/VirtualMerkleTreeStore.js.map +1 -0
  129. package/dist/trees/lmt/AbstractLinkedMerkleTree.d.ts +288 -0
  130. package/dist/trees/lmt/AbstractLinkedMerkleTree.d.ts.map +1 -0
  131. package/dist/trees/lmt/AbstractLinkedMerkleTree.js +22 -0
  132. package/dist/trees/lmt/AbstractLinkedMerkleTree.js.map +1 -0
  133. package/dist/trees/lmt/InMemoryLinkedLeafStore.d.ts +21 -0
  134. package/dist/trees/lmt/InMemoryLinkedLeafStore.d.ts.map +1 -0
  135. package/dist/trees/lmt/InMemoryLinkedLeafStore.js +26 -0
  136. package/dist/trees/lmt/InMemoryLinkedLeafStore.js.map +1 -0
  137. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.d.ts +7 -0
  138. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.d.ts.map +1 -0
  139. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.js +6 -0
  140. package/dist/trees/lmt/InMemoryLinkedMerkleLeafStore.js.map +1 -0
  141. package/dist/trees/lmt/LinkedLeafStore.d.ts +16 -0
  142. package/dist/trees/lmt/LinkedLeafStore.d.ts.map +1 -0
  143. package/dist/trees/lmt/LinkedLeafStore.js +2 -0
  144. package/dist/trees/lmt/LinkedLeafStore.js.map +1 -0
  145. package/dist/trees/lmt/LinkedLinkedStore.d.ts +16 -0
  146. package/dist/trees/lmt/LinkedLinkedStore.d.ts.map +1 -0
  147. package/dist/trees/lmt/LinkedLinkedStore.js +2 -0
  148. package/dist/trees/lmt/LinkedLinkedStore.js.map +1 -0
  149. package/dist/trees/lmt/LinkedMerkleTree.d.ts +11 -0
  150. package/dist/trees/lmt/LinkedMerkleTree.d.ts.map +1 -0
  151. package/dist/trees/lmt/LinkedMerkleTree.js +241 -0
  152. package/dist/trees/lmt/LinkedMerkleTree.js.map +1 -0
  153. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.d.ts +113 -0
  154. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.d.ts.map +1 -0
  155. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.js +113 -0
  156. package/dist/trees/lmt/LinkedMerkleTreeCircuitOps.js.map +1 -0
  157. package/dist/trees/lmt/LinkedMerkleTreeDatabase.d.ts +7 -0
  158. package/dist/trees/lmt/LinkedMerkleTreeDatabase.d.ts.map +1 -0
  159. package/dist/trees/lmt/LinkedMerkleTreeDatabase.js +2 -0
  160. package/dist/trees/lmt/LinkedMerkleTreeDatabase.js.map +1 -0
  161. package/dist/trees/lmt/LinkedMerkleTreeStore.d.ts +16 -0
  162. package/dist/trees/lmt/LinkedMerkleTreeStore.d.ts.map +1 -0
  163. package/dist/trees/lmt/LinkedMerkleTreeStore.js +2 -0
  164. package/dist/trees/lmt/LinkedMerkleTreeStore.js.map +1 -0
  165. package/dist/trees/lmt/LinkedMerkleTreeTypes.d.ts +74 -0
  166. package/dist/trees/lmt/LinkedMerkleTreeTypes.d.ts.map +1 -0
  167. package/dist/trees/lmt/LinkedMerkleTreeTypes.js +50 -0
  168. package/dist/trees/lmt/LinkedMerkleTreeTypes.js.map +1 -0
  169. package/dist/trees/sparse/InMemoryMerkleTreeStorage.d.ts +11 -0
  170. package/dist/trees/sparse/InMemoryMerkleTreeStorage.d.ts.map +1 -0
  171. package/dist/trees/sparse/InMemoryMerkleTreeStorage.js +13 -0
  172. package/dist/trees/sparse/InMemoryMerkleTreeStorage.js.map +1 -0
  173. package/dist/trees/sparse/MerkleTreeStore.d.ts +5 -0
  174. package/dist/trees/sparse/MerkleTreeStore.d.ts.map +1 -0
  175. package/dist/trees/sparse/MerkleTreeStore.js +2 -0
  176. package/dist/trees/sparse/MerkleTreeStore.js.map +1 -0
  177. package/dist/trees/sparse/MockAsyncMerkleStore.d.ts +9 -0
  178. package/dist/trees/sparse/MockAsyncMerkleStore.d.ts.map +1 -0
  179. package/dist/trees/sparse/MockAsyncMerkleStore.js +20 -0
  180. package/dist/trees/sparse/MockAsyncMerkleStore.js.map +1 -0
  181. package/dist/trees/sparse/RollupMerkleTree.d.ts +158 -0
  182. package/dist/trees/sparse/RollupMerkleTree.d.ts.map +1 -0
  183. package/dist/trees/sparse/RollupMerkleTree.js +330 -0
  184. package/dist/trees/sparse/RollupMerkleTree.js.map +1 -0
  185. package/dist/types.d.ts +62 -0
  186. package/dist/types.d.ts.map +1 -1
  187. package/dist/types.js +14 -1
  188. package/dist/types.js.map +1 -0
  189. package/dist/union/union.d.ts +177 -0
  190. package/dist/union/union.d.ts.map +1 -0
  191. package/dist/union/union.js +35 -0
  192. package/dist/union/union.js.map +1 -0
  193. package/dist/utils.d.ts +57 -2
  194. package/dist/utils.d.ts.map +1 -1
  195. package/dist/utils.js +153 -4
  196. package/dist/utils.js.map +1 -0
  197. package/dist/zkProgrammable/ProvableMethodExecutionContext.d.ts +4 -3
  198. package/dist/zkProgrammable/ProvableMethodExecutionContext.d.ts.map +1 -1
  199. package/dist/zkProgrammable/ProvableMethodExecutionContext.js +2 -3
  200. package/dist/zkProgrammable/ProvableMethodExecutionContext.js.map +1 -0
  201. package/dist/zkProgrammable/ZkProgrammable.d.ts +32 -11
  202. package/dist/zkProgrammable/ZkProgrammable.d.ts.map +1 -1
  203. package/dist/zkProgrammable/ZkProgrammable.js +36 -17
  204. package/dist/zkProgrammable/ZkProgrammable.js.map +1 -0
  205. package/dist/zkProgrammable/provableMethod.d.ts +7 -4
  206. package/dist/zkProgrammable/provableMethod.d.ts.map +1 -1
  207. package/dist/zkProgrammable/provableMethod.js +30 -14
  208. package/dist/zkProgrammable/provableMethod.js.map +1 -0
  209. package/jest.config.cjs +12 -1
  210. package/package.json +9 -7
  211. package/src/cache/CacheManifest.ts +57 -0
  212. package/src/cache/ProxyCache.ts +30 -0
  213. package/src/cache/RemoteCache.ts +9 -0
  214. package/src/cache/RemoteCacheCompiler.ts +131 -0
  215. package/src/compiling/AtomicCompileHelper.ts +71 -0
  216. package/src/compiling/CompilableModule.ts +6 -0
  217. package/src/compiling/CompileRegistry.ts +64 -0
  218. package/src/compiling/services/ChildVerificationKeyService.ts +26 -0
  219. package/src/config/ChildContainerCreatable.ts +5 -0
  220. package/src/config/ChildContainerProvider.ts +5 -0
  221. package/src/config/ConfigurableModule.ts +15 -2
  222. package/src/config/ModuleContainer.ts +286 -58
  223. package/src/config/Startable.ts +3 -0
  224. package/src/config/injectAlias.ts +70 -0
  225. package/src/dependencyFactory/DependencyFactory.ts +34 -109
  226. package/src/dummyVerificationKey.ts +10 -0
  227. package/src/events/EventEmitter.ts +61 -0
  228. package/src/events/EventEmitterProxy.ts +81 -0
  229. package/src/events/EventEmittingComponent.ts +11 -0
  230. package/src/events/ReplayingSingleUseEventEmitter.ts +42 -0
  231. package/src/index.ts +27 -2
  232. package/src/log.ts +145 -0
  233. package/src/trees/lmt/AbstractLinkedMerkleTree.ts +102 -0
  234. package/src/trees/lmt/InMemoryLinkedLeafStore.ts +42 -0
  235. package/src/trees/lmt/LinkedLeafStore.ts +13 -0
  236. package/src/trees/lmt/LinkedMerkleTree.ts +335 -0
  237. package/src/trees/lmt/LinkedMerkleTreeCircuitOps.ts +188 -0
  238. package/src/trees/lmt/LinkedMerkleTreeTypes.ts +53 -0
  239. package/src/trees/sparse/InMemoryMerkleTreeStorage.ts +17 -0
  240. package/src/trees/sparse/MerkleTreeStore.ts +5 -0
  241. package/src/trees/sparse/MockAsyncMerkleStore.ts +30 -0
  242. package/src/trees/sparse/RollupMerkleTree.ts +512 -0
  243. package/src/types.ts +53 -2
  244. package/src/utils.ts +281 -5
  245. package/src/zkProgrammable/ProvableMethodExecutionContext.ts +6 -6
  246. package/src/zkProgrammable/ZkProgrammable.ts +90 -35
  247. package/src/zkProgrammable/provableMethod.ts +50 -23
  248. package/test/config/ContainerEvents.test.ts +65 -0
  249. package/test/config/ModuleContainer.test.ts +146 -15
  250. package/test/config/injectAlias.test.ts +28 -0
  251. package/test/trees/LinkedMerkleTree.test.ts +124 -0
  252. package/test/trees/LinkedMerkleTreeCircuitOps.test.ts +147 -0
  253. package/test/trees/MerkleTree.test.ts +251 -0
  254. package/test/tsconfig.json +5 -2
  255. package/test/zkProgrammable/ZkProgrammable.test.ts +145 -119
  256. package/tsconfig.json +1 -1
  257. package/LICENSE.md +0 -201
  258. package/tsconfig.test.json +0 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union.js","sourceRoot":"","sources":["../../src/union/union.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAgC,MAAM,MAAM,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,UAAU,oBAAoB,CAElC,SAAY;IACZ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CACxD,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAClD,CAAC;IAEF,MAAM,aAAc,SAAQ,MAAM,CAAC;QACjC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;QACvC,IAAI,EAAE,KAAK;KACZ,CAAC;QACO,MAAM,CAAC,IAAI,CAChB,QAAc,EACd,KAA0B;YAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,OAAO,IAAI,aAAa,CAAC;gBACvB,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;QACL,CAAC;QAEM,IAAI,CAAyB,QAAc;YAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAE/C,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAKD,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,OAAO,MAAM,kBAAmB,SAAQ,MAAM,CAAC;QAC7C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;QACpC,IAAI,EAAE,KAAK;KACZ,CAAC;KAAG,CAAC;AACR,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -1,6 +1,17 @@
1
- import { FlexibleProvablePure } from "snarkyjs";
1
+ import { Field, FlexibleProvablePure, DynamicProof, Proof } from "o1js";
2
+ import { TypedClass } from "./types";
2
3
  export declare function requireTrue(condition: boolean, errorOrFunction: Error | (() => Error)): void;
3
- export declare function range(startOrEnd: number, end: number | undefined): number[];
4
+ /**
5
+ * Utility function to split an array of type T into a record <K, T[]> based on a
6
+ * function T => K that determines the key of each record
7
+ */
8
+ export declare function splitArray<T, K extends string | number>(arr: T[], split: (t: T) => K): Record<K, T[] | undefined>;
9
+ export declare function range(startOrEnd: number, endOrNothing?: number | undefined): number[];
10
+ export declare function reduceSequential<T, U>(array: T[], callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => Promise<U>, initialValue: U): Promise<U>;
11
+ export declare function yieldSequential<Source, State, Target>(array: Source[], callbackfn: (previousValue: State, currentValue: Source, currentIndex: number, array: Source[]) => Promise<[State, Target]>, initialValue: State): Promise<[State, Target[]]>;
12
+ export declare function mapSequential<T, R>(array: T[], f: (element: T, index: number, array: T[]) => Promise<R>): Promise<R[]>;
13
+ export declare function unzip<A, B>(array: [A, B][]): [A[], B[]];
14
+ export declare function assertSizeOneOrTwo<T>(arr: T[]): asserts arr is [T] | [T, T];
4
15
  /**
5
16
  * Computes a dummy value for the given value type.
6
17
  *
@@ -8,4 +19,48 @@ export declare function range(startOrEnd: number, end: number | undefined): numb
8
19
  * @returns Dummy value for the given value type
9
20
  */
10
21
  export declare function dummyValue<Value>(valueType: FlexibleProvablePure<Value>): Value;
22
+ export declare function noop(): void;
23
+ export interface ToFieldable {
24
+ toFields: () => Field[];
25
+ }
26
+ export interface ToFieldableStatic {
27
+ toFields: (value: unknown) => Field[];
28
+ }
29
+ export interface ToJSONableStatic {
30
+ toJSON: (value: unknown) => any;
31
+ }
32
+ export type ProofTypes = typeof Proof<unknown, unknown> | typeof DynamicProof<unknown, unknown>;
33
+ export declare function sleep(ms: number): Promise<void>;
34
+ export declare function filterNonNull<Type>(value: Type | null): value is Type;
35
+ export declare function filterNonUndefined<Type>(value: Type | undefined): value is Type;
36
+ export declare function prefixToField(prefix: string): Field;
37
+ export declare function hashWithPrefix(prefix: string, input: Field[]): import("o1js/dist/node/lib/provable/field").Field;
38
+ export declare function expectDefined<T>(value: T | undefined): asserts value is T;
39
+ type NonMethodKeys<Type> = {
40
+ [Key in keyof Type]: Type[Key] extends Function ? never : Key;
41
+ }[keyof Type];
42
+ export type NonMethods<Type> = Pick<Type, NonMethodKeys<Type>>;
43
+ export declare const MAX_FIELD: import("o1js/dist/node/lib/provable/field").Field;
44
+ /**
45
+ * Returns a boolean indicating whether a given class is a subclass of another class,
46
+ * indicated by the name parameter.
47
+ */
48
+ export declare function isSubtypeOfName(clas: TypedClass<unknown>, name: string): boolean;
49
+ export declare function safeParseJson<T>(json: string): T;
50
+ export type Nullable<T> = {
51
+ [Key in keyof T]: T[Key] | undefined;
52
+ };
53
+ export declare function isFull<T>(t: Nullable<T>): t is T;
54
+ export declare function padArray<T>(array: T[], batchSize: number, generator: (index: number) => T): T[];
55
+ export declare function batch<T>(arr: T[], batchSize: number, dummy: (index: number) => T): T[][];
56
+ export type Reference<T> = {
57
+ set value(value: T);
58
+ get value(): T;
59
+ };
60
+ export declare function createReference<T>(initial: T): Reference<T>;
61
+ export declare namespace BigIntMath {
62
+ function max(...args: bigint[]): bigint;
63
+ }
64
+ export declare function assertDefined<T>(t: T | undefined, msg?: string): asserts t is T;
65
+ export {};
11
66
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEzE,wBAAgB,WAAW,CACzB,SAAS,EAAE,OAAO,EAClB,eAAe,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACrC,IAAI,CAMN;AAED,wBAAgB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAM3E;AAGD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAC9B,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC,GACrC,KAAK,CAMP"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/dist/utils.js CHANGED
@@ -1,4 +1,5 @@
1
- import { Field } from "snarkyjs";
1
+ import { Field, Poseidon, } from "o1js";
2
+ import _ from "lodash";
2
3
  export function requireTrue(condition, errorOrFunction) {
3
4
  if (!condition) {
4
5
  throw typeof errorOrFunction === "function"
@@ -6,12 +7,66 @@ export function requireTrue(condition, errorOrFunction) {
6
7
  : errorOrFunction;
7
8
  }
8
9
  }
9
- export function range(startOrEnd, end) {
10
+ /**
11
+ * Utility function to split an array of type T into a record <K, T[]> based on a
12
+ * function T => K that determines the key of each record
13
+ */
14
+ export function splitArray(arr, split) {
15
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
16
+ const record = {};
17
+ arr.forEach((element) => {
18
+ const k = split(element);
19
+ if (record[k] !== undefined) {
20
+ record[k].push(element);
21
+ }
22
+ else {
23
+ record[k] = [element];
24
+ }
25
+ });
26
+ return record;
27
+ }
28
+ export function range(startOrEnd, endOrNothing) {
29
+ let end = endOrNothing;
30
+ let start = startOrEnd;
10
31
  if (end === undefined) {
11
32
  end = startOrEnd;
12
- startOrEnd = 0;
33
+ start = 0;
34
+ }
35
+ return Array.from({ length: end - start }, (ignored, index) => index + start);
36
+ }
37
+ export function reduceSequential(array, callbackfn, initialValue) {
38
+ return array.reduce(async (previousPromise, current, index, arr) => {
39
+ const previous = await previousPromise;
40
+ return await callbackfn(previous, current, index, arr);
41
+ }, Promise.resolve(initialValue));
42
+ }
43
+ export function yieldSequential(array, callbackfn, initialValue) {
44
+ return reduceSequential(array, async ([state, collectedTargets], curr, index, arr) => {
45
+ const [newState, addition] = await callbackfn(state, curr, index, arr);
46
+ // The reason we wrap this in an array here is for a special case where Target is a tuple
47
+ // or array itself. In this case, js interprets by flattening the Value in the array
48
+ // (which it does when a function (like concat) uses a spread operator and the
49
+ // input is an array)
50
+ return [newState, collectedTargets.concat([addition])];
51
+ }, [initialValue, []]);
52
+ }
53
+ export function mapSequential(array, f) {
54
+ return array.reduce(async (r, element, index, a) => {
55
+ const ret = await r;
56
+ const next = await f(element, index, a);
57
+ ret.push(next);
58
+ return ret;
59
+ }, Promise.resolve([]));
60
+ }
61
+ export function unzip(array) {
62
+ const as = array.map(([a]) => a);
63
+ const bs = array.map(([, b]) => b);
64
+ return [as, bs];
65
+ }
66
+ export function assertSizeOneOrTwo(arr) {
67
+ if (!(arr.length === 1 || arr.length === 2)) {
68
+ throw new Error("Given array not size 1 or 2");
13
69
  }
14
- return Array.from({ length: end - startOrEnd }, (ignored, index) => index);
15
70
  }
16
71
  /**
17
72
  * Computes a dummy value for the given value type.
@@ -25,3 +80,97 @@ export function dummyValue(valueType) {
25
80
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
26
81
  return valueType.fromFields(fields);
27
82
  }
83
+ export function noop() { }
84
+ export async function sleep(ms) {
85
+ await new Promise((resolve) => {
86
+ setTimeout(resolve, ms);
87
+ });
88
+ }
89
+ export function filterNonNull(value) {
90
+ return value !== null;
91
+ }
92
+ export function filterNonUndefined(value) {
93
+ return value !== undefined;
94
+ }
95
+ const encoder = new TextEncoder();
96
+ // Copied from o1js binable.ts:317
97
+ export function prefixToField(prefix) {
98
+ const fieldSize = Field.sizeInBytes;
99
+ if (prefix.length >= fieldSize)
100
+ throw Error("prefix too long");
101
+ const stringBytes = [...encoder.encode(prefix)];
102
+ return Field.fromBytes(stringBytes.concat(Array(fieldSize - stringBytes.length).fill(0)));
103
+ }
104
+ export function hashWithPrefix(prefix, input) {
105
+ const salt = Poseidon.update([Field(0), Field(0), Field(0)], [prefixToField(prefix)]);
106
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
107
+ return Poseidon.update(salt, input)[0];
108
+ }
109
+ // end copy
110
+ export function expectDefined(value) {
111
+ expect(value).toBeDefined();
112
+ }
113
+ export const MAX_FIELD = Field(Field.ORDER - 1n);
114
+ /**
115
+ * Returns a boolean indicating whether a given class is a subclass of another class,
116
+ * indicated by the name parameter.
117
+ */
118
+ // TODO Change to class reference based comparisons
119
+ export function isSubtypeOfName(clas, name) {
120
+ if (clas === undefined || clas === null) {
121
+ return false;
122
+ }
123
+ if (clas.name === name) {
124
+ return true;
125
+ }
126
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
127
+ return isSubtypeOfName(Object.getPrototypeOf(clas), name);
128
+ }
129
+ // TODO Eventually, replace this by a schema validation library
130
+ export function safeParseJson(json) {
131
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
132
+ return JSON.parse(json);
133
+ }
134
+ export function isFull(t) {
135
+ return Object.values(t).findIndex((v) => v === undefined) === -1;
136
+ }
137
+ // TODO Restructure utils into separate package and multiple files
138
+ export function padArray(array, batchSize, generator) {
139
+ const slice = array.slice();
140
+ const dummies = range(0, batchSize - (array.length % batchSize)).map((i) => generator(i + array.length));
141
+ slice.push(...dummies);
142
+ return slice;
143
+ }
144
+ export function batch(arr, batchSize, dummy) {
145
+ const padded = padArray(arr, batchSize, dummy);
146
+ const partitioned = _.groupBy(padded.map((v, i) => [v, i]), ([v, i]) => Math.floor(i / batchSize));
147
+ const numBatches = Math.ceil(arr.length / batchSize);
148
+ return range(0, numBatches).map((i) => partitioned[i].map((x) => x[0]));
149
+ }
150
+ class ReferenceObject {
151
+ constructor(internalValue) {
152
+ this.internalValue = internalValue;
153
+ }
154
+ get value() {
155
+ return this.internalValue;
156
+ }
157
+ set value(t) {
158
+ this.internalValue = t;
159
+ }
160
+ }
161
+ export function createReference(initial) {
162
+ return new ReferenceObject(initial);
163
+ }
164
+ export var BigIntMath;
165
+ (function (BigIntMath) {
166
+ function max(...args) {
167
+ return args.reduce((m, e) => (e > m ? e : m));
168
+ }
169
+ BigIntMath.max = max;
170
+ })(BigIntMath || (BigIntMath = {}));
171
+ export function assertDefined(t, msg) {
172
+ if (t === undefined) {
173
+ throw new Error(msg ?? "Value is undefined");
174
+ }
175
+ }
176
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import type { FlexibleProvable, Proof } from "snarkyjs";
1
+ import type { Proof } from "o1js";
2
+ import type { ArgumentTypes } from "./provableMethod";
2
3
  export declare class ProvableMethodExecutionResult {
3
4
  moduleName?: string;
4
5
  methodName?: string;
5
- args?: FlexibleProvable<unknown>[];
6
+ args?: ArgumentTypes;
6
7
  prover?: () => Promise<Proof<unknown, unknown>>;
7
8
  prove<ProofType extends Proof<unknown, unknown>>(): Promise<ProofType>;
8
9
  }
@@ -29,7 +30,7 @@ export declare class ProvableMethodExecutionContext {
29
30
  *
30
31
  * @param methodName - Name of the method being captured in the context
31
32
  */
32
- beforeMethod(moduleName: string, methodName: string, args: FlexibleProvable<unknown>[]): void;
33
+ beforeMethod(moduleName: string, methodName: string, args: ArgumentTypes): void;
33
34
  /**
34
35
  * Removes the latest method from the execution context stack,
35
36
  * keeping track of the amount of 'unfinished' methods. Allowing
@@ -1 +1 @@
1
- {"version":3,"file":"ProvableMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../src/zkProgrammable/ProvableMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAaxD,qBAAa,6BAA6B;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;IAEnC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1C,KAAK,CAEhB,SAAS,SAAS,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KACtC,OAAO,CAAC,SAAS,CAAC;CAaxB;AAED;;;;GAIG;AACH,qBACa,8BAA8B;IAClC,EAAE,SAAc;IAEhB,OAAO,EAAE,MAAM,EAAE,CAAM;IAEvB,MAAM,EAAE,6BAA6B,CACN;IAItC;;;;;;OAMG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAI/D;;;;;OAKG;IACI,YAAY,CACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAYnC;;;;OAIG;IACI,WAAW;IAIlB,IAAW,UAAU,YAEpB;IAED,IAAW,UAAU,YAEpB;IAED;;OAEG;IACI,OAAO;;;;IAOd;;OAEG;IACI,KAAK;CAGb"}
1
+ {"version":3,"file":"ProvableMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../src/zkProgrammable/ProvableMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAIlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWtD,qBAAa,6BAA6B;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1C,KAAK,CAChB,SAAS,SAAS,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KACtC,OAAO,CAAC,SAAS,CAAC;CAaxB;AAED;;;;GAIG;AACH,qBACa,8BAA8B;IAClC,EAAE,SAAc;IAEhB,OAAO,EAAE,MAAM,EAAE,CAAM;IAEvB,MAAM,EAAE,6BAA6B,CACN;IAGtC;;;;;;OAMG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAI/D;;;;;OAKG;IACI,YAAY,CACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa;IAYrB;;;;OAIG;IACI,WAAW;IAIlB,IAAW,UAAU,YAEpB;IAED,IAAW,UAAU,YAEpB;IAED;;OAEG;IACI,OAAO;;;;IAOd;;OAEG;IACI,KAAK;CAGb"}
@@ -29,13 +29,12 @@ export class ProvableMethodExecutionResult {
29
29
  * allowing them to post relevant information (such as execution status)
30
30
  * into the context without any unnecessary 'prop drilling'.
31
31
  */
32
- let ProvableMethodExecutionContext = class ProvableMethodExecutionContext {
32
+ export let ProvableMethodExecutionContext = class ProvableMethodExecutionContext {
33
33
  constructor() {
34
34
  this.id = uniqueId();
35
35
  this.methods = [];
36
36
  this.result = new ProvableMethodExecutionResult();
37
37
  }
38
- // eslint-disable-next-line no-warning-comments,max-len
39
38
  // TODO See if we should make this class generic, bc I think we can persist the type
40
39
  /**
41
40
  * Adds a method prover to the current execution context,
@@ -95,4 +94,4 @@ let ProvableMethodExecutionContext = class ProvableMethodExecutionContext {
95
94
  ProvableMethodExecutionContext = __decorate([
96
95
  singleton()
97
96
  ], ProvableMethodExecutionContext);
98
- export { ProvableMethodExecutionContext };
97
+ //# sourceMappingURL=ProvableMethodExecutionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableMethodExecutionContext.js","sourceRoot":"","sources":["../../src/zkProgrammable/ProvableMethodExecutionContext.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAIvC,MAAM,MAAM,GAAG;IACb,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC;IAE1E,YAAY,EAAE,CAAC,UAAkB,EAAE,UAAkB,EAAE,EAAE,CACvD,IAAI,KAAK,CACP,uBAAuB,UAAU,IAAI,UAAU,4CAA4C,CAC5F;CACJ,CAAC;AAEF,MAAM,OAAO,6BAA6B;IASjC,KAAK,CAAC,KAAK;QAGhB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,yEAAyE;YACzE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACxC,MAAM,MAAM,CAAC,wBAAwB,EAAE,CAAC;aACzC;YACD,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SAC7D;QAED,qDAAqD;QACrD,yEAAyE;QACzE,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAc,CAAC;IAC5C,CAAC;CACF;AAED;;;;GAIG;AAEI,WAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAApC;QACE,OAAE,GAAG,QAAQ,EAAE,CAAC;QAEhB,YAAO,GAAa,EAAE,CAAC;QAEvB,WAAM,GACX,IAAI,6BAA6B,EAAE,CAAC;IAoExC,CAAC;IAlEC,oFAAoF;IACpF;;;;;;OAMG;IACI,SAAS,CAAC,MAA8C;QAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,YAAY,CACjB,UAAkB,EAClB,UAAkB,EAClB,IAAmB;QAEnB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;SACzB;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,WAAW;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,MAAM,GAAG,IAAI,6BAA6B,EAAE,CAAC;IACpD,CAAC;CACF,CAAA;AA1EY,8BAA8B;IAD1C,SAAS,EAAE;GACC,8BAA8B,CA0E1C"}
@@ -1,6 +1,10 @@
1
- import { Experimental, FlexibleProvablePure, Proof } from "snarkyjs";
1
+ import { ZkProgram, FlexibleProvablePure, Proof, Field, Provable, Cache as O1Cache } from "o1js";
2
+ import type { CompileRegistry } from "../compiling/CompileRegistry";
2
3
  export interface CompileArtifact {
3
- verificationKey: string;
4
+ verificationKey: {
5
+ data: string;
6
+ hash: Field;
7
+ };
4
8
  }
5
9
  export interface AreProofsEnabled {
6
10
  areProofsEnabled: boolean;
@@ -10,21 +14,38 @@ export interface Verify<PublicInput, PublicOutput> {
10
14
  (proof: Proof<PublicInput, PublicOutput>): Promise<boolean>;
11
15
  }
12
16
  export interface Compile {
13
- (): Promise<CompileArtifact>;
17
+ (options?: {
18
+ cache?: O1Cache;
19
+ forceRecompile?: boolean;
20
+ proofsEnabled?: boolean;
21
+ withRuntimeTables?: boolean;
22
+ numChunks?: number;
23
+ lazyMode?: boolean;
24
+ }): Promise<CompileArtifact>;
14
25
  }
15
- export interface PlainZkProgram<PublicInput = undefined, PublicOutput = void> {
26
+ export interface PlainZkProgram<PublicInput = undefined, PublicOutput = undefined> {
27
+ name: string;
16
28
  compile: Compile;
17
29
  verify: Verify<PublicInput, PublicOutput>;
18
- Proof: ReturnType<typeof Experimental.ZkProgram.Proof<FlexibleProvablePure<PublicInput>, FlexibleProvablePure<PublicOutput>>>;
19
- methods: Record<string, ((...args: any) => Promise<Proof<PublicInput, PublicOutput>>) | ((publicInput: PublicInput, ...args: any) => Promise<Proof<PublicInput, PublicOutput>>)>;
30
+ Proof: ReturnType<typeof ZkProgram.Proof<FlexibleProvablePure<PublicInput>, FlexibleProvablePure<PublicOutput>>>;
31
+ methods: Record<string, ((...args: any) => Promise<{
32
+ proof: Proof<PublicInput, PublicOutput>;
33
+ auxiliaryOutput: any;
34
+ }>) | ((publicInput: PublicInput, ...args: any) => Promise<{
35
+ proof: Proof<PublicInput, PublicOutput>;
36
+ auxiliaryOutput: any;
37
+ }>)>;
38
+ analyzeMethods: () => Promise<Record<string, Awaited<ReturnType<typeof Provable.constraintSystem>>>>;
20
39
  }
21
40
  export declare function verifyToMockable<PublicInput, PublicOutput>(verify: Verify<PublicInput, PublicOutput>, { areProofsEnabled }: AreProofsEnabled): (proof: Proof<PublicInput, PublicOutput>) => Promise<boolean>;
22
- export declare const mockVerificationKey = "mock-verification-key";
23
- export declare function compileToMockable(compile: Compile, { areProofsEnabled }: AreProofsEnabled): () => Promise<CompileArtifact>;
41
+ export declare const MOCK_VERIFICATION_KEY: import("o1js/dist/node/lib/proof-system/verification-key").VerificationKey;
42
+ export declare function compileToMockable(compile: Compile, { areProofsEnabled }: AreProofsEnabled): Compile;
24
43
  export declare abstract class ZkProgrammable<PublicInput = undefined, PublicOutput = void> {
25
- abstract get appChain(): AreProofsEnabled | undefined;
26
- abstract zkProgramFactory(): PlainZkProgram<PublicInput, PublicOutput>;
27
- get zkProgram(): PlainZkProgram<PublicInput, PublicOutput>;
44
+ abstract get areProofsEnabled(): AreProofsEnabled | undefined;
45
+ abstract zkProgramFactory(): PlainZkProgram<PublicInput, PublicOutput>[];
46
+ private zkProgramSingleton?;
47
+ get zkProgram(): PlainZkProgram<PublicInput, PublicOutput>[];
48
+ compile(registry: CompileRegistry): Promise<Record<string, CompileArtifact>>;
28
49
  }
29
50
  export interface WithZkProgrammable<PublicInput = undefined, PublicOutput = void> {
30
51
  zkProgrammable: ZkProgrammable<PublicInput, PublicOutput>;
@@ -1 +1 @@
1
- {"version":3,"file":"ZkProgrammable.d.ts","sourceRoot":"","sources":["../../src/zkProgrammable/ZkProgrammable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAUrE,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,MAAM,CAAC,WAAW,EAAE,YAAY;IAC/C,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc,CAAC,WAAW,GAAG,SAAS,EAAE,YAAY,GAAG,IAAI;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC1C,KAAK,EAAE,UAAU,CACf,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,CACjC,oBAAoB,CAAC,WAAW,CAAC,EACjC,oBAAoB,CAAC,YAAY,CAAC,CACnC,CACF,CAAC;IACF,OAAO,EAAE,MAAM,CACb,MAAM,EACJ,CAAC,CAEC,GAAG,IAAI,EAAE,GAAG,KACT,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAC/C,CAAC,CACC,WAAW,EAAE,WAAW,EAExB,GAAG,IAAI,EAAE,GAAG,KACT,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAClD,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,YAAY,EACxD,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,EACzC,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,WAEjB,MAAM,WAAW,EAAE,YAAY,CAAC,sBAiBtD;AAED,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,GACrC,MAAM,OAAO,CAAC,eAAe,CAAC,CAUhC;AAED,8BAAsB,cAAc,CAClC,WAAW,GAAG,SAAS,EACvB,YAAY,GAAG,IAAI;IAEnB,aAAoB,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAAC;aAE7C,gBAAgB,IAAI,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC;IAE7E,IACW,SAAS,IAAI,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAYhE;CACF;AAED,MAAM,WAAW,kBAAkB,CACjC,WAAW,GAAG,SAAS,EACvB,YAAY,GAAG,IAAI;IAEnB,cAAc,EAAE,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;CAC3D"}
1
+ {"version":3,"file":"ZkProgrammable.d.ts","sourceRoot":"","sources":["../../src/zkProgrammable/ZkProgrammable.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { Memoize } from "typescript-memoize";
11
- import { mockProof } from "./provableMethod";
11
+ import { log } from "../log";
12
+ import { dummyVerificationKey } from "../dummyVerificationKey";
13
+ import { reduceSequential } from "../utils";
14
+ import { MOCK_PROOF } from "./provableMethod";
12
15
  const errors = {
13
- appChainNotSet: (name) => new Error(`Appchain was not injected for: ${name}`),
16
+ areProofsEnabledNotSet: (name) => new Error(`AreProofsEnabled was not injected for: ${name}`),
14
17
  };
15
18
  export function verifyToMockable(verify, { areProofsEnabled }) {
16
19
  return async (proof) => {
@@ -21,40 +24,56 @@ export function verifyToMockable(verify, { areProofsEnabled }) {
21
24
  }
22
25
  catch (error) {
23
26
  // silently fail verification
24
- console.error(error);
27
+ log.error(error);
25
28
  verified = false;
26
29
  }
27
30
  return verified;
28
31
  }
29
- return proof.proof === mockProof;
32
+ return proof.proof === MOCK_PROOF;
30
33
  };
31
34
  }
32
- export const mockVerificationKey = "mock-verification-key";
35
+ export const MOCK_VERIFICATION_KEY = dummyVerificationKey();
33
36
  export function compileToMockable(compile, { areProofsEnabled }) {
34
- return async () => {
37
+ return async (...args) => {
35
38
  if (areProofsEnabled) {
36
- return await compile();
39
+ return await compile(...args);
37
40
  }
38
41
  return {
39
- verificationKey: mockVerificationKey,
42
+ verificationKey: MOCK_VERIFICATION_KEY,
40
43
  };
41
44
  };
42
45
  }
43
46
  export class ZkProgrammable {
44
47
  get zkProgram() {
45
- const zkProgram = this.zkProgramFactory();
46
- if (!this.appChain) {
47
- throw errors.appChainNotSet(this.constructor.name);
48
+ if (this.zkProgramSingleton === undefined) {
49
+ this.zkProgramSingleton = this.zkProgramFactory();
48
50
  }
49
- return {
50
- ...zkProgram,
51
- verify: verifyToMockable(zkProgram.verify, this.appChain),
52
- compile: compileToMockable(zkProgram.compile, this.appChain),
53
- };
51
+ return this.zkProgramSingleton.map((bucket) => {
52
+ if (!this.areProofsEnabled) {
53
+ throw errors.areProofsEnabledNotSet(this.constructor.name);
54
+ }
55
+ return {
56
+ ...bucket,
57
+ verify: verifyToMockable(bucket.verify, this.areProofsEnabled),
58
+ compile: compileToMockable(bucket.compile, this.areProofsEnabled),
59
+ };
60
+ });
61
+ }
62
+ async compile(registry) {
63
+ return await reduceSequential(this.zkProgram, async (acc, program) => {
64
+ const result = await registry.compile(program);
65
+ return {
66
+ ...acc,
67
+ [program.name]: result,
68
+ };
69
+ },
70
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
71
+ {});
54
72
  }
55
73
  }
56
74
  __decorate([
57
75
  Memoize(),
58
- __metadata("design:type", Object),
76
+ __metadata("design:type", Array),
59
77
  __metadata("design:paramtypes", [])
60
78
  ], ZkProgrammable.prototype, "zkProgram", null);
79
+ //# sourceMappingURL=ZkProgrammable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZkProgrammable.js","sourceRoot":"","sources":["../../src/zkProgrammable/ZkProgrammable.ts"],"names":[],"mappings":";;;;;;;;;AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,GAAG;IACb,sBAAsB,EAAE,CAAC,IAAY,EAAE,EAAE,CACvC,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC;CAC9D,CAAC;AA6DF,MAAM,UAAU,gBAAgB,CAC9B,MAAyC,EACzC,EAAE,gBAAgB,EAAoB;IAEtC,OAAO,KAAK,EAAE,KAAuC,EAAE,EAAE;QACvD,IAAI,gBAAgB,EAAE;YACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,IAAI;gBACF,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;aAChC;YAAC,OAAO,KAAc,EAAE;gBACvB,6BAA6B;gBAC7B,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjB,QAAQ,GAAG,KAAK,CAAC;aAClB;YAED,OAAO,QAAQ,CAAC;SACjB;QAED,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,EAAE,CAAC;AAE5D,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,EAAE,gBAAgB,EAAoB;IAEtC,OAAO,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;QACvB,IAAI,gBAAgB,EAAE;YACpB,OAAO,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;SAC/B;QAED,OAAO;YACL,eAAe,EAAE,qBAAqB;SACvC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAgB,cAAc;IAalC,IACW,SAAS;QAClB,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACnD;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,MAAM,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC5D;YACD,OAAO;gBACL,GAAG,MAAM;gBACT,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC;gBAC9D,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;aAClE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAyB;QAC5C,OAAO,MAAM,gBAAgB,CAC3B,IAAI,CAAC,SAAS,EACd,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO;gBACL,GAAG,GAAG;gBACN,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM;aACvB,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,EAAqC,CACtC,CAAC;IACJ,CAAC;CACF;AAhCC;IAAC,OAAO,EAAE;;;+CAgBT"}
@@ -1,8 +1,11 @@
1
+ import { Proof, DynamicProof } from "o1js";
1
2
  import { ProvableMethodExecutionContext } from "./ProvableMethodExecutionContext";
2
3
  import type { WithZkProgrammable, ZkProgrammable } from "./ZkProgrammable";
3
- export type DecoratedMethod = (...args: unknown[]) => unknown;
4
- export declare const mockProof = "mock-proof";
5
- export declare function toProver(methodName: string, simulatedMethod: DecoratedMethod, isFirstParameterPublicInput: boolean, ...args: unknown[]): (this: ZkProgrammable<any, any>) => Promise<import("snarkyjs/dist/node/lib/proof_system").Proof<any, any>>;
4
+ export type O1JSPrimitive = object | string | boolean | number;
5
+ export type ArgumentTypes = (O1JSPrimitive | Proof<unknown, unknown> | DynamicProof<unknown, unknown>)[];
6
+ export type DecoratedMethod = (...args: ArgumentTypes) => Promise<unknown>;
7
+ export declare const MOCK_PROOF = "mock-proof";
8
+ export declare function toProver(methodName: string, simulatedMethod: DecoratedMethod, isFirstParameterPublicInput: boolean, ...args: ArgumentTypes): (this: ZkProgrammable<any, any>) => Promise<Proof<any, any>>;
6
9
  /**
7
10
  * Decorates a provable method on a 'prover class', depending on
8
11
  * if proofs are enabled or not, either runs the respective zkProgram prover,
@@ -12,5 +15,5 @@ export declare function toProver(methodName: string, simulatedMethod: DecoratedM
12
15
  * @param executionContext
13
16
  * @returns
14
17
  */
15
- export declare function provableMethod(isFirstParameterPublicInput?: boolean, executionContext?: ProvableMethodExecutionContext): <Target extends ZkProgrammable<any, any> | WithZkProgrammable<any, any>>(target: Target, methodName: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
18
+ export declare function provableMethod(isFirstParameterPublicInput?: boolean, executionContext?: ProvableMethodExecutionContext): <Target extends ZkProgrammable<any, any> | WithZkProgrammable<any, any>>(target: Target, methodName: string, descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any> | any>) => TypedPropertyDescriptor<(...args: any[]) => Promise<any> | any>;
16
19
  //# sourceMappingURL=provableMethod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provableMethod.d.ts","sourceRoot":"","sources":["../../src/zkProgrammable/provableMethod.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG3E,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE9D,eAAO,MAAM,SAAS,eAAe,CAAC;AAEtC,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,eAAe,EAChC,2BAA2B,EAAE,OAAO,EACpC,GAAG,IAAI,EAAE,OAAO,EAAE,UAGiB,eAAe,GAAG,EAAE,GAAG,CAAC,4EAyB5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,2BAA2B,UAAO,EAClC,gBAAgB,GAAE,8BAEjB,wGAOa,MAAM,cACN,kBAAkB,wBA4CjC"}
1
+ {"version":3,"file":"provableMethod.d.ts","sourceRoot":"","sources":["../../src/zkProgrammable/provableMethod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAG3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG3E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG,CACxB,aAAa,GACb,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,GACvB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CACjC,EAAE,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE3E,eAAO,MAAM,UAAU,eAAe,CAAC;AAGvC,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,eAAe,EAChC,2BAA2B,EAAE,OAAO,EACpC,GAAG,IAAI,EAAE,aAAa,UAEa,eAAe,GAAG,EAAE,GAAG,CAAC,8BA+C5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,2BAA2B,UAAO,EAClC,gBAAgB,GAAE,8BAEjB,wGAMa,MAAM,gDAC4B,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,wCAA5B,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,EA2C7E"}
@@ -1,22 +1,38 @@
1
1
  import { container } from "tsyringe";
2
2
  import { ProvableMethodExecutionContext } from "./ProvableMethodExecutionContext";
3
- export const mockProof = "mock-proof";
3
+ export const MOCK_PROOF = "mock-proof";
4
+ // (await Proof.dummy(Field(0), Field(0), 2)).proof as string;
4
5
  export function toProver(methodName, simulatedMethod, isFirstParameterPublicInput, ...args) {
5
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
6
  return async function prover() {
7
- const areProofsEnabled = this.appChain?.areProofsEnabled;
8
- if (areProofsEnabled ?? false) {
9
- const programProvableMethod = this.zkProgram.methods[methodName];
10
- return await Reflect.apply(programProvableMethod, this, args);
7
+ const { areProofsEnabled } = this.areProofsEnabled;
8
+ const zkProgram = this.zkProgram.find((prog) => Object.keys(prog.methods).includes(methodName));
9
+ if (zkProgram === undefined) {
10
+ throw new Error(`Correct ZkProgram not found (searching for method ${methodName})`);
11
11
  }
12
- // create a mock proof by simulating method execution in JS
13
- const publicOutput = Reflect.apply(simulatedMethod, this, args);
14
- return new this.zkProgram.Proof({
15
- proof: mockProof,
16
- // eslint-disable-next-line no-warning-comments
12
+ if (areProofsEnabled) {
13
+ const programProvableMethod = zkProgram.methods[methodName];
14
+ const result = await Reflect.apply(programProvableMethod, this, args);
15
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
16
+ return result.proof;
17
+ }
18
+ // create a mock proof by simulating method> execution in JS
19
+ const publicOutput = await Reflect.apply(simulatedMethod, this, args);
20
+ return new zkProgram.Proof({
21
+ proof: MOCK_PROOF,
17
22
  // TODO: provide undefined if public input is not used
18
23
  publicInput: isFirstParameterPublicInput ? args[0] : undefined,
19
- publicOutput,
24
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
25
+ publicOutput: (() => {
26
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
27
+ if (!publicOutput || typeof publicOutput !== "object") {
28
+ return undefined;
29
+ }
30
+ if ("publicOutput" in publicOutput) {
31
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
32
+ return publicOutput.publicOutput;
33
+ }
34
+ return publicOutput;
35
+ })(),
20
36
  /**
21
37
  * We set this to the max possible number, to avoid having
22
38
  * to manually count in-circuit proof verifications
@@ -38,7 +54,7 @@ export function provableMethod(isFirstParameterPublicInput = true, executionCont
38
54
  return (target, methodName, descriptor) => {
39
55
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
40
56
  const simulatedMethod = descriptor.value;
41
- descriptor.value = function value(...args) {
57
+ descriptor.value = async function value(...args) {
42
58
  const prover = toProver(methodName, simulatedMethod, isFirstParameterPublicInput, ...args);
43
59
  executionContext.beforeMethod(this.constructor.name, methodName, args);
44
60
  /**
@@ -53,7 +69,6 @@ export function provableMethod(isFirstParameterPublicInput = true, executionCont
53
69
  * or not, execute its simulated (Javascript) version and
54
70
  * return the result.
55
71
  */
56
- // eslint-disable-next-line @typescript-eslint/init-declarations
57
72
  let result;
58
73
  try {
59
74
  result = Reflect.apply(simulatedMethod, this, args);
@@ -66,3 +81,4 @@ export function provableMethod(isFirstParameterPublicInput = true, executionCont
66
81
  return descriptor;
67
82
  };
68
83
  }
84
+ //# sourceMappingURL=provableMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provableMethod.js","sourceRoot":"","sources":["../../src/zkProgrammable/provableMethod.ts"],"names":[],"mappings":"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"}
package/jest.config.cjs CHANGED
@@ -1 +1,12 @@
1
- module.exports = require("../../jest.config.cjs");
1
+ // @ts-ignore
2
+ const config = require("../../jest.config.cjs");
3
+
4
+ module.exports = {
5
+ ...config,
6
+ collectCoverageFrom: [
7
+ "packages/common/src/**",
8
+ "!**/node_modules/**",
9
+ "!**/dist/**",
10
+ ],
11
+ coverageDirectory: "coverage/common",
12
+ };