{"_id":"json-canonicalize","_rev":"14-9588e83349e75dbcf0265fb647bc766a","name":"json-canonicalize","dist-tags":{"latest":"3.0.1"},"versions":{"1.0.0":{"name":"json-canonicalize","version":"1.0.0","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.0.0","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize/issues"},"dist":{"shasum":"bdbff9e62f82c8eae2bb67ebc83bc059dcb90db5","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.0.0.tgz","fileCount":42,"integrity":"sha512-tdwuHOC5ERWnBneqc+6wBhsdSxCeKREikR4WXIAm6VcVVN46kh/gYp/NXQc9bbLd23E3nQTfE9h93XFn8+SV9g==","signatures":[{"sig":"MEUCIANzYehvrhnoL31z3aPbwSNmW9hdFIR0q/2W0qasUDb3AiEAq1qOrFFWiM1FOgSzi5f0XXk5aURG+htpxCOKp49QjC0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":68759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgyixCRA9TVsSAnZWagAAMNAQAIjt/zZavfhKebmFqRfZ\nkeKRizvb8lbTdRKUmcgGQqGbx1l0qu52uc1I2WfcVYUEx33WDPx73ybGiKl0\n4Lut85O2LvSVJaFZWIJmw249lMJlDuB1EB+IQPoJbCXl+BfTpVBvbZwqd6qt\n+B9RL504jAn1q0eC3W3V6ped3lqSDEEvFN6PEoWix6yUNrWKv6PgmvO7oYgw\n/FkjxEbFWL8lUahc/qq+XbM2q4QgxwodGbi7yG1RgwMOTcShrKmcbBT0Cv6D\n9ndnB02qB73IS9Sg6RrEMpYt+qef03iSUggez57ZaZ/pRmpsz1i4zZgGPfsP\nVyUU3zLfpnjkQW93T8QKHLmfhfM4Cu5xMhGCtSu49I9a6e8EaCXbPGDLx7hf\nSpvE1A4D4hM8n+6ASxy3BZefKulru7LmGi4+m6GAIDEQJsoPcCeqfWUHT7hv\n06gyf5ZLxxV9DiNc3hZvgnfhLIvgNyGz8uVEzgK9iIPTJNRsjcONdbKPKDeX\nQB87q9LihSxRqBeIszSkoj6hrR/LZSp1B9GCRj3K043SzmnnC81MfVCz/vPd\nsY55tBmLiMwwr3GGM2RC9a1qLoHGYC2BReGXTwssVfyEEeF5noDCh4gEZH59\nCCaudfGCqinchvu0jglRlW62HferhxbFwv2bBbIunY+W1ex2fQi3TT57Mi3a\nFotq\r\n=hF/i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.git","type":"git"},"_npmVersion":"6.9.0","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"10.16.3","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{"tslib":">=1.9.0"},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.0.0_1568876721284_0.07023402540678658","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"json-canonicalize","version":"1.0.2","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.0.2","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize/issues"},"dist":{"shasum":"8a7f9f599a8fa9cf79fdd8053838f8b1b8331c91","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.0.2.tgz","fileCount":42,"integrity":"sha512-X0J+rUJZZXOSW3+e3S8MJe20xs1x/wJzJANDOpxsMMD4cjicWMG0PluTmwlj83l7Mlnmeq/o9FNTHNJHI5vrGA==","signatures":[{"sig":"MEUCIQDItRQVh3Axz6Somutg3nbHiEEQ99uGHsvaoxSMYx6IBgIgbV0is9C6/vbakd3jRmrLNMP7aTarMaw4cXptFfnchvw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdg0ZVCRA9TVsSAnZWagAA8/UQAKUC1idp2PCKzBqLk6XC\nv7OYyizw41aqU3ku7th2E5OjQ0uxDcQYFNv8ViWhqMIwZf3bDqF7FiuzbLaZ\nfg3fzjWNIS0q2kblScvN8jx1dVetAJfSjDd/XFGyau2UFOcLMgUTHBKwNmpB\nPlAMS+w243ZjvRkZX+rqF3LJ+Lh6AIbKcz+/00ItZFdpKL3N/wVEywAW+MDn\nRZ4AFkXZyvhwqG0liz+b9rn1Pn8011xXE79yQ0Tn+GfEn87BOehMAu84z24q\nx/C1ZULgcuIZn97dGCXWUZ20XneKye4yQmuYJ0Zrf3pfWTqBRcKnawY46hWT\nBm63FerIrk2EvarZLPUyLr8kUyLxBlLibXl5+ELsun0rUwXgDV7QJLuIv0GI\ne14CtRx+uEuSc1XwNQd7YnXNaPOb5ECDVSULVz02RhxDAWLJ7HM7XXU2qK10\nUQpu4RrSzyn1IJoCnWzheeBIGefkjZiXGrxfXDqvOcpiaw9Ah1Xmbe2tHJHu\norssqElNmlkF+7fgKOQCcol6R2vBcJCFxNPULVQgzKQRTROPk+u6ISECrVMV\novFGkIFdqNEsA7xdAHnKEwLPaKQiSpJR8Td4lTOeFiU0acK+jD69ZfD4oB1s\nYLVn23pedwdkRo3Uk9Du/273DyrNYmNAaDDUm1QMs3IRgExZKOwugDU6KxJL\niUGU\r\n=Y6KI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.git","type":"git"},"_npmVersion":"6.9.0","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"10.16.3","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.0.2_1568884309196_0.14934586010112127","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"json-canonicalize","version":"1.0.3","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.0.3","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize/issues"},"dist":{"shasum":"94a76709ee27ac37170a8e6ff365f97c75173994","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.0.3.tgz","fileCount":61,"integrity":"sha512-JNaq0PrhBpxVsNQRieYbJRlqH+3umxMOdI5c8t4C7XZZUBIuYE8gVRaPO6t1zgbO6t0aI0+hhQACfxG0WrI7jw==","signatures":[{"sig":"MEUCICvjVJglNzL2/fUKctoZcYVoqmapbVcZhUwMA8JD82ObAiEA2hjMZ2/H60a/o/yC3b1qm+aEOxjPQ1FQv6tGhqoDb8w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdg45wCRA9TVsSAnZWagAAQ1AP/2On1qC5FgsYyVOK2+bk\nuzyyaTtwT14NsZOwqA2ICnMXrU9DNCgNjtD5dmMRqXLsKrbfARHFRXmAM9Nx\nArvQLzihuN4yYEvbBMxdrEUOiC5KwmW0P34P7fVfTigU9Ic35PSfcqzqJnGJ\n0tl2rrIBCUpGVkQRfObeeCsSmuK0iXpyW3rtc9X+T3sv1zQtFkl061OASrvr\nQE84FGdcFKInEdTtpAFovHim/9XSzMi8oyezqyiA0Bi6wIfpK9+D27viivh+\nYvoeJws8NOpK8mM+H/FMt7pl3ZfUqQ6xQP6izY3KV32WYbsnfBLAPGnN7u0j\nQINog3vYb48XzZEhSeOeK8/eizGTJrebLOW2ZZ0bq6gF5wa5w+bvyFaTRZf6\ncTRFxr4TwFjTHTayVCyFuJFL/QEzDmCq1BXO1BWkLZXbu5rhey7XhCIxPj4s\n3AyYQVmMMfu9j6KmCv1BMFwy4Z2u2Z5doyBui2deu9p/8bCqJs+TBJa6E/Zr\n0KjJjwCDWtXe9fplhhgkvQoOsp7i1deKGf52tL0vGVOJ2TVJzqydLE6znYt1\nZuQVG1MKpQF7yPJX7LAWRpXkj62v+ogq3Bz/a+Qps94vieZzChpmwbh5zAok\n3+j474jUlRQXXiYAoUHyidKLQ9hWhpQDZ3yaakfpdwXoKDwNUn9tSwCFG5DY\n2xOD\r\n=Kxic\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.git","type":"git"},"_npmVersion":"6.9.0","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"10.16.3","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.0.3_1568902767657_0.4496692466399044","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"json-canonicalize","version":"1.0.4","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.0.4","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"efb2d0b07df12365e39028aa70f879237ec102ea","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.0.4.tgz","fileCount":61,"integrity":"sha512-YNr/ePzgReHwlnAm3EVV1pcimwesI+1DZr5v7WBKOc1zE1t7pjxWAPRxJFT3ll6flLIdRe0DPia/8cl2FLAZNA==","signatures":[{"sig":"MEUCIQC1Tuq0ElY8WIRMY0kj76hkiFtqkeLG1GkziQ+oQn8mCwIgHnKxg/sDog3CZE36ZN+ukQpknkp33s8PumHAk43PhfI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglUDhCRA9TVsSAnZWagAAedgQAJzv6xWHnkqhg2p2cy51\nrq/WyDj/dWzil8MzcC1TeoOcmkKWXsUa8vhrgNQhXqcj+hKX/sGztqdbJ6cz\nzYi3ZBI6VDXkWNW21XbbEdOzitBtoO1a2erzJmCySPRtVBxjnECBAhWedGT/\nxvmcdD38Jhp+PQulplzYFL54zTTY17kQyDaKO95G/VXrtjOanGxQMkIHRBd6\nMtZho05EHH1XYVpbgUQUr2rJOxuAnXMbZ/ZidV/az4TLRbmjnoWf9+TvLsFD\nxhWR9n8KVX0Vp51UQp+yWpndZXsvrIqERqkQ/nM8glJJJ1oIxkFc09ljBsiD\no5IlibnnTopj1KxfLYp1afsCg3ULN3UwG9UnBqO9v1Vp0JSSBnveBrZ2pCx+\nmcjurUohaCqeJYdrUMNwxMssbZdxCyCy/XYi8SdMfNtbbETSn+MCtxCDn/df\nbgVKaPUzmXnC8d3On5r2tbJ6eSdrCKDjDJ/4rzINcygAzF7D2uCB/k2khFaj\nV1l/YElh238lBOIZN11Q5X9Wl94K2IfTQIhKojwZCa6BvFiGFPqc78YsO0+j\n5FqDURysM+7yuGklUBYruWbTUC3eLRI2C9v2eqHKJnqRkvomRtowRRsoGB3F\noB8j63mvwOTcUdJdhupWEMCBL6pXea8Z5sBKThcOsMkLS9O+7gj8kx1lHbjY\na+ye\r\n=wJTZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"6.14.12","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.0.4_1620394209499_0.34818629096282505","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"json-canonicalize","version":"1.0.5","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.0.5","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"29dc6068ff2743e546b84a835e63bd51d118b0ba","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.0.5.tgz","fileCount":32,"integrity":"sha512-3fyWChA4FSgw6kVZW38PFIOJtPoFUR6MGENN4LUXsWmZOBpU1NaSWTlBhE1/ZTX67gEUzihCfw1wUCWsHDKNyA==","signatures":[{"sig":"MEUCIQCFGOQh8F91jTVhG1qxqRuufp6NU5W8q0QdKJvF5yMySgIgfIV+l35kHKb2A5oQaYInTnSUYgOth449j2W+1LtnOP8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkS80IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqqdxAAn3ZsOjoxEcvxb2u7dfeWTm7OGfZTszLLSnT6bk3YXs4okMqM\r\nlkRoMOrV6PfAveXtrCjA3+2G4aFA+CdugyMA0ozqO/xP58evuPnwJjb2Hs5v\r\n3ZEbVeNL7zUrj0g/NIZMTXnUJpNmKR0ynXPwj6ghoK4XX+vDetytexqb6qzy\r\nr2oDQPqMLDOZq2a27yPlkQJXaQ+3K3PQKZrohVA2IQvFExdTWieM4DlyeBkN\r\ng1l9usy4stq3gVo7M1IsDJD33H9vj05tSD7nKvRNy0/YWlgG7RIT0E2vdB1l\r\ndxF5seApn3/QgBg0eCbX9N6l2rhKEIkyanHyp6kHJ3ZsVSxfBw1sUNyNAH2X\r\nUbR2OJstbGWdUTWU9VcuTJMqYvuVJeutFUfJUnPxsfZPMiVzRik0Z4YIYrcO\r\n6DEwo03VCA21i8UgOcwJm9ReDJSnb0+Q5gLu2/7loPzRmn2Tj1sQ4b5+QV8n\r\nKjqX4H04/vLWa0HQtvCN1NLO65bWqY0HaE7YelndPnWoW3fveNhn2j5pQ+8B\r\nEI7bNjU/IDadu8GQaVjuTfmpO0N49jcWIOhM23pBfjcFMaRWGNWFC6qm94zg\r\n6fUMVj4zXzLxctOF2t55DJGxQ7dJGmJTZkLlCrX8GXXRoG3hRqrWMl6zbvuh\r\nV0zaTQRfg9kRxzmbJ0fdqZHLb2PrU5xqJPc=\r\n=9Tyi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","gitHead":"6376df507627666472c63d6a4a2aeef74f7ce1c0","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"9.5.0","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"18.15.0","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.0.5_1682689287986_0.6254778452060026","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"json-canonicalize","version":"1.0.6","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.0.6","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"c63dc9b909db322fec058320a0f81aef6569b257","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.0.6.tgz","fileCount":60,"integrity":"sha512-kP2iYpOS5SZHYhIaR1t9oG80d4uTY3jPoaBj+nimy3njtJk8+sRsVatN8pyJRDRtk9Su3+6XqA2U8k0dByJBUQ==","signatures":[{"sig":"MEQCIFscD+PkKaxjOGnuvrtt/Sq0ZzzLrFPtraeDFm2m9P+0AiAiECFiDF9SzBdTqybD7pMLYP3TjCdFC9kbJS8rH07p9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92204},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","gitHead":"47e9e246097c53263a65375885c3cccef8f2d28f","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"9.5.0","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"18.15.0","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.0.6_1684286919333_0.22846756464601214","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"json-canonicalize","version":"1.1.0","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.1.0","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"85c6b2db505cfde6fc3f69ecd2ac75b01dd08648","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.1.0.tgz","fileCount":60,"integrity":"sha512-Y/gUYcjKpyl5aB2ksljGQFNmnL2tnlirHNTwkk+rzIjDOsQkqnHHbbWXMsP7OmKpmC2pWN2j+CqWnM2/ShvxcQ==","signatures":[{"sig":"MEYCIQCimRS/xVO9x2K6TXdVg5653jTyi/NQ8CBMahEosgxpXAIhALBZr8muNmRUpOde/nYkpyj3bVFux2yV5zqnDKauxOub","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125490},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","gitHead":"692dfcc948af3ad99969a60b5bb2d0275ce8468e","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"10.8.2","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.1.0_1750032251000_0.6942914639828097","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"json-canonicalize","version":"1.1.1","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.1.1","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"c9b71f3911b681aa6b880f177a360b66a0327208","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.1.1.tgz","fileCount":60,"integrity":"sha512-iIFs/im15T8nfVz+hcU0rgJicUzY5+bH3Nji8MgGecQ0mS+xGtr3qku2phlkHr4m0mP5nadDAFojT8FT7uqLhQ==","signatures":[{"sig":"MEUCIQDcKkg0B9KUbvcUG4JEMXlHIIGbZ4VvWgKnnJjcILGbNwIgJZeXCJ6BTOSeL6h+uTUlSJEN/5xpX7iEoQ9kbvCoOFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143483},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","gitHead":"e15afb3c36b0aefdae32a82a5818ac9e93ee66ca","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","actor":{"name":"riceball","type":"user","email":"snowyu.lee@gmail.com"},"email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"10.8.2","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.1.1_1750991183724_0.8692769599367585","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"json-canonicalize","version":"1.2.0","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@1.2.0","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"305274b1143fb793f421ffd8fc341f97eb57652b","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-1.2.0.tgz","fileCount":74,"integrity":"sha512-TTdjBvqrqJKSADlEsY5rWbx8/1tOrVlTR/aSLU8N2VSInCTffP0p+byYB8Es+OmL4ZOeEftjUdvV+eJeSzJC/Q==","signatures":[{"sig":"MEQCIDAIpW8fURdBeAlB+pQKLrmnPtRLSZqFlacXIBwMpkJiAiACa+DmZvqZ25+s36yExBaipfuR0aHYAGTGiSR4iG2Lgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150768},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","gitHead":"05c4c514f616ab57b197c0a22391307398ad561f","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","actor":{"name":"riceball","type":"user","email":"snowyu.lee@gmail.com"},"email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"10.8.2","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_1.2.0_1751095476596_0.8284650868025065","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"json-canonicalize","version":"2.0.0","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@2.0.0","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"920b1f7ad1954c9470cbb5bfd460cba5a97b33a7","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-2.0.0.tgz","fileCount":74,"integrity":"sha512-yyrnK/mEm6Na3ChbJUWueXdapueW0p380RUyTW87XGb1ww8l8hU0pRrGC3vSWHe9CxrbPHX2fGUOZpNiHR0IIg==","signatures":[{"sig":"MEYCIQD73Ivsc55rSDbRaHyC6sTBQKFYEIXa2TIAexDMSAWy5AIhAPagECWlMQ3zoH8DqIjeZTuk0XQztUdAQMM1u6h8qDJH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156162},"main":"./bundles/index.umd.js","es2015":"./esm2015/index.js","module":"./esm5/index.js","gitHead":"24320953c71830200cde2d451eae486e32439bca","typings":"./types/index.d.ts","_npmUser":{"name":"riceball","actor":{"name":"riceball","type":"user","email":"snowyu.lee@gmail.com"},"email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"10.8.2","description":"JSON canonicalize function ","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{},"_hasShrinkwrap":false,"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_2.0.0_1751176985659_0.9530234102152364","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"json-canonicalize","version":"2.0.1","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@2.0.1","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"2b2cf8b13be44865b0047f75e51c2508721e84a4","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-2.0.1.tgz","fileCount":12,"integrity":"sha512-TuGrLM400c1VN8bQsSOiyDEEmRjIVgFvcSehWC+0JJaV4BGl1vYNxHBPVsN5ADUZIcWp75IN1yf+vCZyDjPt1Q==","signatures":[{"sig":"MEYCIQDUqkTbi76pMbvtlOwSg7lQl05YjT5eDeWA6YPh5I/ICwIhAMQQtCLoYzPfMhfB0RnMGz4sYDBRzK4kk/KYNYiMarSL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32761},"main":"./bundles/index.umd.js","husky":{"hooks":{"pre-push":"npm run style && npm test -- --bail --onlyChanged","commit-msg":"commitlint --config config/commitlint.config.js -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"es2015":"./esm2015/index.js","module":"./esm5/index.js","engines":{"npm":">=6.0","node":">=8.5","yarn":"^1.0"},"gitHead":"9e9461e69a182b72f974f425a899bf84677f61dd","scripts":{"docs":"typedoc -p . --theme minimal --target 'es6' --excludeNotExported --excludePrivate --ignoreCompilerErrors --exclude \"**/src/**/__tests__/*.*\" --out docs src/","lint":"tslint --project tsconfig.json --format codeFrame","size":"node scripts/file-size ./dist/bundles/index.umd.min.js ./dist/bundles/index.esm.min.js","test":"jest -c ./config/jest.config.js","build":"tsc && tsc --target es2018 --outDir dist/esm2015 && rollup -c config/rollup.config.js && rollup -c config/rollup.config.js --environment NODE_ENV:production","style":"npm run format -- --list-different && npm run lint","commit":"git-cz","format":"prettier \"**/*.{ts,tsx,js,jsx,css,scss,sass,less,md}\"","verify":"npm run validate-js && npm run lint && npm run test:ci","cleanup":"shx rm -rf dist","release":"npx standard-version","test:ci":"npm t -- --ci","lint:fix":"npm run lint -- --fix","prebuild":"npm run cleanup && npm run verify","postbuild":"node scripts/copy && npm run size","style:fix":"npm run format:fix && npm run lint:fix","format:fix":"npm run format -- --write","prerelease":"npm run build","test:watch":"npm t -- --watch","postrelease":"node scripts/copy && node scripts/build && npm run release:github && npm run release:npm","release:npm":"cd dist;npm publish;cd ..","validate-js":"tsc -p ./config && tsc -p ./scripts","test:coverage":"npm t -- --coverage","release:github":"git push --no-verify --follow-tags origin master","release:preflight":"npm pack ./dist --dry-run"},"typings":"./types/index.d.ts","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"10.8.2","description":"JSON canonicalize function ","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["npm run lint:fix","git add"],"**/*.{ts,tsx,js,jsx,css,scss,sass,less,md}":["prettier --write","git add"]},"sideEffects":false,"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"~0.3.3","jest":"~26.6.3","husky":"~6.0.0","kleur":"~4.1.4","tslib":"^2.2.0","rollup":"~2.47.0","tslint":"~6.1.3","ts-jest":"~26.5.6","typedoc":"^0.20.36","copy-dir":"1.3.0","prettier":"~2.2.1","cross-var":"~1.1.0","gzip-size":"~6.0.0","commitizen":"~4.2.3","tslint-etc":"~1.13.9","typescript":"^4.2.4","@types/jest":"~26.0.23","@types/node":"^15.0.2","brotli-size":"~4.0.0","lint-staged":"~10.5.4","pretty-bytes":"~5.6.0","tslint-react":"~5.0.0","@types/shelljs":"~0.8.8","@commitlint/cli":"~12.1.1","@types/prettier":"~2.2.3","@rollup/plugin-json":"4.1.0","jest-watch-typeahead":"~0.6.3","rollup-plugin-terser":"~7.0.2","webpack-config-utils":"~2.3.1","@rollup/plugin-replace":"2.4.2","tslint-config-prettier":"~1.18.0","tslint-config-standard":"~9.0.0","@rollup/plugin-commonjs":"~18.1.0","rollup-plugin-sourcemaps":"~0.6.3","typescript-tslint-plugin":"~1.0.1","cz-conventional-changelog":"~3.3.0","@rollup/plugin-node-resolve":"13.0.0","@types/webpack-config-utils":"~2.3.1","@lopatnov/rollup-plugin-uglify":"2.1.0","@commitlint/config-conventional":"~12.1.1"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_2.0.1_1786693375640_0.9293422273230856","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"json-canonicalize","version":"3.0.0","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","_id":"json-canonicalize@3.0.0","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"f77971f5957bd4ac15213e92c3fcd1ed38e034eb","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-3.0.0.tgz","fileCount":9,"integrity":"sha512-PW21BtLiKRV7gJcT8jf2X4UNN2AF4c1TYEVug1wAWRQSGBJj7fL+v4NgOkIo54SCBPFDyqzMcOJNhjwywCIBuw==","signatures":[{"sig":"MEQCIB/UNNwablxL7RH8joWaeDd9e+Vgk5MunIFmpuFzZd7OAiBj92virnS3ggZo2CvUjMDyPOlkYidtkdxuA01CwChkgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37569},"main":"./dist/index.js","husky":{"hooks":{"pre-push":"npm run lint && npm test -- --bail --onlyChanged","commit-msg":"commitlint --config config/commitlint.config.js -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"types":"./dist/index.d.ts","config":{"commitizen":{"path":"cz-conventional-changelog"}},"module":"./dist/index.mjs","engines":{"node":">=8.5"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"4869377045ca75b4afbf98abd8a6f2bd5be21d84","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest -c ./config/jest.config.js","build":"tsup","release":"npx standard-version","test:ci":"npm t -- --ci","lint:fix":"eslint 'src/**/*.{ts,tsx}' --fix","validate":"tsc --noEmit","prerelease":"npm run build","test:watch":"npm t -- --watch","release:npm":"npm publish","test:coverage":"npm t -- --coverage","prepublishOnly":"npm run build","release:github":"git push --no-verify --follow-tags origin master"},"_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"10.8.2","description":"JSON canonicalize function ","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["eslint --fix","git add"],"**/*.{ts,tsx,js,jsx,css,scss,sass,less,md}":["prettier --write","git add"]},"sideEffects":false,"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsup":"^8.0.0","husky":"~6.0.0","kleur":"~4.1.4","eslint":"^8.56.0","ts-jest":"~26.5.6","prettier":"~2.2.1","commitizen":"~4.2.3","typescript":"^4.9.5","@types/jest":"~26.0.23","@types/node":"^15.0.2","lint-staged":"~10.5.4","@commitlint/cli":"~12.1.1","jest-watch-typeahead":"~0.6.3","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"~3.3.0","@commitlint/config-conventional":"~12.1.1","@typescript-eslint/eslint-plugin":"^6.21.0"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/json-canonicalize_3.0.0_1787233322749_0.3359539002782974","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"_id":"json-canonicalize@3.0.1","bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"dist":{"shasum":"9da7f919f28e2622610b34a32e51f06a6c3c02cb","tarball":"https://registry.npmjs.org/json-canonicalize/-/json-canonicalize-3.0.1.tgz","fileCount":9,"integrity":"sha512-xEzkTucfHhDooWOSMOvrlll9oTk6/mXZIerF2DFWA2chHZsnc2zrmAKjVOyDbSYHr0e3Djx9F89nZ3U2Bn+lSw==","signatures":[{"sig":"MEUCIDQ6tjbKXTKcGOeR+S1Km/82i3ta5jeNF25fBeKS5XMQAiEArG3Rd3cBXBpoNq3XLdGN0F6g9JI1sBM3tfdTcG7BaM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGrtd30dZu6WxN/iz+fTM8QUXo1vL9nYEdvuV9lcLKZZAiEAl4odbn9Kfr6t5dvvD2nvo3yF6Qh368QC3n+RzMITFEU="}],"unpackedSize":49564},"main":"./dist/index.js","name":"json-canonicalize","husky":{"hooks":{"pre-push":"npm run lint && npm test -- --bail --onlyChanged","commit-msg":"commitlint --config config/commitlint.config.js -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"types":"./dist/index.d.ts","author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"module":"./dist/index.mjs","engines":{"node":">=8.5"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"gitHead":"2683f21fab4bd56fc30e040e3962d0b0a4ce192a","license":"MIT","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest -c ./config/jest.config.js","build":"tsup","release":"npx standard-version","test:ci":"npm t -- --ci","lint:fix":"eslint 'src/**/*.{ts,tsx}' --fix","validate":"tsc --noEmit","prerelease":"npm run build","test:watch":"npm t -- --watch","release:npm":"npm publish","test:coverage":"npm t -- --coverage","prepublishOnly":"npm run build","release:github":"git push --no-verify --follow-tags origin master"},"version":"3.0.1","_npmUser":{"name":"riceball","email":"snowyu.lee@gmail.com"},"homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"_npmVersion":"10.8.2","description":"JSON canonicalize function ","directories":{},"lint-staged":{"src/**/*.{ts,tsx}":["eslint --fix","git add"],"**/*.{ts,tsx,js,jsx,css,scss,sass,less,md}":["prettier --write","git add"]},"maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"sideEffects":false,"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"~26.6.3","tsup":"^8.0.0","husky":"~6.0.0","kleur":"~4.1.4","eslint":"^10.10.0","ts-jest":"~26.5.6","prettier":"~2.2.1","@eslint/js":"10.0.1","commitizen":"~4.2.3","typescript":"^4.9.5","@types/jest":"~26.0.23","@types/node":"^15.0.2","lint-staged":"~10.5.4","@commitlint/cli":"~12.1.1","@eslint/eslintrc":"3.3.7","jest-watch-typeahead":"~0.6.3","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.70.0","cz-conventional-changelog":"~3.3.0","@commitlint/config-conventional":"~12.1.1","@typescript-eslint/eslint-plugin":"^8.70.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/json-canonicalize_3.0.1_1789004362356_0.09320016990561442"}}},"time":{"created":"2019-09-19T07:05:21.283Z","modified":"2026-09-10T01:39:22.617Z","1.0.0":"2019-09-19T07:05:21.448Z","1.0.2":"2019-09-19T09:11:49.372Z","1.0.3":"2019-09-19T14:19:27.760Z","1.0.4":"2021-05-07T13:30:09.652Z","1.0.5":"2023-04-28T13:41:28.320Z","1.0.6":"2023-05-17T01:28:39.495Z","1.1.0":"2025-06-16T00:04:11.182Z","1.1.1":"2025-06-27T02:26:23.918Z","1.2.0":"2025-06-28T07:24:36.793Z","2.0.0":"2025-06-29T06:03:05.845Z","2.0.1":"2026-08-14T07:42:55.778Z","3.0.0":"2026-08-20T13:42:02.884Z","3.0.1":"2026-09-10T01:39:22.444Z"},"bugs":{"url":"https://github.com/snowyu/json-canonicalize.ts/issues"},"author":{"name":"Riceball LEE","email":"snowyu.lee@gmail.com"},"license":"MIT","homepage":"https://github.com/snowyu/json-canonicalize.ts#readme","keywords":["json","canonical","canonicalize","canonicalization","serialization","lexicographic","sign","signature","signing","crypto"],"repository":{"url":"git+https://github.com/snowyu/json-canonicalize.ts.git","type":"git"},"description":"JSON canonicalize function ","maintainers":[{"name":"riceball","email":"snowyu.lee@gmail.com"}],"readme":"# json-canonicalize\n\n> JSON canonicalize function\n\n[![Build Status](https://travis-ci.org/snowyu/json-canonicalize.svg?branch=master)](https://travis-ci.org/snowyu/json-canonicalize)\n[![NPM version](https://img.shields.io/npm/v/json-canonicalize.svg)](https://www.npmjs.com/package/json-canonicalize)\n![Downloads](https://img.shields.io/npm/dm/json-canonicalize.svg)\n[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)\n[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)\n\n---\n\n# JSON Canonicalization\n\nCryptographic operations like hashing and signing depend on that the target\ndata does not change during serialization, transport, or parsing.\nBy applying the rules defined by JCS (JSON Canonicalization Scheme),\ndata provided in the JSON [[RFC8259](https://tools.ietf.org/html/rfc8259)]\nformat can be exchanged \"as is\", while still being subject to secure cryptographic operations.\nJCS achieves this by building on the serialization formats for JSON\nprimitives as defined by ECMAScript [[ES6](https://www.ecma-international.org/ecma-262/6.0/index.html)],\nconstraining JSON data to the I-JSON [[RFC7493](https://tools.ietf.org/html//rfc7493)] subset,\nand through a platform independent property sorting scheme.\n\n- Working document: https://cyberphone.github.io/ietf-json-canon\n- Published IETF Draft: https://tools.ietf.org/html/draft-rundgren-json-canonicalization-scheme-05\n- Published RFC 8785: https://www.rfc-editor.org/rfc/rfc8785\n\n## ✨ Features\n\nThe JSON Canonicalization Scheme concept in a nutshell:\n\n- Serialization of primitive JSON data types using methods compatible with ECMAScript's `JSON.stringify()`\n- Lexicographic sorting of JSON `Object` properties in a _recursive_ process\n- JSON `Array` data is also subject to canonicalization, _but element order remains untouched_\n\n## RFC 8785 Compatibility\n\nThis implementation is compatible with JCS / RFC 8785 for all data that can actually be represented in JSON, with two enhancements on top:\n\n- **Recursive References:** circular references can be handled (replaced by a `[Circular:$.path]` marker) instead of aborting, which the standard does not cover.\n- **Extra filtering:** `canonicalize` drops `undefined` object properties and converts `undefined` array items to `null` (see below).\n\n### A note on `undefined`\n\n`undefined` does not exist in JSON. The JSON data model ([RFC 8259](https://www.rfc-editor.org/rfc/rfc8259#section-1)) defines only object, array, string, number, `true`, `false`, and `null`, and RFC 8785 constrains the input to the I-JSON subset. As a JavaScript value, `undefined` only exists *before* serialization, so the RFC does not — and cannot — define how it should be serialized.\n\nThe only observable \"reference behavior\" is the sample code in [RFC 8785 Appendix A](https://www.rfc-editor.org/rfc/rfc8785#appendix-a), which intentionally skips error handling and blindly leaks `undefined` into its output — e.g. `[1,undefined,3]`, which is invalid, unparseable JSON.\n\nInstead of emitting invalid JSON, the default `canonicalize` follows the ECMAScript `JSON.stringify` conventions — the same conventions RFC 8785 builds on for every other primitive ([§3.2.2](https://www.rfc-editor.org/rfc/rfc8785#section-3.2.2)):\n\n| Input | `canonicalize` | `JSON.stringify` (ES convention) | RFC 8785 App. A sample |\n| --- | --- | --- | --- |\n| `{ a: 1, b: undefined }` | `{\"a\":1}` | `{\"a\":1}` | `{\"a\":1,\"b\":undefined}` |\n| `[1, undefined, 3]` | `[1,null,3]` | `[1,null,3]` | `[1,undefined,3]` |\n\n- `undefined` **object properties** → dropped (`filterUndefined`)\n- `undefined` **array items** → serialized as `null` (`undefinedInArrayToNull`)\n\nFor the most RFC 8785-faithful behavior, use `canonicalizeEx` with `strictUndefined: true`: any `undefined` value terminates with an error, just like `NaN`/`Infinity` already do ([§3.2.2.3](https://www.rfc-editor.org/rfc/rfc8785#section-3.2.2.3)). With neither `undefined` option set, `canonicalizeEx` passes values through and reproduces the Appendix A sample output byte-for-byte (invalid `undefined` tokens included), which is mainly useful for testing against the reference implementation.\n\n```ts\ncanonicalizeEx(obj, { strictUndefined: true }); // throws on any undefined\n```\n\n## Non-finite numbers\n\nPer [RFC 8785 §3.2.2.3](https://www.rfc-editor.org/rfc/rfc8785#section-3.2.2.3), `NaN` and `Infinity` are not permitted in JSON: both `canonicalize` and `canonicalizeEx` throw an error when they encounter a non-finite number, instead of silently serializing it as `null`.\n\nNote that this also covers overflowing literals: `JSON.parse('{\"v\":1e400}')` overflows `1e400` to `Infinity` at parse time (there is no way for the serializer to recover the original literal), so canonicalizing such a document throws as well rather than producing a digest that collides with other overflowing values.\n\n### Intercepting overflow at parse time\n\nSince the overflow happens inside `JSON.parse`, the original literal is already lost by the time a value reaches the serializer. If you want to reject overflowing numbers at the boundary — before they enter your pipeline — parse with a reviver that checks `Number.isFinite`:\n\n```ts\nfunction parseRejectingNonFinite(text: string) {\n  return JSON.parse(text, (_key, value) => {\n    if (typeof value === 'number' && !Number.isFinite(value)) {\n      throw new Error(`Non-finite number (${value}) is not permitted in JSON (RFC 8785 §3.2.2.3)`);\n    }\n    return value;\n  });\n}\n\nparseRejectingNonFinite('{\"v\":1e400}'); // throws: Non-finite number (Infinity) is not permitted in JSON\ncanonicalize(parseRejectingNonFinite('{\"v\":1e400}')); // never reaches canonicalize\n```\n\n## `canonicalize` vs `canonicalizeEx`\n\n|  | `canonicalize(obj, allowCircular?)` | `canonicalizeEx(obj, options?)` |\n| --- | --- | --- |\n| Purpose | RFC 8785 + ECMAScript `JSON.stringify` conventions, zero config | Full control over filtering, strictness, and circular handling |\n| `undefined` object properties | dropped | kept unless `filterUndefined: true`; error with `strictUndefined: true` |\n| `undefined` array items | serialized as `null` | kept unless `undefinedInArrayToNull: true`; error with `strictUndefined: true` |\n| Circular references | `allowCircular` parameter | `allowCircular` option |\n| `include` / `exclude` filtering | — | ✅ |\n\n### Filtering with `include` / `exclude`\n\n`exclude` accepts a string or an array of property names and applies **recursively at every object level**; `include` is a **root-level whitelist** — missing names are silently skipped, and nested objects are serialized in full:\n\n```ts\nimport { canonicalize, canonicalizeEx } from 'json-canonicalize'\n\nconst obj = {\n  text: '你好',\n  num: 47734.12,\n  dt: new Date('2018-12-17T01:08:19.719Z'),\n  arr: [56, 'a', '12', { t: '455A', a: 123 }],\n}\n\n// exclude: a string or an array, applied at every nesting level\ncanonicalizeEx(obj, { exclude: 'num' })\n// '{\"arr\":[56,\"a\",\"12\",{\"a\":123,\"t\":\"455A\"}],\"dt\":\"2018-12-17T01:08:19.719Z\",\"text\":\"你好\"}'\n\ncanonicalizeEx(obj, { exclude: ['num', 'dt'] })\n// '{\"arr\":[56,\"a\",\"12\",{\"a\":123,\"t\":\"455A\"}],\"text\":\"你好\"}'\n\n// include: root-level whitelist, output sorted as always\ncanonicalizeEx(obj, { include: ['text', 'arr'] })\n// '{\"arr\":[56,\"a\",\"12\",{\"a\":123,\"t\":\"455A\"}],\"text\":\"你好\"}'\n\n// include selects root properties only; nested objects are kept whole\ncanonicalizeEx({ a: { b: 1, c: 2 } }, { include: ['a'] })\n// '{\"a\":{\"b\":1,\"c\":2}}'\n\n// combining both: exclude wins over include\ncanonicalizeEx({ a: 1, b: 2 }, { include: ['a', 'b'], exclude: 'a' })\n// '{\"b\":2}'\n```\n\nNotes:\n\n- While `include` is active, `filterUndefined` is not applied to the whitelisted root properties — an included property with an `undefined` value is emitted (or, with `strictUndefined: true`, throws).\n- Properties removed by `exclude` are not validated at all: with `strictUndefined: true`, an `undefined` value hiding under an excluded property does not throw.\n- For signing/hashing, prefer plain `canonicalize` — `include`/`exclude` produce non-canonical output by definition, so only use them for view-model or logging purposes.\n\n## 🔧 Installation\n\n```sh\nnpm add json-canonicalize\n```\n\n## 🎬 Getting started\n\nLet's demonstrate simple usage with ... example:\n\n```ts\nimport { canonicalize, canonicalizeEx } from 'json-canonicalize';\ncanonicalize(obj)\n// Add `include` and `exclude` options to `canonicalizeEx`.\ncanonicalizeEx(obj, {exclude:['num', 'dt']})\n\n// add canonicalize to JSON directly.\n// which means\n// JSON.canonicalize = canonicalize;\nimport from 'json-canonicalize/src/global';\nJSON.canonicalize(obj)\n```\n\n## API\n\n### `canonicalize(obj, allowCircular)`\n\nThis is the main function for JSON canonicalization. It takes a JavaScript object and returns its canonical string representation.\n\n-   `obj` (any): The JavaScript object to canonicalize.\n-   `allowCircular` (boolean, optional): If `true`, the function will handle circular references in the object by replacing them with a special identifier (e.g., `[Circular:$.ref]`) that includes the `ref` item's origin, allowing for correct restoration of the object from the string. Defaults to `false`.\n\n### `canonicalizeEx(obj, options)`\n\nThis is the extended canonicalization function, offering more granular control over the serialization process.\n\n-   `obj` (any): The JavaScript object to canonicalize.\n-   `options` (ISerializeOptions, optional): An object with the following properties. Note that `canonicalizeEx` passes options through to the serializer unmodified — only the options actually present are applied (the default `canonicalize` is the one that enables `filterUndefined` and `undefinedInArrayToNull`):\n    -   `allowCircular` (boolean, optional): Same as in `canonicalize`.\n    -   `filterUndefined` (boolean, optional): If `true`, `undefined` values in objects will be filtered out.\n    -   `undefinedInArrayToNull` (boolean, optional): If `true`, `undefined` values in arrays will be converted to `null`.\n    -   `strictUndefined` (boolean, optional): If `true`, any `undefined` value terminates with an error instead (takes precedence over the two options above).\n    -   `include` (string[], optional): An array of property names to include in the canonicalization.\n    -   `exclude` (string[], optional): An array of property names to exclude from the canonicalization.\n\n## 🥂 License\n\n[MIT](./LICENSE.md) as always\n\n# Refs\n\n- (JSON Canonicalization)[https://github.com/cyberphone/json-canonicalization]\n","readmeFilename":"README.md"}