{"_id":"@jsonjoy.com/json-equal","_rev":"4320881","name":"@jsonjoy.com/json-equal","description":"Deep equality check for JSON values","dist-tags":{"latest":"18.8.0"},"maintainers":[{"name":"json-joy-team","email":""},{"name":"streamich","email":""}],"time":{"modified":"2026-04-07T22:31:44.000Z","created":"2026-02-22T18:13:59.627Z","18.8.0":"2026-04-07T16:13:02.775Z","18.7.0":"2026-04-05T22:10:24.987Z","18.6.0":"2026-04-04T17:50:30.644Z","18.5.0":"2026-04-02T18:13:49.472Z","18.1.0":"2026-03-21T15:26:22.510Z","18.0.0":"2026-02-22T18:13:59.627Z"},"users":{},"author":{"name":"streamich","url":"https://github.com/streamich"},"repository":{"type":"git","url":"git+https://github.com/streamich/json-joy.git","directory":"packages/json-equal"},"versions":{"18.8.0":{"name":"@jsonjoy.com/json-equal","publishConfig":{"access":"public"},"version":"18.8.0","description":"Deep equality check for JSON values","author":{"name":"streamich","url":"https://github.com/streamich"},"homepage":"https://github.com/streamich/json-joy/tree/master/packages/json-equal","repository":{"type":"git","url":"git+https://github.com/streamich/json-joy.git","directory":"packages/json-equal"},"license":"AGPL-3.0-only","funding":{"type":"github","url":"https://github.com/sponsors/streamich"},"keywords":["json","deep-equal","deep-equality","json-equal","json-equality","fast-deep-equal","fast-equals","lodash.isEqual","underscore.isEqual","equal","is-equal","compare"],"peerDependencies":{"tslib":"*"},"dependencies":{"@jsonjoy.com/codegen":"18.8.0"},"engines":{"node":">=10.0"},"main":"lib/index.js","types":"lib/index.d.ts","typings":"lib/index.d.ts","scripts":{"clean":"npx rimraf lib typedocs coverage gh-pages yarn-error.log","build":"tsc -b tsconfig.build.json","typedoc":"typedoc","typecheck":"tsc -b --noEmit"},"jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js","tsx"],"transform":{"^.+\\.tsx?$":"ts-jest"},"transformIgnorePatterns":[".*/node_modules/.*"],"testRegex":".*/(__tests__|__jest__|demo)/.*(?<!\\.vi)\\.(test|spec)\\.tsx?$","rootDir":".","testPathIgnorePatterns":["node_modules","\\.vi\\.(test|spec)\\.tsx?$"]},"_id":"@jsonjoy.com/json-equal@18.8.0","bugs":{"url":"https://github.com/streamich/json-joy/issues"},"_integrity":"sha512-kBicQ49wjtdZAgMGbh7uF1bgkY/D9J5Wd9TBp0AFdMNruBsVSlsKqex/zAa0YWkTBYVEGuiKSZfElffmqJhg2w==","_resolved":"/home/runner/work/json-joy/json-joy/packages/json-equal/package.tgz","_from":"file:package.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"shasum":"528710f7eaab65e07de16cf99a45d264e3dc5989","size":38240,"noattachment":false,"key":"/@jsonjoy.com/json-equal/-/@jsonjoy.com/json-equal-18.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@jsonjoy.com/json-equal/download/@jsonjoy.com/json-equal-18.8.0.tgz"},"_npmUser":{"name":"streamich","email":"vadimsdaleckis@gmail.com"},"directories":{},"maintainers":[{"name":"json-joy-team","email":""},{"name":"streamich","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-equal_18.8.0_1775578382608_0.7560334673577849"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-07T16:13:02.775Z","publish_time":1775578382775,"_source_registry_name":"default","_cnpm_publish_time":1775578382775},"18.7.0":{"name":"@jsonjoy.com/json-equal","publishConfig":{"access":"public"},"version":"18.7.0","description":"Deep equality check for JSON values","author":{"name":"streamich","url":"https://github.com/streamich"},"homepage":"https://github.com/streamich/json-joy/tree/master/packages/json-equal","repository":{"type":"git","url":"git+https://github.com/streamich/json-joy.git","directory":"packages/json-equal"},"license":"AGPL-3.0-only","funding":{"type":"github","url":"https://github.com/sponsors/streamich"},"keywords":["json","deep-equal","deep-equality","json-equal","json-equality","fast-deep-equal","fast-equals","lodash.isEqual","underscore.isEqual","equal","is-equal","compare"],"peerDependencies":{"tslib":"*"},"dependencies":{"@jsonjoy.com/codegen":"18.7.0"},"engines":{"node":">=10.0"},"main":"lib/index.js","types":"lib/index.d.ts","typings":"lib/index.d.ts","scripts":{"clean":"npx rimraf lib typedocs coverage gh-pages yarn-error.log","build":"tsc -b tsconfig.build.json","typedoc":"typedoc","typecheck":"tsc -b --noEmit"},"jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js","tsx"],"transform":{"^.+\\.tsx?$":"ts-jest"},"transformIgnorePatterns":[".*/node_modules/.*"],"testRegex":".*/(__tests__|__jest__|demo)/.*(?<!\\.vi)\\.(test|spec)\\.tsx?$","rootDir":".","testPathIgnorePatterns":["node_modules","\\.vi\\.(test|spec)\\.tsx?$"]},"_id":"@jsonjoy.com/json-equal@18.7.0","bugs":{"url":"https://github.com/streamich/json-joy/issues"},"_integrity":"sha512-KrUO1zdcAtXOehk7HBsXC3XKB2sVrATlcIqy3nalLCuyNwCnq5NptjJRS8jQueY1ewtpHK+n37N34WHg3CDU4Q==","_resolved":"/home/runner/work/json-joy/json-joy/packages/json-equal/package.tgz","_from":"file:package.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"shasum":"85247f70e2a96a0ff51b46a1a9f813b1d524ea26","size":38240,"noattachment":false,"key":"/@jsonjoy.com/json-equal/-/@jsonjoy.com/json-equal-18.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@jsonjoy.com/json-equal/download/@jsonjoy.com/json-equal-18.7.0.tgz"},"_npmUser":{"name":"streamich","email":"vadimsdaleckis@gmail.com"},"directories":{},"maintainers":[{"name":"json-joy-team","email":""},{"name":"streamich","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-equal_18.7.0_1775427024828_0.30041458141904"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-05T22:10:24.987Z","publish_time":1775427024987,"_source_registry_name":"default","_cnpm_publish_time":1775427024987},"18.6.0":{"name":"@jsonjoy.com/json-equal","publishConfig":{"access":"public"},"version":"18.6.0","description":"Deep equality check for JSON values","author":{"name":"streamich","url":"https://github.com/streamich"},"homepage":"https://github.com/streamich/json-joy/tree/master/packages/json-equal","repository":{"type":"git","url":"git+https://github.com/streamich/json-joy.git","directory":"packages/json-equal"},"license":"AGPL-3.0-only","funding":{"type":"github","url":"https://github.com/sponsors/streamich"},"keywords":["json","deep-equal","deep-equality","json-equal","json-equality","fast-deep-equal","fast-equals","lodash.isEqual","underscore.isEqual","equal","is-equal","compare"],"peerDependencies":{"tslib":"*"},"dependencies":{"@jsonjoy.com/codegen":"18.6.0"},"engines":{"node":">=10.0"},"main":"lib/index.js","types":"lib/index.d.ts","typings":"lib/index.d.ts","scripts":{"clean":"npx rimraf lib typedocs coverage gh-pages yarn-error.log","build":"tsc -b tsconfig.build.json","typedoc":"typedoc","typecheck":"tsc -b --noEmit"},"jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js","tsx"],"transform":{"^.+\\.tsx?$":"ts-jest"},"transformIgnorePatterns":[".*/node_modules/.*"],"testRegex":".*/(__tests__|__jest__|demo)/.*(?<!\\.vi)\\.(test|spec)\\.tsx?$","rootDir":".","testPathIgnorePatterns":["node_modules","\\.vi\\.(test|spec)\\.tsx?$"]},"_id":"@jsonjoy.com/json-equal@18.6.0","bugs":{"url":"https://github.com/streamich/json-joy/issues"},"_integrity":"sha512-nZH3iRBVv+9LKff9dqs77ZGwCKm4nKIH/yozmYn58OGMjrLGRBSmGxiHAWLd0mV0g3rme3aUASywd1wjiTGZag==","_resolved":"/home/runner/work/json-joy/json-joy/packages/json-equal/package.tgz","_from":"file:package.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"shasum":"8fa84d0640cfdbfe17611e336dfa0166d195bf29","size":38240,"noattachment":false,"key":"/@jsonjoy.com/json-equal/-/@jsonjoy.com/json-equal-18.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@jsonjoy.com/json-equal/download/@jsonjoy.com/json-equal-18.6.0.tgz"},"_npmUser":{"name":"streamich","email":"vadimsdaleckis@gmail.com"},"directories":{},"maintainers":[{"name":"json-joy-team","email":""},{"name":"streamich","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-equal_18.6.0_1775325030484_0.3585881731183096"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-04T17:50:30.644Z","publish_time":1775325030644,"_source_registry_name":"default","_cnpm_publish_time":1775325030644},"18.5.0":{"name":"@jsonjoy.com/json-equal","publishConfig":{"access":"public"},"version":"18.5.0","description":"Deep equality check for JSON values","author":{"name":"streamich","url":"https://github.com/streamich"},"homepage":"https://github.com/streamich/json-joy/tree/master/packages/json-equal","repository":{"type":"git","url":"git+https://github.com/streamich/json-joy.git","directory":"packages/json-equal"},"license":"AGPL-3.0-only","funding":{"type":"github","url":"https://github.com/sponsors/streamich"},"keywords":["json","deep-equal","deep-equality","json-equal","json-equality","fast-deep-equal","fast-equals","lodash.isEqual","underscore.isEqual","equal","is-equal","compare"],"peerDependencies":{"tslib":"*"},"dependencies":{"@jsonjoy.com/codegen":"18.5.0"},"engines":{"node":">=10.0"},"main":"lib/index.js","types":"lib/index.d.ts","typings":"lib/index.d.ts","scripts":{"clean":"npx rimraf lib typedocs coverage gh-pages yarn-error.log","build":"tsc -b tsconfig.build.json","typedoc":"typedoc","typecheck":"tsc -b --noEmit"},"jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js","tsx"],"transform":{"^.+\\.tsx?$":"ts-jest"},"transformIgnorePatterns":[".*/node_modules/.*"],"testRegex":".*/(__tests__|__jest__|demo)/.*(?<!\\.vi)\\.(test|spec)\\.tsx?$","rootDir":".","testPathIgnorePatterns":["node_modules","\\.vi\\.(test|spec)\\.tsx?$"]},"_id":"@jsonjoy.com/json-equal@18.5.0","bugs":{"url":"https://github.com/streamich/json-joy/issues"},"_integrity":"sha512-tksifdTQQa3o94IPzPVLb7nGMZNJKchnoHu2IdqLyQP3UTmsX58ry/K0jvBXQxXWEjnkNAvkEwrmsnF5ZWHBFA==","_resolved":"/home/runner/work/json-joy/json-joy/packages/json-equal/package.tgz","_from":"file:package.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"shasum":"667a566e1a6860dfa48697412c3885d335efe8f9","size":38240,"noattachment":false,"key":"/@jsonjoy.com/json-equal/-/@jsonjoy.com/json-equal-18.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@jsonjoy.com/json-equal/download/@jsonjoy.com/json-equal-18.5.0.tgz"},"_npmUser":{"name":"streamich","email":"vadimsdaleckis@gmail.com"},"directories":{},"maintainers":[{"name":"json-joy-team","email":""},{"name":"streamich","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-equal_18.5.0_1775153629311_0.6877987576551294"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-02T18:13:49.472Z","publish_time":1775153629472,"_source_registry_name":"default","_cnpm_publish_time":1775153629472},"18.1.0":{"name":"@jsonjoy.com/json-equal","publishConfig":{"access":"public"},"version":"18.1.0","description":"Deep equality check for JSON values","author":{"name":"streamich","url":"https://github.com/streamich"},"homepage":"https://github.com/streamich/json-joy/tree/master/packages/json-equal","repository":{"type":"git","url":"https://github.com/streamich/json-joy.git","directory":"packages/json-equal"},"license":"AGPL-3.0-only","funding":{"type":"github","url":"https://github.com/sponsors/streamich"},"keywords":["json","deep-equal","deep-equality","json-equal","json-equality","fast-deep-equal","fast-equals","lodash.isEqual","underscore.isEqual","equal","is-equal","compare"],"peerDependencies":{"tslib":"*"},"dependencies":{"@jsonjoy.com/codegen":"18.1.0"},"engines":{"node":">=10.0"},"main":"lib/index.js","types":"lib/index.d.ts","typings":"lib/index.d.ts","scripts":{"clean":"npx rimraf lib typedocs coverage gh-pages yarn-error.log","build":"tsc -b tsconfig.build.json","typedoc":"typedoc","typecheck":"tsc -b --noEmit"},"jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js","tsx"],"transform":{"^.+\\.tsx?$":"ts-jest"},"transformIgnorePatterns":[".*/node_modules/.*"],"testRegex":".*/(__tests__|__jest__|demo)/.*(?<!\\.vi)\\.(test|spec)\\.tsx?$","rootDir":".","testPathIgnorePatterns":["node_modules","\\.vi\\.(test|spec)\\.tsx?$"]},"_id":"@jsonjoy.com/json-equal@18.1.0","gitHead":"6fadf62f896d462e8a99f54b775ad6e338822b00","dist":{"shasum":"4eb0eba3711404f42a59e5fc31b3e415c1a39ec1","size":38232,"noattachment":false,"key":"/@jsonjoy.com/json-equal/-/@jsonjoy.com/json-equal-18.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@jsonjoy.com/json-equal/download/@jsonjoy.com/json-equal-18.1.0.tgz"},"_npmUser":{"name":"streamich","email":"vadimsdaleckis@gmail.com"},"directories":{},"maintainers":[{"name":"json-joy-team","email":""},{"name":"streamich","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-equal_18.1.0_1774106782371_0.4972045512635408"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-21T15:26:22.510Z","publish_time":1774106782510,"_source_registry_name":"default","_cnpm_publish_time":1774106782510},"18.0.0":{"name":"@jsonjoy.com/json-equal","publishConfig":{"access":"public"},"version":"18.0.0","description":"Deep equality check for JSON values","author":{"name":"streamich","url":"https://github.com/streamich"},"homepage":"https://github.com/streamich/json-joy/tree/master/packages/json-equal","repository":{"type":"git","url":"https://github.com/streamich/json-joy.git","directory":"packages/json-equal"},"license":"AGPL-3.0-only","funding":{"type":"github","url":"https://github.com/sponsors/streamich"},"keywords":["json","deep-equal","deep-equality","json-equal","json-equality","fast-deep-equal","fast-equals","lodash.isEqual","underscore.isEqual","equal","is-equal","compare"],"peerDependencies":{"tslib":"*"},"dependencies":{"@jsonjoy.com/codegen":"18.0.0"},"engines":{"node":">=10.0"},"main":"lib/index.js","types":"lib/index.d.ts","typings":"lib/index.d.ts","scripts":{"clean":"npx rimraf lib typedocs coverage gh-pages yarn-error.log","build":"npx tsc --project tsconfig.build.json --module commonjs --target es2020 --outDir lib","jest":"node -r ts-node/register ./node_modules/.bin/jest","test":"jest --maxWorkers 7","test:ci":"yarn jest --maxWorkers 3 --no-cache","coverage":"yarn test --collectCoverage","typedoc":"typedoc","typecheck":"tsc -p ."},"jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js","tsx"],"transform":{"^.+\\.tsx?$":"ts-jest"},"transformIgnorePatterns":[".*/node_modules/.*"],"testRegex":".*/(__tests__|__jest__|demo)/.*\\.(test|spec)\\.tsx?$","rootDir":".","testPathIgnorePatterns":["node_modules"]},"_id":"@jsonjoy.com/json-equal@18.0.0","gitHead":"b8f6531fe40ba35746ccbae7b11b40d6a343d919","dist":{"shasum":"90c6dec10189ab58fd206de6fb65b78a3e4f950f","size":9186,"noattachment":false,"key":"/@jsonjoy.com/json-equal/-/@jsonjoy.com/json-equal-18.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@jsonjoy.com/json-equal/download/@jsonjoy.com/json-equal-18.0.0.tgz"},"_npmUser":{"name":"streamich","email":"vadimsdaleckis@gmail.com"},"directories":{},"maintainers":[{"name":"json-joy-team","email":""},{"name":"streamich","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-equal_18.0.0_1771784039484_0.4615592063814562"},"_hasShrinkwrap":false,"publish_time":1771784039627,"_cnpm_publish_time":1771784039627}},"readme":"# json-equal\n\nThis library contains the fastest JSON deep comparison algorithms.\n\n- `deepEqual` &mdash; deep comparison of JSON objects. Faster than `fast-deep-equal` and\n  `fast-equals` packages.\n- `$$deepEqual` &mdash; if the comparison JSON object is known in advance, this function\n  can pre-compile a javascript function for comparison, which is about an order of magnitude\n  faster than `deepEqual`.\n\n\n## Reference\n\n\n### `deepEqual`\n\n```ts\nimport {deepEqual} from 'lib/json-equal/deepEqual';\n\ndeepEqual(a, b); // true/false\n```\n\n\n### `$$deepEqual`\n\n```ts\nimport {$$deepEqual} from 'lib/json-equal/$$deepEqual';\n\nconst js = $$deepEqual(a);\nconst fn = eval(js);\n\nfn(b); // true/false\n```\n\n\n## Benchmarks\n\n```\nnode benchmarks/json-equal/bench.deepEqual.js\njson-equal (v1) x 873,303 ops/sec ±0.34% (96 runs sampled), 1145 ns/op\njson-equal (v2) x 664,673 ops/sec ±0.44% (97 runs sampled), 1504 ns/op\njson-equal (v3) x 710,572 ops/sec ±0.15% (100 runs sampled), 1407 ns/op\nfast-deep-equal x 620,740 ops/sec ±0.34% (101 runs sampled), 1611 ns/op\nfast-equals x 812,390 ops/sec ±0.11% (101 runs sampled), 1231 ns/op\nlodash.isEqual x 182,440 ops/sec ±0.18% (98 runs sampled), 5481 ns/op\njson-equal/deepEqualCodegen x 6,161,316 ops/sec ±0.30% (101 runs sampled), 162 ns/op\njson-equal/deepEqualCodegen (with codegen) x 47,583 ops/sec ±0.11% (100 runs sampled), 21016 ns/op\nFastest is json-equal/deepEqualCodegen\n```\n","_attachments":{},"homepage":"https://github.com/streamich/json-joy/tree/master/packages/json-equal","bugs":{"url":"https://github.com/streamich/json-joy/issues"},"license":"AGPL-3.0-only"}