Skip to content

Commit 4775d65

Browse files
committed
fix fromFields for DynamicArray
1 parent b3016b7 commit 4775d65

File tree

3 files changed

+20
-11
lines changed

3 files changed

+20
-11
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@auxo-dev/auxo-libs",
3-
"version": "0.2.8",
3+
"version": "0.2.9",
44
"description": "",
55
"author": "",
66
"license": "Apache-2.0",

src/DynamicArray.test.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ describe('DynamicArray', () => {
5555
);
5656
fieldDeserialized.length.assertEquals(fieldArray.length);
5757
for (let i = 0; i < fieldArray.values.length; i++) {
58-
(fieldDeserialized as DynamicFieldArray)
59-
.get(Field(i))
60-
.assertEquals(fieldArray.get(Field(i)));
58+
fieldDeserialized.get(Field(i)).assertEquals(fieldArray.get(Field(i)));
6159
}
6260

6361
// Group
@@ -69,9 +67,7 @@ describe('DynamicArray', () => {
6967
);
7068
groupDeserialized.length.assertEquals(groupArray.length);
7169
for (let i = 0; i < groupArray.values.length; i++) {
72-
(groupDeserialized as DynamicGroupArray)
73-
.get(Field(i))
74-
.assertEquals(groupArray.get(Field(i)));
70+
groupDeserialized.get(Field(i)).assertEquals(groupArray.get(Field(i)));
7571
}
7672

7773
// Scalar
@@ -86,9 +82,7 @@ describe('DynamicArray', () => {
8682
);
8783
scalarDeserialized.length.assertEquals(scalarArray.length);
8884
for (let i = 0; i < scalarArray.values.length; i++) {
89-
(scalarDeserialized as DynamicScalarArray)
90-
.get(Field(i))
91-
.assertEquals(scalarArray.get(Field(i)));
85+
scalarDeserialized.get(Field(i)).assertEquals(scalarArray.get(Field(i)));
9286
}
9387
});
9488
});

src/DynamicArray.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ export function PublicKeyDynamicArray(maxLength: number) {
4545

4646
export function DynamicArray<T>(type: ProvablePure<T>, maxLength: number) {
4747
const _type = hashable(type);
48-
4948
return class _DynamicArray extends Struct({
5049
length: Field,
5150
values: Provable.Array(type, maxLength),
@@ -54,6 +53,22 @@ export function DynamicArray<T>(type: ProvablePure<T>, maxLength: number) {
5453
return new _DynamicArray(values);
5554
}
5655

56+
static fromFields(fields: Field[]): _DynamicArray {
57+
let length = fields[0];
58+
let sizeInFields = type.sizeInFields();
59+
let values: T[] = [];
60+
Provable.asProver(() => {
61+
for (let i = 0; i < Number(length); i++) {
62+
values.push(
63+
type.fromFields(
64+
fields.slice(1 + sizeInFields * i, 1 + sizeInFields * (i + 1))
65+
)
66+
);
67+
}
68+
});
69+
return new _DynamicArray(values);
70+
}
71+
5772
static empty(length?: Field): _DynamicArray {
5873
const arr = new _DynamicArray();
5974
arr.length = length ?? Field(0);

0 commit comments

Comments
 (0)