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
safeParsenon-throwing for recoverable callback exceptions while
preserving DartErrorvalues so programming defects remain visible. - Bound direct, indirect, and wrapper-mediated lazy-schema recursion.
- Decode RFC 3339 date-times that use lowercase
tandzseparators. - 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_gendiagnostics 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 applyingmultipleOf. - Refresh snapshots that assert the exact output of
toJsonSchema(). - Expect
AckExceptionfromparse()when a recoverable constraint or
refinement callback throws; inspect the underlying cause for diagnostics.
See the package changelogs for the complete behavior notes.