{"_id":"@asmartbear/pojo-compare","_rev":"3-4dd9fd096b93c5b3efd61a1a25033bcb","name":"@asmartbear/pojo-compare","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@asmartbear/pojo-compare","version":"1.0.0","description":"Compares two POJOs, either for equality or for less/equal/greater","keywords":["diff","compare","pojo","json"],"scripts":{"type-check":"tsc --noEmit","test":"jest --maxWorkers=4","watch":"npm test -- --watch --coverage","coverage":"npm test -- --coverage","postcoverage":"open-cli coverage/lcov-report/index.html","lint":"tslint -c tslint.json 'src/**/*.{ts,tsx}'","clean":"rimraf dist","prebuild":"npm run clean","build":"tsc","postbuild":"rm -rf dist/test","prerelease":"npm run lint && npm test && npm run build","prepare":"npm run lint && npm test && npm run build","release":"standard-version","postpublish":"git push origin master --follow-tags"},"dependencies":{},"devDependencies":{"@types/jest":"25.2.1","@types/mocha":"7.0.2","@types/node":"13.11.1","benchmark":"2.1.4","deep-eql":"4.0.0","deep-equal":"2.0.2","fast-deep-equal":"3.1.1","fast-equals":"2.0.0","jest":"25.3.0","nano-equal":"2.0.2","open-cli":"6.0.1","qcompare":"1.0.11","rimraf":"2.6.3","standard-version":"6.0.1","ts-jest":"25.3.1","ts-loader":"6.2.2","tslint":"6.1.1","typescript":"3.8.3"},"license":"MIT","repository":{"url":"git+ssh://git@github.com/asmartbear/pojo-compare.git","type":"git"},"bugs":{"url":"https://github.com/asmartbear/pojo-compare/issues"},"author":{"name":"Jason Cohen","url":"https://github.com/asmartbear"},"main":"dist/src/index.js","types":"dist/src","jest":{"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js"],"transform":{"\\.(ts|tsx)$":"ts-jest"},"testRegex":"test/.*\\.(ts|tsx|js)$"},"babel":{"presets":[["@babel/preset-env",{"targets":{"node":6}}],"@babel/preset-flow","@babel/preset-typescript"],"plugins":["@babel/plugin-proposal-class-properties"]},"gitHead":"05571741f6048f1ebfd2bc43bed36c8794cd5a54","homepage":"https://github.com/asmartbear/pojo-compare#readme","_id":"@asmartbear/pojo-compare@1.0.0","_nodeVersion":"13.8.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xNyFIXrGWQrP1s95N3Dx8i0upRFtmPm+rGt/tLhgpjrqciKUO94AHhMug7lb+dBXh1cQkqNr/W5Ls9JuIcK1DQ==","shasum":"e57cd0ade0b342d5e2dd728a2b496c65fa7bd2c5","tarball":"https://registry.npmjs.org/@asmartbear/pojo-compare/-/pojo-compare-1.0.0.tgz","fileCount":6,"unpackedSize":14283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJek4xZCRA9TVsSAnZWagAA6uMP/A5eQzjUqaagLUXEie0J\naoQTBZXmUpnLMWFxNJrmQ222dLf9HKpxnD2c5ZI+syRy7qNrCf9vs/M9qq/i\nbIAGkP1h37BP/4fEf6vi3qx6RaVLwl+x4hFiLOEBkbBTxMY8Hg2X2JSCmeQg\noGvAKtW/myJzM+SpoOfhEV7LKtBKh+GU1ars+j2FSZp9c4JFzWRz+rvdNWQl\nnb0RvvKqUcPprfW6fdbt5r2zF0lx/PC9n27SnrJeKZep5opNIHWazDKKsvOA\nd4/A0Rq+3l2PqHz+zZXHRyGI5YlF+yYZiUlq5iUaWVSF+51G7MMV0r3PtJeV\nY15E3W6IiIsh4u//orO8DM5JbxEYqCi0ZoRUQlo0NjsfH+4xWaXs7eiPf035\nT1vO299kI7D17WHWfRw41+fzjciL/arDQOcoBlhgTkl86hdY4yJ/0GHIA7Ur\nhxrAcdUDA90afgAR4Wv9EpyphFkrhhoTJ4jJS/OCginKric9OKoDrIxVx+DG\nKxVU8fYb1XaO6PpEjNAxkQdBiEqoFRa1GdVSUZ6ZY1esZFwjU6MK8sRU8DGd\nWLJ/w+COVXWmW6IkAPBwroZFsEetXyh+P+EtInsM/vfddx5faO+s599+MXRO\npLhqM3HSLwfnoictsRpbhG6IIa8v/7mfqDKC8gyJskjJQ2nbfc7CEq4GBBj2\ntaK1\r\n=O92u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEmaaMVyjMCWJwatHRfG1uiWpiyTnc4DnSBC+uDOk0Z1AiBcVQRkayQmU6HPSmIuw1gEFz24/rWURBj3YHiCgB3SBQ=="}]},"maintainers":[{"name":"asmartbear","email":"theoriginalesmartbear@gmail.com"}],"_npmUser":{"name":"asmartbear","email":"theoriginalesmartbear@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pojo-compare_1.0.0_1586728025306_0.24893508304947765"},"_hasShrinkwrap":false},"1.0.1":{"name":"@asmartbear/pojo-compare","version":"1.0.1","description":"Compares two POJOs, either for equality or for less/equal/greater","keywords":["diff","compare","pojo","json"],"scripts":{"type-check":"tsc --noEmit","test":"jest --maxWorkers=4","watch":"npm test -- --watch --coverage","coverage":"npm test -- --coverage","postcoverage":"open-cli coverage/lcov-report/index.html","lint":"tslint -c tslint.json 'src/**/*.{ts,tsx}'","clean":"rimraf dist","prebuild":"npm run clean","build":"tsc","postbuild":"rm -rf dist/test","prerelease":"npm run lint && npm test && npm run build","prepare":"npm run lint && npm test && npm run build","release":"standard-version","postpublish":"git push origin master --follow-tags"},"dependencies":{},"devDependencies":{"@types/jest":"25.2.1","@types/mocha":"7.0.2","@types/node":"13.11.1","benchmark":"2.1.4","deep-eql":"4.0.0","deep-equal":"2.0.2","fast-deep-equal":"3.1.1","fast-equals":"2.0.0","jest":"25.3.0","nano-equal":"2.0.2","open-cli":"6.0.1","qcompare":"1.0.11","rimraf":"2.6.3","standard-version":"6.0.1","ts-jest":"25.3.1","ts-loader":"6.2.2","tslint":"6.1.1","typescript":"3.8.3"},"license":"MIT","repository":{"url":"git+ssh://git@github.com/asmartbear/pojo-compare.git","type":"git"},"bugs":{"url":"https://github.com/asmartbear/pojo-compare/issues"},"author":{"name":"Jason Cohen","url":"https://github.com/asmartbear"},"main":"dist/src/index.js","types":"dist/src","jest":{"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js"],"transform":{"\\.(ts|tsx)$":"ts-jest"},"testRegex":"test/.*\\.(ts|tsx|js)$"},"babel":{"presets":[["@babel/preset-env",{"targets":{"node":6}}],"@babel/preset-flow","@babel/preset-typescript"],"plugins":["@babel/plugin-proposal-class-properties"]},"gitHead":"00cf4306190fd7932fba1022c84d2fedbdc93268","homepage":"https://github.com/asmartbear/pojo-compare#readme","_id":"@asmartbear/pojo-compare@1.0.1","_nodeVersion":"13.8.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-MJPY3XhQgInO0iIGgG5I0gDS5/XFGfn9+pCPgqUK8nusqIo6Z+lr9X+r8emeVyvaAJnVmbQn+cR4URq7wzyiXg==","shasum":"2f2cfe9dc2866ac79e4c90cd584e14f3c3f06468","tarball":"https://registry.npmjs.org/@asmartbear/pojo-compare/-/pojo-compare-1.0.1.tgz","fileCount":6,"unpackedSize":14402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqk0/CRA9TVsSAnZWagAAY80P/2ZEtTznG4/esNf7/otG\njN+yA0ZQit4UzpYQIdBQmRx/P/zpQcYNUmxaVfITfOYzGfsjh/o38MgZfygE\n6jnUIaIWBJTuTYZx3yU0zYFAG5ZuMA/3pmI/50FET6ny/LtHQDT4FLMcgasb\nPd5NkLXXH6wp4Gh2XjM5hJ6oUE19rwi6AcLrwaXy5lXHPwn+lnGqNt6lcuXo\nWkH1e91jnKw6CzGjYsdik2p5vLaz6aHPcWZYDkh36pr9KOl2b0vE0acZITPj\nmL+OjhXooTcW3/3p0o3xoLxGz80VDgXq+qEE1N7lWVZuXvfU5K0IOR4c32uU\nMpco7alSkqjNcRlClqGi7KAeBg/KMMYfYKcHrq79x8QNeLtxUN6wrczEtF2R\nujNOezAAaCHFXHTd0e7Cvu4t6MNQHRpx6siVJuGhfzxZaM2p52EIwwTgsIYt\nruauLDno3KXT/PBcv22Ywff9AYJaP1okpjBTzGOn74U8qExH5S5b82XYseVk\njScqrN2bo+KXsravU/nmjp250pMcU29TwbExDO85b6I+C4s+TU9Z/qTbpDPi\nLxWLNQ4pGTzjEYVX782qZfBixjZ5l6mhJuUr2AoFLOhL4UQrIADmzQGV0uzG\nAKvHMnrf8oMXKiR/SHRTyLQE1OcSVm1kcYZtOj6KNAmmFz+nWjDMfD2DYv0M\nVJVm\r\n=Rh6H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICt/26bKhlCzYAqnhj9KiBciCO/PPPDSto8+eJjrjzzgAiAZrBGsx0jgW3BWnDnP7PTwewh83M+F+S8GlSxn8zbO4Q=="}]},"maintainers":[{"name":"asmartbear","email":"theoriginalesmartbear@gmail.com"}],"_npmUser":{"name":"asmartbear","email":"theoriginalesmartbear@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pojo-compare_1.0.1_1588219198760_0.1482191425942283"},"_hasShrinkwrap":false},"1.0.2":{"name":"@asmartbear/pojo-compare","version":"1.0.2","description":"Compares two POJOs, either for equality or for less/equal/greater","keywords":["diff","compare","pojo","json"],"scripts":{"type-check":"tsc --noEmit","test":"jest --maxWorkers=4","watch":"npm test -- --watch --coverage","coverage":"npm test -- --coverage","postcoverage":"open-cli coverage/lcov-report/index.html","lint":"tslint -c tslint.json 'src/**/*.{ts,tsx}'","clean":"rimraf dist","prebuild":"npm run clean","build":"tsc","postbuild":"rm -rf dist/test","prerelease":"npm run lint && npm test && npm run build","prepare":"npm run lint && npm test && npm run build","release":"standard-version","postpublish":"git push origin master --follow-tags"},"dependencies":{},"devDependencies":{"@types/jest":"25.2.1","@types/mocha":"7.0.2","@types/node":"13.11.1","benchmark":"2.1.4","deep-eql":"4.0.0","deep-equal":"2.0.2","fast-deep-equal":"3.1.1","fast-equals":"2.0.0","jest":"25.3.0","nano-equal":"2.0.2","open-cli":"6.0.1","qcompare":"1.0.11","rimraf":"2.6.3","standard-version":"6.0.1","ts-jest":"25.3.1","ts-loader":"6.2.2","tslint":"6.1.1","typescript":"3.8.3"},"license":"MIT","repository":{"url":"git+ssh://git@github.com/asmartbear/pojo-compare.git","type":"git"},"bugs":{"url":"https://github.com/asmartbear/pojo-compare/issues"},"author":{"name":"Jason Cohen","url":"https://github.com/asmartbear"},"main":"dist/src/index.js","types":"dist/src","jest":{"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js"],"transform":{"\\.(ts|tsx)$":"ts-jest"},"testRegex":"test/.*\\.(ts|tsx|js)$"},"babel":{"presets":[["@babel/preset-env",{"targets":{"node":6}}],"@babel/preset-flow","@babel/preset-typescript"],"plugins":["@babel/plugin-proposal-class-properties"]},"gitHead":"35aca4409b2309dab41bb369973ab57ba73223e7","homepage":"https://github.com/asmartbear/pojo-compare#readme","_id":"@asmartbear/pojo-compare@1.0.2","_nodeVersion":"13.8.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-dZjpEyY/lZ1PCxIJ1evM2EYWOvbQUyjSSc4+aT0hRx3NslnVCCkQO57ekU+YxjDEbr5YI22NgZX+UgNyALC20w==","shasum":"7700a1b15480e937196d870c6b97a1729dffc468","tarball":"https://registry.npmjs.org/@asmartbear/pojo-compare/-/pojo-compare-1.0.2.tgz","fileCount":6,"unpackedSize":14564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerdwgCRA9TVsSAnZWagAAGIwP/Rkfeqlk9GeUrJNhVLXv\n0LKJIMRGA58pCdGEb1V3fRi0vISD4ygVNOhSlJ4k+UFzIqen7QZU1UhMyjvW\nj6MfNRpRM8kPKkKqQaSQRQWd6tERpWrsiBODxCUvJrOTrRLPe+ucU057BSvk\nieKUWI3m/CiuabtTSdLzkNW5cKIJgOsXjHN+MTBGG7hH+be9DDqFtN0zg/ct\nQGsE5Uzlbd1bAuY2kTQ7VQ+eYAqxa3YL4CllJvtbClb0zwKnbgzygEHNTw8o\nkpUDRlHwEGC4xjGmRP8hHxh2+uoqhHwKCaBFIcp8IBkuVuuhx8/xhy2XDhDS\n5wII2Bxdtcban6SDUwZQPre43Wv7LYXre/x8XQR+DR/cydakx+mgoME6tiXC\nyyKDjVhjEGTFmiMTi3GnzaYo37wgABLZnKR/FOWW/2KUxMig9w7Gn+eNfX/i\nubv5IXSCe8O23DJPuJMhCSLJrCW6Ri80qwnWl1u/HkX/6C6ZrbAjkyXLqadS\npAm7gyjx95zeyx3ELtPZVqMCTdk/DQcRDiHwhf+D5u6SWVnTfEFRDGyCAE5m\nq5ZZ/EgTBugzfsXODVfv00QJy/Pg9HkttDSGUrCSXD0zHaiOL1DKXQ8WfG1W\nC+cyar4hiX8/ilced5DhMh876+20bLLMuR1o+nUzXeyAhJ6ROFGLXSvM2hrS\nTILj\r\n=0qju\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH8KiFRyxzvKxSrrAjCI8v6aSbNQrUc2+LB5n242m1JwIhALziqRRJDmvs27rsee/DerF1RXq/Km0dFlhclZ8MlIk4"}]},"maintainers":[{"name":"asmartbear","email":"theoriginalesmartbear@gmail.com"}],"_npmUser":{"name":"asmartbear","email":"theoriginalesmartbear@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pojo-compare_1.0.2_1588452383702_0.011506816004908549"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-12T21:47:05.268Z","1.0.0":"2020-04-12T21:47:05.425Z","modified":"2022-04-04T15:47:53.134Z","1.0.1":"2020-04-30T03:59:58.890Z","1.0.2":"2020-05-02T20:46:23.791Z"},"maintainers":[{"name":"asmartbear","email":"theoriginalesmartbear@gmail.com"}],"description":"Compares two POJOs, either for equality or for less/equal/greater","homepage":"https://github.com/asmartbear/pojo-compare#readme","keywords":["diff","compare","pojo","json"],"repository":{"url":"git+ssh://git@github.com/asmartbear/pojo-compare.git","type":"git"},"author":{"name":"Jason Cohen","url":"https://github.com/asmartbear"},"bugs":{"url":"https://github.com/asmartbear/pojo-compare/issues"},"license":"MIT","readme":"# POJO Compare\n\nExtremely fast deep-comparison function (both \"equal\" and \"greater/equal/lesser\") for POJOs that are compatible with JSON-encoding, meaning for types matching this Typescript definition:\n\n```typescript\ntype POJO = null|boolean|number|string|Array<POJO>|{ [field:string]: POJO };\n```\n\nUses:\n\n* Like \"Deep Equal,\" but additional option for total ordering.\n* In `Array#sort()` to sort POJOs quickly.\n\nFeatures:\n\n* **Fast:** Faster than other npm libraries for deep-equals (see below), due to only caring about POJOs.\n* **Small:** No dependencies, extremely small amount of code.\n* **Typescript:** Written in Typescript, but distributed as regular Javascript, and includes Typescript declarations.\n\n## Usage\n\nUse through [`npm`](https://www.npmjs.com/package/@asmartbear/pojo-compare), or get the source from [Github](https://github.com/asmartbear/pojo-compare).\n\n### `equal()`\n\n```javascript\nimport { equal as eq } from '@asmartbear/pojo-compare';\n\nconsole.log(eq(null,null));            // -> true\nconsole.log(eq(null,undefined));       // -> false\nconsole.log(eq(123,\"123\"));            // -> false   (type-specific!)\nconsole.log(eq([1,\"2\"],[1,\"2\"]]));     // -> true\nconsole.log(eq({a:1,b:2}, {b:2,a:1})); // -> true\n```\n\n### `compare()`\n\nReturns `-1` if lesser, `1` if greater, or `0` if equal.  If you supply non-POJO objects, the results are undefined.\n\n```javascript\nimport { compare as cmp } from '@asmartbear/pojo-compare';\n\nconsole.log(cmp(null,null));  // -> 0\nconsole.log(cmp(null,undefined)); // -> 1  (null > undefined as a convention)\nconsole.log(cmp(123,321));    // -> -1\nconsole.log(cmp(123,\"1\"));    // -> -1     (numbers always less than strings)\nconsole.log(cmp(\"21\",\"1\"));   // -> 1      (strings compared as strings)\nconsole.log(cmp([],[]]));     // -> 0\nconsole.log(cmp([],{}));      // -> -1\nconsole.log(cmp([1,5,5],[99,5,5])); // -> -1   (arrays compare in order)\nconsole.log(cmp(\n    {a: 1, b: 2},\n    {a: 2, b: 1}\n)); // -> -1   (maps compare keys in their sorted order)\nconsole.log(cmp(\n    {a: 2},\n    {b: 1}\n)); // -> -1   (maps keys come first; here a < b)\n```\n\n## Benchmarks\n\nThe benchmarks are included in the project if you want to run them youself, or please contribute new ones!\n\nThis `equal` is the fastest; `compare` is slower due to fewer opportunities for short-circuiting the answer.\n\n```\npojo-compare x 11,120 ops/sec ±1.43% (91 runs sampled)\npojo-equal x 18,642 ops/sec ±0.81% (95 runs sampled)\nqcompare x 17,547 ops/sec ±1.34% (89 runs sampled)\nfast-deep-equal x 15,459 ops/sec ±1.38% (86 runs sampled)\nfast-equals x 13,019 ops/sec ±1.43% (90 runs sampled)\nnano-equal x 11,296 ops/sec ±1.31% (87 runs sampled)\ndeep-equal x 11.37 ops/sec ±1.79% (33 runs sampled)\ndeep-eql x 4,550 ops/sec ±1.03% (91 runs sampled)\nFastest is pojo-equal\n```","readmeFilename":"README.md"}