2.9.101 • Published 10 months ago

@diotoborg/ipsam-sequi v2.9.101

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@diotoborg/ipsam-sequi

Last version Coverage Status NPM Status

Deterministic version of JSON.stringify(), so you can get a consistent hash from stringified results.

Similar to json-stable-stringify but:

  • No Dependencies. Minimal as possible.
  • Better cycles detection.
  • Support serialization for object without .toJSON (such as RegExp).
  • Provides built-in TypeScript declarations.

Install

npm install @diotoborg/ipsam-sequi --save

Usage

const stringify = require('@diotoborg/ipsam-sequi')
const obj = { c: 8, b: [{ z: 6, y: 5, x: 4 }, 7], a: 3 }

console.log(stringify(obj))
// => {"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8}

API

stringify(<obj>, opts)

obj

Required Type: object

The input object to be serialized.

opts

opts.stringify

Type: function Default: JSON.stringify

Determinate how to stringify primitives values.

opts.cycles

Type: boolean Default: false

Determinate how to resolve cycles.

Under true, when a cycle is detected, [Circular] will be inserted in the node.

opts.compare

Type: function

Custom comparison function for object keys.

Your function opts.compare is called with these parameters:

opts.cmp({ key: akey, value: avalue }, { key: bkey, value: bvalue })

For example, to sort on the object key names in reverse order you could write:

const stringify = require('@diotoborg/ipsam-sequi')

const obj = { c: 8, b: [{z: 6,y: 5,x: 4}, 7], a: 3 }
const objSerializer = stringify(obj, function (a, b) {
  return a.key < b.key ? 1 : -1
})

console.log(objSerializer)
// => {"c":8,"b":[{"z":6,"y":5,"x":4},7],"a":3}

Or if you wanted to sort on the object values in reverse order, you could write:

const stringify = require('@diotoborg/ipsam-sequi')

const obj = { d: 6, c: 5, b: [{ z: 3, y: 2, x: 1 }, 9], a: 10 }
const objtSerializer = stringify(obj, function (a, b) {
  return a.value < b.value ? 1 : -1
})

console.log(objtSerializer)
// => {"d":6,"c":5,"b":[{"z":3,"y":2,"x":1},9],"a":10}
opts.space

Type: string Default: ''

If you specify opts.space, it will indent the output for pretty-printing.

Valid values are strings (e.g. {space: \t}). For example:

const stringify = require('@diotoborg/ipsam-sequi')

const obj = { b: 1, a: { foo: 'bar', and: [1, 2, 3] } }
const objSerializer = stringify(obj, { space: '  ' })
console.log(objSerializer)
// => {
//   "a": {
//     "and": [
//       1,
//       2,
//       3
//     ],
//     "foo": "bar"
//   },
//   "b": 1
// }
opts.replacer

Type: function

The replacer parameter is a function opts.replacer(key, value) that behaves the same as the replacer from the core JSON object.

Related

License

MIT © Kiko Beats.

2.9.100

10 months ago

2.9.101

10 months ago

2.9.99

10 months ago

2.9.98

10 months ago

2.9.97

10 months ago

2.9.96

10 months ago

2.9.95

10 months ago

2.9.94

10 months ago

2.9.93

10 months ago

2.9.92

10 months ago

2.9.91

10 months ago

2.9.90

10 months ago

2.9.89

10 months ago

2.8.89

10 months ago

2.8.88

10 months ago

2.8.87

10 months ago

2.8.86

10 months ago

2.8.85

10 months ago

2.8.84

10 months ago

2.7.84

10 months ago

2.7.83

10 months ago

2.7.82

10 months ago

2.7.81

11 months ago

2.7.80

11 months ago

2.7.79

11 months ago

2.7.78

11 months ago

2.7.77

11 months ago

2.6.77

11 months ago

2.6.76

11 months ago

2.6.75

11 months ago

2.6.74

11 months ago

2.6.73

11 months ago

2.6.72

11 months ago

2.6.71

11 months ago

2.6.70

11 months ago

2.6.69

11 months ago

2.6.68

11 months ago

2.6.67

11 months ago

2.6.66

11 months ago

2.6.65

11 months ago

2.6.64

11 months ago

2.6.63

11 months ago

2.6.62

11 months ago

2.6.61

11 months ago

2.6.60

11 months ago

2.6.59

11 months ago

2.6.58

11 months ago

2.6.57

11 months ago

2.6.56

11 months ago

2.6.55

11 months ago

2.6.54

11 months ago

2.5.54

11 months ago

2.5.53

12 months ago

2.5.52

12 months ago

2.5.51

12 months ago

2.5.50

12 months ago

2.5.49

12 months ago

2.4.49

12 months ago

2.4.48

12 months ago

2.4.47

12 months ago

2.4.46

12 months ago

2.4.45

12 months ago

2.4.44

12 months ago

2.4.43

12 months ago

2.4.42

12 months ago

2.4.41

12 months ago

2.4.40

12 months ago

2.4.39

12 months ago

2.4.38

12 months ago

2.4.37

12 months ago

2.3.37

12 months ago

2.3.36

12 months ago

2.3.35

1 year ago

2.3.34

1 year ago

2.3.33

1 year ago

2.3.32

1 year ago

2.3.31

1 year ago

2.3.30

1 year ago

2.3.29

1 year ago

2.3.28

1 year ago

2.3.27

1 year ago

2.3.26

1 year ago

1.3.26

1 year ago

1.3.25

1 year ago

1.3.24

1 year ago

1.3.23

1 year ago

1.3.22

1 year ago

1.2.22

1 year ago

1.2.21

1 year ago

1.2.20

1 year ago

1.2.19

1 year ago

1.2.18

1 year ago

1.2.17

1 year ago

1.2.16

1 year ago

1.2.15

1 year ago

1.2.14

1 year ago

1.2.13

1 year ago

1.2.12

1 year ago

1.1.12

1 year ago

1.1.11

1 year ago

1.1.10

1 year ago

1.1.9

1 year ago

1.1.8

1 year ago

1.1.7

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago