@openclaw/google-meet 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.
Files changed (381) hide show
  1. package/dist/{chrome-create-C1akZT_q.js → chrome-create-BhgM0jQO.js} +6 -5
  2. package/dist/{cli-BXICNPAs.js → cli-D364Yrym.js} +4 -4
  3. package/dist/{config-D_YKxh0m.js → config-DDYRr7-P.js} +2 -1
  4. package/dist/{create-CHlW2v6-.js → create-CkkaRlbI.js} +4 -3
  5. package/dist/index.js +177 -141
  6. package/dist/{oauth-DK1mwF2i.js → oauth-75iPDzIn.js} +6 -3
  7. package/node_modules/commander/Readme.md +11 -15
  8. package/node_modules/commander/index.js +14 -17
  9. package/node_modules/commander/lib/argument.js +3 -6
  10. package/node_modules/commander/lib/command.js +46 -33
  11. package/node_modules/commander/lib/error.js +2 -5
  12. package/node_modules/commander/lib/help.js +4 -20
  13. package/node_modules/commander/lib/option.js +3 -6
  14. package/node_modules/commander/lib/suggestSimilar.js +2 -4
  15. package/node_modules/commander/package.json +10 -28
  16. package/node_modules/commander/typings/index.d.ts +3 -3
  17. package/node_modules/typebox/build/compile/validator.d.mts +2 -7
  18. package/node_modules/typebox/build/compile/validator.mjs +6 -36
  19. package/node_modules/typebox/build/error/errors.d.mts +1 -7
  20. package/node_modules/typebox/build/format/_idna.mjs +36 -6
  21. package/node_modules/typebox/build/format/_puny.mjs +4 -1
  22. package/node_modules/typebox/build/format/uuid.d.mts +2 -2
  23. package/node_modules/typebox/build/format/uuid.mjs +3 -3
  24. package/node_modules/typebox/build/guard/emit.d.mts +0 -4
  25. package/node_modules/typebox/build/guard/emit.mjs +0 -8
  26. package/node_modules/typebox/build/guard/guard.d.mts +4 -8
  27. package/node_modules/typebox/build/guard/guard.mjs +5 -13
  28. package/node_modules/typebox/build/schema/engine/boolean.d.mts +3 -3
  29. package/node_modules/typebox/build/schema/engine/boolean.mjs +4 -4
  30. package/node_modules/typebox/build/schema/engine/index.d.mts +0 -1
  31. package/node_modules/typebox/build/schema/engine/index.mjs +0 -1
  32. package/node_modules/typebox/build/schema/engine/schema.mjs +5 -10
  33. package/node_modules/typebox/build/schema/engine/type.mjs +14 -18
  34. package/node_modules/typebox/build/schema/types/dependencies.mjs +1 -1
  35. package/node_modules/typebox/build/schema/types/index.d.mts +0 -1
  36. package/node_modules/typebox/build/schema/types/index.mjs +0 -1
  37. package/node_modules/typebox/build/schema/types/schema.d.mts +1 -1
  38. package/node_modules/typebox/build/schema/types/schema.mjs +2 -2
  39. package/node_modules/typebox/build/system/locale/ar_001.mjs +0 -1
  40. package/node_modules/typebox/build/system/locale/bn_BD.mjs +0 -1
  41. package/node_modules/typebox/build/system/locale/cs_CZ.mjs +0 -1
  42. package/node_modules/typebox/build/system/locale/de_DE.mjs +0 -1
  43. package/node_modules/typebox/build/system/locale/el_GR.mjs +0 -1
  44. package/node_modules/typebox/build/system/locale/en_US.mjs +0 -1
  45. package/node_modules/typebox/build/system/locale/es_419.mjs +0 -1
  46. package/node_modules/typebox/build/system/locale/es_AR.mjs +0 -1
  47. package/node_modules/typebox/build/system/locale/es_ES.mjs +0 -1
  48. package/node_modules/typebox/build/system/locale/es_MX.mjs +0 -1
  49. package/node_modules/typebox/build/system/locale/fa_IR.mjs +0 -1
  50. package/node_modules/typebox/build/system/locale/fil_PH.mjs +0 -1
  51. package/node_modules/typebox/build/system/locale/fr_CA.mjs +0 -1
  52. package/node_modules/typebox/build/system/locale/fr_FR.mjs +0 -1
  53. package/node_modules/typebox/build/system/locale/ha_NG.mjs +0 -1
  54. package/node_modules/typebox/build/system/locale/hi_IN.mjs +0 -1
  55. package/node_modules/typebox/build/system/locale/hu_HU.mjs +0 -1
  56. package/node_modules/typebox/build/system/locale/id_ID.mjs +0 -1
  57. package/node_modules/typebox/build/system/locale/it_IT.mjs +0 -1
  58. package/node_modules/typebox/build/system/locale/ja_JP.mjs +0 -1
  59. package/node_modules/typebox/build/system/locale/ko_KR.mjs +0 -1
  60. package/node_modules/typebox/build/system/locale/ms_MY.mjs +0 -1
  61. package/node_modules/typebox/build/system/locale/nl_NL.mjs +0 -1
  62. package/node_modules/typebox/build/system/locale/pl_PL.mjs +0 -1
  63. package/node_modules/typebox/build/system/locale/pt_BR.mjs +0 -1
  64. package/node_modules/typebox/build/system/locale/pt_PT.mjs +0 -1
  65. package/node_modules/typebox/build/system/locale/ro_RO.mjs +0 -1
  66. package/node_modules/typebox/build/system/locale/ru_RU.mjs +0 -1
  67. package/node_modules/typebox/build/system/locale/sv_SE.mjs +0 -1
  68. package/node_modules/typebox/build/system/locale/sw_TZ.mjs +0 -1
  69. package/node_modules/typebox/build/system/locale/th_TH.mjs +0 -1
  70. package/node_modules/typebox/build/system/locale/tr_TR.mjs +0 -1
  71. package/node_modules/typebox/build/system/locale/uk_UA.mjs +0 -1
  72. package/node_modules/typebox/build/system/locale/ur_PK.mjs +0 -1
  73. package/node_modules/typebox/build/system/locale/vi_VN.mjs +0 -1
  74. package/node_modules/typebox/build/system/locale/yo_NG.mjs +0 -1
  75. package/node_modules/typebox/build/system/locale/zh_Hans.mjs +0 -1
  76. package/node_modules/typebox/build/system/locale/zh_Hant.mjs +0 -1
  77. package/node_modules/typebox/build/system/memory/clone.d.mts +2 -3
  78. package/node_modules/typebox/build/system/memory/clone.mjs +73 -26
  79. package/node_modules/typebox/build/system/settings/settings.d.mts +15 -0
  80. package/node_modules/typebox/build/system/settings/settings.mjs +3 -1
  81. package/node_modules/typebox/build/type/action/_add_immutable.d.mts +11 -0
  82. package/node_modules/typebox/build/type/action/_add_immutable.mjs +11 -0
  83. package/node_modules/typebox/build/type/action/_add_optional.d.mts +11 -0
  84. package/node_modules/typebox/build/type/action/_add_optional.mjs +11 -0
  85. package/node_modules/typebox/build/type/action/_add_readonly.d.mts +11 -0
  86. package/node_modules/typebox/build/type/action/_add_readonly.mjs +11 -0
  87. package/node_modules/typebox/build/type/action/_remove_immutable.d.mts +11 -0
  88. package/node_modules/typebox/build/type/action/_remove_immutable.mjs +11 -0
  89. package/node_modules/typebox/build/type/action/_remove_optional.d.mts +11 -0
  90. package/node_modules/typebox/build/type/action/_remove_optional.mjs +11 -0
  91. package/node_modules/typebox/build/type/action/_remove_readonly.d.mts +11 -0
  92. package/node_modules/typebox/build/type/action/_remove_readonly.mjs +11 -0
  93. package/node_modules/typebox/build/type/action/conditional.d.mts +2 -3
  94. package/node_modules/typebox/build/type/action/conditional.mjs +2 -1
  95. package/node_modules/typebox/build/type/action/index.d.mts +7 -4
  96. package/node_modules/typebox/build/type/action/index.mjs +7 -4
  97. package/node_modules/typebox/build/type/action/mapped.d.mts +2 -3
  98. package/node_modules/typebox/build/type/action/mapped.mjs +2 -1
  99. package/node_modules/typebox/build/type/action/module.d.mts +8 -7
  100. package/node_modules/typebox/build/type/action/module.mjs +7 -6
  101. package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
  102. package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -5
  103. package/node_modules/typebox/build/type/action/with.d.mts +11 -0
  104. package/node_modules/typebox/build/type/action/with.mjs +11 -0
  105. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +1 -1
  106. package/node_modules/typebox/build/type/engine/call/instantiate.d.mts +1 -3
  107. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +3 -2
  108. package/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs +2 -2
  109. package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.d.mts +3 -4
  110. package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs +2 -1
  111. package/node_modules/typebox/build/type/engine/cyclic/candidates.d.mts +2 -3
  112. package/node_modules/typebox/build/type/engine/cyclic/candidates.mjs +3 -6
  113. package/node_modules/typebox/build/type/engine/cyclic/check.d.mts +6 -9
  114. package/node_modules/typebox/build/type/engine/cyclic/check.mjs +10 -16
  115. package/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +1 -4
  116. package/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +9 -15
  117. package/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +1 -4
  118. package/node_modules/typebox/build/type/engine/cyclic/extends.mjs +8 -14
  119. package/node_modules/typebox/build/type/engine/cyclic/instantiate.d.mts +2 -5
  120. package/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs +3 -2
  121. package/node_modules/typebox/build/type/engine/enum/index.d.mts +0 -1
  122. package/node_modules/typebox/build/type/engine/enum/index.mjs +0 -1
  123. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +1 -2
  124. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +2 -6
  125. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +10 -6
  126. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +10 -6
  127. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +2 -1
  128. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +3 -3
  129. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +17 -5
  130. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +34 -8
  131. package/node_modules/typebox/build/type/engine/exclude/operation.d.mts +5 -6
  132. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +11 -12
  133. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +5 -6
  134. package/node_modules/typebox/build/type/engine/extract/operation.mjs +11 -12
  135. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +10 -0
  136. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +14 -0
  137. package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.d.mts +10 -0
  138. package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs +14 -0
  139. package/node_modules/typebox/build/type/engine/index.d.mts +2 -2
  140. package/node_modules/typebox/build/type/engine/index.mjs +2 -2
  141. package/node_modules/typebox/build/type/engine/indexable/from_dependent.d.mts +5 -0
  142. package/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs +8 -0
  143. package/node_modules/typebox/build/type/engine/indexable/from_enum.d.mts +3 -3
  144. package/node_modules/typebox/build/type/engine/indexable/from_enum.mjs +4 -4
  145. package/node_modules/typebox/build/type/engine/indexable/from_template_literal.d.mts +2 -2
  146. package/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs +3 -3
  147. package/node_modules/typebox/build/type/engine/indexable/from_type.d.mts +3 -1
  148. package/node_modules/typebox/build/type/engine/indexable/from_type.mjs +9 -6
  149. package/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +2 -1
  150. package/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +5 -2
  151. package/node_modules/typebox/build/type/engine/instantiate.d.mts +44 -31
  152. package/node_modules/typebox/build/type/engine/instantiate.mjs +82 -83
  153. package/node_modules/typebox/build/type/engine/interface/instantiate.d.mts +3 -6
  154. package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.d.mts +2 -2
  155. package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs +3 -3
  156. package/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +2 -1
  157. package/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +5 -1
  158. package/node_modules/typebox/build/type/engine/mapped/mapped_operation.d.mts +4 -4
  159. package/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs +3 -3
  160. package/node_modules/typebox/build/type/engine/mapped/mapped_variants.d.mts +5 -4
  161. package/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs +10 -5
  162. package/node_modules/typebox/build/type/engine/module/instantiate.d.mts +7 -9
  163. package/node_modules/typebox/build/type/engine/module/instantiate.mjs +17 -15
  164. package/node_modules/typebox/build/type/engine/object/from_dependent.d.mts +5 -0
  165. package/node_modules/typebox/build/type/engine/object/from_dependent.mjs +8 -0
  166. package/node_modules/typebox/build/type/engine/object/from_type.d.mts +3 -1
  167. package/node_modules/typebox/build/type/engine/object/from_type.mjs +8 -5
  168. package/node_modules/typebox/build/type/engine/object/from_union.mjs +2 -2
  169. package/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +10 -0
  170. package/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +14 -0
  171. package/node_modules/typebox/build/type/engine/optional/instantiate_remove.d.mts +10 -0
  172. package/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs +14 -0
  173. package/node_modules/typebox/build/type/engine/parameters/instantiate.d.mts +3 -4
  174. package/node_modules/typebox/build/type/engine/parameters/instantiate.mjs +2 -1
  175. package/node_modules/typebox/build/type/engine/partial/from_dependent.d.mts +5 -0
  176. package/node_modules/typebox/build/type/engine/partial/from_dependent.mjs +8 -0
  177. package/node_modules/typebox/build/type/engine/partial/from_intersect.d.mts +1 -1
  178. package/node_modules/typebox/build/type/engine/partial/from_intersect.mjs +3 -2
  179. package/node_modules/typebox/build/type/engine/partial/from_object.d.mts +2 -2
  180. package/node_modules/typebox/build/type/engine/partial/from_object.mjs +2 -2
  181. package/node_modules/typebox/build/type/engine/partial/from_type.d.mts +3 -1
  182. package/node_modules/typebox/build/type/engine/partial/from_type.mjs +7 -4
  183. package/node_modules/typebox/build/type/engine/priority/index.d.mts +1 -0
  184. package/node_modules/typebox/build/type/engine/priority/index.mjs +1 -0
  185. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +20 -0
  186. package/node_modules/typebox/build/type/engine/priority/priority.mjs +28 -0
  187. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +10 -0
  188. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +14 -0
  189. package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.d.mts +10 -0
  190. package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs +14 -0
  191. package/node_modules/typebox/build/type/engine/readonly_object/from_array.d.mts +2 -2
  192. package/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs +2 -2
  193. package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.d.mts +5 -0
  194. package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs +8 -0
  195. package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.d.mts +1 -1
  196. package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs +3 -2
  197. package/node_modules/typebox/build/type/engine/readonly_object/from_object.d.mts +2 -2
  198. package/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs +2 -2
  199. package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.d.mts +2 -2
  200. package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs +2 -2
  201. package/node_modules/typebox/build/type/engine/readonly_object/from_type.d.mts +3 -1
  202. package/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs +8 -5
  203. package/node_modules/typebox/build/type/engine/record/from_key_enum.d.mts +2 -2
  204. package/node_modules/typebox/build/type/engine/record/from_key_enum.mjs +2 -2
  205. package/node_modules/typebox/build/type/engine/record/from_key_template_literal.d.mts +2 -2
  206. package/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs +2 -2
  207. package/node_modules/typebox/build/type/engine/ref/instantiate.d.mts +3 -3
  208. package/node_modules/typebox/build/type/engine/ref/instantiate.mjs +6 -6
  209. package/node_modules/typebox/build/type/engine/required/from_dependent.d.mts +5 -0
  210. package/node_modules/typebox/build/type/engine/required/from_dependent.mjs +8 -0
  211. package/node_modules/typebox/build/type/engine/required/from_intersect.d.mts +1 -1
  212. package/node_modules/typebox/build/type/engine/required/from_intersect.mjs +3 -2
  213. package/node_modules/typebox/build/type/engine/required/from_object.d.mts +2 -2
  214. package/node_modules/typebox/build/type/engine/required/from_object.mjs +2 -2
  215. package/node_modules/typebox/build/type/engine/required/from_type.d.mts +3 -1
  216. package/node_modules/typebox/build/type/engine/required/from_type.mjs +7 -4
  217. package/node_modules/typebox/build/type/engine/template_literal/decode.mjs +3 -3
  218. package/node_modules/typebox/build/type/engine/template_literal/encode.d.mts +2 -2
  219. package/node_modules/typebox/build/type/engine/template_literal/encode.mjs +6 -6
  220. package/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs +1 -1
  221. package/node_modules/typebox/build/type/engine/template_literal/is_pattern.mjs +1 -0
  222. package/node_modules/typebox/build/type/engine/this/expand_this.d.mts +1 -4
  223. package/node_modules/typebox/build/type/engine/this/expand_this.mjs +7 -13
  224. package/node_modules/typebox/build/type/engine/with/instantiate.d.mts +8 -0
  225. package/node_modules/typebox/build/type/engine/{options → with}/instantiate.mjs +5 -5
  226. package/node_modules/typebox/build/type/extends/dependent.d.mts +6 -0
  227. package/node_modules/typebox/build/type/extends/dependent.mjs +6 -0
  228. package/node_modules/typebox/build/type/extends/enum.d.mts +4 -4
  229. package/node_modules/typebox/build/type/extends/enum.mjs +3 -2
  230. package/node_modules/typebox/build/type/extends/extends_left.d.mts +5 -7
  231. package/node_modules/typebox/build/type/extends/extends_left.mjs +24 -27
  232. package/node_modules/typebox/build/type/extends/extends_right.d.mts +7 -5
  233. package/node_modules/typebox/build/type/extends/extends_right.mjs +20 -15
  234. package/node_modules/typebox/build/type/extends/inference.mjs +1 -1
  235. package/node_modules/typebox/build/type/extends/object.d.mts +8 -1
  236. package/node_modules/typebox/build/type/extends/object.mjs +25 -3
  237. package/node_modules/typebox/build/type/extends/parameters.mjs +2 -2
  238. package/node_modules/typebox/build/type/extends/record.d.mts +13 -0
  239. package/node_modules/typebox/build/type/extends/record.mjs +23 -0
  240. package/node_modules/typebox/build/type/extends/template_literal.d.mts +3 -3
  241. package/node_modules/typebox/build/type/extends/template_literal.mjs +3 -3
  242. package/node_modules/typebox/build/type/extends/tuple.d.mts +3 -6
  243. package/node_modules/typebox/build/type/extends/tuple.mjs +6 -5
  244. package/node_modules/typebox/build/type/extends/union.mjs +2 -2
  245. package/node_modules/typebox/build/type/script/mapping.d.mts +84 -99
  246. package/node_modules/typebox/build/type/script/mapping.mjs +81 -85
  247. package/node_modules/typebox/build/type/script/parser.d.mts +40 -40
  248. package/node_modules/typebox/build/type/script/parser.mjs +22 -22
  249. package/node_modules/typebox/build/type/script/script.d.mts +3 -4
  250. package/node_modules/typebox/build/type/script/script.mjs +3 -2
  251. package/node_modules/typebox/build/type/script/token/internal/guard.d.mts +1 -1
  252. package/node_modules/typebox/build/type/script/token/internal/guard.mjs +1 -1
  253. package/node_modules/typebox/build/type/script/token/internal/take.mjs +1 -1
  254. package/node_modules/typebox/build/type/script/token/until.mjs +2 -2
  255. package/node_modules/typebox/build/type/types/_codec.d.mts +12 -12
  256. package/node_modules/typebox/build/type/types/_codec.mjs +0 -1
  257. package/node_modules/typebox/build/type/types/_immutable.d.mts +2 -9
  258. package/node_modules/typebox/build/type/types/_immutable.mjs +2 -10
  259. package/node_modules/typebox/build/type/types/_optional.d.mts +2 -9
  260. package/node_modules/typebox/build/type/types/_optional.mjs +2 -11
  261. package/node_modules/typebox/build/type/types/_readonly.d.mts +2 -9
  262. package/node_modules/typebox/build/type/types/_readonly.mjs +2 -10
  263. package/node_modules/typebox/build/type/types/_refine.d.mts +8 -10
  264. package/node_modules/typebox/build/type/types/_refine.mjs +1 -2
  265. package/node_modules/typebox/build/type/types/call.d.mts +3 -3
  266. package/node_modules/typebox/build/type/types/call.mjs +3 -2
  267. package/node_modules/typebox/build/type/types/deferred.d.mts +1 -0
  268. package/node_modules/typebox/build/type/types/deferred.mjs +1 -1
  269. package/node_modules/typebox/build/type/types/dependent.d.mts +17 -0
  270. package/node_modules/typebox/build/type/types/dependent.mjs +24 -0
  271. package/node_modules/typebox/build/type/types/enum.d.mts +3 -1
  272. package/node_modules/typebox/build/type/types/enum.mjs +5 -0
  273. package/node_modules/typebox/build/type/types/index.d.mts +1 -4
  274. package/node_modules/typebox/build/type/types/index.mjs +1 -4
  275. package/node_modules/typebox/build/type/types/number.d.mts +1 -1
  276. package/node_modules/typebox/build/type/types/number.mjs +1 -1
  277. package/node_modules/typebox/build/type/types/record.d.mts +13 -7
  278. package/node_modules/typebox/build/type/types/record.mjs +15 -9
  279. package/node_modules/typebox/build/type/types/static.d.mts +2 -5
  280. package/node_modules/typebox/build/typebox.d.mts +4 -8
  281. package/node_modules/typebox/build/typebox.mjs +4 -8
  282. package/node_modules/typebox/build/value/clean/clean.mjs +4 -2
  283. package/node_modules/typebox/build/value/clean/from_intersect.mjs +2 -2
  284. package/node_modules/typebox/build/value/clean/from_type.mjs +8 -10
  285. package/node_modules/typebox/build/value/clean/from_union.d.mts +1 -1
  286. package/node_modules/typebox/build/value/clean/from_union.mjs +1 -2
  287. package/node_modules/typebox/build/value/clone/clone.mjs +2 -73
  288. package/node_modules/typebox/build/value/codec/decode.mjs +4 -2
  289. package/node_modules/typebox/build/value/codec/encode.mjs +4 -2
  290. package/node_modules/typebox/build/value/codec/from_array.mjs +1 -4
  291. package/node_modules/typebox/build/value/codec/from_object.mjs +1 -4
  292. package/node_modules/typebox/build/value/codec/from_record.mjs +2 -7
  293. package/node_modules/typebox/build/value/codec/from_tuple.mjs +1 -4
  294. package/node_modules/typebox/build/value/codec/from_union.mjs +2 -3
  295. package/node_modules/typebox/build/value/convert/from_enum.mjs +3 -4
  296. package/node_modules/typebox/build/value/convert/from_template_literal.d.mts +1 -1
  297. package/node_modules/typebox/build/value/convert/from_template_literal.mjs +2 -3
  298. package/node_modules/typebox/build/value/convert/from_type.mjs +19 -21
  299. package/node_modules/typebox/build/value/create/from_enum.mjs +2 -2
  300. package/node_modules/typebox/build/value/create/from_type.mjs +23 -31
  301. package/node_modules/typebox/build/value/default/from_object.mjs +1 -1
  302. package/node_modules/typebox/build/value/default/from_type.mjs +8 -10
  303. package/node_modules/typebox/build/value/index.d.mts +0 -1
  304. package/node_modules/typebox/build/value/index.mjs +0 -1
  305. package/node_modules/typebox/build/value/repair/from_enum.mjs +2 -3
  306. package/node_modules/typebox/build/value/repair/from_type.mjs +24 -22
  307. package/node_modules/typebox/build/value/shared/union_priority_sort.d.mts +6 -2
  308. package/node_modules/typebox/build/value/shared/union_priority_sort.mjs +62 -26
  309. package/node_modules/typebox/build/value/value.d.mts +0 -1
  310. package/node_modules/typebox/build/value/value.mjs +0 -1
  311. package/node_modules/typebox/package.json +25 -25
  312. package/node_modules/typebox/readme.md +97 -80
  313. package/npm-shrinkwrap.json +12 -12
  314. package/package.json +6 -6
  315. package/node_modules/commander/esm.mjs +0 -16
  316. package/node_modules/commander/typings/esm.d.mts +0 -3
  317. package/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
  318. package/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
  319. package/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
  320. package/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
  321. package/node_modules/typebox/build/type/action/_optional.d.mts +0 -19
  322. package/node_modules/typebox/build/type/action/_optional.mjs +0 -40
  323. package/node_modules/typebox/build/type/action/_readonly.d.mts +0 -19
  324. package/node_modules/typebox/build/type/action/_readonly.mjs +0 -40
  325. package/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
  326. package/node_modules/typebox/build/type/action/awaited.mjs +0 -15
  327. package/node_modules/typebox/build/type/action/options.d.mts +0 -11
  328. package/node_modules/typebox/build/type/action/options.mjs +0 -11
  329. package/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
  330. package/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
  331. package/node_modules/typebox/build/type/engine/enum/enum_to_union.d.mts +0 -14
  332. package/node_modules/typebox/build/type/engine/enum/enum_to_union.mjs +0 -24
  333. package/node_modules/typebox/build/type/engine/options/index.d.mts +0 -1
  334. package/node_modules/typebox/build/type/engine/options/index.mjs +0 -1
  335. package/node_modules/typebox/build/type/engine/options/instantiate.d.mts +0 -8
  336. package/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
  337. package/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
  338. package/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
  339. package/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
  340. package/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
  341. package/node_modules/typebox/build/type/extends/promise.mjs +0 -9
  342. package/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
  343. package/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
  344. package/node_modules/typebox/build/type/types/base.d.mts +0 -50
  345. package/node_modules/typebox/build/type/types/base.mjs +0 -84
  346. package/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
  347. package/node_modules/typebox/build/type/types/iterator.mjs +0 -28
  348. package/node_modules/typebox/build/type/types/promise.d.mts +0 -21
  349. package/node_modules/typebox/build/type/types/promise.mjs +0 -29
  350. package/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
  351. package/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
  352. package/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
  353. package/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
  354. package/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
  355. package/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
  356. package/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
  357. package/node_modules/typebox/build/value/create/from_base.mjs +0 -4
  358. package/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
  359. package/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
  360. package/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
  361. package/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
  362. package/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
  363. package/node_modules/typebox/build/value/default/from_base.mjs +0 -5
  364. package/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
  365. package/node_modules/typebox/build/value/mutate/error.mjs +0 -6
  366. package/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
  367. package/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
  368. package/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
  369. package/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
  370. package/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
  371. package/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
  372. package/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
  373. package/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
  374. package/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
  375. package/node_modules/typebox/build/value/mutate/index.mjs +0 -1
  376. package/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
  377. package/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
  378. package/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
  379. package/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
  380. /package/node_modules/typebox/build/type/engine/{awaited → with}/index.d.mts +0 -0
  381. /package/node_modules/typebox/build/type/engine/{awaited → with}/index.mjs +0 -0
