@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
|
@@ -39,136 +39,190 @@ import { Tuple } from '../tuple/index.mjs';
|
|
|
39
39
|
import { Union } from '../union/index.mjs';
|
|
40
40
|
import { Unknown } from '../unknown/index.mjs';
|
|
41
41
|
import { Unsafe } from '../unsafe/index.mjs';
|
|
42
|
+
/** Json Type Builder with Static Resolution for TypeScript */
|
|
42
43
|
export class JsonTypeBuilder {
|
|
44
|
+
// ------------------------------------------------------------------------
|
|
45
|
+
// Strict
|
|
46
|
+
// ------------------------------------------------------------------------
|
|
47
|
+
/** `[Json]` Omits compositing symbols from this schema */
|
|
43
48
|
Strict(schema) {
|
|
44
49
|
return Strict(schema);
|
|
45
50
|
}
|
|
51
|
+
// ------------------------------------------------------------------------
|
|
52
|
+
// Modifiers
|
|
53
|
+
// ------------------------------------------------------------------------
|
|
54
|
+
/** `[Json]` Creates a Readonly and Optional property */
|
|
46
55
|
ReadonlyOptional(schema) {
|
|
47
56
|
return ReadonlyOptional(schema);
|
|
48
57
|
}
|
|
58
|
+
/** `[Json]` Creates a Readonly property */
|
|
49
59
|
Readonly(schema) {
|
|
50
60
|
return Readonly(schema);
|
|
51
61
|
}
|
|
62
|
+
/** `[Json]` Creates an Optional property */
|
|
52
63
|
Optional(schema) {
|
|
53
64
|
return Optional(schema);
|
|
54
65
|
}
|
|
66
|
+
// ------------------------------------------------------------------------
|
|
67
|
+
// Types
|
|
68
|
+
// ------------------------------------------------------------------------
|
|
69
|
+
/** `[Json]` Creates an Any type */
|
|
55
70
|
Any(options = {}) {
|
|
56
71
|
return Any(options);
|
|
57
72
|
}
|
|
73
|
+
/** `[Json]` Creates an Array type */
|
|
58
74
|
Array(schema, options = {}) {
|
|
59
75
|
return Array(schema, options);
|
|
60
76
|
}
|
|
77
|
+
/** `[Json]` Creates a Boolean type */
|
|
61
78
|
Boolean(options = {}) {
|
|
62
79
|
return Boolean(options);
|
|
63
80
|
}
|
|
81
|
+
/** `[Json]` Intrinsic function to Capitalize LiteralString types */
|
|
64
82
|
Capitalize(schema, options = {}) {
|
|
65
83
|
return Capitalize(schema, options);
|
|
66
84
|
}
|
|
85
|
+
/** `[Json]` Creates a Composite object type */
|
|
67
86
|
Composite(objects, options) {
|
|
68
|
-
return Composite(objects, options);
|
|
87
|
+
return Composite(objects, options); // (error) TS 5.4.0-dev - review TComposite implementation
|
|
69
88
|
}
|
|
89
|
+
/** `[JavaScript]` Creates a readonly const type from the given value. */
|
|
70
90
|
Const(value, options = {}) {
|
|
71
91
|
return Const(value, options);
|
|
72
92
|
}
|
|
93
|
+
/** `[Json]` Creates a dereferenced type */
|
|
73
94
|
Deref(schema, references) {
|
|
74
95
|
return Deref(schema, references);
|
|
75
96
|
}
|
|
97
|
+
/** `[Json]` Creates a Enum type */
|
|
76
98
|
Enum(item, options = {}) {
|
|
77
99
|
return Enum(item, options);
|
|
78
100
|
}
|
|
101
|
+
/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */
|
|
79
102
|
Exclude(unionType, excludedMembers, options = {}) {
|
|
80
103
|
return Exclude(unionType, excludedMembers, options);
|
|
81
104
|
}
|
|
105
|
+
/** `[Json]` Creates a Conditional type */
|
|
82
106
|
Extends(L, R, T, F, options = {}) {
|
|
83
107
|
return Extends(L, R, T, F, options);
|
|
84
108
|
}
|
|
109
|
+
/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */
|
|
85
110
|
Extract(type, union, options = {}) {
|
|
86
111
|
return Extract(type, union, options);
|
|
87
112
|
}
|
|
113
|
+
/** `[Json]` Returns an Indexed property type for the given keys */
|
|
88
114
|
Index(schema, unresolved, options = {}) {
|
|
89
115
|
return Index(schema, unresolved, options);
|
|
90
116
|
}
|
|
117
|
+
/** `[Json]` Creates an Integer type */
|
|
91
118
|
Integer(options = {}) {
|
|
92
119
|
return Integer(options);
|
|
93
120
|
}
|
|
121
|
+
/** `[Json]` Creates an Intersect type */
|
|
94
122
|
Intersect(T, options = {}) {
|
|
95
123
|
return Intersect(T, options);
|
|
96
124
|
}
|
|
125
|
+
/** `[Json]` Creates a KeyOf type */
|
|
97
126
|
KeyOf(schema, options = {}) {
|
|
98
127
|
return KeyOf(schema, options);
|
|
99
128
|
}
|
|
129
|
+
/** `[Json]` Creates a Literal type */
|
|
100
130
|
Literal(value, options = {}) {
|
|
101
131
|
return Literal(value, options);
|
|
102
132
|
}
|
|
133
|
+
/** `[Json]` Intrinsic function to Lowercase LiteralString types */
|
|
103
134
|
Lowercase(schema, options = {}) {
|
|
104
135
|
return Lowercase(schema, options);
|
|
105
136
|
}
|
|
137
|
+
/** `[Json]` Creates a Mapped object type */
|
|
106
138
|
Mapped(key, map, options = {}) {
|
|
107
139
|
return Mapped(key, map, options);
|
|
108
140
|
}
|
|
141
|
+
/** `[Json]` Creates a Never type */
|
|
109
142
|
Never(options = {}) {
|
|
110
143
|
return Never(options);
|
|
111
144
|
}
|
|
145
|
+
/** `[Json]` Creates a Not type */
|
|
112
146
|
Not(schema, options) {
|
|
113
147
|
return Not(schema, options);
|
|
114
148
|
}
|
|
149
|
+
/** `[Json]` Creates a Null type */
|
|
115
150
|
Null(options = {}) {
|
|
116
151
|
return Null(options);
|
|
117
152
|
}
|
|
153
|
+
/** `[Json]` Creates a Number type */
|
|
118
154
|
Number(options = {}) {
|
|
119
155
|
return Number(options);
|
|
120
156
|
}
|
|
157
|
+
/** `[Json]` Creates an Object type */
|
|
121
158
|
Object(properties, options = {}) {
|
|
122
159
|
return Object(properties, options);
|
|
123
160
|
}
|
|
161
|
+
/** `[Json]` Constructs a type whose keys are omitted from the given type */
|
|
124
162
|
Omit(schema, unresolved, options = {}) {
|
|
125
163
|
return Omit(schema, unresolved, options);
|
|
126
164
|
}
|
|
165
|
+
/** `[Json]` Constructs a type where all properties are optional */
|
|
127
166
|
Partial(schema, options = {}) {
|
|
128
167
|
return Partial(schema, options);
|
|
129
168
|
}
|
|
169
|
+
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
130
170
|
Pick(schema, unresolved, options = {}) {
|
|
131
171
|
return Pick(schema, unresolved, options);
|
|
132
172
|
}
|
|
173
|
+
/** `[Json]` Creates a Record type */
|
|
133
174
|
Record(key, schema, options = {}) {
|
|
134
175
|
return Record(key, schema);
|
|
135
176
|
}
|
|
177
|
+
/** `[Json]` Creates a Recursive type */
|
|
136
178
|
Recursive(callback, options = {}) {
|
|
137
179
|
return Recursive(callback, options);
|
|
138
180
|
}
|
|
181
|
+
/** `[Json]` Creates a Ref type. */
|
|
139
182
|
Ref(unresolved, options = {}) {
|
|
140
183
|
return Ref(unresolved, options);
|
|
141
184
|
}
|
|
185
|
+
/** `[Json]` Constructs a type where all properties are required */
|
|
142
186
|
Required(schema, options = {}) {
|
|
143
187
|
return Required(schema, options);
|
|
144
188
|
}
|
|
189
|
+
/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */
|
|
145
190
|
Rest(schema) {
|
|
146
191
|
return Rest(schema);
|
|
147
192
|
}
|
|
193
|
+
/** `[Json]` Creates a String type */
|
|
148
194
|
String(options = {}) {
|
|
149
195
|
return String(options);
|
|
150
196
|
}
|
|
197
|
+
/** `[Json]` Creates a TemplateLiteral type */
|
|
151
198
|
TemplateLiteral(unresolved, options = {}) {
|
|
152
199
|
return TemplateLiteral(unresolved, options);
|
|
153
200
|
}
|
|
201
|
+
/** `[Json]` Creates a Transform type */
|
|
154
202
|
Transform(schema) {
|
|
155
203
|
return Transform(schema);
|
|
156
204
|
}
|
|
205
|
+
/** `[Json]` Creates a Tuple type */
|
|
157
206
|
Tuple(items, options = {}) {
|
|
158
207
|
return Tuple(items, options);
|
|
159
208
|
}
|
|
209
|
+
/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */
|
|
160
210
|
Uncapitalize(schema, options = {}) {
|
|
161
211
|
return Uncapitalize(schema, options);
|
|
162
212
|
}
|
|
213
|
+
/** `[Json]` Creates a Union type */
|
|
163
214
|
Union(schemas, options = {}) {
|
|
164
215
|
return Union(schemas, options);
|
|
165
216
|
}
|
|
217
|
+
/** `[Json]` Creates an Unknown type */
|
|
166
218
|
Unknown(options = {}) {
|
|
167
219
|
return Unknown(options);
|
|
168
220
|
}
|
|
221
|
+
/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */
|
|
169
222
|
Unsafe(options = {}) {
|
|
170
223
|
return Unsafe(options);
|
|
171
224
|
}
|
|
225
|
+
/** `[Json]` Intrinsic function to Uppercase LiteralString types */
|
|
172
226
|
Uppercase(schema, options = {}) {
|
|
173
227
|
return Uppercase(schema, options);
|
|
174
228
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// ------------------------------------------------------------------
|
|
2
|
+
// Type: Module
|
|
3
|
+
// ------------------------------------------------------------------
|
|
1
4
|
export { Any } from '../any/index.mjs';
|
|
2
5
|
export { Array } from '../array/index.mjs';
|
|
3
6
|
export { AsyncIterator } from '../async-iterator/index.mjs';
|
|
@@ -12,5 +12,6 @@ declare function RemoveOptionalFromType<T extends TSchema>(T: T): RemoveOptional
|
|
|
12
12
|
type ResolveUnion<T extends TSchema[], R extends TSchema[] = RemoveOptionalFromRest<T>> = (IsUnionOptional<T> extends true ? TOptional<TUnion<R>> : TUnion<R>);
|
|
13
13
|
declare function ResolveUnion<T extends TSchema[]>(T: T, options: SchemaOptions): ResolveUnion<T>;
|
|
14
14
|
export type UnionEvaluated<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : ResolveUnion<T>);
|
|
15
|
+
/** `[Json]` Creates an evaluated Union type */
|
|
15
16
|
export declare function UnionEvaluated<T extends TSchema[], R = UnionEvaluated<T>>(T: [...T], options?: SchemaOptions): R;
|
|
16
17
|
export {};
|
|
@@ -4,7 +4,12 @@ import { Discard } from '../discard/index.mjs';
|
|
|
4
4
|
import { Never } from '../never/index.mjs';
|
|
5
5
|
import { Optional } from '../optional/index.mjs';
|
|
6
6
|
import { UnionCreate } from './union-create.mjs';
|
|
7
|
+
// ------------------------------------------------------------------
|
|
8
|
+
// TypeGuard
|
|
9
|
+
// ------------------------------------------------------------------
|
|
10
|
+
// prettier-ignore
|
|
7
11
|
import { TOptional as IsOptionalType } from '../guard/type.mjs';
|
|
12
|
+
// prettier-ignore
|
|
8
13
|
function IsUnionOptional(T) {
|
|
9
14
|
const [L, ...R] = T;
|
|
10
15
|
return (T.length > 0
|
|
@@ -13,18 +18,23 @@ function IsUnionOptional(T) {
|
|
|
13
18
|
: IsUnionOptional(R)
|
|
14
19
|
: false);
|
|
15
20
|
}
|
|
21
|
+
// prettier-ignore
|
|
16
22
|
function RemoveOptionalFromRest(T) {
|
|
17
23
|
return (T.map(T => RemoveOptionalFromType(T)));
|
|
18
24
|
}
|
|
25
|
+
// prettier-ignore
|
|
19
26
|
function RemoveOptionalFromType(T) {
|
|
20
27
|
return (Discard(T, [OptionalKind]));
|
|
21
28
|
}
|
|
29
|
+
// prettier-ignore
|
|
22
30
|
function ResolveUnion(T, options) {
|
|
23
31
|
return (IsUnionOptional(T)
|
|
24
32
|
? Optional(UnionCreate(RemoveOptionalFromRest(T), options))
|
|
25
33
|
: UnionCreate(RemoveOptionalFromRest(T), options));
|
|
26
34
|
}
|
|
35
|
+
/** `[Json]` Creates an evaluated Union type */
|
|
27
36
|
export function UnionEvaluated(T, options = {}) {
|
|
37
|
+
// prettier-ignore
|
|
28
38
|
return (T.length === 0 ? Never(options) :
|
|
29
39
|
T.length === 1 ? CloneType(T[0], options) :
|
|
30
40
|
ResolveUnion(T, options));
|
|
@@ -2,4 +2,5 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import { type TNever } from '../never/index.mjs';
|
|
3
3
|
import type { TUnion } from './union-type.mjs';
|
|
4
4
|
export type Union<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : TUnion<T>);
|
|
5
|
+
/** `[Json]` Creates a Union type */
|
|
5
6
|
export declare function Union<T extends TSchema[]>(T: [...T], options?: SchemaOptions): Union<T>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Never } from '../never/index.mjs';
|
|
2
2
|
import { CloneType } from '../clone/type.mjs';
|
|
3
3
|
import { UnionCreate } from './union-create.mjs';
|
|
4
|
+
/** `[Json]` Creates a Union type */
|
|
4
5
|
export function Union(T, options = {}) {
|
|
6
|
+
// prettier-ignore
|
|
5
7
|
return (T.length === 0 ? Never(options) :
|
|
6
8
|
T.length === 1 ? CloneType(T[0], options) :
|
|
7
9
|
UnionCreate(T, options));
|
|
@@ -17,5 +17,7 @@ export declare class ValueCastUnknownTypeError extends Error {
|
|
|
17
17
|
readonly schema: TSchema;
|
|
18
18
|
constructor(schema: TSchema);
|
|
19
19
|
}
|
|
20
|
+
/** Casts a value into a given type and references. The return value will retain as much information of the original value as possible. */
|
|
20
21
|
export declare function Cast<T extends TSchema>(schema: T, references: TSchema[], value: unknown): Static<T>;
|
|
22
|
+
/** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
|
|
21
23
|
export declare function Cast<T extends TSchema>(schema: T, value: unknown): Static<T>;
|
|
@@ -4,6 +4,9 @@ import { Create } from '../create/index.mjs';
|
|
|
4
4
|
import { Check } from '../check/index.mjs';
|
|
5
5
|
import { Clone } from '../clone/index.mjs';
|
|
6
6
|
import { Deref } from '../deref/index.mjs';
|
|
7
|
+
// ------------------------------------------------------------------
|
|
8
|
+
// Errors
|
|
9
|
+
// ------------------------------------------------------------------
|
|
7
10
|
export class ValueCastArrayUniqueItemsTypeError extends Error {
|
|
8
11
|
schema;
|
|
9
12
|
value;
|
|
@@ -34,6 +37,14 @@ export class ValueCastUnknownTypeError extends Error {
|
|
|
34
37
|
this.schema = schema;
|
|
35
38
|
}
|
|
36
39
|
}
|
|
40
|
+
// ------------------------------------------------------------------
|
|
41
|
+
// The following will score a schema against a value. For objects,
|
|
42
|
+
// the score is the tally of points awarded for each property of
|
|
43
|
+
// the value. Property points are (1.0 / propertyCount) to prevent
|
|
44
|
+
// large property counts biasing results. Properties that match
|
|
45
|
+
// literal values are maximally awarded as literals are typically
|
|
46
|
+
// used as union discriminator fields.
|
|
47
|
+
// ------------------------------------------------------------------
|
|
37
48
|
function ScoreUnion(schema, references, value) {
|
|
38
49
|
if (schema[Kind] === 'Object' && typeof value === 'object' && !IsNull(value)) {
|
|
39
50
|
const object = schema;
|
|
@@ -71,12 +82,18 @@ function CastUnion(union, references, value) {
|
|
|
71
82
|
return Cast(schema, references, value);
|
|
72
83
|
}
|
|
73
84
|
}
|
|
85
|
+
// ------------------------------------------------------------------
|
|
86
|
+
// Default
|
|
87
|
+
// ------------------------------------------------------------------
|
|
74
88
|
function DefaultClone(schema, references, value) {
|
|
75
89
|
return Check(schema, references, value) ? Clone(value) : Create(schema, references);
|
|
76
90
|
}
|
|
77
91
|
function Default(schema, references, value) {
|
|
78
92
|
return Check(schema, references, value) ? value : Create(schema, references);
|
|
79
93
|
}
|
|
94
|
+
// ------------------------------------------------------------------
|
|
95
|
+
// Cast
|
|
96
|
+
// ------------------------------------------------------------------
|
|
80
97
|
function TArray(schema, references, value) {
|
|
81
98
|
if (Check(schema, references, value))
|
|
82
99
|
return Clone(value);
|
|
@@ -123,6 +140,7 @@ function TObject(schema, references, value) {
|
|
|
123
140
|
continue;
|
|
124
141
|
result[key] = Visit(property, references, value[key]);
|
|
125
142
|
}
|
|
143
|
+
// additional schema properties
|
|
126
144
|
if (typeof schema.additionalProperties === 'object') {
|
|
127
145
|
const propertyNames = Object.getOwnPropertyNames(schema.properties);
|
|
128
146
|
for (const propertyName of Object.getOwnPropertyNames(value)) {
|
|
@@ -168,6 +186,9 @@ function Visit(schema, references, value) {
|
|
|
168
186
|
const references_ = IsString(schema.$id) ? [...references, schema] : references;
|
|
169
187
|
const schema_ = schema;
|
|
170
188
|
switch (schema[Kind]) {
|
|
189
|
+
// --------------------------------------------------------------
|
|
190
|
+
// Structural
|
|
191
|
+
// --------------------------------------------------------------
|
|
171
192
|
case 'Array':
|
|
172
193
|
return TArray(schema_, references_, value);
|
|
173
194
|
case 'Constructor':
|
|
@@ -188,14 +209,21 @@ function Visit(schema, references, value) {
|
|
|
188
209
|
return TTuple(schema_, references_, value);
|
|
189
210
|
case 'Union':
|
|
190
211
|
return TUnion(schema_, references_, value);
|
|
212
|
+
// --------------------------------------------------------------
|
|
213
|
+
// DefaultClone
|
|
214
|
+
// --------------------------------------------------------------
|
|
191
215
|
case 'Date':
|
|
192
216
|
case 'Symbol':
|
|
193
217
|
case 'Uint8Array':
|
|
194
218
|
return DefaultClone(schema, references, value);
|
|
219
|
+
// --------------------------------------------------------------
|
|
220
|
+
// Default
|
|
221
|
+
// --------------------------------------------------------------
|
|
195
222
|
default:
|
|
196
223
|
return Default(schema_, references_, value);
|
|
197
224
|
}
|
|
198
225
|
}
|
|
226
|
+
/** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
|
|
199
227
|
export function Cast(...args) {
|
|
200
228
|
return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
|
|
201
229
|
}
|
|
@@ -4,5 +4,7 @@ export declare class ValueCheckUnknownTypeError extends Error {
|
|
|
4
4
|
readonly schema: TSchema;
|
|
5
5
|
constructor(schema: TSchema);
|
|
6
6
|
}
|
|
7
|
+
/** Returns true if the value matches the given type. */
|
|
7
8
|
export declare function Check<T extends TSchema>(schema: T, references: TSchema[], value: unknown): value is Static<T>;
|
|
9
|
+
/** Returns true if the value matches the given type. */
|
|
8
10
|
export declare function Check<T extends TSchema>(schema: T, value: unknown): value is Static<T>;
|
|
@@ -8,6 +8,9 @@ import { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';
|
|
|
8
8
|
import { TSchema as IsSchemaType } from '../../type/guard/type.mjs';
|
|
9
9
|
import { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';
|
|
10
10
|
import { Never } from '../../type/never/index.mjs';
|
|
11
|
+
// --------------------------------------------------------------------------
|
|
12
|
+
// Errors
|
|
13
|
+
// --------------------------------------------------------------------------
|
|
11
14
|
export class ValueCheckUnknownTypeError extends Error {
|
|
12
15
|
schema;
|
|
13
16
|
constructor(schema) {
|
|
@@ -15,12 +18,21 @@ export class ValueCheckUnknownTypeError extends Error {
|
|
|
15
18
|
this.schema = schema;
|
|
16
19
|
}
|
|
17
20
|
}
|
|
21
|
+
// --------------------------------------------------------------------------
|
|
22
|
+
// TypeGuards
|
|
23
|
+
// --------------------------------------------------------------------------
|
|
18
24
|
function IsAnyOrUnknown(schema) {
|
|
19
25
|
return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';
|
|
20
26
|
}
|
|
27
|
+
// --------------------------------------------------------------------------
|
|
28
|
+
// Guards
|
|
29
|
+
// --------------------------------------------------------------------------
|
|
21
30
|
function IsDefined(value) {
|
|
22
31
|
return value !== undefined;
|
|
23
32
|
}
|
|
33
|
+
// --------------------------------------------------------------------------
|
|
34
|
+
// Types
|
|
35
|
+
// --------------------------------------------------------------------------
|
|
24
36
|
function TAny(schema, references, value) {
|
|
25
37
|
return true;
|
|
26
38
|
}
|
|
@@ -36,6 +48,7 @@ function TArray(schema, references, value) {
|
|
|
36
48
|
if (!value.every((value) => Visit(schema.items, references, value))) {
|
|
37
49
|
return false;
|
|
38
50
|
}
|
|
51
|
+
// prettier-ignore
|
|
39
52
|
if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {
|
|
40
53
|
const hashed = Hash(element);
|
|
41
54
|
if (set.has(hashed)) {
|
|
@@ -47,8 +60,9 @@ function TArray(schema, references, value) {
|
|
|
47
60
|
} return true; })())) {
|
|
48
61
|
return false;
|
|
49
62
|
}
|
|
63
|
+
// contains
|
|
50
64
|
if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {
|
|
51
|
-
return true;
|
|
65
|
+
return true; // exit
|
|
52
66
|
}
|
|
53
67
|
const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();
|
|
54
68
|
const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);
|
|
@@ -215,6 +229,7 @@ function TObject(schema, references, value) {
|
|
|
215
229
|
}
|
|
216
230
|
if (schema.additionalProperties === false) {
|
|
217
231
|
const valueKeys = Object.getOwnPropertyNames(value);
|
|
232
|
+
// optimization: value is valid if schemaKey length matches the valueKey length
|
|
218
233
|
if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {
|
|
219
234
|
return true;
|
|
220
235
|
}
|
|
@@ -245,9 +260,11 @@ function TRecord(schema, references, value) {
|
|
|
245
260
|
}
|
|
246
261
|
const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];
|
|
247
262
|
const regex = new RegExp(patternKey);
|
|
263
|
+
// prettier-ignore
|
|
248
264
|
const check1 = Object.entries(value).every(([key, value]) => {
|
|
249
265
|
return (regex.test(key)) ? Visit(patternSchema, references, value) : true;
|
|
250
266
|
});
|
|
267
|
+
// prettier-ignore
|
|
251
268
|
const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {
|
|
252
269
|
return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;
|
|
253
270
|
}) : true;
|
|
@@ -414,6 +431,7 @@ function Visit(schema, references, value) {
|
|
|
414
431
|
return TKind(schema_, references_, value);
|
|
415
432
|
}
|
|
416
433
|
}
|
|
434
|
+
/** Returns true if the value matches the given type. */
|
|
417
435
|
export function Check(...args) {
|
|
418
436
|
return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
|
|
419
437
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { TSchema } from '../../type/schema/index.mjs';
|
|
2
|
+
/** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */
|
|
2
3
|
export declare function Clean<T extends TSchema>(schema: T, references: TSchema[], value: unknown): unknown;
|
|
4
|
+
/** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */
|
|
3
5
|
export declare function Clean<T extends TSchema>(schema: T): unknown;
|
|
@@ -5,12 +5,21 @@ import { Check } from '../check/index.mjs';
|
|
|
5
5
|
import { Clone } from '../clone/index.mjs';
|
|
6
6
|
import { Deref } from '../deref/index.mjs';
|
|
7
7
|
import { Kind } from '../../type/symbols/index.mjs';
|
|
8
|
+
// ------------------------------------------------------------------
|
|
9
|
+
// IsSchema
|
|
10
|
+
// ------------------------------------------------------------------
|
|
8
11
|
function IsSchema(schema) {
|
|
9
12
|
return IsSchemaType(schema);
|
|
10
13
|
}
|
|
14
|
+
// ------------------------------------------------------------------
|
|
15
|
+
// IsCheckable
|
|
16
|
+
// ------------------------------------------------------------------
|
|
11
17
|
function IsCheckable(schema) {
|
|
12
18
|
return IsSchemaType(schema) && schema[Kind] !== 'Unsafe';
|
|
13
19
|
}
|
|
20
|
+
// ------------------------------------------------------------------
|
|
21
|
+
// Types
|
|
22
|
+
// ------------------------------------------------------------------
|
|
14
23
|
function TArray(schema, references, value) {
|
|
15
24
|
if (!IsArray(value))
|
|
16
25
|
return value;
|
|
@@ -34,7 +43,7 @@ function TIntersect(schema, references, value) {
|
|
|
34
43
|
}
|
|
35
44
|
function TObject(schema, references, value) {
|
|
36
45
|
if (!IsObject(value) || IsArray(value))
|
|
37
|
-
return value;
|
|
46
|
+
return value; // Check IsArray for AllowArrayObject configuration
|
|
38
47
|
const additionalProperties = schema.additionalProperties;
|
|
39
48
|
for (const key of Object.getOwnPropertyNames(value)) {
|
|
40
49
|
if (key in schema.properties) {
|
|
@@ -84,6 +93,7 @@ function TTuple(schema, references, value) {
|
|
|
84
93
|
for (let i = 0; i < length; i++) {
|
|
85
94
|
value[i] = Visit(schema.items[i], references, value[i]);
|
|
86
95
|
}
|
|
96
|
+
// prettier-ignore
|
|
87
97
|
return value.length > length
|
|
88
98
|
? value.slice(0, length)
|
|
89
99
|
: value;
|
|
@@ -120,6 +130,7 @@ function Visit(schema, references, value) {
|
|
|
120
130
|
return value;
|
|
121
131
|
}
|
|
122
132
|
}
|
|
133
|
+
/** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */
|
|
123
134
|
export function Clean(...args) {
|
|
124
135
|
return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
|
|
125
136
|
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { IsArray, IsDate, IsPlainObject, IsTypedArray, IsValueType } from '../guard/index.mjs';
|
|
2
|
+
// --------------------------------------------------------------------------
|
|
3
|
+
// Clonable
|
|
4
|
+
// --------------------------------------------------------------------------
|
|
2
5
|
function ObjectType(value) {
|
|
3
6
|
const keys = [...Object.getOwnPropertyNames(value), ...Object.getOwnPropertySymbols(value)];
|
|
4
7
|
return keys.reduce((acc, key) => ({ ...acc, [key]: Clone(value[key]) }), {});
|
|
@@ -15,6 +18,10 @@ function DateType(value) {
|
|
|
15
18
|
function ValueType(value) {
|
|
16
19
|
return value;
|
|
17
20
|
}
|
|
21
|
+
// --------------------------------------------------------------------------
|
|
22
|
+
// Clone
|
|
23
|
+
// --------------------------------------------------------------------------
|
|
24
|
+
/** Returns a clone of the given value */
|
|
18
25
|
export function Clone(value) {
|
|
19
26
|
if (IsArray(value))
|
|
20
27
|
return ArrayType(value);
|
|
@@ -3,5 +3,7 @@ export declare class ValueConvertUnknownTypeError extends Error {
|
|
|
3
3
|
readonly schema: TSchema;
|
|
4
4
|
constructor(schema: TSchema);
|
|
5
5
|
}
|
|
6
|
+
/** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
|
|
6
7
|
export declare function Convert<T extends TSchema>(schema: T, references: TSchema[], value: unknown): unknown;
|
|
8
|
+
/** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
|
|
7
9
|
export declare function Convert<T extends TSchema>(schema: T, value: unknown): unknown;
|