@sinclair/typebox 0.32.0-dev-16 → 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 (664) 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.mjs +36 -0
  10. package/build/import/system/index.mjs +27 -0
  11. package/build/import/system/policy.d.mts +10 -0
  12. package/build/import/system/policy.mjs +40 -0
  13. package/build/import/system/system.d.mts +3 -0
  14. package/build/import/system/system.mjs +36 -0
  15. package/build/import/type/any/any.d.mts +1 -0
  16. package/build/import/type/any/any.mjs +28 -0
  17. package/build/import/type/any/index.mjs +27 -0
  18. package/build/import/type/array/array.d.mts +7 -0
  19. package/build/import/type/array/array.mjs +28 -0
  20. package/build/import/type/array/index.mjs +27 -0
  21. package/build/import/type/async-iterator/async-iterator.d.mts +1 -0
  22. package/build/import/type/async-iterator/async-iterator.mjs +28 -0
  23. package/build/import/type/async-iterator/index.mjs +27 -0
  24. package/build/import/type/awaited/awaited.d.mts +1 -0
  25. package/build/import/type/awaited/awaited.mjs +37 -0
  26. package/build/import/type/awaited/index.mjs +27 -0
  27. package/build/import/type/bigint/bigint.d.mts +1 -0
  28. package/build/import/type/bigint/bigint.mjs +28 -0
  29. package/build/import/type/bigint/index.mjs +27 -0
  30. package/build/import/type/boolean/boolean.d.mts +1 -0
  31. package/build/import/type/boolean/boolean.mjs +28 -0
  32. package/build/import/type/boolean/index.mjs +27 -0
  33. package/build/import/type/clone/index.mjs +27 -0
  34. package/build/import/type/clone/type.d.mts +2 -0
  35. package/build/import/type/clone/type.mjs +29 -0
  36. package/build/import/type/clone/value.d.mts +1 -0
  37. package/build/import/type/clone/value.mjs +29 -0
  38. package/build/import/type/composite/composite.d.mts +1 -0
  39. package/build/import/type/composite/composite.mjs +28 -0
  40. package/build/import/type/composite/index.mjs +27 -0
  41. package/build/import/type/const/const.d.mts +2 -1
  42. package/build/import/type/const/const.mjs +32 -1
  43. package/build/import/type/const/index.mjs +27 -0
  44. package/build/import/type/constructor/constructor.d.mts +1 -0
  45. package/build/import/type/constructor/constructor.mjs +28 -0
  46. package/build/import/type/constructor/index.mjs +27 -0
  47. package/build/import/type/constructor-parameters/constructor-parameters.d.mts +1 -0
  48. package/build/import/type/constructor-parameters/constructor-parameters.mjs +28 -0
  49. package/build/import/type/constructor-parameters/index.mjs +27 -0
  50. package/build/import/type/date/date.d.mts +6 -0
  51. package/build/import/type/date/date.mjs +28 -0
  52. package/build/import/type/date/index.mjs +27 -0
  53. package/build/import/type/deref/deref.d.mts +1 -0
  54. package/build/import/type/deref/deref.mjs +45 -0
  55. package/build/import/type/deref/index.mjs +27 -0
  56. package/build/import/type/discard/discard.mjs +27 -0
  57. package/build/import/type/discard/index.mjs +27 -0
  58. package/build/import/type/enum/enum.d.mts +1 -0
  59. package/build/import/type/enum/enum.mjs +28 -0
  60. package/build/import/type/enum/index.mjs +27 -0
  61. package/build/import/type/exclude/exclude-from-mapped-result.mjs +30 -0
  62. package/build/import/type/exclude/exclude.d.mts +2 -0
  63. package/build/import/type/exclude/exclude.mjs +30 -0
  64. package/build/import/type/exclude/index.mjs +27 -0
  65. package/build/import/type/extends/extends-check.mjs +200 -1
  66. package/build/import/type/extends/extends-from-mapped-key.mjs +31 -0
  67. package/build/import/type/extends/extends-from-mapped-result.mjs +30 -0
  68. package/build/import/type/extends/extends-undefined.d.mts +1 -0
  69. package/build/import/type/extends/extends-undefined.mjs +30 -0
  70. package/build/import/type/extends/extends.d.mts +3 -0
  71. package/build/import/type/extends/extends.mjs +34 -0
  72. package/build/import/type/extends/index.mjs +27 -0
  73. package/build/import/type/extract/extract-from-mapped-result.mjs +30 -0
  74. package/build/import/type/extract/extract.d.mts +2 -0
  75. package/build/import/type/extract/extract.mjs +30 -0
  76. package/build/import/type/extract/index.mjs +27 -0
  77. package/build/import/type/function/function.d.mts +1 -0
  78. package/build/import/type/function/function.mjs +28 -0
  79. package/build/import/type/function/index.mjs +27 -0
  80. package/build/import/type/guard/index.mjs +27 -0
  81. package/build/import/type/guard/type.d.mts +46 -0
  82. package/build/import/type/guard/type.mjs +111 -1
  83. package/build/import/type/guard/value.d.mts +14 -0
  84. package/build/import/type/guard/value.mjs +41 -0
  85. package/build/import/type/helpers/helpers.d.mts +1 -0
  86. package/build/import/type/helpers/helpers.mjs +28 -0
  87. package/build/import/type/helpers/index.mjs +27 -0
  88. package/build/import/type/index.mjs +27 -0
  89. package/build/import/type/indexed/index.mjs +27 -0
  90. package/build/import/type/indexed/indexed-from-mapped-key.mjs +35 -1
  91. package/build/import/type/indexed/indexed-property-keys.d.mts +1 -0
  92. package/build/import/type/indexed/indexed-property-keys.mjs +36 -0
  93. package/build/import/type/indexed/indexed-result.mjs +42 -0
  94. package/build/import/type/indexed/indexed.d.mts +3 -0
  95. package/build/import/type/indexed/indexed.mjs +33 -0
  96. package/build/import/type/instance-type/index.mjs +27 -0
  97. package/build/import/type/instance-type/instance-type.d.mts +1 -0
  98. package/build/import/type/instance-type/instance-type.mjs +28 -0
  99. package/build/import/type/integer/index.mjs +27 -0
  100. package/build/import/type/integer/integer.d.mts +1 -0
  101. package/build/import/type/integer/integer.mjs +28 -0
  102. package/build/import/type/intersect/index.mjs +27 -0
  103. package/build/import/type/intersect/intersect-create.mjs +35 -0
  104. package/build/import/type/intersect/intersect-evaluated.d.mts +1 -0
  105. package/build/import/type/intersect/intersect-evaluated.mjs +36 -0
  106. package/build/import/type/intersect/intersect-type.mjs +27 -0
  107. package/build/import/type/intersect/intersect.d.mts +1 -0
  108. package/build/import/type/intersect/intersect.mjs +32 -0
  109. package/build/import/type/intrinsic/capitalize.d.mts +1 -0
  110. package/build/import/type/intrinsic/capitalize.mjs +28 -0
  111. package/build/import/type/intrinsic/index.mjs +27 -0
  112. package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +31 -0
  113. package/build/import/type/intrinsic/intrinsic.d.mts +2 -0
  114. package/build/import/type/intrinsic/intrinsic.mjs +43 -1
  115. package/build/import/type/intrinsic/lowercase.d.mts +1 -0
  116. package/build/import/type/intrinsic/lowercase.mjs +28 -0
  117. package/build/import/type/intrinsic/uncapitalize.d.mts +1 -0
  118. package/build/import/type/intrinsic/uncapitalize.mjs +28 -0
  119. package/build/import/type/intrinsic/uppercase.d.mts +1 -0
  120. package/build/import/type/intrinsic/uppercase.mjs +28 -0
  121. package/build/import/type/iterator/index.mjs +27 -0
  122. package/build/import/type/iterator/iterator.d.mts +1 -0
  123. package/build/import/type/iterator/iterator.mjs +28 -0
  124. package/build/import/type/keyof/index.mjs +27 -0
  125. package/build/import/type/keyof/keyof-from-mapped-result.mjs +30 -0
  126. package/build/import/type/keyof/keyof-property-keys.d.mts +2 -0
  127. package/build/import/type/keyof/keyof-property-keys.mjs +47 -0
  128. package/build/import/type/keyof/keyof.d.mts +2 -0
  129. package/build/import/type/keyof/keyof.mjs +33 -0
  130. package/build/import/type/literal/index.mjs +27 -0
  131. package/build/import/type/literal/literal.d.mts +1 -0
  132. package/build/import/type/literal/literal.mjs +28 -0
  133. package/build/import/type/mapped/index.mjs +27 -0
  134. package/build/import/type/mapped/mapped-key.mjs +28 -0
  135. package/build/import/type/mapped/mapped-result.mjs +28 -0
  136. package/build/import/type/mapped/mapped.d.mts +2 -0
  137. package/build/import/type/mapped/mapped.mjs +46 -1
  138. package/build/import/type/modifiers/index.mjs +27 -0
  139. package/build/import/type/modifiers/modifiers.mjs +37 -0
  140. package/build/import/type/never/index.mjs +27 -0
  141. package/build/import/type/never/never.d.mts +1 -0
  142. package/build/import/type/never/never.mjs +28 -0
  143. package/build/import/type/not/index.mjs +27 -0
  144. package/build/import/type/not/not.d.mts +1 -0
  145. package/build/import/type/not/not.mjs +28 -0
  146. package/build/import/type/null/index.mjs +27 -0
  147. package/build/import/type/null/null.d.mts +1 -0
  148. package/build/import/type/null/null.mjs +28 -0
  149. package/build/import/type/number/index.mjs +27 -0
  150. package/build/import/type/number/number.d.mts +1 -0
  151. package/build/import/type/number/number.mjs +28 -0
  152. package/build/import/type/object/index.mjs +27 -0
  153. package/build/import/type/object/object.d.mts +5 -0
  154. package/build/import/type/object/object.mjs +33 -0
  155. package/build/import/type/omit/index.mjs +27 -0
  156. package/build/import/type/omit/omit-from-mapped-key.mjs +31 -0
  157. package/build/import/type/omit/omit.d.mts +3 -0
  158. package/build/import/type/omit/omit.mjs +39 -0
  159. package/build/import/type/operators/index.mjs +27 -0
  160. package/build/import/type/operators/operators.d.mts +8 -0
  161. package/build/import/type/operators/operators.mjs +42 -0
  162. package/build/import/type/optional/index.mjs +27 -0
  163. package/build/import/type/optional/optional.d.mts +1 -0
  164. package/build/import/type/optional/optional.mjs +28 -0
  165. package/build/import/type/parameters/index.mjs +27 -0
  166. package/build/import/type/parameters/parameters.d.mts +1 -0
  167. package/build/import/type/parameters/parameters.mjs +28 -0
  168. package/build/import/type/partial/index.mjs +27 -0
  169. package/build/import/type/partial/partial-from-mapped-result.mjs +30 -0
  170. package/build/import/type/partial/partial.d.mts +2 -0
  171. package/build/import/type/partial/partial.mjs +36 -0
  172. package/build/import/type/patterns/index.mjs +27 -0
  173. package/build/import/type/patterns/patterns.mjs +27 -0
  174. package/build/import/type/pick/index.mjs +27 -0
  175. package/build/import/type/pick/pick-from-mapped-key.mjs +31 -0
  176. package/build/import/type/pick/pick.d.mts +3 -0
  177. package/build/import/type/pick/pick.mjs +34 -0
  178. package/build/import/type/promise/index.mjs +27 -0
  179. package/build/import/type/promise/promise.d.mts +1 -0
  180. package/build/import/type/promise/promise.mjs +28 -0
  181. package/build/import/type/readonly/index.mjs +27 -0
  182. package/build/import/type/readonly/readonly.d.mts +1 -0
  183. package/build/import/type/readonly/readonly.mjs +28 -0
  184. package/build/import/type/readonly-optional/index.mjs +27 -0
  185. package/build/import/type/readonly-optional/readonly-optional.d.mts +1 -0
  186. package/build/import/type/readonly-optional/readonly-optional.mjs +28 -0
  187. package/build/import/type/record/index.mjs +27 -0
  188. package/build/import/type/record/record.d.mts +1 -0
  189. package/build/import/type/record/record.mjs +48 -0
  190. package/build/import/type/recursive/index.mjs +27 -0
  191. package/build/import/type/recursive/recursive.d.mts +1 -0
  192. package/build/import/type/recursive/recursive.mjs +30 -0
  193. package/build/import/type/ref/index.mjs +27 -0
  194. package/build/import/type/ref/ref.d.mts +2 -0
  195. package/build/import/type/ref/ref.mjs +28 -0
  196. package/build/import/type/regexp/index.mjs +27 -0
  197. package/build/import/type/regexp/regexp.d.mts +2 -0
  198. package/build/import/type/regexp/regexp.mjs +28 -0
  199. package/build/import/type/registry/format.d.mts +6 -0
  200. package/build/import/type/registry/format.mjs +34 -0
  201. package/build/import/type/registry/index.mjs +27 -0
  202. package/build/import/type/registry/type.d.mts +6 -0
  203. package/build/import/type/registry/type.mjs +34 -0
  204. package/build/import/type/required/index.mjs +27 -0
  205. package/build/import/type/required/required-from-mapped-result.mjs +30 -0
  206. package/build/import/type/required/required.d.mts +2 -0
  207. package/build/import/type/required/required.mjs +36 -0
  208. package/build/import/type/rest/index.mjs +27 -0
  209. package/build/import/type/rest/rest.d.mts +1 -0
  210. package/build/import/type/rest/rest.mjs +32 -0
  211. package/build/import/type/return-type/index.mjs +27 -0
  212. package/build/import/type/return-type/return-type.d.mts +1 -0
  213. package/build/import/type/return-type/return-type.mjs +28 -0
  214. package/build/import/type/schema/anyschema.mjs +27 -0
  215. package/build/import/type/schema/index.mjs +27 -0
  216. package/build/import/type/schema/schema.d.mts +7 -0
  217. package/build/import/type/schema/schema.mjs +27 -0
  218. package/build/import/type/static/index.mjs +27 -0
  219. package/build/import/type/static/static.d.mts +3 -0
  220. package/build/import/type/static/static.mjs +27 -0
  221. package/build/import/type/strict/index.mjs +27 -0
  222. package/build/import/type/strict/strict.d.mts +1 -0
  223. package/build/import/type/strict/strict.mjs +28 -0
  224. package/build/import/type/string/index.mjs +27 -0
  225. package/build/import/type/string/string.d.mts +7 -0
  226. package/build/import/type/string/string.mjs +28 -0
  227. package/build/import/type/symbol/index.mjs +27 -0
  228. package/build/import/type/symbol/symbol.d.mts +1 -0
  229. package/build/import/type/symbol/symbol.mjs +28 -0
  230. package/build/import/type/symbols/index.mjs +27 -0
  231. package/build/import/type/symbols/symbols.d.mts +5 -0
  232. package/build/import/type/symbols/symbols.mjs +32 -0
  233. package/build/import/type/template-literal/finite.mjs +37 -0
  234. package/build/import/type/template-literal/generate.mjs +37 -0
  235. package/build/import/type/template-literal/index.mjs +27 -0
  236. package/build/import/type/template-literal/parser.d.mts +2 -0
  237. package/build/import/type/template-literal/parser.mjs +44 -0
  238. package/build/import/type/template-literal/pattern.mjs +38 -0
  239. package/build/import/type/template-literal/syntax.d.mts +1 -0
  240. package/build/import/type/template-literal/syntax.mjs +35 -0
  241. package/build/import/type/template-literal/template-literal.d.mts +2 -0
  242. package/build/import/type/template-literal/template-literal.mjs +29 -0
  243. package/build/import/type/template-literal/union.d.mts +1 -0
  244. package/build/import/type/template-literal/union.mjs +31 -0
  245. package/build/import/type/transform/index.mjs +27 -0
  246. package/build/import/type/transform/transform.d.mts +1 -0
  247. package/build/import/type/transform/transform.mjs +36 -0
  248. package/build/import/type/tuple/index.mjs +27 -0
  249. package/build/import/type/tuple/tuple.d.mts +1 -0
  250. package/build/import/type/tuple/tuple.mjs +30 -0
  251. package/build/import/type/type/index.d.mts +1 -0
  252. package/build/import/type/type/index.mjs +34 -0
  253. package/build/import/type/type/javascript.d.mts +19 -0
  254. package/build/import/type/type/javascript.mjs +45 -0
  255. package/build/import/type/type/json.d.mts +62 -1
  256. package/build/import/type/type/json.mjs +82 -1
  257. package/build/import/type/type/type.mjs +30 -0
  258. package/build/import/type/uint8array/index.mjs +27 -0
  259. package/build/import/type/uint8array/uint8array.d.mts +1 -0
  260. package/build/import/type/uint8array/uint8array.mjs +28 -0
  261. package/build/import/type/undefined/index.mjs +27 -0
  262. package/build/import/type/undefined/undefined.d.mts +1 -0
  263. package/build/import/type/undefined/undefined.mjs +28 -0
  264. package/build/import/type/union/index.mjs +27 -0
  265. package/build/import/type/union/union-create.mjs +27 -0
  266. package/build/import/type/union/union-evaluated.d.mts +1 -0
  267. package/build/import/type/union/union-evaluated.mjs +37 -0
  268. package/build/import/type/union/union-type.mjs +27 -0
  269. package/build/import/type/union/union.d.mts +1 -0
  270. package/build/import/type/union/union.mjs +29 -0
  271. package/build/import/type/unknown/index.mjs +27 -0
  272. package/build/import/type/unknown/unknown.d.mts +1 -0
  273. package/build/import/type/unknown/unknown.mjs +28 -0
  274. package/build/import/type/unsafe/index.mjs +27 -0
  275. package/build/import/type/unsafe/unsafe.d.mts +1 -0
  276. package/build/import/type/unsafe/unsafe.mjs +28 -0
  277. package/build/import/type/void/index.mjs +27 -0
  278. package/build/import/type/void/void.d.mts +1 -0
  279. package/build/import/type/void/void.mjs +28 -0
  280. package/build/import/value/cast/cast.d.mts +2 -0
  281. package/build/import/value/cast/cast.mjs +55 -0
  282. package/build/import/value/cast/index.mjs +27 -0
  283. package/build/import/value/check/check.d.mts +2 -0
  284. package/build/import/value/check/check.mjs +46 -1
  285. package/build/import/value/check/index.mjs +27 -0
  286. package/build/import/value/clean/clean.d.mts +2 -0
  287. package/build/import/value/clean/clean.mjs +39 -1
  288. package/build/import/value/clean/index.mjs +27 -0
  289. package/build/import/value/clone/clone.d.mts +1 -0
  290. package/build/import/value/clone/clone.mjs +34 -0
  291. package/build/import/value/clone/index.mjs +27 -0
  292. package/build/import/value/convert/convert.d.mts +2 -0
  293. package/build/import/value/convert/convert.mjs +57 -1
  294. package/build/import/value/convert/index.mjs +27 -0
  295. package/build/import/value/create/create.d.mts +2 -0
  296. package/build/import/value/create/create.mjs +44 -0
  297. package/build/import/value/create/index.mjs +27 -0
  298. package/build/import/value/default/default.d.mts +2 -0
  299. package/build/import/value/default/default.mjs +46 -0
  300. package/build/import/value/default/index.mjs +27 -0
  301. package/build/import/value/delta/delta.mjs +42 -0
  302. package/build/import/value/delta/index.mjs +27 -0
  303. package/build/import/value/deref/deref.d.mts +1 -0
  304. package/build/import/value/deref/deref.mjs +28 -0
  305. package/build/import/value/deref/index.mjs +27 -0
  306. package/build/import/value/equal/equal.d.mts +1 -0
  307. package/build/import/value/equal/equal.mjs +34 -0
  308. package/build/import/value/equal/index.mjs +27 -0
  309. package/build/import/value/guard/guard.d.mts +20 -0
  310. package/build/import/value/guard/guard.mjs +57 -0
  311. package/build/import/value/guard/index.mjs +27 -0
  312. package/build/import/value/hash/hash.d.mts +1 -0
  313. package/build/import/value/hash/hash.mjs +46 -0
  314. package/build/import/value/hash/index.mjs +27 -0
  315. package/build/import/value/index.mjs +39 -0
  316. package/build/import/value/mutate/index.mjs +27 -0
  317. package/build/import/value/mutate/mutate.d.mts +1 -0
  318. package/build/import/value/mutate/mutate.mjs +38 -0
  319. package/build/import/value/pointer/index.mjs +27 -0
  320. package/build/import/value/pointer/pointer.d.mts +5 -0
  321. package/build/import/value/pointer/pointer.mjs +45 -0
  322. package/build/import/value/transform/decode.d.mts +5 -0
  323. package/build/import/value/transform/decode.mjs +50 -0
  324. package/build/import/value/transform/encode.d.mts +6 -0
  325. package/build/import/value/transform/encode.mjs +52 -0
  326. package/build/import/value/transform/has.d.mts +1 -0
  327. package/build/import/value/transform/has.mjs +43 -0
  328. package/build/import/value/transform/index.mjs +27 -0
  329. package/build/import/value/value/index.mjs +27 -0
  330. package/build/import/value/value/value.d.mts +24 -0
  331. package/build/import/value/value/value.mjs +42 -0
  332. package/build/require/compiler/compiler.d.ts +9 -0
  333. package/build/require/compiler/compiler.js +87 -6
  334. package/build/require/compiler/index.js +27 -0
  335. package/build/require/errors/errors.d.ts +3 -0
  336. package/build/require/errors/errors.js +55 -3
  337. package/build/require/errors/function.d.ts +3 -0
  338. package/build/require/errors/function.js +31 -0
  339. package/build/require/errors/index.js +27 -0
  340. package/build/require/index.js +36 -0
  341. package/build/require/system/index.js +27 -0
  342. package/build/require/system/policy.d.ts +10 -0
  343. package/build/require/system/policy.js +40 -0
  344. package/build/require/system/system.d.ts +3 -0
  345. package/build/require/system/system.js +36 -0
  346. package/build/require/type/any/any.d.ts +1 -0
  347. package/build/require/type/any/any.js +28 -0
  348. package/build/require/type/any/index.js +27 -0
  349. package/build/require/type/array/array.d.ts +7 -0
  350. package/build/require/type/array/array.js +28 -0
  351. package/build/require/type/array/index.js +27 -0
  352. package/build/require/type/async-iterator/async-iterator.d.ts +1 -0
  353. package/build/require/type/async-iterator/async-iterator.js +28 -0
  354. package/build/require/type/async-iterator/index.js +27 -0
  355. package/build/require/type/awaited/awaited.d.ts +1 -0
  356. package/build/require/type/awaited/awaited.js +37 -0
  357. package/build/require/type/awaited/index.js +27 -0
  358. package/build/require/type/bigint/bigint.d.ts +1 -0
  359. package/build/require/type/bigint/bigint.js +28 -0
  360. package/build/require/type/bigint/index.js +27 -0
  361. package/build/require/type/boolean/boolean.d.ts +1 -0
  362. package/build/require/type/boolean/boolean.js +28 -0
  363. package/build/require/type/boolean/index.js +27 -0
  364. package/build/require/type/clone/index.js +27 -0
  365. package/build/require/type/clone/type.d.ts +2 -0
  366. package/build/require/type/clone/type.js +29 -0
  367. package/build/require/type/clone/value.d.ts +1 -0
  368. package/build/require/type/clone/value.js +29 -0
  369. package/build/require/type/composite/composite.d.ts +1 -0
  370. package/build/require/type/composite/composite.js +28 -0
  371. package/build/require/type/composite/index.js +27 -0
  372. package/build/require/type/const/const.d.ts +2 -1
  373. package/build/require/type/const/const.js +32 -1
  374. package/build/require/type/const/index.js +27 -0
  375. package/build/require/type/constructor/constructor.d.ts +1 -0
  376. package/build/require/type/constructor/constructor.js +28 -0
  377. package/build/require/type/constructor/index.js +27 -0
  378. package/build/require/type/constructor-parameters/constructor-parameters.d.ts +1 -0
  379. package/build/require/type/constructor-parameters/constructor-parameters.js +28 -0
  380. package/build/require/type/constructor-parameters/index.js +27 -0
  381. package/build/require/type/date/date.d.ts +6 -0
  382. package/build/require/type/date/date.js +28 -0
  383. package/build/require/type/date/index.js +27 -0
  384. package/build/require/type/deref/deref.d.ts +1 -0
  385. package/build/require/type/deref/deref.js +45 -0
  386. package/build/require/type/deref/index.js +27 -0
  387. package/build/require/type/discard/discard.js +27 -0
  388. package/build/require/type/discard/index.js +27 -0
  389. package/build/require/type/enum/enum.d.ts +1 -0
  390. package/build/require/type/enum/enum.js +28 -0
  391. package/build/require/type/enum/index.js +27 -0
  392. package/build/require/type/exclude/exclude-from-mapped-result.js +30 -0
  393. package/build/require/type/exclude/exclude.d.ts +2 -0
  394. package/build/require/type/exclude/exclude.js +30 -0
  395. package/build/require/type/exclude/index.js +27 -0
  396. package/build/require/type/extends/extends-check.js +200 -1
  397. package/build/require/type/extends/extends-from-mapped-key.js +31 -0
  398. package/build/require/type/extends/extends-from-mapped-result.js +30 -0
  399. package/build/require/type/extends/extends-undefined.d.ts +1 -0
  400. package/build/require/type/extends/extends-undefined.js +30 -0
  401. package/build/require/type/extends/extends.d.ts +3 -0
  402. package/build/require/type/extends/extends.js +34 -0
  403. package/build/require/type/extends/index.js +27 -0
  404. package/build/require/type/extract/extract-from-mapped-result.js +30 -0
  405. package/build/require/type/extract/extract.d.ts +2 -0
  406. package/build/require/type/extract/extract.js +30 -0
  407. package/build/require/type/extract/index.js +27 -0
  408. package/build/require/type/function/function.d.ts +1 -0
  409. package/build/require/type/function/function.js +28 -0
  410. package/build/require/type/function/index.js +27 -0
  411. package/build/require/type/guard/index.js +27 -0
  412. package/build/require/type/guard/type.d.ts +46 -0
  413. package/build/require/type/guard/type.js +111 -1
  414. package/build/require/type/guard/value.d.ts +14 -0
  415. package/build/require/type/guard/value.js +41 -0
  416. package/build/require/type/helpers/helpers.d.ts +1 -0
  417. package/build/require/type/helpers/helpers.js +28 -0
  418. package/build/require/type/helpers/index.js +27 -0
  419. package/build/require/type/index.js +27 -0
  420. package/build/require/type/indexed/index.js +27 -0
  421. package/build/require/type/indexed/indexed-from-mapped-key.js +35 -1
  422. package/build/require/type/indexed/indexed-property-keys.d.ts +1 -0
  423. package/build/require/type/indexed/indexed-property-keys.js +36 -0
  424. package/build/require/type/indexed/indexed-result.js +42 -0
  425. package/build/require/type/indexed/indexed.d.ts +3 -0
  426. package/build/require/type/indexed/indexed.js +33 -0
  427. package/build/require/type/instance-type/index.js +27 -0
  428. package/build/require/type/instance-type/instance-type.d.ts +1 -0
  429. package/build/require/type/instance-type/instance-type.js +28 -0
  430. package/build/require/type/integer/index.js +27 -0
  431. package/build/require/type/integer/integer.d.ts +1 -0
  432. package/build/require/type/integer/integer.js +28 -0
  433. package/build/require/type/intersect/index.js +27 -0
  434. package/build/require/type/intersect/intersect-create.js +35 -0
  435. package/build/require/type/intersect/intersect-evaluated.d.ts +1 -0
  436. package/build/require/type/intersect/intersect-evaluated.js +36 -0
  437. package/build/require/type/intersect/intersect-type.js +27 -0
  438. package/build/require/type/intersect/intersect.d.ts +1 -0
  439. package/build/require/type/intersect/intersect.js +32 -0
  440. package/build/require/type/intrinsic/capitalize.d.ts +1 -0
  441. package/build/require/type/intrinsic/capitalize.js +28 -0
  442. package/build/require/type/intrinsic/index.js +27 -0
  443. package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +31 -0
  444. package/build/require/type/intrinsic/intrinsic.d.ts +2 -0
  445. package/build/require/type/intrinsic/intrinsic.js +43 -1
  446. package/build/require/type/intrinsic/lowercase.d.ts +1 -0
  447. package/build/require/type/intrinsic/lowercase.js +28 -0
  448. package/build/require/type/intrinsic/uncapitalize.d.ts +1 -0
  449. package/build/require/type/intrinsic/uncapitalize.js +28 -0
  450. package/build/require/type/intrinsic/uppercase.d.ts +1 -0
  451. package/build/require/type/intrinsic/uppercase.js +28 -0
  452. package/build/require/type/iterator/index.js +27 -0
  453. package/build/require/type/iterator/iterator.d.ts +1 -0
  454. package/build/require/type/iterator/iterator.js +28 -0
  455. package/build/require/type/keyof/index.js +27 -0
  456. package/build/require/type/keyof/keyof-from-mapped-result.js +30 -0
  457. package/build/require/type/keyof/keyof-property-keys.d.ts +2 -0
  458. package/build/require/type/keyof/keyof-property-keys.js +47 -0
  459. package/build/require/type/keyof/keyof.d.ts +2 -0
  460. package/build/require/type/keyof/keyof.js +33 -0
  461. package/build/require/type/literal/index.js +27 -0
  462. package/build/require/type/literal/literal.d.ts +1 -0
  463. package/build/require/type/literal/literal.js +28 -0
  464. package/build/require/type/mapped/index.js +27 -0
  465. package/build/require/type/mapped/mapped-key.js +28 -0
  466. package/build/require/type/mapped/mapped-result.js +28 -0
  467. package/build/require/type/mapped/mapped.d.ts +2 -0
  468. package/build/require/type/mapped/mapped.js +46 -1
  469. package/build/require/type/modifiers/index.js +27 -0
  470. package/build/require/type/modifiers/modifiers.js +37 -0
  471. package/build/require/type/never/index.js +27 -0
  472. package/build/require/type/never/never.d.ts +1 -0
  473. package/build/require/type/never/never.js +28 -0
  474. package/build/require/type/not/index.js +27 -0
  475. package/build/require/type/not/not.d.ts +1 -0
  476. package/build/require/type/not/not.js +28 -0
  477. package/build/require/type/null/index.js +27 -0
  478. package/build/require/type/null/null.d.ts +1 -0
  479. package/build/require/type/null/null.js +28 -0
  480. package/build/require/type/number/index.js +27 -0
  481. package/build/require/type/number/number.d.ts +1 -0
  482. package/build/require/type/number/number.js +28 -0
  483. package/build/require/type/object/index.js +27 -0
  484. package/build/require/type/object/object.d.ts +5 -0
  485. package/build/require/type/object/object.js +33 -0
  486. package/build/require/type/omit/index.js +27 -0
  487. package/build/require/type/omit/omit-from-mapped-key.js +31 -0
  488. package/build/require/type/omit/omit.d.ts +3 -0
  489. package/build/require/type/omit/omit.js +39 -0
  490. package/build/require/type/operators/index.js +27 -0
  491. package/build/require/type/operators/operators.d.ts +8 -0
  492. package/build/require/type/operators/operators.js +42 -0
  493. package/build/require/type/optional/index.js +27 -0
  494. package/build/require/type/optional/optional.d.ts +1 -0
  495. package/build/require/type/optional/optional.js +28 -0
  496. package/build/require/type/parameters/index.js +27 -0
  497. package/build/require/type/parameters/parameters.d.ts +1 -0
  498. package/build/require/type/parameters/parameters.js +28 -0
  499. package/build/require/type/partial/index.js +27 -0
  500. package/build/require/type/partial/partial-from-mapped-result.js +30 -0
  501. package/build/require/type/partial/partial.d.ts +2 -0
  502. package/build/require/type/partial/partial.js +36 -0
  503. package/build/require/type/patterns/index.js +27 -0
  504. package/build/require/type/patterns/patterns.js +27 -0
  505. package/build/require/type/pick/index.js +27 -0
  506. package/build/require/type/pick/pick-from-mapped-key.js +31 -0
  507. package/build/require/type/pick/pick.d.ts +3 -0
  508. package/build/require/type/pick/pick.js +34 -0
  509. package/build/require/type/promise/index.js +27 -0
  510. package/build/require/type/promise/promise.d.ts +1 -0
  511. package/build/require/type/promise/promise.js +28 -0
  512. package/build/require/type/readonly/index.js +27 -0
  513. package/build/require/type/readonly/readonly.d.ts +1 -0
  514. package/build/require/type/readonly/readonly.js +28 -0
  515. package/build/require/type/readonly-optional/index.js +27 -0
  516. package/build/require/type/readonly-optional/readonly-optional.d.ts +1 -0
  517. package/build/require/type/readonly-optional/readonly-optional.js +28 -0
  518. package/build/require/type/record/index.js +27 -0
  519. package/build/require/type/record/record.d.ts +1 -0
  520. package/build/require/type/record/record.js +48 -0
  521. package/build/require/type/recursive/index.js +27 -0
  522. package/build/require/type/recursive/recursive.d.ts +1 -0
  523. package/build/require/type/recursive/recursive.js +30 -0
  524. package/build/require/type/ref/index.js +27 -0
  525. package/build/require/type/ref/ref.d.ts +2 -0
  526. package/build/require/type/ref/ref.js +28 -0
  527. package/build/require/type/regexp/index.js +27 -0
  528. package/build/require/type/regexp/regexp.d.ts +2 -0
  529. package/build/require/type/regexp/regexp.js +28 -0
  530. package/build/require/type/registry/format.d.ts +6 -0
  531. package/build/require/type/registry/format.js +34 -0
  532. package/build/require/type/registry/index.js +27 -0
  533. package/build/require/type/registry/type.d.ts +6 -0
  534. package/build/require/type/registry/type.js +34 -0
  535. package/build/require/type/required/index.js +27 -0
  536. package/build/require/type/required/required-from-mapped-result.js +30 -0
  537. package/build/require/type/required/required.d.ts +2 -0
  538. package/build/require/type/required/required.js +36 -0
  539. package/build/require/type/rest/index.js +27 -0
  540. package/build/require/type/rest/rest.d.ts +1 -0
  541. package/build/require/type/rest/rest.js +32 -0
  542. package/build/require/type/return-type/index.js +27 -0
  543. package/build/require/type/return-type/return-type.d.ts +1 -0
  544. package/build/require/type/return-type/return-type.js +28 -0
  545. package/build/require/type/schema/anyschema.js +27 -0
  546. package/build/require/type/schema/index.js +27 -0
  547. package/build/require/type/schema/schema.d.ts +7 -0
  548. package/build/require/type/schema/schema.js +27 -0
  549. package/build/require/type/static/index.js +27 -0
  550. package/build/require/type/static/static.d.ts +3 -0
  551. package/build/require/type/static/static.js +27 -0
  552. package/build/require/type/strict/index.js +27 -0
  553. package/build/require/type/strict/strict.d.ts +1 -0
  554. package/build/require/type/strict/strict.js +28 -0
  555. package/build/require/type/string/index.js +27 -0
  556. package/build/require/type/string/string.d.ts +7 -0
  557. package/build/require/type/string/string.js +28 -0
  558. package/build/require/type/symbol/index.js +27 -0
  559. package/build/require/type/symbol/symbol.d.ts +1 -0
  560. package/build/require/type/symbol/symbol.js +28 -0
  561. package/build/require/type/symbols/index.js +27 -0
  562. package/build/require/type/symbols/symbols.d.ts +5 -0
  563. package/build/require/type/symbols/symbols.js +32 -0
  564. package/build/require/type/template-literal/finite.js +37 -0
  565. package/build/require/type/template-literal/generate.js +37 -0
  566. package/build/require/type/template-literal/index.js +27 -0
  567. package/build/require/type/template-literal/parser.d.ts +2 -0
  568. package/build/require/type/template-literal/parser.js +44 -0
  569. package/build/require/type/template-literal/pattern.js +38 -0
  570. package/build/require/type/template-literal/syntax.d.ts +1 -0
  571. package/build/require/type/template-literal/syntax.js +35 -0
  572. package/build/require/type/template-literal/template-literal.d.ts +2 -0
  573. package/build/require/type/template-literal/template-literal.js +29 -0
  574. package/build/require/type/template-literal/union.d.ts +1 -0
  575. package/build/require/type/template-literal/union.js +31 -0
  576. package/build/require/type/transform/index.js +27 -0
  577. package/build/require/type/transform/transform.d.ts +1 -0
  578. package/build/require/type/transform/transform.js +36 -0
  579. package/build/require/type/tuple/index.js +27 -0
  580. package/build/require/type/tuple/tuple.d.ts +1 -0
  581. package/build/require/type/tuple/tuple.js +30 -0
  582. package/build/require/type/type/index.d.ts +1 -0
  583. package/build/require/type/type/index.js +34 -0
  584. package/build/require/type/type/javascript.d.ts +19 -0
  585. package/build/require/type/type/javascript.js +45 -0
  586. package/build/require/type/type/json.d.ts +62 -1
  587. package/build/require/type/type/json.js +82 -1
  588. package/build/require/type/type/type.js +30 -0
  589. package/build/require/type/uint8array/index.js +27 -0
  590. package/build/require/type/uint8array/uint8array.d.ts +1 -0
  591. package/build/require/type/uint8array/uint8array.js +28 -0
  592. package/build/require/type/undefined/index.js +27 -0
  593. package/build/require/type/undefined/undefined.d.ts +1 -0
  594. package/build/require/type/undefined/undefined.js +28 -0
  595. package/build/require/type/union/index.js +27 -0
  596. package/build/require/type/union/union-create.js +27 -0
  597. package/build/require/type/union/union-evaluated.d.ts +1 -0
  598. package/build/require/type/union/union-evaluated.js +37 -0
  599. package/build/require/type/union/union-type.js +27 -0
  600. package/build/require/type/union/union.d.ts +1 -0
  601. package/build/require/type/union/union.js +29 -0
  602. package/build/require/type/unknown/index.js +27 -0
  603. package/build/require/type/unknown/unknown.d.ts +1 -0
  604. package/build/require/type/unknown/unknown.js +28 -0
  605. package/build/require/type/unsafe/index.js +27 -0
  606. package/build/require/type/unsafe/unsafe.d.ts +1 -0
  607. package/build/require/type/unsafe/unsafe.js +28 -0
  608. package/build/require/type/void/index.js +27 -0
  609. package/build/require/type/void/void.d.ts +1 -0
  610. package/build/require/type/void/void.js +28 -0
  611. package/build/require/value/cast/cast.d.ts +2 -0
  612. package/build/require/value/cast/cast.js +55 -0
  613. package/build/require/value/cast/index.js +27 -0
  614. package/build/require/value/check/check.d.ts +2 -0
  615. package/build/require/value/check/check.js +46 -1
  616. package/build/require/value/check/index.js +27 -0
  617. package/build/require/value/clean/clean.d.ts +2 -0
  618. package/build/require/value/clean/clean.js +39 -1
  619. package/build/require/value/clean/index.js +27 -0
  620. package/build/require/value/clone/clone.d.ts +1 -0
  621. package/build/require/value/clone/clone.js +34 -0
  622. package/build/require/value/clone/index.js +27 -0
  623. package/build/require/value/convert/convert.d.ts +2 -0
  624. package/build/require/value/convert/convert.js +57 -1
  625. package/build/require/value/convert/index.js +27 -0
  626. package/build/require/value/create/create.d.ts +2 -0
  627. package/build/require/value/create/create.js +44 -0
  628. package/build/require/value/create/index.js +27 -0
  629. package/build/require/value/default/default.d.ts +2 -0
  630. package/build/require/value/default/default.js +46 -0
  631. package/build/require/value/default/index.js +27 -0
  632. package/build/require/value/delta/delta.js +42 -0
  633. package/build/require/value/delta/index.js +27 -0
  634. package/build/require/value/deref/deref.d.ts +1 -0
  635. package/build/require/value/deref/deref.js +28 -0
  636. package/build/require/value/deref/index.js +27 -0
  637. package/build/require/value/equal/equal.d.ts +1 -0
  638. package/build/require/value/equal/equal.js +34 -0
  639. package/build/require/value/equal/index.js +27 -0
  640. package/build/require/value/guard/guard.d.ts +20 -0
  641. package/build/require/value/guard/guard.js +57 -0
  642. package/build/require/value/guard/index.js +27 -0
  643. package/build/require/value/hash/hash.d.ts +1 -0
  644. package/build/require/value/hash/hash.js +46 -0
  645. package/build/require/value/hash/index.js +27 -0
  646. package/build/require/value/index.js +39 -0
  647. package/build/require/value/mutate/index.js +27 -0
  648. package/build/require/value/mutate/mutate.d.ts +1 -0
  649. package/build/require/value/mutate/mutate.js +38 -0
  650. package/build/require/value/pointer/index.js +27 -0
  651. package/build/require/value/pointer/pointer.d.ts +5 -0
  652. package/build/require/value/pointer/pointer.js +45 -0
  653. package/build/require/value/transform/decode.d.ts +5 -0
  654. package/build/require/value/transform/decode.js +50 -0
  655. package/build/require/value/transform/encode.d.ts +6 -0
  656. package/build/require/value/transform/encode.js +52 -0
  657. package/build/require/value/transform/has.d.ts +1 -0
  658. package/build/require/value/transform/has.js +43 -0
  659. package/build/require/value/transform/index.js +27 -0
  660. package/build/require/value/value/index.js +27 -0
  661. package/build/require/value/value/value.d.ts +24 -0
  662. package/build/require/value/value/value.js +42 -0
  663. package/package.json +1 -1
  664. package/readme.md +2 -3
