{"_id":"@adaskothebeast/hierarchical-convert-to-js-joda","_rev":"18-00ff0cc09256f13acdf9546fb79fcf79","name":"@adaskothebeast/hierarchical-convert-to-js-joda","dist-tags":{"latest":"11.0.1"},"versions":{"1.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"1.0.0","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@1.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"f6e2e2a9e51aa9fcef71a4692cfc1938e5dd78a8","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-1.0.0.tgz","fileCount":8,"integrity":"sha512-Hqtid45oAiQN+cFNEY4DfnoC71LFqpb//3u/PqNJNjAC6JndTr7AIKpiBkrH635zuz0KXFudWmBlPkdttvDIDg==","signatures":[{"sig":"MEYCIQDhJ5UFbsvPYgXUdGu6J0hptYTv/LzqiA67gu21z/IDBAIhAJP6u3YOxONZirTtM8rQ+qkTu+ND9ThEod4TIqNFYO+S","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19588},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"5a8393de558ed881da2eaed1093b1f44d8b84013","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"_npmVersion":"9.5.1","description":"Dates in JSON are usually serialized as strings. This library helps to convert them to Date objects. It also helps to convert duration strings to Duration objects.","directories":{},"_nodeVersion":"18.16.1","_hasShrinkwrap":false,"peerDependencies":{"tslib":"2.5.3","@js-joda/core":"^5.5.3","@js-joda/timezone":"^2.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_1.0.0_1690045931787_0.010578688436480688","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"1.1.0","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@1.1.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"3db95530fdcb07b3c5d52a348d87c6df97a23446","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-1.1.0.tgz","fileCount":8,"integrity":"sha512-GDcb4PVT+DZT/WcqAeVYHeIhIXbIo6cXKB8ZbNUnnLGKCl7/RGeqcmskal+g5AEscIg1ENiUrhuWrM0WRafrMQ==","signatures":[{"sig":"MEUCIAw9p+TVw2ZbJo0EbUkZBicO1C+dmhZndiASOe/OTyvTAiEAkGxQwEPaGzJ6jpEJv/ktoc+v5sRO6Vw5oDr0jfId1JA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19588},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"5a8393de558ed881da2eaed1093b1f44d8b84013","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"_npmVersion":"9.5.1","description":"Dates in JSON are usually serialized as strings. This library helps to convert them to Date objects. It also helps to convert duration strings to Duration objects.","directories":{},"_nodeVersion":"18.16.1","_hasShrinkwrap":false,"peerDependencies":{"tslib":"2.5.3","@js-joda/core":"^5.5.3","@js-joda/timezone":"^2.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_1.1.0_1690184284520_0.5101153122282767","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"1.2.0","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@1.2.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"ba206b3535ca34d3544361d24095366d6c4f5624","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-1.2.0.tgz","fileCount":8,"integrity":"sha512-TLnJZ//mBP6ne1bcTzqr8PLWAX447fHz4EAQ/3ixnaOhJfO/V5BKovrT/2BpiN/5cR2ZFD3KcS7rL2HzEUslLg==","signatures":[{"sig":"MEQCIFJptNBr7+BJELIgzcAkG5xkiLHjAKHxaQfkjM6lJ7+HAiAdGEoOR1YdW0lqI/nQBH1i0limqGyfZIlQ3n+8o8HyPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19566},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"e4b5c4c39932b5fc44e14c9d216b31eb05e5443f","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"_npmVersion":"9.6.7","description":"Dates in JSON are usually serialized as strings. This library helps to convert them to Date objects. It also helps to convert duration strings to Duration objects.","directories":{},"_nodeVersion":"18.17.0","_hasShrinkwrap":false,"peerDependencies":{"@js-joda/core":"^5.5.3","@js-joda/timezone":"^2.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_1.2.0_1691015855067_0.40885047506712824","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"2.0.0","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@2.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"d1397ec6de8792d4c91e14b32c57c7c0970c4ff5","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-2.0.0.tgz","fileCount":8,"integrity":"sha512-H1Re73/Q0T/johI/ZvCYraeam608HnVQ33T96Tcyg+4lhmNXc6BhXTp1vlv9JWVEDud1eepICNoFtlaUwrC/2w==","signatures":[{"sig":"MEUCIBZEr6P0O2KxpUZ77ZZQi0zpAaVe8W+5cybHlqVWjoNaAiEAw6KXh5Tr66FA7HFnFLExgbjpR0h+r8wlpGqgPkmemYg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18877},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"a680a7de38721a64c7252058496d6bc3580f5d05","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"_npmVersion":"10.1.0","description":"Dates in JSON are usually serialized as strings. This library helps to convert them to Date objects. It also helps to convert duration strings to Duration objects.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.6.2","@js-joda/core":"^5.6.1","@js-joda/timezone":"^2.18.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_2.0.0_1699714678895_0.49057436994221804","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"3.0.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@3.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"c8081703a2b6f2c00690b10fe6257554d2293ed2","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-3.0.0.tgz","fileCount":8,"integrity":"sha512-LTCW1ITHkFif1826IHETM+CT8wUdgcQ3u1MR8qY8KS+Wfj858f0um7aNwu/i3UmFtDUnCzM4E9jpeqr8m2llPg==","signatures":[{"sig":"MEUCID6Fz1eJLpOEjMebnHXIPcy1VnSFWdIwXUFbX5eqFB5iAiEA6QzRGTK4KVqYmXeKVaRwZVSmlqYmmBGRFYeJSGb4f9c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19152},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"ddfd51225dea744f8d13646f74264b5e17e45020","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"10.2.3","description":"Dates in JSON are usually serialized as strings. This library helps to convert them to Date objects. It also helps to convert duration strings to Duration objects.","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.6.2","@js-joda/core":"^5.6.1","@js-joda/timezone":"^2.18.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_3.0.0_1704557978641_0.19401116992145417","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"4.0.1","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@4.0.1","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"4841358a2de3b06560db7e188401ab6220084542","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-4.0.1.tgz","fileCount":8,"integrity":"sha512-Wcu9M5AmjxWez44AiFfaaaKEh4aC9N8xTgmVZNusJ/blI46Z/lKBYgmDWRJQPWWnViWTVupy2Q73Uy3by4/zvw==","signatures":[{"sig":"MEQCIGk7OIq1XKWPTf6isbekPwH5esRn1o/8l/SwGhPkvE/DAiADYcmMk18KgJsRH754NIJI7ga3le60ezWWdm/gAlKrUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24894},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"a04bf19e09f1872e8c4c4c0f45bc6d1a737b8157","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"10.5.2","description":"## What problem does this set of libraries solve?","directories":{},"_nodeVersion":"20.13.1","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.6.2","@js-joda/core":"^5.6.2","@js-joda/timezone":"^2.21.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_4.0.1_1716918389260_0.838425326949473","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"5.0.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@5.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"8fc6514ee66299fcb9321b57e64f4bc64262b634","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-5.0.0.tgz","fileCount":8,"integrity":"sha512-Oq9W/ZcpOkkrUQ9dHckmMSQ5wCY/Zxrog+CgaE+rAMISvd9puhhqBEWaNxBU4kc2tx5Q+CRFJIQu8wE1YMgk/A==","signatures":[{"sig":"MEUCIQDgas12UscsEDwpfYQ9+fTF+azv9EnTCPATmusnICvy9AIgFCeY1GUCn/U6m/iFDpu/ncPpbQ1Yrobi/NIuRmquPKA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24878},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"ac396ac45c5f37d050e30d30fe47c0a6f7b620df","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"10.9.0","description":"## What problem does this set of libraries solve?","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^5.6.3","@js-joda/timezone":"^2.21.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_5.0.0_1735899463541_0.9613073627616662","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"6.0.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@6.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"763966d51021194c7f565a4c91aaeb0fc825b47f","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-6.0.0.tgz","fileCount":8,"integrity":"sha512-LSaxtVS5kQwu3W1yH6dIXftPPBwFA5im4FIAciQWdaHKSjh6CntkfYvJat8K/Ir2cFGIR3z+m5nNNoRG0TXLRg==","signatures":[{"sig":"MEUCIQDT42/RxElEUkWjPU4Cv9o8MfVvLvBLCagY6GFdk1WSgQIgf4wGWj9Fdqf9buyJnCYg+hMz7hrwjKY3YdLv5a2FeWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24835},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"55f79fc389d6933a3a9659c77e3f23eb13be379c","_npmUser":{"name":"adasko","actor":{"name":"adasko","type":"user","email":"adaskothebeast@gmail.com"},"email":"adaskothebeast@gmail.com"},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"10.9.2","description":"## What problem does this set of libraries solve?","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^5.6.5","@js-joda/timezone":"^2.22.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_6.0.0_1750513872115_0.41931679098332575","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"7.0.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@7.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"84835c45d4e39d48ed9022954327292cfc79c8ec","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-7.0.0.tgz","fileCount":8,"integrity":"sha512-bN6x5PWV5OQ/WV9Se6h6gf2gCks9NReAuP/wMfDemygWTqZilHPq7EhfWY1wNcQCSPCG+lpybGvDDuJOQi6hBA==","signatures":[{"sig":"MEUCIQCh3O4Ofze53iAnIk/u6tDtwK+zhS9jP9MJKcqPT65IJwIgKGz3P8OzsgdnnhWaNogdNX//YWTlvUJNgEIQldnZyTc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24835},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"4b1f3945958b60806b57550bbd812ae9fbca679b","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"10.9.3","description":"Working with dates and durations in JSON can be cumbersome and error-prone due to the lack of a standard format for date-time serialization. JSON, by its nature, does not have a specific data type for dates or durations. As a result, dates are usually ser","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^5.6.5","@js-joda/timezone":"^2.22.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_7.0.0_1760268118923_0.6734756010934917","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"8.0.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@8.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"40bd817cb9df1403ebfed2bea98d6bb4620b0309","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-8.0.0.tgz","fileCount":8,"integrity":"sha512-rCZyOePyVySt4+J7cXeasCgUWJYDcxOJBw0YuYppDN5x16r7Uc7euvy9nYX/SAiVcHrP6lm3+jn1G895dtyrhw==","signatures":[{"sig":"MEUCIGN5iRokshPiF3ONsUquT5XsMrAEdwLbjM3w3Pb0RzH0AiEAz2scFHimBcXtTssfAV3ktMIbKtFhxlFue3a6IJ3ykf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44696},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"b452bdb4251a869fc28fbf45cb6916616651a876","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.6.2","description":"> **Production-ready, security-hardened date/time conversion for JSON APIs**   > Automatically converts ISO 8601 date strings in JSON responses into native Date objects — deeply, safely, and blazingly fast.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^5.6.5","@js-joda/timezone":"^2.22.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_8.0.0_1763833299365_0.9493448670906244","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"9.0.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@9.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"4a8ae59171dc495a2ab155db71b8cf9c533c0fd5","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-9.0.0.tgz","fileCount":8,"integrity":"sha512-pMcAhhUOszzDpmZJ4TnzXi+YnX83dBuw9nB/4tmz0LF1Q+Y4xPIc0cU6eZBdxyyne99bFxiPcNPG6zCtzWE+Wg==","signatures":[{"sig":"MEUCIQCj1Sw+fVt1QFjUzCwH+s6sD6ro4n9bDVt++MQ8xLyjrwIgdjU/qna6ZjdOtx8qbFFJtkezcFb6dPjDxy1iVfPYxcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-js-joda@9.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":44696},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb0ffb0a-46e5-4326-bc84-9fb35fc4126a"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.6.2","description":"> **Production-ready, security-hardened date/time conversion for JSON APIs**   > Automatically converts ISO 8601 date strings in JSON responses into native Date objects — deeply, safely, and blazingly fast.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^5.6.5","@js-joda/timezone":"^2.22.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_9.0.0_1767539367604_0.366632403637571","host":"s3://npm-registry-packages-npm-production"}},"9.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"9.0.1","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@9.0.1","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"e66a7559cddb70e5b8833963008e54cc556d1836","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-9.0.1.tgz","fileCount":8,"integrity":"sha512-9o4nxVFUYdCY3hdcnXSVZcr0w1v1vJNDxlPZ5mZ7P/q92z63FWrVvCZNYYokofCDK4GB80lRusfDQVJjLzaPBQ==","signatures":[{"sig":"MEYCIQD+HgxZWoVu4BUH29EdMIK7RaTDtLjSxIzqosnmdc7RswIhANORunAQecNR8sKCvzMHt5yA3HwpoRRAH5x53FF/zidj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-js-joda@9.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":44696},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb0ffb0a-46e5-4326-bc84-9fb35fc4126a"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.6.2","description":"> **Production-ready, security-hardened date/time conversion for JSON APIs**   > Automatically converts ISO 8601 date strings in JSON responses into native Date objects — deeply, safely, and blazingly fast.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^5.6.5","@js-joda/timezone":"^2.22.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_9.0.1_1767539928280_0.4232354126300457","host":"s3://npm-registry-packages-npm-production"}},"9.1.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"9.1.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@9.1.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"3934e8e966c43732c5f503669e38b25b246f543a","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-9.1.0.tgz","fileCount":8,"integrity":"sha512-8AwhyNrDDYX1rSqVb3Fqd7pqP/Pv3kqQ1c3nU7plNvhlHUT5lLm9xzVGkl8u4paB1N+rEaRl3qJ3XBF05QsVzw==","signatures":[{"sig":"MEUCIHM6A2fp4KsxJJo7Zwaup4YHQw8G8we7bKpaOAncuwJ+AiEAmF8R1AvLpKR7wuvu9VAGWl2w5p1HJajEk50OumK7jlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-js-joda@9.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":44696},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb0ffb0a-46e5-4326-bc84-9fb35fc4126a"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.11.0","description":"> **Production-ready, security-hardened date/time conversion for JSON APIs**   > Automatically converts ISO 8601 date strings in JSON responses into native Date objects — deeply, safely, and blazingly fast.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^6.0.0","@js-joda/timezone":"^2.22.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_9.1.0_1775284644242_0.5138797750515536","host":"s3://npm-registry-packages-npm-production"}},"10.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"10.0.0","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@10.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"6883a8f610e0a6ec363e3b93920774cd336793be","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-10.0.0.tgz","fileCount":18,"integrity":"sha512-mV56MMbaBKmrEjFl1M/WxMYxhxxxOcM6mlJFqa4ZftarCvwjDT0FvM01LeDu4EiY2kUEV+nmFEzH9qBHfr5abA==","signatures":[{"sig":"MEUCIQD6HhQbLFvq0Kbvzn8Wng8uidDfnbV0lDSOBKsnO/Q9ngIgIWtnj/3uMzuG1yPNC3mb8523ZTR+SdB1F0zo/B7onkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109758},"gitHead":"d939a562c5f5947e98df253b28d384399481063e","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.16.0","description":"**js-joda bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 date-times into `ZonedDateTime` values, plus a schema-driven js-joda backend that covers every date kind with its","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^6.1.0","@js-joda/timezone":"^2.25.2","@adaskothebeast/typewriter-runtime":"10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_10.0.0_1785246926825_0.4884304158782633","host":"s3://npm-registry-packages-npm-production"}},"10.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"10.0.1","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@10.0.1","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"4d53b7d8f32e6db83569cb6bf29e6196c069c175","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-10.0.1.tgz","fileCount":11,"integrity":"sha512-eMxepf6uLdzMD8+lld3i/VnsbTbZ7q9eRCCTjvVwxPnqgNIClfkbRXHRmeROxrjBosUfiPon7OlF+eu5bLdY9g==","signatures":[{"sig":"MEQCIBSXXOwmIhcIjCVsvsBTaKPLValGbnES9Nx3Dwb39cnSAiAGWMV4ZJsA9t4KzCt7yFmUT0FnijKHMnBhuXLjc9sCAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-js-joda@10.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24719},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb0ffb0a-46e5-4326-bc84-9fb35fc4126a"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.16.0","description":"**js-joda bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 date-times into `ZonedDateTime` values, plus a schema-driven js-joda backend that covers every date kind with its","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^6.1.0","@js-joda/timezone":"^2.25.2","@adaskothebeast/typewriter-runtime":"10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_10.0.1_1785250689372_0.9744309285067736","host":"s3://npm-registry-packages-npm-production"}},"10.0.2":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"10.0.2","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@10.0.2","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"cc272e4562c8620d652604d0652ee190e98a7db5","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-10.0.2.tgz","fileCount":11,"integrity":"sha512-cc+VpPN4p85WR1S4RCzoBThpwHoCFKTUHxnwuhYyMQuxWOTHD9gCZL76DAYGjOwq9SEEARGvZXBvCQQGBfLzeg==","signatures":[{"sig":"MEUCIQDkskoy20hOHfT/kN82AtQm4GRUuUZWcvh6GN8QBCuAwAIgfuIMczbsOKZ/z0/jB/sbhS9ZNAA39ZIsETcdjajFyAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-js-joda@10.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24720},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb0ffb0a-46e5-4326-bc84-9fb35fc4126a"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.16.0","description":"**js-joda bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 date-times into `ZonedDateTime` values, plus a schema-driven js-joda backend that covers every date kind with its","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-joda/core":"^6.1.0","@js-joda/timezone":"^2.25.2","@adaskothebeast/typewriter-runtime":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_10.0.2_1785252308376_0.7426932328240423","host":"s3://npm-registry-packages-npm-production"}},"11.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-js-joda","version":"11.0.0","keywords":["js-joda","date","zoneddatetime","iso8601","converter","json","typescript"],"author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","_id":"@adaskothebeast/hierarchical-convert-to-js-joda@11.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-js-joda#readme","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"6da6bea85eb26f241053c10180968d97a80b5152","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-11.0.0.tgz","fileCount":13,"integrity":"sha512-nWcX33CBjJrNlMTl1B42U/62jKO+wLKt0Hqy2/5k2iddD3nRjHwfm039gef9R2i84PpP7kRAMHABcpX0uKpxvg==","signatures":[{"sig":"MEYCIQCcC7JPhKJazNUSw7bk6C4sExMaCOF2poRkQOQaQbZICQIhANcYr1cgCVpOjmS/r3K/67T68CLSgxsrjoj+wdEHmUYf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICthnBVqw1F06fDO0Lzw294onHxEvOOKuIKfdKLB60hQAiAkowRVvkrvwDJGXp/bnVJITum6188Y3D3f1ldrQJw5cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-js-joda@11.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24115},"main":"./index.cjs","type":"module","types":"./index.d.ts","module":"./index.esm.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./index.d.ts","default":"./index.esm.js"},"require":{"types":"./index.d.cts","default":"./index.cjs"}},"./package.json":"./package.json"},"gitHead":"23dc193eb4d8d834b51de51e1900225a26c143ff","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:eb0ffb0a-46e5-4326-bc84-9fb35fc4126a"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-js-joda"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 date-times in JSON payloads into js-joda values, plus a js-joda backend for the Typewriter runtime.","directories":{},"sideEffects":true,"_nodeVersion":"26.10.0","dependencies":{"@adaskothebeast/hierarchical-convert-core":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@js-joda/core":"^6.1.0","@js-joda/timezone":"^2.25.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-js-joda_11.0.0_1790551360679_0.9595822537767196","host":"s3://npm-registry-packages-npm-production"}},"11.0.1":{"_id":"@adaskothebeast/hierarchical-convert-to-js-joda@11.0.1","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"c42160aacd57e64c3e235d22ecc408b3958cc59c","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-js-joda/-/hierarchical-convert-to-js-joda-11.0.1.tgz","fileCount":13,"integrity":"sha512-U+PT+pY2ufpY3CjQddleUXF2uXtN5GkI+afxH2mHqsBRqP8dig6B4ge1u/3dnALKTtpjOIWQlkmCnlJiapZ03A==","signatures":[{"sig":"MEQCIG6QO5YeuNXhYAJ/LiCXoGPHnilLKp8ZiWOqeam15xrFAiA1wusUdOc5OZ0AzP7FspDNL5XrL67VbMt62546cBVLqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC/PT2d28eefflktk+e/sMDcULW7Bmuu8h7bb8Xsv0FHAiEAm9zjpiKFtsvEV8tSmQLgMO+C3QEnmfgG5Om2k92sauE="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-js-joda@11.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24115},"main":"./index.cjs","name":"@adaskothebeast/hierarchical-convert-to-js-joda","type":"module","types":"./index.d.ts","author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"module":"./index.esm.js","engines":{"node":">=22.12"},"exports":{".":{"import":{"types":"./index.d.ts","default":"./index.esm.js"},"require":{"types":"./index.d.cts","default":"./index.cjs"}},"./package.json":"./package.json"},"gitHead":"f9edf319c5e23bf1a17f5ec4eb8dac0008b9fd26","license":"MIT","version":"11.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"eb0ffb0a-46e5-4326-bc84-9fb35fc4126a"}},"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-js-joda#readme","keywords":["js-joda","date","zoneddatetime","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-js-joda"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 date-times in JSON payloads into js-joda values, plus a js-joda backend for the Typewriter runtime.","directories":{},"maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"sideEffects":true,"_nodeVersion":"26.10.0","dependencies":{"@adaskothebeast/hierarchical-convert-core":"^11.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@js-joda/core":"^6.1.0","@js-joda/timezone":"^2.25.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hierarchical-convert-to-js-joda_11.0.1_1790750122133_0.6765316204794065"}}},"time":{"created":"2023-07-22T17:12:11.664Z","modified":"2026-09-30T06:35:22.608Z","1.0.0":"2023-07-22T17:12:11.941Z","1.1.0":"2023-07-24T07:38:04.792Z","1.2.0":"2023-08-02T22:37:35.203Z","2.0.0":"2023-11-11T14:57:59.107Z","3.0.0":"2024-01-06T16:19:38.815Z","4.0.1":"2024-05-28T17:46:29.417Z","5.0.0":"2025-01-03T10:17:43.714Z","6.0.0":"2025-06-21T13:51:12.291Z","7.0.0":"2025-10-12T11:21:59.117Z","8.0.0":"2025-11-22T17:41:39.558Z","9.0.0":"2026-01-04T15:09:27.762Z","9.0.1":"2026-01-04T15:18:48.423Z","9.1.0":"2026-04-04T06:37:24.381Z","10.0.0":"2026-07-28T13:55:26.967Z","10.0.1":"2026-07-28T14:58:09.552Z","10.0.2":"2026-07-28T15:25:08.534Z","11.0.0":"2026-09-27T23:22:40.777Z","11.0.1":"2026-09-30T06:35:22.236Z"},"bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"author":{"url":"https://github.com/adaskothebeast","name":"Adam Pluciński","email":"adaskothebeast@gmail.com"},"license":"MIT","homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-js-joda#readme","keywords":["js-joda","date","zoneddatetime","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-js-joda"},"description":"Deep, in-place conversion of ISO 8601 date-times in JSON payloads into js-joda values, plus a js-joda backend for the Typewriter runtime.","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"readme":"# 🕰️ @adaskothebeast/hierarchical-convert-to-js-joda\n\n**js-joda bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 date-times into `ZonedDateTime` values, plus a schema-driven js-joda backend that covers every date kind with its own dedicated type.**\n\n[![npm](https://img.shields.io/npm/v/%40adaskothebeast%2Fhierarchical-convert-to-js-joda?color=cb3837&logo=npm)](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-js-joda)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\nPeer dependencies: `@js-joda/core`, `@js-joda/timezone`, and, for the backend export, `@adaskothebeast/typewriter-runtime`. Runtime dependency: the dependency-free `@adaskothebeast/hierarchical-convert-core`.\n\n---\n\n## 📦 Install\n\n```bash\nnpm i @adaskothebeast/hierarchical-convert-to-js-joda @js-joda/core @js-joda/timezone @adaskothebeast/typewriter-runtime\n```\n\n`@js-joda/timezone` is **not optional**: both modules in this package import `@js-joda/timezone` at load time so that named IANA zones such as `[Europe/Paris]` resolve. That is a load-time side effect, so a bundler must not treat these modules as side-effect free, and the zone database ends up in your bundle.\n\njs-joda ships its own typings, so no `@types/*` package is needed.\n\n---\n\n## 🎯 What it does\n\nThe package ships two independent pieces.\n\n`hierarchicalConvertToJsJoda` is the **schema-less** path. It walks the arrays and plain objects of an already-parsed JSON value depth first and replaces every ISO 8601 date-time string that carries `Z` or a `±HH:MM` offset with a `ZonedDateTime`, **mutating the input in place** and returning `void`. Nothing is cloned. Unlike the Luxon and Moment siblings it converts dates only; ISO duration strings such as `P1Y2M4D` are left untouched, because js-joda splits that space into `Duration` and `Period` and the traversal has no way to pick one. Traversal is shared with the other converters through `hierarchical-convert-core`: own `__proto__`, `constructor` and `prototype` keys are skipped so a hostile payload cannot reach `Object.prototype`, class instances (including existing js-joda values) are not entered, cycles are visited once, and the root plus 100 nested levels are walked. The full rules are in the repository [conversion contract](https://github.com/AdaskoTheBeAsT/date-interceptors/blob/main/docs/conversion-contract.md#heuristic-date-conversion).\n\n`jsJodaDateBackend` is the **schema-driven** path. It is a plain object (`{ name: 'js-joda', codecs }`) that satisfies the `DateBackend` contract from `@adaskothebeast/typewriter-runtime`, so you can hand it to `transformJson`, `createJsonTransformer`, `serializeJson` or `createJsonSerializer` as `options.dateBackend`. It is the most faithful backend in the workspace: every schema kind maps to a distinct js-joda class, so `instant`, `plain-date` and `period` can never be confused with each other, and nanosecond precision survives a round trip.\n\n---\n\n## 🧰 API\n\n| Export                                            | Signature / shape                                                                                             | Notes                                                                                         |\n| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |\n| `hierarchicalConvertToJsJoda(obj: unknown): void` | Mutates `obj` in place. (Before 11.0.0 the signature also exposed internal `depth` and `visited` parameters.) | Returns `undefined`. Non-objects and `null` are ignored. Dates only, no durations.            |\n| `jsJodaDateBackend`                               | `{ readonly name: 'js-joda'; readonly codecs: Record<DateSchemaKind, DateCodec> }`                            | Declared with `satisfies DateBackend`, so it is a value, not a class. Nothing to instantiate. |\n\n`jsJodaDateBackend.codecs` covers every `DateSchemaKind`, and every `serialize` is simply `value.toString()`:\n\n| Kind               | js-joda type    | `parse`               | Example wire value                        |\n| ------------------ | --------------- | --------------------- | ----------------------------------------- |\n| `instant`          | `Instant`       | `Instant.parse`       | `2024-01-02T03:04:05.123456789Z`          |\n| `plain-date`       | `LocalDate`     | `LocalDate.parse`     | `2024-07-21`                              |\n| `plain-time`       | `LocalTime`     | `LocalTime.parse`     | `12:34:56.123456789`                      |\n| `plain-date-time`  | `LocalDateTime` | `LocalDateTime.parse` | `2024-07-21T12:34:56.123456789`           |\n| `zoned-date-time`  | `ZonedDateTime` | `ZonedDateTime.parse` | `2024-01-02T03:04:05+01:00[Europe/Paris]` |\n| `duration`         | `Duration`      | `Duration.parse`      | `PT26H3M4.005S`                           |\n| `period`           | `Period`        | `Period.parse`        | `P1Y2M3D`                                 |\n| `plain-year-month` | `YearMonth`     | `YearMonth.parse`     | `2024-07`                                 |\n| `plain-month-day`  | `MonthDay`      | `MonthDay.parse`      | `--07-21`                                 |\n\n`is` is an `instanceof` check against the matching class, so it is exact for all nine kinds.\n\n---\n\n## ⚡ Usage\n\nSchema-less, over an Axios response:\n\n```ts\nimport { AxiosInstanceManager } from '@adaskothebeast/axios-interceptor';\nimport { hierarchicalConvertToJsJoda } from '@adaskothebeast/hierarchical-convert-to-js-joda';\n\nconst api = AxiosInstanceManager.createInstance(hierarchicalConvertToJsJoda);\n\nconst { data } = await api.get('/orders/42');\n// data.createdAt is a ZonedDateTime; data.slaWindow is still the raw 'PT1H30M' string\n```\n\nSchema-less, over an Angular `HttpClient` response:\n\n```ts\nimport { HIERARCHICAL_DATE_ADJUST_FUNCTION } from '@adaskothebeast/angular-date-http-interceptor';\nimport { hierarchicalConvertToJsJoda } from '@adaskothebeast/hierarchical-convert-to-js-joda';\n\nproviders: [{ provide: HIERARCHICAL_DATE_ADJUST_FUNCTION, useValue: hierarchicalConvertToJsJoda }];\n```\n\nDirect call on any parsed payload:\n\n```ts\nimport { hierarchicalConvertToJsJoda } from '@adaskothebeast/hierarchical-convert-to-js-joda';\n\nconst payload = JSON.parse(body) as unknown;\nhierarchicalConvertToJsJoda(payload);\n```\n\nSchema-driven, through the typewriter runtime (this is the only way to get durations, periods and plain types):\n\n```ts\nimport { jsJodaDateBackend } from '@adaskothebeast/hierarchical-convert-to-js-joda';\nimport { createJsonTransformer } from '@adaskothebeast/typewriter-runtime';\nimport { schema } from '@adaskothebeast/typewriter-schema';\nimport type { Duration, Instant, LocalDate, Period } from '@js-joda/core';\n\nconst orderSchema = schema.object<{\n  createdAt: Instant;\n  dueOn: LocalDate;\n  slaWindow: Duration;\n  retention: Period;\n}>({\n  createdAt: schema.instant(),\n  dueOn: schema.plainDate(),\n  slaWindow: schema.duration(),\n  retention: schema.period(),\n});\n\nconst toOrder = createJsonTransformer(orderSchema, undefined, {\n  mode: 'strict',\n  dateBackend: jsJodaDateBackend,\n});\n\nconst order = toOrder({\n  createdAt: '2024-01-02T03:04:05.123456789Z',\n  dueOn: '2024-07-21',\n  slaWindow: 'PT1H30M',\n  retention: 'P1Y2M3D',\n});\n```\n\n---\n\n## 🎛️ Options and configuration\n\n`hierarchicalConvertToJsJoda` has no options.\n\n`jsJodaDateBackend` has no options either. It is a singleton value and is safe to share between transformers. Everything else is decided by the runtime:\n\n- `mode: 'strict'` makes an unparsable value throw `JsonTransformationError` (with the js-joda parse error as its `cause`); the default tolerant mode leaves the raw string in place.\n- `maxDepth` (runtime option, default `100`) caps schema recursion independently of the traversal cap above.\n- Omit `dateBackend` and the runtime falls back to its built-in `temporalDateBackend`.\n\n---\n\n## 📤 Output examples\n\n`hierarchicalConvertToJsJoda`:\n\n| Input value                        | Result                                                               |\n| ---------------------------------- | -------------------------------------------------------------------- |\n| `'2023-07-17T23:06:00.000Z'`       | `ZonedDateTime.parse('2023-07-17T23:06:00.000Z')` (zone `Z`)         |\n| `'2023-07-17T23:06:00.000+01:00'`  | `ZonedDateTime.parse('2023-07-17T23:06:00.000+01:00')` (offset kept) |\n| `'2023-07-17T23:06:00.123456789Z'` | `ZonedDateTime` with nanoseconds kept                                |\n| `'2023-07-17T23:06:00'`            | unchanged string (no offset; `ZonedDateTime` needs one)              |\n| `'2023-02-30T00:00:00Z'`           | unchanged string (impossible calendar date)                          |\n| `'P1Y2M4DT2H3M2S'`                 | unchanged string (durations are never converted here)                |\n| `'adam'`                           | unchanged                                                            |\n\n```text\nin : { someNewObj: { text: 'adam', date: '2023-07-17T23:06:00.000Z' } }\nout: { someNewObj: { text: 'adam', date: ZonedDateTime } }   // same object, mutated\n```\n\n`jsJodaDateBackend` round trips (all asserted by the unit tests):\n\n```text\ninstant          '2024-01-02T03:04:05.123456789Z'            -> Instant       -> identical string\nplain-time       '12:34:56.123456789'                        -> LocalTime     -> identical string\nzoned-date-time  '2024-01-02T03:04:05+01:00[Europe/Paris]'   -> ZonedDateTime -> identical string\nduration         'PT26H3M4.005S'                             -> Duration      -> identical string\nperiod           'P1Y2M3D'                                   -> Period        -> identical string\nplain-month-day  '--07-21'                                   -> MonthDay      -> identical string\n```\n\n---\n\n## ⚠️ Edge cases\n\n- **In-place mutation.** The traversal rewrites your object graph and returns nothing. Clone the payload first if the caller must keep the raw strings.\n- **Prototype-pollution keys are skipped.** Own `__proto__`, `constructor` and `prototype` keys are never entered or written, and only own enumerable properties are visited.\n- **Only arrays and plain objects are entered (11.0.0).** Class instances, `Map`, `Set`, and existing js-joda values are left untouched, so running the converter twice is a no-op. Frozen objects and read-only properties keep their strings instead of throwing.\n- **Depth cap.** The root plus 100 nested levels are walked; deeper branches are left untouched with no error.\n- **Cycles are visited once.** A repeated object reference is skipped on the second encounter.\n- **No duration or period conversion in the traversal.** `PT1H`, `P1Y2M3D` and friends stay strings. Convert them yourself with `Duration.parse` / `Period.parse`, or use `jsJodaDateBackend` with a schema, which distinguishes the two.\n- **Only offset-bearing date-times convert.** `2023-07-17T23:06:00` stays a string because a `ZonedDateTime` needs an offset. Fractions of one to nine digits are accepted and kept at full precision.\n- **Parse failures are swallowed silently.** Impossible calendar or clock values are rejected before js-joda sees them, and a `ZonedDateTime.parse` exception is caught; the original string is kept. Nothing is thrown out of the traversal.\n- **Offsets are preserved, not normalized.** `ZonedDateTime.parse('…+01:00')` keeps a fixed `ZoneOffset` and `…Z` keeps zone `Z`, so the wire representation survives verbatim. This differs from the Luxon and Moment traversals, which reinterpret the instant in the local or UTC zone. Nothing in the traversal converts an offset into a named IANA zone; only a bracketed `[Region/City]` payload produces one, and only through the `zoned-date-time` codec.\n- **Codec errors are js-joda errors.** The backend does no pre-validation with regexes, so `parse` surfaces `DateTimeParseException` (and `DateTimeException` for impossible values) rather than the `RangeError` the Luxon and Moment backends raise. In strict mode the runtime wraps it in `JsonTransformationError`.\n- **`duration` and `period` are not interchangeable.** `Duration.parse` accepts time-based amounts only (`PT…`, plus a day component), and `Period.parse` accepts date-based amounts only (`P1Y2M3D`). Sending `P1Y` to a `duration` node or `PT1H` to a `period` node throws.\n- **Nanosecond precision is real** for `Instant`, `LocalTime`, `LocalDateTime` and `ZonedDateTime`. Values that round-trip here lose precision the moment you hand them to a `Date`, Luxon or Moment based backend.\n- **`instant` is not `zoned-date-time`.** Because `is` uses `instanceof`, an `Instant` fails a `zoned-date-time` node and a `ZonedDateTime` fails an `instant` node; use `atZone` / `toInstant` to move between them yourself.\n- **Named zones need the loaded zone database.** Both modules import `@js-joda/timezone` themselves, so this works out of the box, but a bundler configured to tree-shake that require will make `[Europe/Paris]` throw at parse time.\n\n---\n\n## 🔗 Related packages\n\n- Same job, other libraries: [`hierarchical-convert-to-date`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-date), [`-date-fns`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-date-fns), [`-dayjs`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-dayjs), [`-luxon`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-luxon), [`-moment`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-moment), [`-temporal`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-temporal)\n- Other value kinds: [`-decimal`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-decimal), [`-uuid`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-uuid)\n- Transports: [`angular-date-http-interceptor`](https://www.npmjs.com/package/@adaskothebeast/angular-date-http-interceptor), [`axios-interceptor`](https://www.npmjs.com/package/@adaskothebeast/axios-interceptor), [`react-redux-toolkit-hierarchical-date-hook`](https://www.npmjs.com/package/@adaskothebeast/react-redux-toolkit-hierarchical-date-hook)\n- Schema stack: [`typewriter-schema`](https://www.npmjs.com/package/@adaskothebeast/typewriter-schema), [`typewriter-runtime`](https://www.npmjs.com/package/@adaskothebeast/typewriter-runtime), [`typewriter-http-angular`](https://www.npmjs.com/package/@adaskothebeast/typewriter-http-angular), [`typewriter-http-axios`](https://www.npmjs.com/package/@adaskothebeast/typewriter-http-axios), [`typewriter-http-fetch`](https://www.npmjs.com/package/@adaskothebeast/typewriter-http-fetch)\n\nFull matrix and adapter recipes: [main README](https://github.com/AdaskoTheBeAsT/date-interceptors#readme).\n\n---\n\n## 📄 License\n\n[MIT](./LICENSE) © Adam Pluciński\n","readmeFilename":"README.md"}