Skip to content

Releases: arktypeio/arktype

@arktype/util@0.0.51

24 Jun 22:18
90fe9bf
Compare
Choose a tag to compare

Patch Changes

@arktype/schema@0.1.18

24 Jun 22:18
90fe9bf
Compare
Choose a tag to compare

Patch Changes

@arktype/attest@0.8.2

24 Jun 22:18
90fe9bf
Compare
Choose a tag to compare

Patch Changes

arktype@2.0.0-dev.26

24 Jun 22:18
90fe9bf
Compare
Choose a tag to compare
arktype@2.0.0-dev.26 Pre-release
Pre-release

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

23 Jun 01:15
c5569dd
Compare
Choose a tag to compare

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

23 Jun 01:15
c5569dd
Compare
Choose a tag to compare

Patch Changes

@arktype/schema@0.1.17

23 Jun 01:15
c5569dd
Compare
Choose a tag to compare

Patch Changes

@arktype/attest@0.8.1

23 Jun 01:14
c5569dd
Compare
Choose a tag to compare

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

13 Jun 23:50
1aa6064
Compare
Choose a tag to compare

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

13 Jun 23:50
1aa6064
Compare
Choose a tag to compare

Patch Changes