@@ -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 { ExtendsPromise } from './promise.mjs';
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 { IsPromise } from '../types/promise.mjs';
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
- IsAsyncIterator(left) ? ExtendsAsyncIterator(inferred, left.iteratorItems, right) :
60
- IsBigInt(left) ? ExtendsBigInt(inferred, left, right) :
61
- IsBoolean(left) ? ExtendsBoolean(inferred, left, right) :
62
- IsConstructor(left) ? ExtendsConstructor(inferred, left.parameters, left.instanceType, right) :
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
- IsIterator(left) ? ExtendsIterator(inferred, left.iteratorItems, right) :
68
- IsLiteral(left) ? ExtendsLiteral(inferred, left, right) :
69
- IsNever(left) ? ExtendsNever(inferred, left, right) :
70
- IsNull(left) ? ExtendsNull(inferred, left, right) :
71
- IsNumber(left) ? ExtendsNumber(inferred, left, right) :
72
- IsObject(left) ? ExtendsObject(inferred, left.properties, right) :
73
- IsPromise(left) ? ExtendsPromise(inferred, left.item, right) :
74
- IsString(left) ? ExtendsString(inferred, left, right) :
75
- IsSymbol(left) ? ExtendsSymbol(inferred, left, right) :
76
- IsTemplateLiteral(left) ? ExtendsTemplateLiteral(inferred, left.pattern, right) :
77
- IsTuple(left) ? ExtendsTuple(inferred, left.items, right) :
78
- IsUndefined(left) ? ExtendsUndefined(inferred, left, right) :
79
- IsUnion(left) ? ExtendsUnion(inferred, left.anyOf, right) :
80
- IsUnknown(left) ? ExtendsUnknown(inferred, left, right) :
81
- IsVoid(left) ? ExtendsVoid(inferred, left, right) :
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 TTemplateLiteralDecode } from '../engine/template_literal/decode.mjs';
14
- import { type TEnumValuesToUnion } from '../engine/enum/index.mjs';
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 TExtendsRightEnum<Inferred extends TProperties, Left extends TSchema, Right extends TEnumValue[], Union extends TSchema = TEnumValuesToUnion<Right>> = TExtendsLeft<Inferred, Left, Union>;
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, Decoded extends TSchema = TTemplateLiteralDecode<Right>> = TExtendsLeft<Inferred, Left, Decoded>;
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 { TemplateLiteralDecode } from '../engine/template_literal/decode.mjs';
14
- import { EnumValuesToUnion } from '../engine/enum/index.mjs';
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 union = EnumValuesToUnion(right);
23
- return ExtendsLeft(inferred, left, union);
26
+ const evaluated = EvaluateEnum(right);
27
+ return ExtendsLeft(inferred, left, evaluated);
24
28
  }
