79 lines
2.3 KiB
JavaScript
79 lines
2.3 KiB
JavaScript
'use strict';Object.defineProperty(exports, "__esModule", { value: true });exports.default =
|
|
|
|
|
|
|
|
jsonStringify;var _repeatString = require('repeat-string');var _repeatString2 = _interopRequireDefault(_repeatString);var _type = require('./type');var _type2 = _interopRequireDefault(_type);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function jsonStringify(object, depth) {
|
|
depth = depth || 1;
|
|
|
|
switch ((0, _type2.default)(object)) {
|
|
case 'boolean':
|
|
case 'regexp':
|
|
case 'symbol':
|
|
return object.toString();
|
|
case 'null':
|
|
case 'undefined':
|
|
return '[' + object + ']';
|
|
case 'array':
|
|
case 'object':
|
|
return jsonStringifyProperties(object, depth);
|
|
case 'number':
|
|
if (object === 0 && 1 / object === -Infinity) {
|
|
return '-0';
|
|
} else {
|
|
return object.toString();
|
|
}
|
|
case 'date':
|
|
return jsonStringifyDate(object);
|
|
case 'buffer':
|
|
return jsonStringifyBuffer(object, depth);
|
|
default:
|
|
if (object === '[Function]' || object === '[Circular]') {
|
|
return object;
|
|
} else {
|
|
return JSON.stringify(object); // string
|
|
}}
|
|
|
|
}
|
|
|
|
|
|
function jsonStringifyBuffer(object, depth) {var _object$toJSON =
|
|
object.toJSON(),data = _object$toJSON.data;
|
|
return '[Buffer: ' + jsonStringify(data, depth) + ']';
|
|
}
|
|
|
|
|
|
function jsonStringifyDate(object) {
|
|
var str = void 0;
|
|
if (isNaN(object.getTime())) {
|
|
str = object.toString();
|
|
} else {
|
|
str = object.toISOString();
|
|
}
|
|
return '[Date: ' + str + ']';
|
|
}
|
|
|
|
|
|
function jsonStringifyProperties(object, depth) {
|
|
var space = 2 * depth;
|
|
var start = (0, _type2.default)(object) === 'array' ? '[' : '{';
|
|
var end = (0, _type2.default)(object) === 'array' ? ']' : '}';
|
|
var length = typeof object.length === 'number' ? object.length : Object.keys(object).length;
|
|
var addedProperties = 0;
|
|
var str = start;
|
|
|
|
for (var prop in object) {
|
|
if (Object.prototype.hasOwnProperty.call(object, prop)) {
|
|
addedProperties += 1;
|
|
str += '\n' + (0, _repeatString2.default)(' ', space) + (
|
|
(0, _type2.default)(object) === 'array' ? '' : '"' + prop + '": ') +
|
|
jsonStringify(object[prop], depth + 1) + (
|
|
addedProperties === length ? '' : ',');
|
|
}
|
|
}
|
|
|
|
if (str.length !== 1) {
|
|
str += '\n' + (0, _repeatString2.default)(' ', space - 2);
|
|
}
|
|
|
|
return str + end;
|
|
} |