@sinclair/typebox 0.32.0-dev-15 → 0.32.0-dev-17
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 +87 -6
- package/build/import/compiler/index.mjs +27 -0
- package/build/import/errors/errors.d.mts +3 -0
- package/build/import/errors/errors.mjs +55 -3
- package/build/import/errors/function.d.mts +3 -0
- package/build/import/errors/function.mjs +31 -0
- package/build/import/errors/index.mjs +27 -0
- package/build/import/index.d.mts +2 -2
- package/build/import/index.mjs +38 -2
- package/build/import/system/index.mjs +27 -0
- package/build/import/system/policy.d.mts +10 -0
- package/build/import/system/policy.mjs +40 -0
- package/build/import/system/system.d.mts +3 -0
- package/build/import/system/system.mjs +36 -0
- package/build/import/type/any/any.d.mts +1 -0
- package/build/import/type/any/any.mjs +28 -0
- package/build/import/type/any/index.mjs +27 -0
- package/build/import/type/array/array.d.mts +8 -1
- package/build/import/type/array/array.mjs +28 -0
- package/build/import/type/array/index.mjs +27 -0
- package/build/import/type/async-iterator/async-iterator.d.mts +1 -0
- package/build/import/type/async-iterator/async-iterator.mjs +28 -0
- package/build/import/type/async-iterator/index.mjs +27 -0
- package/build/import/type/awaited/awaited.d.mts +1 -0
- package/build/import/type/awaited/awaited.mjs +37 -0
- package/build/import/type/awaited/index.mjs +27 -0
- package/build/import/type/bigint/bigint.d.mts +1 -0
- package/build/import/type/bigint/bigint.mjs +28 -0
- package/build/import/type/bigint/index.mjs +27 -0
- package/build/import/type/boolean/boolean.d.mts +1 -0
- package/build/import/type/boolean/boolean.mjs +28 -0
- package/build/import/type/boolean/index.mjs +27 -0
- package/build/import/type/clone/index.mjs +27 -0
- package/build/import/type/clone/type.d.mts +2 -0
- package/build/import/type/clone/type.mjs +29 -0
- package/build/import/type/clone/value.d.mts +1 -0
- package/build/import/type/clone/value.mjs +29 -0
- package/build/import/type/composite/composite.d.mts +1 -0
- package/build/import/type/composite/composite.mjs +28 -0
- package/build/import/type/composite/index.mjs +27 -0
- package/build/import/type/const/const.d.mts +2 -1
- package/build/import/type/const/const.mjs +32 -1
- package/build/import/type/const/index.mjs +27 -0
- package/build/import/type/constructor/constructor.d.mts +5 -4
- package/build/import/type/constructor/constructor.mjs +28 -0
- package/build/import/type/constructor/index.mjs +27 -0
- package/build/import/type/constructor-parameters/constructor-parameters.d.mts +1 -0
- package/build/import/type/constructor-parameters/constructor-parameters.mjs +28 -0
- package/build/import/type/constructor-parameters/index.mjs +27 -0
- package/build/import/type/date/date.d.mts +6 -0
- package/build/import/type/date/date.mjs +28 -0
- package/build/import/type/date/index.mjs +27 -0
- package/build/import/type/deref/deref.d.mts +1 -0
- package/build/import/type/deref/deref.mjs +45 -0
- package/build/import/type/deref/index.mjs +27 -0
- package/build/import/type/discard/discard.mjs +27 -0
- package/build/import/type/discard/index.mjs +27 -0
- package/build/import/type/enum/enum.d.mts +1 -0
- package/build/import/type/enum/enum.mjs +28 -0
- package/build/import/type/enum/index.mjs +27 -0
- package/build/import/type/exclude/exclude-from-mapped-result.mjs +30 -0
- package/build/import/type/exclude/exclude.d.mts +5 -3
- package/build/import/type/exclude/exclude.mjs +30 -0
- package/build/import/type/exclude/index.mjs +27 -0
- package/build/import/type/extends/extends-check.mjs +200 -1
- package/build/import/type/extends/extends-from-mapped-key.mjs +31 -0
- package/build/import/type/extends/extends-from-mapped-result.mjs +30 -0
- package/build/import/type/extends/extends-undefined.d.mts +1 -0
- package/build/import/type/extends/extends-undefined.mjs +30 -0
- package/build/import/type/extends/extends.d.mts +3 -0
- package/build/import/type/extends/extends.mjs +35 -1
- package/build/import/type/extends/index.mjs +27 -0
- package/build/import/type/extract/extract-from-mapped-result.mjs +30 -0
- package/build/import/type/extract/extract.d.mts +5 -3
- package/build/import/type/extract/extract.mjs +30 -0
- package/build/import/type/extract/index.mjs +27 -0
- package/build/import/type/function/function.d.mts +5 -4
- package/build/import/type/function/function.mjs +28 -0
- package/build/import/type/function/index.mjs +27 -0
- package/build/import/type/guard/index.mjs +27 -0
- package/build/import/type/guard/type.d.mts +46 -0
- package/build/import/type/guard/type.mjs +111 -1
- package/build/import/type/guard/value.d.mts +14 -0
- package/build/import/type/guard/value.mjs +41 -0
- package/build/import/type/helpers/helpers.d.mts +1 -0
- package/build/import/type/helpers/helpers.mjs +28 -0
- package/build/import/type/helpers/index.mjs +27 -0
- package/build/import/type/index.mjs +27 -0
- package/build/import/type/indexed/index.mjs +27 -0
- package/build/import/type/indexed/indexed-from-mapped-key.mjs +35 -1
- package/build/import/type/indexed/indexed-property-keys.d.mts +1 -0
- package/build/import/type/indexed/indexed-property-keys.mjs +36 -0
- package/build/import/type/indexed/indexed-result.d.mts +6 -6
- package/build/import/type/indexed/indexed-result.mjs +49 -7
- package/build/import/type/indexed/indexed.d.mts +3 -0
- package/build/import/type/indexed/indexed.mjs +34 -1
- package/build/import/type/instance-type/index.mjs +27 -0
- package/build/import/type/instance-type/instance-type.d.mts +1 -0
- package/build/import/type/instance-type/instance-type.mjs +28 -0
- package/build/import/type/integer/index.mjs +27 -0
- package/build/import/type/integer/integer.d.mts +1 -0
- package/build/import/type/integer/integer.mjs +28 -0
- package/build/import/type/intersect/index.d.mts +2 -0
- package/build/import/type/intersect/index.mjs +29 -0
- package/build/import/type/intersect/intersect-create.d.mts +3 -0
- package/build/import/type/intersect/intersect-create.mjs +47 -0
- package/build/import/type/intersect/intersect-evaluated.d.mts +17 -0
- package/build/import/type/intersect/intersect-evaluated.mjs +71 -0
- package/build/import/type/intersect/intersect-type.d.mts +15 -0
- package/build/import/type/intersect/intersect-type.mjs +28 -0
- package/build/import/type/intersect/intersect.d.mts +5 -20
- package/build/import/type/intersect/intersect.mjs +37 -17
- package/build/import/type/intrinsic/capitalize.d.mts +1 -0
- package/build/import/type/intrinsic/capitalize.mjs +28 -0
- package/build/import/type/intrinsic/index.mjs +27 -0
- package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +31 -0
- package/build/import/type/intrinsic/intrinsic.d.mts +2 -0
- package/build/import/type/intrinsic/intrinsic.mjs +43 -1
- package/build/import/type/intrinsic/lowercase.d.mts +1 -0
- package/build/import/type/intrinsic/lowercase.mjs +28 -0
- package/build/import/type/intrinsic/uncapitalize.d.mts +1 -0
- package/build/import/type/intrinsic/uncapitalize.mjs +28 -0
- package/build/import/type/intrinsic/uppercase.d.mts +1 -0
- package/build/import/type/intrinsic/uppercase.mjs +28 -0
- package/build/import/type/iterator/index.mjs +27 -0
- package/build/import/type/iterator/iterator.d.mts +1 -0
- package/build/import/type/iterator/iterator.mjs +28 -0
- package/build/import/type/keyof/index.mjs +27 -0
- package/build/import/type/keyof/keyof-from-mapped-result.mjs +30 -0
- package/build/import/type/keyof/keyof-property-keys.d.mts +2 -0
- package/build/import/type/keyof/keyof-property-keys.mjs +47 -0
- package/build/import/type/keyof/keyof.d.mts +4 -2
- package/build/import/type/keyof/keyof.mjs +35 -2
- package/build/import/type/literal/index.mjs +27 -0
- package/build/import/type/literal/literal.d.mts +1 -0
- package/build/import/type/literal/literal.mjs +28 -0
- package/build/import/type/mapped/index.mjs +27 -0
- package/build/import/type/mapped/mapped-key.mjs +28 -0
- package/build/import/type/mapped/mapped-result.mjs +28 -0
- package/build/import/type/mapped/mapped.d.mts +2 -0
- package/build/import/type/mapped/mapped.mjs +47 -3
- package/build/import/type/modifiers/index.mjs +27 -0
- package/build/import/type/modifiers/modifiers.mjs +37 -0
- package/build/import/type/never/index.mjs +27 -0
- package/build/import/type/never/never.d.mts +1 -0
- package/build/import/type/never/never.mjs +28 -0
- package/build/import/type/not/index.mjs +27 -0
- package/build/import/type/not/not.d.mts +1 -0
- package/build/import/type/not/not.mjs +28 -0
- package/build/import/type/null/index.mjs +27 -0
- package/build/import/type/null/null.d.mts +1 -0
- package/build/import/type/null/null.mjs +28 -0
- package/build/import/type/number/index.mjs +27 -0
- package/build/import/type/number/number.d.mts +1 -0
- package/build/import/type/number/number.mjs +28 -0
- package/build/import/type/object/index.mjs +27 -0
- package/build/import/type/object/object.d.mts +10 -5
- package/build/import/type/object/object.mjs +33 -0
- package/build/import/type/omit/index.mjs +27 -0
- package/build/import/type/omit/omit-from-mapped-key.mjs +31 -0
- package/build/import/type/omit/omit.d.mts +3 -0
- package/build/import/type/omit/omit.mjs +39 -0
- package/build/import/type/operators/index.mjs +27 -0
- package/build/import/type/operators/operators.d.mts +8 -0
- package/build/import/type/operators/operators.mjs +42 -0
- package/build/import/type/optional/index.mjs +27 -0
- package/build/import/type/optional/optional.d.mts +1 -0
- package/build/import/type/optional/optional.mjs +28 -0
- package/build/import/type/parameters/index.mjs +27 -0
- package/build/import/type/parameters/parameters.d.mts +1 -0
- package/build/import/type/parameters/parameters.mjs +28 -0
- package/build/import/type/partial/index.mjs +27 -0
- package/build/import/type/partial/partial-from-mapped-result.mjs +30 -0
- package/build/import/type/partial/partial.d.mts +2 -0
- package/build/import/type/partial/partial.mjs +36 -0
- package/build/import/type/patterns/index.mjs +27 -0
- package/build/import/type/patterns/patterns.mjs +27 -0
- package/build/import/type/pick/index.mjs +27 -0
- package/build/import/type/pick/pick-from-mapped-key.mjs +31 -0
- package/build/import/type/pick/pick.d.mts +3 -0
- package/build/import/type/pick/pick.mjs +34 -0
- package/build/import/type/promise/index.mjs +27 -0
- package/build/import/type/promise/promise.d.mts +1 -0
- package/build/import/type/promise/promise.mjs +28 -0
- package/build/import/type/readonly/index.mjs +27 -0
- package/build/import/type/readonly/readonly.d.mts +1 -0
- package/build/import/type/readonly/readonly.mjs +28 -0
- package/build/import/type/readonly-optional/index.mjs +27 -0
- package/build/import/type/readonly-optional/readonly-optional.d.mts +1 -0
- package/build/import/type/readonly-optional/readonly-optional.mjs +28 -0
- package/build/import/type/record/index.mjs +27 -0
- package/build/import/type/record/record.d.mts +1 -1
- package/build/import/type/record/record.mjs +49 -1
- package/build/import/type/recursive/index.mjs +27 -0
- package/build/import/type/recursive/recursive.d.mts +4 -2
- package/build/import/type/recursive/recursive.mjs +31 -5
- package/build/import/type/ref/index.mjs +27 -0
- package/build/import/type/ref/ref.d.mts +2 -0
- package/build/import/type/ref/ref.mjs +28 -0
- package/build/import/type/regexp/index.mjs +27 -0
- package/build/import/type/regexp/regexp.d.mts +2 -0
- package/build/import/type/regexp/regexp.mjs +28 -0
- package/build/import/type/registry/format.d.mts +6 -0
- package/build/import/type/registry/format.mjs +34 -0
- package/build/import/type/registry/index.mjs +27 -0
- package/build/import/type/registry/type.d.mts +6 -0
- package/build/import/type/registry/type.mjs +34 -0
- package/build/import/type/required/index.mjs +27 -0
- package/build/import/type/required/required-from-mapped-result.mjs +30 -0
- package/build/import/type/required/required.d.mts +2 -0
- package/build/import/type/required/required.mjs +36 -0
- package/build/import/type/rest/index.mjs +27 -0
- package/build/import/type/rest/rest.d.mts +1 -0
- package/build/import/type/rest/rest.mjs +32 -0
- package/build/import/type/return-type/index.mjs +27 -0
- package/build/import/type/return-type/return-type.d.mts +1 -0
- package/build/import/type/return-type/return-type.mjs +28 -0
- package/build/import/type/schema/anyschema.mjs +27 -0
- package/build/import/type/schema/index.mjs +27 -0
- package/build/import/type/schema/schema.d.mts +7 -0
- package/build/import/type/schema/schema.mjs +27 -0
- package/build/import/type/static/index.mjs +27 -0
- package/build/import/type/static/static.d.mts +3 -0
- package/build/import/type/static/static.mjs +27 -0
- package/build/import/type/strict/index.mjs +27 -0
- package/build/import/type/strict/strict.d.mts +1 -0
- package/build/import/type/strict/strict.mjs +28 -0
- package/build/import/type/string/index.mjs +27 -0
- package/build/import/type/string/string.d.mts +7 -0
- package/build/import/type/string/string.mjs +28 -0
- package/build/import/type/symbol/index.mjs +27 -0
- package/build/import/type/symbol/symbol.d.mts +1 -0
- package/build/import/type/symbol/symbol.mjs +28 -0
- package/build/import/type/symbols/index.mjs +27 -0
- package/build/import/type/symbols/symbols.d.mts +5 -0
- package/build/import/type/symbols/symbols.mjs +32 -0
- package/build/import/type/template-literal/finite.mjs +37 -0
- package/build/import/type/template-literal/generate.mjs +37 -0
- package/build/import/type/template-literal/index.mjs +27 -0
- package/build/import/type/template-literal/parser.d.mts +2 -0
- package/build/import/type/template-literal/parser.mjs +44 -0
- package/build/import/type/template-literal/pattern.mjs +38 -0
- package/build/import/type/template-literal/syntax.d.mts +5 -4
- package/build/import/type/template-literal/syntax.mjs +35 -0
- package/build/import/type/template-literal/template-literal.d.mts +6 -4
- package/build/import/type/template-literal/template-literal.mjs +29 -0
- package/build/import/type/template-literal/union.d.mts +1 -0
- package/build/import/type/template-literal/union.mjs +31 -0
- package/build/import/type/transform/index.mjs +27 -0
- package/build/import/type/transform/transform.d.mts +4 -2
- package/build/import/type/transform/transform.mjs +37 -1
- package/build/import/type/tuple/index.mjs +27 -0
- package/build/import/type/tuple/tuple.d.mts +4 -3
- package/build/import/type/tuple/tuple.mjs +30 -0
- package/build/import/type/type/index.d.mts +1 -0
- package/build/import/type/type/index.mjs +34 -0
- package/build/import/type/type/javascript.d.mts +19 -0
- package/build/import/type/type/javascript.mjs +45 -0
- package/build/import/type/type/json.d.mts +66 -5
- package/build/import/type/type/json.mjs +82 -1
- package/build/import/type/type/type.mjs +30 -0
- package/build/import/type/uint8array/index.mjs +27 -0
- package/build/import/type/uint8array/uint8array.d.mts +1 -0
- package/build/import/type/uint8array/uint8array.mjs +28 -0
- package/build/import/type/undefined/index.mjs +27 -0
- package/build/import/type/undefined/undefined.d.mts +1 -0
- package/build/import/type/undefined/undefined.mjs +28 -0
- package/build/import/type/union/index.d.mts +2 -0
- package/build/import/type/union/index.mjs +29 -0
- package/build/import/type/union/union-create.d.mts +3 -0
- package/build/import/type/union/union-create.mjs +32 -0
- package/build/import/type/union/union-evaluated.d.mts +17 -0
- package/build/import/type/union/union-evaluated.mjs +68 -0
- package/build/import/type/union/union-type.d.mts +12 -0
- package/build/import/type/union/union-type.mjs +28 -0
- package/build/import/type/union/union.d.mts +4 -13
- package/build/import/type/union/union.mjs +32 -10
- package/build/import/type/unknown/index.mjs +27 -0
- package/build/import/type/unknown/unknown.d.mts +1 -0
- package/build/import/type/unknown/unknown.mjs +28 -0
- package/build/import/type/unsafe/index.mjs +27 -0
- package/build/import/type/unsafe/unsafe.d.mts +1 -0
- package/build/import/type/unsafe/unsafe.mjs +28 -0
- package/build/import/type/void/index.mjs +27 -0
- package/build/import/type/void/void.d.mts +1 -0
- package/build/import/type/void/void.mjs +28 -0
- package/build/import/value/cast/cast.d.mts +2 -0
- package/build/import/value/cast/cast.mjs +55 -0
- package/build/import/value/cast/index.mjs +27 -0
- package/build/import/value/check/check.d.mts +2 -0
- package/build/import/value/check/check.mjs +46 -1
- package/build/import/value/check/index.mjs +27 -0
- package/build/import/value/clean/clean.d.mts +2 -0
- package/build/import/value/clean/clean.mjs +39 -1
- package/build/import/value/clean/index.mjs +27 -0
- package/build/import/value/clone/clone.d.mts +1 -0
- package/build/import/value/clone/clone.mjs +34 -0
- package/build/import/value/clone/index.mjs +27 -0
- package/build/import/value/convert/convert.d.mts +2 -0
- package/build/import/value/convert/convert.mjs +57 -1
- package/build/import/value/convert/index.mjs +27 -0
- package/build/import/value/create/create.d.mts +2 -0
- package/build/import/value/create/create.mjs +44 -0
- package/build/import/value/create/index.mjs +27 -0
- package/build/import/value/default/default.d.mts +2 -0
- package/build/import/value/default/default.mjs +46 -0
- package/build/import/value/default/index.mjs +27 -0
- package/build/import/value/delta/delta.d.mts +1 -1
- package/build/import/value/delta/delta.mjs +42 -0
- package/build/import/value/delta/index.mjs +27 -0
- package/build/import/value/deref/deref.d.mts +1 -0
- package/build/import/value/deref/deref.mjs +28 -0
- package/build/import/value/deref/index.mjs +27 -0
- package/build/import/value/equal/equal.d.mts +1 -0
- package/build/import/value/equal/equal.mjs +34 -0
- package/build/import/value/equal/index.mjs +27 -0
- package/build/import/value/guard/guard.d.mts +20 -0
- package/build/import/value/guard/guard.mjs +57 -0
- package/build/import/value/guard/index.mjs +27 -0
- package/build/import/value/hash/hash.d.mts +1 -0
- package/build/import/value/hash/hash.mjs +46 -0
- package/build/import/value/hash/index.mjs +27 -0
- package/build/import/value/index.mjs +39 -0
- package/build/import/value/mutate/index.mjs +27 -0
- package/build/import/value/mutate/mutate.d.mts +1 -0
- package/build/import/value/mutate/mutate.mjs +38 -0
- package/build/import/value/pointer/index.mjs +27 -0
- package/build/import/value/pointer/pointer.d.mts +5 -0
- package/build/import/value/pointer/pointer.mjs +45 -0
- package/build/import/value/transform/decode.d.mts +5 -0
- package/build/import/value/transform/decode.mjs +50 -0
- package/build/import/value/transform/encode.d.mts +6 -0
- package/build/import/value/transform/encode.mjs +52 -0
- package/build/import/value/transform/has.d.mts +1 -0
- package/build/import/value/transform/has.mjs +43 -0
- package/build/import/value/transform/index.mjs +27 -0
- package/build/import/value/value/index.mjs +27 -0
- package/build/import/value/value/value.d.mts +24 -0
- package/build/import/value/value/value.mjs +42 -0
- package/build/require/compiler/compiler.d.ts +9 -0
- package/build/require/compiler/compiler.js +87 -6
- package/build/require/compiler/index.js +27 -0
- package/build/require/errors/errors.d.ts +3 -0
- package/build/require/errors/errors.js +55 -3
- package/build/require/errors/function.d.ts +3 -0
- package/build/require/errors/function.js +31 -0
- package/build/require/errors/index.js +27 -0
- package/build/require/index.d.ts +2 -2
- package/build/require/index.js +41 -2
- package/build/require/system/index.js +27 -0
- package/build/require/system/policy.d.ts +10 -0
- package/build/require/system/policy.js +40 -0
- package/build/require/system/system.d.ts +3 -0
- package/build/require/system/system.js +36 -0
- package/build/require/type/any/any.d.ts +1 -0
- package/build/require/type/any/any.js +28 -0
- package/build/require/type/any/index.js +27 -0
- package/build/require/type/array/array.d.ts +8 -1
- package/build/require/type/array/array.js +28 -0
- package/build/require/type/array/index.js +27 -0
- package/build/require/type/async-iterator/async-iterator.d.ts +1 -0
- package/build/require/type/async-iterator/async-iterator.js +28 -0
- package/build/require/type/async-iterator/index.js +27 -0
- package/build/require/type/awaited/awaited.d.ts +1 -0
- package/build/require/type/awaited/awaited.js +37 -0
- package/build/require/type/awaited/index.js +27 -0
- package/build/require/type/bigint/bigint.d.ts +1 -0
- package/build/require/type/bigint/bigint.js +28 -0
- package/build/require/type/bigint/index.js +27 -0
- package/build/require/type/boolean/boolean.d.ts +1 -0
- package/build/require/type/boolean/boolean.js +28 -0
- package/build/require/type/boolean/index.js +27 -0
- package/build/require/type/clone/index.js +27 -0
- package/build/require/type/clone/type.d.ts +2 -0
- package/build/require/type/clone/type.js +29 -0
- package/build/require/type/clone/value.d.ts +1 -0
- package/build/require/type/clone/value.js +29 -0
- package/build/require/type/composite/composite.d.ts +1 -0
- package/build/require/type/composite/composite.js +28 -0
- package/build/require/type/composite/index.js +27 -0
- package/build/require/type/const/const.d.ts +2 -1
- package/build/require/type/const/const.js +32 -1
- package/build/require/type/const/index.js +27 -0
- package/build/require/type/constructor/constructor.d.ts +5 -4
- package/build/require/type/constructor/constructor.js +28 -0
- package/build/require/type/constructor/index.js +27 -0
- package/build/require/type/constructor-parameters/constructor-parameters.d.ts +1 -0
- package/build/require/type/constructor-parameters/constructor-parameters.js +28 -0
- package/build/require/type/constructor-parameters/index.js +27 -0
- package/build/require/type/date/date.d.ts +6 -0
- package/build/require/type/date/date.js +28 -0
- package/build/require/type/date/index.js +27 -0
- package/build/require/type/deref/deref.d.ts +1 -0
- package/build/require/type/deref/deref.js +45 -0
- package/build/require/type/deref/index.js +27 -0
- package/build/require/type/discard/discard.js +27 -0
- package/build/require/type/discard/index.js +27 -0
- package/build/require/type/enum/enum.d.ts +1 -0
- package/build/require/type/enum/enum.js +28 -0
- package/build/require/type/enum/index.js +27 -0
- package/build/require/type/exclude/exclude-from-mapped-result.js +30 -0
- package/build/require/type/exclude/exclude.d.ts +5 -3
- package/build/require/type/exclude/exclude.js +30 -0
- package/build/require/type/exclude/index.js +27 -0
- package/build/require/type/extends/extends-check.js +200 -1
- package/build/require/type/extends/extends-from-mapped-key.js +31 -0
- package/build/require/type/extends/extends-from-mapped-result.js +30 -0
- package/build/require/type/extends/extends-undefined.d.ts +1 -0
- package/build/require/type/extends/extends-undefined.js +30 -0
- package/build/require/type/extends/extends.d.ts +3 -0
- package/build/require/type/extends/extends.js +39 -5
- package/build/require/type/extends/index.js +27 -0
- package/build/require/type/extract/extract-from-mapped-result.js +30 -0
- package/build/require/type/extract/extract.d.ts +5 -3
- package/build/require/type/extract/extract.js +30 -0
- package/build/require/type/extract/index.js +27 -0
- package/build/require/type/function/function.d.ts +5 -4
- package/build/require/type/function/function.js +28 -0
- package/build/require/type/function/index.js +27 -0
- package/build/require/type/guard/index.js +27 -0
- package/build/require/type/guard/type.d.ts +46 -0
- package/build/require/type/guard/type.js +111 -1
- package/build/require/type/guard/value.d.ts +14 -0
- package/build/require/type/guard/value.js +41 -0
- package/build/require/type/helpers/helpers.d.ts +1 -0
- package/build/require/type/helpers/helpers.js +28 -0
- package/build/require/type/helpers/index.js +27 -0
- package/build/require/type/index.js +27 -0
- package/build/require/type/indexed/index.js +27 -0
- package/build/require/type/indexed/indexed-from-mapped-key.js +35 -1
- package/build/require/type/indexed/indexed-property-keys.d.ts +1 -0
- package/build/require/type/indexed/indexed-property-keys.js +36 -0
- package/build/require/type/indexed/indexed-result.d.ts +6 -6
- package/build/require/type/indexed/indexed-result.js +46 -4
- package/build/require/type/indexed/indexed.d.ts +3 -0
- package/build/require/type/indexed/indexed.js +37 -4
- package/build/require/type/instance-type/index.js +27 -0
- package/build/require/type/instance-type/instance-type.d.ts +1 -0
- package/build/require/type/instance-type/instance-type.js +28 -0
- package/build/require/type/integer/index.js +27 -0
- package/build/require/type/integer/integer.d.ts +1 -0
- package/build/require/type/integer/integer.js +28 -0
- package/build/require/type/intersect/index.d.ts +2 -0
- package/build/require/type/intersect/index.js +29 -0
- package/build/require/type/intersect/intersect-create.d.ts +3 -0
- package/build/require/type/intersect/intersect-create.js +51 -0
- package/build/require/type/intersect/intersect-evaluated.d.ts +17 -0
- package/build/require/type/intersect/intersect-evaluated.js +75 -0
- package/build/require/type/intersect/intersect-type.d.ts +15 -0
- package/build/require/type/intersect/intersect-type.js +30 -0
- package/build/require/type/intersect/intersect.d.ts +5 -20
- package/build/require/type/intersect/intersect.js +37 -18
- package/build/require/type/intrinsic/capitalize.d.ts +1 -0
- package/build/require/type/intrinsic/capitalize.js +28 -0
- package/build/require/type/intrinsic/index.js +27 -0
- package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +31 -0
- package/build/require/type/intrinsic/intrinsic.d.ts +2 -0
- package/build/require/type/intrinsic/intrinsic.js +43 -1
- package/build/require/type/intrinsic/lowercase.d.ts +1 -0
- package/build/require/type/intrinsic/lowercase.js +28 -0
- package/build/require/type/intrinsic/uncapitalize.d.ts +1 -0
- package/build/require/type/intrinsic/uncapitalize.js +28 -0
- package/build/require/type/intrinsic/uppercase.d.ts +1 -0
- package/build/require/type/intrinsic/uppercase.js +28 -0
- package/build/require/type/iterator/index.js +27 -0
- package/build/require/type/iterator/iterator.d.ts +1 -0
- package/build/require/type/iterator/iterator.js +28 -0
- package/build/require/type/keyof/index.js +27 -0
- package/build/require/type/keyof/keyof-from-mapped-result.js +30 -0
- package/build/require/type/keyof/keyof-property-keys.d.ts +2 -0
- package/build/require/type/keyof/keyof-property-keys.js +47 -0
- package/build/require/type/keyof/keyof.d.ts +4 -2
- package/build/require/type/keyof/keyof.js +34 -1
- package/build/require/type/literal/index.js +27 -0
- package/build/require/type/literal/literal.d.ts +1 -0
- package/build/require/type/literal/literal.js +28 -0
- package/build/require/type/mapped/index.js +27 -0
- package/build/require/type/mapped/mapped-key.js +28 -0
- package/build/require/type/mapped/mapped-result.js +28 -0
- package/build/require/type/mapped/mapped.d.ts +2 -0
- package/build/require/type/mapped/mapped.js +63 -19
- package/build/require/type/modifiers/index.js +27 -0
- package/build/require/type/modifiers/modifiers.js +37 -0
- package/build/require/type/never/index.js +27 -0
- package/build/require/type/never/never.d.ts +1 -0
- package/build/require/type/never/never.js +28 -0
- package/build/require/type/not/index.js +27 -0
- package/build/require/type/not/not.d.ts +1 -0
- package/build/require/type/not/not.js +28 -0
- package/build/require/type/null/index.js +27 -0
- package/build/require/type/null/null.d.ts +1 -0
- package/build/require/type/null/null.js +28 -0
- package/build/require/type/number/index.js +27 -0
- package/build/require/type/number/number.d.ts +1 -0
- package/build/require/type/number/number.js +28 -0
- package/build/require/type/object/index.js +27 -0
- package/build/require/type/object/object.d.ts +10 -5
- package/build/require/type/object/object.js +33 -0
- package/build/require/type/omit/index.js +27 -0
- package/build/require/type/omit/omit-from-mapped-key.js +31 -0
- package/build/require/type/omit/omit.d.ts +3 -0
- package/build/require/type/omit/omit.js +39 -0
- package/build/require/type/operators/index.js +27 -0
- package/build/require/type/operators/operators.d.ts +8 -0
- package/build/require/type/operators/operators.js +42 -0
- package/build/require/type/optional/index.js +27 -0
- package/build/require/type/optional/optional.d.ts +1 -0
- package/build/require/type/optional/optional.js +28 -0
- package/build/require/type/parameters/index.js +27 -0
- package/build/require/type/parameters/parameters.d.ts +1 -0
- package/build/require/type/parameters/parameters.js +28 -0
- package/build/require/type/partial/index.js +27 -0
- package/build/require/type/partial/partial-from-mapped-result.js +30 -0
- package/build/require/type/partial/partial.d.ts +2 -0
- package/build/require/type/partial/partial.js +36 -0
- package/build/require/type/patterns/index.js +27 -0
- package/build/require/type/patterns/patterns.js +27 -0
- package/build/require/type/pick/index.js +27 -0
- package/build/require/type/pick/pick-from-mapped-key.js +31 -0
- package/build/require/type/pick/pick.d.ts +3 -0
- package/build/require/type/pick/pick.js +34 -0
- package/build/require/type/promise/index.js +27 -0
- package/build/require/type/promise/promise.d.ts +1 -0
- package/build/require/type/promise/promise.js +28 -0
- package/build/require/type/readonly/index.js +27 -0
- package/build/require/type/readonly/readonly.d.ts +1 -0
- package/build/require/type/readonly/readonly.js +28 -0
- package/build/require/type/readonly-optional/index.js +27 -0
- package/build/require/type/readonly-optional/readonly-optional.d.ts +1 -0
- package/build/require/type/readonly-optional/readonly-optional.js +28 -0
- package/build/require/type/record/index.js +27 -0
- package/build/require/type/record/record.d.ts +1 -1
- package/build/require/type/record/record.js +49 -2
- package/build/require/type/recursive/index.js +27 -0
- package/build/require/type/recursive/recursive.d.ts +4 -2
- package/build/require/type/recursive/recursive.js +31 -5
- package/build/require/type/ref/index.js +27 -0
- package/build/require/type/ref/ref.d.ts +2 -0
- package/build/require/type/ref/ref.js +28 -0
- package/build/require/type/regexp/index.js +27 -0
- package/build/require/type/regexp/regexp.d.ts +2 -0
- package/build/require/type/regexp/regexp.js +28 -0
- package/build/require/type/registry/format.d.ts +6 -0
- package/build/require/type/registry/format.js +34 -0
- package/build/require/type/registry/index.js +27 -0
- package/build/require/type/registry/type.d.ts +6 -0
- package/build/require/type/registry/type.js +34 -0
- package/build/require/type/required/index.js +27 -0
- package/build/require/type/required/required-from-mapped-result.js +30 -0
- package/build/require/type/required/required.d.ts +2 -0
- package/build/require/type/required/required.js +36 -0
- package/build/require/type/rest/index.js +27 -0
- package/build/require/type/rest/rest.d.ts +1 -0
- package/build/require/type/rest/rest.js +32 -0
- package/build/require/type/return-type/index.js +27 -0
- package/build/require/type/return-type/return-type.d.ts +1 -0
- package/build/require/type/return-type/return-type.js +28 -0
- package/build/require/type/schema/anyschema.js +27 -0
- package/build/require/type/schema/index.js +27 -0
- package/build/require/type/schema/schema.d.ts +7 -0
- package/build/require/type/schema/schema.js +27 -0
- package/build/require/type/static/index.js +27 -0
- package/build/require/type/static/static.d.ts +3 -0
- package/build/require/type/static/static.js +27 -0
- package/build/require/type/strict/index.js +27 -0
- package/build/require/type/strict/strict.d.ts +1 -0
- package/build/require/type/strict/strict.js +28 -0
- package/build/require/type/string/index.js +27 -0
- package/build/require/type/string/string.d.ts +7 -0
- package/build/require/type/string/string.js +28 -0
- package/build/require/type/symbol/index.js +27 -0
- package/build/require/type/symbol/symbol.d.ts +1 -0
- package/build/require/type/symbol/symbol.js +28 -0
- package/build/require/type/symbols/index.js +27 -0
- package/build/require/type/symbols/symbols.d.ts +5 -0
- package/build/require/type/symbols/symbols.js +32 -0
- package/build/require/type/template-literal/finite.js +37 -0
- package/build/require/type/template-literal/generate.js +37 -0
- package/build/require/type/template-literal/index.js +27 -0
- package/build/require/type/template-literal/parser.d.ts +2 -0
- package/build/require/type/template-literal/parser.js +44 -0
- package/build/require/type/template-literal/pattern.js +38 -0
- package/build/require/type/template-literal/syntax.d.ts +5 -4
- package/build/require/type/template-literal/syntax.js +35 -0
- package/build/require/type/template-literal/template-literal.d.ts +6 -4
- package/build/require/type/template-literal/template-literal.js +29 -0
- package/build/require/type/template-literal/union.d.ts +1 -0
- package/build/require/type/template-literal/union.js +31 -0
- package/build/require/type/transform/index.js +27 -0
- package/build/require/type/transform/transform.d.ts +4 -2
- package/build/require/type/transform/transform.js +40 -4
- package/build/require/type/tuple/index.js +27 -0
- package/build/require/type/tuple/tuple.d.ts +4 -3
- package/build/require/type/tuple/tuple.js +30 -0
- package/build/require/type/type/index.d.ts +1 -0
- package/build/require/type/type/index.js +34 -0
- package/build/require/type/type/javascript.d.ts +19 -0
- package/build/require/type/type/javascript.js +45 -0
- package/build/require/type/type/json.d.ts +66 -5
- package/build/require/type/type/json.js +82 -1
- package/build/require/type/type/type.js +30 -0
- package/build/require/type/uint8array/index.js +27 -0
- package/build/require/type/uint8array/uint8array.d.ts +1 -0
- package/build/require/type/uint8array/uint8array.js +28 -0
- package/build/require/type/undefined/index.js +27 -0
- package/build/require/type/undefined/undefined.d.ts +1 -0
- package/build/require/type/undefined/undefined.js +28 -0
- package/build/require/type/union/index.d.ts +2 -0
- package/build/require/type/union/index.js +29 -0
- package/build/require/type/union/union-create.d.ts +3 -0
- package/build/require/type/union/union-create.js +36 -0
- package/build/require/type/union/union-evaluated.d.ts +17 -0
- package/build/require/type/union/union-evaluated.js +72 -0
- package/build/require/type/union/union-type.d.ts +12 -0
- package/build/require/type/union/union-type.js +30 -0
- package/build/require/type/union/union.d.ts +4 -13
- package/build/require/type/union/union.js +32 -11
- package/build/require/type/unknown/index.js +27 -0
- package/build/require/type/unknown/unknown.d.ts +1 -0
- package/build/require/type/unknown/unknown.js +28 -0
- package/build/require/type/unsafe/index.js +27 -0
- package/build/require/type/unsafe/unsafe.d.ts +1 -0
- package/build/require/type/unsafe/unsafe.js +28 -0
- package/build/require/type/void/index.js +27 -0
- package/build/require/type/void/void.d.ts +1 -0
- package/build/require/type/void/void.js +28 -0
- package/build/require/value/cast/cast.d.ts +2 -0
- package/build/require/value/cast/cast.js +55 -0
- package/build/require/value/cast/index.js +27 -0
- package/build/require/value/check/check.d.ts +2 -0
- package/build/require/value/check/check.js +46 -1
- package/build/require/value/check/index.js +27 -0
- package/build/require/value/clean/clean.d.ts +2 -0
- package/build/require/value/clean/clean.js +39 -1
- package/build/require/value/clean/index.js +27 -0
- package/build/require/value/clone/clone.d.ts +1 -0
- package/build/require/value/clone/clone.js +34 -0
- package/build/require/value/clone/index.js +27 -0
- package/build/require/value/convert/convert.d.ts +2 -0
- package/build/require/value/convert/convert.js +57 -1
- package/build/require/value/convert/index.js +27 -0
- package/build/require/value/create/create.d.ts +2 -0
- package/build/require/value/create/create.js +44 -0
- package/build/require/value/create/index.js +27 -0
- package/build/require/value/default/default.d.ts +2 -0
- package/build/require/value/default/default.js +46 -0
- package/build/require/value/default/index.js +27 -0
- package/build/require/value/delta/delta.d.ts +1 -1
- package/build/require/value/delta/delta.js +42 -0
- package/build/require/value/delta/index.js +27 -0
- package/build/require/value/deref/deref.d.ts +1 -0
- package/build/require/value/deref/deref.js +28 -0
- package/build/require/value/deref/index.js +27 -0
- package/build/require/value/equal/equal.d.ts +1 -0
- package/build/require/value/equal/equal.js +34 -0
- package/build/require/value/equal/index.js +27 -0
- package/build/require/value/guard/guard.d.ts +20 -0
- package/build/require/value/guard/guard.js +57 -0
- package/build/require/value/guard/index.js +27 -0
- package/build/require/value/hash/hash.d.ts +1 -0
- package/build/require/value/hash/hash.js +46 -0
- package/build/require/value/hash/index.js +27 -0
- package/build/require/value/index.js +39 -0
- package/build/require/value/mutate/index.js +27 -0
- package/build/require/value/mutate/mutate.d.ts +1 -0
- package/build/require/value/mutate/mutate.js +38 -0
- package/build/require/value/pointer/index.js +27 -0
- package/build/require/value/pointer/pointer.d.ts +5 -0
- package/build/require/value/pointer/pointer.js +45 -0
- package/build/require/value/transform/decode.d.ts +5 -0
- package/build/require/value/transform/decode.js +50 -0
- package/build/require/value/transform/encode.d.ts +6 -0
- package/build/require/value/transform/encode.js +52 -0
- package/build/require/value/transform/has.d.ts +1 -0
- package/build/require/value/transform/has.js +43 -0
- package/build/require/value/transform/index.js +27 -0
- package/build/require/value/value/index.js +27 -0
- package/build/require/value/value/value.d.ts +24 -0
- package/build/require/value/value/value.js +42 -0
- package/package.json +1 -1
- package/readme.md +27 -20
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
@sinclair/typebox/type
|
|
4
|
+
|
|
5
|
+
The MIT License (MIT)
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be included in
|
|
17
|
+
all copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
25
|
+
THE SOFTWARE.
|
|
26
|
+
|
|
27
|
+
---------------------------------------------------------------------------*/
|
|
1
28
|
import { Any } from '../any/index.mjs';
|
|
2
29
|
import { Function as FunctionType } from '../function/index.mjs';
|
|
3
30
|
import { Number } from '../number/index.mjs';
|
|
@@ -15,12 +42,24 @@ export var ExtendsResult;
|
|
|
15
42
|
ExtendsResult[ExtendsResult["True"] = 1] = "True";
|
|
16
43
|
ExtendsResult[ExtendsResult["False"] = 2] = "False";
|
|
17
44
|
})(ExtendsResult || (ExtendsResult = {}));
|
|
45
|
+
// ------------------------------------------------------------------
|
|
46
|
+
// IntoBooleanResult
|
|
47
|
+
// ------------------------------------------------------------------
|
|
48
|
+
// prettier-ignore
|
|
18
49
|
function IntoBooleanResult(result) {
|
|
19
50
|
return result === ExtendsResult.False ? result : ExtendsResult.True;
|
|
20
51
|
}
|
|
52
|
+
// ------------------------------------------------------------------
|
|
53
|
+
// Throw
|
|
54
|
+
// ------------------------------------------------------------------
|
|
55
|
+
// prettier-ignore
|
|
21
56
|
function Throw(message) {
|
|
22
57
|
throw new ExtendsResolverError(message);
|
|
23
58
|
}
|
|
59
|
+
// ------------------------------------------------------------------
|
|
60
|
+
// StructuralRight
|
|
61
|
+
// ------------------------------------------------------------------
|
|
62
|
+
// prettier-ignore
|
|
24
63
|
function IsStructuralRight(right) {
|
|
25
64
|
return (TypeGuard.TNever(right) ||
|
|
26
65
|
TypeGuard.TIntersect(right) ||
|
|
@@ -28,6 +67,7 @@ function IsStructuralRight(right) {
|
|
|
28
67
|
TypeGuard.TUnknown(right) ||
|
|
29
68
|
TypeGuard.TAny(right));
|
|
30
69
|
}
|
|
70
|
+
// prettier-ignore
|
|
31
71
|
function StructuralRight(left, right) {
|
|
32
72
|
return (TypeGuard.TNever(right) ? TNeverRight(left, right) :
|
|
33
73
|
TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
|
|
@@ -36,9 +76,14 @@ function StructuralRight(left, right) {
|
|
|
36
76
|
TypeGuard.TAny(right) ? TAnyRight(left, right) :
|
|
37
77
|
Throw('StructuralRight'));
|
|
38
78
|
}
|
|
79
|
+
// ------------------------------------------------------------------
|
|
80
|
+
// Any
|
|
81
|
+
// ------------------------------------------------------------------
|
|
82
|
+
// prettier-ignore
|
|
39
83
|
function TAnyRight(left, right) {
|
|
40
84
|
return ExtendsResult.True;
|
|
41
85
|
}
|
|
86
|
+
// prettier-ignore
|
|
42
87
|
function TAny(left, right) {
|
|
43
88
|
return (TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
|
|
44
89
|
(TypeGuard.TUnion(right) && right.anyOf.some((schema) => TypeGuard.TAny(schema) || TypeGuard.TUnknown(schema))) ? ExtendsResult.True :
|
|
@@ -47,23 +92,36 @@ function TAny(left, right) {
|
|
|
47
92
|
TypeGuard.TAny(right) ? ExtendsResult.True :
|
|
48
93
|
ExtendsResult.Union);
|
|
49
94
|
}
|
|
95
|
+
// ------------------------------------------------------------------
|
|
96
|
+
// Array
|
|
97
|
+
// ------------------------------------------------------------------
|
|
98
|
+
// prettier-ignore
|
|
50
99
|
function TArrayRight(left, right) {
|
|
51
100
|
return (TypeGuard.TUnknown(left) ? ExtendsResult.False :
|
|
52
101
|
TypeGuard.TAny(left) ? ExtendsResult.Union :
|
|
53
102
|
TypeGuard.TNever(left) ? ExtendsResult.True :
|
|
54
103
|
ExtendsResult.False);
|
|
55
104
|
}
|
|
105
|
+
// prettier-ignore
|
|
56
106
|
function TArray(left, right) {
|
|
57
107
|
return (TypeGuard.TObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :
|
|
58
108
|
IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
59
109
|
!TypeGuard.TArray(right) ? ExtendsResult.False :
|
|
60
110
|
IntoBooleanResult(Visit(left.items, right.items)));
|
|
61
111
|
}
|
|
112
|
+
// ------------------------------------------------------------------
|
|
113
|
+
// AsyncIterator
|
|
114
|
+
// ------------------------------------------------------------------
|
|
115
|
+
// prettier-ignore
|
|
62
116
|
function TAsyncIterator(left, right) {
|
|
63
117
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
64
118
|
!TypeGuard.TAsyncIterator(right) ? ExtendsResult.False :
|
|
65
119
|
IntoBooleanResult(Visit(left.items, right.items)));
|
|
66
120
|
}
|
|
121
|
+
// ------------------------------------------------------------------
|
|
122
|
+
// BigInt
|
|
123
|
+
// ------------------------------------------------------------------
|
|
124
|
+
// prettier-ignore
|
|
67
125
|
function TBigInt(left, right) {
|
|
68
126
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
69
127
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -71,11 +129,16 @@ function TBigInt(left, right) {
|
|
|
71
129
|
TypeGuard.TBigInt(right) ? ExtendsResult.True :
|
|
72
130
|
ExtendsResult.False);
|
|
73
131
|
}
|
|
132
|
+
// ------------------------------------------------------------------
|
|
133
|
+
// Boolean
|
|
134
|
+
// ------------------------------------------------------------------
|
|
135
|
+
// prettier-ignore
|
|
74
136
|
function TBooleanRight(left, right) {
|
|
75
137
|
return (TypeGuard.TLiteralBoolean(left) ? ExtendsResult.True :
|
|
76
138
|
TypeGuard.TBoolean(left) ? ExtendsResult.True :
|
|
77
139
|
ExtendsResult.False);
|
|
78
140
|
}
|
|
141
|
+
// prettier-ignore
|
|
79
142
|
function TBoolean(left, right) {
|
|
80
143
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
81
144
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -83,6 +146,10 @@ function TBoolean(left, right) {
|
|
|
83
146
|
TypeGuard.TBoolean(right) ? ExtendsResult.True :
|
|
84
147
|
ExtendsResult.False);
|
|
85
148
|
}
|
|
149
|
+
// ------------------------------------------------------------------
|
|
150
|
+
// Constructor
|
|
151
|
+
// ------------------------------------------------------------------
|
|
152
|
+
// prettier-ignore
|
|
86
153
|
function TConstructor(left, right) {
|
|
87
154
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
88
155
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -91,6 +158,10 @@ function TConstructor(left, right) {
|
|
|
91
158
|
(!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :
|
|
92
159
|
IntoBooleanResult(Visit(left.returns, right.returns)));
|
|
93
160
|
}
|
|
161
|
+
// ------------------------------------------------------------------
|
|
162
|
+
// Date
|
|
163
|
+
// ------------------------------------------------------------------
|
|
164
|
+
// prettier-ignore
|
|
94
165
|
function TDate(left, right) {
|
|
95
166
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
96
167
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -98,6 +169,10 @@ function TDate(left, right) {
|
|
|
98
169
|
TypeGuard.TDate(right) ? ExtendsResult.True :
|
|
99
170
|
ExtendsResult.False);
|
|
100
171
|
}
|
|
172
|
+
// ------------------------------------------------------------------
|
|
173
|
+
// Function
|
|
174
|
+
// ------------------------------------------------------------------
|
|
175
|
+
// prettier-ignore
|
|
101
176
|
function TFunction(left, right) {
|
|
102
177
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
103
178
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -106,11 +181,16 @@ function TFunction(left, right) {
|
|
|
106
181
|
(!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :
|
|
107
182
|
IntoBooleanResult(Visit(left.returns, right.returns)));
|
|
108
183
|
}
|
|
184
|
+
// ------------------------------------------------------------------
|
|
185
|
+
// Integer
|
|
186
|
+
// ------------------------------------------------------------------
|
|
187
|
+
// prettier-ignore
|
|
109
188
|
function TIntegerRight(left, right) {
|
|
110
189
|
return (TypeGuard.TLiteral(left) && ValueGuard.IsNumber(left.const) ? ExtendsResult.True :
|
|
111
190
|
TypeGuard.TNumber(left) || TypeGuard.TInteger(left) ? ExtendsResult.True :
|
|
112
191
|
ExtendsResult.False);
|
|
113
192
|
}
|
|
193
|
+
// prettier-ignore
|
|
114
194
|
function TInteger(left, right) {
|
|
115
195
|
return (TypeGuard.TInteger(right) || TypeGuard.TNumber(right) ? ExtendsResult.True :
|
|
116
196
|
IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
@@ -118,21 +198,34 @@ function TInteger(left, right) {
|
|
|
118
198
|
TypeGuard.TRecord(right) ? TRecordRight(left, right) :
|
|
119
199
|
ExtendsResult.False);
|
|
120
200
|
}
|
|
201
|
+
// ------------------------------------------------------------------
|
|
202
|
+
// Intersect
|
|
203
|
+
// ------------------------------------------------------------------
|
|
204
|
+
// prettier-ignore
|
|
121
205
|
function TIntersectRight(left, right) {
|
|
122
206
|
return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)
|
|
123
207
|
? ExtendsResult.True
|
|
124
208
|
: ExtendsResult.False;
|
|
125
209
|
}
|
|
210
|
+
// prettier-ignore
|
|
126
211
|
function TIntersect(left, right) {
|
|
127
212
|
return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)
|
|
128
213
|
? ExtendsResult.True
|
|
129
214
|
: ExtendsResult.False;
|
|
130
215
|
}
|
|
216
|
+
// ------------------------------------------------------------------
|
|
217
|
+
// Iterator
|
|
218
|
+
// ------------------------------------------------------------------
|
|
219
|
+
// prettier-ignore
|
|
131
220
|
function TIterator(left, right) {
|
|
132
221
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
133
222
|
!TypeGuard.TIterator(right) ? ExtendsResult.False :
|
|
134
223
|
IntoBooleanResult(Visit(left.items, right.items)));
|
|
135
224
|
}
|
|
225
|
+
// ------------------------------------------------------------------
|
|
226
|
+
// Literal
|
|
227
|
+
// ------------------------------------------------------------------
|
|
228
|
+
// prettier-ignore
|
|
136
229
|
function TLiteral(left, right) {
|
|
137
230
|
return (TypeGuard.TLiteral(right) && right.const === left.const ? ExtendsResult.True :
|
|
138
231
|
IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
@@ -144,12 +237,21 @@ function TLiteral(left, right) {
|
|
|
144
237
|
TypeGuard.TBoolean(right) ? TBooleanRight(left, right) :
|
|
145
238
|
ExtendsResult.False);
|
|
146
239
|
}
|
|
240
|
+
// ------------------------------------------------------------------
|
|
241
|
+
// Never
|
|
242
|
+
// ------------------------------------------------------------------
|
|
243
|
+
// prettier-ignore
|
|
147
244
|
function TNeverRight(left, right) {
|
|
148
245
|
return ExtendsResult.False;
|
|
149
246
|
}
|
|
247
|
+
// prettier-ignore
|
|
150
248
|
function TNever(left, right) {
|
|
151
249
|
return ExtendsResult.True;
|
|
152
250
|
}
|
|
251
|
+
// ------------------------------------------------------------------
|
|
252
|
+
// Not
|
|
253
|
+
// ------------------------------------------------------------------
|
|
254
|
+
// prettier-ignore
|
|
153
255
|
function UnwrapTNot(schema) {
|
|
154
256
|
let [current, depth] = [schema, 0];
|
|
155
257
|
while (true) {
|
|
@@ -160,11 +262,20 @@ function UnwrapTNot(schema) {
|
|
|
160
262
|
}
|
|
161
263
|
return depth % 2 === 0 ? current : Unknown();
|
|
162
264
|
}
|
|
265
|
+
// prettier-ignore
|
|
163
266
|
function TNot(left, right) {
|
|
267
|
+
// TypeScript has no concept of negated types, and attempts to correctly check the negated
|
|
268
|
+
// type at runtime would put TypeBox at odds with TypeScripts ability to statically infer
|
|
269
|
+
// the type. Instead we unwrap to either unknown or T and continue evaluating.
|
|
270
|
+
// prettier-ignore
|
|
164
271
|
return (TypeGuard.TNot(left) ? Visit(UnwrapTNot(left), right) :
|
|
165
272
|
TypeGuard.TNot(right) ? Visit(left, UnwrapTNot(right)) :
|
|
166
273
|
Throw('Invalid fallthrough for Not'));
|
|
167
274
|
}
|
|
275
|
+
// ------------------------------------------------------------------
|
|
276
|
+
// Null
|
|
277
|
+
// ------------------------------------------------------------------
|
|
278
|
+
// prettier-ignore
|
|
168
279
|
function TNull(left, right) {
|
|
169
280
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
170
281
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -172,11 +283,16 @@ function TNull(left, right) {
|
|
|
172
283
|
TypeGuard.TNull(right) ? ExtendsResult.True :
|
|
173
284
|
ExtendsResult.False);
|
|
174
285
|
}
|
|
286
|
+
// ------------------------------------------------------------------
|
|
287
|
+
// Number
|
|
288
|
+
// ------------------------------------------------------------------
|
|
289
|
+
// prettier-ignore
|
|
175
290
|
function TNumberRight(left, right) {
|
|
176
291
|
return (TypeGuard.TLiteralNumber(left) ? ExtendsResult.True :
|
|
177
292
|
TypeGuard.TNumber(left) || TypeGuard.TInteger(left) ? ExtendsResult.True :
|
|
178
293
|
ExtendsResult.False);
|
|
179
294
|
}
|
|
295
|
+
// prettier-ignore
|
|
180
296
|
function TNumber(left, right) {
|
|
181
297
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
182
298
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -184,52 +300,72 @@ function TNumber(left, right) {
|
|
|
184
300
|
TypeGuard.TInteger(right) || TypeGuard.TNumber(right) ? ExtendsResult.True :
|
|
185
301
|
ExtendsResult.False);
|
|
186
302
|
}
|
|
303
|
+
// ------------------------------------------------------------------
|
|
304
|
+
// Object
|
|
305
|
+
// ------------------------------------------------------------------
|
|
306
|
+
// prettier-ignore
|
|
187
307
|
function IsObjectPropertyCount(schema, count) {
|
|
188
308
|
return Object.getOwnPropertyNames(schema.properties).length === count;
|
|
189
309
|
}
|
|
310
|
+
// prettier-ignore
|
|
190
311
|
function IsObjectStringLike(schema) {
|
|
191
312
|
return IsObjectArrayLike(schema);
|
|
192
313
|
}
|
|
314
|
+
// prettier-ignore
|
|
193
315
|
function IsObjectSymbolLike(schema) {
|
|
194
316
|
return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.TUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.TString(schema.properties.description.anyOf[0]) &&
|
|
195
317
|
TypeGuard.TUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.TString(schema.properties.description.anyOf[1]) &&
|
|
196
318
|
TypeGuard.TUndefined(schema.properties.description.anyOf[0]))));
|
|
197
319
|
}
|
|
320
|
+
// prettier-ignore
|
|
198
321
|
function IsObjectNumberLike(schema) {
|
|
199
322
|
return IsObjectPropertyCount(schema, 0);
|
|
200
323
|
}
|
|
324
|
+
// prettier-ignore
|
|
201
325
|
function IsObjectBooleanLike(schema) {
|
|
202
326
|
return IsObjectPropertyCount(schema, 0);
|
|
203
327
|
}
|
|
328
|
+
// prettier-ignore
|
|
204
329
|
function IsObjectBigIntLike(schema) {
|
|
205
330
|
return IsObjectPropertyCount(schema, 0);
|
|
206
331
|
}
|
|
332
|
+
// prettier-ignore
|
|
207
333
|
function IsObjectDateLike(schema) {
|
|
208
334
|
return IsObjectPropertyCount(schema, 0);
|
|
209
335
|
}
|
|
336
|
+
// prettier-ignore
|
|
210
337
|
function IsObjectUint8ArrayLike(schema) {
|
|
211
338
|
return IsObjectArrayLike(schema);
|
|
212
339
|
}
|
|
340
|
+
// prettier-ignore
|
|
213
341
|
function IsObjectFunctionLike(schema) {
|
|
214
342
|
const length = Number();
|
|
215
343
|
return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);
|
|
216
344
|
}
|
|
345
|
+
// prettier-ignore
|
|
217
346
|
function IsObjectConstructorLike(schema) {
|
|
218
347
|
return IsObjectPropertyCount(schema, 0);
|
|
219
348
|
}
|
|
349
|
+
// prettier-ignore
|
|
220
350
|
function IsObjectArrayLike(schema) {
|
|
221
351
|
const length = Number();
|
|
222
352
|
return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);
|
|
223
353
|
}
|
|
354
|
+
// prettier-ignore
|
|
224
355
|
function IsObjectPromiseLike(schema) {
|
|
225
356
|
const then = FunctionType([Any()], Any());
|
|
226
357
|
return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);
|
|
227
358
|
}
|
|
359
|
+
// ------------------------------------------------------------------
|
|
360
|
+
// Property
|
|
361
|
+
// ------------------------------------------------------------------
|
|
362
|
+
// prettier-ignore
|
|
228
363
|
function Property(left, right) {
|
|
229
364
|
return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :
|
|
230
365
|
TypeGuard.TOptional(left) && !TypeGuard.TOptional(right) ? ExtendsResult.False :
|
|
231
366
|
ExtendsResult.True);
|
|
232
367
|
}
|
|
368
|
+
// prettier-ignore
|
|
233
369
|
function TObjectRight(left, right) {
|
|
234
370
|
return (TypeGuard.TUnknown(left) ? ExtendsResult.False :
|
|
235
371
|
TypeGuard.TAny(left) ? ExtendsResult.Union : (TypeGuard.TNever(left) ||
|
|
@@ -248,6 +384,8 @@ function TObjectRight(left, right) {
|
|
|
248
384
|
(TypeGuard.TConstructor(left) && IsObjectConstructorLike(right)) ||
|
|
249
385
|
(TypeGuard.TFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :
|
|
250
386
|
(TypeGuard.TRecord(left) && TypeGuard.TString(RecordKey(left))) ? (() => {
|
|
387
|
+
// When expressing a Record with literal key values, the Record is converted into a Object with
|
|
388
|
+
// the Hint assigned as `Record`. This is used to invert the extends logic.
|
|
251
389
|
return right[Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;
|
|
252
390
|
})() :
|
|
253
391
|
(TypeGuard.TRecord(left) && TypeGuard.TNumber(RecordKey(left))) ? (() => {
|
|
@@ -255,6 +393,7 @@ function TObjectRight(left, right) {
|
|
|
255
393
|
})() :
|
|
256
394
|
ExtendsResult.False);
|
|
257
395
|
}
|
|
396
|
+
// prettier-ignore
|
|
258
397
|
function TObject(left, right) {
|
|
259
398
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
260
399
|
TypeGuard.TRecord(right) ? TRecordRight(left, right) :
|
|
@@ -274,22 +413,32 @@ function TObject(left, right) {
|
|
|
274
413
|
return ExtendsResult.True;
|
|
275
414
|
})());
|
|
276
415
|
}
|
|
416
|
+
// ------------------------------------------------------------------
|
|
417
|
+
// Promise
|
|
418
|
+
// ------------------------------------------------------------------
|
|
419
|
+
// prettier-ignore
|
|
277
420
|
function TPromise(left, right) {
|
|
278
421
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
279
422
|
TypeGuard.TObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :
|
|
280
423
|
!TypeGuard.TPromise(right) ? ExtendsResult.False :
|
|
281
424
|
IntoBooleanResult(Visit(left.item, right.item)));
|
|
282
425
|
}
|
|
426
|
+
// ------------------------------------------------------------------
|
|
427
|
+
// Record
|
|
428
|
+
// ------------------------------------------------------------------
|
|
429
|
+
// prettier-ignore
|
|
283
430
|
function RecordKey(schema) {
|
|
284
431
|
return (PatternNumberExact in schema.patternProperties ? Number() :
|
|
285
432
|
PatternStringExact in schema.patternProperties ? String() :
|
|
286
433
|
Throw('Unknown record key pattern'));
|
|
287
434
|
}
|
|
435
|
+
// prettier-ignore
|
|
288
436
|
function RecordValue(schema) {
|
|
289
437
|
return (PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] :
|
|
290
438
|
PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] :
|
|
291
439
|
Throw('Unable to get record value schema'));
|
|
292
440
|
}
|
|
441
|
+
// prettier-ignore
|
|
293
442
|
function TRecordRight(left, right) {
|
|
294
443
|
const [Key, Value] = [RecordKey(right), RecordValue(right)];
|
|
295
444
|
return ((TypeGuard.TLiteralString(left) && TypeGuard.TNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :
|
|
@@ -306,17 +455,23 @@ function TRecordRight(left, right) {
|
|
|
306
455
|
})() :
|
|
307
456
|
ExtendsResult.False);
|
|
308
457
|
}
|
|
458
|
+
// prettier-ignore
|
|
309
459
|
function TRecord(left, right) {
|
|
310
460
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
311
461
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
312
462
|
!TypeGuard.TRecord(right) ? ExtendsResult.False :
|
|
313
463
|
Visit(RecordValue(left), RecordValue(right)));
|
|
314
464
|
}
|
|
465
|
+
// ------------------------------------------------------------------
|
|
466
|
+
// String
|
|
467
|
+
// ------------------------------------------------------------------
|
|
468
|
+
// prettier-ignore
|
|
315
469
|
function TStringRight(left, right) {
|
|
316
470
|
return (TypeGuard.TLiteral(left) && ValueGuard.IsString(left.const) ? ExtendsResult.True :
|
|
317
471
|
TypeGuard.TString(left) ? ExtendsResult.True :
|
|
318
472
|
ExtendsResult.False);
|
|
319
473
|
}
|
|
474
|
+
// prettier-ignore
|
|
320
475
|
function TString(left, right) {
|
|
321
476
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
322
477
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -324,6 +479,10 @@ function TString(left, right) {
|
|
|
324
479
|
TypeGuard.TString(right) ? ExtendsResult.True :
|
|
325
480
|
ExtendsResult.False);
|
|
326
481
|
}
|
|
482
|
+
// ------------------------------------------------------------------
|
|
483
|
+
// Symbol
|
|
484
|
+
// ------------------------------------------------------------------
|
|
485
|
+
// prettier-ignore
|
|
327
486
|
function TSymbol(left, right) {
|
|
328
487
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
329
488
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -331,22 +490,35 @@ function TSymbol(left, right) {
|
|
|
331
490
|
TypeGuard.TSymbol(right) ? ExtendsResult.True :
|
|
332
491
|
ExtendsResult.False);
|
|
333
492
|
}
|
|
493
|
+
// ------------------------------------------------------------------
|
|
494
|
+
// TemplateLiteral
|
|
495
|
+
// ------------------------------------------------------------------
|
|
496
|
+
// prettier-ignore
|
|
334
497
|
function TTemplateLiteral(left, right) {
|
|
498
|
+
// TemplateLiteral types are resolved to either unions for finite expressions or string
|
|
499
|
+
// for infinite expressions. Here we call to TemplateLiteralResolver to resolve for
|
|
500
|
+
// either type and continue evaluating.
|
|
335
501
|
return (TypeGuard.TTemplateLiteral(left) ? Visit(TemplateLiteralToUnion(left), right) :
|
|
336
502
|
TypeGuard.TTemplateLiteral(right) ? Visit(left, TemplateLiteralToUnion(right)) :
|
|
337
503
|
Throw('Invalid fallthrough for TemplateLiteral'));
|
|
338
504
|
}
|
|
505
|
+
// ------------------------------------------------------------------
|
|
506
|
+
// Tuple
|
|
507
|
+
// ------------------------------------------------------------------
|
|
508
|
+
// prettier-ignore
|
|
339
509
|
function IsArrayOfTuple(left, right) {
|
|
340
510
|
return (TypeGuard.TArray(right) &&
|
|
341
511
|
left.items !== undefined &&
|
|
342
512
|
left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));
|
|
343
513
|
}
|
|
514
|
+
// prettier-ignore
|
|
344
515
|
function TTupleRight(left, right) {
|
|
345
516
|
return (TypeGuard.TNever(left) ? ExtendsResult.True :
|
|
346
517
|
TypeGuard.TUnknown(left) ? ExtendsResult.False :
|
|
347
518
|
TypeGuard.TAny(left) ? ExtendsResult.Union :
|
|
348
519
|
ExtendsResult.False);
|
|
349
520
|
}
|
|
521
|
+
// prettier-ignore
|
|
350
522
|
function TTuple(left, right) {
|
|
351
523
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
352
524
|
TypeGuard.TObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :
|
|
@@ -357,6 +529,10 @@ function TTuple(left, right) {
|
|
|
357
529
|
left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :
|
|
358
530
|
ExtendsResult.False);
|
|
359
531
|
}
|
|
532
|
+
// ------------------------------------------------------------------
|
|
533
|
+
// Uint8Array
|
|
534
|
+
// ------------------------------------------------------------------
|
|
535
|
+
// prettier-ignore
|
|
360
536
|
function TUint8Array(left, right) {
|
|
361
537
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
362
538
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -364,6 +540,10 @@ function TUint8Array(left, right) {
|
|
|
364
540
|
TypeGuard.TUint8Array(right) ? ExtendsResult.True :
|
|
365
541
|
ExtendsResult.False);
|
|
366
542
|
}
|
|
543
|
+
// ------------------------------------------------------------------
|
|
544
|
+
// Undefined
|
|
545
|
+
// ------------------------------------------------------------------
|
|
546
|
+
// prettier-ignore
|
|
367
547
|
function TUndefined(left, right) {
|
|
368
548
|
return (IsStructuralRight(right) ? StructuralRight(left, right) :
|
|
369
549
|
TypeGuard.TObject(right) ? TObjectRight(left, right) :
|
|
@@ -372,19 +552,29 @@ function TUndefined(left, right) {
|
|
|
372
552
|
TypeGuard.TUndefined(right) ? ExtendsResult.True :
|
|
373
553
|
ExtendsResult.False);
|
|
374
554
|
}
|
|
555
|
+
// ------------------------------------------------------------------
|
|
556
|
+
// Union
|
|
557
|
+
// ------------------------------------------------------------------
|
|
558
|
+
// prettier-ignore
|
|
375
559
|
function TUnionRight(left, right) {
|
|
376
560
|
return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)
|
|
377
561
|
? ExtendsResult.True
|
|
378
562
|
: ExtendsResult.False;
|
|
379
563
|
}
|
|
564
|
+
// prettier-ignore
|
|
380
565
|
function TUnion(left, right) {
|
|
381
566
|
return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)
|
|
382
567
|
? ExtendsResult.True
|
|
383
568
|
: ExtendsResult.False;
|
|
384
569
|
}
|
|
570
|
+
// ------------------------------------------------------------------
|
|
571
|
+
// Unknown
|
|
572
|
+
// ------------------------------------------------------------------
|
|
573
|
+
// prettier-ignore
|
|
385
574
|
function TUnknownRight(left, right) {
|
|
386
575
|
return ExtendsResult.True;
|
|
387
576
|
}
|
|
577
|
+
// prettier-ignore
|
|
388
578
|
function TUnknown(left, right) {
|
|
389
579
|
return (TypeGuard.TNever(right) ? TNeverRight(left, right) :
|
|
390
580
|
TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
|
|
@@ -400,11 +590,16 @@ function TUnknown(left, right) {
|
|
|
400
590
|
TypeGuard.TUnknown(right) ? ExtendsResult.True :
|
|
401
591
|
ExtendsResult.False);
|
|
402
592
|
}
|
|
593
|
+
// ------------------------------------------------------------------
|
|
594
|
+
// Void
|
|
595
|
+
// ------------------------------------------------------------------
|
|
596
|
+
// prettier-ignore
|
|
403
597
|
function VoidRight(left, right) {
|
|
404
598
|
return (TypeGuard.TUndefined(left) ? ExtendsResult.True :
|
|
405
599
|
TypeGuard.TUndefined(left) ? ExtendsResult.True :
|
|
406
600
|
ExtendsResult.False);
|
|
407
601
|
}
|
|
602
|
+
// prettier-ignore
|
|
408
603
|
function TVoid(left, right) {
|
|
409
604
|
return (TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
|
|
410
605
|
TypeGuard.TUnion(right) ? TUnionRight(left, right) :
|
|
@@ -414,9 +609,13 @@ function TVoid(left, right) {
|
|
|
414
609
|
TypeGuard.TVoid(right) ? ExtendsResult.True :
|
|
415
610
|
ExtendsResult.False);
|
|
416
611
|
}
|
|
612
|
+
// prettier-ignore
|
|
417
613
|
function Visit(left, right) {
|
|
418
|
-
return (
|
|
614
|
+
return (
|
|
615
|
+
// resolvable
|
|
616
|
+
(TypeGuard.TTemplateLiteral(left) || TypeGuard.TTemplateLiteral(right)) ? TTemplateLiteral(left, right) :
|
|
419
617
|
(TypeGuard.TNot(left) || TypeGuard.TNot(right)) ? TNot(left, right) :
|
|
618
|
+
// standard
|
|
420
619
|
TypeGuard.TAny(left) ? TAny(left, right) :
|
|
421
620
|
TypeGuard.TArray(left) ? TArray(left, right) :
|
|
422
621
|
TypeGuard.TBigInt(left) ? TBigInt(left, right) :
|
|
@@ -1,20 +1,51 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
@sinclair/typebox/type
|
|
4
|
+
|
|
5
|
+
The MIT License (MIT)
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be included in
|
|
17
|
+
all copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
25
|
+
THE SOFTWARE.
|
|
26
|
+
|
|
27
|
+
---------------------------------------------------------------------------*/
|
|
1
28
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
29
|
import { Literal } from '../literal/index.mjs';
|
|
3
30
|
import { Extends } from './extends.mjs';
|
|
31
|
+
// prettier-ignore
|
|
4
32
|
function FromPropertyKey(K, U, L, R, options) {
|
|
5
33
|
return {
|
|
6
34
|
[K]: Extends(Literal(K), U, L, R, options)
|
|
7
35
|
};
|
|
8
36
|
}
|
|
37
|
+
// prettier-ignore
|
|
9
38
|
function FromPropertyKeys(K, U, L, R, options) {
|
|
10
39
|
const [LK, ...RK] = K;
|
|
11
40
|
return (K.length > 0
|
|
12
41
|
? { ...FromPropertyKey(LK, U, L, R, options), ...FromPropertyKeys(RK, U, L, R, options) }
|
|
13
42
|
: {});
|
|
14
43
|
}
|
|
44
|
+
// prettier-ignore
|
|
15
45
|
function FromMappedKey(K, U, L, R, options) {
|
|
16
46
|
return FromPropertyKeys(K.keys, U, L, R, options);
|
|
17
47
|
}
|
|
48
|
+
// prettier-ignore
|
|
18
49
|
export function ExtendsFromMappedKey(T, U, L, R, options) {
|
|
19
50
|
const P = FromMappedKey(T, U, L, R, options);
|
|
20
51
|
return MappedResult(P);
|
|
@@ -1,13 +1,43 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
@sinclair/typebox/type
|
|
4
|
+
|
|
5
|
+
The MIT License (MIT)
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be included in
|
|
17
|
+
all copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
25
|
+
THE SOFTWARE.
|
|
26
|
+
|
|
27
|
+
---------------------------------------------------------------------------*/
|
|
1
28
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
29
|
import { Extends } from './extends.mjs';
|
|
30
|
+
// prettier-ignore
|
|
3
31
|
function FromProperties(K, U, L, R, options) {
|
|
4
32
|
return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
|
|
5
33
|
return { ...Acc, [K2]: Extends(K[K2], U, L, R, options) };
|
|
6
34
|
}, {});
|
|
7
35
|
}
|
|
36
|
+
// prettier-ignore
|
|
8
37
|
function FromMappedResult(K, U, L, R, options) {
|
|
9
38
|
return FromProperties(K.properties, U, L, R, options);
|
|
10
39
|
}
|
|
40
|
+
// prettier-ignore
|
|
11
41
|
export function ExtendsFromMappedResult(T, U, L, R, options) {
|
|
12
42
|
const P = FromMappedResult(T, U, L, R, options);
|
|
13
43
|
return MappedResult(P);
|