Nondigestible Purple Mayonnaise

npm

npm’s 2019 JavaScript ecosystem survey analysis is now available! Get your copy here »

normjson

1.4.0 • Public • Published

NormJSON

Travis CI

Convert JS values into deterministic JSON. It can sort keys in ascending order or according to scheme. Normjson is useful for hash algorithms to generate the same hashsum in different js environments.

Installation

Install via npm

npm i normjson

Require from unpkg.com:

<script src="https://unpkg.com/normjson@1.3.0/dist/normjson.js"
    integrity="St/z56cj/u6TzqsuQ/H0/ve0ZreNswh5UbYrgSCQyN58F/0s0FN6E+Ak3a8ZAy5q"
></script> 
<script src="https://unpkg.com/normjson@1.3.0/dist/normjson.min.js"
    integrity="qPKIijQ3VZP98fNmZUtRxsDHGdqBNkAJLyg5jWwvQAhr16EBJqkkqFfpTkNmPM6h"
></script> 

Example

Normjson will create the same JSON string from objects with different props order and JSON.stringify does not:

const object1 = {a: 1, b: 2};
const object2 = {b: 2, a: 1};
 
JSON.stringify(object1) === JSON.stringify(object2); // => false
normjson(object1) === normjson(object2); // => true

Scheme types

No scheme

If no scheme specified then properties sorting by name in ascending order:

normjson({c: 3, a:1, b:2});

Coverts to:

{"a":1,"b":2,"c":3}

Scheme could be presented in several ways.

Array scheme

Array scheme contains list of properties which should be converted in specified order.

normjson({a:1, b:2, c: 3}, ['b', 'a']);

Convets to:

{"b":2,"a":1}

It allow to specify rest of props with true and sorts them by key names:

normjson({b: 3, c: 2, a: 1}, ['c', true]);

Coverts to:

{"c":3,"a":1,"b":2}

Rest of props could be set as the first, the last or in the middle.

Object scheme

Object scheme allow nesting.

normjson({a:{b: 1, c:2}}, {a:{c: true}});

Coverts to:

{"a":{"c":2}}

Function scheme

Function as a scheme should return other type of scheme (array, object, no). The first argument is a document.

License

MIT.

Keywords

none

install

npm i normjson

Downloadsweekly downloads

10

version

1.4.0

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability