1 | // @flow strict-local
|
2 |
|
3 | import crypto from 'crypto';
|
4 |
|
5 | // $FlowFixMe
|
6 | type Hashable = Object;
|
7 |
|
8 | export default function objectHash(object: Hashable): string {
|
9 | let hash = crypto.createHash('md5');
|
10 | for (let key of Object.keys(object).sort()) {
|
11 | let val = object[key];
|
12 | if (typeof val === 'object' && val) {
|
13 | hash.update(key + objectHash(val));
|
14 | } else {
|
15 | hash.update(key + val);
|
16 | }
|
17 | }
|
18 |
|
19 | return hash.digest('hex');
|
20 | }
|