{"_id":"@adaskothebeast/hierarchical-convert-to-dayjs","_rev":"17-0717b9822b772aecb65e5f9a3e22162e","name":"@adaskothebeast/hierarchical-convert-to-dayjs","dist-tags":{"latest":"11.0.1"},"versions":{"1.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","version":"1.0.0","_id":"@adaskothebeast/hierarchical-convert-to-dayjs@1.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"6514b003da404758a8b59a4f79e9790a9f0fc6a7","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-1.0.0.tgz","fileCount":8,"integrity":"sha512-CNXDkm0VrbAfYFqHfG9ib0tCl1cnwm8p4aEAdgqH0LC/vP0h08FYAl3jYV0kY7e6kU/jKNoj2s8J9I4qf2/EiA==","signatures":[{"sig":"MEUCIQDfleM6mRYsGQORGDNe3YHTlggdEzDFFIwtrsRzDR0WIQIgYnGvEVmReiCTN+ztAeLCG6pnycebnq+R/7tBmhPooLg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20470},"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":{"dayjs":"^1.11.9","tslib":"2.5.3"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_1.0.0_1690045910991_0.18332005158138376","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","version":"1.1.0","_id":"@adaskothebeast/hierarchical-convert-to-dayjs@1.1.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"5e020437066316d00e44075a75677c35b0a30cde","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-1.1.0.tgz","fileCount":8,"integrity":"sha512-Um2YtIEiqANA+jryoxHKnnN7PdvI26lAPXSnHO9vWkuT0ACZgFsD/lBw2b9tl2fRLT3lDuTFisBWS65TGvnihQ==","signatures":[{"sig":"MEQCIH+04cq12hHILBtM4Rk3UcRJUBH0opUMGhYah6SkEJFOAiAg57ZEvptG5yyr90QjyzkdxCxl+7sHRpxQH+CxSZVuxg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20470},"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":{"dayjs":"^1.11.9","tslib":"2.5.3"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_1.1.0_1690184270374_0.3059824340445947","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","version":"1.2.0","_id":"@adaskothebeast/hierarchical-convert-to-dayjs@1.2.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"915e491eef56fcee883b5cc7b96318912f12b892","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-1.2.0.tgz","fileCount":8,"integrity":"sha512-khFJULdPOBygPNm2rhlmz+jZd4I4TxZgPgdnCJx/f1K3+UnruX+kDUq6Jn6AQ4vVy0NVBXNxcwOhZHum+4MOAw==","signatures":[{"sig":"MEYCIQC92yTkETcnk2HfjBwJQHWZSPZlQOHL2n/fSFGhQINnyAIhAKj5iaV7Wzq6AZQIXDbfr8+B7pzfzV4wN/2mTpajt3VY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20448},"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":{"dayjs":"^1.11.9"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_1.2.0_1691015842576_0.6317830673488938","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","version":"2.0.0","_id":"@adaskothebeast/hierarchical-convert-to-dayjs@2.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"ad3c240a87dccebdd8396d2582eef4cb522f6ad2","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-2.0.0.tgz","fileCount":8,"integrity":"sha512-fHk3wPogbuUcVOTaDasvQmbTXAHtqY0RXu/us6028pRgVeafbjaNjqXUYbTOAesUvY3ulTYGsFCKvc95TMqufA==","signatures":[{"sig":"MEUCIQDVGk87yCUFmXSMli+6DjJHWawKv7YdksIINRCyPKsi5gIgeO8GlCMK2THeGd0r11QbGCNIZ0MwdtAHJIW6VR0Q6bY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19533},"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":{"dayjs":"^1.11.10","tslib":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_2.0.0_1699714668680_0.8681127380122531","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"e2f88163d7d8bd70e8f8dde170aacec285997204","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-3.0.0.tgz","fileCount":8,"integrity":"sha512-MOYUHq3Ns7/VLi72tBfZUWcdC8CRSeShALvLdoNj+MtOy0dNIJ8Jztku2iFojLoK1seQqe/NFyDNvw444xxPzQ==","signatures":[{"sig":"MEYCIQDAgaPZnSeoNZgZoyYjjJHHVpJlkrs7wMay1q28sqZd6gIhAO9gAvzotRCiCxuVx8bi1TaCtkavJAPSo3YdadMD2Xyk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20208},"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":{"dayjs":"^1.11.10","tslib":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_3.0.0_1704557963205_0.8161080079132632","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"9eda5c54c699cf0fb0d1bd878d9dd2b8d9a109b8","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-4.0.1.tgz","fileCount":8,"integrity":"sha512-BdwD8uQA4NCcIm9sicYOIQrx+Q38aN2VxTM9qM8+974AYLAX0uBIglSWuQSqauDXGbsRbMUTPrpCH7mcDeX96w==","signatures":[{"sig":"MEUCIAloDUSnEnsY06DyFFElWYepNPYXHwXY7EhoVhXrnV1pAiEAmAd+oi/HBtr9bJSNGNs1lzATguPFa8N6RMqvL+UCq4w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25984},"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":{"dayjs":"^1.11.11","tslib":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_4.0.1_1716918208112_0.9489153832229622","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"b3d3df795f8080d80637ffc8a4cb6e9dc2fe86ed","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-5.0.0.tgz","fileCount":8,"integrity":"sha512-+ClArSKnm88M3dgmHIui7NRADS2lCxc/QN5WAj0j9olmq2K6b1Zy2hNN+e3cPc10NP7rLBo090PPH41VtCXJWw==","signatures":[{"sig":"MEQCIDQeSpT4rJMjBqKgAObciLnrAKrHN4Crh/QTZPc7UNwhAiAMeJ0x8XhNMSh5Rvo1hyLRVCmcNx0jAsyFFJMnMQJq9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25970},"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":{"dayjs":"^1.11.13","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_5.0.0_1735899282011_0.6101739215131301","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"4ea5608dc2f991a67a6d2212f23d28e52ebbbec9","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-6.0.0.tgz","fileCount":8,"integrity":"sha512-nyVtRC2ELtNEfsgER+dbhEJrsQImMgOx/Oc+PJKSwrTl2419EA/++tEaOgqfxN+QYPEQ2VfS55M1y7kmdj7qzA==","signatures":[{"sig":"MEQCIB7MIdrJHzl08LzMeJTk1+7z/t33YURvynYT3dpEZ7vOAiAeD+qI8ZSK+mD1NzLA+UTT/q/9avFQyz5lPTWgkSNvYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25927},"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":{"dayjs":"^1.11.13","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_6.0.0_1750513691075_0.282931870646864","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"8777dfbe24295a5214a165652785489adba491fe","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-7.0.0.tgz","fileCount":8,"integrity":"sha512-lVst4WKfmVvEMgsD6uKqarqLivERx13pXAjzM669+DOLGNDR8hgJs+FgVb8Qiccio9vyjPYEyntDfwnOF/5FYQ==","signatures":[{"sig":"MEYCIQChLLp1LZpkvGDrr+kmWYy0yb9XTmsGGWxISKSGhGZkKwIhAOv7vPtjRzU1l+UCCIjiwJM6XuXR7FQY/xXo34i5t7qv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25927},"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":{"dayjs":"^1.11.18","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_7.0.0_1760267938395_0.8693113248340087","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"0e3c8f3919ed584154f99e252359ddb1f3766e88","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-8.0.0.tgz","fileCount":8,"integrity":"sha512-0ZArPrV5AsLl7m2ZuUqC5G0Q12X8dg6XoefDMe1+SgHGiF15kZSF5XguLZn3trTpUHUnYN6Y1ywNto7baWNZCg==","signatures":[{"sig":"MEUCIAhlWWQMiRa2uxrQIj4DD0AtO+AYsXTP52yWteVuk7SgAiEA1ImqBJFgVgQwGd13DRVz6WiCM4chxPQgyXfgMOxEGmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47294},"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":{"dayjs":"^1.11.19","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_8.0.0_1763833118089_0.9573225681405599","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"31feb9d502839df4edac7fc9283d7585a69365ab","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-9.0.0.tgz","fileCount":8,"integrity":"sha512-K2JhuvRrd8Zr2/WrPvAmCxlQOOt4yGGuMyxvHf8/IbgOvSSxSYv1m8E0Eh0BzJrSaJtPoodpDwnt8Ov9ozi26A==","signatures":[{"sig":"MEYCIQDkKS2mB7LztrRFmOaxnAngH4Bgxw7xKA1+PK/RN58HAQIhAPWtS6YxOQaIiXAG1WKDyQHufTEcrgKOacol1e0eeWvP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-dayjs@9.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":47491},"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:259ac17f-ce6a-4bbd-92f5-dbeb1d848f23"}},"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":{"dayjs":"^1.11.19","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_9.0.0_1767539366935_0.8869608911174425","host":"s3://npm-registry-packages-npm-production"}},"9.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"4a258c80aa677949334fe2cb8019fce2b2808197","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-9.0.1.tgz","fileCount":8,"integrity":"sha512-Bj8XcKDO32VPRlsxwKw13nVsyBzEFxk16rtWR0crlSMAdkBAlEmw0w781LB6qZyql/pGG1IdYYuhbwh3jw2flQ==","signatures":[{"sig":"MEUCIQDyEN+tTwfHVRfg/U6Fr/kP4o87ksQJyhQuA6wPSnp1PAIgNeF1m1iikL9NgLTOqtgB/VWma3GXhK++aeCAe3xjGQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-dayjs@9.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":47491},"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:259ac17f-ce6a-4bbd-92f5-dbeb1d848f23"}},"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":{"dayjs":"^1.11.19","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_9.0.1_1767539929047_0.8254315987123098","host":"s3://npm-registry-packages-npm-production"}},"9.1.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"fb15010bd4d8335bbbd11e89f843255fd8c1acba","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-9.1.0.tgz","fileCount":8,"integrity":"sha512-S4YdgYy7oez8cHhg+76lBGrdWXiX3CnTw/0fKMXL5ex6MC2gJonpX9olMTGza5MAfcFXMwhnZOWG9tllMSWDrw==","signatures":[{"sig":"MEUCIECQibR9uTOeVLl/yt0arO8LiW3PQgf06E4uf1UMlWgdAiEAn+oWxFSdEiFBb1u8Xp+lhwc8xtKQfrEuNLL3B1wi7Jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-dayjs@9.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":47491},"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:259ac17f-ce6a-4bbd-92f5-dbeb1d848f23"}},"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":{"dayjs":"^1.11.20","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_9.1.0_1775284661875_0.301259316121264","host":"s3://npm-registry-packages-npm-production"}},"10.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"7e0f998804d90ffa88d6414f25f961c363a4c10f","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-10.0.0.tgz","fileCount":18,"integrity":"sha512-lkENPnsCQcmUSgeNMNuk2gXQEKSVuKHQGH0QbE4L6tYjQ5XQX0MdDJOA17I+zVzx5E8jwnKxm4OJxUfR1YpuoQ==","signatures":[{"sig":"MEYCIQCK49IwTd9jQ7divD5g2bDOskElAbPAuzclziQ6T8h/KQIhAOt+EdbRVp2F8/r6qf3hurH4aKVtQzlo5ACAjaIhmidZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114090},"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":"**The Day.js binding of [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): hydrates ISO 8601 strings in JSON payloads into `Dayjs` and Day.js `Duration` values, and plugs Day.js into the typewriter runtime.**","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"dayjs":"^1.11.21","tslib":"^2.8.1","@adaskothebeast/typewriter-runtime":"10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_10.0.0_1785246893816_0.8343276964705932","host":"s3://npm-registry-packages-npm-production"}},"10.0.2":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","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-dayjs@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":"a159e5b6a414e17e5d517e4bda553c9af14f7be5","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-10.0.2.tgz","fileCount":11,"integrity":"sha512-Pn7nfDQe/QdnE5iwBR2iLPG2J0MrOtuzg+RseXzOrMC5QUmUWuaWM9TGOi+yF6M01bAmsjQvfShwCFTiPFjtlQ==","signatures":[{"sig":"MEUCIQDY8PwCJrZhR7hH+0Taw1MTawk8G4A9PnAz/IgUfE+2iQIgcTSeK24cejfXkgeJUNiwE+z47ehxuMdDbZJFHEv54kc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-dayjs@10.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27975},"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:259ac17f-ce6a-4bbd-92f5-dbeb1d848f23"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.16.0","description":"**The Day.js binding of [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): hydrates ISO 8601 strings in JSON payloads into `Dayjs` and Day.js `Duration` values, and plugs Day.js into the typewriter runtime.**","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"dayjs":"^1.11.21","tslib":"^2.8.1","@adaskothebeast/typewriter-runtime":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_10.0.2_1785252317164_0.4868275436107148","host":"s3://npm-registry-packages-npm-production"}},"11.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-dayjs","version":"11.0.0","keywords":["dayjs","date","duration","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-dayjs@11.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-dayjs#readme","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"e588ccae6008b6388e775ea940c3d7ba433dafb4","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-11.0.0.tgz","fileCount":13,"integrity":"sha512-J4vQORQXtYT5RqxJjQleBLG65nRXfa7BrgDgrEMjNw+XLIq9AkWyCyFFslsigFIqAP+OfUY9Ck7avCEI8HzSFA==","signatures":[{"sig":"MEQCIHFuTH7F9FgSjBBufmz6grGHfpXJ3dlbX8w2ejQ/n8i6AiBl3X9JjHuK8njH+qUhGWVt7obfXjcJJq2uefTPiUwh/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIC47PKm7HvKLhyuEQp2vG0NoSFFZGW+NxQLRHV2J/AHVAiEAtD8D5DT1Vg2lYwKMeo7G7/iMs8bY9vQW540j7ig/Iw0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-dayjs@11.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26405},"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:259ac17f-ce6a-4bbd-92f5-dbeb1d848f23"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-dayjs"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 dates and durations in JSON payloads into Day.js values, plus a Day.js 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":{"dayjs":"^1.11.21"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-dayjs_11.0.0_1790551317634_0.09849586906043473","host":"s3://npm-registry-packages-npm-production"}},"11.0.1":{"_id":"@adaskothebeast/hierarchical-convert-to-dayjs@11.0.1","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"b9b4027b6275f4273ff7256d12c58c4dfa11f37c","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-dayjs/-/hierarchical-convert-to-dayjs-11.0.1.tgz","fileCount":13,"integrity":"sha512-3ZokY34dj0UZjwI8VN2Q6bMk7qY8QsZ0JaULXZbThq6Q6Ze/LVH5YxwyELV1MZqCZdXwr44TaMBEnPArgj+gUA==","signatures":[{"sig":"MEYCIQDjIR8J3/aUin2QncndhdUTdH7zfjPOWxkITektosng6AIhAKrNzXMUGGoO9WpnHVv/Kj8oGqIasVghtmETIyIxaey4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEts1GdFZmZQCfyX2IL5DSDoIIdtzk4cm5LWp/M0X94aAiEAtImY3/BsmII2UFM2+wkUdlJB6KvX75se9GwYaBW5pec="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-dayjs@11.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26103},"main":"./index.cjs","name":"@adaskothebeast/hierarchical-convert-to-dayjs","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":"259ac17f-ce6a-4bbd-92f5-dbeb1d848f23"}},"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-dayjs#readme","keywords":["dayjs","date","duration","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-dayjs"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 dates and durations in JSON payloads into Day.js values, plus a Day.js 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":{"dayjs":"^1.11.21"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hierarchical-convert-to-dayjs_11.0.1_1790749932333_0.33612759451988916"}}},"time":{"created":"2023-07-22T17:11:50.853Z","modified":"2026-09-30T06:32:13.838Z","1.0.0":"2023-07-22T17:11:51.146Z","1.1.0":"2023-07-24T07:37:50.540Z","1.2.0":"2023-08-02T22:37:22.722Z","2.0.0":"2023-11-11T14:57:48.865Z","3.0.0":"2024-01-06T16:19:23.383Z","4.0.1":"2024-05-28T17:43:28.282Z","5.0.0":"2025-01-03T10:14:42.230Z","6.0.0":"2025-06-21T13:48:11.280Z","7.0.0":"2025-10-12T11:18:58.616Z","8.0.0":"2025-11-22T17:38:38.298Z","9.0.0":"2026-01-04T15:09:27.086Z","9.0.1":"2026-01-04T15:18:49.181Z","9.1.0":"2026-04-04T06:37:42.027Z","10.0.0":"2026-07-28T13:54:53.947Z","10.0.2":"2026-07-28T15:25:17.308Z","11.0.0":"2026-09-27T23:21:57.721Z","11.0.1":"2026-09-30T06:32:12.420Z"},"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-dayjs#readme","keywords":["dayjs","date","duration","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-dayjs"},"description":"Deep, in-place conversion of ISO 8601 dates and durations in JSON payloads into Day.js values, plus a Day.js backend for the Typewriter runtime.","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"readme":"# 📆 @adaskothebeast/hierarchical-convert-to-dayjs\n\n**The Day.js binding of [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): hydrates ISO 8601 strings in JSON payloads into `Dayjs` and Day.js `Duration` values, and plugs Day.js into the typewriter runtime.**\n\n[![npm](https://img.shields.io/npm/v/%40adaskothebeast%2Fhierarchical-convert-to-dayjs?color=cb3837&logo=npm)](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-dayjs)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\nPeer dependencies: `dayjs` and, for the backend export only, `@adaskothebeast/typewriter-runtime`. Runtime dependency: the dependency-free `@adaskothebeast/hierarchical-convert-core`. Importing it registers Day.js plugins, so it is **not** side-effect free.\n\n---\n\n## 📦 Install\n\n```bash\nnpm i @adaskothebeast/hierarchical-convert-to-dayjs dayjs\n```\n\nNo plugin packages to add: the required `utc`, `duration` and `customParseFormat` plugins are pulled in and registered by this package itself.\n\nThe runtime peer is only needed for the `dayjsDateBackend` export:\n\n```bash\nnpm i @adaskothebeast/typewriter-runtime\n```\n\n---\n\n## 🎯 What it does\n\nTwo independent tools ship in this package.\n\n**1. A blind traversal.** `hierarchicalConvertToDayjs` walks the arrays and plain objects of a parsed JSON graph and, without any schema, rewrites recognized strings in place: ISO date-times become local-mode `Dayjs` objects, non-negative ISO durations become `dayjs.duration` objects. Prototype keys are skipped, cycles are visited once, and recursion is depth limited, so it is safe on untrusted bodies.\n\n**2. A schema-driven backend.** `dayjsDateBackend` is a `DateBackend` (the interface from `@adaskothebeast/typewriter-runtime`): a `name` plus a map of `DateCodec` objects keyed by `DateSchemaKind`. Pass it as the `dateBackend` option to the typewriter runtime and every date-shaped schema node is hydrated and serialized with Day.js, with `RangeError`s on malformed wire values instead of Day.js's usual lenient guessing.\n\nBoth modules call `dayjs.extend(...)` at module load (the traversal registers `duration`; the backend registers `utc`, `duration` and `customParseFormat`), and the package entry point loads both, so the plugins are always registered before any code here runs.\n\n---\n\n## 🧰 API\n\n### `hierarchicalConvertToDayjs(obj)`\n\n`(obj: unknown) => void`\n\nMutates `obj` and returns nothing. (Before 11.0.0 the signature also exposed internal `depth` and `visited` parameters.)\n\n### `dayjsDateBackend`\n\nDeclared `satisfies DateBackend`, so `name` is `'dayjs'` and the `codecs` record is exactly:\n\n| Schema kind       | Value type | `parse` accepts                                       | `parse` produces   | `serialize` emits         |\n| ----------------- | ---------- | ----------------------------------------------------- | ------------------ | ------------------------- |\n| `instant`         | `Dayjs`    | `YYYY-MM-DDTHH:mm[:ss[.s..sss]]` plus `Z` or `±HH:MM` | UTC-mode `Dayjs`   | `.utc().toISOString()`    |\n| `plain-date`      | `Dayjs`    | `YYYY-MM-DD`                                          | local-mode `Dayjs` | `YYYY-MM-DD`              |\n| `plain-date-time` | `Dayjs`    | `YYYY-MM-DDTHH:mm[:ss[.sss]]`, no zone allowed        | local-mode `Dayjs` | `YYYY-MM-DDTHH:mm:ss.SSS` |\n| `duration`        | `Duration` | ISO 8601 duration, optional sign, fractions allowed   | `dayjs.duration`   | `.toISOString()`          |\n| `period`          | `Duration` | same codec object as `duration`                       | `dayjs.duration`   | `.toISOString()`          |\n\nEvery codec also exposes `is(value)`: the three date codecs use `dayjs.isDayjs` directly, the duration codec uses `dayjs.isDuration`. Parsing is strict, done with `customParseFormat` for the plain kinds so `2024-13-01` cannot slide through.\n\n`plain-time`, `zoned-date-time`, `plain-year-month` and `plain-month-day` are intentionally absent, because `Dayjs` cannot preserve those semantics. The runtime falls back to its own handling for kinds a backend does not advertise.\n\n---\n\n## ⚡ Usage\n\nBlind hydration of a response body:\n\n```ts\nimport { hierarchicalConvertToDayjs } from '@adaskothebeast/hierarchical-convert-to-dayjs';\nimport type dayjs from 'dayjs';\n\ninterface Booking {\n  startsAt: dayjs.Dayjs;\n  stay: ReturnType<typeof dayjs.duration>;\n}\n\nconst raw: unknown = JSON.parse(text);\nhierarchicalConvertToDayjs(raw);\nconst booking = raw as Booking;\nbooking.startsAt.format(); // rendered in the machine's local zone\nbooking.stay.asHours();\n```\n\nSchema-driven hydration with the typewriter runtime:\n\n```ts\nimport { dayjsDateBackend } from '@adaskothebeast/hierarchical-convert-to-dayjs';\nimport { createJsonSerializer, createJsonTransformer } from '@adaskothebeast/typewriter-runtime';\n\nconst toBooking = createJsonTransformer(bookingSchema, undefined, {\n  dateBackend: dayjsDateBackend,\n  mode: 'strict',\n});\nconst toWire = createJsonSerializer(bookingSchema, undefined, {\n  dateBackend: dayjsDateBackend,\n});\n\nconst booking = toBooking(await response.json());\nconst body = toWire(booking);\n```\n\nUsing a single codec directly, for example in a form adapter:\n\n```ts\nconst { instant } = dayjsDateBackend.codecs;\nconst value = instant.parse('2024-01-02T03:04:05.678+02:00');\nvalue.isUTC(); // true\ninstant.serialize(value); // '2024-01-02T01:04:05.678Z'\n```\n\n---\n\n## 🎛️ Options and configuration\n\n`hierarchicalConvertToDayjs` has no configuration. Recognition and traversal are shared with the other converters through `hierarchical-convert-core`; the full rules and a per-backend duration precision table are in the repository [conversion contract](https://github.com/AdaskoTheBeAsT/date-interceptors/blob/main/docs/conversion-contract.md#heuristic-date-conversion). In short:\n\n- Date-times: `YYYY-MM-DDTHH:mm:ss`, an optional one-to-nine-digit fraction (truncated to milliseconds), and an optional `Z` or `±HH:MM`, with calendar and clock validation. Every date-time is parsed with `dayjs(value)`, so the result is always a local-mode `Dayjs`.\n- Durations: integer `Y`, `M`, `W`, `D`, `H`, `M` components and seconds with up to nine fraction digits. A decimal comma (`PT1,5S`) is normalized to a point first, because Day.js would otherwise parse it as zero. Negative durations stay strings because Day.js ignores the sign.\n- Only arrays and plain objects are entered, and the root plus 100 nested levels are walked.\n\nThe backend is configured entirely through the runtime option object (`dateBackend`), and `mode: 'strict'` is what turns codec `RangeError`s into reported failures rather than preserved raw values.\n\n---\n\n## 📤 Output examples\n\n`hierarchicalConvertToDayjs`:\n\n| Input                                       | After conversion                                                                     |\n| ------------------------------------------- | ------------------------------------------------------------------------------------ |\n| `{ date: '2023-07-17T23:06:00.000Z' }`      | `dayjs('2023-07-17T23:06:00.000Z')` (local mode)                                     |\n| `{ date: '2023-07-17T23:06:00.000+01:00' }` | `dayjs('2023-07-17T23:06:00.000+01:00')` (local mode)                                |\n| `{ nested: { date: '...Z' } }`              | converted at any depth                                                               |\n| `['...Z', '...Z']`                          | every array element converted                                                        |\n| `{ duration: 'P0D' }`                       | `dayjs.duration('P0D')` (every component zero)                                       |\n| `{ duration: 'P4W' }`                       | `dayjs.duration({ weeks: 4 })`                                                       |\n| `{ duration: 'P1Y2M4DT2H3M2S' }`            | `dayjs.duration({ years: 1, months: 2, days: 4, hours: 2, minutes: 3, seconds: 2 })` |\n| `{ text: 'adam' }`                          | untouched                                                                            |\n| `{ d: '2023-02-30T00:00:00Z' }`             | untouched (impossible calendar date)                                                 |\n\n`dayjsDateBackend` codecs (unlike the traversal, the `instant` codec deliberately returns UTC-mode values):\n\n```text\ninstant          '2024-01-02T03:04:05.678+02:00' -> UTC Dayjs   -> '2024-01-02T01:04:05.678Z'\nplain-date       '2024-01-02'                    -> local Dayjs -> '2024-01-02'\nplain-date-time  '2024-01-02T03:04:05.678'       -> local Dayjs -> '2024-01-02T03:04:05.678'\nduration         'P1Y2M3DT4H5M6.7S'              -> Duration    -> 'P1Y2M3DT4H5M6.7S'\n```\n\n---\n\n## ⚠️ Edge cases\n\n- **Importing this package mutates the shared Day.js instance.** `dayjs.extend(utc)`, `dayjs.extend(duration)` and (for the backend) `dayjs.extend(customParseFormat)` run at module load. That is what makes the code work regardless of import order, but it also means the package cannot be treated as side-effect free by a bundler, and your own `dayjs.duration(...)` calls still need your own `dayjs.extend(duration)` for the typings.\n- **The traversal always produces local-mode objects (11.0.0).** `Z`, `+00:00`, and any other offset all yield a local-mode `Dayjs` for the same instant, matching the Moment and Luxon converters; `.format()` renders the machine zone. Call `.utc()` explicitly when you need UTC rendering. Before 11.0.0 a trailing `Z` produced a UTC-mode object while a numeric offset produced a local-mode one.\n- **Offset-less date-times are read as local time.**\n- **Only arrays and plain objects are entered (11.0.0).** Class instances, `Map`, `Set`, and existing `Dayjs` or `Duration` 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- **Mutation in place.** The traversal returns `void` and rewrites your object; clone first (`structuredClone`) if you need the original strings. The hydrated `Dayjs` and `Duration` values are themselves immutable, so they are safe to share afterwards.\n- **Prototype pollution is blocked.** Own `__proto__`, `constructor` and `prototype` keys are skipped and never entered.\n- **Cycles are safe**; shared references and cycles are visited once. Past the root plus 100 nested levels nothing is converted, silently.\n- **Invalid dates stay strings.** Impossible calendar or clock values such as `2023-02-30T00:00:00Z` are rejected before Day.js sees them.\n- **The traversal and the backend disagree about fractions and signs.** The traversal accepts fractional seconds only and leaves negative durations such as `-P1D` as strings, while `dayjsDateBackend.codecs.duration` parses signs and fractions on any component (unlike the date-fns backend, which rejects negatives outright).\n- **Weeks are serialized as days** by Day.js: `dayjs.duration('P1W2D').toISOString()` is `P9D`. See the precision table in the conversion contract.\n- **Degenerate durations stay strings.** Bare `P`, `PT`, and a trailing `T` such as `P1DT` are rejected. Human text starting with `P` is safe because it fails the pattern.\n- **Date-only strings are not touched by the traversal.** Use the schema stack with `plain-date` if your payload carries calendar dates.\n- **`is` does not check validity.** `instant.is(dayjs('nope'))` is `true` because it is just `dayjs.isDayjs`; the validity check happens in `parse` and `serialize`, which throw `RangeError: Invalid instant value`. Filter with `.isValid()` before serializing.\n- **`instant` requires a zone, `plain-date-time` forbids one.** `instant.parse('2024-01-02T03:04:05')` and `plainDateTime.parse('2024-01-02T03:04:05Z')` both throw. The `plain-date-time` pattern also insists on exactly three fractional digits when they are present, so `2024-01-02T03:04:05.6` is rejected.\n- **`plain-date` and `plain-date-time` stay in local mode** on purpose (no zone shift on round-trip), so never mix those values with `instant` values in the same arithmetic.\n- **`period` is the very same codec object as `duration`**, so a `period` node produces a Day.js `Duration`, not a calendar-only structure.\n- **Weeks and days are separate slots in Day.js.** `dayjs.duration('P4W')` reports `days()` as `0`; read `.asDays()` or `.weeks()` when you need a total.\n\n---\n\n## 🔗 Related packages\n\n- Same traversal, other date libraries: [`-date`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-date), [`-date-fns`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-date-fns), [`-luxon`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-luxon), [`-moment`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-moment), [`-js-joda`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-js-joda), [`-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- 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- 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\nFull matrix and 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"}