## Modules
objectToString
Object sorter module. It provides object sorter function constructor.
apiConstructor
Node object hash module. It provides a methods that return object hash or sorted object string.
objectToString
](#module_node-object-hash/objectSorter..makeObjectSorter..objectToString)
Object sorter module.
It provides object sorter function constructor.
* [node-object-hash/objectSorter](#module_node-object-hash/objectSorter) : [objectToString
](#module_node-object-hash/objectSorter..makeObjectSorter..objectToString)
* [~_guessObjectType(obj)](#module_node-object-hash/objectSorter.._guessObjectType) ⇒ string
℗
* [~_guessType(obj)](#module_node-object-hash/objectSorter.._guessType) ⇒ string
℗
* [~makeObjectSorter([options])](#module_node-object-hash/objectSorter..makeObjectSorter) ⇒ [objectToString
](#module_node-object-hash/objectSorter..makeObjectSorter..objectToString) ℗
* [~objectToString(obj)](#module_node-object-hash/objectSorter..makeObjectSorter..objectToString) ⇒ string
℗
### node-object-hash/objectSorter~_guessObjectType(obj) ⇒ string
℗
Guesses object's type
**Kind**: inner method of [node-object-hash/objectSorter
](#module_node-object-hash/objectSorter)
**Returns**: string
- Object type
**Access**: private
| Param | Type | Description |
| --- | --- | --- |
| obj | Object
| Object to guess type |
**Example**
```js
var a = [];
_guessObjectType(a) === 'array'; // true
```
### node-object-hash/objectSorter~_guessType(obj) ⇒ string
℗
Guesses variable type
**Kind**: inner method of [node-object-hash/objectSorter
](#module_node-object-hash/objectSorter)
**Returns**: string
- Variable type
**Access**: private
| Param | Type | Description |
| --- | --- | --- |
| obj | \*
| Variable to guess type |
**Example**
```js
var a = '';
_guessType(a) === 'string'; // true
```
### node-object-hash/objectSorter~makeObjectSorter([options]) ⇒ [objectToString
](#module_node-object-hash/objectSorter..makeObjectSorter..objectToString) ℗
Creates object sorter function
**Kind**: inner method of [node-object-hash/objectSorter
](#module_node-object-hash/objectSorter)
**Returns**: [objectToString
](#module_node-object-hash/objectSorter..makeObjectSorter..objectToString) - Object sorting function
**Access**: private
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| [options] | Object
| | Sorter options |
| [options.coerce] | boolean
| true
| Performs type coercion |
| [options.sort] | boolean
| true
| Performs array, object, etc. sorting |
**Example**
```js
// with coercion
var sorter = makeObjectSorter({coerce: true, sort: false});
sorter(1) === "1"; // true
// with sort
var sorter = makeObjectSorter({coerce: false, sort: true});
sorter([2, 3, 1]) === [1, 2, 3]; // true
```
#### makeObjectSorter~objectToString(obj) ⇒ string
℗
Object sorting function
**Kind**: inner method of [makeObjectSorter
](#module_node-object-hash/objectSorter..makeObjectSorter)
**Returns**: string
- Sorted string
**Access**: private
| Param | Type | Description |
| --- | --- | --- |
| obj | Object
| Object to sort |
## node-object-hash : [apiConstructor
](#module_node-object-hash..apiConstructor)
Node object hash module.
It provides a methods that return object hash or sorted object string.
* [node-object-hash](#module_node-object-hash) : [apiConstructor
](#module_node-object-hash..apiConstructor)
* _instance_
* [.sort(obj)](#module_node-object-hash+sort) ⇒ string
* [.hash(obj, [opts])](#module_node-object-hash+hash) ⇒ string
* _inner_
* [~apiConstructor([options])](#module_node-object-hash..apiConstructor) ⇒ [API
](#module_node-object-hash..API)
* [~API](#module_node-object-hash..API) : Object
### node-object-hash.sort(obj) ⇒ string
Creates sorted string from given object
**Kind**: instance method of [node-object-hash
](#module_node-object-hash)
**Returns**: string
- Sorted object string
**Access**: public
**See**: [objectToString](#module_node-object-hash/objectSorter..makeObjectSorter..objectToString)
| Param | Type | Description |
| --- | --- | --- |
| obj | \*
| JS object to be sorted |
**Example**
```js
var apiConstructor = require('node-object-hash');
var sorter = apiConstructor({sort:true, coerce:true}).sort;
sort({b: {b: 1, d: 'x'}, c: 2, a: [3, 5, 1]});
// "{a:[1,3,5],b:{b:1,d:x},c:2}"
```
### node-object-hash.hash(obj, [opts]) ⇒ string
Creates hash from given object
**Kind**: instance method of [node-object-hash
](#module_node-object-hash)
**Returns**: string
- Object hash value
**Access**: public
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| obj | \*
| | JS object to hash |
| [opts] | Object
| | Options |
| [opts.alg] | string
| "sha256"
| Crypto algorithm to use |
| [opts.enc] | string
| "hex"
| Hash string encoding |
**Example**
```js
var apiConstructor = require('node-object-hash');
var hasher = apiConstructor({sort:true, coerce:true}).hash;
hash({b: {b: 1, d: 'x'}, c: 2, a: [3, 5, 1]});
// "4c18ce0dcb1696b329c8568d94a9830da810437d8c9e6cecf5d969780335a26b"
```
### node-object-hash~apiConstructor([options]) ⇒ [API
](#module_node-object-hash..API)
Generates node-object-hash API object
**Kind**: inner method of [node-object-hash
](#module_node-object-hash)
**Returns**: [API
](#module_node-object-hash..API) - Node object hash API instance
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| [options] | Object
| | Library options |
| [options.coerce] | boolean
| true
| Performs type coercion |
| [options.sort] | boolean
| true
| Performs array, object, etc. sorting |
| [options.alg] | string
| "sha256"
| Default crypto algorithm to use (can be overridden) |
| [options.enc] | string
| "hex"
| Hash string encoding (can be overridden) |
**Example**
```js
var apiConstructor = require('node-object-hash');
var hashSortCoerce = apiConstructor({sort:true, coerce:true});
// or
var hashSort = apiConstructor({sort:true, coerce:false});
// or
var hashCoerce = apiConstructor({sort:false, coerce:true});
var objects = {
a: {
a: [{c: 2, a: 1, b: {a: 3, c: 2, b: 0}}],
b: [1, 'a', {}, null],
},
b: {
b: ['a', 1, {}, undefined],
a: [{c: '2', b: {b: false, c: 2, a: '3'}, a: true}]
},
c: ['4', true, 0, 2, 3]
};
hashSortCoerce.hash(objects.a) === hashSortCoerce.hash(objects.b);
// returns true
hashSortCoerce.sort(object.c);
// returns '[0,1,2,3,4]'
```
### node-object-hash~API : Object
Node object hash API object
**Kind**: inner typedef of [node-object-hash
](#module_node-object-hash)
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| hash | function
| Returns object hash string (see [hash](#module_node-object-hash+hash)) |
| sort | function
| Returns sorted object string (see [sort](#module_node-object-hash+sort)) |