Support integer schema versions through typed decoding
This commit is contained in:
@@ -74,9 +74,12 @@ frozen redacted projection.
|
||||
### Application schema versions
|
||||
|
||||
`VersionRule` declares a semantic path and non-nil checker. Before defaults or typed
|
||||
decoding, the checker receives a `Version` preserving absent, explicit null, or
|
||||
string input. Any other input kind is a `version.type` error and the checker does not
|
||||
run. ConfigKit does not interpret the text or impose a universal version path.
|
||||
decoding, the checker receives a `Version` preserving absent, explicit null, string,
|
||||
or strict decimal-integer input. Strings and integers supply their exact spelling in
|
||||
`Version.Text`; ConfigKit does not impose a machine-integer range. Fractional or
|
||||
exponent numbers, booleans, mappings, and sequences produce `version.type`, and the
|
||||
checker does not run. ConfigKit does not interpret the text or impose a universal
|
||||
version path.
|
||||
|
||||
The checker reports safe, value-free errors and warnings through `Validation.Error`
|
||||
and `Validation.Warning`; ConfigKit resolves primary and related paths to exact or
|
||||
@@ -668,7 +671,11 @@ keys but preserve the strict schema of their values; inline maps accept unmatche
|
||||
keys according to their element descriptor. Multiple independent field failures are
|
||||
collected without publishing the partially decoded object.
|
||||
|
||||
Booleans and strings are not coerced. Integer destinations require integer syntax
|
||||
Booleans and strings are not generally coerced. At exactly a configured
|
||||
`VersionRule.Path`, strict decimal-integer input may decode into a plain `string`, a
|
||||
named string without a text codec, or pointer wrappers around those types. The
|
||||
exception is load-local and does not apply to unrelated fields or loads without a
|
||||
version rule. Integer destinations require integer syntax
|
||||
and a value in the destination type's range. Float destinations accept finite JSON
|
||||
numbers representable by their destination precision. Dynamic numbers become
|
||||
`int64` for integer syntax and `float64` for fractional or exponent syntax, with
|
||||
|
||||
Reference in New Issue
Block a user