@sinclair/typebox 0.32.0-dev-16 → 0.32.0-dev-18

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 (575) hide show
  1. package/build/import/compiler/compiler.d.mts +9 -0
  2. package/build/import/compiler/compiler.mjs +60 -6
  3. package/build/import/errors/errors.d.mts +3 -0
  4. package/build/import/errors/errors.mjs +28 -3
  5. package/build/import/errors/function.d.mts +3 -0
  6. package/build/import/errors/function.mjs +4 -0
  7. package/build/import/index.mjs +9 -0
  8. package/build/import/system/policy.d.mts +10 -0
  9. package/build/import/system/policy.mjs +13 -0
  10. package/build/import/system/system.d.mts +3 -0
  11. package/build/import/system/system.mjs +9 -0
  12. package/build/import/type/any/any.d.mts +1 -0
  13. package/build/import/type/any/any.mjs +1 -0
  14. package/build/import/type/array/array.d.mts +7 -0
  15. package/build/import/type/array/array.mjs +1 -0
  16. package/build/import/type/async-iterator/async-iterator.d.mts +1 -0
  17. package/build/import/type/async-iterator/async-iterator.mjs +1 -0
  18. package/build/import/type/awaited/awaited.d.mts +7 -6
  19. package/build/import/type/awaited/awaited.mjs +23 -13
  20. package/build/import/type/bigint/bigint.d.mts +1 -0
  21. package/build/import/type/bigint/bigint.mjs +1 -0
  22. package/build/import/type/boolean/boolean.d.mts +1 -0
  23. package/build/import/type/boolean/boolean.mjs +1 -0
  24. package/build/import/type/clone/type.d.mts +2 -0
  25. package/build/import/type/clone/type.mjs +2 -0
  26. package/build/import/type/clone/value.d.mts +1 -0
  27. package/build/import/type/clone/value.mjs +2 -0
  28. package/build/import/type/composite/composite.d.mts +1 -0
  29. package/build/import/type/composite/composite.mjs +1 -0
  30. package/build/import/type/const/const.d.mts +2 -1
  31. package/build/import/type/const/const.mjs +5 -1
  32. package/build/import/type/constructor/constructor.d.mts +1 -0
  33. package/build/import/type/constructor/constructor.mjs +1 -0
  34. package/build/import/type/constructor-parameters/constructor-parameters.d.mts +1 -0
  35. package/build/import/type/constructor-parameters/constructor-parameters.mjs +1 -0
  36. package/build/import/type/date/date.d.mts +6 -0
  37. package/build/import/type/date/date.mjs +1 -0
  38. package/build/import/type/deref/deref.d.mts +1 -0
  39. package/build/import/type/deref/deref.mjs +18 -0
  40. package/build/import/type/enum/enum.d.mts +1 -0
  41. package/build/import/type/enum/enum.mjs +1 -0
  42. package/build/import/type/exclude/exclude-from-mapped-result.mjs +3 -0
  43. package/build/import/type/exclude/exclude.d.mts +2 -0
  44. package/build/import/type/exclude/exclude.mjs +3 -0
  45. package/build/import/type/extends/extends-check.mjs +173 -1
  46. package/build/import/type/extends/extends-from-mapped-key.mjs +4 -0
  47. package/build/import/type/extends/extends-from-mapped-result.mjs +3 -0
  48. package/build/import/type/extends/extends-undefined.d.mts +1 -0
  49. package/build/import/type/extends/extends-undefined.mjs +3 -0
  50. package/build/import/type/extends/extends.d.mts +3 -0
  51. package/build/import/type/extends/extends.mjs +7 -0
  52. package/build/import/type/extract/extract-from-mapped-result.mjs +3 -0
  53. package/build/import/type/extract/extract.d.mts +2 -0
  54. package/build/import/type/extract/extract.mjs +3 -0
  55. package/build/import/type/function/function.d.mts +1 -0
  56. package/build/import/type/function/function.mjs +1 -0
  57. package/build/import/type/guard/type.d.mts +46 -0
  58. package/build/import/type/guard/type.mjs +84 -1
  59. package/build/import/type/guard/value.d.mts +14 -0
  60. package/build/import/type/guard/value.mjs +14 -0
  61. package/build/import/type/helpers/helpers.d.mts +1 -0
  62. package/build/import/type/helpers/helpers.mjs +1 -0
  63. package/build/import/type/indexed/index.d.mts +0 -1
  64. package/build/import/type/indexed/index.mjs +0 -1
  65. package/build/import/type/indexed/indexed-from-mapped-key.d.mts +2 -2
  66. package/build/import/type/indexed/indexed-from-mapped-key.mjs +10 -3
  67. package/build/import/type/indexed/indexed-property-keys.d.mts +1 -0
  68. package/build/import/type/indexed/indexed-property-keys.mjs +9 -0
  69. package/build/import/type/indexed/indexed.d.mts +40 -4
  70. package/build/import/type/indexed/indexed.mjs +84 -5
  71. package/build/import/type/instance-type/instance-type.d.mts +1 -0
  72. package/build/import/type/instance-type/instance-type.mjs +1 -0
  73. package/build/import/type/integer/integer.d.mts +1 -0
  74. package/build/import/type/integer/integer.mjs +1 -0
  75. package/build/import/type/intersect/intersect-create.mjs +8 -0
  76. package/build/import/type/intersect/intersect-evaluated.d.mts +1 -0
  77. package/build/import/type/intersect/intersect-evaluated.mjs +9 -0
  78. package/build/import/type/intersect/intersect.d.mts +1 -0
  79. package/build/import/type/intersect/intersect.mjs +5 -0
  80. package/build/import/type/intrinsic/capitalize.d.mts +1 -0
  81. package/build/import/type/intrinsic/capitalize.mjs +1 -0
  82. package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +4 -0
  83. package/build/import/type/intrinsic/intrinsic.d.mts +2 -0
  84. package/build/import/type/intrinsic/intrinsic.mjs +16 -1
  85. package/build/import/type/intrinsic/lowercase.d.mts +1 -0
  86. package/build/import/type/intrinsic/lowercase.mjs +1 -0
  87. package/build/import/type/intrinsic/uncapitalize.d.mts +1 -0
  88. package/build/import/type/intrinsic/uncapitalize.mjs +1 -0
  89. package/build/import/type/intrinsic/uppercase.d.mts +1 -0
  90. package/build/import/type/intrinsic/uppercase.mjs +1 -0
  91. package/build/import/type/iterator/iterator.d.mts +1 -0
  92. package/build/import/type/iterator/iterator.mjs +1 -0
  93. package/build/import/type/keyof/keyof-from-mapped-result.mjs +3 -0
  94. package/build/import/type/keyof/keyof-property-keys.d.mts +2 -0
  95. package/build/import/type/keyof/keyof-property-keys.mjs +20 -0
  96. package/build/import/type/keyof/keyof.d.mts +2 -0
  97. package/build/import/type/keyof/keyof.mjs +6 -0
  98. package/build/import/type/literal/literal.d.mts +1 -0
  99. package/build/import/type/literal/literal.mjs +1 -0
  100. package/build/import/type/mapped/mapped-key.mjs +1 -0
  101. package/build/import/type/mapped/mapped-result.mjs +1 -0
  102. package/build/import/type/mapped/mapped.d.mts +2 -0
  103. package/build/import/type/mapped/mapped.mjs +19 -1
  104. package/build/import/type/modifiers/modifiers.mjs +10 -0
  105. package/build/import/type/never/never.d.mts +1 -0
  106. package/build/import/type/never/never.mjs +1 -0
  107. package/build/import/type/not/not.d.mts +1 -0
  108. package/build/import/type/not/not.mjs +1 -0
  109. package/build/import/type/null/null.d.mts +1 -0
  110. package/build/import/type/null/null.mjs +1 -0
  111. package/build/import/type/number/number.d.mts +1 -0
  112. package/build/import/type/number/number.mjs +1 -0
  113. package/build/import/type/object/object.d.mts +5 -0
  114. package/build/import/type/object/object.mjs +6 -0
  115. package/build/import/type/omit/omit-from-mapped-key.mjs +4 -0
  116. package/build/import/type/omit/omit.d.mts +3 -0
  117. package/build/import/type/omit/omit.mjs +12 -0
  118. package/build/import/type/operators/operators.d.mts +8 -0
  119. package/build/import/type/operators/operators.mjs +15 -0
  120. package/build/import/type/optional/optional.d.mts +1 -0
  121. package/build/import/type/optional/optional.mjs +1 -0
  122. package/build/import/type/parameters/parameters.d.mts +1 -0
  123. package/build/import/type/parameters/parameters.mjs +1 -0
  124. package/build/import/type/partial/partial-from-mapped-result.mjs +3 -0
  125. package/build/import/type/partial/partial.d.mts +2 -0
  126. package/build/import/type/partial/partial.mjs +9 -0
  127. package/build/import/type/pick/pick-from-mapped-key.mjs +4 -0
  128. package/build/import/type/pick/pick.d.mts +3 -0
  129. package/build/import/type/pick/pick.mjs +7 -0
  130. package/build/import/type/promise/promise.d.mts +1 -0
  131. package/build/import/type/promise/promise.mjs +1 -0
  132. package/build/import/type/readonly/readonly.d.mts +1 -0
  133. package/build/import/type/readonly/readonly.mjs +1 -0
  134. package/build/import/type/readonly-optional/readonly-optional.d.mts +1 -0
  135. package/build/import/type/readonly-optional/readonly-optional.mjs +1 -0
  136. package/build/import/type/record/record.d.mts +11 -9
  137. package/build/import/type/record/record.mjs +53 -28
  138. package/build/import/type/recursive/recursive.d.mts +1 -0
  139. package/build/import/type/recursive/recursive.mjs +3 -0
  140. package/build/import/type/ref/ref.d.mts +2 -0
  141. package/build/import/type/ref/ref.mjs +1 -0
  142. package/build/import/type/regexp/regexp.d.mts +2 -0
  143. package/build/import/type/regexp/regexp.mjs +1 -0
  144. package/build/import/type/registry/format.d.mts +6 -0
  145. package/build/import/type/registry/format.mjs +7 -0
  146. package/build/import/type/registry/type.d.mts +6 -0
  147. package/build/import/type/registry/type.mjs +7 -0
  148. package/build/import/type/required/required-from-mapped-result.mjs +3 -0
  149. package/build/import/type/required/required.d.mts +2 -0
  150. package/build/import/type/required/required.mjs +9 -0
  151. package/build/import/type/rest/rest.d.mts +1 -0
  152. package/build/import/type/rest/rest.mjs +5 -0
  153. package/build/import/type/return-type/return-type.d.mts +1 -0
  154. package/build/import/type/return-type/return-type.mjs +1 -0
  155. package/build/import/type/schema/schema.d.mts +7 -0
  156. package/build/import/type/static/static.d.mts +3 -0
  157. package/build/import/type/strict/strict.d.mts +1 -0
  158. package/build/import/type/strict/strict.mjs +1 -0
  159. package/build/import/type/string/string.d.mts +7 -0
  160. package/build/import/type/string/string.mjs +1 -0
  161. package/build/import/type/symbol/symbol.d.mts +1 -0
  162. package/build/import/type/symbol/symbol.mjs +1 -0
  163. package/build/import/type/symbols/symbols.d.mts +5 -0
  164. package/build/import/type/symbols/symbols.mjs +5 -0
  165. package/build/import/type/template-literal/finite.mjs +10 -0
  166. package/build/import/type/template-literal/generate.mjs +10 -0
  167. package/build/import/type/template-literal/parser.d.mts +2 -0
  168. package/build/import/type/template-literal/parser.mjs +17 -0
  169. package/build/import/type/template-literal/pattern.mjs +11 -0
  170. package/build/import/type/template-literal/syntax.d.mts +1 -0
  171. package/build/import/type/template-literal/syntax.mjs +8 -0
  172. package/build/import/type/template-literal/template-literal.d.mts +2 -0
  173. package/build/import/type/template-literal/template-literal.mjs +2 -0
  174. package/build/import/type/template-literal/union.d.mts +1 -0
  175. package/build/import/type/template-literal/union.mjs +4 -0
  176. package/build/import/type/transform/transform.d.mts +1 -0
  177. package/build/import/type/transform/transform.mjs +9 -0
  178. package/build/import/type/tuple/tuple.d.mts +1 -0
  179. package/build/import/type/tuple/tuple.mjs +3 -0
  180. package/build/import/type/type/index.d.mts +1 -0
  181. package/build/import/type/type/index.mjs +7 -0
  182. package/build/import/type/type/javascript.d.mts +19 -0
  183. package/build/import/type/type/javascript.mjs +18 -0
  184. package/build/import/type/type/json.d.mts +64 -3
  185. package/build/import/type/type/json.mjs +55 -1
  186. package/build/import/type/type/type.mjs +3 -0
  187. package/build/import/type/uint8array/uint8array.d.mts +1 -0
  188. package/build/import/type/uint8array/uint8array.mjs +1 -0
  189. package/build/import/type/undefined/undefined.d.mts +1 -0
  190. package/build/import/type/undefined/undefined.mjs +1 -0
  191. package/build/import/type/union/union-evaluated.d.mts +1 -0
  192. package/build/import/type/union/union-evaluated.mjs +10 -0
  193. package/build/import/type/union/union.d.mts +1 -0
  194. package/build/import/type/union/union.mjs +2 -0
  195. package/build/import/type/unknown/unknown.d.mts +1 -0
  196. package/build/import/type/unknown/unknown.mjs +1 -0
  197. package/build/import/type/unsafe/unsafe.d.mts +1 -0
  198. package/build/import/type/unsafe/unsafe.mjs +1 -0
  199. package/build/import/type/void/void.d.mts +1 -0
  200. package/build/import/type/void/void.mjs +1 -0
  201. package/build/import/value/cast/cast.d.mts +2 -0
  202. package/build/import/value/cast/cast.mjs +28 -0
  203. package/build/import/value/check/check.d.mts +2 -0
  204. package/build/import/value/check/check.mjs +19 -1
  205. package/build/import/value/clean/clean.d.mts +2 -0
  206. package/build/import/value/clean/clean.mjs +12 -1
  207. package/build/import/value/clone/clone.d.mts +1 -0
  208. package/build/import/value/clone/clone.mjs +7 -0
  209. package/build/import/value/convert/convert.d.mts +2 -0
  210. package/build/import/value/convert/convert.mjs +30 -1
  211. package/build/import/value/create/create.d.mts +2 -0
  212. package/build/import/value/create/create.mjs +17 -0
  213. package/build/import/value/default/default.d.mts +2 -0
  214. package/build/import/value/default/default.mjs +19 -0
  215. package/build/import/value/delta/delta.mjs +15 -0
  216. package/build/import/value/deref/deref.d.mts +1 -0
  217. package/build/import/value/deref/deref.mjs +1 -0
  218. package/build/import/value/equal/equal.d.mts +1 -0
  219. package/build/import/value/equal/equal.mjs +7 -0
  220. package/build/import/value/guard/guard.d.mts +20 -0
  221. package/build/import/value/guard/guard.mjs +30 -0
  222. package/build/import/value/hash/hash.d.mts +1 -0
  223. package/build/import/value/hash/hash.mjs +19 -0
  224. package/build/import/value/index.mjs +12 -0
  225. package/build/import/value/mutate/mutate.d.mts +1 -0
  226. package/build/import/value/mutate/mutate.mjs +11 -0
  227. package/build/import/value/pointer/pointer.d.mts +5 -0
  228. package/build/import/value/pointer/pointer.mjs +18 -0
  229. package/build/import/value/transform/decode.d.mts +5 -0
  230. package/build/import/value/transform/decode.mjs +23 -0
  231. package/build/import/value/transform/encode.d.mts +6 -0
  232. package/build/import/value/transform/encode.mjs +25 -0
  233. package/build/import/value/transform/has.d.mts +1 -0
  234. package/build/import/value/transform/has.mjs +16 -0
  235. package/build/import/value/value/value.d.mts +24 -0
  236. package/build/import/value/value/value.mjs +15 -0
  237. package/build/require/compiler/compiler.d.ts +9 -0
  238. package/build/require/compiler/compiler.js +61 -6
  239. package/build/require/compiler/index.js +1 -0
  240. package/build/require/errors/errors.d.ts +3 -0
  241. package/build/require/errors/errors.js +29 -3
  242. package/build/require/errors/function.d.ts +3 -0
  243. package/build/require/errors/function.js +5 -0
  244. package/build/require/errors/index.js +1 -0
  245. package/build/require/index.js +10 -0
  246. package/build/require/system/index.js +1 -0
  247. package/build/require/system/policy.d.ts +10 -0
  248. package/build/require/system/policy.js +14 -0
  249. package/build/require/system/system.d.ts +3 -0
  250. package/build/require/system/system.js +10 -0
  251. package/build/require/type/any/any.d.ts +1 -0
  252. package/build/require/type/any/any.js +2 -0
  253. package/build/require/type/any/index.js +1 -0
  254. package/build/require/type/array/array.d.ts +7 -0
  255. package/build/require/type/array/array.js +2 -0
  256. package/build/require/type/array/index.js +1 -0
  257. package/build/require/type/async-iterator/async-iterator.d.ts +1 -0
  258. package/build/require/type/async-iterator/async-iterator.js +2 -0
  259. package/build/require/type/async-iterator/index.js +1 -0
  260. package/build/require/type/awaited/awaited.d.ts +7 -6
  261. package/build/require/type/awaited/awaited.js +25 -15
  262. package/build/require/type/awaited/index.js +1 -0
  263. package/build/require/type/bigint/bigint.d.ts +1 -0
  264. package/build/require/type/bigint/bigint.js +2 -0
  265. package/build/require/type/bigint/index.js +1 -0
  266. package/build/require/type/boolean/boolean.d.ts +1 -0
  267. package/build/require/type/boolean/boolean.js +2 -0
  268. package/build/require/type/boolean/index.js +1 -0
  269. package/build/require/type/clone/index.js +1 -0
  270. package/build/require/type/clone/type.d.ts +2 -0
  271. package/build/require/type/clone/type.js +3 -0
  272. package/build/require/type/clone/value.d.ts +1 -0
  273. package/build/require/type/clone/value.js +3 -0
  274. package/build/require/type/composite/composite.d.ts +1 -0
  275. package/build/require/type/composite/composite.js +2 -0
  276. package/build/require/type/composite/index.js +1 -0
  277. package/build/require/type/const/const.d.ts +2 -1
  278. package/build/require/type/const/const.js +6 -1
  279. package/build/require/type/const/index.js +1 -0
  280. package/build/require/type/constructor/constructor.d.ts +1 -0
  281. package/build/require/type/constructor/constructor.js +2 -0
  282. package/build/require/type/constructor/index.js +1 -0
  283. package/build/require/type/constructor-parameters/constructor-parameters.d.ts +1 -0
  284. package/build/require/type/constructor-parameters/constructor-parameters.js +2 -0
  285. package/build/require/type/constructor-parameters/index.js +1 -0
  286. package/build/require/type/date/date.d.ts +6 -0
  287. package/build/require/type/date/date.js +2 -0
  288. package/build/require/type/date/index.js +1 -0
  289. package/build/require/type/deref/deref.d.ts +1 -0
  290. package/build/require/type/deref/deref.js +19 -0
  291. package/build/require/type/deref/index.js +1 -0
  292. package/build/require/type/discard/discard.js +1 -0
  293. package/build/require/type/discard/index.js +1 -0
  294. package/build/require/type/enum/enum.d.ts +1 -0
  295. package/build/require/type/enum/enum.js +2 -0
  296. package/build/require/type/enum/index.js +1 -0
  297. package/build/require/type/exclude/exclude-from-mapped-result.js +4 -0
  298. package/build/require/type/exclude/exclude.d.ts +2 -0
  299. package/build/require/type/exclude/exclude.js +4 -0
  300. package/build/require/type/exclude/index.js +1 -0
  301. package/build/require/type/extends/extends-check.js +174 -1
  302. package/build/require/type/extends/extends-from-mapped-key.js +5 -0
  303. package/build/require/type/extends/extends-from-mapped-result.js +4 -0
  304. package/build/require/type/extends/extends-undefined.d.ts +1 -0
  305. package/build/require/type/extends/extends-undefined.js +4 -0
  306. package/build/require/type/extends/extends.d.ts +3 -0
  307. package/build/require/type/extends/extends.js +8 -0
  308. package/build/require/type/extends/index.js +1 -0
  309. package/build/require/type/extract/extract-from-mapped-result.js +4 -0
  310. package/build/require/type/extract/extract.d.ts +2 -0
  311. package/build/require/type/extract/extract.js +4 -0
  312. package/build/require/type/extract/index.js +1 -0
  313. package/build/require/type/function/function.d.ts +1 -0
  314. package/build/require/type/function/function.js +2 -0
  315. package/build/require/type/function/index.js +1 -0
  316. package/build/require/type/guard/index.js +1 -0
  317. package/build/require/type/guard/type.d.ts +46 -0
  318. package/build/require/type/guard/type.js +85 -1
  319. package/build/require/type/guard/value.d.ts +14 -0
  320. package/build/require/type/guard/value.js +15 -0
  321. package/build/require/type/helpers/helpers.d.ts +1 -0
  322. package/build/require/type/helpers/helpers.js +2 -0
  323. package/build/require/type/helpers/index.js +1 -0
  324. package/build/require/type/index.js +1 -0
  325. package/build/require/type/indexed/index.d.ts +0 -1
  326. package/build/require/type/indexed/index.js +1 -1
  327. package/build/require/type/indexed/indexed-from-mapped-key.d.ts +2 -2
  328. package/build/require/type/indexed/indexed-from-mapped-key.js +11 -3
  329. package/build/require/type/indexed/indexed-property-keys.d.ts +1 -0
  330. package/build/require/type/indexed/indexed-property-keys.js +10 -0
  331. package/build/require/type/indexed/indexed.d.ts +40 -4
  332. package/build/require/type/indexed/indexed.js +84 -4
  333. package/build/require/type/instance-type/index.js +1 -0
  334. package/build/require/type/instance-type/instance-type.d.ts +1 -0
  335. package/build/require/type/instance-type/instance-type.js +2 -0
  336. package/build/require/type/integer/index.js +1 -0
  337. package/build/require/type/integer/integer.d.ts +1 -0
  338. package/build/require/type/integer/integer.js +2 -0
  339. package/build/require/type/intersect/index.js +1 -0
  340. package/build/require/type/intersect/intersect-create.js +9 -0
  341. package/build/require/type/intersect/intersect-evaluated.d.ts +1 -0
  342. package/build/require/type/intersect/intersect-evaluated.js +10 -0
  343. package/build/require/type/intersect/intersect-type.js +1 -0
  344. package/build/require/type/intersect/intersect.d.ts +1 -0
  345. package/build/require/type/intersect/intersect.js +6 -0
  346. package/build/require/type/intrinsic/capitalize.d.ts +1 -0
  347. package/build/require/type/intrinsic/capitalize.js +2 -0
  348. package/build/require/type/intrinsic/index.js +1 -0
  349. package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +5 -0
  350. package/build/require/type/intrinsic/intrinsic.d.ts +2 -0
  351. package/build/require/type/intrinsic/intrinsic.js +17 -1
  352. package/build/require/type/intrinsic/lowercase.d.ts +1 -0
  353. package/build/require/type/intrinsic/lowercase.js +2 -0
  354. package/build/require/type/intrinsic/uncapitalize.d.ts +1 -0
  355. package/build/require/type/intrinsic/uncapitalize.js +2 -0
  356. package/build/require/type/intrinsic/uppercase.d.ts +1 -0
  357. package/build/require/type/intrinsic/uppercase.js +2 -0
  358. package/build/require/type/iterator/index.js +1 -0
  359. package/build/require/type/iterator/iterator.d.ts +1 -0
  360. package/build/require/type/iterator/iterator.js +2 -0
  361. package/build/require/type/keyof/index.js +1 -0
  362. package/build/require/type/keyof/keyof-from-mapped-result.js +4 -0
  363. package/build/require/type/keyof/keyof-property-keys.d.ts +2 -0
  364. package/build/require/type/keyof/keyof-property-keys.js +21 -0
  365. package/build/require/type/keyof/keyof.d.ts +2 -0
  366. package/build/require/type/keyof/keyof.js +7 -0
  367. package/build/require/type/literal/index.js +1 -0
  368. package/build/require/type/literal/literal.d.ts +1 -0
  369. package/build/require/type/literal/literal.js +2 -0
  370. package/build/require/type/mapped/index.js +1 -0
  371. package/build/require/type/mapped/mapped-key.js +2 -0
  372. package/build/require/type/mapped/mapped-result.js +2 -0
  373. package/build/require/type/mapped/mapped.d.ts +2 -0
  374. package/build/require/type/mapped/mapped.js +20 -1
  375. package/build/require/type/modifiers/index.js +1 -0
  376. package/build/require/type/modifiers/modifiers.js +11 -0
  377. package/build/require/type/never/index.js +1 -0
  378. package/build/require/type/never/never.d.ts +1 -0
  379. package/build/require/type/never/never.js +2 -0
  380. package/build/require/type/not/index.js +1 -0
  381. package/build/require/type/not/not.d.ts +1 -0
  382. package/build/require/type/not/not.js +2 -0
  383. package/build/require/type/null/index.js +1 -0
  384. package/build/require/type/null/null.d.ts +1 -0
  385. package/build/require/type/null/null.js +2 -0
  386. package/build/require/type/number/index.js +1 -0
  387. package/build/require/type/number/number.d.ts +1 -0
  388. package/build/require/type/number/number.js +2 -0
  389. package/build/require/type/object/index.js +1 -0
  390. package/build/require/type/object/object.d.ts +5 -0
  391. package/build/require/type/object/object.js +7 -0
  392. package/build/require/type/omit/index.js +1 -0
  393. package/build/require/type/omit/omit-from-mapped-key.js +5 -0
  394. package/build/require/type/omit/omit.d.ts +3 -0
  395. package/build/require/type/omit/omit.js +13 -0
  396. package/build/require/type/operators/index.js +1 -0
  397. package/build/require/type/operators/operators.d.ts +8 -0
  398. package/build/require/type/operators/operators.js +16 -0
  399. package/build/require/type/optional/index.js +1 -0
  400. package/build/require/type/optional/optional.d.ts +1 -0
  401. package/build/require/type/optional/optional.js +2 -0
  402. package/build/require/type/parameters/index.js +1 -0
  403. package/build/require/type/parameters/parameters.d.ts +1 -0
  404. package/build/require/type/parameters/parameters.js +2 -0
  405. package/build/require/type/partial/index.js +1 -0
  406. package/build/require/type/partial/partial-from-mapped-result.js +4 -0
  407. package/build/require/type/partial/partial.d.ts +2 -0
  408. package/build/require/type/partial/partial.js +10 -0
  409. package/build/require/type/patterns/index.js +1 -0
  410. package/build/require/type/patterns/patterns.js +1 -0
  411. package/build/require/type/pick/index.js +1 -0
  412. package/build/require/type/pick/pick-from-mapped-key.js +5 -0
  413. package/build/require/type/pick/pick.d.ts +3 -0
  414. package/build/require/type/pick/pick.js +8 -0
  415. package/build/require/type/promise/index.js +1 -0
  416. package/build/require/type/promise/promise.d.ts +1 -0
  417. package/build/require/type/promise/promise.js +2 -0
  418. package/build/require/type/readonly/index.js +1 -0
  419. package/build/require/type/readonly/readonly.d.ts +1 -0
  420. package/build/require/type/readonly/readonly.js +2 -0
  421. package/build/require/type/readonly-optional/index.js +1 -0
  422. package/build/require/type/readonly-optional/readonly-optional.d.ts +1 -0
  423. package/build/require/type/readonly-optional/readonly-optional.js +2 -0
  424. package/build/require/type/record/index.js +1 -0
  425. package/build/require/type/record/record.d.ts +11 -9
  426. package/build/require/type/record/record.js +54 -28
  427. package/build/require/type/recursive/index.js +1 -0
  428. package/build/require/type/recursive/recursive.d.ts +1 -0
  429. package/build/require/type/recursive/recursive.js +4 -0
  430. package/build/require/type/ref/index.js +1 -0
  431. package/build/require/type/ref/ref.d.ts +2 -0
  432. package/build/require/type/ref/ref.js +2 -0
  433. package/build/require/type/regexp/index.js +1 -0
  434. package/build/require/type/regexp/regexp.d.ts +2 -0
  435. package/build/require/type/regexp/regexp.js +2 -0
  436. package/build/require/type/registry/format.d.ts +6 -0
  437. package/build/require/type/registry/format.js +8 -0
  438. package/build/require/type/registry/index.js +1 -0
  439. package/build/require/type/registry/type.d.ts +6 -0
  440. package/build/require/type/registry/type.js +8 -0
  441. package/build/require/type/required/index.js +1 -0
  442. package/build/require/type/required/required-from-mapped-result.js +4 -0
  443. package/build/require/type/required/required.d.ts +2 -0
  444. package/build/require/type/required/required.js +10 -0
  445. package/build/require/type/rest/index.js +1 -0
  446. package/build/require/type/rest/rest.d.ts +1 -0
  447. package/build/require/type/rest/rest.js +6 -0
  448. package/build/require/type/return-type/index.js +1 -0
  449. package/build/require/type/return-type/return-type.d.ts +1 -0
  450. package/build/require/type/return-type/return-type.js +2 -0
  451. package/build/require/type/schema/anyschema.js +1 -0
  452. package/build/require/type/schema/index.js +1 -0
  453. package/build/require/type/schema/schema.d.ts +7 -0
  454. package/build/require/type/schema/schema.js +1 -0
  455. package/build/require/type/static/index.js +1 -0
  456. package/build/require/type/static/static.d.ts +3 -0
  457. package/build/require/type/static/static.js +1 -0
  458. package/build/require/type/strict/index.js +1 -0
  459. package/build/require/type/strict/strict.d.ts +1 -0
  460. package/build/require/type/strict/strict.js +2 -0
  461. package/build/require/type/string/index.js +1 -0
  462. package/build/require/type/string/string.d.ts +7 -0
  463. package/build/require/type/string/string.js +2 -0
  464. package/build/require/type/symbol/index.js +1 -0
  465. package/build/require/type/symbol/symbol.d.ts +1 -0
  466. package/build/require/type/symbol/symbol.js +2 -0
  467. package/build/require/type/symbols/index.js +1 -0
  468. package/build/require/type/symbols/symbols.d.ts +5 -0
  469. package/build/require/type/symbols/symbols.js +6 -0
  470. package/build/require/type/template-literal/finite.js +11 -0
  471. package/build/require/type/template-literal/generate.js +11 -0
  472. package/build/require/type/template-literal/index.js +1 -0
  473. package/build/require/type/template-literal/parser.d.ts +2 -0
  474. package/build/require/type/template-literal/parser.js +18 -0
  475. package/build/require/type/template-literal/pattern.js +12 -0
  476. package/build/require/type/template-literal/syntax.d.ts +1 -0
  477. package/build/require/type/template-literal/syntax.js +9 -0
  478. package/build/require/type/template-literal/template-literal.d.ts +2 -0
  479. package/build/require/type/template-literal/template-literal.js +3 -0
  480. package/build/require/type/template-literal/union.d.ts +1 -0
  481. package/build/require/type/template-literal/union.js +5 -0
  482. package/build/require/type/transform/index.js +1 -0
  483. package/build/require/type/transform/transform.d.ts +1 -0
  484. package/build/require/type/transform/transform.js +10 -0
  485. package/build/require/type/tuple/index.js +1 -0
  486. package/build/require/type/tuple/tuple.d.ts +1 -0
  487. package/build/require/type/tuple/tuple.js +4 -0
  488. package/build/require/type/type/index.d.ts +1 -0
  489. package/build/require/type/type/index.js +8 -0
  490. package/build/require/type/type/javascript.d.ts +19 -0
  491. package/build/require/type/type/javascript.js +19 -0
  492. package/build/require/type/type/json.d.ts +64 -3
  493. package/build/require/type/type/json.js +56 -1
  494. package/build/require/type/type/type.js +4 -0
  495. package/build/require/type/uint8array/index.js +1 -0
  496. package/build/require/type/uint8array/uint8array.d.ts +1 -0
  497. package/build/require/type/uint8array/uint8array.js +2 -0
  498. package/build/require/type/undefined/index.js +1 -0
  499. package/build/require/type/undefined/undefined.d.ts +1 -0
  500. package/build/require/type/undefined/undefined.js +2 -0
  501. package/build/require/type/union/index.js +1 -0
  502. package/build/require/type/union/union-create.js +1 -0
  503. package/build/require/type/union/union-evaluated.d.ts +1 -0
  504. package/build/require/type/union/union-evaluated.js +11 -0
  505. package/build/require/type/union/union-type.js +1 -0
  506. package/build/require/type/union/union.d.ts +1 -0
  507. package/build/require/type/union/union.js +3 -0
  508. package/build/require/type/unknown/index.js +1 -0
  509. package/build/require/type/unknown/unknown.d.ts +1 -0
  510. package/build/require/type/unknown/unknown.js +2 -0
  511. package/build/require/type/unsafe/index.js +1 -0
  512. package/build/require/type/unsafe/unsafe.d.ts +1 -0
  513. package/build/require/type/unsafe/unsafe.js +2 -0
  514. package/build/require/type/void/index.js +1 -0
  515. package/build/require/type/void/void.d.ts +1 -0
  516. package/build/require/type/void/void.js +2 -0
  517. package/build/require/value/cast/cast.d.ts +2 -0
  518. package/build/require/value/cast/cast.js +29 -0
  519. package/build/require/value/cast/index.js +1 -0
  520. package/build/require/value/check/check.d.ts +2 -0
  521. package/build/require/value/check/check.js +20 -1
  522. package/build/require/value/check/index.js +1 -0
  523. package/build/require/value/clean/clean.d.ts +2 -0
  524. package/build/require/value/clean/clean.js +13 -1
  525. package/build/require/value/clean/index.js +1 -0
  526. package/build/require/value/clone/clone.d.ts +1 -0
  527. package/build/require/value/clone/clone.js +8 -0
  528. package/build/require/value/clone/index.js +1 -0
  529. package/build/require/value/convert/convert.d.ts +2 -0
  530. package/build/require/value/convert/convert.js +31 -1
  531. package/build/require/value/convert/index.js +1 -0
  532. package/build/require/value/create/create.d.ts +2 -0
  533. package/build/require/value/create/create.js +18 -0
  534. package/build/require/value/create/index.js +1 -0
  535. package/build/require/value/default/default.d.ts +2 -0
  536. package/build/require/value/default/default.js +20 -0
  537. package/build/require/value/default/index.js +1 -0
  538. package/build/require/value/delta/delta.js +16 -0
  539. package/build/require/value/delta/index.js +1 -0
  540. package/build/require/value/deref/deref.d.ts +1 -0
  541. package/build/require/value/deref/deref.js +2 -0
  542. package/build/require/value/deref/index.js +1 -0
  543. package/build/require/value/equal/equal.d.ts +1 -0
  544. package/build/require/value/equal/equal.js +8 -0
  545. package/build/require/value/equal/index.js +1 -0
  546. package/build/require/value/guard/guard.d.ts +20 -0
  547. package/build/require/value/guard/guard.js +31 -0
  548. package/build/require/value/guard/index.js +1 -0
  549. package/build/require/value/hash/hash.d.ts +1 -0
  550. package/build/require/value/hash/hash.js +20 -0
  551. package/build/require/value/hash/index.js +1 -0
  552. package/build/require/value/index.js +13 -0
  553. package/build/require/value/mutate/index.js +1 -0
  554. package/build/require/value/mutate/mutate.d.ts +1 -0
  555. package/build/require/value/mutate/mutate.js +12 -0
  556. package/build/require/value/pointer/index.js +1 -0
  557. package/build/require/value/pointer/pointer.d.ts +5 -0
  558. package/build/require/value/pointer/pointer.js +19 -0
  559. package/build/require/value/transform/decode.d.ts +5 -0
  560. package/build/require/value/transform/decode.js +24 -0
  561. package/build/require/value/transform/encode.d.ts +6 -0
  562. package/build/require/value/transform/encode.js +26 -0
  563. package/build/require/value/transform/has.d.ts +1 -0
  564. package/build/require/value/transform/has.js +17 -0
  565. package/build/require/value/transform/index.js +1 -0
  566. package/build/require/value/value/index.js +1 -0
  567. package/build/require/value/value/value.d.ts +24 -0
  568. package/build/require/value/value/value.js +16 -0
  569. package/license +3 -1
  570. package/package.json +1 -1
  571. package/readme.md +4 -5
  572. package/build/import/type/indexed/indexed-result.d.mts +0 -33
  573. package/build/import/type/indexed/indexed-result.mjs +0 -65
  574. package/build/require/type/indexed/indexed-result.d.ts +0 -33
  575. package/build/require/type/indexed/indexed-result.js +0 -69
