arnaucube
arnaucube/snarkjsPublic Self-hosted repository
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}