@@ -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 { CloneRest } from '../clone/type.mjs';
2
29
  import { Kind } from '../symbols/index.mjs';
3
30
  export function UnionCreate(T, options) {
@@ -12,5 +12,6 @@ declare function RemoveOptionalFromType<T extends TSchema>(T: T): RemoveOptional
12
12
  type ResolveUnion<T extends TSchema[], R extends TSchema[] = RemoveOptionalFromRest<T>> = (IsUnionOptional<T> extends true ? TOptional<TUnion<R>> : TUnion<R>);
13
13
  declare function ResolveUnion<T extends TSchema[]>(T: T, options: SchemaOptions): ResolveUnion<T>;
14
14
  export type UnionEvaluated<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : ResolveUnion<T>);
15
+ /** `[Json]` Creates an evaluated Union type */
15
16
  export declare function UnionEvaluated<T extends TSchema[], R = UnionEvaluated<T>>(T: [...T], options?: SchemaOptions): R;
16
17
  export {};
@@ -1,10 +1,42 @@
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 { OptionalKind } from '../symbols/index.mjs';
2
29
  import { CloneType } from '../clone/type.mjs';
3
30
  import { Discard } from '../discard/index.mjs';
4
31
  import { Never } from '../never/index.mjs';
5
32
  import { Optional } from '../optional/index.mjs';
