{"_id":"@adaskothebeast/hierarchical-convert-to-temporal","_rev":"4-0041c32173e9bc7ec51f82cfe6fd1076","name":"@adaskothebeast/hierarchical-convert-to-temporal","dist-tags":{"latest":"11.0.1"},"versions":{"10.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-temporal","version":"10.0.0","_id":"@adaskothebeast/hierarchical-convert-to-temporal@10.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"dist":{"shasum":"0100621c2970034b878975787e51f094c54b13a1","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-temporal/-/hierarchical-convert-to-temporal-10.0.0.tgz","fileCount":15,"integrity":"sha512-J3Vq0x65hmwhx2IWBF8pX+rdY3FJ225fyWxbFxetHM7+hI4j0zMBNziKO+4FZxr5hc9rezboNGmTAbsdnBzatg==","signatures":[{"sig":"MEYCIQDeVD5tm6M3HJc3fqYsUZ9hNAZZwSIiZAbGwPINZF+3cwIhAPxvVxz5qF6PQiMj9UJsrWI94bplAj76A8x7QYFsH7tN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29698},"gitHead":"d939a562c5f5947e98df253b28d384399481063e","_npmUser":{"name":"adasko","email":"adaskothebeast@gmail.com"},"_npmVersion":"11.16.0","description":"**Deep, in-place conversion of ISO 8601 strings inside JSON payloads into `Temporal` values, plus a ready-made `Temporal` backend for the schema-driven typewriter runtime, part of [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors).**","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-temporal/polyfill":"^0.5.1","@adaskothebeast/typewriter-runtime":"10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-temporal_10.0.0_1785246975630_0.5077472231444442","host":"s3://npm-registry-packages-npm-production"}},"10.0.2":{"name":"@adaskothebeast/hierarchical-convert-to-temporal","version":"10.0.2","_id":"@adaskothebeast/hierarchical-convert-to-temporal@10.0.2","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors#readme","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"ed75bab81acb9f332265c73eddee52fecacd60a2","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-temporal/-/hierarchical-convert-to-temporal-10.0.2.tgz","fileCount":11,"integrity":"sha512-Cqk8jUcGzSAhFJHaKACpnm/8HCffQtWmqt1AkQxBxdsd6uaP3wMBBgMiOrHMRivln510n6uCf0rRwZvDSIeyow==","signatures":[{"sig":"MEUCIQC3fXJlKtKwIH1UmB7NJ6SduS3Ko9ZkedGp8WVd5TTW3wIgRtVUBdnnoTkz2/IV1XW0zlVGs8mwGqVYTD6vYVPYN6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-temporal@10.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22404},"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:4f8b3503-0331-4cac-b632-602ad1bc8a61"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-temporal"},"_npmVersion":"11.16.0","description":"**Deep, in-place conversion of ISO 8601 strings inside JSON payloads into `Temporal` values, plus a ready-made `Temporal` backend for the schema-driven typewriter runtime, part of [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors).**","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^2.8.1","@js-temporal/polyfill":"^0.5.1","@adaskothebeast/typewriter-runtime":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-temporal_10.0.2_1785252312078_0.5365619353989568","host":"s3://npm-registry-packages-npm-production"}},"11.0.0":{"name":"@adaskothebeast/hierarchical-convert-to-temporal","version":"11.0.0","keywords":["temporal","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-temporal@11.0.0","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-temporal#readme","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"79fb58945438fcbf99913248dd27f351b170031d","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-temporal/-/hierarchical-convert-to-temporal-11.0.0.tgz","fileCount":13,"integrity":"sha512-iVhYmKcx3sOXWQJVN2vmYxvcjIML8p3qPjaw6oX4B+wmmvRGYnMvpQXBgj2uny8w1SYdr94mEgaLZDD7MaaPcw==","signatures":[{"sig":"MEQCIEh7KDd9ZB6QtARxZIA4PNQNz+4LauhnbALixg9TgXEWAiBLr7eD2CzpAF/dv2FJOf7Bn9IHJqBXuBky4N4wC1DufA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEattnZppvPKnpE+GGyqp6qmI9DNP1RQw/qAfJEj0is4AiBFxB9gGlYN9lEu5D8lDfYOFqzxi8x7kNQK0wWQK0EH3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-temporal@11.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22424},"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:4f8b3503-0331-4cac-b632-602ad1bc8a61"}},"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-temporal"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 strings in JSON payloads into Temporal values, plus a Temporal 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":{"@js-temporal/polyfill":"^0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/hierarchical-convert-to-temporal_11.0.0_1790551391093_0.8814976515923627","host":"s3://npm-registry-packages-npm-production"}},"11.0.1":{"_id":"@adaskothebeast/hierarchical-convert-to-temporal@11.0.1","bugs":{"url":"https://github.com/AdaskoTheBeAsT/date-interceptors/issues"},"dist":{"shasum":"30d8e2ad6166326698900e6ff3d8592f297ad5ed","tarball":"https://registry.npmjs.org/@adaskothebeast/hierarchical-convert-to-temporal/-/hierarchical-convert-to-temporal-11.0.1.tgz","fileCount":13,"integrity":"sha512-gK+9j320RorNxfUzy/9Nv0YqRK+GLkuZhHuFIlNeS94MFNuXRSNptPMJYCbrQBQpGciQpi9ZiGiGIPM1pA21tw==","signatures":[{"sig":"MEUCIGHaQNg4ctV4CoTwTPla1vPJM2LJ/OJ+VachuGiieHANAiEAltYLjPOcytRrZkB1hpxqfu1ibZlQoDZ7iMEVxYGtJso=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGKJE7zBuM4d77Mf0aCKhumcxl1kwuTCOdYlJPFQfT6AAiAjdHKhpJuqade1UoOCPApRSfgBUsFsfpEMNylyyEsQkQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaskothebeast%2fhierarchical-convert-to-temporal@11.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22424},"main":"./index.cjs","name":"@adaskothebeast/hierarchical-convert-to-temporal","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":"4f8b3503-0331-4cac-b632-602ad1bc8a61"}},"homepage":"https://github.com/AdaskoTheBeAsT/date-interceptors/tree/main/libs/hierarchical-convert-to-temporal#readme","keywords":["temporal","date","duration","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-temporal"},"_npmVersion":"11.19.0","description":"Deep, in-place conversion of ISO 8601 strings in JSON payloads into Temporal values, plus a Temporal 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":{"@js-temporal/polyfill":"^0.5.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hierarchical-convert-to-temporal_11.0.1_1790749930660_0.8593600201272438"}}},"time":{"created":"2026-07-28T13:56:15.396Z","modified":"2026-09-30T06:32:11.132Z","10.0.0":"2026-07-28T13:56:15.771Z","10.0.2":"2026-07-28T15:25:12.210Z","11.0.0":"2026-09-27T23:23:11.163Z","11.0.1":"2026-09-30T06:32:10.767Z"},"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-temporal#readme","keywords":["temporal","date","duration","iso8601","converter","json","typescript"],"repository":{"url":"git+https://github.com/AdaskoTheBeAsT/date-interceptors.git","type":"git","directory":"libs/hierarchical-convert-to-temporal"},"description":"Deep, in-place conversion of ISO 8601 strings in JSON payloads into Temporal values, plus a Temporal backend for the Typewriter runtime.","maintainers":[{"name":"adasko","email":"adaskothebeast@gmail.com"}],"readme":"# ⏳ @adaskothebeast/hierarchical-convert-to-temporal\n\n**Deep, in-place conversion of ISO 8601 strings inside JSON payloads into `Temporal` values, plus a ready-made `Temporal` backend for the schema-driven typewriter runtime, part of [date-interceptors](https://github.com/AdaskoTheBeAsT/date-interceptors).**\n\n[![npm](https://img.shields.io/npm/v/%40adaskothebeast%2Fhierarchical-convert-to-temporal?color=cb3837&logo=npm)](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-temporal)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\nPeer dependencies: `@js-temporal/polyfill` and `@adaskothebeast/typewriter-runtime` (types only, used by the backend export). Runtime dependency: the dependency-free `@adaskothebeast/hierarchical-convert-core`.\n\n---\n\n## 📦 Install\n\n```bash\nnpm i @adaskothebeast/hierarchical-convert-to-temporal @js-temporal/polyfill @adaskothebeast/typewriter-runtime\n```\n\n`@js-temporal/polyfill` is imported directly by this package (`import { Temporal } from '@js-temporal/polyfill'`), so it is required even on runtimes that already ship a native `Temporal`.\n\n---\n\n## 🎯 What it does\n\nGive it a parsed JSON response and it walks the own enumerable properties of every nested array and plain object, replacing matching strings with `Temporal` instances. Nothing is returned; the input graph is mutated in place.\n\n| String shape                        | Becomes                  |\n| ----------------------------------- | ------------------------ |\n| `2023-07-17T23:06:00.000Z`          | `Temporal.Instant`       |\n| `2023-07-17T23:06:00.000+01:00`     | `Temporal.Instant`       |\n| `2023-07-17T23:06:00` (no offset)   | `Temporal.PlainDateTime` |\n| `P1Y2M4DT2H3M2S`, `-PT1H`, `PT0.5S` | `Temporal.Duration`      |\n| anything else                       | left untouched           |\n\nOnly three `Temporal` types are ever produced by the walker: `Instant`, `PlainDateTime` and `Duration`. Date-only, time-only, year-month, month-day and zoned (`[Europe/Paris]`) strings are **not** recognised, because a bare JSON string carries no hint about which of those you meant. When you need the full set, use the schema-driven path with `temporalDateBackend` (see below).\n\n---\n\n## 🧰 API\n\n| Export                          | Signature                                                                         | Notes                                                                                            |\n| ------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |\n| `hierarchicalConvertToTemporal` | `(obj: unknown) => void`                                                          | Mutates `obj` in place, returns `void`.                                                          |\n| `temporalDateBackend`           | `DateBackend` (`{ name: 'temporal'; codecs: Record<DateSchemaKind, DateCodec> }`) | Nine codecs for `@adaskothebeast/typewriter-runtime`. `name` is the literal string `'temporal'`. |\n\nBefore 11.0.0 the converter signature also exposed internal `depth` and `visited` parameters.\n\n### `temporalDateBackend` codecs\n\nEach codec is a `DateCodec` with `is(value)`, `parse(wire)` and `serialize(value)`; `serialize` is always `value.toString()`.\n\n| Schema kind        | Runtime type              |\n| ------------------ | ------------------------- |\n| `instant`          | `Temporal.Instant`        |\n| `plain-date`       | `Temporal.PlainDate`      |\n| `plain-time`       | `Temporal.PlainTime`      |\n| `plain-date-time`  | `Temporal.PlainDateTime`  |\n| `zoned-date-time`  | `Temporal.ZonedDateTime`  |\n| `duration`         | `Temporal.Duration`       |\n| `period`           | `Temporal.Duration`       |\n| `plain-year-month` | `Temporal.PlainYearMonth` |\n| `plain-month-day`  | `Temporal.PlainMonthDay`  |\n\n---\n\n## ⚡ Usage\n\n```ts\nimport { hierarchicalConvertToTemporal } from '@adaskothebeast/hierarchical-convert-to-temporal';\nimport { Temporal } from '@js-temporal/polyfill';\n\nconst payload = {\n  user: {\n    name: 'Adam',\n    createdAt: '2023-07-17T23:06:00.000Z',\n    localReminder: '2023-07-17T23:06:00',\n    sessions: [{ length: 'PT1H30M' }, { length: 'P0D' }],\n  },\n};\n\nhierarchicalConvertToTemporal(payload);\n\npayload.user.createdAt instanceof Temporal.Instant; // true\npayload.user.localReminder instanceof Temporal.PlainDateTime; // true\npayload.user.sessions[0].length instanceof Temporal.Duration; // true\n```\n\nAs a `fetch` post-processing step:\n\n```ts\nasync function getJson<T>(url: string): Promise<T> {\n  const response = await fetch(url);\n  const data = (await response.json()) as T;\n  hierarchicalConvertToTemporal(data);\n  return data;\n}\n```\n\nSchema-driven hydration, where the shape decides the `Temporal` type instead of a regex:\n\n```ts\nimport { temporalDateBackend } from '@adaskothebeast/hierarchical-convert-to-temporal';\nimport { createJsonTransformer } from '@adaskothebeast/typewriter-runtime';\n\nimport { userSchema } from './generated/user.schema';\n\nconst toUser = createJsonTransformer(userSchema, undefined, {\n  dateBackend: temporalDateBackend,\n});\n\nconst user = toUser(await response.json());\n```\n\n`dateBackend` is read by `transformJson` / `serializeJson` (and their `create*` wrappers), which look up `backend.codecs[kind]` for the date kind declared in the schema and throw `Date backend \"temporal\" does not support <kind>` when a kind is missing.\n\n---\n\n## 🎛️ Options and configuration\n\nThere are no options: no key allow-list, no format list, no target-type selection. 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\n1. **Date-times** have the shape `YYYY-MM-DDTHH:mm:ss`, an optional one-to-nine-digit fraction (nanosecond precision survives), and an optional `Z` or `±HH:MM`. Calendar and clock components are validated first, so impossible values never reach Temporal.\n2. **Instant or PlainDateTime.** With `Z` or an offset the value becomes `Temporal.Instant.from(value)`; otherwise `Temporal.PlainDateTime.from(value)`.\n3. **Durations** use integer `Y`, `M`, `W`, `D`, `H`, `M` components, seconds with up to nine fraction digits (`.` or `,`), and an optional leading `-`, yielding `Temporal.Duration.from(value)`. Values Temporal rejects, such as years of 2³² or more, stay strings.\n\nThe root plus 100 nested levels are walked; cycles are visited once.\n\n---\n\n## 📤 Output examples\n\n```ts\nconst input = {\n  instant: '2023-07-17T23:06:00.000Z',\n  offset: '2023-07-17T23:06:00.000+01:00',\n  nanos: '2023-07-17T23:06:00.123456789Z',\n  local: '2023-07-17T23:06:00',\n  weeks: 'P4W',\n  negative: '-PT1H',\n  dateOnly: '2023-07-17',\n  broken: '2023-99-99T99:99:99.000Z',\n};\n\nhierarchicalConvertToTemporal(input);\n```\n\n```text\ninstant   -> Temporal.Instant       2023-07-17T23:06:00Z\noffset    -> Temporal.Instant       2023-07-17T22:06:00Z      (offset folded into the exact time)\nnanos     -> Temporal.Instant       2023-07-17T23:06:00.123456789Z\nlocal     -> Temporal.PlainDateTime 2023-07-17T23:06:00\nweeks     -> Temporal.Duration      P4W\nnegative  -> Temporal.Duration      -PT1H\ndateOnly  -> '2023-07-17'           (unchanged, no time part)\nbroken    -> '2023-99-99T99:99:99.000Z' (unchanged, rejected by calendar validation)\n```\n\nTop-level arrays work too: `['P1Y2M4DT2H3M2S']` becomes `[Temporal.Duration.from('P1Y2M4DT2H3M2S')]`.\n\n---\n\n## ⚠️ Edge cases\n\n- **Prototype pollution is blocked.** Own `__proto__`, `constructor` and `prototype` keys are skipped entirely, so a hostile payload cannot reach `Object.prototype`. The side effect is that legitimate data parked under a key literally named `constructor` or `prototype` is never traversed or converted.\n- **Only arrays and plain objects are entered (11.0.0).** Class instances, `Map`, `Set`, and existing Temporal 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 is capped.** The root plus 100 nested levels are walked, leaving deeper strings as strings. This is DoS protection against adversarially nested JSON.\n- **Circular graphs are safe.** Visited objects are recorded, so `input.self = input` converts once and does not loop.\n- **Offset information is lost for exact times.** `2023-07-17T23:06:00.000+01:00` becomes a `Temporal.Instant`, which is UTC based. If you need the original offset or a time zone, use `zoned-date-time` through `temporalDateBackend` instead.\n- **Offsetless date-times become `PlainDateTime`,** which has no time zone at all. Comparing a `PlainDateTime` with an `Instant` throws, so a payload mixing both shapes needs explicit conversion (`toZonedDateTime`) before comparison.\n- **Malformed strings stay strings, silently.** `2023-99-99T99:99:99.000Z` is rejected by calendar validation before Temporal sees it. If Temporal itself throws (for example on `P99999999999999999999Y`, which exceeds its limits), the error is caught and the string is kept; nothing is logged.\n- **`P` alone is not a duration.** `P`, `PT`, `-P`, and a trailing `T` such as `P1DT` are rejected.\n- **False positives are possible.** Recognition is content driven, never key driven, so an ISO-looking value in a `note`, `label` or `id` field is converted as well. The schema-driven [`@adaskothebeast/typewriter-runtime`](https://www.npmjs.com/package/@adaskothebeast/typewriter-runtime) path exists exactly for payloads where that matters.\n- **The polyfill is mandatory.** Values are `instanceof` the polyfill's classes, not any native `Temporal` global. Mixing polyfill instances with a native `Temporal` implementation in the same process will fail `instanceof` checks.\n- **Name collision with the runtime.** `@adaskothebeast/typewriter-runtime` exports its own `temporalDateBackend` with the same nine codecs. Importing both into one module needs an alias (`import { temporalDateBackend as temporalBackend } from ...`). Pick one; they are interchangeable.\n- **`period` and `duration` are the same codec pair.** `period` exists so schemas generated from a `java.time.Period` or a .NET `TimeSpan` still resolve, but both map to `Temporal.Duration`.\n\n---\n\n## 🔗 Related packages\n\n- Same traversal, other date libraries: [`hierarchical-convert-to-date`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-date), [`-date-fns`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-date-fns), [`-dayjs`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-dayjs), [`-luxon`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-luxon), [`-moment`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-moment), [`-js-joda`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-js-joda)\n- Other value kinds: [`hierarchical-convert-to-decimal`](https://www.npmjs.com/package/@adaskothebeast/hierarchical-convert-to-decimal), [`hierarchical-convert-to-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"}