@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
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TypeCompiler = exports.Policy = exports.TypeCompilerTypeGuardError = exports.TypeCompilerUnknownTypeError = exports.TypeCheck = void 0;
4
5
  const index_1 = require("../value/transform/index");
@@ -13,6 +14,9 @@ const index_8 = require("../type/registry/index");
13
14
  const index_9 = require("../type/keyof/index");
14
15
  const extends_undefined_1 = require("../type/extends/extends-undefined");
15
16
  const index_10 = require("../type/never/index");
17
+ // ------------------------------------------------------------------
18
+ // TypeCheck
19
+ // ------------------------------------------------------------------
16
20
  class TypeCheck {
17
21
  constructor(schema, references, checkFunc, code) {
18
22
  this.schema = schema;
@@ -21,20 +25,25 @@ class TypeCheck {
21
25
  this.code = code;
22
26
  this.hasTransform = (0, index_1.HasTransform)(schema, references);
23
27
  }
28
+ /** Returns the generated assertion code used to validate this type. */
24
29
  Code() {
25
30
  return this.code;
26
31
  }
32
+ /** Returns an iterator for each error in this value. */
27
33
  Errors(value) {
28
34
  return (0, index_3.Errors)(this.schema, this.references, value);
29
35
  }
36
+ /** Returns true if the value matches the compiled type. */
30
37
  Check(value) {
31
38
  return this.checkFunc(value);
32
39
  }
40
+ /** Decodes a value or throws if error */
33
41
  Decode(value) {
34
42
  if (!this.checkFunc(value))
35
43
  throw new index_1.TransformDecodeCheckError(this.schema, value, this.Errors(value).First());
36
44
  return this.hasTransform ? (0, index_1.TransformDecode)(this.schema, this.references, value) : value;
37
45
  }
46
+ /** Encodes a value or throws if error */
38
47
  Encode(value) {
39
48
  const encoded = this.hasTransform ? (0, index_1.TransformEncode)(this.schema, this.references, value) : value;
40
49
  if (!this.checkFunc(encoded))
@@ -43,6 +52,9 @@ class TypeCheck {
43
52
  }
44
53
  }
45
54
  exports.TypeCheck = TypeCheck;
55
+ // ------------------------------------------------------------------
56
+ // Character
57
+ // ------------------------------------------------------------------
46
58
  var Character;
47
59
  (function (Character) {
48
60
  function DollarSign(code) {
@@ -62,6 +74,9 @@ var Character;
62
74
  }
63
75
  Character.IsNumeric = IsNumeric;
64
76
  })(Character || (Character = {}));
77
+ // ------------------------------------------------------------------
78
+ // MemberExpression
79
+ // ------------------------------------------------------------------
65
80
  var MemberExpression;
66
81
  (function (MemberExpression) {
67
82
  function IsFirstCharacterNumeric(value) {
@@ -88,6 +103,9 @@ var MemberExpression;
88
103
  }
89
104
  MemberExpression.Encode = Encode;
90
105
  })(MemberExpression || (MemberExpression = {}));
106
+ // ------------------------------------------------------------------
107
+ // Identifier
108
+ // ------------------------------------------------------------------
91
109
  var Identifier;
92
110
  (function (Identifier) {
93
111
  function Encode($id) {
@@ -105,6 +123,9 @@ var Identifier;
105
123
  }
106
124
  Identifier.Encode = Encode;
107
125
  })(Identifier || (Identifier = {}));
126
+ // ------------------------------------------------------------------
127
+ // LiteralString
128
+ // ------------------------------------------------------------------
108
129
  var LiteralString;
109
130
  (function (LiteralString) {
110
131
  function Escape(content) {
@@ -112,6 +133,9 @@ var LiteralString;
112
133
  }
113
134
  LiteralString.Escape = Escape;
114
135
  })(LiteralString || (LiteralString = {}));
136
+ // ------------------------------------------------------------------
137
+ // Errors
138
+ // ------------------------------------------------------------------
115
139
  class TypeCompilerUnknownTypeError extends Error {
116
140
  constructor(schema) {
117
141
  super('Unknown type');
@@ -126,6 +150,9 @@ class TypeCompilerTypeGuardError extends Error {
126
150
  }
127
151
  }
128
152
  exports.TypeCompilerTypeGuardError = TypeCompilerTypeGuardError;
153
+ // ------------------------------------------------------------------
154
+ // Policy
155
+ // ------------------------------------------------------------------
129
156
  var Policy;
130
157
  (function (Policy) {
131
158
  function IsExactOptionalProperty(value, key, expression) {
@@ -151,11 +178,18 @@ var Policy;
151
178
  }
152
179
  Policy.IsVoidLike = IsVoidLike;
153
180
  })(Policy || (exports.Policy = Policy = {}));
181
+ /** Compiles Types for Runtime Type Checking */
154
182
  var TypeCompiler;
155
183
  (function (TypeCompiler) {
184
+ // ----------------------------------------------------------------
185
+ // Guards
186
+ // ----------------------------------------------------------------
156
187
  function IsAnyOrUnknown(schema) {
157
188
  return schema[index_7.Kind] === 'Any' || schema[index_7.Kind] === 'Unknown';
158
189
  }
190
+ // ----------------------------------------------------------------
191
+ // Types
192
+ // ----------------------------------------------------------------
159
193
  function* TAny(schema, references, value) {
160
194
  yield 'true';
161
195
  }
@@ -337,6 +371,8 @@ var TypeCompiler;
337
371
  }
338
372
  function* TRef(schema, references, value) {
339
373
  const target = (0, index_5.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.
340
376
  if (state.functions.has(schema.$ref))
341
377
  return yield `${CreateFunctionName(schema.$ref)}(${value})`;
342
378
  yield* Visit(target, references, value);
@@ -364,6 +400,7 @@ var TypeCompiler;
364
400
  yield `${variable}.test(${value})`;
365
401
  }
366
402
  function* TThis(schema, references, value) {
403
+ // Note: This types are assured to be hoisted prior to this call. Just yield the function.
367
404
  yield `${CreateFunctionName(schema.$ref)}(${value})`;
368
405
  }
369
406
  function* TTuple(schema, references, value) {
@@ -404,6 +441,9 @@ var TypeCompiler;
404
441
  function* Visit(schema, references, value, useHoisting = true) {
405
442
  const references_ = (0, index_2.IsString)(schema.$id) ? [...references, schema] : references;
406
443
  const schema_ = schema;
444
+ // --------------------------------------------------------------
445
+ // Hoisting
446
+ // --------------------------------------------------------------
407
447
  if (useHoisting && (0, index_2.IsString)(schema.$id)) {
408
448
  const functionName = CreateFunctionName(schema.$id);
409
449
  if (state.functions.has(functionName)) {
@@ -482,12 +522,19 @@ var TypeCompiler;
482
522
  return yield* TKind(schema_, references_, value);
483
523
  }
484
524
  }
525
+ // ----------------------------------------------------------------
526
+ // Compiler State
527
+ // ----------------------------------------------------------------
528
+ // prettier-ignore
485
529
  const state = {
486
- language: 'javascript',
487
- functions: new Map(),
488
- variables: new Map(),
489
- 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
490
534
  };
535
+ // ----------------------------------------------------------------
536
+ // Compiler Factory
537
+ // ----------------------------------------------------------------
491
538
  function CreateExpression(schema, references, value, useHoisting = true) {
492
539
  return `(${[...Visit(schema, references, value, useHoisting)].join(' && ')})`;
493
540
  }
@@ -513,24 +560,31 @@ var TypeCompiler;
513
560
  function CreateReturns(type) {
514
561
  return state.language === 'typescript' ? `: ${type}` : '';
515
562
  }
563
+ // ----------------------------------------------------------------
564
+ // Compile
565
+ // ----------------------------------------------------------------
516
566
  function Build(schema, references, options) {
517
- const functionCode = CreateFunction('check', schema, references, 'value');
567
+ const functionCode = CreateFunction('check', schema, references, 'value'); // will populate functions and variables
518
568
  const parameter = CreateParameter('value', 'any');
519
569
  const returns = CreateReturns('boolean');
520
570
  const functions = [...state.functions.values()];
521
571
  const variables = [...state.variables.values()];
522
- const checkFunction = (0, index_2.IsString)(schema.$id)
572
+ // prettier-ignore
573
+ const checkFunction = (0, index_2.IsString)(schema.$id) // ensure top level schemas with $id's are hoisted
523
574
  ? `return function check(${parameter})${returns} {\n return ${CreateFunctionName(schema.$id)}(value)\n}`
524
575
  : `return ${functionCode}`;
525
576
  return [...variables, ...functions, checkFunction].join('\n');
526
577
  }
578
+ /** Generates the code used to assert this type and returns it as a string */
527
579
  function Code(...args) {
528
580
  const defaults = { language: 'javascript' };
581
+ // prettier-ignore
529
582
  const [schema, references, options] = (args.length === 2 && (0, index_2.IsArray)(args[1]) ? [args[0], args[1], defaults] :
530
583
  args.length === 2 && !(0, index_2.IsArray)(args[1]) ? [args[0], [], args[1]] :
531
584
  args.length === 3 ? [args[0], args[1], args[2]] :
532
585
  args.length === 1 ? [args[0], [], defaults] :
533
586
  [null, [], defaults]);
587
+ // compiler-reset
534
588
  state.language = options.language;
535
589
  state.variables.clear();
536
590
  state.functions.clear();
@@ -543,6 +597,7 @@ var TypeCompiler;
543
597
  return Build(schema, references, options);
544
598
  }
545
599
  TypeCompiler.Code = Code;
600
+ /** Compiles a TypeBox type for optimal runtime type checking. Types must be valid TypeBox types of TSchema */
546
601
  function Compile(schema, references = []) {
547
602
  const generatedCode = Code(schema, references, { language: 'javascript' });
548
603
  const compiledFunction = globalThis.Function('kind', 'format', 'hash', generatedCode);
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TypeCompilerUnknownTypeError = exports.TypeCompilerTypeGuardError = exports.TypeCheck = exports.TypeCompiler = exports.ValueErrorIterator = exports.ValueErrorType = void 0;
4
5
  var index_1 = require("../errors/index");
@@ -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;
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Errors = exports.ValueErrorIterator = exports.ValueErrorsUnknownTypeError = exports.ValueErrorType = void 0;
4
5
  const index_1 = require("../value/guard/index");
@@ -11,6 +12,9 @@ const index_5 = require("../value/deref/index");
11
12
  const index_6 = require("../value/hash/index");
12
13
  const index_7 = require("../type/symbols/index");
13
14
  const index_8 = require("../type/never/index");
15
+ // --------------------------------------------------------------------------
16
+ // ValueErrorType
17
+ // --------------------------------------------------------------------------
14
18
  var ValueErrorType;
15
19
  (function (ValueErrorType) {
16
20
  ValueErrorType[ValueErrorType["ArrayContains"] = 0] = "ArrayContains";
@@ -77,6 +81,9 @@ var ValueErrorType;
77
81
  ValueErrorType[ValueErrorType["Union"] = 61] = "Union";
78
82
  ValueErrorType[ValueErrorType["Void"] = 62] = "Void";
79
83
  })(ValueErrorType || (exports.ValueErrorType = ValueErrorType = {}));
84
+ // --------------------------------------------------------------------------
85
+ // ValueErrors
86
+ // --------------------------------------------------------------------------
80
87
  class ValueErrorsUnknownTypeError extends Error {
81
88
  constructor(schema) {
82
89
  super('Unknown type');
@@ -84,12 +91,21 @@ class ValueErrorsUnknownTypeError extends Error {
84
91
  }
85
92
  }
86
93
  exports.ValueErrorsUnknownTypeError = ValueErrorsUnknownTypeError;
94
+ // --------------------------------------------------------------------------
95
+ // EscapeKey
96
+ // --------------------------------------------------------------------------
87
97
  function EscapeKey(key) {
88
- return key.replace(/~/g, '~0').replace(/\//g, '~1');
98
+ return key.replace(/~/g, '~0').replace(/\//g, '~1'); // RFC6901 Path
89
99
  }
100
+ // --------------------------------------------------------------------------
101
+ // Guards
102
+ // --------------------------------------------------------------------------
90
103
  function IsDefined(value) {
91
104
  return value !== undefined;
92
105
  }
106
+ // --------------------------------------------------------------------------
107
+ // ValueErrorIterator
108
+ // --------------------------------------------------------------------------
93
109
  class ValueErrorIterator {
94
110
  constructor(iterator) {
95
111
  this.iterator = iterator;
@@ -97,15 +113,22 @@ class ValueErrorIterator {
97
113
  [Symbol.iterator]() {
98
114
  return this.iterator;
99
115
  }
116
+ /** Returns the first value error or undefined if no errors */
100
117
  First() {
101
118
  const next = this.iterator.next();
102
119
  return next.done ? undefined : next.value;
103
120
  }
104
121
  }
105
122
  exports.ValueErrorIterator = ValueErrorIterator;
123
+ // --------------------------------------------------------------------------
124
+ // Create
125
+ // --------------------------------------------------------------------------
106
126
  function Create(type, schema, path, value) {
107
127
  return { type, schema, path, value, message: (0, function_1.GetErrorFunction)()(schema, type) };
108
128
  }
129
+ // --------------------------------------------------------------------------
130
+ // Types
131
+ // --------------------------------------------------------------------------
109
132
  function* TAny(schema, references, path, value) { }
110
133
  function* TArray(schema, references, path, value) {
111
134
  if (!(0, index_1.IsArray)(value)) {
@@ -120,6 +143,7 @@ function* TArray(schema, references, path, value) {
120
143
  for (let i = 0; i < value.length; i++) {
121
144
  yield* Visit(schema.items, references, `${path}/${i}`, value[i]);
122
145
  }
146
+ // prettier-ignore
123
147
  if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {
124
148
  const hashed = (0, index_6.Hash)(element);
125
149
  if (set.has(hashed)) {
@@ -131,6 +155,7 @@ function* TArray(schema, references, path, value) {
131
155
  } return true; })())) {
132
156
  yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);
133
157
  }
158
+ // contains
134
159
  if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {
135
160
  return;
136
161
  }
@@ -240,7 +265,7 @@ function* TIntersect(schema, references, path, value) {
240
265
  if (!keyCheck.test(valueKey)) {
241
266
  const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();
242
267
  if (!next.done)
243
- yield next.value;
268
+ yield next.value; // yield interior
244
269
  }
245
270
  }
246
271
  }
@@ -432,7 +457,7 @@ function* TUnion(schema, references, path, value) {
432
457
  for (const subschema of schema.anyOf) {
433
458
  const errors = [...Visit(subschema, references, path, value)];
434
459
  if (errors.length === 0)
435
- return;
460
+ return; // matched
436
461
  count += errors.length;
437
462
  }
438
463
  if (count > 0) {
@@ -529,6 +554,7 @@ function* Visit(schema, references, path, value) {
529
554
  return yield* TKind(schema_, references_, path, value);
530
555
  }
531
556
  }
557
+ /** Returns an iterator for each error in this value. */
532
558
  function Errors(...args) {
533
559
  const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);
534
560
  return new ValueErrorIterator(iterator);
@@ -1,6 +1,9 @@
1
1
  import { TSchema } from '../type/schema/index';
2
2
  import { ValueErrorType } from './errors';
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,8 +1,10 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.GetErrorFunction = exports.SetErrorFunction = exports.DefaultErrorFunction = void 0;
4
5
  const index_1 = require("../type/symbols/index");
5
6
  const errors_1 = require("./errors");
7
+ /** Creates an error message using en-US as the default locale */
6
8
  function DefaultErrorFunction(schema, errorType) {
7
9
  switch (errorType) {
8
10
  case errors_1.ValueErrorType.ArrayContains:
@@ -136,11 +138,14 @@ function DefaultErrorFunction(schema, errorType) {
136
138
  }
137
139
  }
138
140
  exports.DefaultErrorFunction = DefaultErrorFunction;
141
+ /** Manages error message providers */
139
142
  let errorFunction = DefaultErrorFunction;
143
+ /** Sets the error function used to generate error messages */
140
144
  function SetErrorFunction(callback) {
141
145
  errorFunction = callback;
142
146
  }
143
147
  exports.SetErrorFunction = SetErrorFunction;
148
+ /** Gets the error function used to generate error messages */
144
149
  function GetErrorFunction() {
145
150
  return errorFunction;
146
151
  }
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.SetErrorFunction = exports.GetErrorFunction = exports.DefaultErrorFunction = exports.ValueErrorsUnknownTypeError = exports.ValueErrorType = exports.ValueErrorIterator = exports.Errors = void 0;
4
5
  var errors_1 = require("./errors");
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Lowercase = exports.Capitalize = exports.IntrinsicFromMappedKey = exports.Intrinsic = exports.Iterator = exports.IntersectEvaluated = exports.Intersect = exports.Integer = exports.InstanceType = exports.IndexFromMappedKey = exports.IndexPropertyKeys = exports.Index = exports.Increment = exports.Function = exports.Extract = exports.ExtendsUndefinedCheck = exports.ExtendsResult = exports.ExtendsCheck = exports.Extends = exports.Exclude = exports.Enum = exports.Deref = exports.Date = exports.ConstructorParameters = exports.Constructor = exports.Const = exports.Composite = exports.Boolean = exports.BigInt = exports.Awaited = exports.AsyncIterator = exports.Array = exports.Any = exports.CloneRest = exports.CloneType = exports.ValueGuard = exports.TypeGuard = exports.FormatRegistry = exports.TypeRegistry = exports.PatternStringExact = exports.PatternString = exports.PatternNumberExact = exports.PatternNumber = exports.PatternBooleanExact = exports.PatternBoolean = exports.TransformKind = exports.OptionalKind = exports.ReadonlyKind = exports.Hint = exports.Kind = void 0;
4
5
  exports.Type = exports.Void = exports.Unsafe = exports.Unknown = exports.UnionEvaluated = exports.Union = exports.Undefined = exports.Uint8Array = exports.Tuple = exports.TransformEncodeBuilder = exports.TransformDecodeBuilder = exports.Transform = exports.TemplateLiteralGenerate = exports.TemplateLiteralParseExact = exports.TemplateLiteralParse = exports.IsTemplateLiteralFinite = exports.TemplateLiteral = exports.Symbol = exports.String = exports.Strict = exports.ReturnType = exports.Rest = exports.Required = exports.RegExp = exports.Ref = exports.Recursive = exports.Record = exports.ReadonlyOptional = exports.Readonly = exports.Promise = exports.Pick = exports.PartialFromMappedResult = exports.Partial = exports.Parameters = exports.Optional = exports.Omit = exports.Object = exports.Number = exports.Null = exports.Not = exports.Never = exports.MappedResult = exports.MappedKey = exports.Mapped = exports.Literal = exports.KeyOfPattern = exports.KeyOfPropertyKeys = exports.KeyOf = exports.Uppercase = exports.Uncapitalize = void 0;
5
6
  exports.JavaScriptTypeBuilder = exports.JsonTypeBuilder = void 0;
7
+ // ------------------------------------------------------------------
8
+ // Infrastructure
9
+ // ------------------------------------------------------------------
6
10
  var index_1 = require("./type/symbols/index");
7
11
  Object.defineProperty(exports, "Kind", { enumerable: true, get: function () { return index_1.Kind; } });
8
12
  Object.defineProperty(exports, "Hint", { enumerable: true, get: function () { return index_1.Hint; } });
@@ -25,6 +29,9 @@ Object.defineProperty(exports, "ValueGuard", { enumerable: true, get: function (
25
29
  var type_1 = require("./type/clone/type");
26
30
  Object.defineProperty(exports, "CloneType", { enumerable: true, get: function () { return type_1.CloneType; } });
27
31
  Object.defineProperty(exports, "CloneRest", { enumerable: true, get: function () { return type_1.CloneRest; } });
32
+ // ------------------------------------------------------------------
33
+ // Type
34
+ // ------------------------------------------------------------------
28
35
  var index_5 = require("./type/any/index");
29
36
  Object.defineProperty(exports, "Any", { enumerable: true, get: function () { return index_5.Any; } });
30
37
  var index_6 = require("./type/array/index");
@@ -166,6 +173,9 @@ var index_62 = require("./type/unsafe/index");
166
173
  Object.defineProperty(exports, "Unsafe", { enumerable: true, get: function () { return index_62.Unsafe; } });
167
174
  var index_63 = require("./type/void/index");
168
175
  Object.defineProperty(exports, "Void", { enumerable: true, get: function () { return index_63.Void; } });
176
+ // ------------------------------------------------------------------
177
+ // Namespace
178
+ // ------------------------------------------------------------------
169
179
  var index_64 = require("./type/type/index");
170
180
  Object.defineProperty(exports, "Type", { enumerable: true, get: function () { return index_64.Type; } });
171
181
  Object.defineProperty(exports, "JsonTypeBuilder", { enumerable: true, get: function () { return index_64.JsonTypeBuilder; } });
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TypeSystemDuplicateTypeKind = exports.TypeSystemDuplicateFormat = exports.TypeSystem = exports.TypeSystemPolicy = void 0;
4
5
  var policy_1 = require("./policy");
@@ -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,31 +1,45 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TypeSystemPolicy = void 0;
4
5
  const index_1 = require("../value/guard/index");
5
6
  var TypeSystemPolicy;
6
7
  (function (TypeSystemPolicy) {
8
+ // ------------------------------------------------------------------
9
+ // TypeSystemPolicy
10
+ // ------------------------------------------------------------------
11
+ /** Shared assertion routines used by the value and errors modules */
12
+ /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */
7
13
  TypeSystemPolicy.ExactOptionalPropertyTypes = false;
14
+ /** Sets whether arrays should be treated as a kind of objects. The default is `false` */
8
15
  TypeSystemPolicy.AllowArrayObject = false;
16
+ /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */
9
17
  TypeSystemPolicy.AllowNaN = false;
18
+ /** Sets whether `null` should validate for void types. The default is `false` */
10
19
  TypeSystemPolicy.AllowNullVoid = false;
20
+ /** Asserts this value using the ExactOptionalPropertyTypes policy */
11
21
  function IsExactOptionalProperty(value, key) {
12
22
  return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;
13
23
  }
14
24
  TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;
25
+ /** Asserts this value using the AllowArrayObjects policy */
15
26
  function IsObjectLike(value) {
16
27
  const isObject = (0, index_1.IsObject)(value);
17
28
  return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !(0, index_1.IsArray)(value);
18
29
  }
19
30
  TypeSystemPolicy.IsObjectLike = IsObjectLike;
31
+ /** Asserts this value as a record using the AllowArrayObjects policy */
20
32
  function IsRecordLike(value) {
21
33
  return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);
22
34
  }
23
35
  TypeSystemPolicy.IsRecordLike = IsRecordLike;
36
+ /** Asserts this value using the AllowNaN policy */
24
37
  function IsNumberLike(value) {
25
38
  const isNumber = (0, index_1.IsNumber)(value);
26
39
  return TypeSystemPolicy.AllowNaN ? isNumber : isNumber && Number.isFinite(value);
27
40
  }
28
41
  TypeSystemPolicy.IsNumberLike = IsNumberLike;
42
+ /** Asserts this value using the AllowVoidNull policy */
29
43
  function IsVoidLike(value) {
30
44
  const isUndefined = (0, index_1.IsUndefined)(value);
31
45
  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").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,9 +1,13 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TypeSystem = exports.TypeSystemDuplicateFormat = exports.TypeSystemDuplicateTypeKind = void 0;
4
5
  const index_1 = require("../type/registry/index");
5
6
  const index_2 = require("../type/unsafe/index");
6
7
  const index_3 = require("../type/symbols/index");
8
+ // ------------------------------------------------------------------
9
+ // Errors
10
+ // ------------------------------------------------------------------
7
11
  class TypeSystemDuplicateTypeKind extends Error {
8
12
  constructor(kind) {
9
13
  super(`Duplicate type kind '${kind}' detected`);
@@ -16,8 +20,13 @@ class TypeSystemDuplicateFormat extends Error {
16
20
  }
17
21
  }
18
22
  exports.TypeSystemDuplicateFormat = TypeSystemDuplicateFormat;
23
+ // ------------------------------------------------------------------
24
+ // TypeSystem
25
+ // ------------------------------------------------------------------
26
+ /** Creates user defined types and formats and provides overrides for value checking behaviours */
19
27
  var TypeSystem;
20
28
  (function (TypeSystem) {
29
+ /** Creates a new type */
21
30
  function Type(kind, check) {
22
31
  if (index_1.TypeRegistry.Has(kind))
23
32
  throw new TypeSystemDuplicateTypeKind(kind);
@@ -25,6 +34,7 @@ var TypeSystem;
25
34
  return (options = {}) => (0, index_2.Unsafe)({ ...options, [index_3.Kind]: kind });
26
35
  }
27
36
  TypeSystem.Type = Type;
37
+ /** Creates a new string format */
28
38
  function Format(format, check) {
29
39
  if (index_1.FormatRegistry.Has(format))
30
40
  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,7 +1,9 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Any = void 0;
4
5
  const index_1 = require("../symbols/index");
6
+ /** `[Json]` Creates an Any type */
5
7
  function Any(options = {}) {
6
8
  return { ...options, [index_1.Kind]: 'Any' };
7
9
  }
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -2,11 +2,17 @@ import type { TSchema, SchemaOptions } from '../schema/index';
2
2
  import type { Static } from '../static/index';
3
3
  import { Kind } from '../symbols/index';
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,8 +1,10 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Array = void 0;
4
5
  const index_1 = require("../symbols/index");
5
6
  const type_1 = require("../clone/type");
7
+ /** `[Json]` Creates an Array type */
6
8
  function Array(schema, options = {}) {
7
9
  return {
8
10
  ...options,
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -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,8 +1,10 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.AsyncIterator = void 0;
4
5
  const index_1 = require("../symbols/index");
5
6
  const type_1 = require("../clone/type");
7
+ /** `[JavaScript]` Creates a AsyncIterator type */
6
8
  function AsyncIterator(items, options = {}) {
7
9
  return {
8
10
  ...options,
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);