Skip to content

Commit

Permalink
Merge pull request o1-labs#174 from Comdex/main
Browse files Browse the repository at this point in the history
Remove the sorting of Object keys in Struct related methods
  • Loading branch information
mitschabaude committed Oct 6, 2023
2 parents 32625b9 + 74cdcde commit 721e2b1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
14 changes: 7 additions & 7 deletions lib/provable-generic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ function createProvable<Field>(): ProvableConstructor<Field> {
if (Array.isArray(typeObj))
return typeObj.map((t, i) => toFields(t, obj[i])).flat();
if ('toFields' in typeObj) return typeObj.toFields(obj);
return (isToplevel ? objectKeys : Object.keys(typeObj).sort())
return (isToplevel ? objectKeys : Object.keys(typeObj))
.map((k) => toFields(typeObj[k], obj[k]))
.flat();
}
Expand All @@ -81,7 +81,7 @@ function createProvable<Field>(): ProvableConstructor<Field> {
if (Array.isArray(typeObj))
return typeObj.map((t, i) => toAuxiliary(t, obj?.[i]));
if ('toAuxiliary' in typeObj) return typeObj.toAuxiliary(obj);
return (isToplevel ? objectKeys : Object.keys(typeObj).sort()).map((k) =>
return (isToplevel ? objectKeys : Object.keys(typeObj)).map((k) =>
toAuxiliary(typeObj[k], obj?.[k])
);
}
Expand All @@ -98,7 +98,7 @@ function createProvable<Field>(): ProvableConstructor<Field> {
if ('toFields' in typeObj) {
return { fields: typeObj.toFields(obj) };
}
return (isToplevel ? objectKeys : Object.keys(typeObj).sort())
return (isToplevel ? objectKeys : Object.keys(typeObj))
.map((k) => toInput(typeObj[k], obj[k]))
.reduce(HashInput.append, HashInput.empty);
}
Expand All @@ -113,7 +113,7 @@ function createProvable<Field>(): ProvableConstructor<Field> {
return typeObj.map((t, i) => toJSON(t, obj[i]));
if ('toJSON' in typeObj) return typeObj.toJSON(obj);
return Object.fromEntries(
(isToplevel ? objectKeys : Object.keys(typeObj).sort()).map((k) => [
(isToplevel ? objectKeys : Object.keys(typeObj)).map((k) => [
k,
toJSON(typeObj[k], obj[k]),
])
Expand Down Expand Up @@ -150,7 +150,7 @@ function createProvable<Field>(): ProvableConstructor<Field> {
return array;
}
if ('fromFields' in typeObj) return typeObj.fromFields(fields, aux);
let keys = isToplevel ? objectKeys : Object.keys(typeObj).sort();
let keys = isToplevel ? objectKeys : Object.keys(typeObj);
let values = fromFields(
keys.map((k) => typeObj[k]),
fields,
Expand All @@ -168,7 +168,7 @@ function createProvable<Field>(): ProvableConstructor<Field> {
if (Array.isArray(typeObj))
return typeObj.map((t, i) => fromJSON(t, json[i]));
if ('fromJSON' in typeObj) return typeObj.fromJSON(json);
let keys = isToplevel ? objectKeys : Object.keys(typeObj).sort();
let keys = isToplevel ? objectKeys : Object.keys(typeObj);
let values = fromJSON(
keys.map((k) => typeObj[k]),
json
Expand All @@ -182,7 +182,7 @@ function createProvable<Field>(): ProvableConstructor<Field> {
if (Array.isArray(typeObj))
return typeObj.forEach((t, i) => check(t, obj[i]));
if ('check' in typeObj) return typeObj.check(obj);
return (isToplevel ? objectKeys : Object.keys(typeObj).sort()).forEach(
return (isToplevel ? objectKeys : Object.keys(typeObj)).forEach(
(k) => check(typeObj[k], obj[k])
);
}
Expand Down
14 changes: 7 additions & 7 deletions lib/provable-snarky.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ function provable<A>(
if (Array.isArray(typeObj))
return typeObj.map((t, i) => toFields(t, obj[i])).flat();
if ('toFields' in typeObj) return typeObj.toFields(obj);
return (isToplevel ? objectKeys : Object.keys(typeObj).sort())
return (isToplevel ? objectKeys : Object.keys(typeObj))
.map((k) => toFields(typeObj[k], obj[k]))
.flat();
}
Expand All @@ -95,7 +95,7 @@ function provable<A>(
if (Array.isArray(typeObj))
return typeObj.map((t, i) => toAuxiliary(t, obj?.[i]));
if ('toAuxiliary' in typeObj) return typeObj.toAuxiliary(obj);
return (isToplevel ? objectKeys : Object.keys(typeObj).sort()).map((k) =>
return (isToplevel ? objectKeys : Object.keys(typeObj)).map((k) =>
toAuxiliary(typeObj[k], obj?.[k])
);
}
Expand All @@ -110,7 +110,7 @@ function provable<A>(
if ('toFields' in typeObj) {
return { fields: typeObj.toFields(obj) };
}
return (isToplevel ? objectKeys : Object.keys(typeObj).sort())
return (isToplevel ? objectKeys : Object.keys(typeObj))
.map((k) => toInput(typeObj[k], obj[k]))
.reduce(HashInput.append, HashInput.empty);
}
Expand All @@ -124,7 +124,7 @@ function provable<A>(
if (Array.isArray(typeObj)) return typeObj.map((t, i) => toJSON(t, obj[i]));
if ('toJSON' in typeObj) return typeObj.toJSON(obj);
return Object.fromEntries(
(isToplevel ? objectKeys : Object.keys(typeObj).sort()).map((k) => [
(isToplevel ? objectKeys : Object.keys(typeObj)).map((k) => [
k,
toJSON(typeObj[k], obj[k]),
])
Expand Down Expand Up @@ -160,7 +160,7 @@ function provable<A>(
return array;
}
if ('fromFields' in typeObj) return typeObj.fromFields(fields, aux);
let keys = isToplevel ? objectKeys : Object.keys(typeObj).sort();
let keys = isToplevel ? objectKeys : Object.keys(typeObj);
let values = fromFields(
keys.map((k) => typeObj[k]),
fields,
Expand All @@ -177,7 +177,7 @@ function provable<A>(
if (Array.isArray(typeObj))
return typeObj.map((t, i) => fromJSON(t, json[i]));
if ('fromJSON' in typeObj) return typeObj.fromJSON(json);
let keys = isToplevel ? objectKeys : Object.keys(typeObj).sort();
let keys = isToplevel ? objectKeys : Object.keys(typeObj);
let values = fromJSON(
keys.map((k) => typeObj[k]),
keys.map((k) => json[k])
Expand All @@ -189,7 +189,7 @@ function provable<A>(
if (Array.isArray(typeObj))
return typeObj.forEach((t, i) => check(t, obj[i]));
if ('check' in typeObj) return typeObj.check(obj);
return (isToplevel ? objectKeys : Object.keys(typeObj).sort()).forEach(
return (isToplevel ? objectKeys : Object.keys(typeObj)).forEach(
(k) => check(typeObj[k], obj[k])
);
}
Expand Down

0 comments on commit 721e2b1

Please sign in to comment.