@@ -9,10 +9,15 @@ export declare class TypeCheck<T extends TSchema> {
9
9
  private readonly code;
10
10
  private readonly hasTransform;
11
11
  constructor(schema: T, references: TSchema[], checkFunc: CheckFunction, code: string);
12
+ /** Returns the generated assertion code used to validate this type. */
12
13
  Code(): string;
14
+ /** Returns an iterator for each error in this value. */
13
15
  Errors(value: unknown): ValueErrorIterator;
16
+ /** Returns true if the value matches the compiled type. */
14
17
  Check(value: unknown): value is Static<T>;
18
+ /** Decodes a value or throws if error */
15
19
  Decode(value: unknown): StaticDecode<T>;
20
+ /** Encodes a value or throws if error */
16
21
  Encode(value: unknown): StaticEncode<T>;
17
22
  }
18
23
  export declare class TypeCompilerUnknownTypeError extends Error {
@@ -34,8 +39,12 @@ export type TypeCompilerLanguageOption = 'typescript' | 'javascript';
34
39
  export interface TypeCompilerCodegenOptions {
35
40
  language?: TypeCompilerLanguageOption;
36
41
  }
42
+ /** Compiles Types for Runtime Type Checking */
37
43
  export declare namespace TypeCompiler {
44
+ /** Generates the code used to assert this type and returns it as a string */
38
45
  function Code<T extends TSchema>(schema: T, references: TSchema[], options?: TypeCompilerCodegenOptions): string;
46
+ /** Generates the code used to assert this type and returns it as a string */
39
47
  function Code<T extends TSchema>(schema: T, options?: TypeCompilerCodegenOptions): string;
48
+ /** Compiles a TypeBox type for optimal runtime type checking. Types must be valid TypeBox types of TSchema */
40
49
  function Compile<T extends TSchema>(schema: T, references?: TSchema[]): TypeCheck<T>;
41
50
  }
@@ -10,6 +10,9 @@ import { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';
10
10
  import { KeyOfPattern } from '../type/keyof/index.mjs';
11
11
  import { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';
12
12
  import { Never } from '../type/never/index.mjs';
13
+ // ------------------------------------------------------------------
14
+ // TypeCheck
15
+ // ------------------------------------------------------------------
13
16
  export class TypeCheck {
14
17
  schema;
15
18
  references;
@@ -23,20 +26,25 @@ export class TypeCheck {
23
26
  this.code = code;
24
27
  this.hasTransform = HasTransform(schema, references);
25
28
  }
29
+ /** Returns the generated assertion code used to validate this type. */
26
30
  Code() {
27
31
  return this.code;
28
32
  }
33
+ /** Returns an iterator for each error in this value. */
29
34
  Errors(value) {
30
35
  return Errors(this.schema, this.references, value);
31
36
  }
37
+ /** Returns true if the value matches the compiled type. */
32
38
  Check(value) {
33
39
  return this.checkFunc(value);
34
40
  }
41
+ /** Decodes a value or throws if error */
35
42
  Decode(value) {
36
43
  if (!this.checkFunc(value))
37
44
  throw new TransformDecodeCheckError(this.schema, value, this.Errors(value).First());
38
45
  return this.hasTransform ? TransformDecode(this.schema, this.references, value) : value;
39
46
  }
47
+ /** Encodes a value or throws if error */
40
48
  Encode(value) {
41
49
  const encoded = this.hasTransform ? TransformEncode(this.schema, this.references, value) : value;
42
50
  if (!this.checkFunc(encoded))
@@ -44,6 +52,9 @@ export class TypeCheck {
44
52
  return encoded;
45
53
  }
46
54
  }
55
+ // ------------------------------------------------------------------
56
+ // Character
57
+ // ------------------------------------------------------------------
47
58
  var Character;
48
59
  (function (Character) {
49
60
  function DollarSign(code) {
@@ -63,6 +74,9 @@ var Character;
63
74
  }
64
75
  Character.IsNumeric = IsNumeric;
65
76
  })(Character || (Character = {}));
77
+ // ------------------------------------------------------------------
78
+ // MemberExpression
79
+ // ------------------------------------------------------------------
66
80
  var MemberExpression;
67
81
  (function (MemberExpression) {
68
82
  function IsFirstCharacterNumeric(value) {
@@ -89,6 +103,9 @@ var MemberExpression;
89
103
  }
90
104
  MemberExpression.Encode = Encode;
91
105
  })(MemberExpression || (MemberExpression = {}));
106
+ // ------------------------------------------------------------------
107
+ // Identifier
108
+ // ------------------------------------------------------------------
92
109
  var Identifier;
93
110
  (function (Identifier) {
94
111
  function Encode($id) {
@@ -106,6 +123,9 @@ var Identifier;
106
123
  }
107
124
  Identifier.Encode = Encode;
108
125
  })(Identifier || (Identifier = {}));
126
+ // ------------------------------------------------------------------
127
+ // LiteralString
128
+ // ------------------------------------------------------------------
109
129
  var LiteralString;
110
130
  (function (LiteralString) {
111
131
  function Escape(content) {
@@ -113,6 +133,9 @@ var LiteralString;
113
133
  }
114
134
  LiteralString.Escape = Escape;
115
135
  })(LiteralString || (LiteralString = {}));
136
+ // ------------------------------------------------------------------
137
+ // Errors
138
+ // ------------------------------------------------------------------
116
139
  export class TypeCompilerUnknownTypeError extends Error {
117
140
  schema;
118
141
  constructor(schema) {
@@ -127,6 +150,9 @@ export class TypeCompilerTypeGuardError extends Error {
127
150
  this.schema = schema;
128
151
  }
129
152
  }
153
+ // ------------------------------------------------------------------
154
+ // Policy
155
+ // ------------------------------------------------------------------
130
156
  export var Policy;
131
157
  (function (Policy) {
132
158
  function IsExactOptionalProperty(value, key, expression) {
@@ -152,11 +178,18 @@ export var Policy;
152
178
  }
153
179
  Policy.IsVoidLike = IsVoidLike;
154
180
  })(Policy || (Policy = {}));
181
+ /** Compiles Types for Runtime Type Checking */
155
182
  export var TypeCompiler;
156
183
  (function (TypeCompiler) {
184
+ // ----------------------------------------------------------------
185
+ // Guards
186
+ // ----------------------------------------------------------------
157
187
  function IsAnyOrUnknown(schema) {
158
188
  return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';
159
189
  }
190
+ // ----------------------------------------------------------------
191
+ // Types
192
+ // ----------------------------------------------------------------
160
193
  function* TAny(schema, references, value) {
161
194
  yield 'true';
162
195
  }
@@ -338,6 +371,8 @@ export var TypeCompiler;
338
371
  }
339
372
  function* TRef(schema, references, value) {
340
373
  const target = Deref(schema, references);
374
+ // Reference: If we have seen this reference before we can just yield and return the function call.
375
+ // If this isn't the case we defer to visit to generate and set the function for subsequent passes.
341
376
  if (state.functions.has(schema.$ref))
342
377
  return yield `${CreateFunctionName(schema.$ref)}(${value})`;
343
378
  yield* Visit(target, references, value);
@@ -365,6 +400,7 @@ export var TypeCompiler;
365
400
  yield `${variable}.test(${value})`;
366
401
  }
367
402
  function* TThis(schema, references, value) {
403
+ // Note: This types are assured to be hoisted prior to this call. Just yield the function.
368
404
  yield `${CreateFunctionName(schema.$ref)}(${value})`;
369
405
  }
370
406
  function* TTuple(schema, references, value) {
@@ -405,6 +441,9 @@ export var TypeCompiler;
405
441
  function* Visit(schema, references, value, useHoisting = true) {
406
442
  const references_ = IsString(schema.$id) ? [...references, schema] : references;
407
443
  const schema_ = schema;
444
+ // --------------------------------------------------------------
445
+ // Hoisting
446
+ // --------------------------------------------------------------
408
447
  if (useHoisting && IsString(schema.$id)) {
409
448
  const functionName = CreateFunctionName(schema.$id);
410
449
  if (state.functions.has(functionName)) {
@@ -483,12 +522,19 @@ export var TypeCompiler;
483
522
  return yield* TKind(schema_, references_, value);
484
523
  }
485
524
  }
525
+ // ----------------------------------------------------------------
526
+ // Compiler State
527
+ // ----------------------------------------------------------------
528
+ // prettier-ignore
486
529
  const state = {
487
- language: 'javascript',
488
- functions: new Map(),
489
- variables: new Map(),
490
- instances: new Map()
530
+ language: 'javascript', // target language
531
+ functions: new Map(), // local functions
532
+ variables: new Map(), // local variables
533
+ instances: new Map() // exterior kind instances
491
534
  };
535
+ // ----------------------------------------------------------------
536
+ // Compiler Factory
537
+ // ----------------------------------------------------------------
492
538
  function CreateExpression(schema, references, value, useHoisting = true) {
493
539
  return `(${[...Visit(schema, references, value, useHoisting)].join(' && ')})`;
494
540
  }
@@ -514,24 +560,31 @@ export var TypeCompiler;
514
560
  function CreateReturns(type) {
515
561
  return state.language === 'typescript' ? `: ${type}` : '';
516
562
  }
563
+ // ----------------------------------------------------------------
564
+ // Compile
565
+ // ----------------------------------------------------------------
517
566
  function Build(schema, references, options) {
518
- const functionCode = CreateFunction('check', schema, references, 'value');
567
+ const functionCode = CreateFunction('check', schema, references, 'value'); // will populate functions and variables
519
568
  const parameter = CreateParameter('value', 'any');
520
569
  const returns = CreateReturns('boolean');
521
570
  const functions = [...state.functions.values()];
522
571
  const variables = [...state.variables.values()];
523
- const checkFunction = IsString(schema.$id)
572
+ // prettier-ignore
573
+ const checkFunction = IsString(schema.$id) // ensure top level schemas with $id's are hoisted
524
574
  ? `return function check(${parameter})${returns} {\n return ${CreateFunctionName(schema.$id)}(value)\n}`
525
575
  : `return ${functionCode}`;
526
576
  return [...variables, ...functions, checkFunction].join('\n');
527
577
  }
578
+ /** Generates the code used to assert this type and returns it as a string */
528
579
  function Code(...args) {
529
580
  const defaults = { language: 'javascript' };
581
+ // prettier-ignore
530
582
  const [schema, references, options] = (args.length === 2 && IsArray(args[1]) ? [args[0], args[1], defaults] :
531
583
  args.length === 2 && !IsArray(args[1]) ? [args[0], [], args[1]] :
532
584
  args.length === 3 ? [args[0], args[1], args[2]] :
533
585
  args.length === 1 ? [args[0], [], defaults] :
534
586
  [null, [], defaults]);
587
+ // compiler-reset
535
588
  state.language = options.language;
536
589
  state.variables.clear();
537
590
  state.functions.clear();
@@ -544,6 +597,7 @@ export var TypeCompiler;
544
597
  return Build(schema, references, options);
545
598
  }
546
599
  TypeCompiler.Code = Code;
600
+ /** Compiles a TypeBox type for optimal runtime type checking. Types must be valid TypeBox types of TSchema */
547
601
  function Compile(schema, references = []) {
548
602
  const generatedCode = Code(schema, references, { language: 'javascript' });
549
603
  const compiledFunction = globalThis.Function('kind', 'format', 'hash', generatedCode);
@@ -79,7 +79,10 @@ export declare class ValueErrorIterator {
79
79
  private readonly iterator;
80
80
  constructor(iterator: IterableIterator<ValueError>);
81
81
  [Symbol.iterator](): IterableIterator<ValueError>;
82
+ /** Returns the first value error or undefined if no errors */
82
83
  First(): ValueError | undefined;
83
84
  }
85
+ /** Returns an iterator for each error in this value. */
84
86
  export declare function Errors<T extends TSchema>(schema: T, references: TSchema[], value: unknown): ValueErrorIterator;
87
+ /** Returns an iterator for each error in this value. */
85
88
  export declare function Errors<T extends TSchema>(schema: T, value: unknown): ValueErrorIterator;
@@ -8,6 +8,9 @@ import { Deref } from '../value/deref/index.mjs';
8
8
  import { Hash } from '../value/hash/index.mjs';
9
9
  import { Kind } from '../type/symbols/index.mjs';
10
10
  import { Never } from '../type/never/index.mjs';
11
+ // --------------------------------------------------------------------------
12
+ // ValueErrorType
13
+ // --------------------------------------------------------------------------
11
14
  export var ValueErrorType;
12
15
  (function (ValueErrorType) {
13
16
  ValueErrorType[ValueErrorType["ArrayContains"] = 0] = "ArrayContains";
@@ -74,6 +77,9 @@ export var ValueErrorType;
74
77
  ValueErrorType[ValueErrorType["Union"] = 61] = "Union";
75
78
  ValueErrorType[ValueErrorType["Void"] = 62] = "Void";
76
79
  })(ValueErrorType || (ValueErrorType = {}));
80
+ // --------------------------------------------------------------------------
81
+ // ValueErrors
82
+ // --------------------------------------------------------------------------
77
83
  export class ValueErrorsUnknownTypeError extends Error {
78
84
  schema;
79
85
  constructor(schema) {
@@ -81,12 +87,21 @@ export class ValueErrorsUnknownTypeError extends Error {
81
87
  this.schema = schema;
82
88
  }
83
89
  }
90
+ // --------------------------------------------------------------------------
91
+ // EscapeKey
92
+ // --------------------------------------------------------------------------
84
93
  function EscapeKey(key) {
85
- return key.replace(/~/g, '~0').replace(/\//g, '~1');
94
+ return key.replace(/~/g, '~0').replace(/\//g, '~1'); // RFC6901 Path
86
95
  }
96
+ // --------------------------------------------------------------------------
97
+ // Guards
98
+ // --------------------------------------------------------------------------
87
99
  function IsDefined(value) {
88
100
  return value !== undefined;
89
101
  }
102
+ // --------------------------------------------------------------------------
103
+ // ValueErrorIterator
104
+ // --------------------------------------------------------------------------
90
105
  export class ValueErrorIterator {
91
106
  iterator;
92
107
  constructor(iterator) {
@@ -95,14 +110,21 @@ export class ValueErrorIterator {
95
110
  [Symbol.iterator]() {
96
111
  return this.iterator;
97
112
  }
113
+ /** Returns the first value error or undefined if no errors */
98
114
  First() {
99
115
  const next = this.iterator.next();
100
116
  return next.done ? undefined : next.value;
101
117
  }
102
118
  }
119
+ // --------------------------------------------------------------------------
120
+ // Create
121
+ // --------------------------------------------------------------------------
103
122
  function Create(type, schema, path, value) {
104
123
  return { type, schema, path, value, message: GetErrorFunction()(schema, type) };
105
124
  }
125
+ // --------------------------------------------------------------------------
126
+ // Types
127
+ // --------------------------------------------------------------------------
106
128
  function* TAny(schema, references, path, value) { }
107
129
  function* TArray(schema, references, path, value) {
108
130
  if (!IsArray(value)) {
@@ -117,6 +139,7 @@ function* TArray(schema, references, path, value) {
117
139
  for (let i = 0; i < value.length; i++) {
118
140
  yield* Visit(schema.items, references, `${path}/${i}`, value[i]);
119
141
  }
142
+ // prettier-ignore
120
143
  if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {
121
144
  const hashed = Hash(element);
122
145
  if (set.has(hashed)) {
@@ -128,6 +151,7 @@ function* TArray(schema, references, path, value) {
128
151
  } return true; })())) {
129
152
  yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);
130
153
  }
154
+ // contains
131
155
  if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {
132
156
  return;
133
157
  }
@@ -237,7 +261,7 @@ function* TIntersect(schema, references, path, value) {
237
261
  if (!keyCheck.test(valueKey)) {
238
262
  const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();
239
263
  if (!next.done)
240
- yield next.value;
264
+ yield next.value; // yield interior
241
265
  }
242
266
  }
243
267
  }
@@ -429,7 +453,7 @@ function* TUnion(schema, references, path, value) {
429
453
  for (const subschema of schema.anyOf) {
430
454
  const errors = [...Visit(subschema, references, path, value)];
431
455
  if (errors.length === 0)
432
- return;
456
+ return; // matched
433
457
  count += errors.length;
434
458
  }
435
459
  if (count > 0) {
@@ -526,6 +550,7 @@ function* Visit(schema, references, path, value) {
526
550
  return yield* TKind(schema_, references_, path, value);
527
551
  }
528
552
  }
553
+ /** Returns an iterator for each error in this value. */
529
554
  export function Errors(...args) {
530
555
  const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);
531
556
  return new ValueErrorIterator(iterator);
@@ -1,6 +1,9 @@
1
1
  import { TSchema } from '../type/schema/index.mjs';
2
2
  import { ValueErrorType } from './errors.mjs';
3
+ /** Creates an error message using en-US as the default locale */
3
4
  export declare function DefaultErrorFunction(schema: TSchema, errorType: ValueErrorType): string;
4
5
  export type ErrorFunction = (schema: TSchema, type: ValueErrorType) => string;
6
+ /** Sets the error function used to generate error messages */
5
7
  export declare function SetErrorFunction(callback: ErrorFunction): void;
8
+ /** Gets the error function used to generate error messages */
6
9
  export declare function GetErrorFunction(): ErrorFunction;
@@ -1,5 +1,6 @@
1
1
  import { Kind } from '../type/symbols/index.mjs';
2
2
  import { ValueErrorType } from './errors.mjs';
3
+ /** Creates an error message using en-US as the default locale */
3
4
  export function DefaultErrorFunction(schema, errorType) {
4
5
  switch (errorType) {
5
6
  case ValueErrorType.ArrayContains:
@@ -132,10 +133,13 @@ export function DefaultErrorFunction(schema, errorType) {
132
133
  return 'Unknown error type';
133
134
  }
134
135
  }
136
+ /** Manages error message providers */
135
137
  let errorFunction = DefaultErrorFunction;
138
+ /** Sets the error function used to generate error messages */
136
139
  export function SetErrorFunction(callback) {
137
140
  errorFunction = callback;
138
141
  }
142
+ /** Gets the error function used to generate error messages */
139
143
  export function GetErrorFunction() {
140
144
  return errorFunction;
141
145
  }
@@ -1,8 +1,14 @@
1
+ // ------------------------------------------------------------------
2
+ // Infrastructure
3
+ // ------------------------------------------------------------------
1
4
  export { Kind, Hint, ReadonlyKind, OptionalKind, TransformKind } from './type/symbols/index.mjs';
2
5
  export { PatternBoolean, PatternBooleanExact, PatternNumber, PatternNumberExact, PatternString, PatternStringExact } from './type/patterns/index.mjs';
3
6
  export { TypeRegistry, FormatRegistry } from './type/registry/index.mjs';
4
7
  export { TypeGuard, ValueGuard } from './type/guard/index.mjs';
5
8
  export { CloneType, CloneRest } from './type/clone/type.mjs';
9
+ // ------------------------------------------------------------------
10
+ // Type
11
+ // ------------------------------------------------------------------
6
12
  export { Any } from './type/any/index.mjs';
7
13
  export { Array } from './type/array/index.mjs';
8
14
  export { AsyncIterator } from './type/async-iterator/index.mjs';
@@ -62,4 +68,7 @@ export { Union, UnionEvaluated } from './type/union/index.mjs';
62
68
  export { Unknown } from './type/unknown/index.mjs';
63
69
  export { Unsafe } from './type/unsafe/index.mjs';
64
70
  export { Void } from './type/void/index.mjs';
71
+ // ------------------------------------------------------------------
72
+ // Namespace
73
+ // ------------------------------------------------------------------
65
74
  export { Type, JsonTypeBuilder, JavaScriptTypeBuilder } from './type/type/index.mjs';
@@ -1,11 +1,21 @@
1
1
  export declare namespace TypeSystemPolicy {
2
+ /** Shared assertion routines used by the value and errors modules */
3
+ /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */
2
4
  let ExactOptionalPropertyTypes: boolean;
5
+ /** Sets whether arrays should be treated as a kind of objects. The default is `false` */
3
6
  let AllowArrayObject: boolean;
7
+ /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */
4
8
  let AllowNaN: boolean;
9
+ /** Sets whether `null` should validate for void types. The default is `false` */
5
10
  let AllowNullVoid: boolean;
11
+ /** Asserts this value using the ExactOptionalPropertyTypes policy */
6
12
  function IsExactOptionalProperty(value: Record<keyof any, unknown>, key: string): boolean;
13
+ /** Asserts this value using the AllowArrayObjects policy */
7
14
  function IsObjectLike(value: unknown): value is Record<keyof any, unknown>;
15
+ /** Asserts this value as a record using the AllowArrayObjects policy */
8
16
  function IsRecordLike(value: unknown): value is Record<keyof any, unknown>;
17
+ /** Asserts this value using the AllowNaN policy */
9
18
  function IsNumberLike(value: unknown): value is number;
19
+ /** Asserts this value using the AllowVoidNull policy */
10
20
  function IsVoidLike(value: unknown): value is void;
11
21
  }
@@ -1,28 +1,41 @@
1
1
  import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';
2
2
  export var TypeSystemPolicy;
3
3
  (function (TypeSystemPolicy) {
4
+ // ------------------------------------------------------------------
5
+ // TypeSystemPolicy
6
+ // ------------------------------------------------------------------
7
+ /** Shared assertion routines used by the value and errors modules */
8
+ /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */
4
9
  TypeSystemPolicy.ExactOptionalPropertyTypes = false;
10
+ /** Sets whether arrays should be treated as a kind of objects. The default is `false` */
5
11
  TypeSystemPolicy.AllowArrayObject = false;
12
+ /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */
6
13
  TypeSystemPolicy.AllowNaN = false;
14
+ /** Sets whether `null` should validate for void types. The default is `false` */
7
15
  TypeSystemPolicy.AllowNullVoid = false;
16
+ /** Asserts this value using the ExactOptionalPropertyTypes policy */
8
17
  function IsExactOptionalProperty(value, key) {
9
18
  return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;
10
19
  }
11
20
  TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;
21
+ /** Asserts this value using the AllowArrayObjects policy */
12
22
  function IsObjectLike(value) {
13
23
  const isObject = IsObject(value);
14
24
  return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);
15
25
  }
16
26
  TypeSystemPolicy.IsObjectLike = IsObjectLike;
27
+ /** Asserts this value as a record using the AllowArrayObjects policy */
17
28
  function IsRecordLike(value) {
18
29
  return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);
19
30
  }
20
31
  TypeSystemPolicy.IsRecordLike = IsRecordLike;
32
+ /** Asserts this value using the AllowNaN policy */
21
33
  function IsNumberLike(value) {
22
34
  const isNumber = IsNumber(value);
23
35
  return TypeSystemPolicy.AllowNaN ? isNumber : isNumber && Number.isFinite(value);
24
36
  }
25
37
  TypeSystemPolicy.IsNumberLike = IsNumberLike;
38
+ /** Asserts this value using the AllowVoidNull policy */
26
39
  function IsVoidLike(value) {
27
40
  const isUndefined = IsUndefined(value);
28
41
  return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;
@@ -4,7 +4,10 @@ export declare class TypeSystemDuplicateTypeKind extends Error {
4
4
  export declare class TypeSystemDuplicateFormat extends Error {
5
5
  constructor(kind: string);
6
6
  }
7
+ /** Creates user defined types and formats and provides overrides for value checking behaviours */
7
8
  export declare namespace TypeSystem {
9
+ /** Creates a new type */
8
10
  function Type<Type, Options = Record<PropertyKey, unknown>>(kind: string, check: (options: Options, value: unknown) => boolean): (options?: Partial<Options>) => import("../type/unsafe/unsafe.mjs").TUnsafe<Type>;
11
+ /** Creates a new string format */
9
12
  function Format<F extends string>(format: F, check: (value: string) => boolean): F;
10
13
  }
@@ -1,6 +1,9 @@
1
1
  import { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';
2
2
  import { Unsafe } from '../type/unsafe/index.mjs';
3
3
  import { Kind } from '../type/symbols/index.mjs';
4
+ // ------------------------------------------------------------------
5
+ // Errors
6
+ // ------------------------------------------------------------------
4
7
  export class TypeSystemDuplicateTypeKind extends Error {
5
8
  constructor(kind) {
6
9
  super(`Duplicate type kind '${kind}' detected`);
@@ -11,8 +14,13 @@ export class TypeSystemDuplicateFormat extends Error {
11
14
  super(`Duplicate string format '${kind}' detected`);
12
15
  }
13
16
  }
17
+ // ------------------------------------------------------------------
18
+ // TypeSystem
19
+ // ------------------------------------------------------------------
20
+ /** Creates user defined types and formats and provides overrides for value checking behaviours */
14
21
  export var TypeSystem;
15
22
  (function (TypeSystem) {
23
+ /** Creates a new type */
16
24
  function Type(kind, check) {
17
25
  if (TypeRegistry.Has(kind))
18
26
  throw new TypeSystemDuplicateTypeKind(kind);
@@ -20,6 +28,7 @@ export var TypeSystem;
20
28
  return (options = {}) => Unsafe({ ...options, [Kind]: kind });
21
29
  }
22
30
  TypeSystem.Type = Type;
31
+ /** Creates a new string format */
23
32
  function Format(format, check) {
24
33
  if (FormatRegistry.Has(format))
25
34
  throw new TypeSystemDuplicateFormat(format);
@@ -4,4 +4,5 @@ export interface TAny extends TSchema {
4
4
  [Kind]: 'Any';
5
5
  static: any;
6
6
  }
7
+ /** `[Json]` Creates an Any type */
7
8
  export declare function Any(options?: SchemaOptions): TAny;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[Json]` Creates an Any type */
2
3
  export function Any(options = {}) {
3
4
  return { ...options, [Kind]: 'Any' };
4
5
  }
@@ -2,11 +2,17 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import type { Static } from '../static/index.mjs';
3
3
  import { Kind } from '../symbols/index.mjs';
4
4
  export interface ArrayOptions extends SchemaOptions {
5
+ /** The minimum number of items in this array */
5
6
  minItems?: number;
7
+ /** The maximum number of items in this array */
6
8
  maxItems?: number;
9
+ /** Should this schema contain unique items */
7
10
  uniqueItems?: boolean;
11
+ /** A schema for which some elements should match */
8
12
  contains?: TSchema;
13
+ /** A minimum number of contains schema matches */
9
14
  minContains?: number;
15
+ /** A maximum number of contains schema matches */
10
16
  maxContains?: number;
11
17
  }
12
18
  export interface TArray<T extends TSchema = TSchema> extends TSchema, ArrayOptions {
@@ -15,4 +21,5 @@ export interface TArray<T extends TSchema = TSchema> extends TSchema, ArrayOptio
15
21
  type: 'array';
16
22
  items: T;
17
23
  }
24
+ /** `[Json]` Creates an Array type */
18
25
  export declare function Array<T extends TSchema>(schema: T, options?: ArrayOptions): TArray<T>;
@@ -1,5 +1,6 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
2
  import { CloneType } from '../clone/type.mjs';
3
+ /** `[Json]` Creates an Array type */
3
4
  export function Array(schema, options = {}) {
4
5
  return {
5
6
  ...options,
@@ -7,4 +7,5 @@ export interface TAsyncIterator<T extends TSchema = TSchema> extends TSchema {
7
7
  type: 'AsyncIterator';
8
8
  items: T;
9
9
  }
10
+ /** `[JavaScript]` Creates a AsyncIterator type */
10
11
  export declare function AsyncIterator<T extends TSchema>(items: T, options?: SchemaOptions): TAsyncIterator<T>;
@@ -1,5 +1,6 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
2
  import { CloneType } from '../clone/type.mjs';
3
+ /** `[JavaScript]` Creates a AsyncIterator type */
3
4
  export function AsyncIterator(items, options = {}) {
4
5
  return {
5
6
  ...options,
@@ -2,10 +2,11 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import { type TIntersect } from '../intersect/index.mjs';
3
3
  import { type TUnion } from '../union/index.mjs';
4
4
  import { type TPromise } from '../promise/index.mjs';
5
- type AwaitedUnwrap<T extends TSchema[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [AwaitedResolve<L>, ...AwaitedUnwrap<R>] : [];
6
- declare function AwaitedUnwrap<T extends TSchema[]>(T: [...T]): AwaitedUnwrap<T>;
7
- export type AwaitedResolve<T extends TSchema> = T extends TIntersect<infer S> ? TIntersect<AwaitedUnwrap<S>> : T extends TUnion<infer S> ? TUnion<AwaitedUnwrap<S>> : T extends TPromise<infer S> ? AwaitedResolve<S> : T;
8
- export declare function Resolve<T extends TSchema>(T: T): AwaitedResolve<T>;
9
- export type TAwaited<T extends TSchema> = AwaitedResolve<T>;
10
- export declare function Awaited<T extends TSchema>(T: T, options?: SchemaOptions): AwaitedResolve<T>;
5
+ type FromRest<T extends TSchema[]> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [FromSchema<L>, ...FromRest<R>] : [];
6
+ declare function FromRest<T extends TSchema[]>(T: [...T]): FromRest<T>;
7
+ type FromSchema<T extends TSchema> = T extends TIntersect<infer S> ? TIntersect<FromRest<S>> : T extends TUnion<infer S> ? TUnion<FromRest<S>> : T extends TPromise<infer S> ? FromSchema<S> : T;
8
+ declare function FromSchema<T extends TSchema>(T: T): FromSchema<T>;
9
+ export type TAwaited<T extends TSchema> = (FromSchema<T>);
10
+ /** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */
11
+ export declare function Awaited<T extends TSchema>(T: T, options?: SchemaOptions): FromSchema<T>;
11
12
  export {};
@@ -1,28 +1,38 @@
1
1
  import { Intersect } from '../intersect/index.mjs';
2
2
  import { Union } from '../union/index.mjs';
3
3
  import { CloneType } from '../clone/type.mjs';
4
+ // ------------------------------------------------------------------
5
+ // TypeGuard
6
+ // ------------------------------------------------------------------
7
+ // prettier-ignore
4
8
  import { TIntersect as IsIntersectType, TUnion as IsUnionType, TPromise as IsPromiseType } from '../guard/type.mjs';
5
- function AwaitedUnwrap(T) {
9
+ // prettier-ignore
10
+ function FromRest(T) {
6
11
  const [L, ...R] = T;
7
12
  return (T.length > 0
8
- ? [Resolve(L), ...AwaitedUnwrap(R)]
13
+ ? [FromSchema(L), ...FromRest(R)]
9
14
  : []);
10
15
  }
11
- function AwaitedIntersectRest(T) {
12
- return Intersect(AwaitedUnwrap(T));
16
+ // prettier-ignore
17
+ function FromIntersect(T) {
18
+ return Intersect(FromRest(T));
13
19
  }
14
- function AwaitedUnionRest(T) {
15
- return Union(AwaitedUnwrap(T));
20
+ // prettier-ignore
21
+ function FromUnion(T) {
22
+ return Union(FromRest(T));
16
23
  }
17
- function AwaitedPromise(T) {
18
- return Resolve(T);
24
+ // prettier-ignore
25
+ function FromPromise(T) {
26
+ return FromSchema(T);
19
27
  }
20
- export function Resolve(T) {
21
- return (IsIntersectType(T) ? AwaitedIntersectRest(T.allOf) :
22
- IsUnionType(T) ? AwaitedUnionRest(T.anyOf) :
23
- IsPromiseType(T) ? AwaitedPromise(T.item) :
28
+ // prettier-ignore
29
+ function FromSchema(T) {
30
+ return (IsIntersectType(T) ? FromIntersect(T.allOf) :
31
+ IsUnionType(T) ? FromUnion(T.anyOf) :
32
+ IsPromiseType(T) ? FromPromise(T.item) :
24
33
  T);
25
34
  }
35
+ /** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */
26
36
  export function Awaited(T, options = {}) {
27
- return CloneType(Resolve(T), options);
37
+ return CloneType(FromSchema(T), options);
28
38
  }