Releases: arktypeio/arktype
@arktype/util@0.0.51
Patch Changes
- #1028
5fe79c6
Thanks @ssalbdivad! - Bump version
@arktype/schema@0.1.18
Patch Changes
-
#1028
5fe79c6
Thanks @ssalbdivad! - Bump version -
Updated dependencies [
5fe79c6
]:- @arktype/util@0.0.51
@arktype/attest@0.8.2
Patch Changes
-
#1028
5fe79c6
Thanks @ssalbdivad! - Bump version -
Updated dependencies [
5fe79c6
]:- @arktype/util@0.0.51
- arktype@2.0.0-dev.26
arktype@2.0.0-dev.26
Improved string default parsing
String defaults are now parsed more efficiently by the core string parser. They can include arbitrary whitespace and give more specific errors.
Fix a resolution issue on certain cyclic unions
// Now resolves correctly
const types = scope({
TypeWithKeywords: "ArraySchema",
Schema: "number|ArraySchema",
ArraySchema: {
"additionalItems?": "Schema"
}
}).export()
arktype@2.0.0-dev.25
String defaults
Previously, setting a default value on an object required a tuple expression:
const myType = type({ value: ["number", "=", 42] })
This is still valid, but now a more convenient syntax is supported for many common cases:
const myType = type({ value: "number = 42" })
The original syntax is still supported, and will be required for cases where the default value is not a serializable primitive e.g.
const mySymbol = Symbol()
const myType = type({ value: ["symbol", "=", mySymbol] })
Chained index access
This allows type-safe chained index access on types via a .get method
const myUnion = type(
{
foo: {
bar: "0"
}
},
"|",
{
foo: {
bar: "1"
}
}
)
// Type<0 | 1>
const fooBar = myUnion.get("foo", "bar")
format
subscope keyword
The new built-in format subscope contains keywords for transforming validated strings:
const foo = " fOO "
const trim = type("format.trim")
// "fOO"
console.log(trim(foo))
const lowercase = type("format.lowercase")
// " foo "
console.log(lowercase(foo))
const uppercase = type("format.uppercase")
// " FOO "
console.log(uppercase(foo))
Many more improvements, especially related to morphs across unions
@arktype/util@0.0.50
Patch Changes
1bf2066
Thanks @ssalbdivad! - ### Adddict
util for defaultable Records
@arktype/schema@0.1.17
Patch Changes
-
#1024
5284b60
Thanks @ssalbdivad! - ### Add support for index access, less indeterminate morph union errors (see full release notes in ArkType's CHANGELOG) -
Updated dependencies [
1bf2066
]:- @arktype/util@0.0.50
@arktype/attest@0.8.1
Patch Changes
-
#1024
5284b60
Thanks @ssalbdivad! - ### Add .satisfies as an attest assertion to compare the value to an ArkType definition.attest({ foo: "bar" }).satisfies({ foo: "string" }) // Error: foo must be a number (was string) attest({ foo: "bar" }).satisfies({ foo: "number" })
-
Updated dependencies [
1bf2066
]:- @arktype/util@0.0.50
- arktype@2.0.0-dev.25
arktype@2.0.0-dev.24
Fix constrained narrow/pipe tuple expression input inference
Previously constraints were not stripped when inferring function inputs for tuple expressions like the following:
// previously errored due to data being inferred as `number.moreThan<0>`
// now correctly inferred as number
const t = type(["number>0", "=>", data => data + 1])
Fix a bug where paths including optional keys could be included as candidates for discrimination (see #960)
Throw descriptive parse errors on unordered unions between indiscriminable morphs and other indeterminate type operations (see #967)
@arktype/util@0.0.49
Patch Changes
- #1011
2be4f5b
Thanks @ssalbdivad! - ### Add a newarrayEquals
util for shallow array comparisons