@proto-kit/common 0.1.1-develop.340 → 0.1.1-develop.456
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.
- package/dist/config/ConfigurableModule.d.ts +2 -1
- package/dist/config/ConfigurableModule.d.ts.map +1 -1
- package/dist/config/ModuleContainer.d.ts +35 -11
- package/dist/config/ModuleContainer.d.ts.map +1 -1
- package/dist/config/ModuleContainer.js +86 -19
- package/dist/dependencyFactory/DependencyFactory.d.ts +13 -9
- package/dist/dependencyFactory/DependencyFactory.d.ts.map +1 -1
- package/dist/dependencyFactory/DependencyFactory.js +1 -97
- package/dist/events/EventEmitter.d.ts +14 -0
- package/dist/events/EventEmitter.d.ts.map +1 -0
- package/dist/events/EventEmitter.js +35 -0
- package/dist/events/EventEmitterProxy.d.ts +17 -0
- package/dist/events/EventEmitterProxy.d.ts.map +1 -0
- package/dist/events/EventEmitterProxy.js +21 -0
- package/dist/events/EventEmittingComponent.d.ts +6 -0
- package/dist/events/EventEmittingComponent.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/trees/InMemoryMerkleTreeStorage.d.ts +11 -0
- package/dist/trees/InMemoryMerkleTreeStorage.d.ts.map +1 -0
- package/dist/trees/InMemoryMerkleTreeStorage.js +12 -0
- package/dist/trees/MerkleTreeStore.d.ts +5 -0
- package/dist/trees/MerkleTreeStore.d.ts.map +1 -0
- package/dist/trees/MerkleTreeStore.js +1 -0
- package/dist/trees/MockAsyncMerkleStore.d.ts +9 -0
- package/dist/trees/MockAsyncMerkleStore.d.ts.map +1 -0
- package/dist/trees/MockAsyncMerkleStore.js +19 -0
- package/dist/trees/RollupMerkleTree.d.ts +126 -0
- package/dist/trees/RollupMerkleTree.d.ts.map +1 -0
- package/dist/trees/RollupMerkleTree.js +216 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/zkProgrammable/ZkProgrammable.d.ts +1 -1
- package/dist/zkProgrammable/ZkProgrammable.d.ts.map +1 -1
- package/dist/zkProgrammable/ZkProgrammable.js +4 -4
- package/dist/zkProgrammable/provableMethod.d.ts +1 -1
- package/dist/zkProgrammable/provableMethod.d.ts.map +1 -1
- package/dist/zkProgrammable/provableMethod.js +2 -2
- package/package.json +2 -2
- package/src/config/ConfigurableModule.ts +3 -1
- package/src/config/ModuleContainer.ts +150 -30
- package/src/dependencyFactory/DependencyFactory.ts +25 -114
- package/src/events/EventEmitter.ts +58 -0
- package/src/events/EventEmitterProxy.ts +57 -0
- package/src/events/EventEmittingComponent.ts +7 -0
- package/src/index.ts +7 -0
- package/src/trees/InMemoryMerkleTreeStorage.ts +17 -0
- package/src/trees/MerkleTreeStore.ts +5 -0
- package/src/trees/MockAsyncMerkleStore.ts +29 -0
- package/src/trees/RollupMerkleTree.ts +354 -0
- package/src/trees/VirtualMerkleTreeStore.ts +21 -0
- package/src/types.ts +12 -0
- package/src/zkProgrammable/ZkProgrammable.ts +5 -4
- package/src/zkProgrammable/provableMethod.ts +2 -2
- package/test/config/ContainerEvents.test.ts +86 -0
- package/test/config/ModuleContainer.test.ts +111 -6
- package/test/trees/MerkleTree.test.ts +105 -0
- package/dist/config/ChildContainerStartable.d.ts +0 -5
- package/dist/config/ChildContainerStartable.d.ts.map +0 -1
- /package/dist/{config/ChildContainerStartable.js → events/EventEmittingComponent.js} +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { beforeEach } from "@jest/globals";
|
|
2
|
+
import { Field, Poseidon } from "o1js";
|
|
3
|
+
|
|
4
|
+
import { createMerkleTree, InMemoryMerkleTreeStorage, log } from "../../src";
|
|
5
|
+
|
|
6
|
+
describe.each([4, 16, 256])("cachedMerkleTree - %s", (height) => {
|
|
7
|
+
class RollupMerkleTree extends createMerkleTree(height) {}
|
|
8
|
+
class RollupMerkleTreeWitness extends RollupMerkleTree.WITNESS {}
|
|
9
|
+
|
|
10
|
+
let store: InMemoryMerkleTreeStorage;
|
|
11
|
+
let tree: RollupMerkleTree;
|
|
12
|
+
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
log.setLevel("DEBUG");
|
|
15
|
+
|
|
16
|
+
store = new InMemoryMerkleTreeStorage();
|
|
17
|
+
tree = new RollupMerkleTree(store);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("should have the same root when empty", () => {
|
|
21
|
+
expect.assertions(1);
|
|
22
|
+
|
|
23
|
+
expect(tree.getRoot().toBigInt()).toStrictEqual(
|
|
24
|
+
RollupMerkleTree.EMPTY_ROOT
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it("should have a different root when not empty", () => {
|
|
29
|
+
expect.assertions(1);
|
|
30
|
+
|
|
31
|
+
tree.setLeaf(1n, Field(1));
|
|
32
|
+
|
|
33
|
+
expect(tree.getRoot().toBigInt()).not.toStrictEqual(
|
|
34
|
+
RollupMerkleTree.EMPTY_ROOT
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("should have the same root after adding and removing item", () => {
|
|
39
|
+
expect.assertions(1);
|
|
40
|
+
|
|
41
|
+
tree.setLeaf(1n, Field(1));
|
|
42
|
+
|
|
43
|
+
const root = tree.getRoot();
|
|
44
|
+
|
|
45
|
+
tree.setLeaf(5n, Field(5));
|
|
46
|
+
tree.setLeaf(5n, Field(0));
|
|
47
|
+
|
|
48
|
+
expect(tree.getRoot().toBigInt()).toStrictEqual(root.toBigInt());
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("should provide correct witnesses", () => {
|
|
52
|
+
expect.assertions(1);
|
|
53
|
+
|
|
54
|
+
tree.setLeaf(1n, Field(1));
|
|
55
|
+
tree.setLeaf(5n, Field(5));
|
|
56
|
+
|
|
57
|
+
const witness = tree.getWitness(5n);
|
|
58
|
+
|
|
59
|
+
expect(witness.calculateRoot(Field(5)).toBigInt()).toStrictEqual(
|
|
60
|
+
tree.getRoot().toBigInt()
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("should have invalid witnesses with wrong values", () => {
|
|
65
|
+
expect.assertions(1);
|
|
66
|
+
|
|
67
|
+
tree.setLeaf(1n, Field(1));
|
|
68
|
+
tree.setLeaf(5n, Field(5));
|
|
69
|
+
|
|
70
|
+
const witness = tree.getWitness(5n);
|
|
71
|
+
|
|
72
|
+
expect(witness.calculateRoot(Field(6)).toBigInt()).not.toStrictEqual(
|
|
73
|
+
tree.getRoot().toBigInt()
|
|
74
|
+
);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("should have valid witnesses with changed value on the same leafs", () => {
|
|
78
|
+
expect.assertions(1);
|
|
79
|
+
|
|
80
|
+
tree.setLeaf(1n, Field(1));
|
|
81
|
+
tree.setLeaf(5n, Field(5));
|
|
82
|
+
|
|
83
|
+
const witness = tree.getWitness(5n);
|
|
84
|
+
|
|
85
|
+
tree.setLeaf(5n, Field(10));
|
|
86
|
+
|
|
87
|
+
expect(witness.calculateRoot(Field(10)).toBigInt()).toStrictEqual(
|
|
88
|
+
tree.getRoot().toBigInt()
|
|
89
|
+
);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("should throw for invalid index", () => {
|
|
93
|
+
expect.assertions(2);
|
|
94
|
+
|
|
95
|
+
const index = 2n ** BigInt(height) + 1n;
|
|
96
|
+
|
|
97
|
+
expect(() => {
|
|
98
|
+
tree.setLeaf(index, Field(1));
|
|
99
|
+
}).toThrow("Index greater than maximum leaf number");
|
|
100
|
+
|
|
101
|
+
expect(() => {
|
|
102
|
+
tree.getNode(0, index);
|
|
103
|
+
}).toThrow("Index greater than maximum leaf number");
|
|
104
|
+
});
|
|
105
|
+
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChildContainerStartable.d.ts","sourceRoot":"","sources":["../../src/config/ChildContainerStartable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAClE"}
|
|
File without changes
|