25
29
  function ExtendsRightIntersect(inferred, left, right) {
26
- return Guard.TakeLeft(right, (head, tail) => Result.Match(ExtendsLeft(inferred, left, head), inferred => ExtendsRightIntersect(inferred, left, tail), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred));
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 decoded = TemplateLiteralDecode(right);
30
- return ExtendsLeft(inferred, left, decoded);
33
+ const evaluated = EvaluateTemplateLiteral(right);
34
+ return ExtendsLeft(inferred, left, evaluated);
31
35
  }
32
36
  function ExtendsRightUnion(inferred, left, right) {
33
- return Guard.TakeLeft(right, (head, tail) => Result.Match(ExtendsLeft(inferred, left, head), inferred => Result.ExtendsTrue(inferred), () => ExtendsRightUnion(inferred, left, tail)), () => Result.ExtendsFalse());
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
- IsEnum(right) ? ExtendsRightEnum(inferred, left, right.enum) :
38
- IsInfer(right) ? ExtendsRightInfer(inferred, right.name, left, right.extends) :
39
- IsIntersect(right) ? ExtendsRightIntersect(inferred, left, right.allOf) :
40
- IsTemplateLiteral(right) ? ExtendsRightTemplateLiteral(inferred, left, right.pattern) :
41
- IsUnion(right) ? ExtendsRightUnion(inferred, left, right.anyOf) :
42
- IsUnknown(right) ? Result.ExtendsTrue(inferred) :
43
- Result.ExtendsFalse());
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.TakeLeft(rest, (head, tail) => Result.Match(ExtendsLeft({}, head, right), () => TryInferResults(tail, right, [...result, head]), () => undefined), () => result);
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
- export type TExtendsObject<Inferred extends TProperties, Left extends TProperties, Right extends TSchema> = (Right extends TObject<infer Properties extends TProperties> ? TExtendsObjectToObject<Inferred, Left, Properties> : TExtendsRight<Inferred, TObject<Left>, Right>);
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 (IsObject(right)
85
- ? ExtendsObjectToObject(inferred, left, right.properties)
86
- : ExtendsRight(inferred, Object(left), right));
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.TakeLeft(rightRest, (head, tail) => ParameterCompare(inferred, left, leftRest, head, tail), () => IsOptional(left) // 'right-did-not-have-enough-elements'
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.TakeLeft(left, (head, tail) => ParameterRight(inferred, head, tail, rightRest), () => Result.ExtendsTrue(inferred)); // 'ok: no-more-elements-in-left'
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 TTemplateLiteralDecode } from '../engine/template_literal/decode.mjs';
5
- export type TExtendsTemplateLiteral<Inferred extends TProperties, Left extends string, Right extends TSchema, Decoded extends TSchema = TTemplateLiteralDecode<Left>> = TExtendsLeft<Inferred, Decoded, Right>;
6
- export declare function ExtendsTemplateLiteral<Inferred extends TProperties, Left extends string, Right extends TSchema>(inferred: Inferred, left: Left, right: Right): TExtendsTemplateLiteral<Inferred, Left, Right>;
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 { TemplateLiteralDecode } from '../engine/template_literal/decode.mjs';
3
+ import { EvaluateTemplateLiteral } from '../engine/evaluate/evaluate.mjs';
4
4
  export function ExtendsTemplateLiteral(inferred, left, right) {
5
- const decoded = TemplateLiteralDecode(left);
6
- return ExtendsLeft(inferred, decoded, right);
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.TakeLeft(leftRest, (head, tail) => ElementsCompare(inferred, reversed, head, tail, right, rightRest), () => Result.ExtendsFalse()));
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.TakeLeft(rightRest, (head, tail) => ElementsLeft(inferred, reversed, leftRest, head, tail), () => Guard.IsEqual(leftRest.length, 0)
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, { callstack: [] }, right);
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.TakeLeft(left, (head, tail) => Result.Match(ExtendsLeft(inferred, head, right), inferred => ExtendsTupleToArray(inferred, tail, right), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred)));
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, { callstack: [] }, left);
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.TakeLeft(unionTypes, (head, tail) => Result.Match(ExtendsLeft(inferred, type, head), inferred => Result.ExtendsTrue(inferred), () => ExtendsUnionSome(inferred, type, tail)), () => Result.ExtendsFalse());
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.TakeLeft(left, (head, tail) => Result.Match(ExtendsUnionSome(inferred, head, right), inferred => ExtendsUnionLeft(inferred, tail, right), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred));
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);