@openclaw/tavily-plugin 2026.7.1-beta.2 → 2026.7.1-beta.4
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/node_modules/typebox/build/compile/validator.d.mts +2 -7
- package/node_modules/typebox/build/compile/validator.mjs +6 -36
- package/node_modules/typebox/build/error/errors.d.mts +1 -7
- package/node_modules/typebox/build/format/_idna.mjs +36 -6
- package/node_modules/typebox/build/format/_puny.mjs +4 -1
- package/node_modules/typebox/build/format/uuid.d.mts +2 -2
- package/node_modules/typebox/build/format/uuid.mjs +3 -3
- package/node_modules/typebox/build/guard/emit.d.mts +0 -4
- package/node_modules/typebox/build/guard/emit.mjs +0 -8
- package/node_modules/typebox/build/guard/guard.d.mts +4 -8
- package/node_modules/typebox/build/guard/guard.mjs +5 -13
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +3 -3
- package/node_modules/typebox/build/schema/engine/boolean.mjs +4 -4
- package/node_modules/typebox/build/schema/engine/index.d.mts +0 -1
- package/node_modules/typebox/build/schema/engine/index.mjs +0 -1
- package/node_modules/typebox/build/schema/engine/schema.mjs +5 -10
- package/node_modules/typebox/build/schema/engine/type.mjs +14 -18
- package/node_modules/typebox/build/schema/types/dependencies.mjs +1 -1
- package/node_modules/typebox/build/schema/types/index.d.mts +0 -1
- package/node_modules/typebox/build/schema/types/index.mjs +0 -1
- package/node_modules/typebox/build/schema/types/schema.d.mts +1 -1
- package/node_modules/typebox/build/schema/types/schema.mjs +2 -2
- package/node_modules/typebox/build/system/locale/ar_001.mjs +0 -1
- package/node_modules/typebox/build/system/locale/bn_BD.mjs +0 -1
- package/node_modules/typebox/build/system/locale/cs_CZ.mjs +0 -1
- package/node_modules/typebox/build/system/locale/de_DE.mjs +0 -1
- package/node_modules/typebox/build/system/locale/el_GR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/en_US.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_419.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_AR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_ES.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_MX.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fa_IR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fil_PH.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fr_CA.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fr_FR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ha_NG.mjs +0 -1
- package/node_modules/typebox/build/system/locale/hi_IN.mjs +0 -1
- package/node_modules/typebox/build/system/locale/hu_HU.mjs +0 -1
- package/node_modules/typebox/build/system/locale/id_ID.mjs +0 -1
- package/node_modules/typebox/build/system/locale/it_IT.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ja_JP.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ko_KR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ms_MY.mjs +0 -1
- package/node_modules/typebox/build/system/locale/nl_NL.mjs +0 -1
- package/node_modules/typebox/build/system/locale/pl_PL.mjs +0 -1
- package/node_modules/typebox/build/system/locale/pt_BR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/pt_PT.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ro_RO.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ru_RU.mjs +0 -1
- package/node_modules/typebox/build/system/locale/sv_SE.mjs +0 -1
- package/node_modules/typebox/build/system/locale/sw_TZ.mjs +0 -1
- package/node_modules/typebox/build/system/locale/th_TH.mjs +0 -1
- package/node_modules/typebox/build/system/locale/tr_TR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/uk_UA.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ur_PK.mjs +0 -1
- package/node_modules/typebox/build/system/locale/vi_VN.mjs +0 -1
- package/node_modules/typebox/build/system/locale/yo_NG.mjs +0 -1
- package/node_modules/typebox/build/system/locale/zh_Hans.mjs +0 -1
- package/node_modules/typebox/build/system/locale/zh_Hant.mjs +0 -1
- package/node_modules/typebox/build/system/memory/clone.d.mts +2 -3
- package/node_modules/typebox/build/system/memory/clone.mjs +73 -26
- package/node_modules/typebox/build/system/settings/settings.d.mts +15 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +3 -1
- package/node_modules/typebox/build/type/action/_add_immutable.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_immutable.mjs +11 -0
- package/node_modules/typebox/build/type/action/_add_optional.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_optional.mjs +11 -0
- package/node_modules/typebox/build/type/action/_add_readonly.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_readonly.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_immutable.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_immutable.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_optional.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_optional.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_readonly.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_readonly.mjs +11 -0
- package/node_modules/typebox/build/type/action/conditional.d.mts +2 -3
- package/node_modules/typebox/build/type/action/conditional.mjs +2 -1
- package/node_modules/typebox/build/type/action/index.d.mts +7 -4
- package/node_modules/typebox/build/type/action/index.mjs +7 -4
- package/node_modules/typebox/build/type/action/mapped.d.mts +2 -3
- package/node_modules/typebox/build/type/action/mapped.mjs +2 -1
- package/node_modules/typebox/build/type/action/module.d.mts +8 -7
- package/node_modules/typebox/build/type/action/module.mjs +7 -6
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
- package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -5
- package/node_modules/typebox/build/type/action/with.d.mts +11 -0
- package/node_modules/typebox/build/type/action/with.mjs +11 -0
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +1 -1
- package/node_modules/typebox/build/type/engine/call/instantiate.d.mts +1 -3
- package/node_modules/typebox/build/type/engine/call/instantiate.mjs +3 -2
- package/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs +2 -2
- package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.d.mts +3 -4
- package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs +2 -1
- package/node_modules/typebox/build/type/engine/cyclic/candidates.d.mts +2 -3
- package/node_modules/typebox/build/type/engine/cyclic/candidates.mjs +3 -6
- package/node_modules/typebox/build/type/engine/cyclic/check.d.mts +6 -9
- package/node_modules/typebox/build/type/engine/cyclic/check.mjs +10 -16
- package/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +1 -4
- package/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +9 -15
- package/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +1 -4
- package/node_modules/typebox/build/type/engine/cyclic/extends.mjs +8 -14
- package/node_modules/typebox/build/type/engine/cyclic/instantiate.d.mts +2 -5
- package/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs +3 -2
- package/node_modules/typebox/build/type/engine/enum/index.d.mts +0 -1
- package/node_modules/typebox/build/type/engine/enum/index.mjs +0 -1
- package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +1 -2
- package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +2 -6
- package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +10 -6
- package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +10 -6
- package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +2 -1
- package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +3 -3
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +17 -5
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +34 -8
- package/node_modules/typebox/build/type/engine/exclude/operation.d.mts +5 -6
- package/node_modules/typebox/build/type/engine/exclude/operation.mjs +11 -12
- package/node_modules/typebox/build/type/engine/extract/operation.d.mts +5 -6
- package/node_modules/typebox/build/type/engine/extract/operation.mjs +11 -12
- package/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +14 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/index.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/index.mjs +2 -2
- package/node_modules/typebox/build/type/engine/indexable/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/indexable/from_enum.d.mts +3 -3
- package/node_modules/typebox/build/type/engine/indexable/from_enum.mjs +4 -4
- package/node_modules/typebox/build/type/engine/indexable/from_template_literal.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs +3 -3
- package/node_modules/typebox/build/type/engine/indexable/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/indexable/from_type.mjs +9 -6
- package/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +2 -1
- package/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +5 -2
- package/node_modules/typebox/build/type/engine/instantiate.d.mts +44 -31
- package/node_modules/typebox/build/type/engine/instantiate.mjs +82 -83
- package/node_modules/typebox/build/type/engine/interface/instantiate.d.mts +3 -6
- package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs +3 -3
- package/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +2 -1
- package/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +5 -1
- package/node_modules/typebox/build/type/engine/mapped/mapped_operation.d.mts +4 -4
- package/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs +3 -3
- package/node_modules/typebox/build/type/engine/mapped/mapped_variants.d.mts +5 -4
- package/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs +10 -5
- package/node_modules/typebox/build/type/engine/module/instantiate.d.mts +7 -9
- package/node_modules/typebox/build/type/engine/module/instantiate.mjs +17 -15
- package/node_modules/typebox/build/type/engine/object/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/object/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/object/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/object/from_type.mjs +8 -5
- package/node_modules/typebox/build/type/engine/object/from_union.mjs +2 -2
- package/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +14 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/parameters/instantiate.d.mts +3 -4
- package/node_modules/typebox/build/type/engine/parameters/instantiate.mjs +2 -1
- package/node_modules/typebox/build/type/engine/partial/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/partial/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/partial/from_intersect.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/partial/from_intersect.mjs +3 -2
- package/node_modules/typebox/build/type/engine/partial/from_object.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/partial/from_object.mjs +2 -2
- package/node_modules/typebox/build/type/engine/partial/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/partial/from_type.mjs +7 -4
- package/node_modules/typebox/build/type/engine/priority/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/priority/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/priority/priority.d.mts +20 -0
- package/node_modules/typebox/build/type/engine/priority/priority.mjs +28 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +14 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_array.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs +3 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_object.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs +8 -5
- package/node_modules/typebox/build/type/engine/record/from_key_enum.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/record/from_key_enum.mjs +2 -2
- package/node_modules/typebox/build/type/engine/record/from_key_template_literal.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs +2 -2
- package/node_modules/typebox/build/type/engine/ref/instantiate.d.mts +3 -3
- package/node_modules/typebox/build/type/engine/ref/instantiate.mjs +6 -6
- package/node_modules/typebox/build/type/engine/required/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/required/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/required/from_intersect.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/required/from_intersect.mjs +3 -2
- package/node_modules/typebox/build/type/engine/required/from_object.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/required/from_object.mjs +2 -2
- package/node_modules/typebox/build/type/engine/required/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/required/from_type.mjs +7 -4
- package/node_modules/typebox/build/type/engine/template_literal/decode.mjs +3 -3
- package/node_modules/typebox/build/type/engine/template_literal/encode.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/template_literal/encode.mjs +6 -6
- package/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs +1 -1
- package/node_modules/typebox/build/type/engine/template_literal/is_pattern.mjs +1 -0
- package/node_modules/typebox/build/type/engine/this/expand_this.d.mts +1 -4
- package/node_modules/typebox/build/type/engine/this/expand_this.mjs +7 -13
- package/node_modules/typebox/build/type/engine/with/instantiate.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/{options → with}/instantiate.mjs +5 -5
- package/node_modules/typebox/build/type/extends/dependent.d.mts +6 -0
- package/node_modules/typebox/build/type/extends/dependent.mjs +6 -0
- package/node_modules/typebox/build/type/extends/enum.d.mts +4 -4
- package/node_modules/typebox/build/type/extends/enum.mjs +3 -2
- package/node_modules/typebox/build/type/extends/extends_left.d.mts +5 -7
- package/node_modules/typebox/build/type/extends/extends_left.mjs +24 -27
- package/node_modules/typebox/build/type/extends/extends_right.d.mts +7 -5
- package/node_modules/typebox/build/type/extends/extends_right.mjs +20 -15
- package/node_modules/typebox/build/type/extends/inference.mjs +1 -1
- package/node_modules/typebox/build/type/extends/object.d.mts +8 -1
- package/node_modules/typebox/build/type/extends/object.mjs +25 -3
- package/node_modules/typebox/build/type/extends/parameters.mjs +2 -2
- package/node_modules/typebox/build/type/extends/record.d.mts +13 -0
- package/node_modules/typebox/build/type/extends/record.mjs +23 -0
- package/node_modules/typebox/build/type/extends/template_literal.d.mts +3 -3
- package/node_modules/typebox/build/type/extends/template_literal.mjs +3 -3
- package/node_modules/typebox/build/type/extends/tuple.d.mts +3 -6
- package/node_modules/typebox/build/type/extends/tuple.mjs +6 -5
- package/node_modules/typebox/build/type/extends/union.mjs +2 -2
- package/node_modules/typebox/build/type/script/mapping.d.mts +84 -99
- package/node_modules/typebox/build/type/script/mapping.mjs +81 -85
- package/node_modules/typebox/build/type/script/parser.d.mts +40 -40
- package/node_modules/typebox/build/type/script/parser.mjs +22 -22
- package/node_modules/typebox/build/type/script/script.d.mts +3 -4
- package/node_modules/typebox/build/type/script/script.mjs +3 -2
- package/node_modules/typebox/build/type/script/token/internal/guard.d.mts +1 -1
- package/node_modules/typebox/build/type/script/token/internal/guard.mjs +1 -1
- package/node_modules/typebox/build/type/script/token/internal/take.mjs +1 -1
- package/node_modules/typebox/build/type/script/token/until.mjs +2 -2
- package/node_modules/typebox/build/type/types/_codec.d.mts +12 -12
- package/node_modules/typebox/build/type/types/_codec.mjs +0 -1
- package/node_modules/typebox/build/type/types/_immutable.d.mts +2 -9
- package/node_modules/typebox/build/type/types/_immutable.mjs +2 -10
- package/node_modules/typebox/build/type/types/_optional.d.mts +2 -9
- package/node_modules/typebox/build/type/types/_optional.mjs +2 -11
- package/node_modules/typebox/build/type/types/_readonly.d.mts +2 -9
- package/node_modules/typebox/build/type/types/_readonly.mjs +2 -10
- package/node_modules/typebox/build/type/types/_refine.d.mts +8 -10
- package/node_modules/typebox/build/type/types/_refine.mjs +1 -2
- package/node_modules/typebox/build/type/types/call.d.mts +3 -3
- package/node_modules/typebox/build/type/types/call.mjs +3 -2
- package/node_modules/typebox/build/type/types/deferred.d.mts +1 -0
- package/node_modules/typebox/build/type/types/deferred.mjs +1 -1
- package/node_modules/typebox/build/type/types/dependent.d.mts +17 -0
- package/node_modules/typebox/build/type/types/dependent.mjs +24 -0
- package/node_modules/typebox/build/type/types/enum.d.mts +3 -1
- package/node_modules/typebox/build/type/types/enum.mjs +5 -0
- package/node_modules/typebox/build/type/types/index.d.mts +1 -4
- package/node_modules/typebox/build/type/types/index.mjs +1 -4
- package/node_modules/typebox/build/type/types/number.d.mts +1 -1
- package/node_modules/typebox/build/type/types/number.mjs +1 -1
- package/node_modules/typebox/build/type/types/record.d.mts +13 -7
- package/node_modules/typebox/build/type/types/record.mjs +15 -9
- package/node_modules/typebox/build/type/types/static.d.mts +2 -5
- package/node_modules/typebox/build/typebox.d.mts +4 -8
- package/node_modules/typebox/build/typebox.mjs +4 -8
- package/node_modules/typebox/build/value/clean/clean.mjs +4 -2
- package/node_modules/typebox/build/value/clean/from_intersect.mjs +2 -2
- package/node_modules/typebox/build/value/clean/from_type.mjs +8 -10
- package/node_modules/typebox/build/value/clean/from_union.d.mts +1 -1
- package/node_modules/typebox/build/value/clean/from_union.mjs +1 -2
- package/node_modules/typebox/build/value/clone/clone.mjs +2 -73
- package/node_modules/typebox/build/value/codec/decode.mjs +4 -2
- package/node_modules/typebox/build/value/codec/encode.mjs +4 -2
- package/node_modules/typebox/build/value/codec/from_array.mjs +1 -4
- package/node_modules/typebox/build/value/codec/from_object.mjs +1 -4
- package/node_modules/typebox/build/value/codec/from_record.mjs +2 -7
- package/node_modules/typebox/build/value/codec/from_tuple.mjs +1 -4
- package/node_modules/typebox/build/value/codec/from_union.mjs +2 -3
- package/node_modules/typebox/build/value/convert/from_enum.mjs +3 -4
- package/node_modules/typebox/build/value/convert/from_template_literal.d.mts +1 -1
- package/node_modules/typebox/build/value/convert/from_template_literal.mjs +2 -3
- package/node_modules/typebox/build/value/convert/from_type.mjs +19 -21
- package/node_modules/typebox/build/value/create/from_enum.mjs +2 -2
- package/node_modules/typebox/build/value/create/from_type.mjs +23 -31
- package/node_modules/typebox/build/value/default/from_object.mjs +1 -1
- package/node_modules/typebox/build/value/default/from_type.mjs +8 -10
- package/node_modules/typebox/build/value/index.d.mts +0 -1
- package/node_modules/typebox/build/value/index.mjs +0 -1
- package/node_modules/typebox/build/value/repair/from_enum.mjs +2 -3
- package/node_modules/typebox/build/value/repair/from_type.mjs +24 -22
- package/node_modules/typebox/build/value/shared/union_priority_sort.d.mts +6 -2
- package/node_modules/typebox/build/value/shared/union_priority_sort.mjs +62 -26
- package/node_modules/typebox/build/value/value.d.mts +0 -1
- package/node_modules/typebox/build/value/value.mjs +0 -1
- package/node_modules/typebox/package.json +25 -25
- package/node_modules/typebox/readme.md +97 -80
- package/npm-shrinkwrap.json +6 -6
- package/package.json +5 -5
- package/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
- package/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
- package/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
- package/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
- package/node_modules/typebox/build/type/action/_optional.d.mts +0 -19
- package/node_modules/typebox/build/type/action/_optional.mjs +0 -40
- package/node_modules/typebox/build/type/action/_readonly.d.mts +0 -19
- package/node_modules/typebox/build/type/action/_readonly.mjs +0 -40
- package/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
- package/node_modules/typebox/build/type/action/awaited.mjs +0 -15
- package/node_modules/typebox/build/type/action/options.d.mts +0 -11
- package/node_modules/typebox/build/type/action/options.mjs +0 -11
- package/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
- package/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
- package/node_modules/typebox/build/type/engine/enum/enum_to_union.d.mts +0 -14
- package/node_modules/typebox/build/type/engine/enum/enum_to_union.mjs +0 -24
- package/node_modules/typebox/build/type/engine/options/index.d.mts +0 -1
- package/node_modules/typebox/build/type/engine/options/index.mjs +0 -1
- package/node_modules/typebox/build/type/engine/options/instantiate.d.mts +0 -8
- package/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
- package/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
- package/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
- package/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
- package/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
- package/node_modules/typebox/build/type/extends/promise.mjs +0 -9
- package/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
- package/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
- package/node_modules/typebox/build/type/types/base.d.mts +0 -50
- package/node_modules/typebox/build/type/types/base.mjs +0 -84
- package/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
- package/node_modules/typebox/build/type/types/iterator.mjs +0 -28
- package/node_modules/typebox/build/type/types/promise.d.mts +0 -21
- package/node_modules/typebox/build/type/types/promise.mjs +0 -29
- package/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
- package/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
- package/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
- package/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_base.mjs +0 -4
- package/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
- package/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
- package/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/default/from_base.mjs +0 -5
- package/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
- package/node_modules/typebox/build/value/mutate/error.mjs +0 -6
- package/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
- package/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
- package/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
- package/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
- package/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
- package/node_modules/typebox/build/value/mutate/index.mjs +0 -1
- package/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
- package/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
- package/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
- /package/node_modules/typebox/build/type/engine/{awaited → with}/index.d.mts +0 -0
- /package/node_modules/typebox/build/type/engine/{awaited → with}/index.mjs +0 -0
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import { type TExtendsAny } from './any.mjs';
|
|
2
2
|
import { type TExtendsArray } from './array.mjs';
|
|
3
|
-
import { type TExtendsAsyncIterator } from './async_iterator.mjs';
|
|
4
3
|
import { type TExtendsBigInt } from './bigint.mjs';
|
|
5
4
|
import { type TExtendsBoolean } from './boolean.mjs';
|
|
6
5
|
import { type TExtendsConstructor } from './constructor.mjs';
|
|
6
|
+
import { type TExtendsDependent } from './dependent.mjs';
|
|
7
7
|
import { type TExtendsEnum } from './enum.mjs';
|
|
8
8
|
import { type TExtendsFunction } from './function.mjs';
|
|
9
9
|
import { type TExtendsInteger } from './integer.mjs';
|
|
10
10
|
import { type TExtendsIntersect } from './intersect.mjs';
|
|
11
|
-
import { type TExtendsIterator } from './iterator.mjs';
|
|
12
11
|
import { type TExtendsLiteral } from './literal.mjs';
|
|
13
12
|
import { type TExtendsNever } from './never.mjs';
|
|
14
13
|
import { type TExtendsNull } from './null.mjs';
|
|
15
14
|
import { type TExtendsNumber } from './number.mjs';
|
|
16
15
|
import { type TExtendsObject } from './object.mjs';
|
|
17
|
-
import { type
|
|
16
|
+
import { type TExtendsRecord } from './record.mjs';
|
|
18
17
|
import { type TExtendsString } from './string.mjs';
|
|
19
18
|
import { type TExtendsSymbol } from './symbol.mjs';
|
|
20
19
|
import { type TExtendsTemplateLiteral } from './template_literal.mjs';
|
|
@@ -25,21 +24,20 @@ import { type TExtendsUnknown } from './unknown.mjs';
|
|
|
25
24
|
import { type TExtendsVoid } from './void.mjs';
|
|
26
25
|
import { type TAny } from '../types/any.mjs';
|
|
27
26
|
import { type TArray } from '../types/array.mjs';
|
|
28
|
-
import { type TAsyncIterator } from '../types/async_iterator.mjs';
|
|
29
27
|
import { type TBigInt } from '../types/bigint.mjs';
|
|
30
28
|
import { type TBoolean } from '../types/boolean.mjs';
|
|
31
29
|
import { type TConstructor } from '../types/constructor.mjs';
|
|
30
|
+
import { type TDependent } from '../types/dependent.mjs';
|
|
32
31
|
import { type TEnum, type TEnumValue } from '../types/enum.mjs';
|
|
33
32
|
import { type TFunction } from '../types/function.mjs';
|
|
34
33
|
import { type TInteger } from '../types/integer.mjs';
|
|
35
34
|
import { type TIntersect } from '../types/intersect.mjs';
|
|
36
|
-
import { type TIterator } from '../types/iterator.mjs';
|
|
37
35
|
import { type TLiteral } from '../types/literal.mjs';
|
|
38
36
|
import { type TNever } from '../types/never.mjs';
|
|
39
37
|
import { type TNull } from '../types/null.mjs';
|
|
40
38
|
import { type TNumber } from '../types/number.mjs';
|
|
41
39
|
import { type TObject } from '../types/object.mjs';
|
|
42
|
-
import { type
|
|
40
|
+
import { type TRecord } from '../types/record.mjs';
|
|
43
41
|
import { type TSchema } from '../types/schema.mjs';
|
|
44
42
|
import { type TString } from '../types/string.mjs';
|
|
45
43
|
import { type TSymbol } from '../types/symbol.mjs';
|
|
@@ -51,5 +49,5 @@ import { type TProperties } from '../types/properties.mjs';
|
|
|
51
49
|
import { type TUnion } from '../types/union.mjs';
|
|
52
50
|
import { type TVoid } from '../types/void.mjs';
|
|
53
51
|
import * as Result from './result.mjs';
|
|
54
|
-
export type TExtendsLeft<Inferred extends TProperties, Left extends TSchema, Right extends TSchema> = (Left extends TAny ? TExtendsAny<Inferred, Left, Right> : Left extends TArray<infer Items extends TSchema> ? TExtendsArray<Inferred, Left, Items, Right> : Left extends
|
|
52
|
+
export type TExtendsLeft<Inferred extends TProperties, Left extends TSchema, Right extends TSchema> = (Left extends TAny ? TExtendsAny<Inferred, Left, Right> : Left extends TArray<infer Items extends TSchema> ? TExtendsArray<Inferred, Left, Items, Right> : Left extends TBigInt ? TExtendsBigInt<Inferred, Left, Right> : Left extends TBoolean ? TExtendsBoolean<Inferred, Left, Right> : Left extends TConstructor<infer Parameters extends TSchema[], infer InstanceType extends TSchema> ? TExtendsConstructor<Inferred, Parameters, InstanceType, Right> : Left extends TDependent<infer If extends TSchema, infer Then extends TSchema, infer Else extends TSchema> ? TExtendsDependent<Inferred, If, Then, Else, Right> : Left extends TEnum<infer Values extends TEnumValue[]> ? TExtendsEnum<Inferred, Values, Right> : Left extends TFunction<infer Parameters extends TSchema[], infer ReturnType extends TSchema> ? TExtendsFunction<Inferred, Parameters, ReturnType, Right> : Left extends TInteger ? TExtendsInteger<Inferred, Left, Right> : Left extends TIntersect<infer Types extends TSchema[]> ? TExtendsIntersect<Inferred, Types, Right> : Left extends TLiteral ? TExtendsLiteral<Inferred, Left, Right> : Left extends TNever ? TExtendsNever<Inferred, Left, Right> : Left extends TNull ? TExtendsNull<Inferred, Left, Right> : Left extends TNumber ? TExtendsNumber<Inferred, Left, Right> : Left extends TObject<infer Properties extends TProperties> ? TExtendsObject<Inferred, Properties, Right> : Left extends TRecord<infer Pattern extends string, infer Value extends TSchema> ? TExtendsRecord<Inferred, Pattern, Value, Right> : Left extends TString ? TExtendsString<Inferred, Left, Right> : Left extends TSymbol ? TExtendsSymbol<Inferred, Left, Right> : Left extends TTemplateLiteral<infer Pattern extends string> ? TExtendsTemplateLiteral<Inferred, Pattern, Right> : Left extends TTuple<infer Types extends TSchema[]> ? TExtendsTuple<Inferred, Types, Right> : Left extends TUndefined ? TExtendsUndefined<Inferred, Left, Right> : Left extends TUnion<infer Types extends TSchema[]> ? TExtendsUnion<Inferred, Types, Right> : Left extends TUnknown ? TExtendsUnknown<Inferred, Left, Right> : Left extends TVoid ? TExtendsVoid<Inferred, Left, Right> : Result.TExtendsFalse);
|
|
55
53
|
export declare function ExtendsLeft<Inferred extends TProperties, Left extends TSchema, Right extends TSchema>(inferred: Inferred, left: Left, right: Right): TExtendsLeft<Inferred, Left, Right>;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
// deno-fmt-ignore-file
|
|
2
2
|
import { ExtendsAny } from './any.mjs';
|
|
3
3
|
import { ExtendsArray } from './array.mjs';
|
|
4
|
-
import { ExtendsAsyncIterator } from './async_iterator.mjs';
|
|
5
4
|
import { ExtendsBigInt } from './bigint.mjs';
|
|
6
5
|
import { ExtendsBoolean } from './boolean.mjs';
|
|
7
6
|
import { ExtendsConstructor } from './constructor.mjs';
|
|
7
|
+
import { ExtendsDependent } from './dependent.mjs';
|
|
8
8
|
import { ExtendsEnum } from './enum.mjs';
|
|
9
9
|
import { ExtendsFunction } from './function.mjs';
|
|
10
10
|
import { ExtendsInteger } from './integer.mjs';
|
|
11
11
|
import { ExtendsIntersect } from './intersect.mjs';
|
|
12
|
-
import { ExtendsIterator } from './iterator.mjs';
|
|
13
12
|
import { ExtendsLiteral } from './literal.mjs';
|
|
14
13
|
import { ExtendsNever } from './never.mjs';
|
|
15
14
|
import { ExtendsNull } from './null.mjs';
|
|
16
15
|
import { ExtendsNumber } from './number.mjs';
|
|
17
16
|
import { ExtendsObject } from './object.mjs';
|
|
18
|
-
import {
|
|
17
|
+
import { ExtendsRecord } from './record.mjs';
|
|
19
18
|
import { ExtendsString } from './string.mjs';
|
|
20
19
|
import { ExtendsSymbol } from './symbol.mjs';
|
|
21
20
|
import { ExtendsTemplateLiteral } from './template_literal.mjs';
|
|
@@ -29,21 +28,20 @@ import { ExtendsVoid } from './void.mjs';
|
|
|
29
28
|
// ----------------------------------------------------------------------------
|
|
30
29
|
import { IsAny } from '../types/any.mjs';
|
|
31
30
|
import { IsArray } from '../types/array.mjs';
|
|
32
|
-
import { IsAsyncIterator } from '../types/async_iterator.mjs';
|
|
33
31
|
import { IsBigInt } from '../types/bigint.mjs';
|
|
34
32
|
import { IsBoolean } from '../types/boolean.mjs';
|
|
35
33
|
import { IsConstructor } from '../types/constructor.mjs';
|
|
34
|
+
import { IsDependent } from '../types/dependent.mjs';
|
|
36
35
|
import { IsEnum } from '../types/enum.mjs';
|
|
37
36
|
import { IsFunction } from '../types/function.mjs';
|
|
38
37
|
import { IsInteger } from '../types/integer.mjs';
|
|
39
38
|
import { IsIntersect } from '../types/intersect.mjs';
|
|
40
|
-
import { IsIterator } from '../types/iterator.mjs';
|
|
41
39
|
import { IsLiteral } from '../types/literal.mjs';
|
|
42
40
|
import { IsNever } from '../types/never.mjs';
|
|
43
41
|
import { IsNull } from '../types/null.mjs';
|
|
44
42
|
import { IsNumber } from '../types/number.mjs';
|
|
45
43
|
import { IsObject } from '../types/object.mjs';
|
|
46
|
-
import {
|
|
44
|
+
import { IsRecord, RecordPattern, RecordValue } from '../types/record.mjs';
|
|
47
45
|
import { IsString } from '../types/string.mjs';
|
|
48
46
|
import { IsSymbol } from '../types/symbol.mjs';
|
|
49
47
|
import { IsTemplateLiteral } from '../types/template_literal.mjs';
|
|
@@ -56,28 +54,27 @@ import * as Result from './result.mjs';
|
|
|
56
54
|
export function ExtendsLeft(inferred, left, right) {
|
|
57
55
|
return (IsAny(left) ? ExtendsAny(inferred, left, right) :
|
|
58
56
|
IsArray(left) ? ExtendsArray(inferred, left, left.items, right) :
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
IsEnum(left) ? ExtendsEnum(inferred, left, right) :
|
|
57
|
+
IsBigInt(left) ? ExtendsBigInt(inferred, left, right) :
|
|
58
|
+
IsBoolean(left) ? ExtendsBoolean(inferred, left, right) :
|
|
59
|
+
IsConstructor(left) ? ExtendsConstructor(inferred, left.parameters, left.instanceType, right) :
|
|
60
|
+
IsDependent(left) ? ExtendsDependent(inferred, left.if, left.then, left.else, right) :
|
|
61
|
+
IsEnum(left) ? ExtendsEnum(inferred, left.enum, right) :
|
|
64
62
|
IsFunction(left) ? ExtendsFunction(inferred, left.parameters, left.returnType, right) :
|
|
65
63
|
IsInteger(left) ? ExtendsInteger(inferred, left, right) :
|
|
66
64
|
IsIntersect(left) ? ExtendsIntersect(inferred, left.allOf, right) :
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
Result.ExtendsFalse());
|
|
65
|
+
IsLiteral(left) ? ExtendsLiteral(inferred, left, right) :
|
|
66
|
+
IsNever(left) ? ExtendsNever(inferred, left, right) :
|
|
67
|
+
IsNull(left) ? ExtendsNull(inferred, left, right) :
|
|
68
|
+
IsNumber(left) ? ExtendsNumber(inferred, left, right) :
|
|
69
|
+
IsObject(left) ? ExtendsObject(inferred, left.properties, right) :
|
|
70
|
+
IsRecord(left) ? ExtendsRecord(inferred, RecordPattern(left), RecordValue(left), right) :
|
|
71
|
+
IsString(left) ? ExtendsString(inferred, left, right) :
|
|
72
|
+
IsSymbol(left) ? ExtendsSymbol(inferred, left, right) :
|
|
73
|
+
IsTemplateLiteral(left) ? ExtendsTemplateLiteral(inferred, left.pattern, right) :
|
|
74
|
+
IsTuple(left) ? ExtendsTuple(inferred, left.items, right) :
|
|
75
|
+
IsUndefined(left) ? ExtendsUndefined(inferred, left, right) :
|
|
76
|
+
IsUnion(left) ? ExtendsUnion(inferred, left.anyOf, right) :
|
|
77
|
+
IsUnknown(left) ? ExtendsUnknown(inferred, left, right) :
|
|
78
|
+
IsVoid(left) ? ExtendsVoid(inferred, left, right) :
|
|
79
|
+
Result.ExtendsFalse());
|
|
83
80
|
}
|
|
@@ -2,6 +2,7 @@ import { Memory } from '../../system/memory/index.mjs';
|
|
|
2
2
|
import { type TSchema } from '../types/schema.mjs';
|
|
3
3
|
import { type TProperties } from '../types/properties.mjs';
|
|
4
4
|
import { type TAny } from '../types/any.mjs';
|
|
5
|
+
import { type TDependent } from '../types/dependent.mjs';
|
|
5
6
|
import { type TEnum, type TEnumValue } from '../types/enum.mjs';
|
|
6
7
|
import { type TInfer } from '../types/infer.mjs';
|
|
7
8
|
import { type TIntersect } from '../types/intersect.mjs';
|
|
@@ -10,16 +11,17 @@ import { type TUnion } from '../types/union.mjs';
|
|
|
10
11
|
import { type TUnknown } from '../types/unknown.mjs';
|
|
11
12
|
import { type TExtendsLeft } from './extends_left.mjs';
|
|
12
13
|
import * as Result from './result.mjs';
|
|
13
|
-
import { type
|
|
14
|
-
import { type
|
|
14
|
+
import { type TEvaluateEnum } from '../engine/evaluate/evaluate.mjs';
|
|
15
|
+
import { type TEvaluateTemplateLiteral } from '../engine/evaluate/evaluate.mjs';
|
|
15
16
|
type TExtendsRightInfer<Inferred extends TProperties, Name extends string, Left extends TSchema, Right extends TSchema, Result extends Result.TResult = (TExtendsLeft<Inferred, Left, Right> extends Result.TExtendsTrueLike<infer CheckInferred extends TProperties> ? Result.TExtendsTrue<Memory.TAssign<Memory.TAssign<Inferred, CheckInferred>, {
|
|
16
17
|
[_ in Name]: Left;
|
|
17
18
|
}>> : Result.TExtendsFalse)> = Result;
|
|
18
19
|
type TExtendsRightAny<Inferred extends TProperties, _Left extends TSchema, Result extends Result.TResult = Result.TExtendsTrue<Inferred>> = Result;
|
|
19
|
-
type
|
|
20
|
+
type TExtendsRightDependent<Inferred extends TProperties, Left extends TSchema, If extends TSchema, Then extends TSchema, Else extends TSchema, Result extends Result.TResult = TExtendsLeft<Inferred, Left, If> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? (TExtendsLeft<Inferred, Left, Then> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse) : (TExtendsLeft<Inferred, Left, Else> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse)> = Result;
|
|
21
|
+
type TExtendsRightEnum<Inferred extends TProperties, Left extends TSchema, Right extends TEnumValue[], Evaluated extends TSchema = TEvaluateEnum<Right>> = TExtendsLeft<Inferred, Left, Evaluated>;
|
|
20
22
|
type TExtendsRightIntersect<Inferred extends TProperties, Left extends TSchema, Right extends TSchema[]> = (Right extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TExtendsLeft<Inferred, Left, Head> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? TExtendsRightIntersect<Inferred, Left, Tail> : Result.TExtendsFalse : Result.TExtendsTrue<Inferred>);
|
|
21
|
-
type TExtendsRightTemplateLiteral<Inferred extends TProperties, Left extends TSchema, Right extends string,
|
|
23
|
+
type TExtendsRightTemplateLiteral<Inferred extends TProperties, Left extends TSchema, Right extends string, Evaluated extends TSchema = TEvaluateTemplateLiteral<Right>> = TExtendsLeft<Inferred, Left, Evaluated>;
|
|
22
24
|
type TExtendsRightUnion<Inferred extends TProperties, Left extends TSchema, Right extends TSchema[]> = (Right extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TExtendsLeft<Inferred, Left, Head> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? Result.TExtendsTrue<Inferred> : TExtendsRightUnion<Inferred, Left, Tail> : Result.TExtendsFalse);
|
|
23
|
-
export type TExtendsRight<Inferred extends TProperties, Left extends TSchema, Right extends TSchema> = (Right extends TAny ? TExtendsRightAny<Inferred, Left> : Right extends TEnum<infer Values extends TEnumValue[]> ? TExtendsRightEnum<Inferred, Left, Values> : Right extends TInfer<infer Name extends string, infer Type extends TSchema> ? TExtendsRightInfer<Inferred, Name, Left, Type> : Right extends TTemplateLiteral<infer Pattern extends string> ? TExtendsRightTemplateLiteral<Inferred, Left, Pattern> : Right extends TIntersect<infer Types extends TSchema[]> ? TExtendsRightIntersect<Inferred, Left, Types> : Right extends TUnion<infer Types extends TSchema[]> ? TExtendsRightUnion<Inferred, Left, Types> : Right extends TUnknown ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse);
|
|
25
|
+
export type TExtendsRight<Inferred extends TProperties, Left extends TSchema, Right extends TSchema> = (Right extends TAny ? TExtendsRightAny<Inferred, Left> : Right extends TDependent<infer If extends TSchema, infer Then extends TSchema, infer Else extends TSchema> ? TExtendsRightDependent<Inferred, Left, If, Then, Else> : Right extends TEnum<infer Values extends TEnumValue[]> ? TExtendsRightEnum<Inferred, Left, Values> : Right extends TInfer<infer Name extends string, infer Type extends TSchema> ? TExtendsRightInfer<Inferred, Name, Left, Type> : Right extends TTemplateLiteral<infer Pattern extends string> ? TExtendsRightTemplateLiteral<Inferred, Left, Pattern> : Right extends TIntersect<infer Types extends TSchema[]> ? TExtendsRightIntersect<Inferred, Left, Types> : Right extends TUnion<infer Types extends TSchema[]> ? TExtendsRightUnion<Inferred, Left, Types> : Right extends TUnknown ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse);
|
|
24
26
|
export declare function ExtendsRight<Inferred extends TProperties, Left extends TSchema, Right extends TSchema>(inferred: Inferred, left: Left, right: Right): TExtendsRight<Inferred, Left, Right>;
|
|
25
27
|
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Guard } from '../../guard/index.mjs';
|
|
3
3
|
import { Memory } from '../../system/memory/index.mjs';
|
|
4
4
|
import { IsAny } from '../types/any.mjs';
|
|
5
|
+
import { IsDependent } from '../types/dependent.mjs';
|
|
5
6
|
import { IsEnum } from '../types/enum.mjs';
|
|
6
7
|
import { IsInfer } from '../types/infer.mjs';
|
|
7
8
|
import { IsIntersect } from '../types/intersect.mjs';
|
|
@@ -10,35 +11,39 @@ import { IsUnion } from '../types/union.mjs';
|
|
|
10
11
|
import { IsUnknown } from '../types/unknown.mjs';
|
|
11
12
|
import { ExtendsLeft } from './extends_left.mjs';
|
|
12
13
|
import * as Result from './result.mjs';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
14
|
+
import { EvaluateEnum } from '../engine/evaluate/evaluate.mjs';
|
|
15
|
+
import { EvaluateTemplateLiteral } from '../engine/evaluate/evaluate.mjs';
|
|
15
16
|
function ExtendsRightInfer(inferred, name, left, right) {
|
|
16
17
|
return Result.Match(ExtendsLeft(inferred, left, right), checkInferred => Result.ExtendsTrue(Memory.Assign(Memory.Assign(inferred, checkInferred), { [name]: left })), () => Result.ExtendsFalse());
|
|
17
18
|
}
|
|
18
19
|
function ExtendsRightAny(inferred, _left) {
|
|
19
20
|
return Result.ExtendsTrue(inferred);
|
|
20
21
|
}
|
|
22
|
+
function ExtendsRightDependent(inferred, left, if_, then_, else_) {
|
|
23
|
+
return Result.Match(ExtendsLeft(inferred, left, if_), inferred => Result.Match(ExtendsLeft(inferred, left, then_), inferred => Result.ExtendsTrue(inferred), () => Result.ExtendsFalse()), () => Result.Match(ExtendsLeft(inferred, left, else_), inferred => Result.ExtendsTrue(inferred), () => Result.ExtendsFalse()));
|
|
24
|
+
}
|
|
21
25
|
function ExtendsRightEnum(inferred, left, right) {
|
|
22
|
-
const
|
|
23
|
-
return ExtendsLeft(inferred, left,
|
|
26
|
+
const evaluated = EvaluateEnum(right);
|
|
27
|
+
return ExtendsLeft(inferred, left, evaluated);
|
|
24
28
|
}
|
|
25
29
|
function ExtendsRightIntersect(inferred, left, right) {
|
|
26
|
-
return Guard.
|
|
30
|
+
return Guard.ShiftLeft(right, (head, tail) => Result.Match(ExtendsLeft(inferred, left, head), inferred => ExtendsRightIntersect(inferred, left, tail), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred));
|
|
27
31
|
}
|
|
28
32
|
function ExtendsRightTemplateLiteral(inferred, left, right) {
|
|
29
|
-
const
|
|
30
|
-
return ExtendsLeft(inferred, left,
|
|
33
|
+
const evaluated = EvaluateTemplateLiteral(right);
|
|
34
|
+
return ExtendsLeft(inferred, left, evaluated);
|
|
31
35
|
}
|
|
32
36
|
function ExtendsRightUnion(inferred, left, right) {
|
|
33
|
-
return Guard.
|
|
37
|
+
return Guard.ShiftLeft(right, (head, tail) => Result.Match(ExtendsLeft(inferred, left, head), inferred => Result.ExtendsTrue(inferred), () => ExtendsRightUnion(inferred, left, tail)), () => Result.ExtendsFalse());
|
|
34
38
|
}
|
|
35
39
|
export function ExtendsRight(inferred, left, right) {
|
|
36
40
|
return (IsAny(right) ? ExtendsRightAny(inferred, left) :
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Result.
|
|
41
|
+
IsDependent(right) ? ExtendsRightDependent(inferred, left, right.if, right.then, right.else) :
|
|
42
|
+
IsEnum(right) ? ExtendsRightEnum(inferred, left, right.enum) :
|
|
43
|
+
IsInfer(right) ? ExtendsRightInfer(inferred, right.name, left, right.extends) :
|
|
44
|
+
IsIntersect(right) ? ExtendsRightIntersect(inferred, left, right.allOf) :
|
|
45
|
+
IsTemplateLiteral(right) ? ExtendsRightTemplateLiteral(inferred, left, right.pattern) :
|
|
46
|
+
IsUnion(right) ? ExtendsRightUnion(inferred, left, right.anyOf) :
|
|
47
|
+
IsUnknown(right) ? Result.ExtendsTrue(inferred) :
|
|
48
|
+
Result.ExtendsFalse());
|
|
44
49
|
}
|
|
@@ -46,7 +46,7 @@ export function TryInferable(type) {
|
|
|
46
46
|
undefined);
|
|
47
47
|
}
|
|
48
48
|
function TryInferResults(rest, right, result = []) {
|
|
49
|
-
return Guard.
|
|
49
|
+
return Guard.ShiftLeft(rest, (head, tail) => Result.Match(ExtendsLeft({}, head, right), () => TryInferResults(tail, right, [...result, head]), () => undefined), () => result);
|
|
50
50
|
}
|
|
51
51
|
export function InferTupleResult(inferred, name, left, right) {
|
|
52
52
|
const results = TryInferResults(left, right);
|
|
@@ -6,6 +6,8 @@ import { type TOptional } from '../types/_optional.mjs';
|
|
|
6
6
|
import { type TInfer } from '../types/infer.mjs';
|
|
7
7
|
import { type TNever } from '../types/never.mjs';
|
|
8
8
|
import { type TObject } from '../types/object.mjs';
|
|
9
|
+
import { type TRecord } from '../types/record.mjs';
|
|
10
|
+
import { type TUnion } from '../types/union.mjs';
|
|
9
11
|
import { type TExtendsLeft } from './extends_left.mjs';
|
|
10
12
|
import { type TExtendsRight } from './extends_right.mjs';
|
|
11
13
|
import { type TUnionToTuple } from '../engine/helpers/union.mjs';
|
|
@@ -20,6 +22,11 @@ type TExtendsPropertiesComparer<Inferred extends TProperties, Left extends TProp
|
|
|
20
22
|
}, Checked extends boolean = Properties[keyof Right] extends Result.TExtendsTrueLike ? true : false, Extracted extends TProperties = Checked extends true ? TExtractInferredProperties<TUnionToTuple<keyof Properties>, Properties> : {}> = (Checked extends true ? Result.TExtendsTrue<Extracted> : Result.TExtendsFalse);
|
|
21
23
|
type TExtendsProperties<Inferred extends TProperties, Left extends TProperties, Right extends TProperties, Compared extends Result.TResult = TExtendsPropertiesComparer<Inferred, Left, Right>> = (Compared extends Result.TExtendsTrueLike<infer ComparedInferred extends TProperties> ? Result.TExtendsTrue<Memory.TAssign<Inferred, ComparedInferred>> : Result.TExtendsFalse);
|
|
22
24
|
type TExtendsObjectToObject<Inferred extends TProperties, Left extends TProperties, Right extends TProperties> = (TExtendsProperties<Inferred, Left, Right>);
|
|
23
|
-
|
|
25
|
+
type TRecordMergeInferred<Left extends TProperties, Right extends TProperties, Result extends TProperties = {
|
|
26
|
+
[Key in keyof Right]: Key extends keyof Left ? Left[Key] extends TUnion<infer Types extends TSchema[]> ? TUnion<[...Types, Right[Key]]> : TUnion<[Left[Key], Right[Key]]> : Right[Key];
|
|
27
|
+
}> = Result;
|
|
28
|
+
type TExtendsRecordComparer<Properties extends TProperties, Keys extends (keyof Properties)[], Type extends TSchema, Result extends TProperties> = (Keys extends [infer Left extends (keyof Properties), ...infer Right extends (keyof Properties)[]] ? TExtendsLeft<{}, Properties[Left], Type> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? TExtendsRecordComparer<Properties, Right, Type, TRecordMergeInferred<Result, Inferred>> : Result.TExtendsFalse : Result.TExtendsTrue<Result>);
|
|
29
|
+
type TExtendsObjectToRecord<Inferred extends TProperties, Properties extends TProperties, _Pattern extends string, Value extends TSchema, Keys extends (keyof Properties)[] = TUnionToTuple<keyof Properties>, Result extends Result.TResult = TExtendsRecordComparer<Properties, Keys, Value, Inferred>> = Result;
|
|
30
|
+
export type TExtendsObject<Inferred extends TProperties, Left extends TProperties, Right extends TSchema> = (Right extends TRecord<infer Pattern extends string, infer Value extends TSchema> ? TExtendsObjectToRecord<Inferred, Left, Pattern, Value> : Right extends TObject<infer Properties extends TProperties> ? TExtendsObjectToObject<Inferred, Left, Properties> : TExtendsRight<Inferred, TObject<Left>, Right>);
|
|
24
31
|
export declare function ExtendsObject<Inferred extends TProperties, Left extends TProperties, Right extends TSchema>(inferred: Inferred, left: Left, right: Right): TExtendsObject<Inferred, Left, Right>;
|
|
25
32
|
export {};
|
|
@@ -7,6 +7,8 @@ import { IsOptional } from '../types/_optional.mjs';
|
|
|
7
7
|
import { IsInfer } from '../types/infer.mjs';
|
|
8
8
|
import { IsNever } from '../types/never.mjs';
|
|
9
9
|
import { IsObject, Object } from '../types/object.mjs';
|
|
10
|
+
import { IsRecord, RecordPattern, RecordValue } from '../types/record.mjs';
|
|
11
|
+
import { Union, IsUnion } from '../types/union.mjs';
|
|
10
12
|
import { ExtendsLeft } from './extends_left.mjs';
|
|
11
13
|
import { ExtendsRight } from './extends_right.mjs';
|
|
12
14
|
import * as Result from './result.mjs';
|
|
@@ -80,8 +82,28 @@ function ExtendsProperties(inferred, left, right) {
|
|
|
80
82
|
function ExtendsObjectToObject(inferred, left, right) {
|
|
81
83
|
return ExtendsProperties(inferred, left, right);
|
|
82
84
|
}
|
|
85
|
+
function RecordMergeInferred(left, right) {
|
|
86
|
+
return Guard.Keys(right).reduce((result, key) => {
|
|
87
|
+
return {
|
|
88
|
+
...result, [key]: Guard.HasPropertyKey(left, key)
|
|
89
|
+
? IsUnion(result[key])
|
|
90
|
+
// @ts-ignore 5.0.4 cannot see `.anyOf`
|
|
91
|
+
? Union([...result[key].anyOf, right[key]])
|
|
92
|
+
: Union([left[key], right[key]])
|
|
93
|
+
: right[key]
|
|
94
|
+
};
|
|
95
|
+
}, left);
|
|
96
|
+
}
|
|
97
|
+
function ExtendsRecordComparer(properties, keys, type, result) {
|
|
98
|
+
return Guard.ShiftLeft(keys, (left, right) => Result.Match(ExtendsLeft({}, properties[left], type), inferred => ExtendsRecordComparer(properties, right, type, RecordMergeInferred(result, inferred)), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(result));
|
|
99
|
+
}
|
|
100
|
+
function ExtendsObjectToRecord(inferred, properties, _pattern, value) {
|
|
101
|
+
const keys = Guard.Keys(properties);
|
|
102
|
+
const result = ExtendsRecordComparer(properties, keys, value, inferred);
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
83
105
|
export function ExtendsObject(inferred, left, right) {
|
|
84
|
-
return (
|
|
85
|
-
? ExtendsObjectToObject(inferred, left, right.properties)
|
|
86
|
-
|
|
106
|
+
return (IsRecord(right) ? ExtendsObjectToRecord(inferred, left, RecordPattern(right), RecordValue(right)) :
|
|
107
|
+
IsObject(right) ? ExtendsObjectToObject(inferred, left, right.properties) :
|
|
108
|
+
ExtendsRight(inferred, Object(left), right));
|
|
87
109
|
}
|
|
@@ -16,12 +16,12 @@ function ParameterCompare(inferred, left, leftRest, right, rightRest) {
|
|
|
16
16
|
);
|
|
17
17
|
}
|
|
18
18
|
function ParameterRight(inferred, left, leftRest, rightRest) {
|
|
19
|
-
return Guard.
|
|
19
|
+
return Guard.ShiftLeft(rightRest, (head, tail) => ParameterCompare(inferred, left, leftRest, head, tail), () => IsOptional(left) // 'right-did-not-have-enough-elements'
|
|
20
20
|
? Result.ExtendsTrue(inferred) // 'ok: left was optional'
|
|
21
21
|
: Result.ExtendsFalse()); // 'fail: left was required'
|
|
22
22
|
}
|
|
23
23
|
function ParametersLeft(inferred, left, rightRest) {
|
|
24
|
-
return Guard.
|
|
24
|
+
return Guard.ShiftLeft(left, (head, tail) => ParameterRight(inferred, head, tail, rightRest), () => Result.ExtendsTrue(inferred)); // 'ok: no-more-elements-in-left'
|
|
25
25
|
}
|
|
26
26
|
export function ExtendsParameters(inferred, left, right) {
|
|
27
27
|
return ParametersLeft(inferred, left, right);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type TSchema } from '../types/schema.mjs';
|
|
2
|
+
import { type TProperties } from '../types/properties.mjs';
|
|
3
|
+
import { type TAny } from '../types/any.mjs';
|
|
4
|
+
import { type TUnknown } from '../types/unknown.mjs';
|
|
5
|
+
import { type TObject } from '../types/object.mjs';
|
|
6
|
+
import { type TRecordPatternToType, type TRecord } from '../types/record.mjs';
|
|
7
|
+
import { type TExtendsLeft } from './extends_left.mjs';
|
|
8
|
+
import * as Result from './result.mjs';
|
|
9
|
+
export type TFromObject<Inferred extends TProperties, Properties extends TProperties> = keyof Properties extends never ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse;
|
|
10
|
+
type TFromRecord<Inferred extends TProperties, _LeftKey extends TSchema, LeftValue extends TSchema, _RightKey extends TSchema, RightValue extends TSchema> = (TExtendsLeft<Inferred, LeftValue, RightValue>);
|
|
11
|
+
export type TExtendsRecord<Inferred extends TProperties, LeftPattern extends string, LeftValue extends TSchema, Right extends TSchema> = (Right extends TRecord<infer Pattern extends string, infer Value extends TSchema> ? TFromRecord<Inferred, TRecordPatternToType<LeftPattern>, LeftValue, TRecordPatternToType<Pattern>, Value> : Right extends TObject<infer Properties extends TProperties> ? TFromObject<Inferred, Properties> : Right extends TAny ? Result.TExtendsTrue<Inferred> : Right extends TUnknown ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse);
|
|
12
|
+
export declare function ExtendsRecord<Inferred extends TProperties, Pattern extends string, Value extends TSchema, Right extends TSchema>(inferred: Inferred, leftPattern: Pattern, leftValue: Value, right: Right): TExtendsRecord<Inferred, Pattern, Value, Right>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// deno-fmt-ignore-file
|
|
2
|
+
import { Guard } from '../../guard/index.mjs';
|
|
3
|
+
import { IsAny } from '../types/any.mjs';
|
|
4
|
+
import { IsUnknown } from '../types/unknown.mjs';
|
|
5
|
+
import { IsObject } from '../types/object.mjs';
|
|
6
|
+
import { IsRecord, RecordPatternToType, RecordPattern, RecordValue } from '../types/record.mjs';
|
|
7
|
+
import { ExtendsLeft } from './extends_left.mjs';
|
|
8
|
+
import * as Result from './result.mjs';
|
|
9
|
+
function FromObject(inferred, properties) {
|
|
10
|
+
return (Guard.IsEqual(Guard.Keys(properties).length, 0)
|
|
11
|
+
? Result.ExtendsTrue(inferred)
|
|
12
|
+
: Result.ExtendsFalse());
|
|
13
|
+
}
|
|
14
|
+
function FromRecord(inferred, _leftKey, leftValue, _rightKey, rightValue) {
|
|
15
|
+
return ExtendsLeft(inferred, leftValue, rightValue);
|
|
16
|
+
}
|
|
17
|
+
export function ExtendsRecord(inferred, leftPattern, leftValue, right) {
|
|
18
|
+
return (IsRecord(right) ? FromRecord(inferred, RecordPatternToType(leftPattern), leftValue, RecordPatternToType(RecordPattern(right)), RecordValue(right)) :
|
|
19
|
+
IsObject(right) ? FromObject(inferred, right.properties) :
|
|
20
|
+
IsAny(right) ? Result.ExtendsTrue(inferred) :
|
|
21
|
+
IsUnknown(right) ? Result.ExtendsTrue(inferred) :
|
|
22
|
+
Result.ExtendsFalse());
|
|
23
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type TSchema } from '../types/schema.mjs';
|
|
2
2
|
import { type TProperties } from '../types/properties.mjs';
|
|
3
3
|
import { type TExtendsLeft } from './extends_left.mjs';
|
|
4
|
-
import { type
|
|
5
|
-
export type TExtendsTemplateLiteral<Inferred extends TProperties,
|
|
6
|
-
export declare function ExtendsTemplateLiteral<Inferred extends TProperties,
|
|
4
|
+
import { type TEvaluateTemplateLiteral } from '../engine/evaluate/evaluate.mjs';
|
|
5
|
+
export type TExtendsTemplateLiteral<Inferred extends TProperties, Pattern extends string, Right extends TSchema, Evaluated extends TSchema = TEvaluateTemplateLiteral<Pattern>> = TExtendsLeft<Inferred, Evaluated, Right>;
|
|
6
|
+
export declare function ExtendsTemplateLiteral<Inferred extends TProperties, Pattern extends string, Right extends TSchema>(inferred: Inferred, left: Pattern, right: Right): TExtendsTemplateLiteral<Inferred, Pattern, Right>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// deno-fmt-ignore-file
|
|
2
2
|
import { ExtendsLeft } from './extends_left.mjs';
|
|
3
|
-
import {
|
|
3
|
+
import { EvaluateTemplateLiteral } from '../engine/evaluate/evaluate.mjs';
|
|
4
4
|
export function ExtendsTemplateLiteral(inferred, left, right) {
|
|
5
|
-
const
|
|
6
|
-
return ExtendsLeft(inferred,
|
|
5
|
+
const evaluated = EvaluateTemplateLiteral(left);
|
|
6
|
+
return ExtendsLeft(inferred, evaluated, right);
|
|
7
7
|
}
|
|
@@ -6,6 +6,7 @@ import { type TExtendsLeft } from './extends_left.mjs';
|
|
|
6
6
|
import { type TExtendsRight } from './extends_right.mjs';
|
|
7
7
|
import * as Result from './result.mjs';
|
|
8
8
|
import { type TInstantiateElements } from '../engine/instantiate.mjs';
|
|
9
|
+
import { type TState } from '../engine/instantiate.mjs';
|
|
9
10
|
import { type TTryRestInferable, type TTryInferable, type TInferable, type TInferTupleResult, type TInferUnionResult } from './inference.mjs';
|
|
10
11
|
type TReverse<Types extends TSchema[], Result extends TSchema[] = []> = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TReverse<Right, [Left, ...Result]> : Result);
|
|
11
12
|
type TApplyReverse<Types extends TSchema[], Reversed extends boolean> = Reversed extends true ? TReverse<Types> : Types;
|
|
@@ -14,12 +15,8 @@ type TElementsCompare<Inferred extends TProperties, Reversed extends boolean, Le
|
|
|
14
15
|
type TElementsLeft<Inferred extends TProperties, Reversed extends boolean, LeftRest extends TSchema[], Right extends TSchema, RightRest extends TSchema[], Inferable extends TInferable | undefined = TTryRestInferable<Right>> = (Inferable extends TInferable ? TInferTupleResult<Inferred, Inferable['name'], TApplyReverse<LeftRest, Reversed>, Inferable['type']> : LeftRest extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TElementsCompare<Inferred, Reversed, Head, Tail, Right, RightRest> : Result.TExtendsFalse);
|
|
15
16
|
type TElementsRight<Inferred extends TProperties, Reversed extends boolean, LeftRest extends TSchema[], RightRest extends TSchema[]> = (RightRest extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TElementsLeft<Inferred, Reversed, LeftRest, Head, Tail> : LeftRest['length'] extends 0 ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse);
|
|
16
17
|
type TElements<Inferred extends TProperties, Reversed extends boolean, LeftRest extends TSchema[], RightRest extends TSchema[]> = TElementsRight<Inferred, Reversed, LeftRest, RightRest>;
|
|
17
|
-
type TExtendsTupleToTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema[], InstantiatedRight extends TSchema[] = TInstantiateElements<Inferred,
|
|
18
|
-
callstack: [];
|
|
19
|
-
}, Right>, Reversed extends boolean = TReversed<InstantiatedRight>> = TElements<Inferred, Reversed, TApplyReverse<Left, Reversed>, TApplyReverse<InstantiatedRight, Reversed>>;
|
|
18
|
+
type TExtendsTupleToTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema[], InstantiatedRight extends TSchema[] = TInstantiateElements<Inferred, TState<[], []>, Right>, Reversed extends boolean = TReversed<InstantiatedRight>> = TElements<Inferred, Reversed, TApplyReverse<Left, Reversed>, TApplyReverse<InstantiatedRight, Reversed>>;
|
|
20
19
|
type TExtendsTupleToArray<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema, Inferrable extends TInferable | undefined = TTryInferable<Right>> = (Inferrable extends TInferable ? TInferUnionResult<Inferred, Inferrable['name'], Left, Inferrable['type']> : Left extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TExtendsLeft<Inferred, Head, Right> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? TExtendsTupleToArray<Inferred, Tail, Right> : Result.TExtendsFalse : Result.TExtendsTrue<Inferred>);
|
|
21
|
-
export type TExtendsTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema, InstantiatedLeft extends TSchema[] = TInstantiateElements<Inferred,
|
|
22
|
-
callstack: [];
|
|
23
|
-
}, Left>> = (Right extends TTuple<infer Types extends TSchema[]> ? TExtendsTupleToTuple<Inferred, InstantiatedLeft, Types> : Right extends TArray<infer Type extends TSchema> ? TExtendsTupleToArray<Inferred, InstantiatedLeft, Type> : TExtendsRight<Inferred, TTuple<InstantiatedLeft>, Right>);
|
|
20
|
+
export type TExtendsTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema, InstantiatedLeft extends TSchema[] = TInstantiateElements<Inferred, TState<[], []>, Left>> = (Right extends TTuple<infer Types extends TSchema[]> ? TExtendsTupleToTuple<Inferred, InstantiatedLeft, Types> : Right extends TArray<infer Type extends TSchema> ? TExtendsTupleToArray<Inferred, InstantiatedLeft, Type> : TExtendsRight<Inferred, TTuple<InstantiatedLeft>, Right>);
|
|
24
21
|
export declare function ExtendsTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema>(inferred: Inferred, left: Left, right: Right): TExtendsTuple<Inferred, Left, Right>;
|
|
25
22
|
export {};
|
|
@@ -7,6 +7,7 @@ import { ExtendsLeft } from './extends_left.mjs';
|
|
|
7
7
|
import { ExtendsRight } from './extends_right.mjs';
|
|
8
8
|
import * as Result from './result.mjs';
|
|
9
9
|
import { InstantiateElements } from '../engine/instantiate.mjs';
|
|
10
|
+
import { State } from '../engine/instantiate.mjs';
|
|
10
11
|
// ----------------------------------------------------------------------------
|
|
11
12
|
// Inference
|
|
12
13
|
// ----------------------------------------------------------------------------
|
|
@@ -31,10 +32,10 @@ function ElementsLeft(inferred, reversed, leftRest, right, rightRest) {
|
|
|
31
32
|
// Rest Inferrable Right Means we delegate to TInferTupleResult to Generate a Result
|
|
32
33
|
IsInferable(inferable)
|
|
33
34
|
? InferTupleResult(inferred, inferable['name'], ApplyReverse(leftRest, reversed), inferable['type'])
|
|
34
|
-
: Guard.
|
|
35
|
+
: Guard.ShiftLeft(leftRest, (head, tail) => ElementsCompare(inferred, reversed, head, tail, right, rightRest), () => Result.ExtendsFalse()));
|
|
35
36
|
}
|
|
36
37
|
function ElementsRight(inferred, reversed, leftRest, rightRest) {
|
|
37
|
-
return Guard.
|
|
38
|
+
return Guard.ShiftLeft(rightRest, (head, tail) => ElementsLeft(inferred, reversed, leftRest, head, tail), () => Guard.IsEqual(leftRest.length, 0)
|
|
38
39
|
? Result.ExtendsTrue(inferred) // 'Ok: right-empty-and-left-empty'
|
|
39
40
|
: Result.ExtendsFalse()); // 'Fail: right-empty-and-left-not-empty'
|
|
40
41
|
}
|
|
@@ -42,7 +43,7 @@ function Elements(inferred, reversed, leftRest, rightRest) {
|
|
|
42
43
|
return ElementsRight(inferred, reversed, leftRest, rightRest);
|
|
43
44
|
}
|
|
44
45
|
function ExtendsTupleToTuple(inferred, left, right) {
|
|
45
|
-
const instantiatedRight = InstantiateElements(inferred,
|
|
46
|
+
const instantiatedRight = InstantiateElements(inferred, State([], []), right);
|
|
46
47
|
const reversed = Reversed(instantiatedRight);
|
|
47
48
|
return Elements(inferred, reversed, ApplyReverse(left, reversed), ApplyReverse(instantiatedRight, reversed));
|
|
48
49
|
}
|
|
@@ -50,10 +51,10 @@ function ExtendsTupleToArray(inferred, left, right) {
|
|
|
50
51
|
const inferrable = TryInferable(right);
|
|
51
52
|
return (IsInferable(inferrable)
|
|
52
53
|
? InferUnionResult(inferred, inferrable['name'], left, inferrable['type'])
|
|
53
|
-
: Guard.
|
|
54
|
+
: Guard.ShiftLeft(left, (head, tail) => Result.Match(ExtendsLeft(inferred, head, right), inferred => ExtendsTupleToArray(inferred, tail, right), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred)));
|
|
54
55
|
}
|
|
55
56
|
export function ExtendsTuple(inferred, left, right) {
|
|
56
|
-
const instantiatedLeft = InstantiateElements(inferred,
|
|
57
|
+
const instantiatedLeft = InstantiateElements(inferred, State([], []), left);
|
|
57
58
|
return (IsTuple(right) ? ExtendsTupleToTuple(inferred, instantiatedLeft, right.items) :
|
|
58
59
|
IsArray(right) ? ExtendsTupleToArray(inferred, instantiatedLeft, right.items) :
|
|
59
60
|
ExtendsRight(inferred, Tuple(instantiatedLeft), right));
|
|
@@ -8,10 +8,10 @@ import * as Result from './result.mjs';
|
|
|
8
8
|
// ----------------------------------------------------------------------------
|
|
9
9
|
import { IsInferable, TryInferable, InferUnionResult } from './inference.mjs';
|
|
10
10
|
function ExtendsUnionSome(inferred, type, unionTypes) {
|
|
11
|
-
return Guard.
|
|
11
|
+
return Guard.ShiftLeft(unionTypes, (head, tail) => Result.Match(ExtendsLeft(inferred, type, head), inferred => Result.ExtendsTrue(inferred), () => ExtendsUnionSome(inferred, type, tail)), () => Result.ExtendsFalse());
|
|
12
12
|
}
|
|
13
13
|
function ExtendsUnionLeft(inferred, left, right) {
|
|
14
|
-
return Guard.
|
|
14
|
+
return Guard.ShiftLeft(left, (head, tail) => Result.Match(ExtendsUnionSome(inferred, head, right), inferred => ExtendsUnionLeft(inferred, tail, right), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred));
|
|
15
15
|
}
|
|
16
16
|
export function ExtendsUnion(inferred, left, right) {
|
|
17
17
|
const inferrable = TryInferable(right);
|