{"_id":"@art-suite/art-core-ts-compare","_rev":"12-dfd4d3a7c6af399ef4ab1e6f6c312aa5","name":"@art-suite/art-core-ts-compare","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.1":{"name":"@art-suite/art-core-ts-compare","version":"0.0.1","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.1","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"e357755df58a766b637528b64495bfafd7b28843","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.1.tgz","fileCount":8,"integrity":"sha512-+Nx0pJYZGrXeDVOZN+TkWoPEdFzaNONJOCX8RyR0Sgjms6VYnH/VumTRhduzRtuxPXf1VWpOhMFjHwoHO1x91Q==","signatures":[{"sig":"MEUCIBD7AWRUu+IydYVPcTO5NstCsWiDQ8bB6l3kFNt5+CnqAiEAjmPlZ90Mkpnq5yY/LNRukL9EU4Ico81cU+Tp5Vyr5Vw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32503},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2624a06457bc92b39b1fce976c674322cf0dec88","scripts":{"test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shanebdavis","actor":{"name":"shanebdavis","type":"user","email":"shanebdavis@gmail.com"},"email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"10.9.2","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.2"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.1_1750688456481_0.26272680080780475","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@art-suite/art-core-ts-compare","version":"0.0.2","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.2","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"91824a1fead7ea0c2fde772a8315f46ef98f2be0","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.2.tgz","fileCount":8,"integrity":"sha512-oI7wRu1yjvDYP2kkbx36A0mc7oG+4o2UM2/KBh4w3MXK32SjKU4DzBHOOQXSsegvwyDesQFK9KfRmXpg+7G38g==","signatures":[{"sig":"MEYCIQDa0mIpBCyC6GQg0TBZ7PyH8tLDZD+xqT90pXT3SSuZiAIhAMfFfs0gbt3BpPpShNAi75YIRjCJ+8owaL3bJOCB8FlG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41885},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f2098ec53ed077950db021f0cdb32fcfa1bc3103","scripts":{"test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shanebdavis","actor":{"name":"shanebdavis","type":"user","email":"shanebdavis@gmail.com"},"email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"10.9.2","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.2"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.2_1750689492755_0.31337248998410905","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@art-suite/art-core-ts-compare","version":"0.0.5","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.5","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"eb3e9a819f3eadf69f0cba43504e1373850744fb","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.5.tgz","fileCount":8,"integrity":"sha512-IGAIMZjvMNqiYukszwEMdQZZ/TCWIkluuVgGJiXKT0AHAJZ4ek6qNvdadRtovhx7zgLmKIZtNt0oioIyfuUg0Q==","signatures":[{"sig":"MEQCIBvXmdS7aBrBg4QPG0Rg905MaoZYtzrljuebg1Vxdj7vAiBCCj0ePayjBFswIiOAWxfDw8aNOCZCgvZzmQNVwFGjNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ea10133cf7ab59258d47b76167791703907e97c7","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"10.9.2","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.5","@art-suite/art-core-ts-containers":"^0.9.3"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.5_1759229590699_0.1780180216721574","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@art-suite/art-core-ts-compare","version":"0.0.6","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.6","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"ff9bf677f9822fa9be6ea02b78585fccb076411f","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.6.tgz","fileCount":8,"integrity":"sha512-K1EJd+h+Tevy0D2AUeWU/5SlLLxiz1AsgaQBuHMDZcd+lR65CnwBN0A1rtWrSeRMC9M0oqZQVLX4XNXD+oPcNQ==","signatures":[{"sig":"MEYCIQCIWOp9nhq0vsWF0IH1pds2Sv1/k70ZIeyomvghWOqCuAIhALkAMiWRR6bBsKZFUbQCSsUnaj40KExLyctJ3NEYNzB8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"808aeb7ffce58b7a91719bdbec195f9ab44a3261","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"10.9.2","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.6","@art-suite/art-core-ts-containers":"^0.9.4"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.6_1759249831961_0.5010142153712056","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@art-suite/art-core-ts-compare","version":"0.0.7","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.7","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"b3e1869ab0007fb16e943c5f4061ec3a470df984","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.7.tgz","fileCount":8,"integrity":"sha512-5QaK2f0U3dnxE1RUJ3Qi0LuFTvmtp+5Wb+bFiV+izg9iDQxU1m4YPu1t/BTx+n7EByN811GaLG0Fi3h+qvSQ3Q==","signatures":[{"sig":"MEUCIQDHBWLBgCxFNx/jmpxphYq2pbIAScSTSQFG4EGRrlfqNwIgKmB9AwqMbDx5FXbCLFCJox6p7YWsApr6wOhsnWibB18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4b69947e91bab3ff30a7b721cd90fc9ffdf4998c","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"10.9.2","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.7","@art-suite/art-core-ts-containers":"^0.9.5"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^3.1.4"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.7_1759638228951_0.2795514906011811","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@art-suite/art-core-ts-compare","version":"0.0.8","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.8","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"196c2fbc89ba44d18095dd2141d36207fd81a0f1","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.8.tgz","fileCount":8,"integrity":"sha512-hGTT+LMvx7IDqHZYjUdjpziuKul1fSyToJWAvl8nRCAIINzau+PSLp6rpVz+976vOWGfN78xhiJ/hLDEr44idA==","signatures":[{"sig":"MEQCIA/2bkcRBf7FdZ833jsSuGv5WBsJv5CQk5s76DSoGzZMAiA96UywbAgDE1Hx/KICjlU/V5d/YUIT/NM4tmp3g7rSew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4b69947e91bab3ff30a7b721cd90fc9ffdf4998c","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"11.6.1","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.8","@art-suite/art-core-ts-containers":"^0.9.6"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^4.0.5"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.8_1761821517060_0.6547434855211511","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@art-suite/art-core-ts-compare","version":"0.0.9","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.9","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"5ec857bec70c4e90817d795777d741178864a1b6","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.9.tgz","fileCount":8,"integrity":"sha512-KQCsSM0NHBAdIAcYvXS0nIuQetp9bISu6Z0bEscDC06tpg0Vaaf5Itd7MedjzgKLpkDGgiUZ0N0F3QdTuzASIA==","signatures":[{"sig":"MEYCIQCMOR07WpATO3J5MjqlObnoXlLX01AdPhRGh7I8qb/2XgIhAP9i6H9F5D+xvWZVeD+3QbmicqH5cpANHPR3t1d/GV5L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"97d17a0132830a727cd638036da941438464ca7c","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"11.6.1","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.9","@art-suite/art-core-ts-containers":"^0.9.7"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^4.0.5"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.9_1764840562969_0.856751748299152","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@art-suite/art-core-ts-compare","version":"0.0.10","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.10","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"ce765d2d6d006cf1cf7acf3397f0a562a232d6b3","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.10.tgz","fileCount":8,"integrity":"sha512-kFU7o+h1efpz1huOPxl542mKtyryjRY6lKY2QVloeYqUTfqNh17/kgz4V0hv4ni1h5fdruV60ictMp2yY4n8RQ==","signatures":[{"sig":"MEQCIBXLamckr3fbMsUDjDLpV7odXTW8Cb4hM8E238oZkpziAiByYBmPQxVANSxBeQn2q2IIkWjrWsnNf/VHr3JX+N5HpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45215},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f635633739d333a3244b82668abfe734ff3041bb","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"11.6.1","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.10","@art-suite/art-core-ts-containers":"^0.9.8"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^4.0.5"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.10_1764926762973_0.7012755158495403","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@art-suite/art-core-ts-compare","version":"0.0.11","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.0.11","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"d56263ac5bf5ba2c4a003d72cffa4c34a3e08d2e","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.0.11.tgz","fileCount":8,"integrity":"sha512-/+eA804mGD23REi1tH5Q4PtAcX8Z+gcGuFcld0mhPHN2nTKF7N1ku/ctdfgUm669Lp0V25NI3/qhtZ124HGsNg==","signatures":[{"sig":"MEUCIA0KkjJTTU7NjgBtH5jh441JmL5QYWPSCEBcY/VFmm1VAiEAoieXbhj+5xrzFjiWjMIEinYVtZG7yb2pkV5Yj2mXti8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45215},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"7003f424f0056253cac4ba41f80f86a3a007fe1d","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsup src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"11.6.1","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"24.10.0","dependencies":{"@art-suite/art-core-ts-types":"^0.3.11","@art-suite/art-core-ts-containers":"^0.9.9"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^4.0.5"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.0.11_1764927808391_0.03660192949016339","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@art-suite/art-core-ts-compare","version":"0.1.0","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.1.0","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"dfc2e49a6d4694033f7d10896ecc7d8e477bf8cf","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.1.0.tgz","fileCount":8,"integrity":"sha512-whbTKGbH1qM9+Ti+EAIdlHWGxEHSjdW6MhEgWjD8T3dXmLbyctujUDpfKp4atTAOADwr6bb66fMGguvvPeIKTw==","signatures":[{"sig":"MEYCIQC+ISoNLgcDK1TQlT5ucP17WgyXSIgmsxy7LjyVOpqWAgIhAM5D3kqdAbLzSrWqpRVxLPbBgQIEV/K6Hcb9eKm/D0TI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48832},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"d0e7cdefa294668411a7df9020d460845cecdb08","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsdown src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"11.6.2","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@art-suite/art-core-ts-types":"^0.4.0","@art-suite/art-core-ts-containers":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.1.0_1774599585895_0.2537921591683596","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@art-suite/art-core-ts-compare","version":"0.1.1","keywords":[],"author":{"name":"Shane Delamore"},"license":"MIT","_id":"@art-suite/art-core-ts-compare@0.1.1","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-ts#readme","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"dist":{"shasum":"47235c92bde99498db13778a31307020a5dfebeb","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.1.1.tgz","fileCount":8,"integrity":"sha512-eKj65jq/4xH18cHHFBUTjwOr3ti/Yv9uR8d1DkxGlxgBO9BfIWzICeyXNQ/KW5Ch/vGVBV15j2aNWPJXPxXRiw==","signatures":[{"sig":"MEUCIQDz3pm1DMwW9Cdd1YPzSPKk/IebxlwnppRl9p48oCtehwIgAtcPpJ/WzM3OOOI3I4VKW0dReViuBvwzs1OKFsqEgVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48831},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"bcf989075050f3ae85b96b75967e02282340e40b","scripts":{"perf":"node performance-test.js","test":"vitest run","build":"npx sort-package-json;tsdown src/index.ts --format esm,cjs --dts --sourcemap","clean":"rm -rf dist","prebuild":"npm run clean","test:watch":"vitest","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","check:types:fast":"tsc --noEmit --incremental"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-ts.git","type":"git"},"_npmVersion":"11.11.0","description":"A TypeScript comparison utility library","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@art-suite/art-core-ts-types":"^0.4.0","@art-suite/art-core-ts-containers":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/art-core-ts-compare_0.1.1_1774723485585_0.15258573716357415","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@art-suite/art-core-ts-compare","version":"0.1.2","description":"A TypeScript comparison utility library","keywords":[],"repository":{"type":"git","url":"git+https://github.com/art-suite/art-suite-ts.git"},"license":"MIT","author":{"name":"Shane Delamore"},"type":"module","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.mjs","types":"./dist/index.d.mts","scripts":{"prebuild":"npm run clean","build":"npx sort-package-json;tsdown src/index.ts --format esm,cjs --dts --sourcemap","build:clean":"npm run clean && npm run build","check:types":"tsc --noEmit","check:types:fast":"tsc --noEmit --incremental","clean":"rm -rf dist","perf":"node performance-test.js","prepublishOnly":"npm run build","test":"vitest run","test:coverage":"vitest run --coverage","test:watch":"vitest"},"dependencies":{"@art-suite/art-core-ts-containers":"^1.0.1","@art-suite/art-core-ts-types":"^0.4.1"},"devDependencies":{"@vitest/coverage-v8":"^4.0.18"},"gitHead":"2945f29ff56bf8d638d9ba8211f570e6d52fa7db","_id":"@art-suite/art-core-ts-compare@0.1.2","bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"homepage":"https://github.com/art-suite/art-suite-ts#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-7xEU5xkPV+ubH5AxIxh6azUlcaIt3sATg7N/s7xVfHH5UNCLoev+M0Nlvbfm60cuDHrKjQP9cqSqzV9X0EZ/3g==","shasum":"33c703d17d485c58fde4825b117f8c50f2100b84","tarball":"https://registry.npmjs.org/@art-suite/art-core-ts-compare/-/art-core-ts-compare-0.1.2.tgz","fileCount":9,"unpackedSize":49917,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDY8maRbc+IT9U4j+nE/VhPY/tMZDxeAp61Sk2Hqi2E/gIgUZsPEdFh4Dlyffv5iN/+au16GixlQO2qf8/B8CNrz7o="}]},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"directories":{},"maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/art-core-ts-compare_0.1.2_1781864582663_0.36976258411994856"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-23T14:20:56.403Z","modified":"2026-06-19T10:23:02.915Z","0.0.1":"2025-06-23T14:20:56.643Z","0.0.2":"2025-06-23T14:38:12.947Z","0.0.5":"2025-09-30T10:53:10.868Z","0.0.6":"2025-09-30T16:30:32.142Z","0.0.7":"2025-10-05T04:23:49.119Z","0.0.8":"2025-10-30T10:51:57.232Z","0.0.9":"2025-12-04T09:29:23.115Z","0.0.10":"2025-12-05T09:26:03.118Z","0.0.11":"2025-12-05T09:43:28.523Z","0.1.0":"2026-03-27T08:19:46.232Z","0.1.1":"2026-03-28T18:44:45.737Z","0.1.2":"2026-06-19T10:23:02.793Z"},"bugs":{"url":"https://github.com/art-suite/art-suite-ts/issues"},"author":{"name":"Shane Delamore"},"license":"MIT","homepage":"https://github.com/art-suite/art-suite-ts#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/art-suite/art-suite-ts.git"},"description":"A TypeScript comparison utility library","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"readme":"# @art-suite/art-core-ts-compare\n\nDeep equality, inequality, less-than and greater-than comparison - complete with custom object support.\n\n## Quick Start - Equality Functions\n\nThe easiest way to use this library is with the standard equality functions:\n\n```ts\nimport { eq, neq, lt, gt, lte, gte } from \"@art-suite/art-core-ts-compare\";\n\n// Basic equality\neq(5, 5); // true\neq([1, 2], [1, 2]); // true\neq({ a: 1 }, { a: 1 }); // true\neq(null, null); // true\n\n// Inequality\nneq(5, 10); // true\nneq([1, 2], [1, 3]); // true\nneq({ a: 1 }, { a: 2 }); // true\n\n// Less than / Greater than\nlt(5, 10); // true\nlt(\"a\", \"z\"); // true\nlt([1, 2], [1, 2, 3]); // true\nlt({ a: 1 }, { a: 1, b: 2 }); // true (missing key)\n\ngt(10, 5); // true\ngt(\"z\", \"a\"); // true\ngt([1, 2, 3], [1, 2]); // true\n\n// Less than or equal / Greater than or equal\nlte(5, 5); // true\nlte(5, 10); // true\ngte(10, 10); // true\ngte(10, 5); // true\n\n// Custom objects with comparison methods\nclass Box {\n  constructor(public value: number) {}\n  compare(other: any) {\n    if (!(other instanceof Box)) return -1;\n    return this.value - other.value;\n  }\n}\n\neq(new Box(5), new Box(5)); // true\nlt(new Box(2), new Box(5)); // true\n```\n\n## Power User - Deep Compare Function\n\nFor advanced use cases, the `compare` function provides fine-grained control:\n\n## Deep Compare Specification\n\nThis function performs a **deep comparison** between two JavaScript values and returns:\n\n- A **negative number** if the left value is less than the right.\n- A **positive number** if the left value is greater than the right.\n- `0` if the values are considered equal.\n- `NaN` if the values are not comparable (different types or incompatible comparisons).\n\n### Scope\n\nPrimarily designed for comparing **JSON-style values**:\n\n- `null`, booleans, numbers, strings\n- Arrays\n- Plain objects\n\nIt also supports **custom objects** that implement comparison interfaces.\n\n### Custom Comparison Methods\n\nIf the **left operand** defines one of the following methods, it will be used in this priority order:\n\n1. **`.compare(right: unknown): number`** (highest priority)\n   Must return a negative number, zero, or a positive number. Used for sorting.\n\n2. **`.lt(right: unknown): boolean` and `.gt(right: unknown): boolean`**\n   Used only if `.compare` is not present. Returns `-1` if `a.lt(b)` is true, `1` if `a.gt(b)` is true, or `0` if neither is true.\n\n3. **`.eq(right: unknown): boolean`** (lowest priority)\n   Used only if `.compare` and inequality methods are not present. If `true`, returns `0`. If `false`, falls back to type-based comparison.\n\nThese methods may throw. The caller is responsible for handling errors.\n\n### Comparison Rules\n\n#### Primitive Types\n\n- **Numbers**: Compared via subtraction (`a - b`) for efficiency.\n- **Strings**: Compared via `String.prototype.localeCompare()` for proper locale-aware comparison.\n- **Booleans**: Converted to numbers (`Number(a) - Number(b)`) for comparison.\n- **`null`** is treated as less than any non-`null` value.\n- **`undefined`** is treated as greater than `null` but less than any number or string.\n- **`NaN`** is not equal to anything, including itself.\n\n#### Arrays\n\nCompared element by element:\n\n- Compare each index recursively.\n- First non-zero result is returned.\n- If all elements are equal, shorter arrays sort first.\n\n#### Plain Objects\n\n- Keys are merged from both objects and sorted lexicographically.\n- For each key in sorted order:\n  - If a key is **missing in one object and present in the other**, the object missing the key is always considered less (comes first), regardless of the present value or key order.\n  - If both objects have the key, their values are compared recursively.\n- If all keys and values are equal, objects are equal.\n\n**Key Comparison Process**: When objects have different keys, the keys are converted to an array of strings, sorted lexicographically, and then compared as arrays. This ensures consistent ordering regardless of the original key order in the objects.\n\n**Examples:**\n\n- `{a: 1}` vs `{a: 1, b: 2}` → first is less (missing `b`)\n- `{a: 1, b: 0}` vs `{a: 1}` → second is less (missing `b`)\n- `{}` vs `{a: undefined}` → first is less (missing `a`)\n- `{a: null}` vs `{}` → second is less (missing `a`)\n- `{x: 1}` vs `{y: 1}` → `[x]` < `[y]`, so `compare({x: 1}, {y: 1})` returns `-1`\n- `{y: 1}` vs `{x: 1}` → `[y]` > `[x]`, so `compare({y: 1}, {x: 1})` returns `1`\n\n#### Incompatible Comparisons\n\nThe function returns `NaN` when:\n\n- **Different types**: Comparing values of different primitive types (e.g., number vs string, boolean vs number)\n- **Incompatible objects**: Objects that are not `==` and don't implement custom comparison methods\n- **Unsupported types**: Functions, symbols, classes, or other non-JSON-like values\n\n**Note**: Arrays and plain objects are always comparable (element-by-element and key-by-key respectively), even if they contain incompatible values internally.\n\n### Error Handling\n\nThis function **may throw** if:\n\n- Custom `.compare` or `.eq` methods throw.\n- Incompatible or uncoercible types are compared.\n\nConsumers (e.g., equality wrappers) are expected to catch errors and treat them as inequality or failure to compare.\n\n### TypeScript Usage Examples\n\n```ts\ndeepCompare(5, 10); // -5 (using subtraction)\ndeepCompare(\"z\", \"a\"); // 1 (using localeCompare)\ndeepCompare(null, 0); // -1\ndeepCompare([1, 2], [1, 2, 3]); // -1\ndeepCompare({ a: 1 }, { a: 1 }); // 0\ndeepCompare({ a: 1 }, { a: 2 }); // -1\n\ndeepCompare({ a: 1 }, { a: 1, b: 2 }); // -1 (missing b)\ndeepCompare({ a: 1, b: 0 }, { a: 1 }); // 1 (other is missing b)\ndeepCompare({}, { a: undefined }); // -1 (missing a)\ndeepCompare({ a: null }, {}); // 1 (other is missing a)\ndeepCompare({ x: 1 }, { y: 1 }); // 1 ({y: 1} is missing x)\ndeepCompare({ y: 1 }, { x: 1 }); // -1 ({y: 1} is missing x)\n\n// Incompatible comparisons return NaN\ndeepCompare(5, \"hello\"); // NaN\ndeepCompare(true, 42); // NaN\ndeepCompare(() => {}, {}); // NaN\n\nclass Box {\n  constructor(public value: number) {}\n  compare(other: any) {\n    if (!(other instanceof Box)) return -1;\n    return this.value - other.value;\n  }\n}\n\ndeepCompare(new Box(2), new Box(5)); // -3\n\nclass Tag {\n  constructor(public name: string) {}\n  eq(other: any) {\n    return other instanceof Tag && other.name === this.name;\n  }\n}\n\ndeepCompare(new Tag(\"a\"), new Tag(\"a\")); // 0\ndeepCompare(new Tag(\"a\"), new Tag(\"b\")); // fallback result (non-zero)\n\nclass Range {\n  constructor(public start: number, public end: number) {}\n  lt(other: any): boolean {\n    return other instanceof Range && this.end < other.start;\n  }\n  gt(other: any): boolean {\n    return other instanceof Range && this.start > other.end;\n  }\n}\n\ndeepCompare(new Range(1, 3), new Range(4, 6)); // -1 (1-3 < 4-6)\ndeepCompare(new Range(4, 6), new Range(1, 3)); // 1 (4-6 > 1-3)\ndeepCompare(new Range(1, 3), new Range(2, 4)); // 0 (overlapping ranges)\n```\n\n### Guarantees\n\n- Returns a stable comparison result for all JSON-like structures.\n- Respects `.compare()` and `.eq()` if defined on the **left operand**.\n- Returns `NaN` for incompatible type comparisons.\n- Never swallows internal errors — follows `localeCompare`-style strictness.\n","readmeFilename":"README.md"}