23 lines
614 B
JavaScript
23 lines
614 B
JavaScript
|
import { addContextToErr } from "./err.js";
|
||
|
import { objAsString } from "./objAsString.js";
|
||
|
// jsonStringify is a replacement for JSON.stringify that returns an error
|
||
|
// rather than throwing.
|
||
|
function jsonStringify(obj) {
|
||
|
try {
|
||
|
const str = JSON.stringify(obj, (_, v) => {
|
||
|
if (typeof v === "bigint") {
|
||
|
return Number(v);
|
||
|
}
|
||
|
return v;
|
||
|
});
|
||
|
return [str, null];
|
||
|
}
|
||
|
catch (err) {
|
||
|
return [
|
||
|
"",
|
||
|
addContextToErr(objAsString(err), "unable to stringify object"),
|
||
|
];
|
||
|
}
|
||
|
}
|
||
|
export { jsonStringify };
|