Skip to content

Ack 1.7.0-beta.5

Pre-release
Pre-release

Choose a tag to compare

@leoafarias leoafarias released this 07 Oct 19:05
· 10 commits to main since this release
2bf0c6e

Changes

  • Strict JSON Schema import now supports contains and if/then/else.
  • Imported-schema keyword evaluation failures expose keyword, documentUri, and pointer through JsonSchemaValidationError. Source pointers correctly encode URI fragments containing percent signs, spaces, #, and Unicode.
  • All five publishable packages are coordinated at 1.7.0-beta.5. Adapter and generator APIs and compatible dependency minimums are unchanged.

Migration

Imported pattern expressions now use ECMA-262 Unicode mode. This is a deliberately accepted breaking change in 1.7.0, affecting users upgrading from stable 1.6.2 or earlier 1.7.0 betas.

. matches one code point: ^.$ accepts 😀, while ^..$ no longer matches its two UTF-16 code units. Review identity escapes too; replace ^\d{3}\-\d{4}$ with ^\d{3}-\d{4}$ outside character classes. Invalid Unicode-mode patterns fail import with an invalid_schema diagnostic.

Native Ack.string().matches() retains its Dart regex behavior. A native pattern can behave differently or fail import after export to JSON Schema.

Existing SchemaValidationError catches still work. Consumers requiring an exact runtime type or serialized error-map shape should allow the new subtype and its three additional fields. Initial null-input and JSON-value checks retain their existing Ack error types.

The beta.3 annotation and generator migrations still apply to users upgrading from older versions.

Packages

Validation

Full workspace tests, minimum Dart/Flutter checks, API comparison against 1.6.2, deterministic generation, Draft-7 validation, documentation validation, and zero-warning publish dry runs passed. The local aggregate passed 2,161 tests, including 394 generator tests; four opt-in Firebase live tests were skipped without credentials.