object-identity
TypeScript icon, indicating that this package has built-in type declarations

0.1.2 • Public • Published

object-identity



npm add object-identity hashes objects

downloads size size

Features

  • Intuitive
  • 🌪 Recursive/Circular support
  • 🏎 Performant — check the benchmarks.
  • 🪶 Lightweight — a mere 387B and no dependencies.

🚀 Usage

import { identify } from 'object-identity';

// ~> identity the object
const id1 = identify({ a: new Set(['b', 'c', new Map([['d', 'e']])]) });
// ~> an entirely different object, but structurally the same
const id2 = identify({ a: new Set(['b', 'c', new Map([['e', 'e']])]) });

// they should equal
assert.toEqual(hashA, hashB);

💨 Benchmark

via the /bench directory with Node v18.16.1 (Apple M1 Pro)

✔ object-identity           ~ 53,216,325 ops/sec ± 0.34%
✔ object-hash               ~    110,440 ops/sec ± 0.01%
✔ object-identity :: hashed ~ 45,415,100 ops/sec ± 0.05%
✔ object-hash :: hashed     ~     51,365 ops/sec ± 0.01%

^ object-identity is not as feature-full it's alternatives, specifically around function values and other node builtins. So take this benchmark with a grain of salt, as it's only testing "json-like" payloads.

License

MIT © Marais Rossouw

Readme

Keywords

none

Package Sidebar

Install

npm i object-identity

Weekly Downloads

704

Version

0.1.2

License

MIT

Unpacked Size

5.67 kB

Total Files

6

Last publish

Collaborators

  • marais