@sinclair/typebox 0.32.0-dev-16 → 0.32.0-dev-18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/import/compiler/compiler.d.mts +9 -0
- package/build/import/compiler/compiler.mjs +60 -6
- package/build/import/errors/errors.d.mts +3 -0
- package/build/import/errors/errors.mjs +28 -3
- package/build/import/errors/function.d.mts +3 -0
- package/build/import/errors/function.mjs +4 -0
- package/build/import/index.mjs +9 -0
- package/build/import/system/policy.d.mts +10 -0
- package/build/import/system/policy.mjs +13 -0
- package/build/import/system/system.d.mts +3 -0
- package/build/import/system/system.mjs +9 -0
- package/build/import/type/any/any.d.mts +1 -0
- package/build/import/type/any/any.mjs +1 -0
- package/build/import/type/array/array.d.mts +7 -0
- package/build/import/type/array/array.mjs +1 -0
- package/build/import/type/async-iterator/async-iterator.d.mts +1 -0
- package/build/import/type/async-iterator/async-iterator.mjs +1 -0
- package/build/import/type/awaited/awaited.d.mts +7 -6
- package/build/import/type/awaited/awaited.mjs +23 -13
- package/build/import/type/bigint/bigint.d.mts +1 -0
- package/build/import/type/bigint/bigint.mjs +1 -0
- package/build/import/type/boolean/boolean.d.mts +1 -0
- package/build/import/type/boolean/boolean.mjs +1 -0
- package/build/import/type/clone/type.d.mts +2 -0
- package/build/import/type/clone/type.mjs +2 -0
- package/build/import/type/clone/value.d.mts +1 -0
- package/build/import/type/clone/value.mjs +2 -0
- package/build/import/type/composite/composite.d.mts +1 -0
- package/build/import/type/composite/composite.mjs +1 -0
- package/build/import/type/const/const.d.mts +2 -1
- package/build/import/type/const/const.mjs +5 -1
- package/build/import/type/constructor/constructor.d.mts +1 -0
- package/build/import/type/constructor/constructor.mjs +1 -0
- package/build/import/type/constructor-parameters/constructor-parameters.d.mts +1 -0
- package/build/import/type/constructor-parameters/constructor-parameters.mjs +1 -0
- package/build/import/type/date/date.d.mts +6 -0
- package/build/import/type/date/date.mjs +1 -0
- package/build/import/type/deref/deref.d.mts +1 -0
- package/build/import/type/deref/deref.mjs +18 -0
- package/build/import/type/enum/enum.d.mts +1 -0
- package/build/import/type/enum/enum.mjs +1 -0
- package/build/import/type/exclude/exclude-from-mapped-result.mjs +3 -0
- package/build/import/type/exclude/exclude.d.mts +2 -0
- package/build/import/type/exclude/exclude.mjs +3 -0
- package/build/import/type/extends/extends-check.mjs +173 -1
- package/build/import/type/extends/extends-from-mapped-key.mjs +4 -0
- package/build/import/type/extends/extends-from-mapped-result.mjs +3 -0
- package/build/import/type/extends/extends-undefined.d.mts +1 -0
- package/build/import/type/extends/extends-undefined.mjs +3 -0
- package/build/import/type/extends/extends.d.mts +3 -0
- package/build/import/type/extends/extends.mjs +7 -0
- package/build/import/type/extract/extract-from-mapped-result.mjs +3 -0
- package/build/import/type/extract/extract.d.mts +2 -0
- package/build/import/type/extract/extract.mjs +3 -0
- package/build/import/type/function/function.d.mts +1 -0
- package/build/import/type/function/function.mjs +1 -0
- package/build/import/type/guard/type.d.mts +46 -0
- package/build/import/type/guard/type.mjs +84 -1
- package/build/import/type/guard/value.d.mts +14 -0
- package/build/import/type/guard/value.mjs +14 -0
- package/build/import/type/helpers/helpers.d.mts +1 -0
- package/build/import/type/helpers/helpers.mjs +1 -0
- package/build/import/type/indexed/index.d.mts +0 -1
- package/build/import/type/indexed/index.mjs +0 -1
- package/build/import/type/indexed/indexed-from-mapped-key.d.mts +2 -2
- package/build/import/type/indexed/indexed-from-mapped-key.mjs +10 -3
- package/build/import/type/indexed/indexed-property-keys.d.mts +1 -0
- package/build/import/type/indexed/indexed-property-keys.mjs +9 -0
- package/build/import/type/indexed/indexed.d.mts +40 -4
- package/build/import/type/indexed/indexed.mjs +84 -5
- package/build/import/type/instance-type/instance-type.d.mts +1 -0
- package/build/import/type/instance-type/instance-type.mjs +1 -0
- package/build/import/type/integer/integer.d.mts +1 -0
- package/build/import/type/integer/integer.mjs +1 -0
- package/build/import/type/intersect/intersect-create.mjs +8 -0
- package/build/import/type/intersect/intersect-evaluated.d.mts +1 -0
- package/build/import/type/intersect/intersect-evaluated.mjs +9 -0
- package/build/import/type/intersect/intersect.d.mts +1 -0
- package/build/import/type/intersect/intersect.mjs +5 -0
- package/build/import/type/intrinsic/capitalize.d.mts +1 -0
- package/build/import/type/intrinsic/capitalize.mjs +1 -0
- package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +4 -0
- package/build/import/type/intrinsic/intrinsic.d.mts +2 -0
- package/build/import/type/intrinsic/intrinsic.mjs +16 -1
- package/build/import/type/intrinsic/lowercase.d.mts +1 -0
- package/build/import/type/intrinsic/lowercase.mjs +1 -0
- package/build/import/type/intrinsic/uncapitalize.d.mts +1 -0
- package/build/import/type/intrinsic/uncapitalize.mjs +1 -0
- package/build/import/type/intrinsic/uppercase.d.mts +1 -0
- package/build/import/type/intrinsic/uppercase.mjs +1 -0
- package/build/import/type/iterator/iterator.d.mts +1 -0
- package/build/import/type/iterator/iterator.mjs +1 -0
- package/build/import/type/keyof/keyof-from-mapped-result.mjs +3 -0
- package/build/import/type/keyof/keyof-property-keys.d.mts +2 -0
- package/build/import/type/keyof/keyof-property-keys.mjs +20 -0
- package/build/import/type/keyof/keyof.d.mts +2 -0
- package/build/import/type/keyof/keyof.mjs +6 -0
- package/build/import/type/literal/literal.d.mts +1 -0
- package/build/import/type/literal/literal.mjs +1 -0
- package/build/import/type/mapped/mapped-key.mjs +1 -0
- package/build/import/type/mapped/mapped-result.mjs +1 -0
- package/build/import/type/mapped/mapped.d.mts +2 -0
- package/build/import/type/mapped/mapped.mjs +19 -1
- package/build/import/type/modifiers/modifiers.mjs +10 -0
- package/build/import/type/never/never.d.mts +1 -0
- package/build/import/type/never/never.mjs +1 -0
- package/build/import/type/not/not.d.mts +1 -0
- package/build/import/type/not/not.mjs +1 -0
- package/build/import/type/null/null.d.mts +1 -0
- package/build/import/type/null/null.mjs +1 -0
- package/build/import/type/number/number.d.mts +1 -0
- package/build/import/type/number/number.mjs +1 -0
- package/build/import/type/object/object.d.mts +5 -0
- package/build/import/type/object/object.mjs +6 -0
- package/build/import/type/omit/omit-from-mapped-key.mjs +4 -0
- package/build/import/type/omit/omit.d.mts +3 -0
- package/build/import/type/omit/omit.mjs +12 -0
- package/build/import/type/operators/operators.d.mts +8 -0
- package/build/import/type/operators/operators.mjs +15 -0
- package/build/import/type/optional/optional.d.mts +1 -0
- package/build/import/type/optional/optional.mjs +1 -0
- package/build/import/type/parameters/parameters.d.mts +1 -0
- package/build/import/type/parameters/parameters.mjs +1 -0
- package/build/import/type/partial/partial-from-mapped-result.mjs +3 -0
- package/build/import/type/partial/partial.d.mts +2 -0
- package/build/import/type/partial/partial.mjs +9 -0
- package/build/import/type/pick/pick-from-mapped-key.mjs +4 -0
- package/build/import/type/pick/pick.d.mts +3 -0
- package/build/import/type/pick/pick.mjs +7 -0
- package/build/import/type/promise/promise.d.mts +1 -0
- package/build/import/type/promise/promise.mjs +1 -0
- package/build/import/type/readonly/readonly.d.mts +1 -0
- package/build/import/type/readonly/readonly.mjs +1 -0
- package/build/import/type/readonly-optional/readonly-optional.d.mts +1 -0
- package/build/import/type/readonly-optional/readonly-optional.mjs +1 -0
- package/build/import/type/record/record.d.mts +11 -9
- package/build/import/type/record/record.mjs +53 -28
- package/build/import/type/recursive/recursive.d.mts +1 -0
- package/build/import/type/recursive/recursive.mjs +3 -0
- package/build/import/type/ref/ref.d.mts +2 -0
- package/build/import/type/ref/ref.mjs +1 -0
- package/build/import/type/regexp/regexp.d.mts +2 -0
- package/build/import/type/regexp/regexp.mjs +1 -0
- package/build/import/type/registry/format.d.mts +6 -0
- package/build/import/type/registry/format.mjs +7 -0
- package/build/import/type/registry/type.d.mts +6 -0
- package/build/import/type/registry/type.mjs +7 -0
- package/build/import/type/required/required-from-mapped-result.mjs +3 -0
- package/build/import/type/required/required.d.mts +2 -0
- package/build/import/type/required/required.mjs +9 -0
- package/build/import/type/rest/rest.d.mts +1 -0
- package/build/import/type/rest/rest.mjs +5 -0
- package/build/import/type/return-type/return-type.d.mts +1 -0
- package/build/import/type/return-type/return-type.mjs +1 -0
- package/build/import/type/schema/schema.d.mts +7 -0
- package/build/import/type/static/static.d.mts +3 -0
- package/build/import/type/strict/strict.d.mts +1 -0
- package/build/import/type/strict/strict.mjs +1 -0
- package/build/import/type/string/string.d.mts +7 -0
- package/build/import/type/string/string.mjs +1 -0
- package/build/import/type/symbol/symbol.d.mts +1 -0
- package/build/import/type/symbol/symbol.mjs +1 -0
- package/build/import/type/symbols/symbols.d.mts +5 -0
- package/build/import/type/symbols/symbols.mjs +5 -0
- package/build/import/type/template-literal/finite.mjs +10 -0
- package/build/import/type/template-literal/generate.mjs +10 -0
- package/build/import/type/template-literal/parser.d.mts +2 -0
- package/build/import/type/template-literal/parser.mjs +17 -0
- package/build/import/type/template-literal/pattern.mjs +11 -0
- package/build/import/type/template-literal/syntax.d.mts +1 -0
- package/build/import/type/template-literal/syntax.mjs +8 -0
- package/build/import/type/template-literal/template-literal.d.mts +2 -0
- package/build/import/type/template-literal/template-literal.mjs +2 -0
- package/build/import/type/template-literal/union.d.mts +1 -0
- package/build/import/type/template-literal/union.mjs +4 -0
- package/build/import/type/transform/transform.d.mts +1 -0
- package/build/import/type/transform/transform.mjs +9 -0
- package/build/import/type/tuple/tuple.d.mts +1 -0
- package/build/import/type/tuple/tuple.mjs +3 -0
- package/build/import/type/type/index.d.mts +1 -0
- package/build/import/type/type/index.mjs +7 -0
- package/build/import/type/type/javascript.d.mts +19 -0
- package/build/import/type/type/javascript.mjs +18 -0
- package/build/import/type/type/json.d.mts +64 -3
- package/build/import/type/type/json.mjs +55 -1
- package/build/import/type/type/type.mjs +3 -0
- package/build/import/type/uint8array/uint8array.d.mts +1 -0
- package/build/import/type/uint8array/uint8array.mjs +1 -0
- package/build/import/type/undefined/undefined.d.mts +1 -0
- package/build/import/type/undefined/undefined.mjs +1 -0
- package/build/import/type/union/union-evaluated.d.mts +1 -0
- package/build/import/type/union/union-evaluated.mjs +10 -0
- package/build/import/type/union/union.d.mts +1 -0
- package/build/import/type/union/union.mjs +2 -0
- package/build/import/type/unknown/unknown.d.mts +1 -0
- package/build/import/type/unknown/unknown.mjs +1 -0
- package/build/import/type/unsafe/unsafe.d.mts +1 -0
- package/build/import/type/unsafe/unsafe.mjs +1 -0
- package/build/import/type/void/void.d.mts +1 -0
- package/build/import/type/void/void.mjs +1 -0
- package/build/import/value/cast/cast.d.mts +2 -0
- package/build/import/value/cast/cast.mjs +28 -0
- package/build/import/value/check/check.d.mts +2 -0
- package/build/import/value/check/check.mjs +19 -1
- package/build/import/value/clean/clean.d.mts +2 -0
- package/build/import/value/clean/clean.mjs +12 -1
- package/build/import/value/clone/clone.d.mts +1 -0
- package/build/import/value/clone/clone.mjs +7 -0
- package/build/import/value/convert/convert.d.mts +2 -0
- package/build/import/value/convert/convert.mjs +30 -1
- package/build/import/value/create/create.d.mts +2 -0
- package/build/import/value/create/create.mjs +17 -0
- package/build/import/value/default/default.d.mts +2 -0
- package/build/import/value/default/default.mjs +19 -0
- package/build/import/value/delta/delta.mjs +15 -0
- package/build/import/value/deref/deref.d.mts +1 -0
- package/build/import/value/deref/deref.mjs +1 -0
- package/build/import/value/equal/equal.d.mts +1 -0
- package/build/import/value/equal/equal.mjs +7 -0
- package/build/import/value/guard/guard.d.mts +20 -0
- package/build/import/value/guard/guard.mjs +30 -0
- package/build/import/value/hash/hash.d.mts +1 -0
- package/build/import/value/hash/hash.mjs +19 -0
- package/build/import/value/index.mjs +12 -0
- package/build/import/value/mutate/mutate.d.mts +1 -0
- package/build/import/value/mutate/mutate.mjs +11 -0
- package/build/import/value/pointer/pointer.d.mts +5 -0
- package/build/import/value/pointer/pointer.mjs +18 -0
- package/build/import/value/transform/decode.d.mts +5 -0
- package/build/import/value/transform/decode.mjs +23 -0
- package/build/import/value/transform/encode.d.mts +6 -0
- package/build/import/value/transform/encode.mjs +25 -0
- package/build/import/value/transform/has.d.mts +1 -0
- package/build/import/value/transform/has.mjs +16 -0
- package/build/import/value/value/value.d.mts +24 -0
- package/build/import/value/value/value.mjs +15 -0
- package/build/require/compiler/compiler.d.ts +9 -0
- package/build/require/compiler/compiler.js +61 -6
- package/build/require/compiler/index.js +1 -0
- package/build/require/errors/errors.d.ts +3 -0
- package/build/require/errors/errors.js +29 -3
- package/build/require/errors/function.d.ts +3 -0
- package/build/require/errors/function.js +5 -0
- package/build/require/errors/index.js +1 -0
- package/build/require/index.js +10 -0
- package/build/require/system/index.js +1 -0
- package/build/require/system/policy.d.ts +10 -0
- package/build/require/system/policy.js +14 -0
- package/build/require/system/system.d.ts +3 -0
- package/build/require/system/system.js +10 -0
- package/build/require/type/any/any.d.ts +1 -0
- package/build/require/type/any/any.js +2 -0
- package/build/require/type/any/index.js +1 -0
- package/build/require/type/array/array.d.ts +7 -0
- package/build/require/type/array/array.js +2 -0
- package/build/require/type/array/index.js +1 -0
- package/build/require/type/async-iterator/async-iterator.d.ts +1 -0
- package/build/require/type/async-iterator/async-iterator.js +2 -0
- package/build/require/type/async-iterator/index.js +1 -0
- package/build/require/type/awaited/awaited.d.ts +7 -6
- package/build/require/type/awaited/awaited.js +25 -15
- package/build/require/type/awaited/index.js +1 -0
- package/build/require/type/bigint/bigint.d.ts +1 -0
- package/build/require/type/bigint/bigint.js +2 -0
- package/build/require/type/bigint/index.js +1 -0
- package/build/require/type/boolean/boolean.d.ts +1 -0
- package/build/require/type/boolean/boolean.js +2 -0
- package/build/require/type/boolean/index.js +1 -0
- package/build/require/type/clone/index.js +1 -0
- package/build/require/type/clone/type.d.ts +2 -0
- package/build/require/type/clone/type.js +3 -0
- package/build/require/type/clone/value.d.ts +1 -0
- package/build/require/type/clone/value.js +3 -0
- package/build/require/type/composite/composite.d.ts +1 -0
- package/build/require/type/composite/composite.js +2 -0
- package/build/require/type/composite/index.js +1 -0
- package/build/require/type/const/const.d.ts +2 -1
- package/build/require/type/const/const.js +6 -1
- package/build/require/type/const/index.js +1 -0
- package/build/require/type/constructor/constructor.d.ts +1 -0
- package/build/require/type/constructor/constructor.js +2 -0
- package/build/require/type/constructor/index.js +1 -0
- package/build/require/type/constructor-parameters/constructor-parameters.d.ts +1 -0
- package/build/require/type/constructor-parameters/constructor-parameters.js +2 -0
- package/build/require/type/constructor-parameters/index.js +1 -0
- package/build/require/type/date/date.d.ts +6 -0
- package/build/require/type/date/date.js +2 -0
- package/build/require/type/date/index.js +1 -0
- package/build/require/type/deref/deref.d.ts +1 -0
- package/build/require/type/deref/deref.js +19 -0
- package/build/require/type/deref/index.js +1 -0
- package/build/require/type/discard/discard.js +1 -0
- package/build/require/type/discard/index.js +1 -0
- package/build/require/type/enum/enum.d.ts +1 -0
- package/build/require/type/enum/enum.js +2 -0
- package/build/require/type/enum/index.js +1 -0
- package/build/require/type/exclude/exclude-from-mapped-result.js +4 -0
- package/build/require/type/exclude/exclude.d.ts +2 -0
- package/build/require/type/exclude/exclude.js +4 -0
- package/build/require/type/exclude/index.js +1 -0
- package/build/require/type/extends/extends-check.js +174 -1
- package/build/require/type/extends/extends-from-mapped-key.js +5 -0
- package/build/require/type/extends/extends-from-mapped-result.js +4 -0
- package/build/require/type/extends/extends-undefined.d.ts +1 -0
- package/build/require/type/extends/extends-undefined.js +4 -0
- package/build/require/type/extends/extends.d.ts +3 -0
- package/build/require/type/extends/extends.js +8 -0
- package/build/require/type/extends/index.js +1 -0
- package/build/require/type/extract/extract-from-mapped-result.js +4 -0
- package/build/require/type/extract/extract.d.ts +2 -0
- package/build/require/type/extract/extract.js +4 -0
- package/build/require/type/extract/index.js +1 -0
- package/build/require/type/function/function.d.ts +1 -0
- package/build/require/type/function/function.js +2 -0
- package/build/require/type/function/index.js +1 -0
- package/build/require/type/guard/index.js +1 -0
- package/build/require/type/guard/type.d.ts +46 -0
- package/build/require/type/guard/type.js +85 -1
- package/build/require/type/guard/value.d.ts +14 -0
- package/build/require/type/guard/value.js +15 -0
- package/build/require/type/helpers/helpers.d.ts +1 -0
- package/build/require/type/helpers/helpers.js +2 -0
- package/build/require/type/helpers/index.js +1 -0
- package/build/require/type/index.js +1 -0
- package/build/require/type/indexed/index.d.ts +0 -1
- package/build/require/type/indexed/index.js +1 -1
- package/build/require/type/indexed/indexed-from-mapped-key.d.ts +2 -2
- package/build/require/type/indexed/indexed-from-mapped-key.js +11 -3
- package/build/require/type/indexed/indexed-property-keys.d.ts +1 -0
- package/build/require/type/indexed/indexed-property-keys.js +10 -0
- package/build/require/type/indexed/indexed.d.ts +40 -4
- package/build/require/type/indexed/indexed.js +84 -4
- package/build/require/type/instance-type/index.js +1 -0
- package/build/require/type/instance-type/instance-type.d.ts +1 -0
- package/build/require/type/instance-type/instance-type.js +2 -0
- package/build/require/type/integer/index.js +1 -0
- package/build/require/type/integer/integer.d.ts +1 -0
- package/build/require/type/integer/integer.js +2 -0
- package/build/require/type/intersect/index.js +1 -0
- package/build/require/type/intersect/intersect-create.js +9 -0
- package/build/require/type/intersect/intersect-evaluated.d.ts +1 -0
- package/build/require/type/intersect/intersect-evaluated.js +10 -0
- package/build/require/type/intersect/intersect-type.js +1 -0
- package/build/require/type/intersect/intersect.d.ts +1 -0
- package/build/require/type/intersect/intersect.js +6 -0
- package/build/require/type/intrinsic/capitalize.d.ts +1 -0
- package/build/require/type/intrinsic/capitalize.js +2 -0
- package/build/require/type/intrinsic/index.js +1 -0
- package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +5 -0
- package/build/require/type/intrinsic/intrinsic.d.ts +2 -0
- package/build/require/type/intrinsic/intrinsic.js +17 -1
- package/build/require/type/intrinsic/lowercase.d.ts +1 -0
- package/build/require/type/intrinsic/lowercase.js +2 -0
- package/build/require/type/intrinsic/uncapitalize.d.ts +1 -0
- package/build/require/type/intrinsic/uncapitalize.js +2 -0
- package/build/require/type/intrinsic/uppercase.d.ts +1 -0
- package/build/require/type/intrinsic/uppercase.js +2 -0
- package/build/require/type/iterator/index.js +1 -0
- package/build/require/type/iterator/iterator.d.ts +1 -0
- package/build/require/type/iterator/iterator.js +2 -0
- package/build/require/type/keyof/index.js +1 -0
- package/build/require/type/keyof/keyof-from-mapped-result.js +4 -0
- package/build/require/type/keyof/keyof-property-keys.d.ts +2 -0
- package/build/require/type/keyof/keyof-property-keys.js +21 -0
- package/build/require/type/keyof/keyof.d.ts +2 -0
- package/build/require/type/keyof/keyof.js +7 -0
- package/build/require/type/literal/index.js +1 -0
- package/build/require/type/literal/literal.d.ts +1 -0
- package/build/require/type/literal/literal.js +2 -0
- package/build/require/type/mapped/index.js +1 -0
- package/build/require/type/mapped/mapped-key.js +2 -0
- package/build/require/type/mapped/mapped-result.js +2 -0
- package/build/require/type/mapped/mapped.d.ts +2 -0
- package/build/require/type/mapped/mapped.js +20 -1
- package/build/require/type/modifiers/index.js +1 -0
- package/build/require/type/modifiers/modifiers.js +11 -0
- package/build/require/type/never/index.js +1 -0
- package/build/require/type/never/never.d.ts +1 -0
- package/build/require/type/never/never.js +2 -0
- package/build/require/type/not/index.js +1 -0
- package/build/require/type/not/not.d.ts +1 -0
- package/build/require/type/not/not.js +2 -0
- package/build/require/type/null/index.js +1 -0
- package/build/require/type/null/null.d.ts +1 -0
- package/build/require/type/null/null.js +2 -0
- package/build/require/type/number/index.js +1 -0
- package/build/require/type/number/number.d.ts +1 -0
- package/build/require/type/number/number.js +2 -0
- package/build/require/type/object/index.js +1 -0
- package/build/require/type/object/object.d.ts +5 -0
- package/build/require/type/object/object.js +7 -0
- package/build/require/type/omit/index.js +1 -0
- package/build/require/type/omit/omit-from-mapped-key.js +5 -0
- package/build/require/type/omit/omit.d.ts +3 -0
- package/build/require/type/omit/omit.js +13 -0
- package/build/require/type/operators/index.js +1 -0
- package/build/require/type/operators/operators.d.ts +8 -0
- package/build/require/type/operators/operators.js +16 -0
- package/build/require/type/optional/index.js +1 -0
- package/build/require/type/optional/optional.d.ts +1 -0
- package/build/require/type/optional/optional.js +2 -0
- package/build/require/type/parameters/index.js +1 -0
- package/build/require/type/parameters/parameters.d.ts +1 -0
- package/build/require/type/parameters/parameters.js +2 -0
- package/build/require/type/partial/index.js +1 -0
- package/build/require/type/partial/partial-from-mapped-result.js +4 -0
- package/build/require/type/partial/partial.d.ts +2 -0
- package/build/require/type/partial/partial.js +10 -0
- package/build/require/type/patterns/index.js +1 -0
- package/build/require/type/patterns/patterns.js +1 -0
- package/build/require/type/pick/index.js +1 -0
- package/build/require/type/pick/pick-from-mapped-key.js +5 -0
- package/build/require/type/pick/pick.d.ts +3 -0
- package/build/require/type/pick/pick.js +8 -0
- package/build/require/type/promise/index.js +1 -0
- package/build/require/type/promise/promise.d.ts +1 -0
- package/build/require/type/promise/promise.js +2 -0
- package/build/require/type/readonly/index.js +1 -0
- package/build/require/type/readonly/readonly.d.ts +1 -0
- package/build/require/type/readonly/readonly.js +2 -0
- package/build/require/type/readonly-optional/index.js +1 -0
- package/build/require/type/readonly-optional/readonly-optional.d.ts +1 -0
- package/build/require/type/readonly-optional/readonly-optional.js +2 -0
- package/build/require/type/record/index.js +1 -0
- package/build/require/type/record/record.d.ts +11 -9
- package/build/require/type/record/record.js +54 -28
- package/build/require/type/recursive/index.js +1 -0
- package/build/require/type/recursive/recursive.d.ts +1 -0
- package/build/require/type/recursive/recursive.js +4 -0
- package/build/require/type/ref/index.js +1 -0
- package/build/require/type/ref/ref.d.ts +2 -0
- package/build/require/type/ref/ref.js +2 -0
- package/build/require/type/regexp/index.js +1 -0
- package/build/require/type/regexp/regexp.d.ts +2 -0
- package/build/require/type/regexp/regexp.js +2 -0
- package/build/require/type/registry/format.d.ts +6 -0
- package/build/require/type/registry/format.js +8 -0
- package/build/require/type/registry/index.js +1 -0
- package/build/require/type/registry/type.d.ts +6 -0
- package/build/require/type/registry/type.js +8 -0
- package/build/require/type/required/index.js +1 -0
- package/build/require/type/required/required-from-mapped-result.js +4 -0
- package/build/require/type/required/required.d.ts +2 -0
- package/build/require/type/required/required.js +10 -0
- package/build/require/type/rest/index.js +1 -0
- package/build/require/type/rest/rest.d.ts +1 -0
- package/build/require/type/rest/rest.js +6 -0
- package/build/require/type/return-type/index.js +1 -0
- package/build/require/type/return-type/return-type.d.ts +1 -0
- package/build/require/type/return-type/return-type.js +2 -0
- package/build/require/type/schema/anyschema.js +1 -0
- package/build/require/type/schema/index.js +1 -0
- package/build/require/type/schema/schema.d.ts +7 -0
- package/build/require/type/schema/schema.js +1 -0
- package/build/require/type/static/index.js +1 -0
- package/build/require/type/static/static.d.ts +3 -0
- package/build/require/type/static/static.js +1 -0
- package/build/require/type/strict/index.js +1 -0
- package/build/require/type/strict/strict.d.ts +1 -0
- package/build/require/type/strict/strict.js +2 -0
- package/build/require/type/string/index.js +1 -0
- package/build/require/type/string/string.d.ts +7 -0
- package/build/require/type/string/string.js +2 -0
- package/build/require/type/symbol/index.js +1 -0
- package/build/require/type/symbol/symbol.d.ts +1 -0
- package/build/require/type/symbol/symbol.js +2 -0
- package/build/require/type/symbols/index.js +1 -0
- package/build/require/type/symbols/symbols.d.ts +5 -0
- package/build/require/type/symbols/symbols.js +6 -0
- package/build/require/type/template-literal/finite.js +11 -0
- package/build/require/type/template-literal/generate.js +11 -0
- package/build/require/type/template-literal/index.js +1 -0
- package/build/require/type/template-literal/parser.d.ts +2 -0
- package/build/require/type/template-literal/parser.js +18 -0
- package/build/require/type/template-literal/pattern.js +12 -0
- package/build/require/type/template-literal/syntax.d.ts +1 -0
- package/build/require/type/template-literal/syntax.js +9 -0
- package/build/require/type/template-literal/template-literal.d.ts +2 -0
- package/build/require/type/template-literal/template-literal.js +3 -0
- package/build/require/type/template-literal/union.d.ts +1 -0
- package/build/require/type/template-literal/union.js +5 -0
- package/build/require/type/transform/index.js +1 -0
- package/build/require/type/transform/transform.d.ts +1 -0
- package/build/require/type/transform/transform.js +10 -0
- package/build/require/type/tuple/index.js +1 -0
- package/build/require/type/tuple/tuple.d.ts +1 -0
- package/build/require/type/tuple/tuple.js +4 -0
- package/build/require/type/type/index.d.ts +1 -0
- package/build/require/type/type/index.js +8 -0
- package/build/require/type/type/javascript.d.ts +19 -0
- package/build/require/type/type/javascript.js +19 -0
- package/build/require/type/type/json.d.ts +64 -3
- package/build/require/type/type/json.js +56 -1
- package/build/require/type/type/type.js +4 -0
- package/build/require/type/uint8array/index.js +1 -0
- package/build/require/type/uint8array/uint8array.d.ts +1 -0
- package/build/require/type/uint8array/uint8array.js +2 -0
- package/build/require/type/undefined/index.js +1 -0
- package/build/require/type/undefined/undefined.d.ts +1 -0
- package/build/require/type/undefined/undefined.js +2 -0
- package/build/require/type/union/index.js +1 -0
- package/build/require/type/union/union-create.js +1 -0
- package/build/require/type/union/union-evaluated.d.ts +1 -0
- package/build/require/type/union/union-evaluated.js +11 -0
- package/build/require/type/union/union-type.js +1 -0
- package/build/require/type/union/union.d.ts +1 -0
- package/build/require/type/union/union.js +3 -0
- package/build/require/type/unknown/index.js +1 -0
- package/build/require/type/unknown/unknown.d.ts +1 -0
- package/build/require/type/unknown/unknown.js +2 -0
- package/build/require/type/unsafe/index.js +1 -0
- package/build/require/type/unsafe/unsafe.d.ts +1 -0
- package/build/require/type/unsafe/unsafe.js +2 -0
- package/build/require/type/void/index.js +1 -0
- package/build/require/type/void/void.d.ts +1 -0
- package/build/require/type/void/void.js +2 -0
- package/build/require/value/cast/cast.d.ts +2 -0
- package/build/require/value/cast/cast.js +29 -0
- package/build/require/value/cast/index.js +1 -0
- package/build/require/value/check/check.d.ts +2 -0
- package/build/require/value/check/check.js +20 -1
- package/build/require/value/check/index.js +1 -0
- package/build/require/value/clean/clean.d.ts +2 -0
- package/build/require/value/clean/clean.js +13 -1
- package/build/require/value/clean/index.js +1 -0
- package/build/require/value/clone/clone.d.ts +1 -0
- package/build/require/value/clone/clone.js +8 -0
- package/build/require/value/clone/index.js +1 -0
- package/build/require/value/convert/convert.d.ts +2 -0
- package/build/require/value/convert/convert.js +31 -1
- package/build/require/value/convert/index.js +1 -0
- package/build/require/value/create/create.d.ts +2 -0
- package/build/require/value/create/create.js +18 -0
- package/build/require/value/create/index.js +1 -0
- package/build/require/value/default/default.d.ts +2 -0
- package/build/require/value/default/default.js +20 -0
- package/build/require/value/default/index.js +1 -0
- package/build/require/value/delta/delta.js +16 -0
- package/build/require/value/delta/index.js +1 -0
- package/build/require/value/deref/deref.d.ts +1 -0
- package/build/require/value/deref/deref.js +2 -0
- package/build/require/value/deref/index.js +1 -0
- package/build/require/value/equal/equal.d.ts +1 -0
- package/build/require/value/equal/equal.js +8 -0
- package/build/require/value/equal/index.js +1 -0
- package/build/require/value/guard/guard.d.ts +20 -0
- package/build/require/value/guard/guard.js +31 -0
- package/build/require/value/guard/index.js +1 -0
- package/build/require/value/hash/hash.d.ts +1 -0
- package/build/require/value/hash/hash.js +20 -0
- package/build/require/value/hash/index.js +1 -0
- package/build/require/value/index.js +13 -0
- package/build/require/value/mutate/index.js +1 -0
- package/build/require/value/mutate/mutate.d.ts +1 -0
- package/build/require/value/mutate/mutate.js +12 -0
- package/build/require/value/pointer/index.js +1 -0
- package/build/require/value/pointer/pointer.d.ts +5 -0
- package/build/require/value/pointer/pointer.js +19 -0
- package/build/require/value/transform/decode.d.ts +5 -0
- package/build/require/value/transform/decode.js +24 -0
- package/build/require/value/transform/encode.d.ts +6 -0
- package/build/require/value/transform/encode.js +26 -0
- package/build/require/value/transform/has.d.ts +1 -0
- package/build/require/value/transform/has.js +17 -0
- package/build/require/value/transform/index.js +1 -0
- package/build/require/value/value/index.js +1 -0
- package/build/require/value/value/value.d.ts +24 -0
- package/build/require/value/value/value.js +16 -0
- package/license +3 -1
- package/package.json +1 -1
- package/readme.md +4 -5
- package/build/import/type/indexed/indexed-result.d.mts +0 -33
- package/build/import/type/indexed/indexed-result.mjs +0 -65
- package/build/require/type/indexed/indexed-result.d.ts +0 -33
- package/build/require/type/indexed/indexed-result.js +0 -69
|
@@ -9,10 +9,15 @@ export declare class TypeCheck<T extends TSchema> {
|
|
|
9
9
|
private readonly code;
|
|
10
10
|
private readonly hasTransform;
|
|
11
11
|
constructor(schema: T, references: TSchema[], checkFunc: CheckFunction, code: string);
|
|
12
|
+
/** Returns the generated assertion code used to validate this type. */
|
|
12
13
|
Code(): string;
|
|
14
|
+
/** Returns an iterator for each error in this value. */
|
|
13
15
|
Errors(value: unknown): ValueErrorIterator;
|
|
16
|
+
/** Returns true if the value matches the compiled type. */
|
|
14
17
|
Check(value: unknown): value is Static<T>;
|
|
18
|
+
/** Decodes a value or throws if error */
|
|
15
19
|
Decode(value: unknown): StaticDecode<T>;
|
|
20
|
+
/** Encodes a value or throws if error */
|
|
16
21
|
Encode(value: unknown): StaticEncode<T>;
|
|
17
22
|
}
|
|
18
23
|
export declare class TypeCompilerUnknownTypeError extends Error {
|
|
@@ -34,8 +39,12 @@ export type TypeCompilerLanguageOption = 'typescript' | 'javascript';
|
|
|
34
39
|
export interface TypeCompilerCodegenOptions {
|
|
35
40
|
language?: TypeCompilerLanguageOption;
|
|
36
41
|
}
|
|
42
|
+
/** Compiles Types for Runtime Type Checking */
|
|
37
43
|
export declare namespace TypeCompiler {
|
|
44
|
+
/** Generates the code used to assert this type and returns it as a string */
|
|
38
45
|
function Code<T extends TSchema>(schema: T, references: TSchema[], options?: TypeCompilerCodegenOptions): string;
|
|
46
|
+
/** Generates the code used to assert this type and returns it as a string */
|
|
39
47
|
function Code<T extends TSchema>(schema: T, options?: TypeCompilerCodegenOptions): string;
|
|
48
|
+
/** Compiles a TypeBox type for optimal runtime type checking. Types must be valid TypeBox types of TSchema */
|
|
40
49
|
function Compile<T extends TSchema>(schema: T, references?: TSchema[]): TypeCheck<T>;
|
|
41
50
|
}
|
|
@@ -10,6 +10,9 @@ import { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';
|
|
|
10
10
|
import { KeyOfPattern } from '../type/keyof/index.mjs';
|
|
11
11
|
import { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';
|
|
12
12
|
import { Never } from '../type/never/index.mjs';
|
|
13
|
+
// ------------------------------------------------------------------
|
|
14
|
+
// TypeCheck
|
|
15
|
+
// ------------------------------------------------------------------
|
|
13
16
|
export class TypeCheck {
|
|
14
17
|
schema;
|
|
15
18
|
references;
|
|
@@ -23,20 +26,25 @@ export class TypeCheck {
|
|
|
23
26
|
this.code = code;
|
|
24
27
|
this.hasTransform = HasTransform(schema, references);
|
|
25
28
|
}
|
|
29
|
+
/** Returns the generated assertion code used to validate this type. */
|
|
26
30
|
Code() {
|
|
27
31
|
return this.code;
|
|
28
32
|
}
|
|
33
|
+
/** Returns an iterator for each error in this value. */
|
|
29
34
|
Errors(value) {
|
|
30
35
|
return Errors(this.schema, this.references, value);
|
|
31
36
|
}
|
|
37
|
+
/** Returns true if the value matches the compiled type. */
|
|
32
38
|
Check(value) {
|
|
33
39
|
return this.checkFunc(value);
|
|
34
40
|
}
|
|
41
|
+
/** Decodes a value or throws if error */
|
|
35
42
|
Decode(value) {
|
|
36
43
|
if (!this.checkFunc(value))
|
|
37
44
|
throw new TransformDecodeCheckError(this.schema, value, this.Errors(value).First());
|
|
38
45
|
return this.hasTransform ? TransformDecode(this.schema, this.references, value) : value;
|
|
39
46
|
}
|
|
47
|
+
/** Encodes a value or throws if error */
|
|
40
48
|
Encode(value) {
|
|
41
49
|
const encoded = this.hasTransform ? TransformEncode(this.schema, this.references, value) : value;
|
|
42
50
|
if (!this.checkFunc(encoded))
|
|
@@ -44,6 +52,9 @@ export class TypeCheck {
|
|
|
44
52
|
return encoded;
|
|
45
53
|
}
|
|
46
54
|
}
|
|
55
|
+
// ------------------------------------------------------------------
|
|
56
|
+
// Character
|
|
57
|
+
// ------------------------------------------------------------------
|
|
47
58
|
var Character;
|
|
48
59
|
(function (Character) {
|
|
49
60
|
function DollarSign(code) {
|
|
@@ -63,6 +74,9 @@ var Character;
|
|
|
63
74
|
}
|
|
64
75
|
Character.IsNumeric = IsNumeric;
|
|
65
76
|
})(Character || (Character = {}));
|
|
77
|
+
// ------------------------------------------------------------------
|
|
78
|
+
// MemberExpression
|
|
79
|
+
// ------------------------------------------------------------------
|
|
66
80
|
var MemberExpression;
|
|
67
81
|
(function (MemberExpression) {
|
|
68
82
|
function IsFirstCharacterNumeric(value) {
|
|
@@ -89,6 +103,9 @@ var MemberExpression;
|
|
|
89
103
|
}
|
|
90
104
|
MemberExpression.Encode = Encode;
|
|
91
105
|
})(MemberExpression || (MemberExpression = {}));
|
|
106
|
+
// ------------------------------------------------------------------
|
|
107
|
+
// Identifier
|
|
108
|
+
// ------------------------------------------------------------------
|
|
92
109
|
var Identifier;
|
|
93
110
|
(function (Identifier) {
|
|
94
111
|
function Encode($id) {
|
|
@@ -106,6 +123,9 @@ var Identifier;
|
|
|
106
123
|
}
|
|
107
124
|
Identifier.Encode = Encode;
|
|
108
125
|
})(Identifier || (Identifier = {}));
|
|
126
|
+
// ------------------------------------------------------------------
|
|
127
|
+
// LiteralString
|
|
128
|
+
// ------------------------------------------------------------------
|
|
109
129
|
var LiteralString;
|
|
110
130
|
(function (LiteralString) {
|
|
111
131
|
function Escape(content) {
|
|
@@ -113,6 +133,9 @@ var LiteralString;
|
|
|
113
133
|
}
|
|
114
134
|
LiteralString.Escape = Escape;
|
|
115
135
|
})(LiteralString || (LiteralString = {}));
|
|
136
|
+
// ------------------------------------------------------------------
|
|
137
|
+
// Errors
|
|
138
|
+
// ------------------------------------------------------------------
|
|
116
139
|
export class TypeCompilerUnknownTypeError extends Error {
|
|
117
140
|
schema;
|
|
118
141
|
constructor(schema) {
|
|
@@ -127,6 +150,9 @@ export class TypeCompilerTypeGuardError extends Error {
|
|
|
127
150
|
this.schema = schema;
|
|
128
151
|
}
|
|
129
152
|
}
|
|
153
|
+
// ------------------------------------------------------------------
|
|
154
|
+
// Policy
|
|
155
|
+
// ------------------------------------------------------------------
|
|
130
156
|
export var Policy;
|
|
131
157
|
(function (Policy) {
|
|
132
158
|
function IsExactOptionalProperty(value, key, expression) {
|
|
@@ -152,11 +178,18 @@ export var Policy;
|
|
|
152
178
|
}
|
|
153
179
|
Policy.IsVoidLike = IsVoidLike;
|
|
154
180
|
})(Policy || (Policy = {}));
|
|
181
|
+
/** Compiles Types for Runtime Type Checking */
|
|
155
182
|
export var TypeCompiler;
|
|
156
183
|
(function (TypeCompiler) {
|
|
184
|
+
// ----------------------------------------------------------------
|
|
185
|
+
// Guards
|
|
186
|
+
// ----------------------------------------------------------------
|
|
157
187
|
function IsAnyOrUnknown(schema) {
|
|
158
188
|
return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';
|
|
159
189
|
}
|
|
190
|
+
// ----------------------------------------------------------------
|
|
191
|
+
// Types
|
|
192
|
+
// ----------------------------------------------------------------
|
|
160
193
|
function* TAny(schema, references, value) {
|
|
161
194
|
yield 'true';
|
|
162
195
|
}
|
|
@@ -338,6 +371,8 @@ export var TypeCompiler;
|
|
|
338
371
|
}
|
|
339
372
|
function* TRef(schema, references, value) {
|
|
340
373
|
const target = Deref(schema, references);
|
|
374
|
+
// Reference: If we have seen this reference before we can just yield and return the function call.
|
|
375
|
+
// If this isn't the case we defer to visit to generate and set the function for subsequent passes.
|
|
341
376
|
if (state.functions.has(schema.$ref))
|
|
342
377
|
return yield `${CreateFunctionName(schema.$ref)}(${value})`;
|
|
343
378
|
yield* Visit(target, references, value);
|
|
@@ -365,6 +400,7 @@ export var TypeCompiler;
|
|
|
365
400
|
yield `${variable}.test(${value})`;
|
|
366
401
|
}
|
|
367
402
|
function* TThis(schema, references, value) {
|
|
403
|
+
// Note: This types are assured to be hoisted prior to this call. Just yield the function.
|
|
368
404
|
yield `${CreateFunctionName(schema.$ref)}(${value})`;
|
|
369
405
|
}
|
|
370
406
|
function* TTuple(schema, references, value) {
|
|
@@ -405,6 +441,9 @@ export var TypeCompiler;
|
|
|
405
441
|
function* Visit(schema, references, value, useHoisting = true) {
|
|
406
442
|
const references_ = IsString(schema.$id) ? [...references, schema] : references;
|
|
407
443
|
const schema_ = schema;
|
|
444
|
+
// --------------------------------------------------------------
|
|
445
|
+
// Hoisting
|
|
446
|
+
// --------------------------------------------------------------
|
|
408
447
|
if (useHoisting && IsString(schema.$id)) {
|
|
409
448
|
const functionName = CreateFunctionName(schema.$id);
|
|
410
449
|
if (state.functions.has(functionName)) {
|
|
@@ -483,12 +522,19 @@ export var TypeCompiler;
|
|
|
483
522
|
return yield* TKind(schema_, references_, value);
|
|
484
523
|
}
|
|
485
524
|
}
|
|
525
|
+
// ----------------------------------------------------------------
|
|
526
|
+
// Compiler State
|
|
527
|
+
// ----------------------------------------------------------------
|
|
528
|
+
// prettier-ignore
|
|
486
529
|
const state = {
|
|
487
|
-
language: 'javascript',
|
|
488
|
-
functions: new Map(),
|
|
489
|
-
variables: new Map(),
|
|
490
|
-
instances: new Map()
|
|
530
|
+
language: 'javascript', // target language
|
|
531
|
+
functions: new Map(), // local functions
|
|
532
|
+
variables: new Map(), // local variables
|
|
533
|
+
instances: new Map() // exterior kind instances
|
|
491
534
|
};
|
|
535
|
+
// ----------------------------------------------------------------
|
|
536
|
+
// Compiler Factory
|
|
537
|
+
// ----------------------------------------------------------------
|
|
492
538
|
function CreateExpression(schema, references, value, useHoisting = true) {
|
|
493
539
|
return `(${[...Visit(schema, references, value, useHoisting)].join(' && ')})`;
|
|
494
540
|
}
|
|
@@ -514,24 +560,31 @@ export var TypeCompiler;
|
|
|
514
560
|
function CreateReturns(type) {
|
|
515
561
|
return state.language === 'typescript' ? `: ${type}` : '';
|
|
516
562
|
}
|
|
563
|
+
// ----------------------------------------------------------------
|
|
564
|
+
// Compile
|
|
565
|
+
// ----------------------------------------------------------------
|
|
517
566
|
function Build(schema, references, options) {
|
|
518
|
-
const functionCode = CreateFunction('check', schema, references, 'value');
|
|
567
|
+
const functionCode = CreateFunction('check', schema, references, 'value'); // will populate functions and variables
|
|
519
568
|
const parameter = CreateParameter('value', 'any');
|
|
520
569
|
const returns = CreateReturns('boolean');
|
|
521
570
|
const functions = [...state.functions.values()];
|
|
522
571
|
const variables = [...state.variables.values()];
|
|
523
|
-
|
|
572
|
+
// prettier-ignore
|
|
573
|
+
const checkFunction = IsString(schema.$id) // ensure top level schemas with $id's are hoisted
|
|
524
574
|
? `return function check(${parameter})${returns} {\n return ${CreateFunctionName(schema.$id)}(value)\n}`
|
|
525
575
|
: `return ${functionCode}`;
|
|
526
576
|
return [...variables, ...functions, checkFunction].join('\n');
|
|
527
577
|
}
|
|
578
|
+
/** Generates the code used to assert this type and returns it as a string */
|
|
528
579
|
function Code(...args) {
|
|
529
580
|
const defaults = { language: 'javascript' };
|
|
581
|
+
// prettier-ignore
|
|
530
582
|
const [schema, references, options] = (args.length === 2 && IsArray(args[1]) ? [args[0], args[1], defaults] :
|
|
531
583
|
args.length === 2 && !IsArray(args[1]) ? [args[0], [], args[1]] :
|
|
532
584
|
args.length === 3 ? [args[0], args[1], args[2]] :
|
|
533
585
|
args.length === 1 ? [args[0], [], defaults] :
|
|
534
586
|
[null, [], defaults]);
|
|
587
|
+
// compiler-reset
|
|
535
588
|
state.language = options.language;
|
|
536
589
|
state.variables.clear();
|
|
537
590
|
state.functions.clear();
|
|
@@ -544,6 +597,7 @@ export var TypeCompiler;
|
|
|
544
597
|
return Build(schema, references, options);
|
|
545
598
|
}
|
|
546
599
|
TypeCompiler.Code = Code;
|
|
600
|
+
/** Compiles a TypeBox type for optimal runtime type checking. Types must be valid TypeBox types of TSchema */
|
|
547
601
|
function Compile(schema, references = []) {
|
|
548
602
|
const generatedCode = Code(schema, references, { language: 'javascript' });
|
|
549
603
|
const compiledFunction = globalThis.Function('kind', 'format', 'hash', generatedCode);
|
|
@@ -79,7 +79,10 @@ export declare class ValueErrorIterator {
|
|
|
79
79
|
private readonly iterator;
|
|
80
80
|
constructor(iterator: IterableIterator<ValueError>);
|
|
81
81
|
[Symbol.iterator](): IterableIterator<ValueError>;
|
|
82
|
+
/** Returns the first value error or undefined if no errors */
|
|
82
83
|
First(): ValueError | undefined;
|
|
83
84
|
}
|
|
85
|
+
/** Returns an iterator for each error in this value. */
|
|
84
86
|
export declare function Errors<T extends TSchema>(schema: T, references: TSchema[], value: unknown): ValueErrorIterator;
|
|
87
|
+
/** Returns an iterator for each error in this value. */
|
|
85
88
|
export declare function Errors<T extends TSchema>(schema: T, value: unknown): ValueErrorIterator;
|
|
@@ -8,6 +8,9 @@ import { Deref } from '../value/deref/index.mjs';
|
|
|
8
8
|
import { Hash } from '../value/hash/index.mjs';
|
|
9
9
|
import { Kind } from '../type/symbols/index.mjs';
|
|
10
10
|
import { Never } from '../type/never/index.mjs';
|
|
11
|
+
// --------------------------------------------------------------------------
|
|
12
|
+
// ValueErrorType
|
|
13
|
+
// --------------------------------------------------------------------------
|
|
11
14
|
export var ValueErrorType;
|
|
12
15
|
(function (ValueErrorType) {
|
|
13
16
|
ValueErrorType[ValueErrorType["ArrayContains"] = 0] = "ArrayContains";
|
|
@@ -74,6 +77,9 @@ export var ValueErrorType;
|
|
|
74
77
|
ValueErrorType[ValueErrorType["Union"] = 61] = "Union";
|
|
75
78
|
ValueErrorType[ValueErrorType["Void"] = 62] = "Void";
|
|
76
79
|
})(ValueErrorType || (ValueErrorType = {}));
|
|
80
|
+
// --------------------------------------------------------------------------
|
|
81
|
+
// ValueErrors
|
|
82
|
+
// --------------------------------------------------------------------------
|
|
77
83
|
export class ValueErrorsUnknownTypeError extends Error {
|
|
78
84
|
schema;
|
|
79
85
|
constructor(schema) {
|
|
@@ -81,12 +87,21 @@ export class ValueErrorsUnknownTypeError extends Error {
|
|
|
81
87
|
this.schema = schema;
|
|
82
88
|
}
|
|
83
89
|
}
|
|
90
|
+
// --------------------------------------------------------------------------
|
|
91
|
+
// EscapeKey
|
|
92
|
+
// --------------------------------------------------------------------------
|
|
84
93
|
function EscapeKey(key) {
|
|
85
|
-
return key.replace(/~/g, '~0').replace(/\//g, '~1');
|
|
94
|
+
return key.replace(/~/g, '~0').replace(/\//g, '~1'); // RFC6901 Path
|
|
86
95
|
}
|
|
96
|
+
// --------------------------------------------------------------------------
|
|
97
|
+
// Guards
|
|
98
|
+
// --------------------------------------------------------------------------
|
|
87
99
|
function IsDefined(value) {
|
|
88
100
|
return value !== undefined;
|
|
89
101
|
}
|
|
102
|
+
// --------------------------------------------------------------------------
|
|
103
|
+
// ValueErrorIterator
|
|
104
|
+
// --------------------------------------------------------------------------
|
|
90
105
|
export class ValueErrorIterator {
|
|
91
106
|
iterator;
|
|
92
107
|
constructor(iterator) {
|
|
@@ -95,14 +110,21 @@ export class ValueErrorIterator {
|
|
|
95
110
|
[Symbol.iterator]() {
|
|
96
111
|
return this.iterator;
|
|
97
112
|
}
|
|
113
|
+
/** Returns the first value error or undefined if no errors */
|
|
98
114
|
First() {
|
|
99
115
|
const next = this.iterator.next();
|
|
100
116
|
return next.done ? undefined : next.value;
|
|
101
117
|
}
|
|
102
118
|
}
|
|
119
|
+
// --------------------------------------------------------------------------
|
|
120
|
+
// Create
|
|
121
|
+
// --------------------------------------------------------------------------
|
|
103
122
|
function Create(type, schema, path, value) {
|
|
104
123
|
return { type, schema, path, value, message: GetErrorFunction()(schema, type) };
|
|
105
124
|
}
|
|
125
|
+
// --------------------------------------------------------------------------
|
|
126
|
+
// Types
|
|
127
|
+
// --------------------------------------------------------------------------
|
|
106
128
|
function* TAny(schema, references, path, value) { }
|
|
107
129
|
function* TArray(schema, references, path, value) {
|
|
108
130
|
if (!IsArray(value)) {
|
|
@@ -117,6 +139,7 @@ function* TArray(schema, references, path, value) {
|
|
|
117
139
|
for (let i = 0; i < value.length; i++) {
|
|
118
140
|
yield* Visit(schema.items, references, `${path}/${i}`, value[i]);
|
|
119
141
|
}
|
|
142
|
+
// prettier-ignore
|
|
120
143
|
if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {
|
|
121
144
|
const hashed = Hash(element);
|
|
122
145
|
if (set.has(hashed)) {
|
|
@@ -128,6 +151,7 @@ function* TArray(schema, references, path, value) {
|
|
|
128
151
|
} return true; })())) {
|
|
129
152
|
yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);
|
|
130
153
|
}
|
|
154
|
+
// contains
|
|
131
155
|
if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {
|
|
132
156
|
return;
|
|
133
157
|
}
|
|
@@ -237,7 +261,7 @@ function* TIntersect(schema, references, path, value) {
|
|
|
237
261
|
if (!keyCheck.test(valueKey)) {
|
|
238
262
|
const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();
|
|
239
263
|
if (!next.done)
|
|
240
|
-
yield next.value;
|
|
264
|
+
yield next.value; // yield interior
|
|
241
265
|
}
|
|
242
266
|
}
|
|
243
267
|
}
|
|
@@ -429,7 +453,7 @@ function* TUnion(schema, references, path, value) {
|
|
|
429
453
|
for (const subschema of schema.anyOf) {
|
|
430
454
|
const errors = [...Visit(subschema, references, path, value)];
|
|
431
455
|
if (errors.length === 0)
|
|
432
|
-
return;
|
|
456
|
+
return; // matched
|
|
433
457
|
count += errors.length;
|
|
434
458
|
}
|
|
435
459
|
if (count > 0) {
|
|
@@ -526,6 +550,7 @@ function* Visit(schema, references, path, value) {
|
|
|
526
550
|
return yield* TKind(schema_, references_, path, value);
|
|
527
551
|
}
|
|
528
552
|
}
|
|
553
|
+
/** Returns an iterator for each error in this value. */
|
|
529
554
|
export function Errors(...args) {
|
|
530
555
|
const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);
|
|
531
556
|
return new ValueErrorIterator(iterator);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { TSchema } from '../type/schema/index.mjs';
|
|
2
2
|
import { ValueErrorType } from './errors.mjs';
|
|
3
|
+
/** Creates an error message using en-US as the default locale */
|
|
3
4
|
export declare function DefaultErrorFunction(schema: TSchema, errorType: ValueErrorType): string;
|
|
4
5
|
export type ErrorFunction = (schema: TSchema, type: ValueErrorType) => string;
|
|
6
|
+
/** Sets the error function used to generate error messages */
|
|
5
7
|
export declare function SetErrorFunction(callback: ErrorFunction): void;
|
|
8
|
+
/** Gets the error function used to generate error messages */
|
|
6
9
|
export declare function GetErrorFunction(): ErrorFunction;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Kind } from '../type/symbols/index.mjs';
|
|
2
2
|
import { ValueErrorType } from './errors.mjs';
|
|
3
|
+
/** Creates an error message using en-US as the default locale */
|
|
3
4
|
export function DefaultErrorFunction(schema, errorType) {
|
|
4
5
|
switch (errorType) {
|
|
5
6
|
case ValueErrorType.ArrayContains:
|
|
@@ -132,10 +133,13 @@ export function DefaultErrorFunction(schema, errorType) {
|
|
|
132
133
|
return 'Unknown error type';
|
|
133
134
|
}
|
|
134
135
|
}
|
|
136
|
+
/** Manages error message providers */
|
|
135
137
|
let errorFunction = DefaultErrorFunction;
|
|
138
|
+
/** Sets the error function used to generate error messages */
|
|
136
139
|
export function SetErrorFunction(callback) {
|
|
137
140
|
errorFunction = callback;
|
|
138
141
|
}
|
|
142
|
+
/** Gets the error function used to generate error messages */
|
|
139
143
|
export function GetErrorFunction() {
|
|
140
144
|
return errorFunction;
|
|
141
145
|
}
|
package/build/import/index.mjs
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
// ------------------------------------------------------------------
|
|
2
|
+
// Infrastructure
|
|
3
|
+
// ------------------------------------------------------------------
|
|
1
4
|
export { Kind, Hint, ReadonlyKind, OptionalKind, TransformKind } from './type/symbols/index.mjs';
|
|
2
5
|
export { PatternBoolean, PatternBooleanExact, PatternNumber, PatternNumberExact, PatternString, PatternStringExact } from './type/patterns/index.mjs';
|
|
3
6
|
export { TypeRegistry, FormatRegistry } from './type/registry/index.mjs';
|
|
4
7
|
export { TypeGuard, ValueGuard } from './type/guard/index.mjs';
|
|
5
8
|
export { CloneType, CloneRest } from './type/clone/type.mjs';
|
|
9
|
+
// ------------------------------------------------------------------
|
|
10
|
+
// Type
|
|
11
|
+
// ------------------------------------------------------------------
|
|
6
12
|
export { Any } from './type/any/index.mjs';
|
|
7
13
|
export { Array } from './type/array/index.mjs';
|
|
8
14
|
export { AsyncIterator } from './type/async-iterator/index.mjs';
|
|
@@ -62,4 +68,7 @@ export { Union, UnionEvaluated } from './type/union/index.mjs';
|
|
|
62
68
|
export { Unknown } from './type/unknown/index.mjs';
|
|
63
69
|
export { Unsafe } from './type/unsafe/index.mjs';
|
|
64
70
|
export { Void } from './type/void/index.mjs';
|
|
71
|
+
// ------------------------------------------------------------------
|
|
72
|
+
// Namespace
|
|
73
|
+
// ------------------------------------------------------------------
|
|
65
74
|
export { Type, JsonTypeBuilder, JavaScriptTypeBuilder } from './type/type/index.mjs';
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
export declare namespace TypeSystemPolicy {
|
|
2
|
+
/** Shared assertion routines used by the value and errors modules */
|
|
3
|
+
/** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */
|
|
2
4
|
let ExactOptionalPropertyTypes: boolean;
|
|
5
|
+
/** Sets whether arrays should be treated as a kind of objects. The default is `false` */
|
|
3
6
|
let AllowArrayObject: boolean;
|
|
7
|
+
/** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */
|
|
4
8
|
let AllowNaN: boolean;
|
|
9
|
+
/** Sets whether `null` should validate for void types. The default is `false` */
|
|
5
10
|
let AllowNullVoid: boolean;
|
|
11
|
+
/** Asserts this value using the ExactOptionalPropertyTypes policy */
|
|
6
12
|
function IsExactOptionalProperty(value: Record<keyof any, unknown>, key: string): boolean;
|
|
13
|
+
/** Asserts this value using the AllowArrayObjects policy */
|
|
7
14
|
function IsObjectLike(value: unknown): value is Record<keyof any, unknown>;
|
|
15
|
+
/** Asserts this value as a record using the AllowArrayObjects policy */
|
|
8
16
|
function IsRecordLike(value: unknown): value is Record<keyof any, unknown>;
|
|
17
|
+
/** Asserts this value using the AllowNaN policy */
|
|
9
18
|
function IsNumberLike(value: unknown): value is number;
|
|
19
|
+
/** Asserts this value using the AllowVoidNull policy */
|
|
10
20
|
function IsVoidLike(value: unknown): value is void;
|
|
11
21
|
}
|
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';
|
|
2
2
|
export var TypeSystemPolicy;
|
|
3
3
|
(function (TypeSystemPolicy) {
|
|
4
|
+
// ------------------------------------------------------------------
|
|
5
|
+
// TypeSystemPolicy
|
|
6
|
+
// ------------------------------------------------------------------
|
|
7
|
+
/** Shared assertion routines used by the value and errors modules */
|
|
8
|
+
/** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */
|
|
4
9
|
TypeSystemPolicy.ExactOptionalPropertyTypes = false;
|
|
10
|
+
/** Sets whether arrays should be treated as a kind of objects. The default is `false` */
|
|
5
11
|
TypeSystemPolicy.AllowArrayObject = false;
|
|
12
|
+
/** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */
|
|
6
13
|
TypeSystemPolicy.AllowNaN = false;
|
|
14
|
+
/** Sets whether `null` should validate for void types. The default is `false` */
|
|
7
15
|
TypeSystemPolicy.AllowNullVoid = false;
|
|
16
|
+
/** Asserts this value using the ExactOptionalPropertyTypes policy */
|
|
8
17
|
function IsExactOptionalProperty(value, key) {
|
|
9
18
|
return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;
|
|
10
19
|
}
|
|
11
20
|
TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;
|
|
21
|
+
/** Asserts this value using the AllowArrayObjects policy */
|
|
12
22
|
function IsObjectLike(value) {
|
|
13
23
|
const isObject = IsObject(value);
|
|
14
24
|
return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);
|
|
15
25
|
}
|
|
16
26
|
TypeSystemPolicy.IsObjectLike = IsObjectLike;
|
|
27
|
+
/** Asserts this value as a record using the AllowArrayObjects policy */
|
|
17
28
|
function IsRecordLike(value) {
|
|
18
29
|
return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);
|
|
19
30
|
}
|
|
20
31
|
TypeSystemPolicy.IsRecordLike = IsRecordLike;
|
|
32
|
+
/** Asserts this value using the AllowNaN policy */
|
|
21
33
|
function IsNumberLike(value) {
|
|
22
34
|
const isNumber = IsNumber(value);
|
|
23
35
|
return TypeSystemPolicy.AllowNaN ? isNumber : isNumber && Number.isFinite(value);
|
|
24
36
|
}
|
|
25
37
|
TypeSystemPolicy.IsNumberLike = IsNumberLike;
|
|
38
|
+
/** Asserts this value using the AllowVoidNull policy */
|
|
26
39
|
function IsVoidLike(value) {
|
|
27
40
|
const isUndefined = IsUndefined(value);
|
|
28
41
|
return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;
|
|
@@ -4,7 +4,10 @@ export declare class TypeSystemDuplicateTypeKind extends Error {
|
|
|
4
4
|
export declare class TypeSystemDuplicateFormat extends Error {
|
|
5
5
|
constructor(kind: string);
|
|
6
6
|
}
|
|
7
|
+
/** Creates user defined types and formats and provides overrides for value checking behaviours */
|
|
7
8
|
export declare namespace TypeSystem {
|
|
9
|
+
/** Creates a new type */
|
|
8
10
|
function Type<Type, Options = Record<PropertyKey, unknown>>(kind: string, check: (options: Options, value: unknown) => boolean): (options?: Partial<Options>) => import("../type/unsafe/unsafe.mjs").TUnsafe<Type>;
|
|
11
|
+
/** Creates a new string format */
|
|
9
12
|
function Format<F extends string>(format: F, check: (value: string) => boolean): F;
|
|
10
13
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';
|
|
2
2
|
import { Unsafe } from '../type/unsafe/index.mjs';
|
|
3
3
|
import { Kind } from '../type/symbols/index.mjs';
|
|
4
|
+
// ------------------------------------------------------------------
|
|
5
|
+
// Errors
|
|
6
|
+
// ------------------------------------------------------------------
|
|
4
7
|
export class TypeSystemDuplicateTypeKind extends Error {
|
|
5
8
|
constructor(kind) {
|
|
6
9
|
super(`Duplicate type kind '${kind}' detected`);
|
|
@@ -11,8 +14,13 @@ export class TypeSystemDuplicateFormat extends Error {
|
|
|
11
14
|
super(`Duplicate string format '${kind}' detected`);
|
|
12
15
|
}
|
|
13
16
|
}
|
|
17
|
+
// ------------------------------------------------------------------
|
|
18
|
+
// TypeSystem
|
|
19
|
+
// ------------------------------------------------------------------
|
|
20
|
+
/** Creates user defined types and formats and provides overrides for value checking behaviours */
|
|
14
21
|
export var TypeSystem;
|
|
15
22
|
(function (TypeSystem) {
|
|
23
|
+
/** Creates a new type */
|
|
16
24
|
function Type(kind, check) {
|
|
17
25
|
if (TypeRegistry.Has(kind))
|
|
18
26
|
throw new TypeSystemDuplicateTypeKind(kind);
|
|
@@ -20,6 +28,7 @@ export var TypeSystem;
|
|
|
20
28
|
return (options = {}) => Unsafe({ ...options, [Kind]: kind });
|
|
21
29
|
}
|
|
22
30
|
TypeSystem.Type = Type;
|
|
31
|
+
/** Creates a new string format */
|
|
23
32
|
function Format(format, check) {
|
|
24
33
|
if (FormatRegistry.Has(format))
|
|
25
34
|
throw new TypeSystemDuplicateFormat(format);
|
|
@@ -2,11 +2,17 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import type { Static } from '../static/index.mjs';
|
|
3
3
|
import { Kind } from '../symbols/index.mjs';
|
|
4
4
|
export interface ArrayOptions extends SchemaOptions {
|
|
5
|
+
/** The minimum number of items in this array */
|
|
5
6
|
minItems?: number;
|
|
7
|
+
/** The maximum number of items in this array */
|
|
6
8
|
maxItems?: number;
|
|
9
|
+
/** Should this schema contain unique items */
|
|
7
10
|
uniqueItems?: boolean;
|
|
11
|
+
/** A schema for which some elements should match */
|
|
8
12
|
contains?: TSchema;
|
|
13
|
+
/** A minimum number of contains schema matches */
|
|
9
14
|
minContains?: number;
|
|
15
|
+
/** A maximum number of contains schema matches */
|
|
10
16
|
maxContains?: number;
|
|
11
17
|
}
|
|
12
18
|
export interface TArray<T extends TSchema = TSchema> extends TSchema, ArrayOptions {
|
|
@@ -15,4 +21,5 @@ export interface TArray<T extends TSchema = TSchema> extends TSchema, ArrayOptio
|
|
|
15
21
|
type: 'array';
|
|
16
22
|
items: T;
|
|
17
23
|
}
|
|
24
|
+
/** `[Json]` Creates an Array type */
|
|
18
25
|
export declare function Array<T extends TSchema>(schema: T, options?: ArrayOptions): TArray<T>;
|
|
@@ -7,4 +7,5 @@ export interface TAsyncIterator<T extends TSchema = TSchema> extends TSchema {
|
|
|
7
7
|
type: 'AsyncIterator';
|
|
8
8
|
items: T;
|
|
9
9
|
}
|
|
10
|
+
/** `[JavaScript]` Creates a AsyncIterator type */
|
|
10
11
|
export declare function AsyncIterator<T extends TSchema>(items: T, options?: SchemaOptions): TAsyncIterator<T>;
|
|
@@ -2,10 +2,11 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import { type TIntersect } from '../intersect/index.mjs';
|
|
3
3
|
import { type TUnion } from '../union/index.mjs';
|
|
4
4
|
import { type TPromise } from '../promise/index.mjs';
|
|
5
|
-
type
|
|
6
|
-
declare function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export type TAwaited<T extends TSchema> =
|
|
10
|
-
|
|
5
|
+
type FromRest<T extends TSchema[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [FromSchema<L>, ...FromRest<R>] : [];
|
|
6
|
+
declare function FromRest<T extends TSchema[]>(T: [...T]): FromRest<T>;
|
|
7
|
+
type FromSchema<T extends TSchema> = T extends TIntersect<infer S> ? TIntersect<FromRest<S>> : T extends TUnion<infer S> ? TUnion<FromRest<S>> : T extends TPromise<infer S> ? FromSchema<S> : T;
|
|
8
|
+
declare function FromSchema<T extends TSchema>(T: T): FromSchema<T>;
|
|
9
|
+
export type TAwaited<T extends TSchema> = (FromSchema<T>);
|
|
10
|
+
/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */
|
|
11
|
+
export declare function Awaited<T extends TSchema>(T: T, options?: SchemaOptions): FromSchema<T>;
|
|
11
12
|
export {};
|
|
@@ -1,28 +1,38 @@
|
|
|
1
1
|
import { Intersect } from '../intersect/index.mjs';
|
|
2
2
|
import { Union } from '../union/index.mjs';
|
|
3
3
|
import { CloneType } from '../clone/type.mjs';
|
|
4
|
+
// ------------------------------------------------------------------
|
|
5
|
+
// TypeGuard
|
|
6
|
+
// ------------------------------------------------------------------
|
|
7
|
+
// prettier-ignore
|
|
4
8
|
import { TIntersect as IsIntersectType, TUnion as IsUnionType, TPromise as IsPromiseType } from '../guard/type.mjs';
|
|
5
|
-
|
|
9
|
+
// prettier-ignore
|
|
10
|
+
function FromRest(T) {
|
|
6
11
|
const [L, ...R] = T;
|
|
7
12
|
return (T.length > 0
|
|
8
|
-
? [
|
|
13
|
+
? [FromSchema(L), ...FromRest(R)]
|
|
9
14
|
: []);
|
|
10
15
|
}
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
// prettier-ignore
|
|
17
|
+
function FromIntersect(T) {
|
|
18
|
+
return Intersect(FromRest(T));
|
|
13
19
|
}
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
// prettier-ignore
|
|
21
|
+
function FromUnion(T) {
|
|
22
|
+
return Union(FromRest(T));
|
|
16
23
|
}
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
// prettier-ignore
|
|
25
|
+
function FromPromise(T) {
|
|
26
|
+
return FromSchema(T);
|
|
19
27
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
// prettier-ignore
|
|
29
|
+
function FromSchema(T) {
|
|
30
|
+
return (IsIntersectType(T) ? FromIntersect(T.allOf) :
|
|
31
|
+
IsUnionType(T) ? FromUnion(T.anyOf) :
|
|
32
|
+
IsPromiseType(T) ? FromPromise(T.item) :
|
|
24
33
|
T);
|
|
25
34
|
}
|
|
35
|
+
/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */
|
|
26
36
|
export function Awaited(T, options = {}) {
|
|
27
|
-
return CloneType(
|
|
37
|
+
return CloneType(FromSchema(T), options);
|
|
28
38
|
}
|