@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
@@ -39,136 +39,190 @@ import { Tuple } from '../tuple/index.mjs';
39
39
  import { Union } from '../union/index.mjs';
40
40
  import { Unknown } from '../unknown/index.mjs';
41
41
  import { Unsafe } from '../unsafe/index.mjs';
42
+ /** Json Type Builder with Static Resolution for TypeScript */
42
43
  export class JsonTypeBuilder {
44
+ // ------------------------------------------------------------------------
45
+ // Strict
46
+ // ------------------------------------------------------------------------
47
+ /** `[Json]` Omits compositing symbols from this schema */
43
48
  Strict(schema) {
44
49
  return Strict(schema);
45
50
  }
51
+ // ------------------------------------------------------------------------
52
+ // Modifiers
53
+ // ------------------------------------------------------------------------
54
+ /** `[Json]` Creates a Readonly and Optional property */
46
55
  ReadonlyOptional(schema) {
47
56
  return ReadonlyOptional(schema);
48
57
  }
58
+ /** `[Json]` Creates a Readonly property */
49
59
  Readonly(schema) {
50
60
  return Readonly(schema);
51
61
  }
62
+ /** `[Json]` Creates an Optional property */
52
63
  Optional(schema) {
53
64
  return Optional(schema);
54
65
  }
66
+ // ------------------------------------------------------------------------
67
+ // Types
68
+ // ------------------------------------------------------------------------
69
+ /** `[Json]` Creates an Any type */
55
70
  Any(options = {}) {
56
71
  return Any(options);
57
72
  }
73
+ /** `[Json]` Creates an Array type */
58
74
  Array(schema, options = {}) {
59
75
  return Array(schema, options);
60
76
  }
77
+ /** `[Json]` Creates a Boolean type */
61
78
  Boolean(options = {}) {
62
79
  return Boolean(options);
63
80
  }
81
+ /** `[Json]` Intrinsic function to Capitalize LiteralString types */
64
82
  Capitalize(schema, options = {}) {
65
83
  return Capitalize(schema, options);
66
84
  }
85
+ /** `[Json]` Creates a Composite object type */
67
86
  Composite(objects, options) {
68
- return Composite(objects, options);
87
+ return Composite(objects, options); // (error) TS 5.4.0-dev - review TComposite implementation
69
88
  }
89
+ /** `[JavaScript]` Creates a readonly const type from the given value. */
70
90
  Const(value, options = {}) {
71
91
  return Const(value, options);
72
92
  }
93
+ /** `[Json]` Creates a dereferenced type */
73
94
  Deref(schema, references) {
74
95
  return Deref(schema, references);
75
96
  }
97
+ /** `[Json]` Creates a Enum type */
76
98
  Enum(item, options = {}) {
77
99
  return Enum(item, options);
78
100
  }
101
+ /** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */
79
102
  Exclude(unionType, excludedMembers, options = {}) {
80
103
  return Exclude(unionType, excludedMembers, options);
81
104
  }
105
+ /** `[Json]` Creates a Conditional type */
82
106
  Extends(L, R, T, F, options = {}) {
83
107
  return Extends(L, R, T, F, options);
84
108
  }
109
+ /** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */
85
110
  Extract(type, union, options = {}) {
86
111
  return Extract(type, union, options);
87
112
  }
113
+ /** `[Json]` Returns an Indexed property type for the given keys */
88
114
  Index(schema, unresolved, options = {}) {
89
115
  return Index(schema, unresolved, options);
90
116
  }
117
+ /** `[Json]` Creates an Integer type */
91
118
  Integer(options = {}) {
92
119
  return Integer(options);
93
120
  }
121
+ /** `[Json]` Creates an Intersect type */
94
122
  Intersect(T, options = {}) {
95
123
  return Intersect(T, options);
96
124
  }
125
+ /** `[Json]` Creates a KeyOf type */
97
126
  KeyOf(schema, options = {}) {
98
127
  return KeyOf(schema, options);
99
128
  }
129
+ /** `[Json]` Creates a Literal type */
100
130
  Literal(value, options = {}) {
101
131
  return Literal(value, options);
102
132
  }
133
+ /** `[Json]` Intrinsic function to Lowercase LiteralString types */
103
134
  Lowercase(schema, options = {}) {
104
135
  return Lowercase(schema, options);
105
136
  }
137
+ /** `[Json]` Creates a Mapped object type */
106
138
  Mapped(key, map, options = {}) {
107
139
  return Mapped(key, map, options);
108
140
  }
141
+ /** `[Json]` Creates a Never type */
109
142
  Never(options = {}) {
110
143
  return Never(options);
111
144
  }
145
+ /** `[Json]` Creates a Not type */
112
146
  Not(schema, options) {
113
147
  return Not(schema, options);
114
148
  }
149
+ /** `[Json]` Creates a Null type */
115
150
  Null(options = {}) {
116
151
  return Null(options);
117
152
  }
153
+ /** `[Json]` Creates a Number type */
118
154
  Number(options = {}) {
119
155
  return Number(options);
120
156
  }
157
+ /** `[Json]` Creates an Object type */
121
158
  Object(properties, options = {}) {
122
159
  return Object(properties, options);
123
160
  }
161
+ /** `[Json]` Constructs a type whose keys are omitted from the given type */
124
162
  Omit(schema, unresolved, options = {}) {
125
163
  return Omit(schema, unresolved, options);
126
164
  }
165
+ /** `[Json]` Constructs a type where all properties are optional */
127
166
  Partial(schema, options = {}) {
128
167
  return Partial(schema, options);
129
168
  }
169
+ /** `[Json]` Constructs a type whose keys are picked from the given type */
130
170
  Pick(schema, unresolved, options = {}) {
131
171
  return Pick(schema, unresolved, options);
132
172
  }
173
+ /** `[Json]` Creates a Record type */
133
174
  Record(key, schema, options = {}) {
134
175
  return Record(key, schema);
135
176
  }
177
+ /** `[Json]` Creates a Recursive type */
136
178
  Recursive(callback, options = {}) {
137
179
  return Recursive(callback, options);
138
180
  }
181
+ /** `[Json]` Creates a Ref type. */
139
182
  Ref(unresolved, options = {}) {
140
183
  return Ref(unresolved, options);
141
184
  }
185
+ /** `[Json]` Constructs a type where all properties are required */
142
186
  Required(schema, options = {}) {
143
187
  return Required(schema, options);
144
188
  }
189
+ /** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */
145
190
  Rest(schema) {
146
191
  return Rest(schema);
147
192
  }
193
+ /** `[Json]` Creates a String type */
148
194
  String(options = {}) {
149
195
  return String(options);
150
196
  }
197
+ /** `[Json]` Creates a TemplateLiteral type */
151
198
  TemplateLiteral(unresolved, options = {}) {
152
199
  return TemplateLiteral(unresolved, options);
153
200
  }
201
+ /** `[Json]` Creates a Transform type */
154
202
  Transform(schema) {
155
203
  return Transform(schema);
156
204
  }
205
+ /** `[Json]` Creates a Tuple type */
157
206
  Tuple(items, options = {}) {
158
207
  return Tuple(items, options);
159
208
  }
209
+ /** `[Json]` Intrinsic function to Uncapitalize LiteralString types */
160
210
  Uncapitalize(schema, options = {}) {
161
211
  return Uncapitalize(schema, options);
162
212
  }
213
+ /** `[Json]` Creates a Union type */
163
214
  Union(schemas, options = {}) {
164
215
  return Union(schemas, options);
165
216
  }
217
+ /** `[Json]` Creates an Unknown type */
166
218
  Unknown(options = {}) {
167
219
  return Unknown(options);
168
220
  }
221
+ /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */
169
222
  Unsafe(options = {}) {
170
223
  return Unsafe(options);
171
224
  }
225
+ /** `[Json]` Intrinsic function to Uppercase LiteralString types */
172
226
  Uppercase(schema, options = {}) {
173
227
  return Uppercase(schema, options);
174
228
  }
@@ -1,3 +1,6 @@
1
+ // ------------------------------------------------------------------
2
+ // Type: Module
3
+ // ------------------------------------------------------------------
1
4
  export { Any } from '../any/index.mjs';
2
5
  export { Array } from '../array/index.mjs';
3
6
  export { AsyncIterator } from '../async-iterator/index.mjs';
@@ -9,4 +9,5 @@ export interface TUint8Array extends TSchema, Uint8ArrayOptions {
9
9
  static: Uint8Array;
10
10
  type: 'uint8array';
11
11
  }
12
+ /** `[JavaScript]` Creates a Uint8Array type */
12
13
  export declare function Uint8Array(options?: Uint8ArrayOptions): TUint8Array;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[JavaScript]` Creates a Uint8Array type */
2
3
  export function Uint8Array(options = {}) {
3
4
  return { ...options, [Kind]: 'Uint8Array', type: 'Uint8Array' };
4
5
  }
@@ -5,4 +5,5 @@ export interface TUndefined extends TSchema {
5
5
  static: undefined;
6
6
  type: 'undefined';
7
7
  }
8
+ /** `[JavaScript]` Creates a Undefined type */
8
9
  export declare function Undefined(options?: SchemaOptions): TUndefined;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[JavaScript]` Creates a Undefined type */
2
3
  export function Undefined(options = {}) {
3
4
  return { ...options, [Kind]: 'Undefined', type: 'undefined' };
4
5
  }
@@ -12,5 +12,6 @@ declare function RemoveOptionalFromType<T extends TSchema>(T: T): RemoveOptional
12
12
  type ResolveUnion<T extends TSchema[], R extends TSchema[] = RemoveOptionalFromRest<T>> = (IsUnionOptional<T> extends true ? TOptional<TUnion<R>> : TUnion<R>);
13
13
  declare function ResolveUnion<T extends TSchema[]>(T: T, options: SchemaOptions): ResolveUnion<T>;
14
14
  export type UnionEvaluated<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : ResolveUnion<T>);
