{"_id":"@adaskothebeast/hierarchical-convert-to-luxon","_rev":"18-cd8070e15243e9601a9afe0562fd0347","name":"@adaskothebeast/hierarchical-convert-to-luxon","dist-tags":{"latest":"11.0.1"},"versions":{"1.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","version":"1.0.0","_id":"@adaskothebeast/hierarchical-convert-to-luxon@1.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"177b65aa1028db063df22ad5fa6e51ec561ac5d9","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-1.0.0.tgz","fileCount":8,"integrity":"sha512-NcEE5sQRH8KpvT9Ovb1s3w0b8EOUNNt11Kj7byEvM/0AQMC13jCJq2H+2CSLdKRRJlKDReOpsC2Kv3DM1isung==","signatures":[{"sig":"MEUCIQCQIUUTtGZ5CGSqczCpBrWptdYIvenAgmYspuGwB+YsYwIgfhEVEt+zuoh66KWTNqfjPAzK17zgE4ZTaxQJTZd0RNg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20287},"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":{"luxon":"^3.3.0","tslib":"2.5.3"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_1.0.0_1690045947076_0.8043911484676065","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","version":"1.1.0","_id":"@adaskothebeast/hierarchical-convert-to-luxon@1.1.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"cd84a9ea09aab1a47f72a580882b37b8478e1e51","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-1.1.0.tgz","fileCount":8,"integrity":"sha512-xfnuEOrPPRC7NtSAwu3SGJz2ckJfrEVFJ6G8K2teAbWkjW46cGOljMszDDFcDs17FIDjTw16Yzev1kG4LdQFJQ==","signatures":[{"sig":"MEQCIBCBqRK6KSc7FxfmkWGU5uMtrJkCRQ9RShCH3EY1LMrjAiAD3lrhLQ9DK0E0NY4bqNj4VhupgnxeNweXTRlNdrnNdQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20287},"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":{"luxon":"^3.3.0","tslib":"2.5.3"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_1.1.0_1690184301383_0.8987479071733575","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","version":"1.2.0","_id":"@adaskothebeast/hierarchical-convert-to-luxon@1.2.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"af6b8035ec05899e0a514354a291733e0b6f59b8","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-1.2.0.tgz","fileCount":8,"integrity":"sha512-1vtQMv1yI6R/PtkUifc9lbq83Ilw5EhTF2PJ6msoUZAVYbruqn6hqL1Wi6nPD4FHPz3q1i3qhOJflg/UiDlnEg==","signatures":[{"sig":"MEUCIQCVo/dSIA90w378SmniNhn4sTMTi/RzWkI0OSAl5rTaUQIgbABxmSMM7Dj8Yyu9pr0qxOaVtgUj23pnZaaneXMfKfE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20265},"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":{"luxon":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_1.2.0_1691015867924_0.7958913500053568","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","version":"2.0.0","_id":"@adaskothebeast/hierarchical-convert-to-luxon@2.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"bce386ee11260c1e54a2d1599654953e59c77a67","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-2.0.0.tgz","fileCount":8,"integrity":"sha512-DpUOwzAN95pEj13TccGcRdkPksD2D0GMadurVBn4nyGcLSpg143ynUNv9Fdy9wN+1WROgnX4CJ7kVxJANZSOog==","signatures":[{"sig":"MEUCICG4St4sIcFXajCiuLSpz//Y9vPfcEjFZBj9kSVKuLqmAiEAwJ9nNejh0RLp2RzVV7GvKtMO2w5nljS33gmOaMTYDJo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19233},"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":{"luxon":"^3.4.3","tslib":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_2.0.0_1699714690484_0.6056992384830058","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"abd4ff46864a5edae3f75aab709c3353a97a8d35","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-3.0.0.tgz","fileCount":8,"integrity":"sha512-d7AueejSBh9Hc+A97dPw1WOplFaL2mhuEPa/H4k0iwvOEPG2OkXs1fib9X2ppFEfR4kwsWd95pvB/acNgdCNtg==","signatures":[{"sig":"MEUCIQCZ8vB5/eJ5yL6SMMWspCEpdz0UDBEx/o8r6nzZG7ix/wIgQ7rIYytBr82jwbee35+rsxOnSWR+kczO+hx/SM0XpXI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19508},"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":{"luxon":"^3.4.4","tslib":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_3.0.0_1704557991253_0.7224924590015187","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"8e70b259f09a38ef41caf70f30e3bf8297c5313b","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-4.0.1.tgz","fileCount":8,"integrity":"sha512-35TPwFjjQZnebG3jHnDr25A2hxkqtOCyXZ43CI83FLaZsE7QxuiDgTiVnCVFOV1w9fj17wAsEAQt1r+bi4ysPg==","signatures":[{"sig":"MEQCICFeK9QuUhG15FmZzur2Q/ETa5k2zHhtqEgv90d6GS7zAiBBL7HPb8BM3x1J/rogjWvvTLttn2+qhIHF9RFBjCUaUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25273},"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":{"luxon":"^3.4.4","tslib":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_4.0.1_1716918574588_0.6251329347143388","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"18f6cabcc9725e3b0149747cbfdd67e079018477","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-5.0.0.tgz","fileCount":8,"integrity":"sha512-P5zk5KtOzdg69KRZTo9FSvK8/6shWJAZPdoCX1ODiUDeQTcAvKiDjnD7yps24nA/wUj7t9vT3arKwqrEjprmCA==","signatures":[{"sig":"MEUCIQDiJI/hrl1yhwJHq9L7IVeJtyy2jzHKerUswEquCeA2UAIgVdBx+PTiiKWkolRPOc8d8zDMOF7Qr9Pef7pMtOCXWd8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25259},"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":{"luxon":"^3.5.0","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_5.0.0_1735899644231_0.21324594940361408","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"e9101cfcb796e1f3a042991f00d36718c1573e82","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-6.0.0.tgz","fileCount":8,"integrity":"sha512-IzhS/otopSHiFhibfxvxS126pf7AbNrbXUCER43OUddJDFty6aovAEH2T531flLeRM0rYcIklImDVtRIXMrd3Q==","signatures":[{"sig":"MEUCIQCVXgdwW7OnnyeBfUv+VGrOF+5nuxyO4n/gwyDDkXZkngIgf3yT6d4ms3whzcSy2PpCELaYrzbDil86G1O5SmBaWyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25216},"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":{"luxon":"^3.6.1","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_6.0.0_1750514053542_0.7731901439196747","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"cbaae33f3a1092b098d84e9e8ff97b922f03247a","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-7.0.0.tgz","fileCount":8,"integrity":"sha512-odzX4WfQLpamqlKc7kFPjeeDWZJ923iUPeLNfn05xkfOHMt3/dCjCVBH/6jE5oHtTqUiL6T127XBACUA1XLyUA==","signatures":[{"sig":"MEUCIQCGA9kC8Ox7s+fZk7QlWFElHKZwPKcE0qIdgR2yNfchywIgXzS9kCHmskIfsxOI8dQDCT2jXqFb0JXWTcn0wHWAS2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25216},"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":{"luxon":"^3.7.2","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_7.0.0_1760268302328_0.1874632834760559","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"83f32a64f645d0d27584ff225f5c8e5ced33211d","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-8.0.0.tgz","fileCount":8,"integrity":"sha512-s7givaCn4Rsao3IML3q2mipVJ+7DVuRSIMKrmjD1SfYOph5W1tbnRgMu9p/GvxlsZQtrrTiNBcNEGe4wsQG4Kw==","signatures":[{"sig":"MEQCICSCLoXt4mKJ4n1HaO2DAK8FDHLl90omtfRB+7dv+J5JAiBFgypuHYpUpRTdThibRmRbalk4HFHnQO3att19qlL/Eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46203},"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":{"luxon":"^3.7.2","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_8.0.0_1763833480720_0.274819498695805","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"0e93de9f7436a953080a0f44e14d9ba2948f6445","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-9.0.0.tgz","fileCount":8,"integrity":"sha512-BrRXiSVLq+bftqZ8uX+D81U+6CAZIG620qNfunY4eMXElMYVi/8BFSoYJYBxBd1fGXOtN4L2h1OhglV2wlXnYA==","signatures":[{"sig":"MEUCIAofvUbyxBhageS1XGFix2+KqBQUECClbWYe+q+teeiAAiEAloODQllcyLnBktn3oDu4sOUa3PkuOqkHV0FMQ6lda1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-luxon@9.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46203},"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:c7b702dd-f5b0-46a9-b761-91a8f00c4d74"}},"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":{"luxon":"^3.7.2","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_9.0.0_1767539365779_0.7067908160734866","host":"s3://npm-registry-packages-npm-production"}},"9.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"6513d64f7f6679a3247aa4d92d5f3698c2723197","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-9.0.1.tgz","fileCount":8,"integrity":"sha512-N68ycDzKpeyLQyjRNsLV062A0scqRogzi1KFRSe+iWMPQHPNzJrrNhlpoRO29W4PYG3Keb9060fjPxvZqueqWA==","signatures":[{"sig":"MEUCIQD08ZFfqD8vQ2JltSJf7Cvujj7QmC+S3/jdVdJZ35EuaAIgWwvaOyZD5WseOD3hDnjVCLcexzEoX0COVWp4A559xLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-luxon@9.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46203},"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:c7b702dd-f5b0-46a9-b761-91a8f00c4d74"}},"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":{"luxon":"^3.7.2","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_9.0.1_1767539927112_0.38994690702962087","host":"s3://npm-registry-packages-npm-production"}},"9.1.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"a65a37fc098bcf96f14347cbe840da6feaab2c71","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-9.1.0.tgz","fileCount":8,"integrity":"sha512-saG/nFMTIU4f/nhcYSh9t9C8gXa0bNW9/72IOQsnGfNssX18TZIWvKWSAXFoV/hNsFBwaMtwCK71ji2OHvyAUQ==","signatures":[{"sig":"MEUCIBrkTWV6L7msPFCK15BHxe4Hg1DNvpuF4Uxvwtn+BwfiAiEAlhPRAqmaVcmXyLnoDO+K8XDA1CKdX6wn+RJy15zxEx8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-luxon@9.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46203},"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:c7b702dd-f5b0-46a9-b761-91a8f00c4d74"}},"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":{"luxon":"^3.7.2","tslib":"^2.8.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_9.1.0_1775284649425_0.8248503403007736","host":"s3://npm-registry-packages-npm-production"}},"10.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"708f8b9d4d958feb679d1193efeb802e770f1b89","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-10.0.0.tgz","fileCount":18,"integrity":"sha512-QumRbgZnP/y0fIZz14df4fWkE7nToNOy8hYd/0535C8pygkRK+97QNjBxMchM752373RnQVqjUHJwXua/sXdZA==","signatures":[{"sig":"MEUCIQCBopKtbC5+E42N1whLmqxCsDotlUL5zR6zPxt/M1xXnAIgZF+1fro+ofHkrKkSIOnpxYMyXpIs+y5ElxiiEEwidcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116156},"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":"**Luxon bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 strings into `DateTime` and `Duration` values, plus a schema-driven Luxon backend for the typewriter runtime.**","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"luxon":"^3.7.2","tslib":"^2.8.1","@adaskothebeast/typewriter-runtime":"10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_10.0.0_1785246943825_0.7380151302838129","host":"s3://npm-registry-packages-npm-production"}},"10.0.1":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"fed3d25182cb66c18c4297640dc5ad0f6ef1a37f","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-10.0.1.tgz","fileCount":11,"integrity":"sha512-+rBi2CPjPofX82qp/8ShK5NLW42wYrHX2ejRr3aywhz5CEHIj00UE6sCytUvr5ueIsGpPAsolSua6azeOd/cAw==","signatures":[{"sig":"MEUCIFMkiNFs8RH+NPxInpmx7QeKN0etBuX+0ttLDqmpzpgKAiEA/oeL7DDA6+HhhskUySUTBdK8OwboxUqjjdVKNQr5EyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-luxon@10.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32917},"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:c7b702dd-f5b0-46a9-b761-91a8f00c4d74"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.16.0","description":"**Luxon bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 strings into `DateTime` and `Duration` values, plus a schema-driven Luxon backend for the typewriter runtime.**","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"luxon":"^3.7.2","tslib":"^2.8.1","@adaskothebeast/typewriter-runtime":"10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_10.0.1_1785250690095_0.8015608599143065","host":"s3://npm-registry-packages-npm-production"}},"10.0.2":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","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-luxon@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":"d9d2c1f065f774471925a685b97d3774cf4fbcef","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-10.0.2.tgz","fileCount":11,"integrity":"sha512-zNlRbgMhGMg4u7cJ5XMS/+xJhAk1bMc3QIt3tPUJ2AlYmz5H26JjehM8FMwrb+O7RqxrLlNdnhWHANfhYwNJ+w==","signatures":[{"sig":"MEUCIG035spcssDUxinRH67JPuV+6bThJwBfp8d/tUleZRbhAiEAn968ueaITh8YRNyDfhveVBhwaeUHk/inVOvdou4Rz34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-luxon@10.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32918},"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:c7b702dd-f5b0-46a9-b761-91a8f00c4d74"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git"},"_npmVersion":"11.16.0","description":"**Luxon bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 strings into `DateTime` and `Duration` values, plus a schema-driven Luxon backend for the typewriter runtime.**","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"luxon":"^3.7.2","tslib":"^2.8.1","@adaskothebeast/typewriter-runtime":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_10.0.2_1785252309548_0.8232827586144031","host":"s3://npm-registry-packages-npm-production"}},"11.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-luxon","version":"11.0.0","keywords":["luxon","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-luxon@11.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-luxon#readme","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"ed181d66b0c48cb57bb4770c532883355fb53ec9","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-11.0.0.tgz","fileCount":13,"integrity":"sha512-AIVqZknqWPYBOrXLucCmfgH/8nM/nWjModSpmjwHHWKbn9EOkFNHVcWwNUioD9GV8CYF4DTw44zkjGbMBlwYkA==","signatures":[{"sig":"MEYCIQCwE3shvDcgrD2OTFl8pPnh52JuapSiDTc9n7WNhteVLwIhAJoxeFxj93OwBv2mGD7jVtNI3qkyK1a0NKQLfSEZBKmP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCk8XmWMUO8Woh681g3CheHR5Ov8Y1jbatnqD0klUXr+gIhALSRbJZfn82ZG/uKsWl5qU7Ixj9ybRKDdbq2TlUW2yrW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-luxon@11.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32237},"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:c7b702dd-f5b0-46a9-b761-91a8f00c4d74"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-luxon"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 dates and durations in JSON payloads into Luxon values, plus a Luxon backend for the Typewriter runtime.","directories":{},"sideEffects":false,"_nodeVersion":"26.10.0","dependencies":{"@adaskothebeast/hierarchical-convert-core":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"luxon":"^3.7.2"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-luxon_11.0.0_1790551318906_0.6887734845161435","host":"s3://npm-registry-packages-npm-production"}},"11.0.1":{"_id":"@adaskothebeast/hierarchical-convert-to-luxon@11.0.1","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"708dabd10a11e1236d55ac14d46471b29aeb7bcc","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-luxon/-/hierarchical-convert-to-luxon-11.0.1.tgz","fileCount":13,"integrity":"sha512-tz61yV1Agee4EOe4U6OYCg+JxWjiYdCetPsWpLKEaOyPDeB/JCOWh1lUid6phrao3LFlHIaiiPSDByDsIZfvCA==","signatures":[{"sig":"MEUCIQDvVgeE+NplU4VoLVJ5onqd1VkNhajH6dfUGmSOKVJA9gIgJiEqaeT7U+/nruYcAYy3TC6BsyFK6bTy+u6e5YzLZbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCMg9CLxFUL0I61M9SPssblBqm4BHO6zMq8oENxxnFyeAIhAOWrRz/eivlZCqMlUe6ZG6nK70jbbBknF5FpWKgXUkHa"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-luxon@11.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32309},"main":"./index.cjs","name":"@adaskothebeast/hierarchical-convert-to-luxon","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":"c7b702dd-f5b0-46a9-b761-91a8f00c4d74"}},"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-luxon#readme","keywords":["luxon","date","duration","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-luxon"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 dates and durations in JSON payloads into Luxon values, plus a Luxon backend for the Typewriter runtime.","directories":{},"maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"sideEffects":false,"_nodeVersion":"26.10.0","dependencies":{"@adaskothebeast/hierarchical-convert-core":"^11.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"luxon":"^3.7.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hierarchical-convert-to-luxon_11.0.1_1790749936713_0.2450507417602812"}}},"time":{"created":"2023-07-22T17:12:26.945Z","modified":"2026-09-30T06:32:17.274Z","1.0.0":"2023-07-22T17:12:27.340Z","1.1.0":"2023-07-24T07:38:21.550Z","1.2.0":"2023-08-02T22:37:48.140Z","2.0.0":"2023-11-11T14:58:10.704Z","3.0.0":"2024-01-06T16:19:51.444Z","4.0.1":"2024-05-28T17:49:34.751Z","5.0.0":"2025-01-03T10:20:44.460Z","6.0.0":"2025-06-21T13:54:13.738Z","7.0.0":"2025-10-12T11:25:02.518Z","8.0.0":"2025-11-22T17:44:40.943Z","9.0.0":"2026-01-04T15:09:25.943Z","9.0.1":"2026-01-04T15:18:47.262Z","9.1.0":"2026-04-04T06:37:29.555Z","10.0.0":"2026-07-28T13:55:43.960Z","10.0.1":"2026-07-28T14:58:10.231Z","10.0.2":"2026-07-28T15:25:09.671Z","11.0.0":"2026-09-27T23:21:58.993Z","11.0.1":"2026-09-30T06:32:16.801Z"},"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-luxon#readme","keywords":["luxon","date","duration","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-luxon"},"description":"Deep, in-place conversion of ISO 8601 dates and durations in JSON payloads into Luxon values, plus a Luxon backend for the Typewriter runtime.","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"readme":"# 🌞 @adaskothebeast/hierarchical-convert-to-luxon\n\n**Luxon bindings for [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors): walk a parsed JSON payload and turn ISO 8601 strings into `DateTime` and `Duration` values, plus a schema-driven Luxon backend for the typewriter runtime.**\n\n[![npm](https://img.shields.io/npm/v/%40adaskothebeast%2Fhierarchical-convert-to-luxon?color=cb3837&logo=npm)](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-luxon)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\nPeer dependencies: `luxon` 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-luxon luxon @adaskothebeast/typewriter-runtime\n```\n\nTypeScript users also need the community typings, because Luxon ships none of its own:\n\n```bash\nnpm i -D @types/luxon\n```\n\nNo time zone data package is required. Luxon reads IANA zones from the runtime `Intl` data, and `IANAZone.isValidZone` (used by the zoned codec) relies on it.\n\nThe runtime peer is only needed for `luxonDateBackend`. If you use nothing but `hierarchicalConvertToLuxon`, `luxon` alone is enough.\n\n---\n\n## 🎯 What it does\n\nThe package ships two independent pieces.\n\n`hierarchicalConvertToLuxon` 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 or duration string with a Luxon object, **mutating the input in place** and returning `void`. Nothing is cloned, so the object identity your caller holds stays the same. 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 Luxon values) are not entered, cycles are visited once, and the root plus 100 nested levels are walked. 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).\n\n`luxonDateBackend` is the **schema-driven** path. It is a plain object (`{ name: 'luxon', codecs }`) that satisfies the `DateBackend` contract from `@adaskothebeast/typewriter-runtime`, so you can hand it to `transformJson`, `createJsonTransformer`, `serializeJson` or `createJsonSerializer` as `options.dateBackend` and every date-ish schema node hydrates into Luxon instead of the default `Temporal` types.\n\n---\n\n## 🧰 API\n\n| Export                                           | Signature / shape                                                                                             | Notes                                                                                         |\n| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |\n| `hierarchicalConvertToLuxon(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.                                      |\n| `luxonDateBackend`                               | `{ readonly name: 'luxon'; readonly codecs: Record<DateSchemaKind, DateCodec> }`                              | Declared with `satisfies DateBackend`, so it is a value, not a class. Nothing to instantiate. |\n\n`luxonDateBackend.codecs` covers every `DateSchemaKind`:\n\n| Kind               | Luxon type | Wire form accepted by `parse`                                   | `serialize` output                    |\n| ------------------ | ---------- | --------------------------------------------------------------- | ------------------------------------- |\n| `instant`          | `DateTime` | `2024-02-29T12:34:56.789+01:00`, offset or `Z` **required**     | `value.toUTC().toISO()`               |\n| `plain-date`       | `DateTime` | `2024-02-29`                                                    | `value.toISODate()`                   |\n| `plain-time`       | `DateTime` | `12:34`, `12:34:56`, `12:34:56.789`                             | `toISOTime({ includeOffset: false })` |\n| `plain-date-time`  | `DateTime` | `2024-02-29T12:34:56.789` (no offset)                           | `toISO({ includeOffset: false })`     |\n| `zoned-date-time`  | `DateTime` | `2024-07-01T12:34:56.789+02:00[Europe/Paris]`                   | same bracketed form                   |\n| `duration`         | `Duration` | any ISO duration Luxon accepts, including `-P1Y2M3DT4H5M6.789S` | `value.toISO()`                       |\n| `period`           | `Duration` | identical to `duration` (the same codec object is reused)       | `value.toISO()`                       |\n| `plain-year-month` | `DateTime` | `2024-02`                                                       | `toFormat('yyyy-MM')`                 |\n| `plain-month-day`  | `DateTime` | `--02-29`                                                       | `toFormat(\"'--'MM-dd\")`               |\n\nEvery codec exposes `is`, `parse` and `serialize`. `parse` throws `RangeError` on anything it cannot represent; `is` returns `true` only for a Luxon value whose `isValid` is `true`.\n\n---\n\n## ⚡ Usage\n\nSchema-less, over an Axios response:\n\n```ts\nimport { AxiosInstanceManager } from '@adaskothebeast/axios-interceptor';\nimport { hierarchicalConvertToLuxon } from '@adaskothebeast/hierarchical-convert-to-luxon';\n\nconst api = AxiosInstanceManager.createInstance(hierarchicalConvertToLuxon);\n\nconst { data } = await api.get('/orders/42');\n// data.createdAt is a luxon DateTime, data.slaWindow is a luxon Duration\n```\n\nSchema-less, over an Angular `HttpClient` response:\n\n```ts\nimport { HIERARCHICAL_DATE_ADJUST_FUNCTION } from '@adaskothebeast/angular-date-http-interceptor';\nimport { hierarchicalConvertToLuxon } from '@adaskothebeast/hierarchical-convert-to-luxon';\n\nproviders: [{ provide: HIERARCHICAL_DATE_ADJUST_FUNCTION, useValue: hierarchicalConvertToLuxon }];\n```\n\nDirect call on any parsed payload:\n\n```ts\nimport { hierarchicalConvertToLuxon } from '@adaskothebeast/hierarchical-convert-to-luxon';\n\nconst payload = JSON.parse(body) as unknown;\nhierarchicalConvertToLuxon(payload);\n```\n\nSchema-driven, through the typewriter runtime:\n\n```ts\nimport { luxonDateBackend } from '@adaskothebeast/hierarchical-convert-to-luxon';\nimport { createJsonTransformer } from '@adaskothebeast/typewriter-runtime';\nimport { schema } from '@adaskothebeast/typewriter-schema';\nimport type { DateTime, Duration } from 'luxon';\n\nconst orderSchema = schema.object<{ createdAt: DateTime; slaWindow: Duration }>({\n  createdAt: schema.instant(),\n  slaWindow: schema.duration(),\n});\n\nconst toOrder = createJsonTransformer(orderSchema, undefined, {\n  mode: 'strict',\n  dateBackend: luxonDateBackend,\n});\n\nconst order = toOrder({ createdAt: '2024-02-29T12:34:56.789+01:00', slaWindow: 'PT1H30M' });\n// order.createdAt is a UTC DateTime, order.slaWindow is a Duration\n```\n\n---\n\n## 🎛️ Options and configuration\n\n`hierarchicalConvertToLuxon` has no options.\n\n`luxonDateBackend` has no options either. It is a stateless 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`; 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`hierarchicalConvertToLuxon`:\n\n| Input value                       | Result                                                                                    |\n| --------------------------------- | ----------------------------------------------------------------------------------------- |\n| `'2023-07-17T23:06:00.000Z'`      | `DateTime.fromISO('2023-07-17T23:06:00.000Z')` (local zone)                               |\n| `'2023-07-17T23:06:00.000+01:00'` | `DateTime.fromISO('2023-07-17T23:06:00.000+01:00')`                                       |\n| `'2023-07-17T23:06:00'`           | `DateTime` in the local zone                                                              |\n| `'2023-02-30T00:00:00Z'`          | unchanged string (impossible calendar date)                                               |\n| `'PT1,5S'`                        | `Duration` of 1.5 seconds (Luxon accepts the comma natively)                              |\n| `'P0D'`                           | `Duration.fromObject({ days: 0 })`                                                        |\n| `'P4W'`                           | `Duration.fromObject({ weeks: 4 })`                                                       |\n| `'P1Y2M4DT2H3M2S'`                | `Duration.fromObject({ years: 1, months: 2, days: 4, hours: 2, minutes: 3, seconds: 2 })` |\n| `'adam'`                          | unchanged                                                                                 |\n\n```text\nin : { someNewObj: { text: 'adam', date: '2023-07-17T23:06:00.000Z' } }\nout: { someNewObj: { text: 'adam', date: DateTime } }     // same object, mutated\n```\n\n`luxonDateBackend`:\n\n```text\ninstant          '2024-02-29T12:34:56.789+01:00' -> serialize -> '2024-02-29T11:34:56.789Z'\nplain-time       '12:34:56.789'                  -> DateTime on 2000-01-01 -> '12:34:56.789'\nzoned-date-time  '2024-07-01T12:34:56.789+02:00[Europe/Paris]' round-trips verbatim\nduration         'P1DT2H' -> Duration { days: 1, hours: 2 }\n```\n\n---\n\n## ⚠️ Edge cases\n\n- **In-place mutation.** The traversal rewrites your object graph and returns nothing. Clone first (`structuredClone`, but note it cannot clone the Luxon objects afterwards) 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 Luxon 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 node reachable through two paths is converted exactly once.\n- **Seconds are required and fractions are truncated.** `2023-07-17T23:06` stays a string. One to nine fraction digits are accepted and truncated (never rounded) to milliseconds.\n- **The traversal duration syntax is narrower than Luxon's.** Signed durations (`-PT1.5S`) and fractional seconds with `.` or `,` convert, but fractions on larger units such as `P1.5D` stay strings, while `luxonDateBackend.codecs.duration` parses them. Sub-millisecond seconds are truncated to milliseconds (`PT0.123456789S` becomes `PT0.123S`); weeks are kept.\n- **Invalid values stay strings.** Impossible calendar or clock values are rejected before Luxon sees them, and a date or duration is assigned only when Luxon reports `isValid`.\n- **Zones collapse to the system zone.** The traversal calls `DateTime.fromISO(v)` with no options, so an offset in the payload is honoured for the instant but the resulting `DateTime` is in the local zone. Call `.setZone('utc')` yourself if you need UTC, or use `luxonDateBackend.codecs.instant`, which parses with `setZone: true` and then normalizes with `toUTC()`.\n- **`zoned-date-time` is strict about the zone.** `parse` requires the bracketed `…±HH:MM[Zone]` form, rejects a zone that `IANAZone.isValidZone` does not know, and rejects a payload whose offset disagrees with the zone at that instant (`2024-07-01T12:34:56+01:00[Europe/Paris]` throws `RangeError`). `serialize` throws when the `DateTime` carries a fixed offset or a local zone instead of a named IANA zone.\n- **Codec `is` cannot tell one `DateTime` kind from another.** All eight `DateTime`-based codecs share the same `DateTime.isDateTime && isValid` guard, so an already-hydrated value passes through whichever kind the schema declares, and a `plain-date` node will accept a `DateTime` that also carries a time.\n- **`duration` and `period` are the same codec.** Luxon has one `Duration` type, so a `period` schema node yields a `Duration` and a calendar-only `P1Y2M3D` and a time-only `PT4H` are equally valid for both kinds.\n- **`plain-time` values are anchored to 2000-01-01 UTC** and `plain-month-day` to the year 2000, which is why `--02-29` round-trips (2000 was a leap year) while `--02-30` throws.\n- Serialization can also fail: Luxon returns `null` from `toISO()` for values it cannot render, and the backend converts that into `RangeError: Unable to serialize …`.\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), [`-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- 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"}