@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
|
@@ -1,9 +1,45 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type
|
|
1
|
+
import { type TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
2
|
+
import { type TObject, type TProperties } from '../object/index.mjs';
|
|
3
|
+
import { type Assert } from '../helpers/index.mjs';
|
|
4
|
+
import { type TNever } from '../never/index.mjs';
|
|
5
|
+
import { type TRecursive } from '../recursive/index.mjs';
|
|
6
|
+
import { type TIntersect } from '../intersect/index.mjs';
|
|
7
|
+
import { type TMappedKey } from '../mapped/index.mjs';
|
|
8
|
+
import { type TUnion } from '../union/index.mjs';
|
|
9
|
+
import { type TTuple } from '../tuple/index.mjs';
|
|
10
|
+
import { type TArray } from '../array/index.mjs';
|
|
11
|
+
import { IntersectEvaluated } from '../intersect/index.mjs';
|
|
12
|
+
import { UnionEvaluated } from '../union/index.mjs';
|
|
3
13
|
import { type TIndexPropertyKeys } from './indexed-property-keys.mjs';
|
|
4
14
|
import { type TIndexFromMappedKey } from './indexed-from-mapped-key.mjs';
|
|
5
|
-
|
|
6
|
-
|
|
15
|
+
type FromRest<T extends TSchema[], K extends PropertyKey> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [FromKey<L, K>, ...FromRest<R, K>] : []);
|
|
16
|
+
declare function FromRest<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromRest<T, K>;
|
|
17
|
+
type FromIntersectRest<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TNever ? [...FromIntersectRest<R>] : [L, ...FromIntersectRest<R>] : []);
|
|
18
|
+
declare function FromIntersectRest<T extends TSchema[]>(T: [...T]): FromIntersectRest<T>;
|
|
19
|
+
type FromIntersect<T extends TSchema[], K extends PropertyKey> = (IntersectEvaluated<FromIntersectRest<FromRest<T, K>>>);
|
|
20
|
+
declare function FromIntersect<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromIntersect<T, K>;
|
|
21
|
+
type FromUnionRest<T extends TSchema[], S = T> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TNever ? [] : FromUnionRest<R, S> : S);
|
|
22
|
+
declare function FromUnionRest<T extends TSchema[]>(T: [...T], S?: [...T]): FromUnionRest<T>;
|
|
23
|
+
type FromUnion<T extends TSchema[], K extends PropertyKey> = (UnionEvaluated<FromUnionRest<FromRest<T, K>>>);
|
|
24
|
+
declare function FromUnion<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromUnion<T, K>;
|
|
25
|
+
type FromTuple<T extends TSchema[], K extends PropertyKey> = (K extends keyof T ? T[K] : K extends '[number]' ? UnionEvaluated<T> : TNever);
|
|
26
|
+
declare function FromTuple<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromTuple<T, K>;
|
|
27
|
+
type FromArray<T extends TSchema, K extends PropertyKey> = (K extends '[number]' ? T : TNever);
|
|
28
|
+
declare function FromArray<T extends TSchema, K extends PropertyKey>(T: T, K: K): FromArray<T, K>;
|
|
29
|
+
type AssertPropertyKey<T> = Assert<T, string | number>;
|
|
30
|
+
type FromProperty<T extends TProperties, K extends PropertyKey> = (K extends keyof T ? T[K] : `${AssertPropertyKey<K>}` extends `${AssertPropertyKey<keyof T>}` ? T[AssertPropertyKey<K>] : TNever);
|
|
31
|
+
declare function FromProperty<T extends TProperties, K extends PropertyKey>(T: T, K: K): FromProperty<T, K>;
|
|
32
|
+
type FromKey<T extends TSchema, K extends PropertyKey> = (T extends TRecursive<infer S> ? FromKey<S, K> : T extends TIntersect<infer S> ? FromIntersect<S, K> : T extends TUnion<infer S> ? FromUnion<S, K> : T extends TTuple<infer S> ? FromTuple<S, K> : T extends TArray<infer S> ? FromArray<S, K> : T extends TObject<infer S> ? FromProperty<S, K> : TNever);
|
|
33
|
+
declare function FromKey<T extends TSchema, K extends PropertyKey>(T: T, K: K): FromKey<T, K>;
|
|
34
|
+
type FromKeys<T extends TSchema, K extends PropertyKey[]> = (K extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? [FromKey<T, L>, ...FromKeys<T, R>] : []);
|
|
35
|
+
declare function FromKeys<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): FromKeys<T, K>;
|
|
36
|
+
type FromSchema<T extends TSchema, K extends PropertyKey[]> = (UnionEvaluated<FromKeys<T, K>>);
|
|
37
|
+
declare function FromSchema<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): FromSchema<T, K>;
|
|
38
|
+
export type TIndex<T extends TSchema, K extends PropertyKey[]> = (FromSchema<T, K>);
|
|
39
|
+
/** `[Json]` Returns an Indexed property type for the given keys */
|
|
7
40
|
export declare function Index<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TIndexFromMappedKey<T, K>;
|
|
41
|
+
/** `[Json]` Returns an Indexed property type for the given keys */
|
|
8
42
|
export declare function Index<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TIndex<T, I>;
|
|
43
|
+
/** `[Json]` Returns an Indexed property type for the given keys */
|
|
9
44
|
export declare function Index<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TIndex<T, K>;
|
|
45
|
+
export {};
|
|
@@ -1,10 +1,89 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Never } from '../never/index.mjs';
|
|
2
|
+
import { IntersectEvaluated } from '../intersect/index.mjs';
|
|
3
|
+
import { UnionEvaluated } from '../union/index.mjs';
|
|
4
|
+
import { CloneType } from '../clone/type.mjs';
|
|
2
5
|
import { IndexPropertyKeys } from './indexed-property-keys.mjs';
|
|
3
6
|
import { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
// ------------------------------------------------------------------
|
|
8
|
+
// TypeGuard
|
|
9
|
+
// ------------------------------------------------------------------
|
|
10
|
+
// prettier-ignore
|
|
11
|
+
import { TArray as IsArrayType, TIntersect as IsIntersectType, TObject as IsObjectType, TMappedKey as IsMappedKey, TNever as IsNeverType, TSchema as IsSchemaType, TTuple as IsTupleType, TUnion as IsUnionType } from '../guard/type.mjs';
|
|
12
|
+
// prettier-ignore
|
|
13
|
+
function FromRest(T, K) {
|
|
14
|
+
const [L, ...R] = T;
|
|
15
|
+
return (T.length > 0
|
|
16
|
+
? [FromKey(L, K), ...FromRest(R, K)]
|
|
17
|
+
: []);
|
|
18
|
+
}
|
|
19
|
+
// prettier-ignore
|
|
20
|
+
function FromIntersectRest(T) {
|
|
21
|
+
const [L, ...R] = T;
|
|
22
|
+
return (T.length > 0
|
|
23
|
+
? IsNeverType(L)
|
|
24
|
+
? [...FromIntersectRest(R)]
|
|
25
|
+
: [L, ...FromIntersectRest(R)]
|
|
26
|
+
: []);
|
|
27
|
+
}
|
|
28
|
+
// prettier-ignore
|
|
29
|
+
function FromIntersect(T, K) {
|
|
30
|
+
return (IntersectEvaluated(FromIntersectRest(FromRest(T, K))));
|
|
31
|
+
}
|
|
32
|
+
// prettier-ignore
|
|
33
|
+
function FromUnionRest(T, S = T) {
|
|
34
|
+
const [L, ...R] = T;
|
|
35
|
+
return (T.length > 0
|
|
36
|
+
? IsNeverType(L)
|
|
37
|
+
? []
|
|
38
|
+
: FromUnionRest(R, S)
|
|
39
|
+
: S);
|
|
40
|
+
}
|
|
41
|
+
// prettier-ignore
|
|
42
|
+
function FromUnion(T, K) {
|
|
43
|
+
return (UnionEvaluated(FromUnionRest(FromRest(T, K))));
|
|
44
|
+
}
|
|
45
|
+
// prettier-ignore
|
|
46
|
+
function FromTuple(T, K) {
|
|
47
|
+
return (K in T ? T[K] :
|
|
48
|
+
K === '[number]' ? UnionEvaluated(T) :
|
|
49
|
+
Never());
|
|
50
|
+
}
|
|
51
|
+
// prettier-ignore
|
|
52
|
+
function FromArray(T, K) {
|
|
53
|
+
return (K === '[number]'
|
|
54
|
+
? T
|
|
55
|
+
: Never());
|
|
56
|
+
}
|
|
57
|
+
// prettier-ignore
|
|
58
|
+
function FromProperty(T, K) {
|
|
59
|
+
return (K in T
|
|
60
|
+
? T[K]
|
|
61
|
+
: Never());
|
|
62
|
+
}
|
|
63
|
+
// prettier-ignore
|
|
64
|
+
function FromKey(T, K) {
|
|
65
|
+
return (IsIntersectType(T) ? FromIntersect(T.allOf, K) :
|
|
66
|
+
IsUnionType(T) ? FromUnion(T.anyOf, K) :
|
|
67
|
+
IsTupleType(T) ? FromTuple(T.items ?? [], K) :
|
|
68
|
+
IsArrayType(T) ? FromArray(T.items, K) :
|
|
69
|
+
IsObjectType(T) ? FromProperty(T.properties, K) :
|
|
70
|
+
Never());
|
|
71
|
+
}
|
|
72
|
+
// prettier-ignore
|
|
73
|
+
function FromKeys(T, K) {
|
|
74
|
+
const [L, ...R] = K;
|
|
75
|
+
return (K.length > 0
|
|
76
|
+
? [FromKey(T, L), ...FromKeys(T, R)]
|
|
77
|
+
: []);
|
|
78
|
+
}
|
|
79
|
+
// prettier-ignore
|
|
80
|
+
function FromSchema(T, K) {
|
|
81
|
+
return (UnionEvaluated(FromKeys(T, K)));
|
|
82
|
+
}
|
|
83
|
+
/** `[Json]` Returns an Indexed property type for the given keys */
|
|
6
84
|
export function Index(T, K, options = {}) {
|
|
85
|
+
// prettier-ignore
|
|
7
86
|
return (IsMappedKey(K) ? CloneType(IndexFromMappedKey(T, K, options)) :
|
|
8
|
-
IsSchemaType(K) ?
|
|
9
|
-
|
|
87
|
+
IsSchemaType(K) ? CloneType(FromSchema(T, IndexPropertyKeys(K)), options) :
|
|
88
|
+
CloneType(FromSchema(T, K), options));
|
|
10
89
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
2
2
|
import type { TConstructor } from '../constructor/index.mjs';
|
|
3
3
|
export type TInstanceType<T extends TConstructor<TSchema[], TSchema>> = T['returns'];
|
|
4
|
+
/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */
|
|
4
5
|
export declare function InstanceType<T extends TConstructor<any[], any>>(schema: T, options?: SchemaOptions): TInstanceType<T>;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { Kind } from '../symbols/index.mjs';
|
|
2
2
|
import { CloneType, CloneRest } from '../clone/type.mjs';
|
|
3
|
+
// ------------------------------------------------------------------
|
|
4
|
+
// TypeGuard
|
|
5
|
+
// ------------------------------------------------------------------
|
|
6
|
+
// prettier-ignore
|
|
3
7
|
import { TObject as IsObjectType, TSchema as IsSchemaType } from '../guard/type.mjs';
|
|
8
|
+
// ------------------------------------------------------------------
|
|
9
|
+
// IntersectCreate
|
|
10
|
+
// ------------------------------------------------------------------
|
|
11
|
+
// prettier-ignore
|
|
4
12
|
export function IntersectCreate(T, options) {
|
|
5
13
|
const allObjects = T.every((schema) => IsObjectType(schema));
|
|
6
14
|
const clonedUnevaluatedProperties = IsSchemaType(options.unevaluatedProperties)
|
|
@@ -12,5 +12,6 @@ declare function RemoveOptionalFromType<T extends TSchema>(T: T): RemoveOptional
|
|
|
12
12
|
type ResolveIntersect<T extends TSchema[]> = (IsIntersectOptional<T> extends true ? TOptional<TIntersect<RemoveOptionalFromRest<T>>> : TIntersect<RemoveOptionalFromRest<T>>);
|
|
13
13
|
declare function ResolveIntersect<T extends TSchema[]>(T: [...T], options: SchemaOptions): ResolveIntersect<T>;
|
|
14
14
|
export type IntersectEvaluated<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : ResolveIntersect<T>);
|
|
15
|
+
/** `[Json]` Creates an evaluated Intersect type */
|
|
15
16
|
export declare function IntersectEvaluated<T extends TSchema[], R = IntersectEvaluated<T>>(T: [...T], options?: IntersectOptions): 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 { IntersectCreate } from './intersect-create.mjs';
|
|
7
|
+
// ------------------------------------------------------------------
|
|
8
|
+
// TypeGuard
|
|
9
|
+
// ------------------------------------------------------------------
|
|
10
|
+
// prettier-ignore
|
|
7
11
|
import { TOptional as IsOptionalType, TTransform as IsTransformType, } from '../guard/type.mjs';
|
|
12
|
+
// prettier-ignore
|
|
8
13
|
function IsIntersectOptional(T) {
|
|
9
14
|
const [L, ...R] = T;
|
|
10
15
|
return (T.length > 0
|
|
@@ -13,17 +18,21 @@ function IsIntersectOptional(T) {
|
|
|
13
18
|
: false
|
|
14
19
|
: true);
|
|
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 ResolveIntersect(T, options) {
|
|
23
31
|
return (IsIntersectOptional(T)
|
|
24
32
|
? Optional(IntersectCreate(RemoveOptionalFromRest(T), options))
|
|
25
33
|
: IntersectCreate(RemoveOptionalFromRest(T), options));
|
|
26
34
|
}
|
|
35
|
+
/** `[Json]` Creates an evaluated Intersect type */
|
|
27
36
|
export function IntersectEvaluated(T, options = {}) {
|
|
28
37
|
if (T.length === 0)
|
|
29
38
|
return Never(options);
|
|
@@ -2,4 +2,5 @@ import type { TSchema } from '../schema/index.mjs';
|
|
|
2
2
|
import { type TNever } from '../never/index.mjs';
|
|
3
3
|
import { TIntersect, IntersectOptions } from './intersect-type.mjs';
|
|
4
4
|
export type Intersect<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : TIntersect<T>);
|
|
5
|
+
/** `[Json]` Creates an evaluated Intersect type */
|
|
5
6
|
export declare function Intersect<T extends TSchema[]>(T: [...T], options?: IntersectOptions): Intersect<T>;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { CloneType } from '../clone/type.mjs';
|
|
2
2
|
import { Never } from '../never/index.mjs';
|
|
3
3
|
import { IntersectCreate } from './intersect-create.mjs';
|
|
4
|
+
// ------------------------------------------------------------------
|
|
5
|
+
// TypeGuard
|
|
6
|
+
// ------------------------------------------------------------------
|
|
7
|
+
// prettier-ignore
|
|
4
8
|
import { TTransform as IsTransformType, } from '../guard/type.mjs';
|
|
9
|
+
/** `[Json]` Creates an evaluated Intersect type */
|
|
5
10
|
export function Intersect(T, options = {}) {
|
|
6
11
|
if (T.length === 0)
|
|
7
12
|
return Never(options);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
2
2
|
import { TIntrinsic } from './intrinsic.mjs';
|
|
3
3
|
export type TCapitalize<T extends TSchema> = TIntrinsic<T, 'Capitalize'>;
|
|
4
|
+
/** `[Json]` Intrinsic function to Capitalize LiteralString types */
|
|
4
5
|
export declare function Capitalize<T extends TSchema>(T: T, options?: SchemaOptions): TCapitalize<T>;
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
2
|
import { Intrinsic } from './intrinsic.mjs';
|
|
3
3
|
import { Literal } from '../literal/index.mjs';
|
|
4
|
+
// prettier-ignore
|
|
4
5
|
function MappedIntrinsicPropertyKey(K, M, options) {
|
|
5
6
|
return {
|
|
6
7
|
[K]: Intrinsic(Literal(K), M, options)
|
|
7
8
|
};
|
|
8
9
|
}
|
|
10
|
+
// prettier-ignore
|
|
9
11
|
function MappedIntrinsicPropertyKeys(K, M, options) {
|
|
10
12
|
const [L, ...R] = K;
|
|
11
13
|
return (K.length > 0
|
|
12
14
|
? { ...MappedIntrinsicPropertyKey(L, M, options), ...MappedIntrinsicPropertyKeys(R, M, options) }
|
|
13
15
|
: {});
|
|
14
16
|
}
|
|
17
|
+
// prettier-ignore
|
|
15
18
|
function MappedIntrinsicProperties(T, M, options) {
|
|
16
19
|
return MappedIntrinsicPropertyKeys(T['keys'], M, options);
|
|
17
20
|
}
|
|
21
|
+
// prettier-ignore
|
|
18
22
|
export function IntrinsicFromMappedKey(T, M, options) {
|
|
19
23
|
const P = MappedIntrinsicProperties(T, M, options);
|
|
20
24
|
return MappedResult(P);
|
|
@@ -12,6 +12,8 @@ declare function FromLiteralValue(value: TLiteralValue, mode: IntrinsicMode): st
|
|
|
12
12
|
type FromRest<T extends TSchema[], M extends IntrinsicMode> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [TIntrinsic<L, M>, ...FromRest<R, M>] : [];
|
|
13
13
|
declare function FromRest<T extends TSchema[], M extends IntrinsicMode>(T: [...T], mode: M): FromRest<T, M>;
|
|
14
14
|
export type TIntrinsic<T extends TSchema, M extends IntrinsicMode> = T extends TMappedKey ? TIntrinsicFromMappedKey<T, M> : T extends TTemplateLiteral<infer S> ? TTemplateLiteral<FromTemplateLiteral<S, M>> : T extends TUnion<infer S> ? TUnion<FromRest<S, M>> : T extends TLiteral<infer S> ? TLiteral<FromLiteralValue<S, M>> : T;
|
|
15
|
+
/** Applies an intrinsic string manipulation to the given type. */
|
|
15
16
|
export declare function Intrinsic<T extends TMappedKey, M extends IntrinsicMode>(schema: T, mode: M, options?: SchemaOptions): TIntrinsicFromMappedKey<T, M>;
|
|
17
|
+
/** Applies an intrinsic string manipulation to the given type. */
|
|
16
18
|
export declare function Intrinsic<T extends TSchema, M extends IntrinsicMode>(schema: T, mode: M, options?: SchemaOptions): TIntrinsic<T, M>;
|
|
17
19
|
export {};
|
|
@@ -2,7 +2,14 @@ import { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralFinite, Te
|
|
|
2
2
|
import { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';
|
|
3
3
|
import { Literal } from '../literal/index.mjs';
|
|
4
4
|
import { Union } from '../union/index.mjs';
|
|
5
|
+
// ------------------------------------------------------------------
|
|
6
|
+
// TypeGuard
|
|
7
|
+
// ------------------------------------------------------------------
|
|
8
|
+
// prettier-ignore
|
|
5
9
|
import { TMappedKey as IsMappedKeyType, TTemplateLiteral as IsTemplateLiteralType, TUnion as IsUnionType, TLiteral as IsLiteralType } from '../guard/type.mjs';
|
|
10
|
+
// ------------------------------------------------------------------
|
|
11
|
+
// Apply
|
|
12
|
+
// ------------------------------------------------------------------
|
|
6
13
|
function ApplyUncapitalize(value) {
|
|
7
14
|
const [first, rest] = [value.slice(0, 1), value.slice(1)];
|
|
8
15
|
return [first.toLowerCase(), rest].join('');
|
|
@@ -18,6 +25,8 @@ function ApplyLowercase(value) {
|
|
|
18
25
|
return value.toLowerCase();
|
|
19
26
|
}
|
|
20
27
|
function FromTemplateLiteral(schema, mode, options) {
|
|
28
|
+
// note: template literals require special runtime handling as they are encoded in string patterns.
|
|
29
|
+
// This diverges from the mapped type which would otherwise map on the template literal kind.
|
|
21
30
|
const expression = TemplateLiteralParseExact(schema.pattern);
|
|
22
31
|
const finite = IsTemplateLiteralFinite(expression);
|
|
23
32
|
if (!finite)
|
|
@@ -28,6 +37,7 @@ function FromTemplateLiteral(schema, mode, options) {
|
|
|
28
37
|
const union = Union(mapped);
|
|
29
38
|
return TemplateLiteral([union], options);
|
|
30
39
|
}
|
|
40
|
+
// prettier-ignore
|
|
31
41
|
function FromLiteralValue(value, mode) {
|
|
32
42
|
return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :
|
|
33
43
|
mode === 'Capitalize' ? ApplyCapitalize(value) :
|
|
@@ -39,8 +49,13 @@ function FromRest(T, mode) {
|
|
|
39
49
|
const [L, ...R] = T;
|
|
40
50
|
return (T.length > 0 ? [Intrinsic(L, mode), ...FromRest(R, mode)] : []);
|
|
41
51
|
}
|
|
52
|
+
/** Applies an intrinsic string manipulation to the given type. */
|
|
42
53
|
export function Intrinsic(schema, mode, options = {}) {
|
|
43
|
-
|
|
54
|
+
// prettier-ignore
|
|
55
|
+
return (
|
|
56
|
+
// Intrinsic-Mapped-Inference
|
|
57
|
+
IsMappedKeyType(schema) ? IntrinsicFromMappedKey(schema, mode, options) :
|
|
58
|
+
// Standard-Inference
|
|
44
59
|
IsTemplateLiteralType(schema) ? FromTemplateLiteral(schema, mode, schema) :
|
|
45
60
|
IsUnionType(schema) ? Union(FromRest(schema.anyOf, mode), options) :
|
|
46
61
|
IsLiteralType(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
2
2
|
import { TIntrinsic } from './intrinsic.mjs';
|
|
3
3
|
export type TLowercase<T extends TSchema> = TIntrinsic<T, 'Lowercase'>;
|
|
4
|
+
/** `[Json]` Intrinsic function to Lowercase LiteralString types */
|
|
4
5
|
export declare function Lowercase<T extends TSchema>(T: T, options?: SchemaOptions): TLowercase<T>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
2
2
|
import { TIntrinsic } from './intrinsic.mjs';
|
|
3
3
|
export type TUncapitalize<T extends TSchema> = TIntrinsic<T, 'Uncapitalize'>;
|
|
4
|
+
/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */
|
|
4
5
|
export declare function Uncapitalize<T extends TSchema>(T: T, options?: SchemaOptions): TUncapitalize<T>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
2
2
|
import { TIntrinsic } from './intrinsic.mjs';
|
|
3
3
|
export type TUppercase<T extends TSchema> = TIntrinsic<T, 'Uppercase'>;
|
|
4
|
+
/** `[Json]` Intrinsic function to Uppercase LiteralString types */
|
|
4
5
|
export declare function Uppercase<T extends TSchema>(T: T, options?: SchemaOptions): TUppercase<T>;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
2
|
import { KeyOf } from './keyof.mjs';
|
|
3
|
+
// prettier-ignore
|
|
3
4
|
function FromProperties(K, options) {
|
|
4
5
|
return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
|
|
5
6
|
return { ...Acc, [K2]: KeyOf(K[K2], options) };
|
|
6
7
|
}, {});
|
|
7
8
|
}
|
|
9
|
+
// prettier-ignore
|
|
8
10
|
function FromMappedResult(K, options) {
|
|
9
11
|
return FromProperties(K.properties, options);
|
|
10
12
|
}
|
|
13
|
+
// prettier-ignore
|
|
11
14
|
export function KeyOfFromMappedResult(T, options) {
|
|
12
15
|
const P = FromMappedResult(T, options);
|
|
13
16
|
return MappedResult(P);
|
|
@@ -23,6 +23,8 @@ type FromProperties<T extends TProperties> = (UnionToTuple<keyof T>);
|
|
|
23
23
|
declare function FromProperties<T extends TProperties>(T: T): FromProperties<T>;
|
|
24
24
|
export type KeyOfPropertyKeys<T extends TSchema> = (T extends TRecursive<infer S> ? KeyOfPropertyKeys<S> : T extends TIntersect<infer S> ? FromIntersect<S> : T extends TUnion<infer S> ? FromUnion<S> : T extends TTuple<infer S> ? FromTuple<S> : T extends TArray<infer S> ? FromArray<S> : T extends TObject<infer S> ? FromProperties<S> : [
|
|
25
25
|
]);
|
|
26
|
+
/** Returns a tuple of PropertyKeys derived from the given TSchema. */
|
|
26
27
|
export declare function KeyOfPropertyKeys<T extends TSchema>(T: T): KeyOfPropertyKeys<T>;
|
|
28
|
+
/** Returns a regular expression pattern derived from the given TSchema */
|
|
27
29
|
export declare function KeyOfPattern(schema: TSchema): string;
|
|
28
30
|
export {};
|
|
@@ -1,31 +1,45 @@
|
|
|
1
1
|
import { Increment } from '../helpers/index.mjs';
|
|
2
2
|
import { OperatorUnionMany, OperatorIntersectMany } from '../operators/index.mjs';
|
|
3
|
+
// ------------------------------------------------------------------
|
|
4
|
+
// TypeGuard
|
|
5
|
+
// ------------------------------------------------------------------
|
|
6
|
+
// prettier-ignore
|
|
3
7
|
import { TIntersect as IsIntersectType, TUnion as IsUnionType, TTuple as IsTupleType, TArray as IsArrayType, TObject as IsObjectType, TRecord as IsRecordType } from '../guard/type.mjs';
|
|
8
|
+
// prettier-ignore
|
|
4
9
|
function FromRest(T) {
|
|
5
10
|
const [L, ...R] = T;
|
|
6
11
|
return (T.length > 0
|
|
7
12
|
? [KeyOfPropertyKeys(L), ...FromRest(R)]
|
|
8
13
|
: []);
|
|
9
14
|
}
|
|
15
|
+
// prettier-ignore
|
|
10
16
|
function FromIntersect(T, C = FromRest(T)) {
|
|
11
17
|
return OperatorUnionMany(C);
|
|
12
18
|
}
|
|
19
|
+
// prettier-ignore
|
|
13
20
|
function FromUnion(T) {
|
|
14
21
|
const C = FromRest(T);
|
|
15
22
|
return OperatorIntersectMany(C);
|
|
16
23
|
}
|
|
24
|
+
// prettier-ignore
|
|
17
25
|
function FromTuple(T, I = '0') {
|
|
18
26
|
const [_, ...R] = T;
|
|
19
27
|
return (T.length > 0
|
|
20
28
|
? [I, ...FromTuple(R, Increment(I))]
|
|
21
29
|
: []);
|
|
22
30
|
}
|
|
31
|
+
// prettier-ignore
|
|
23
32
|
function FromArray(_) {
|
|
24
33
|
return (['[number]']);
|
|
25
34
|
}
|
|
35
|
+
// prettier-ignore
|
|
26
36
|
function FromProperties(T) {
|
|
27
37
|
return (globalThis.Object.getOwnPropertyNames(T));
|
|
28
38
|
}
|
|
39
|
+
// ------------------------------------------------------------------
|
|
40
|
+
// FromPatternProperties
|
|
41
|
+
// ------------------------------------------------------------------
|
|
42
|
+
// prettier-ignore
|
|
29
43
|
function FromPatternProperties(patternProperties) {
|
|
30
44
|
if (!includePatternProperties)
|
|
31
45
|
return [];
|
|
@@ -36,6 +50,8 @@ function FromPatternProperties(patternProperties) {
|
|
|
36
50
|
: key;
|
|
37
51
|
});
|
|
38
52
|
}
|
|
53
|
+
/** Returns a tuple of PropertyKeys derived from the given TSchema. */
|
|
54
|
+
// prettier-ignore
|
|
39
55
|
export function KeyOfPropertyKeys(T) {
|
|
40
56
|
return (IsIntersectType(T) ? FromIntersect(T.allOf) :
|
|
41
57
|
IsUnionType(T) ? FromUnion(T.anyOf) :
|
|
@@ -45,7 +61,11 @@ export function KeyOfPropertyKeys(T) {
|
|
|
45
61
|
IsRecordType(T) ? FromPatternProperties(T.patternProperties) :
|
|
46
62
|
[]);
|
|
47
63
|
}
|
|
64
|
+
// ----------------------------------------------------------------
|
|
65
|
+
// KeyOfPattern
|
|
66
|
+
// ----------------------------------------------------------------
|
|
48
67
|
let includePatternProperties = false;
|
|
68
|
+
/** Returns a regular expression pattern derived from the given TSchema */
|
|
49
69
|
export function KeyOfPattern(schema) {
|
|
50
70
|
includePatternProperties = true;
|
|
51
71
|
const keys = KeyOfPropertyKeys(schema);
|
|
@@ -10,6 +10,8 @@ import { type TKeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';
|
|
|
10
10
|
type FromLiterals<T extends TLiteralValue[]> = (T extends [infer L extends TLiteralValue, ...infer R extends TLiteralValue[]] ? L extends '[number]' ? [TNumber, ...FromLiterals<R>] : [TLiteral<L>, ...FromLiterals<R>] : []);
|
|
11
11
|
declare function FromLiterals<T extends TLiteralValue[]>(T: [...T]): FromLiterals<T>;
|
|
12
12
|
export type TKeyOf<T extends TSchema> = (Ensure<UnionEvaluated<FromLiterals<KeyOfPropertyKeys<T>>>>);
|
|
13
|
+
/** `[Json]` Creates a KeyOf type */
|
|
13
14
|
export declare function KeyOf<T extends TMappedResult>(T: T, options?: SchemaOptions): TKeyOfFromMappedResult<T>;
|
|
15
|
+
/** `[Json]` Creates a KeyOf type */
|
|
14
16
|
export declare function KeyOf<T extends TSchema>(T: T, options?: SchemaOptions): TKeyOf<T>;
|
|
15
17
|
export {};
|
|
@@ -4,7 +4,12 @@ import { KeyOfPropertyKeys } from './keyof-property-keys.mjs';
|
|
|
4
4
|
import { UnionEvaluated } from '../union/index.mjs';
|
|
5
5
|
import { CloneType } from '../clone/type.mjs';
|
|
6
6
|
import { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';
|
|
7
|
+
// ------------------------------------------------------------------
|
|
8
|
+
// TypeGuard
|
|
9
|
+
// ------------------------------------------------------------------
|
|
10
|
+
// prettier-ignore
|
|
7
11
|
import { TMappedResult as IsMappedResultType } from '../guard/type.mjs';
|
|
12
|
+
// prettier-ignore
|
|
8
13
|
function FromLiterals(T) {
|
|
9
14
|
const [L, ...R] = T;
|
|
10
15
|
return (T.length > 0
|
|
@@ -13,6 +18,7 @@ function FromLiterals(T) {
|
|
|
13
18
|
: [Literal(L), ...FromLiterals(R)]
|
|
14
19
|
: []);
|
|
15
20
|
}
|
|
21
|
+
/** `[Json]` Creates a KeyOf type */
|
|
16
22
|
export function KeyOf(T, options = {}) {
|
|
17
23
|
if (IsMappedResultType(T)) {
|
|
18
24
|
return KeyOfFromMappedResult(T, options);
|
|
@@ -38,6 +38,8 @@ type FromMappedFunctionReturnType<K extends PropertyKey[], T extends TSchema> =
|
|
|
38
38
|
declare function FromMappedFunctionReturnType<K extends PropertyKey[], T extends TSchema>(K: [...K], T: T): FromMappedFunctionReturnType<K, T>;
|
|
39
39
|
export type TMappedFunction<K extends PropertyKey[], I = TMappedKey<K>> = (T: I) => TSchema;
|
|
40
40
|
export type TMapped<K extends PropertyKey[], F extends TMappedFunction<K>, R extends TProperties = Evaluate<FromMappedFunctionReturnType<K, ReturnType<F>>>> = Ensure<TObject<R>>;
|
|
41
|
+
/** `[Json]` Creates a Mapped object type */
|
|
41
42
|
export declare function Mapped<K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>, F extends TMappedFunction<I> = TMappedFunction<I>, R extends TMapped<I, F> = TMapped<I, F>>(key: K, map: F, options?: ObjectOptions): R;
|
|
43
|
+
/** `[Json]` Creates a Mapped object type */
|
|
42
44
|
export declare function Mapped<K extends PropertyKey[], F extends TMappedFunction<K> = TMappedFunction<K>, R extends TMapped<K, F> = TMapped<K, F>>(key: [...K], map: F, options?: ObjectOptions): R;
|
|
43
45
|
export {};
|