15
+ /** `[Json]` Creates an evaluated Union type */
15
16
  export declare function UnionEvaluated<T extends TSchema[], R = UnionEvaluated<T>>(T: [...T], options?: SchemaOptions): R;
16
17
  export {};
@@ -4,7 +4,12 @@ import { Discard } from '../discard/index.mjs';
4
4
  import { Never } from '../never/index.mjs';
5
5
  import { Optional } from '../optional/index.mjs';
6
6
  import { UnionCreate } from './union-create.mjs';
7
+ // ------------------------------------------------------------------
8
+ // TypeGuard
9
+ // ------------------------------------------------------------------
10
+ // prettier-ignore
7
11
  import { TOptional as IsOptionalType } from '../guard/type.mjs';
12
+ // prettier-ignore
8
13
  function IsUnionOptional(T) {
9
14
  const [L, ...R] = T;
10
15
  return (T.length > 0
@@ -13,18 +18,23 @@ function IsUnionOptional(T) {
13
18
  : IsUnionOptional(R)
14
19
  : false);
15
20
  }
21
+ // prettier-ignore
16
22
  function RemoveOptionalFromRest(T) {
17
23
  return (T.map(T => RemoveOptionalFromType(T)));
18
24
  }
25
+ // prettier-ignore
19
26
  function RemoveOptionalFromType(T) {
20
27
  return (Discard(T, [OptionalKind]));
21
28
  }
29
+ // prettier-ignore
22
30
  function ResolveUnion(T, options) {
23
31
  return (IsUnionOptional(T)
24
32
  ? Optional(UnionCreate(RemoveOptionalFromRest(T), options))
25
33
  : UnionCreate(RemoveOptionalFromRest(T), options));
26
34
  }
35
+ /** `[Json]` Creates an evaluated Union type */
27
36
  export function UnionEvaluated(T, options = {}) {
37
+ // prettier-ignore
28
38
  return (T.length === 0 ? Never(options) :
29
39
  T.length === 1 ? CloneType(T[0], options) :
30
40
  ResolveUnion(T, options));
@@ -2,4 +2,5 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import { type TNever } from '../never/index.mjs';
3
3
  import type { TUnion } from './union-type.mjs';
4
4
  export type Union<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : TUnion<T>);
5
+ /** `[Json]` Creates a Union type */
5
6
  export declare function Union<T extends TSchema[]>(T: [...T], options?: SchemaOptions): Union<T>;
@@ -1,7 +1,9 @@
1
1
  import { Never } from '../never/index.mjs';
2
2
  import { CloneType } from '../clone/type.mjs';
3
3
  import { UnionCreate } from './union-create.mjs';
4
+ /** `[Json]` Creates a Union type */
4
5
  export function Union(T, options = {}) {
6
+ // prettier-ignore
5
7
  return (T.length === 0 ? Never(options) :
6
8
  T.length === 1 ? CloneType(T[0], options) :
7
9
  UnionCreate(T, options));
@@ -4,4 +4,5 @@ export interface TUnknown extends TSchema {
4
4
  [Kind]: 'Unknown';
5
5
  static: unknown;
6
6
  }
7
+ /** `[Json]` Creates an Unknown type */
7
8
  export declare function Unknown(options?: SchemaOptions): TUnknown;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[Json]` Creates an Unknown type */
2
3
  export function Unknown(options = {}) {
3
4
  return {
4
5
  ...options,
@@ -7,4 +7,5 @@ export interface TUnsafe<T> extends TSchema {
7
7
  [Kind]: string;
8
8
  static: T;
9
9
  }
10
+ /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */
10
11
  export declare function Unsafe<T>(options?: UnsafeOptions): TUnsafe<T>;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */
2
3
  export function Unsafe(options = {}) {
3
4
  return {
4
5
  ...options,
@@ -5,4 +5,5 @@ export interface TVoid extends TSchema {
5
5
  static: void;
6
6
  type: 'void';
7
7
  }
8
+ /** `[JavaScript]` Creates a Void type */
8
9
  export declare function Void(options?: SchemaOptions): TVoid;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[JavaScript]` Creates a Void type */
2
3
  export function Void(options = {}) {
3
4
  return {
4
5
  ...options,
@@ -17,5 +17,7 @@ export declare class ValueCastUnknownTypeError extends Error {
17
17
  readonly schema: TSchema;
18
18
  constructor(schema: TSchema);
19
19
  }
20
+ /** Casts a value into a given type and references. The return value will retain as much information of the original value as possible. */
20
21
  export declare function Cast<T extends TSchema>(schema: T, references: TSchema[], value: unknown): Static<T>;
22
+ /** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
21
23
  export declare function Cast<T extends TSchema>(schema: T, value: unknown): Static<T>;
@@ -4,6 +4,9 @@ import { Create } from '../create/index.mjs';
4
4
  import { Check } from '../check/index.mjs';
5
5
  import { Clone } from '../clone/index.mjs';
6
6
  import { Deref } from '../deref/index.mjs';
7
+ // ------------------------------------------------------------------
8
+ // Errors
9
+ // ------------------------------------------------------------------
7
10
  export class ValueCastArrayUniqueItemsTypeError extends Error {
8
11
  schema;
9
12
  value;
@@ -34,6 +37,14 @@ export class ValueCastUnknownTypeError extends Error {
34
37
  this.schema = schema;
35
38
  }
36
39
  }
40
+ // ------------------------------------------------------------------
41
+ // The following will score a schema against a value. For objects,
42
+ // the score is the tally of points awarded for each property of
43
+ // the value. Property points are (1.0 / propertyCount) to prevent
44
+ // large property counts biasing results. Properties that match
45
+ // literal values are maximally awarded as literals are typically
46
+ // used as union discriminator fields.
47
+ // ------------------------------------------------------------------
37
48
  function ScoreUnion(schema, references, value) {
38
49
  if (schema[Kind] === 'Object' && typeof value === 'object' && !IsNull(value)) {
39
50
  const object = schema;
@@ -71,12 +82,18 @@ function CastUnion(union, references, value) {
71
82
  return Cast(schema, references, value);
72
83
  }
73
84
  }
85
+ // ------------------------------------------------------------------
86
+ // Default
87
+ // ------------------------------------------------------------------
74
88
  function DefaultClone(schema, references, value) {
75
89
  return Check(schema, references, value) ? Clone(value) : Create(schema, references);
76
90
  }
77
91
  function Default(schema, references, value) {
78
92
  return Check(schema, references, value) ? value : Create(schema, references);
79
93
  }
94
+ // ------------------------------------------------------------------
95
+ // Cast
96
+ // ------------------------------------------------------------------
80
97
  function TArray(schema, references, value) {
81
98
  if (Check(schema, references, value))
82
99
  return Clone(value);
@@ -123,6 +140,7 @@ function TObject(schema, references, value) {
123
140
  continue;
124
141
  result[key] = Visit(property, references, value[key]);
125
142
  }
143
+ // additional schema properties
126
144
  if (typeof schema.additionalProperties === 'object') {
127
145
  const propertyNames = Object.getOwnPropertyNames(schema.properties);
128
146
  for (const propertyName of Object.getOwnPropertyNames(value)) {
@@ -168,6 +186,9 @@ function Visit(schema, references, value) {
168
186
  const references_ = IsString(schema.$id) ? [...references, schema] : references;
169
187
  const schema_ = schema;
170
188
  switch (schema[Kind]) {
189
+ // --------------------------------------------------------------
190
+ // Structural
191
+ // --------------------------------------------------------------
171
192
  case 'Array':
172
193
  return TArray(schema_, references_, value);
173
194
  case 'Constructor':
@@ -188,14 +209,21 @@ function Visit(schema, references, value) {
188
209
  return TTuple(schema_, references_, value);
189
210
  case 'Union':
190
211
  return TUnion(schema_, references_, value);
212
+ // --------------------------------------------------------------
213
+ // DefaultClone
214
+ // --------------------------------------------------------------
191
215
  case 'Date':
192
216
  case 'Symbol':
193
217
  case 'Uint8Array':
194
218
  return DefaultClone(schema, references, value);
219
+ // --------------------------------------------------------------
220
+ // Default
221
+ // --------------------------------------------------------------
195
222
  default:
196
223
  return Default(schema_, references_, value);
197
224
  }
198
225
  }
226
+ /** Casts a value into a given type. The return value will retain as much information of the original value as possible. */
199
227
  export function Cast(...args) {
200
228
  return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
201
229
  }
@@ -4,5 +4,7 @@ export declare class ValueCheckUnknownTypeError extends Error {
4
4
  readonly schema: TSchema;
5
5
  constructor(schema: TSchema);
6
6
  }
7
+ /** Returns true if the value matches the given type. */
7
8
  export declare function Check<T extends TSchema>(schema: T, references: TSchema[], value: unknown): value is Static<T>;
9
+ /** Returns true if the value matches the given type. */
8
10
  export declare function Check<T extends TSchema>(schema: T, value: unknown): value is Static<T>;
@@ -8,6 +8,9 @@ import { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';
8
8
  import { TSchema as IsSchemaType } from '../../type/guard/type.mjs';
9
9
  import { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';
10
10
  import { Never } from '../../type/never/index.mjs';
11
+ // --------------------------------------------------------------------------
12
+ // Errors
13
+ // --------------------------------------------------------------------------
11
14
  export class ValueCheckUnknownTypeError extends Error {
12
15
  schema;
13
16
  constructor(schema) {
@@ -15,12 +18,21 @@ export class ValueCheckUnknownTypeError extends Error {
15
18
  this.schema = schema;
16
19
  }
17
20
  }
21
+ // --------------------------------------------------------------------------
22
+ // TypeGuards
23
+ // --------------------------------------------------------------------------
18
24
  function IsAnyOrUnknown(schema) {
19
25
  return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';
20
26
  }
27
+ // --------------------------------------------------------------------------
28
+ // Guards
29
+ // --------------------------------------------------------------------------
21
30
  function IsDefined(value) {
22
31
  return value !== undefined;
23
32
  }
33
+ // --------------------------------------------------------------------------
34
+ // Types
35
+ // --------------------------------------------------------------------------
24
36
  function TAny(schema, references, value) {
25
37
  return true;
26
38
  }
@@ -36,6 +48,7 @@ function TArray(schema, references, value) {
36
48
  if (!value.every((value) => Visit(schema.items, references, value))) {
37
49
  return false;
38
50
  }
51
+ // prettier-ignore
39
52
  if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {
40
53
  const hashed = Hash(element);
41
54
  if (set.has(hashed)) {
@@ -47,8 +60,9 @@ function TArray(schema, references, value) {
47
60
  } return true; })())) {
48
61
  return false;
49
62
  }
63
+ // contains
50
64
  if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {
51
- return true;
65
+ return true; // exit
52
66
  }
53
67
  const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();
54
68
  const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);
@@ -215,6 +229,7 @@ function TObject(schema, references, value) {
215
229
  }
216
230
  if (schema.additionalProperties === false) {
217
231
  const valueKeys = Object.getOwnPropertyNames(value);
232
+ // optimization: value is valid if schemaKey length matches the valueKey length
218
233
  if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {
219
234
  return true;
220
235
  }
@@ -245,9 +260,11 @@ function TRecord(schema, references, value) {
245
260
  }
246
261
  const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];
247
262
  const regex = new RegExp(patternKey);
263
+ // prettier-ignore
248
264
  const check1 = Object.entries(value).every(([key, value]) => {
249
265
  return (regex.test(key)) ? Visit(patternSchema, references, value) : true;
250
266
  });
267
+ // prettier-ignore
251
268
  const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {
252
269
  return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;
253
270
  }) : true;
@@ -414,6 +431,7 @@ function Visit(schema, references, value) {
414
431
  return TKind(schema_, references_, value);
415
432
  }
416
433
  }
434
+ /** Returns true if the value matches the given type. */
417
435
  export function Check(...args) {
418
436
  return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
419
437
  }
@@ -1,3 +1,5 @@
1
1
  import type { TSchema } from '../../type/schema/index.mjs';
2
+ /** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */
2
3
  export declare function Clean<T extends TSchema>(schema: T, references: TSchema[], value: unknown): unknown;
4
+ /** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */
3
5
  export declare function Clean<T extends TSchema>(schema: T): unknown;
@@ -5,12 +5,21 @@ import { Check } from '../check/index.mjs';
5
5
  import { Clone } from '../clone/index.mjs';
6
6
  import { Deref } from '../deref/index.mjs';
7
7
  import { Kind } from '../../type/symbols/index.mjs';
8
+ // ------------------------------------------------------------------
9
+ // IsSchema
10
+ // ------------------------------------------------------------------
8
11
  function IsSchema(schema) {
9
12
  return IsSchemaType(schema);
10
13
  }
14
+ // ------------------------------------------------------------------
15
+ // IsCheckable
16
+ // ------------------------------------------------------------------
11
17
  function IsCheckable(schema) {
12
18
  return IsSchemaType(schema) && schema[Kind] !== 'Unsafe';
13
19
  }
20
+ // ------------------------------------------------------------------
21
+ // Types
22
+ // ------------------------------------------------------------------
14
23
  function TArray(schema, references, value) {
15
24
  if (!IsArray(value))
16
25
  return value;
@@ -34,7 +43,7 @@ function TIntersect(schema, references, value) {
34
43
  }
35
44
  function TObject(schema, references, value) {
36
45
  if (!IsObject(value) || IsArray(value))
37
- return value;
46
+ return value; // Check IsArray for AllowArrayObject configuration
38
47
  const additionalProperties = schema.additionalProperties;
39
48
  for (const key of Object.getOwnPropertyNames(value)) {
40
49
  if (key in schema.properties) {
@@ -84,6 +93,7 @@ function TTuple(schema, references, value) {
84
93
  for (let i = 0; i < length; i++) {
85
94
  value[i] = Visit(schema.items[i], references, value[i]);
86
95
  }
96
+ // prettier-ignore
87
97
  return value.length > length
88
98
  ? value.slice(0, length)
89
99
  : value;
@@ -120,6 +130,7 @@ function Visit(schema, references, value) {
120
130
  return value;
121
131
  }
122
132
  }
133
+ /** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */
123
134
  export function Clean(...args) {
124
135
  return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
125
136
  }
@@ -1 +1,2 @@
1
+ /** Returns a clone of the given value */
1
2
  export declare function Clone<T extends unknown>(value: T): T;
@@ -1,4 +1,7 @@
1
1
  import { IsArray, IsDate, IsPlainObject, IsTypedArray, IsValueType } from '../guard/index.mjs';
2
+ // --------------------------------------------------------------------------
3
+ // Clonable
4
+ // --------------------------------------------------------------------------
2
5
  function ObjectType(value) {
3
6
  const keys = [...Object.getOwnPropertyNames(value), ...Object.getOwnPropertySymbols(value)];
4
7
  return keys.reduce((acc, key) => ({ ...acc, [key]: Clone(value[key]) }), {});
@@ -15,6 +18,10 @@ function DateType(value) {
15
18
  function ValueType(value) {
16
19
  return value;
17
20
  }
21
+ // --------------------------------------------------------------------------
22
+ // Clone
23
+ // --------------------------------------------------------------------------
24
+ /** Returns a clone of the given value */
18
25
  export function Clone(value) {
19
26
  if (IsArray(value))
20
27
  return ArrayType(value);
@@ -3,5 +3,7 @@ export declare class ValueConvertUnknownTypeError extends Error {
3
3
  readonly schema: TSchema;
4
4
  constructor(schema: TSchema);
5
5
  }
6
+ /** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
6
7
  export declare function Convert<T extends TSchema>(schema: T, references: TSchema[], value: unknown): unknown;
8
+ /** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
7
9
  export declare function Convert<T extends TSchema>(schema: T, value: unknown): unknown;