fast-safe-stringify
Advanced tools
Comparing version 1.0.8 to 1.0.9
var bench = require('fastbench') | ||
var inspect = require('util').inspect | ||
var jsonStringifySafe = require('json-stringify-safe') | ||
var fastSafeStringify= require('./') | ||
var fastSafeStringify = require('./') | ||
var obj = {foo: 1} | ||
@@ -13,23 +13,23 @@ obj.o = {obj: obj} | ||
var run = bench([ | ||
function inspectBench(cb) { | ||
function inspectBench (cb) { | ||
inspect(obj) | ||
setImmediate(cb) | ||
}, | ||
function jsonStringifySafeBench(cb) { | ||
function jsonStringifySafeBench (cb) { | ||
jsonStringifySafe(obj) | ||
setImmediate(cb) | ||
}, | ||
function fastSafeStringifyBench(cb) { | ||
function fastSafeStringifyBench (cb) { | ||
fastSafeStringify(obj) | ||
setImmediate(cb) | ||
}, | ||
function inspectDeepBench(cb) { | ||
function inspectDeepBench (cb) { | ||
inspect(deep) | ||
setImmediate(cb) | ||
}, | ||
function jsonStringifySafeDeepBench(cb) { | ||
function jsonStringifySafeDeepBench (cb) { | ||
jsonStringifySafe(deep) | ||
setImmediate(cb) | ||
}, | ||
function fastSafeStringifyDeepBench(cb) { | ||
function fastSafeStringifyDeepBench (cb) { | ||
fastSafeStringify(deep) | ||
@@ -36,0 +36,0 @@ setImmediate(cb) |
@@ -6,2 +6,2 @@ var safeStringify = require('./') | ||
console.log(safeStringify(o)) | ||
console.log(JSON.stringify(o)) //<-- throws | ||
console.log(JSON.stringify(o)) // <-- throws |
14
index.js
module.exports = stringify | ||
function stringify(obj) { | ||
function stringify (obj) { | ||
decirc(obj, '', [], null) | ||
return JSON.stringify(obj) | ||
} | ||
function Circle(val, k, parent) { | ||
function Circle (val, k, parent) { | ||
this.val = val | ||
@@ -12,7 +12,7 @@ this.k = k | ||
} | ||
Circle.prototype.toJSON = function toJSON() { | ||
this.parent[this.k] = this.val; | ||
return '[Circular]' | ||
Circle.prototype.toJSON = function toJSON () { | ||
this.parent[this.k] = this.val | ||
return '[Circular]' | ||
} | ||
function decirc(val, k, stack, parent) { | ||
function decirc (val, k, stack, parent) { | ||
var keys, len, i, pos | ||
@@ -36,2 +36,2 @@ if (typeof val !== 'object' || val === null) { return } | ||
} | ||
} | ||
} |
{ | ||
"name": "fast-safe-stringify", | ||
"version": "1.0.8", | ||
"version": "1.0.9", | ||
"description": "Safely and quickly serialize JavaScript objects", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "tap test.js" | ||
"test": "standard && tap test.js" | ||
}, | ||
@@ -14,2 +14,3 @@ "author": "David Mark Clements", | ||
"json-stringify-safe": "^5.0.1", | ||
"standard": "^6.0.8", | ||
"tap": "^5.7.0" | ||
@@ -16,0 +17,0 @@ }, |
32
test.js
@@ -5,3 +5,3 @@ var test = require('tap').test | ||
test('circular reference to root', function(assert) { | ||
test('circular reference to root', function (assert) { | ||
var fixture = {name: 'Tywin Lannister'} | ||
@@ -17,3 +17,3 @@ fixture.circle = fixture | ||
test('nested circular reference to root', function(assert) { | ||
test('nested circular reference to root', function (assert) { | ||
var fixture = {name: 'Tywin Lannister'} | ||
@@ -29,3 +29,3 @@ fixture.id = {circle: fixture} | ||
test('child circular reference', function(assert) { | ||
test('child circular reference', function (assert) { | ||
var fixture = {name: 'Tywin Lannister', child: {name: 'Tyrion Lannister'}} | ||
@@ -43,3 +43,3 @@ fixture.child.dinklage = fixture.child | ||
test('nested child circular reference', function(assert) { | ||
test('nested child circular reference', function (assert) { | ||
var fixture = {name: 'Tywin Lannister', child: {name: 'Tyrion Lannister'}} | ||
@@ -57,3 +57,3 @@ fixture.child.actor = {dinklage: fixture.child} | ||
test('circular objects in an array', function(assert) { | ||
test('circular objects in an array', function (assert) { | ||
var fixture = {name: 'Tywin Lannister'} | ||
@@ -69,3 +69,3 @@ fixture.hand = [fixture, fixture] | ||
test('nested circular references in an array', function(assert) { | ||
test('nested circular references in an array', function (assert) { | ||
var fixture = { | ||
@@ -79,5 +79,5 @@ name: 'Tywin Lannister', | ||
var expected = s({ | ||
name: 'Tywin Lannister', | ||
name: 'Tywin Lannister', | ||
offspring: [ | ||
{name: 'Tyrion Lannister', dinklage: '[Circular]'}, | ||
{name: 'Tyrion Lannister', dinklage: '[Circular]'}, | ||
{name: 'Cersei Lannister', headey: '[Circular]'} | ||
@@ -91,3 +91,3 @@ ] | ||
test('circular arrays', function(assert) { | ||
test('circular arrays', function (assert) { | ||
var fixture = [] | ||
@@ -101,10 +101,10 @@ fixture.push(fixture, fixture) | ||
test('nested circular arrays', function(assert) { | ||
test('nested circular arrays', function (assert) { | ||
var fixture = [] | ||
fixture.push( | ||
{name: 'Jon Snow', bastards: fixture}, | ||
{name: 'Jon Snow', bastards: fixture}, | ||
{name: 'Ramsay Bolton', bastards: fixture} | ||
) | ||
var expected = s([ | ||
{name: 'Jon Snow', bastards: '[Circular]'}, | ||
{name: 'Jon Snow', bastards: '[Circular]'}, | ||
{name: 'Ramsay Bolton', bastards: '[Circular]'} | ||
@@ -117,6 +117,6 @@ ]) | ||
test('repeated non-circular references in objects', function(assert) { | ||
test('repeated non-circular references in objects', function (assert) { | ||
var daenerys = {name: 'Daenerys Targaryen'} | ||
var fixture = { | ||
motherOfDragons: daenerys, | ||
motherOfDragons: daenerys, | ||
queenOfMeereen: daenerys | ||
@@ -130,3 +130,3 @@ } | ||
test('repeated non-circular references in arrays', function(assert) { | ||
test('repeated non-circular references in arrays', function (assert) { | ||
var daenerys = {name: 'Daenerys Targaryen'} | ||
@@ -138,2 +138,2 @@ var fixture = [daenerys, daenerys] | ||
assert.end() | ||
}) | ||
}) |
7259
192
4