6
33
  import { UnionCreate } from './union-create.mjs';
34
+ // ------------------------------------------------------------------
35
+ // TypeGuard
36
+ // ------------------------------------------------------------------
37
+ // prettier-ignore
7
38
  import { TOptional as IsOptionalType } from '../guard/type.mjs';
39
+ // prettier-ignore
8
40
  function IsUnionOptional(T) {
9
41
  const [L, ...R] = T;
10
42
  return (T.length > 0
@@ -13,18 +45,23 @@ function IsUnionOptional(T) {
13
45
  : IsUnionOptional(R)
14
46
  : false);
15
47
  }
48
+ // prettier-ignore
16
49
  function RemoveOptionalFromRest(T) {
17
50
  return (T.map(T => RemoveOptionalFromType(T)));
18
51
  }
52
+ // prettier-ignore
19
53
  function RemoveOptionalFromType(T) {
20
54
  return (Discard(T, [OptionalKind]));
21
55
  }
56
+ // prettier-ignore
22
57
  function ResolveUnion(T, options) {
23
58
  return (IsUnionOptional(T)
24
59
  ? Optional(UnionCreate(RemoveOptionalFromRest(T), options))
25
60
  : UnionCreate(RemoveOptionalFromRest(T), options));
26
61
  }
62
+ /** `[Json]` Creates an evaluated Union type */
27
63
  export function UnionEvaluated(T, options = {}) {
64
+ // prettier-ignore
28
65
  return (T.length === 0 ? Never(options) :
29
66
  T.length === 1 ? CloneType(T[0], options) :
30
67
  ResolveUnion(T, options));
@@ -1 +1,28 @@
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 { Kind } from '../symbols/index.mjs';
@@ -2,4 +2,5 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import { type TNever } from '../never/index.mjs';
3
3
  import type { TUnion } from './union-type.mjs';
4
4
  export type Union<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : TUnion<T>);
5
+ /** `[Json]` Creates a Union type */
5
6
  export declare function Union<T extends TSchema[]>(T: [...T], options?: SchemaOptions): Union<T>;
@@ -1,7 +1,36 @@
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 { Never } from '../never/index.mjs';
2
29
  import { CloneType } from '../clone/type.mjs';
3
30
  import { UnionCreate } from './union-create.mjs';
31
+ /** `[Json]` Creates a Union type */
4
32
  export function Union(T, options = {}) {
33
+ // prettier-ignore
5
34
  return (T.length === 0 ? Never(options) :
6
35
  T.length === 1 ? CloneType(T[0], options) :
7
36
  UnionCreate(T, options));
@@ -1 +1,28 @@
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
  export * from './unknown.mjs';
@@ -4,4 +4,5 @@ export interface TUnknown extends TSchema {
4
4
  [Kind]: 'Unknown';
5
5
  static: unknown;
6
6
  }
7
+ /** `[Json]` Creates an Unknown type */
7
8
  export declare function Unknown(options?: SchemaOptions): TUnknown;
@@ -1,4 +1,32 @@
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 { Kind } from '../symbols/index.mjs';
29
+ /** `[Json]` Creates an Unknown type */
2
30
  export function Unknown(options = {}) {
3
31
  return {
4
32
  ...options,
@@ -1 +1,28 @@
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
  export * from './unsafe.mjs';
@@ -7,4 +7,5 @@ export interface TUnsafe<T> extends TSchema {
7
7
  [Kind]: string;
8
8
  static: T;
9
9
  }
10
+ /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */
10
11
  export declare function Unsafe<T>(options?: UnsafeOptions): TUnsafe<T>;
@@ -1,4 +1,32 @@
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 { Kind } from '../symbols/index.mjs';
29
+ /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */
2
30
  export function Unsafe(options = {}) {
3
31
  return {
4
32
  ...options,
@@ -1 +1,28 @@
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
  export * from './void.mjs';
@@ -5,4 +5,5 @@ export interface TVoid extends TSchema {
5
5
  static: void;
6
6
  type: 'void';
7
7
  }
8
+ /** `[JavaScript]` Creates a Void type */
8
9
  export declare function Void(options?: SchemaOptions): TVoid;
@@ -1,4 +1,32 @@
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 { Kind } from '../symbols/index.mjs';
29
+ /** `[JavaScript]` Creates a Void type */
2
30
  export function Void(options = {}) {
3
31
  return {
4
32
  ...options,
@@ -17,5 +17,7 @@ export declare class ValueCastUnknownTypeError extends Error {
17
17
  readonly schema: TSchema;
18
18
  constructor(schema: TSchema);
19
19
  }
20
+ /** Casts a value into a given type and references. The return value will retain as much information of the original value as possible. */
20
21
  export declare function Cast<T extends TSchema>(schema: T, references: TSchema[], value: unknown): Static<T>;
22
+ /** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
21
23
  export declare function Cast<T extends TSchema>(schema: T, value: unknown): Static<T>;
@@ -1,9 +1,39 @@
1
+ /*--------------------------------------------------------------------------
2
+
3
+ @sinclair/typebox/value
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 { IsPlainObject, IsArray, IsString, IsNumber, IsNull } from '../guard/index.mjs';
2
29
  import { Kind } from '../../type/symbols/index.mjs';
3
30
  import { Create } from '../create/index.mjs';
4
31
  import { Check } from '../check/index.mjs';
5
32
  import { Clone } from '../clone/index.mjs';
6
33
  import { Deref } from '../deref/index.mjs';
34
+ // ------------------------------------------------------------------
35
+ // Errors
36
+ // ------------------------------------------------------------------
7
37
  export class ValueCastArrayUniqueItemsTypeError extends Error {
8
38
  schema;
9
39
  value;
@@ -34,6 +64,14 @@ export class ValueCastUnknownTypeError extends Error {
34
64
  this.schema = schema;
35
65
  }
36
66
  }
67
+ // ------------------------------------------------------------------
68
+ // The following will score a schema against a value. For objects,
69
+ // the score is the tally of points awarded for each property of
70
+ // the value. Property points are (1.0 / propertyCount) to prevent
71
+ // large property counts biasing results. Properties that match
72
+ // literal values are maximally awarded as literals are typically
73
+ // used as union discriminator fields.
74
+ // ------------------------------------------------------------------
37
75
  function ScoreUnion(schema, references, value) {
38
76
  if (schema[Kind] === 'Object' && typeof value === 'object' && !IsNull(value)) {
39
77
  const object = schema;
@@ -71,12 +109,18 @@ function CastUnion(union, references, value) {
71
109
  return Cast(schema, references, value);
72
110
  }
73
111
  }
112
+ // ------------------------------------------------------------------
113
+ // Default
114
+ // ------------------------------------------------------------------
74
115
  function DefaultClone(schema, references, value) {
75
116
  return Check(schema, references, value) ? Clone(value) : Create(schema, references);
76
117
  }
77
118
  function Default(schema, references, value) {
78
119
  return Check(schema, references, value) ? value : Create(schema, references);
79
120
  }
121
+ // ------------------------------------------------------------------
122
+ // Cast
123
+ // ------------------------------------------------------------------
80
124
  function TArray(schema, references, value) {
81
125
  if (Check(schema, references, value))
82
126
  return Clone(value);
@@ -123,6 +167,7 @@ function TObject(schema, references, value) {
123
167
  continue;
124
168
  result[key] = Visit(property, references, value[key]);
125
169
  }
170
+ // additional schema properties
126
171
  if (typeof schema.additionalProperties === 'object') {
127
172
  const propertyNames = Object.getOwnPropertyNames(schema.properties);
128
173
  for (const propertyName of Object.getOwnPropertyNames(value)) {
@@ -168,6 +213,9 @@ function Visit(schema, references, value) {
168
213
  const references_ = IsString(schema.$id) ? [...references, schema] : references;
169
214
  const schema_ = schema;
170
215
  switch (schema[Kind]) {
216
+ // --------------------------------------------------------------
217
+ // Structural
218
+ // --------------------------------------------------------------
171
219
  case 'Array':
172
220
  return TArray(schema_, references_, value);
173
221
  case 'Constructor':
@@ -188,14 +236,21 @@ function Visit(schema, references, value) {
188
236
  return TTuple(schema_, references_, value);
189
237
  case 'Union':
190
238
  return TUnion(schema_, references_, value);
239
+ // --------------------------------------------------------------
240
+ // DefaultClone
241
+ // --------------------------------------------------------------
191
242
  case 'Date':
192
243
  case 'Symbol':
193
244
  case 'Uint8Array':
194
245
  return DefaultClone(schema, references, value);
246
+ // --------------------------------------------------------------
247
+ // Default
248
+ // --------------------------------------------------------------
195
249
  default:
196
250
  return Default(schema_, references_, value);
197
251
  }
198
252
  }
253
+ /** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
199
254
  export function Cast(...args) {
200
255
  return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
201
256
  }
@@ -1 +1,28 @@
1
+ /*--------------------------------------------------------------------------
2
+
3
+ @sinclair/typebox/value
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
  export * from './cast.mjs';
@@ -4,5 +4,7 @@ export declare class ValueCheckUnknownTypeError extends Error {
4
4
  readonly schema: TSchema;
5
5
  constructor(schema: TSchema);
6
6
  }
7
+ /** Returns true if the value matches the given type. */
7
8
  export declare function Check<T extends TSchema>(schema: T, references: TSchema[], value: unknown): value is Static<T>;
9
+ /** Returns true if the value matches the given type. */
8
10
  export declare function Check<T extends TSchema>(schema: T, value: unknown): value is Static<T>;
@@ -1,3 +1,30 @@
1
+ /*--------------------------------------------------------------------------
2
+
3
+ @sinclair/typebox/value
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 { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../guard/index.mjs';
2
29
  import { TypeSystemPolicy } from '../../system/index.mjs';
3
30
  import { Deref } from '../deref/index.mjs';
@@ -8,6 +35,9 @@ import { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';
8
35
  import { TSchema as IsSchemaType } from '../../type/guard/type.mjs';
9
36
  import { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';
10
37
  import { Never } from '../../type/never/index.mjs';
38
+ // --------------------------------------------------------------------------
39
+ // Errors
40
+ // --------------------------------------------------------------------------
11
41
  export class ValueCheckUnknownTypeError extends Error {
12
42
  schema;
13
43
  constructor(schema) {
@@ -15,12 +45,21 @@ export class ValueCheckUnknownTypeError extends Error {
15
45
  this.schema = schema;
16
46
  }
17
47
  }
48
+ // --------------------------------------------------------------------------
49
+ // TypeGuards
50
+ // --------------------------------------------------------------------------
18
51
  function IsAnyOrUnknown(schema) {
19
52
  return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';
20
53
  }
54
+ // --------------------------------------------------------------------------
55
+ // Guards
56
+ // --------------------------------------------------------------------------
21
57
  function IsDefined(value) {
22
58
  return value !== undefined;
23
59
  }
60
+ // --------------------------------------------------------------------------
61
+ // Types
62
+ // --------------------------------------------------------------------------
24
63
  function TAny(schema, references, value) {
25
64
  return true;
26
65
  }
@@ -36,6 +75,7 @@ function TArray(schema, references, value) {
36
75
  if (!value.every((value) => Visit(schema.items, references, value))) {
37
76
  return false;
38
77
  }
78
+ // prettier-ignore
39
79
  if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {
40
80
  const hashed = Hash(element);
41
81
  if (set.has(hashed)) {
@@ -47,8 +87,9 @@ function TArray(schema, references, value) {
47
87
  } return true; })())) {
48
88
  return false;
49
89
  }
90
+ // contains
50
91
  if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {
51
- return true;
92
+ return true; // exit
52
93
  }
53
94
  const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();
54
95
  const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);
@@ -215,6 +256,7 @@ function TObject(schema, references, value) {
215
256
  }
216
257
  if (schema.additionalProperties === false) {
217
258
  const valueKeys = Object.getOwnPropertyNames(value);
259
+ // optimization: value is valid if schemaKey length matches the valueKey length
218
260
  if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {
219
261
  return true;
220
262
  }
@@ -245,9 +287,11 @@ function TRecord(schema, references, value) {
245
287
  }
246
288
  const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];
247
289
  const regex = new RegExp(patternKey);
290
+ // prettier-ignore
248
291
  const check1 = Object.entries(value).every(([key, value]) => {
249
292
  return (regex.test(key)) ? Visit(patternSchema, references, value) : true;
250
293
  });
294
+ // prettier-ignore
251
295
  const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {
252
296
  return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;
253
297
  }) : true;
@@ -414,6 +458,7 @@ function Visit(schema, references, value) {
414
458
  return TKind(schema_, references_, value);
415
459
  }
416
460
  }
461
+ /** Returns true if the value matches the given type. */
417
462
  export function Check(...args) {
418
463
  return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
419
464
  }