wallet-core/node_modules/es5-ext/json/safe-stringify.js

42 lines
910 B
JavaScript
Raw Normal View History

2017-08-14 05:01:11 +02:00
"use strict";
var compact = require("../array/#/compact")
, isObject = require("../object/is-object")
, toArray = require("../object/to-array")
, isArray = Array.isArray
, stringify = JSON.stringify;
2017-12-10 21:51:33 +01:00
module.exports = function self(value /*, replacer, space*/) {
2017-08-14 05:01:11 +02:00
var replacer = arguments[1], space = arguments[2];
try {
return stringify(value, replacer, space);
} catch (e) {
if (!isObject(value)) return null;
if (typeof value.toJSON === "function") return null;
if (isArray(value)) {
return (
"[" +
compact.call(
value.map(function (item) {
return self(item, replacer, space);
})
) +
"]"
);
}
return (
"{" +
compact
.call(
toArray(value, function (item, key) {
item = self(item, replacer, space);
if (!item) return null;
return stringify(key) + ":" + item;
})
)
.join(",") +
"}"
);
}
};