@sinclair/typebox 0.32.0-dev-15 → 0.32.0-dev-17

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