Skip to content

v0.4.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Oct 12:18
· 71 commits to main since this release

   🚀 Features

  • downgrader: Turn a propertyNames enum into one property per name in 3.1 to 3.0  -  by @dinwwwh in #100 (b4505)

   🐞 Bug Fixes

  • downgrader:
    • Keep a single schema type where it was written in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #67 (f18e8)
    • Loosen a $ref kept in 3.0 whose target lost a restriction  -  by @dinwwwh and Claude Opus 5.5 in #69 (2cad8)
    • Mark Zod base64 strings with format: "byte" in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #71 (6a1d8)
    • Keep null-only schemas nullable in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #72 (de08c)
    • Drop Zod's multi-mime file anyOf in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #73 (b9173)
    • Type a typeless const from its value in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #74 (e8550)
    • Leave a const of a non-plain object untyped in 3.0  -  by @dinwwwh and Claude Opus 5.5 in #77 (a5d6c)
    • Give null its own anyOf branch for several types in 3.0  -  by @dinwwwh and Claude Opus 5.5 in #78 (f9427)
    • Ignore keys holding undefined in 3.0 media type and propertyNames checks  -  by @dinwwwh and Claude Opus 5.5 in #80 (7cd17)
    • Merge an anyOf of one type and null into nullable in 3.1 to 3.0  -  by @dinwwwh in #87 (30a42)
    • Make an anyOf of a null-rejecting branch and null a oneOf in 3.1 to 3.0  -  by @dinwwwh in #88 (0321f)
    • Keep a nullable anyOf that a $ref points into in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #92 (d14fb)
    • Stop recursive $refs into part of an inlined target from making circular output  -  by @dinwwwh and Claude Opus 5.5 in #93 (c2c70)
    • Clear the 3.1 to 3.0 nullable-merge lists when conversion throws  -  by @dinwwwh and Claude Opus 5.5 in #99 (ba103)
    • Merge an anyOf with null twice, as Effect writes nullish, in 3.1 to 3.0  -  by @dinwwwh in #102 (38195)
    • Give patternProperties schemas additionalProperties: true in 3.0  -  by @dinwwwh in #101 (7475a)
    • Merge a oneOf with null, as typia and Litestar write it, in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #105 (8cdcd)
    • Give a tuple with an any-item rest items: {} in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #107 (d7d47)
    • Keep a null pair when properties and additionalProperties split across it in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #109 (d287f)
    • Keep a boolean exclusive bound beside a numeric one in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #110 (8f340)
    • Remove an anyOf of null and an accept-all branch in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #111 (f0a9a)
    • Merge a nullable nullish value into one schema in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #112 (131f6)
    • Keep only the $ref of an anyOf with null when its target admits null in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #113 (2b8c5)
    • Remove an anyOf of null and a described unknown in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #114 (6c84e)
    • Give a union of literals the type of its branches in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #115 (b3c01)
    • Give a typeless enum the type its values share in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #116 (8a172)
    • Merge a union of literals into one enum in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #117 (344ca)
    • Merge a described nullable whose branches repeat the description in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #119 (19338)
    • Write a union of scalar types as oneOf in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #120 (8025c)
    • Write tuple item unions and Effect numbers as oneOf in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #121 (88468)
    • Join a nested scalar oneOf into the outer one in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #124 (6f60e)
    • Join a scalar oneOf with annotations into the outer one in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #125 (40947)
    • Make a nullable $ref with siblings a oneOf in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #126 (35d50)
    • Turn a union of scalars and an array into oneOf in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #127 (87dc6)
    • Keep one null branch in a scalar oneOf in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #128 (4a2f8)
    • Merge the literals of each type in a mixed-type union in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #135 (b10f7)
    • Keep a oneOf whose branches cannot overlap in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #139 (bb667)
    • Remove a discriminator over $refs into $defs in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #140 (0c541)
  • types:
    • Accept undefined in optional fields under exactOptionalPropertyTypes  -  by @dinwwwh and Claude Opus 5.5 in #84 (c78a3)
    • Check numeric response status keys like quoted ones  -  by @dinwwwh and Claude Opus 5.5 in #104 (8c1e3)

   🏎 Performance

  • downgrader:
    • Serialize a const once when checking it against its enum  -  by @dinwwwh in #63 (88dc4)
    • Skip decoding and unescaping plain $refs, fast path plain objects  -  by @dinwwwh and Claude Opus 5.5 in #85 (70e28)
    • Look up a kept $ref's target only for a null anyOf pair in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #89 (8ad56)
    • Build map output directly instead of via Object.fromEntries  -  by @dinwwwh and Claude Opus 5.5 in #94 (ee6d2)
    • Walk object keys without Object.entries  -  by @dinwwwh and Claude Opus 5.5 in #106 (0b191)
    • Read anyOf and oneOf by name when queuing unions in 3.1 to 3.0  -  by @dinwwwh and Claude Opus 5.5 in #123 (67695)
    View changes on GitHub