snarkjs/src/stringifybigint.js
src/stringifybigint.jsRaw
1const bigInt = require("./bigint.js");
2
3module.exports.stringifyBigInts = stringifyBigInts;
4module.exports.unstringifyBigInts = unstringifyBigInts;
5
6function stringifyBigInts(o) {
7 if ((typeof(o) == "bigint") || (o instanceof bigInt)) {
8 return o.toString(10);
9 } else if (Array.isArray(o)) {
10 return o.map(stringifyBigInts);
11 } else if (typeof o == "object") {
12 const res = {};
13 for (let k in o) {
14 res[k] = stringifyBigInts(o[k]);
15 }
16 return res;
17 } else {
18 return o;
19 }
20}
21
22function unstringifyBigInts(o) {
23 if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
24 return bigInt(o);
25 } else if (Array.isArray(o)) {
26 return o.map(unstringifyBigInts);
27 } else if (typeof o == "object") {
28 const res = {};
29 for (let k in o) {
30 res[k] = unstringifyBigInts(o[k]);
31 }
32 return res;
33 } else {
34 return o;
35 }
36}