Skip to content

Ack 1.1.0

Latest

Choose a tag to compare

@leoafarias leoafarias released this 12 Jul 17:14
a79abb2

Ack 1.1.0

Ack 1.1.0 is a correctness-focused release that aligns runtime validation,
generated schemas, and tooling with their documented contracts. It does not
change the public Dart API surface.

Validation and schema fixes

  • Keep safeParse non-throwing for recoverable callback exceptions while
    preserving Dart Error values so programming defects remain visible.
  • Bound direct, indirect, and wrapper-mediated lazy-schema recursion.
  • Decode RFC 3339 date-times that use lowercase t and z separators.
  • Validate multipleOf, IPv6, RFC 3339 date-times, range bounds, collection
    limits, unions, and enum definitions consistently with JSON Schema.
  • Snapshot factory collections and correct schema/deep-collection equality.
  • Preserve conflicting JSON Schema keywords through allOf, and export exact
    list/object sizes with the correct Draft-7 keywords.

Generator and tooling

  • Reject nullable list element schemas during generation, matching Ack's
    runtime list contract.
  • Use current source_gen diagnostics without undeclared debug-file output.
  • Add stable full-output generator coverage.
  • Make API checks, changelog updates, workspace setup, and root test orchestration
    fail truthfully instead of producing false-green results.

Behavior changes and migration notes

Although the public API is unchanged, invalid or ambiguous inputs that were
previously accepted may now fail earlier:

  • Fix invalid schema definitions reported by construction-time ArgumentErrors.
  • Put list nullability on the list (Ack.list(item).nullable()), not its item.
  • Treat accumulated floating-point sums deliberately: round first or validate
    integer minor units such as cents before applying multipleOf.
  • Refresh snapshots that assert the exact output of toJsonSchema().
  • Expect AckException from parse() when a recoverable constraint or
    refinement callback throws; inspect the underlying cause for diagnostics.

See the package changelogs for the complete behavior notes.