@sinclair/typebox 0.31.28 → 0.32.0-dev-2

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 (629) hide show
  1. package/{compiler → cjs/compiler}/compiler.js +118 -107
  2. package/{compiler → cjs/compiler}/index.js +3 -3
  3. package/{errors → cjs/errors}/errors.js +48 -44
  4. package/cjs/index.js +205 -0
  5. package/cjs/system/errors.js +192 -0
  6. package/{value → cjs/system}/index.js +13 -14
  7. package/cjs/system/policy.js +74 -0
  8. package/cjs/system/system.js +71 -0
  9. package/cjs/type/any/any.js +36 -0
  10. package/{system → cjs/type/any}/index.js +2 -5
  11. package/cjs/type/array/array.js +42 -0
  12. package/cjs/type/array/index.js +44 -0
  13. package/cjs/type/async-iterator/async-iterator.js +42 -0
  14. package/cjs/type/async-iterator/index.js +44 -0
  15. package/cjs/type/awaited/awaited.js +66 -0
  16. package/cjs/type/awaited/index.js +44 -0
  17. package/cjs/type/bigint/bigint.js +40 -0
  18. package/cjs/type/bigint/index.js +44 -0
  19. package/cjs/type/boolean/boolean.js +40 -0
  20. package/cjs/type/boolean/index.js +44 -0
  21. package/cjs/type/clone/index.js +32 -0
  22. package/cjs/type/clone/type.js +41 -0
  23. package/cjs/type/clone/value.js +58 -0
  24. package/cjs/type/composite/composite.js +47 -0
  25. package/cjs/type/composite/index.js +44 -0
  26. package/cjs/type/const/const.js +84 -0
  27. package/cjs/type/const/index.js +44 -0
  28. package/cjs/type/constructor/constructor.js +43 -0
  29. package/cjs/type/constructor/index.js +44 -0
  30. package/cjs/type/constructor-parameters/constructor-parameters.js +37 -0
  31. package/cjs/type/constructor-parameters/index.js +44 -0
  32. package/cjs/type/date/date.js +40 -0
  33. package/cjs/type/date/index.js +44 -0
  34. package/cjs/type/deref/deref.js +136 -0
  35. package/cjs/type/deref/index.js +44 -0
  36. package/cjs/type/discard/discard.js +38 -0
  37. package/cjs/type/discard/index.js +44 -0
  38. package/cjs/type/enum/enum.js +46 -0
  39. package/cjs/type/enum/index.js +44 -0
  40. package/cjs/type/exclude/exclude.js +54 -0
  41. package/cjs/type/exclude/index.js +44 -0
  42. package/cjs/type/extends/extends-check.js +654 -0
  43. package/cjs/type/extends/extends-undefined.js +51 -0
  44. package/cjs/type/extends/extends.js +47 -0
  45. package/cjs/type/extends/index.js +46 -0
  46. package/cjs/type/extract/extract.js +54 -0
  47. package/cjs/type/extract/index.js +44 -0
  48. package/cjs/type/function/function.js +43 -0
  49. package/cjs/type/function/index.js +44 -0
  50. package/cjs/type/guard/index.js +32 -0
  51. package/cjs/type/guard/type.js +515 -0
  52. package/cjs/type/guard/value.js +100 -0
  53. package/cjs/type/helpers/helpers.js +35 -0
  54. package/cjs/type/helpers/index.js +44 -0
  55. package/cjs/type/index.js +113 -0
  56. package/cjs/type/indexed/index.js +46 -0
  57. package/cjs/type/indexed/indexed-key.js +65 -0
  58. package/cjs/type/indexed/indexed-type.js +106 -0
  59. package/cjs/type/indexed/indexed.js +41 -0
  60. package/cjs/type/instance-type/index.js +44 -0
  61. package/cjs/type/instance-type/instance-type.js +36 -0
  62. package/cjs/type/integer/index.js +44 -0
  63. package/cjs/type/integer/integer.js +40 -0
  64. package/cjs/type/intersect/index.js +44 -0
  65. package/cjs/type/intersect/intersect.js +59 -0
  66. package/cjs/type/intrinsic/index.js +44 -0
  67. package/cjs/type/intrinsic/intrinsic.js +106 -0
  68. package/cjs/type/iterator/index.js +44 -0
  69. package/cjs/type/iterator/iterator.js +42 -0
  70. package/cjs/type/keyof/index.js +46 -0
  71. package/cjs/type/keyof/keyof-string.js +103 -0
  72. package/cjs/type/keyof/keyof-type.js +48 -0
  73. package/cjs/type/keyof/keyof.js +38 -0
  74. package/cjs/type/literal/index.js +44 -0
  75. package/cjs/type/literal/literal.js +41 -0
  76. package/cjs/type/mapped/index.js +44 -0
  77. package/cjs/type/mapped/mapped.js +47 -0
  78. package/cjs/type/modifiers/index.js +44 -0
  79. package/cjs/type/modifiers/modifiers.js +78 -0
  80. package/cjs/type/never/index.js +44 -0
  81. package/cjs/type/never/never.js +40 -0
  82. package/cjs/type/not/index.js +44 -0
  83. package/cjs/type/not/not.js +41 -0
  84. package/cjs/type/null/index.js +44 -0
  85. package/cjs/type/null/null.js +40 -0
  86. package/cjs/type/number/index.js +44 -0
  87. package/cjs/type/number/number.js +40 -0
  88. package/cjs/type/object/index.js +44 -0
  89. package/cjs/type/object/object.js +47 -0
  90. package/cjs/type/omit/index.js +44 -0
  91. package/cjs/type/omit/omit.js +75 -0
  92. package/cjs/type/operators/index.js +44 -0
  93. package/cjs/type/operators/operators.js +119 -0
  94. package/cjs/type/optional/index.js +44 -0
  95. package/cjs/type/optional/optional.js +37 -0
  96. package/cjs/type/parameters/index.js +44 -0
  97. package/cjs/type/parameters/parameters.js +37 -0
  98. package/cjs/type/partial/index.js +44 -0
  99. package/cjs/type/partial/partial.js +73 -0
  100. package/cjs/type/patterns/index.js +44 -0
  101. package/cjs/type/patterns/patterns.js +36 -0
  102. package/cjs/type/pick/index.js +44 -0
  103. package/cjs/type/pick/pick.js +66 -0
  104. package/cjs/type/promise/index.js +44 -0
  105. package/cjs/type/promise/promise.js +42 -0
  106. package/cjs/type/readonly/index.js +44 -0
  107. package/cjs/type/readonly/readonly.js +37 -0
  108. package/cjs/type/readonly-optional/index.js +44 -0
  109. package/cjs/type/readonly-optional/readonly-optional.js +37 -0
  110. package/cjs/type/record/index.js +44 -0
  111. package/cjs/type/record/record.js +97 -0
  112. package/cjs/type/recursive/index.js +44 -0
  113. package/cjs/type/recursive/recursive.js +48 -0
  114. package/cjs/type/ref/index.js +44 -0
  115. package/cjs/type/ref/ref.js +45 -0
  116. package/cjs/type/regexp/index.js +44 -0
  117. package/cjs/type/regexp/regexp.js +38 -0
  118. package/cjs/type/registry/format.js +62 -0
  119. package/cjs/type/registry/index.js +32 -0
  120. package/cjs/type/registry/type.js +62 -0
  121. package/cjs/type/required/index.js +44 -0
  122. package/cjs/type/required/required.js +72 -0
  123. package/cjs/type/rest/index.js +44 -0
  124. package/cjs/type/rest/rest.js +41 -0
  125. package/cjs/type/return-type/index.js +44 -0
  126. package/cjs/type/return-type/return-type.js +36 -0
  127. package/cjs/type/schema/anyschema.js +29 -0
  128. package/cjs/type/schema/index.js +45 -0
  129. package/cjs/type/schema/schema.js +30 -0
  130. package/cjs/type/static/index.js +44 -0
  131. package/cjs/type/static/static.js +29 -0
  132. package/cjs/type/strict/index.js +44 -0
  133. package/cjs/type/strict/strict.js +35 -0
  134. package/cjs/type/string/index.js +44 -0
  135. package/cjs/type/string/string.js +36 -0
  136. package/cjs/type/symbol/index.js +44 -0
  137. package/cjs/type/symbol/symbol.js +36 -0
  138. package/cjs/type/symbols/index.js +44 -0
  139. package/cjs/type/symbols/symbols.js +40 -0
  140. package/cjs/type/template-literal/finite.js +71 -0
  141. package/cjs/type/template-literal/generate.js +74 -0
  142. package/cjs/type/template-literal/index.js +50 -0
  143. package/cjs/type/template-literal/parser.js +175 -0
  144. package/cjs/type/template-literal/pattern.js +61 -0
  145. package/cjs/type/template-literal/syntax.js +87 -0
  146. package/cjs/type/template-literal/template-literal.js +43 -0
  147. package/cjs/type/template-literal/union.js +48 -0
  148. package/cjs/type/transform/index.js +44 -0
  149. package/cjs/type/transform/transform.js +72 -0
  150. package/cjs/type/tuple/index.js +44 -0
  151. package/cjs/type/tuple/tuple.js +42 -0
  152. package/cjs/type/type/index.js +44 -0
  153. package/cjs/type/type/javascript.js +120 -0
  154. package/cjs/type/type/json.js +255 -0
  155. package/cjs/type/type/type.js +153 -0
  156. package/cjs/type/uint8array/index.js +44 -0
  157. package/cjs/type/uint8array/uint8array.js +36 -0
  158. package/cjs/type/undefined/index.js +44 -0
  159. package/cjs/type/undefined/undefined.js +36 -0
  160. package/cjs/type/union/index.js +44 -0
  161. package/cjs/type/union/union.js +50 -0
  162. package/cjs/type/unknown/index.js +44 -0
  163. package/cjs/type/unknown/unknown.js +39 -0
  164. package/cjs/type/unsafe/index.js +44 -0
  165. package/cjs/type/unsafe/unsafe.js +39 -0
  166. package/cjs/type/void/index.js +44 -0
  167. package/cjs/type/void/void.js +40 -0
  168. package/{value → cjs/value/cast}/cast.js +62 -83
  169. package/cjs/value/cast/index.js +44 -0
  170. package/cjs/value/check/check.js +468 -0
  171. package/cjs/value/check/index.js +44 -0
  172. package/cjs/value/clean/clean.js +167 -0
  173. package/cjs/value/clean/index.js +44 -0
  174. package/{value → cjs/value/clone}/clone.js +6 -6
  175. package/cjs/value/clone/index.js +44 -0
  176. package/{value → cjs/value/convert}/convert.js +93 -116
  177. package/cjs/value/convert/index.js +44 -0
  178. package/{value → cjs/value/create}/create.js +69 -62
  179. package/cjs/value/create/index.js +44 -0
  180. package/cjs/value/default/default.js +175 -0
  181. package/cjs/value/default/index.js +44 -0
  182. package/{value → cjs/value/delta}/delta.js +57 -53
  183. package/cjs/value/delta/index.js +44 -0
  184. package/{value → cjs/value/deref}/deref.js +1 -2
  185. package/cjs/value/deref/index.js +44 -0
  186. package/{value → cjs/value/equal}/equal.js +14 -14
  187. package/cjs/value/equal/index.js +44 -0
  188. package/cjs/value/guard/index.js +44 -0
  189. package/{value → cjs/value/hash}/hash.js +26 -26
  190. package/cjs/value/hash/index.js +44 -0
  191. package/cjs/value/index.js +123 -0
  192. package/cjs/value/mutate/index.js +44 -0
  193. package/{value → cjs/value/mutate}/mutate.js +25 -25
  194. package/cjs/value/pointer/index.js +31 -0
  195. package/cjs/value/pointer/pointer.js +151 -0
  196. package/cjs/value/transform/decode.js +211 -0
  197. package/cjs/value/transform/encode.js +219 -0
  198. package/cjs/value/transform/has.js +146 -0
  199. package/cjs/value/transform/index.js +46 -0
  200. package/cjs/value/value/index.js +31 -0
  201. package/cjs/value/value/value.js +125 -0
  202. package/{compiler/compiler.d.ts → esm/compiler/compiler.d.mts} +25 -18
  203. package/esm/compiler/compiler.mjs +658 -0
  204. package/{compiler/index.d.ts → esm/compiler/index.d.mts} +2 -2
  205. package/esm/compiler/index.mjs +29 -0
  206. package/{errors/errors.d.ts → esm/errors/errors.d.mts} +7 -7
  207. package/esm/errors/errors.mjs +583 -0
  208. package/esm/errors/index.d.mts +1 -0
  209. package/esm/errors/index.mjs +28 -0
  210. package/esm/index.d.mts +71 -0
  211. package/esm/index.mjs +105 -0
  212. package/esm/system/errors.d.mts +14 -0
  213. package/esm/system/errors.mjs +188 -0
  214. package/esm/system/index.d.mts +4 -0
  215. package/esm/system/index.mjs +31 -0
  216. package/esm/system/policy.d.mts +21 -0
  217. package/esm/system/policy.mjs +71 -0
  218. package/esm/system/system.d.mts +13 -0
  219. package/esm/system/system.mjs +66 -0
  220. package/esm/type/any/any.d.mts +8 -0
  221. package/esm/type/any/any.mjs +32 -0
  222. package/esm/type/any/index.d.mts +1 -0
  223. package/esm/type/any/index.mjs +28 -0
  224. package/esm/type/array/array.d.mts +25 -0
  225. package/esm/type/array/array.mjs +38 -0
  226. package/esm/type/array/index.d.mts +1 -0
  227. package/esm/type/array/index.mjs +28 -0
  228. package/esm/type/async-iterator/async-iterator.d.mts +11 -0
  229. package/esm/type/async-iterator/async-iterator.mjs +38 -0
  230. package/esm/type/async-iterator/index.d.mts +1 -0
  231. package/esm/type/async-iterator/index.mjs +28 -0
  232. package/esm/type/awaited/awaited.d.mts +12 -0
  233. package/esm/type/awaited/awaited.mjs +61 -0
  234. package/esm/type/awaited/index.d.mts +1 -0
  235. package/esm/type/awaited/index.mjs +28 -0
  236. package/esm/type/bigint/bigint.d.mts +16 -0
  237. package/esm/type/bigint/bigint.mjs +36 -0
  238. package/esm/type/bigint/index.d.mts +1 -0
  239. package/esm/type/bigint/index.mjs +28 -0
  240. package/esm/type/boolean/boolean.d.mts +9 -0
  241. package/esm/type/boolean/boolean.mjs +36 -0
  242. package/esm/type/boolean/index.d.mts +1 -0
  243. package/esm/type/boolean/index.mjs +28 -0
  244. package/esm/type/clone/index.d.mts +2 -0
  245. package/esm/type/clone/index.mjs +29 -0
  246. package/esm/type/clone/type.d.mts +5 -0
  247. package/esm/type/clone/type.mjs +36 -0
  248. package/esm/type/clone/value.d.mts +2 -0
  249. package/esm/type/clone/value.mjs +54 -0
  250. package/esm/type/composite/composite.d.mts +15 -0
  251. package/esm/type/composite/composite.mjs +42 -0
  252. package/esm/type/composite/index.d.mts +1 -0
  253. package/esm/type/composite/index.mjs +28 -0
  254. package/esm/type/const/const.d.mts +30 -0
  255. package/esm/type/const/const.mjs +80 -0
  256. package/esm/type/const/index.d.mts +1 -0
  257. package/esm/type/const/index.mjs +28 -0
  258. package/esm/type/constructor/constructor.d.mts +17 -0
  259. package/esm/type/constructor/constructor.mjs +39 -0
  260. package/esm/type/constructor/index.d.mts +1 -0
  261. package/esm/type/constructor/index.mjs +28 -0
  262. package/esm/type/constructor-parameters/constructor-parameters.d.mts +7 -0
  263. package/esm/type/constructor-parameters/constructor-parameters.mjs +33 -0
  264. package/esm/type/constructor-parameters/index.d.mts +1 -0
  265. package/esm/type/constructor-parameters/index.mjs +28 -0
  266. package/esm/type/date/date.d.mts +21 -0
  267. package/esm/type/date/date.mjs +36 -0
  268. package/esm/type/date/index.d.mts +1 -0
  269. package/esm/type/date/index.mjs +28 -0
  270. package/esm/type/deref/deref.d.mts +24 -0
  271. package/esm/type/deref/deref.mjs +131 -0
  272. package/esm/type/deref/index.d.mts +1 -0
  273. package/esm/type/deref/index.mjs +28 -0
  274. package/esm/type/discard/discard.d.mts +1 -0
  275. package/esm/type/discard/discard.mjs +34 -0
  276. package/esm/type/discard/index.d.mts +1 -0
  277. package/esm/type/discard/index.mjs +28 -0
  278. package/esm/type/enum/enum.d.mts +14 -0
  279. package/esm/type/enum/enum.mjs +42 -0
  280. package/esm/type/enum/index.d.mts +1 -0
  281. package/esm/type/enum/index.mjs +28 -0
  282. package/esm/type/exclude/exclude.d.mts +21 -0
  283. package/esm/type/exclude/exclude.mjs +49 -0
  284. package/esm/type/exclude/index.d.mts +1 -0
  285. package/esm/type/exclude/index.mjs +28 -0
  286. package/esm/type/extends/extends-check.d.mts +9 -0
  287. package/esm/type/extends/extends-check.mjs +649 -0
  288. package/esm/type/extends/extends-undefined.d.mts +3 -0
  289. package/esm/type/extends/extends-undefined.mjs +47 -0
  290. package/esm/type/extends/extends.d.mts +9 -0
  291. package/esm/type/extends/extends.mjs +42 -0
  292. package/esm/type/extends/index.d.mts +3 -0
  293. package/esm/type/extends/index.mjs +30 -0
  294. package/esm/type/extract/extract.d.mts +20 -0
  295. package/esm/type/extract/extract.mjs +49 -0
  296. package/esm/type/extract/index.d.mts +1 -0
  297. package/esm/type/extract/index.mjs +28 -0
  298. package/esm/type/function/function.d.mts +17 -0
  299. package/esm/type/function/function.mjs +39 -0
  300. package/esm/type/function/index.d.mts +1 -0
  301. package/esm/type/function/index.mjs +28 -0
  302. package/esm/type/guard/index.d.mts +2 -0
  303. package/esm/type/guard/index.mjs +29 -0
  304. package/esm/type/guard/type.d.mts +130 -0
  305. package/esm/type/guard/type.mjs +469 -0
  306. package/esm/type/guard/value.d.mts +28 -0
  307. package/esm/type/guard/value.mjs +83 -0
  308. package/esm/type/helpers/helpers.d.mts +42 -0
  309. package/esm/type/helpers/helpers.mjs +31 -0
  310. package/esm/type/helpers/index.d.mts +1 -0
  311. package/esm/type/helpers/index.mjs +28 -0
  312. package/esm/type/index.d.mts +70 -0
  313. package/esm/type/index.mjs +97 -0
  314. package/esm/type/indexed/index.d.mts +3 -0
  315. package/esm/type/indexed/index.mjs +30 -0
  316. package/esm/type/indexed/indexed-key.d.mts +17 -0
  317. package/esm/type/indexed/indexed-key.mjs +61 -0
  318. package/esm/type/indexed/indexed-type.d.mts +33 -0
  319. package/esm/type/indexed/indexed-type.mjs +102 -0
  320. package/esm/type/indexed/indexed.d.mts +8 -0
  321. package/esm/type/indexed/indexed.mjs +37 -0
  322. package/esm/type/instance-type/index.d.mts +1 -0
  323. package/esm/type/instance-type/index.mjs +28 -0
  324. package/esm/type/instance-type/instance-type.d.mts +5 -0
  325. package/esm/type/instance-type/instance-type.mjs +32 -0
  326. package/esm/type/integer/index.d.mts +1 -0
  327. package/esm/type/integer/index.mjs +28 -0
  328. package/esm/type/integer/integer.d.mts +16 -0
  329. package/esm/type/integer/integer.mjs +36 -0
  330. package/esm/type/intersect/index.d.mts +1 -0
  331. package/esm/type/intersect/index.mjs +28 -0
  332. package/esm/type/intersect/intersect.d.mts +22 -0
  333. package/esm/type/intersect/intersect.mjs +54 -0
  334. package/esm/type/intrinsic/index.d.mts +1 -0
  335. package/esm/type/intrinsic/index.mjs +28 -0
  336. package/esm/type/intrinsic/intrinsic.d.mts +27 -0
  337. package/esm/type/intrinsic/intrinsic.mjs +98 -0
  338. package/esm/type/iterator/index.d.mts +1 -0
  339. package/esm/type/iterator/index.mjs +28 -0
  340. package/esm/type/iterator/iterator.d.mts +11 -0
  341. package/esm/type/iterator/iterator.mjs +38 -0
  342. package/esm/type/keyof/index.d.mts +3 -0
  343. package/esm/type/keyof/index.mjs +30 -0
  344. package/esm/type/keyof/keyof-string.d.mts +30 -0
  345. package/esm/type/keyof/keyof-string.mjs +98 -0
  346. package/esm/type/keyof/keyof-type.d.mts +11 -0
  347. package/esm/type/keyof/keyof-type.mjs +44 -0
  348. package/esm/type/keyof/keyof.d.mts +5 -0
  349. package/esm/type/keyof/keyof.mjs +34 -0
  350. package/esm/type/literal/index.d.mts +1 -0
  351. package/esm/type/literal/index.mjs +28 -0
  352. package/esm/type/literal/literal.d.mts +10 -0
  353. package/esm/type/literal/literal.mjs +37 -0
  354. package/esm/type/mapped/index.d.mts +1 -0
  355. package/esm/type/mapped/index.mjs +28 -0
  356. package/esm/type/mapped/mapped.d.mts +26 -0
  357. package/esm/type/mapped/mapped.mjs +43 -0
  358. package/esm/type/modifiers/index.d.mts +1 -0
  359. package/esm/type/modifiers/index.mjs +28 -0
  360. package/esm/type/modifiers/modifiers.d.mts +18 -0
  361. package/esm/type/modifiers/modifiers.mjs +73 -0
  362. package/esm/type/never/index.d.mts +1 -0
  363. package/esm/type/never/index.mjs +28 -0
  364. package/esm/type/never/never.d.mts +9 -0
  365. package/esm/type/never/never.mjs +36 -0
  366. package/esm/type/not/index.d.mts +1 -0
  367. package/esm/type/not/index.mjs +28 -0
  368. package/esm/type/not/not.d.mts +10 -0
  369. package/esm/type/not/not.mjs +37 -0
  370. package/esm/type/null/index.d.mts +1 -0
  371. package/esm/type/null/index.mjs +28 -0
  372. package/esm/type/null/null.d.mts +9 -0
  373. package/esm/type/null/null.mjs +36 -0
  374. package/esm/type/number/index.d.mts +1 -0
  375. package/esm/type/number/index.mjs +28 -0
  376. package/esm/type/number/number.d.mts +16 -0
  377. package/esm/type/number/number.mjs +36 -0
  378. package/esm/type/object/index.d.mts +1 -0
  379. package/esm/type/object/index.mjs +28 -0
  380. package/esm/type/object/object.d.mts +44 -0
  381. package/esm/type/object/object.mjs +43 -0
  382. package/esm/type/omit/index.d.mts +1 -0
  383. package/esm/type/omit/index.mjs +28 -0
  384. package/esm/type/omit/omit.d.mts +21 -0
  385. package/esm/type/omit/omit.mjs +70 -0
  386. package/esm/type/operators/index.d.mts +1 -0
  387. package/esm/type/operators/index.mjs +28 -0
  388. package/esm/type/operators/operators.d.mts +24 -0
  389. package/esm/type/operators/operators.mjs +108 -0
  390. package/esm/type/optional/index.d.mts +1 -0
  391. package/esm/type/optional/index.mjs +28 -0
  392. package/esm/type/optional/optional.d.mts +7 -0
  393. package/esm/type/optional/optional.mjs +33 -0
  394. package/esm/type/parameters/index.d.mts +1 -0
  395. package/esm/type/parameters/index.mjs +28 -0
  396. package/esm/type/parameters/parameters.d.mts +7 -0
  397. package/esm/type/parameters/parameters.mjs +33 -0
  398. package/esm/type/partial/index.d.mts +1 -0
  399. package/esm/type/partial/index.mjs +28 -0
  400. package/esm/type/partial/partial.d.mts +23 -0
  401. package/esm/type/partial/partial.mjs +68 -0
  402. package/esm/type/patterns/index.d.mts +1 -0
  403. package/esm/type/patterns/index.mjs +28 -0
  404. package/esm/type/patterns/patterns.d.mts +6 -0
  405. package/esm/type/patterns/patterns.mjs +33 -0
  406. package/esm/type/pick/index.d.mts +1 -0
  407. package/esm/type/pick/index.mjs +28 -0
  408. package/esm/type/pick/pick.d.mts +21 -0
  409. package/esm/type/pick/pick.mjs +61 -0
  410. package/esm/type/promise/index.d.mts +1 -0
  411. package/esm/type/promise/index.mjs +28 -0
  412. package/esm/type/promise/promise.d.mts +11 -0
  413. package/esm/type/promise/promise.mjs +38 -0
  414. package/esm/type/readonly/index.d.mts +1 -0
  415. package/esm/type/readonly/index.mjs +28 -0
  416. package/esm/type/readonly/readonly.d.mts +7 -0
  417. package/esm/type/readonly/readonly.mjs +33 -0
  418. package/esm/type/readonly-optional/index.d.mts +1 -0
  419. package/esm/type/readonly-optional/index.mjs +28 -0
  420. package/esm/type/readonly-optional/readonly-optional.d.mts +6 -0
  421. package/esm/type/readonly-optional/readonly-optional.mjs +33 -0
  422. package/esm/type/record/index.d.mts +1 -0
  423. package/esm/type/record/index.mjs +28 -0
  424. package/esm/type/record/record.d.mts +55 -0
  425. package/esm/type/record/record.mjs +92 -0
  426. package/esm/type/recursive/index.d.mts +1 -0
  427. package/esm/type/recursive/index.mjs +28 -0
  428. package/esm/type/recursive/recursive.d.mts +15 -0
  429. package/esm/type/recursive/recursive.mjs +44 -0
  430. package/esm/type/ref/index.d.mts +1 -0
  431. package/esm/type/ref/index.mjs +28 -0
  432. package/esm/type/ref/ref.d.mts +12 -0
  433. package/esm/type/ref/ref.mjs +41 -0
  434. package/esm/type/regexp/index.d.mts +1 -0
  435. package/esm/type/regexp/index.mjs +28 -0
  436. package/esm/type/regexp/regexp.d.mts +7 -0
  437. package/esm/type/regexp/regexp.mjs +34 -0
  438. package/esm/type/registry/format.d.mts +13 -0
  439. package/esm/type/registry/format.mjs +53 -0
  440. package/esm/type/registry/index.d.mts +2 -0
  441. package/esm/type/registry/index.mjs +29 -0
  442. package/esm/type/registry/type.d.mts +13 -0
  443. package/esm/type/registry/type.mjs +53 -0
  444. package/esm/type/required/index.d.mts +1 -0
  445. package/esm/type/required/index.mjs +28 -0
  446. package/esm/type/required/required.d.mts +23 -0
  447. package/esm/type/required/required.mjs +67 -0
  448. package/esm/type/rest/index.d.mts +1 -0
  449. package/esm/type/rest/index.mjs +28 -0
  450. package/esm/type/rest/rest.d.mts +10 -0
  451. package/esm/type/rest/rest.mjs +36 -0
  452. package/esm/type/return-type/index.d.mts +1 -0
  453. package/esm/type/return-type/index.mjs +28 -0
  454. package/esm/type/return-type/return-type.d.mts +5 -0
  455. package/esm/type/return-type/return-type.mjs +32 -0
  456. package/esm/type/schema/anyschema.d.mts +32 -0
  457. package/esm/type/schema/anyschema.mjs +28 -0
  458. package/esm/type/schema/index.d.mts +2 -0
  459. package/esm/type/schema/index.mjs +29 -0
  460. package/esm/type/schema/schema.d.mts +29 -0
  461. package/esm/type/schema/schema.mjs +28 -0
  462. package/esm/type/static/index.d.mts +1 -0
  463. package/esm/type/static/index.mjs +28 -0
  464. package/esm/type/static/static.d.mts +34 -0
  465. package/esm/type/static/static.mjs +28 -0
  466. package/esm/type/strict/index.d.mts +1 -0
  467. package/esm/type/strict/index.mjs +28 -0
  468. package/esm/type/strict/strict.d.mts +3 -0
  469. package/esm/type/strict/strict.mjs +31 -0
  470. package/esm/type/string/index.d.mts +1 -0
  471. package/esm/type/string/index.mjs +28 -0
  472. package/esm/type/string/string.d.mts +25 -0
  473. package/esm/type/string/string.mjs +32 -0
  474. package/esm/type/symbol/index.d.mts +1 -0
  475. package/esm/type/symbol/index.mjs +28 -0
  476. package/esm/type/symbol/symbol.d.mts +10 -0
  477. package/esm/type/symbol/symbol.mjs +32 -0
  478. package/esm/type/symbols/index.d.mts +1 -0
  479. package/esm/type/symbols/index.mjs +28 -0
  480. package/esm/type/symbols/symbols.d.mts +10 -0
  481. package/esm/type/symbols/symbols.mjs +37 -0
  482. package/esm/type/template-literal/finite.d.mts +16 -0
  483. package/esm/type/template-literal/finite.mjs +66 -0
  484. package/esm/type/template-literal/generate.d.mts +15 -0
  485. package/esm/type/template-literal/generate.mjs +69 -0
  486. package/esm/type/template-literal/index.d.mts +7 -0
  487. package/esm/type/template-literal/index.mjs +34 -0
  488. package/esm/type/template-literal/parser.d.mts +19 -0
  489. package/esm/type/template-literal/parser.mjs +169 -0
  490. package/esm/type/template-literal/pattern.d.mts +4 -0
  491. package/esm/type/template-literal/pattern.mjs +56 -0
  492. package/esm/type/template-literal/syntax.d.mts +20 -0
  493. package/esm/type/template-literal/syntax.mjs +83 -0
  494. package/esm/type/template-literal/template-literal.d.mts +30 -0
  495. package/esm/type/template-literal/template-literal.mjs +39 -0
  496. package/esm/type/template-literal/union.d.mts +7 -0
  497. package/esm/type/template-literal/union.mjs +44 -0
  498. package/esm/type/transform/index.d.mts +1 -0
  499. package/esm/type/transform/index.mjs +28 -0
  500. package/esm/type/transform/transform.d.mts +29 -0
  501. package/esm/type/transform/transform.mjs +69 -0
  502. package/esm/type/tuple/index.d.mts +1 -0
  503. package/esm/type/tuple/index.mjs +28 -0
  504. package/esm/type/tuple/tuple.d.mts +15 -0
  505. package/esm/type/tuple/tuple.mjs +38 -0
  506. package/esm/type/type/index.d.mts +6 -0
  507. package/esm/type/type/index.mjs +40 -0
  508. package/esm/type/type/javascript.d.mts +58 -0
  509. package/esm/type/type/javascript.mjs +116 -0
  510. package/esm/type/type/json.d.mts +139 -0
  511. package/esm/type/type/json.mjs +251 -0
  512. package/esm/type/type/type.d.mts +58 -0
  513. package/esm/type/type/type.mjs +88 -0
  514. package/esm/type/uint8array/index.d.mts +1 -0
  515. package/esm/type/uint8array/index.mjs +28 -0
  516. package/esm/type/uint8array/uint8array.d.mts +13 -0
  517. package/esm/type/uint8array/uint8array.mjs +32 -0
  518. package/esm/type/undefined/index.d.mts +1 -0
  519. package/esm/type/undefined/index.mjs +28 -0
  520. package/esm/type/undefined/undefined.d.mts +9 -0
  521. package/esm/type/undefined/undefined.mjs +32 -0
  522. package/esm/type/union/index.d.mts +1 -0
  523. package/esm/type/union/index.mjs +28 -0
  524. package/esm/type/union/union.d.mts +16 -0
  525. package/esm/type/union/union.mjs +45 -0
  526. package/esm/type/unknown/index.d.mts +1 -0
  527. package/esm/type/unknown/index.mjs +28 -0
  528. package/esm/type/unknown/unknown.d.mts +8 -0
  529. package/esm/type/unknown/unknown.mjs +35 -0
  530. package/esm/type/unsafe/index.d.mts +1 -0
  531. package/esm/type/unsafe/index.mjs +28 -0
  532. package/esm/type/unsafe/unsafe.d.mts +11 -0
  533. package/esm/type/unsafe/unsafe.mjs +35 -0
  534. package/esm/type/void/index.d.mts +1 -0
  535. package/esm/type/void/index.mjs +28 -0
  536. package/esm/type/void/void.d.mts +9 -0
  537. package/esm/type/void/void.mjs +36 -0
  538. package/esm/value/cast/cast.d.mts +23 -0
  539. package/esm/value/cast/cast.mjs +260 -0
  540. package/esm/value/cast/index.d.mts +1 -0
  541. package/esm/value/cast/index.mjs +28 -0
  542. package/esm/value/check/check.d.mts +10 -0
  543. package/{value/check.js → esm/value/check/check.mjs} +52 -51
  544. package/esm/value/check/index.d.mts +1 -0
  545. package/esm/value/check/index.mjs +28 -0
  546. package/esm/value/clean/clean.d.mts +5 -0
  547. package/esm/value/clean/clean.mjs +163 -0
  548. package/esm/value/clean/index.d.mts +1 -0
  549. package/esm/value/clean/index.mjs +28 -0
  550. package/esm/value/clone/clone.mjs +64 -0
  551. package/esm/value/clone/index.d.mts +1 -0
  552. package/esm/value/clone/index.mjs +28 -0
  553. package/esm/value/convert/convert.d.mts +9 -0
  554. package/esm/value/convert/convert.mjs +287 -0
  555. package/esm/value/convert/index.d.mts +1 -0
  556. package/esm/value/convert/index.mjs +28 -0
  557. package/esm/value/create/create.d.mts +31 -0
  558. package/esm/value/create/create.mjs +504 -0
  559. package/esm/value/create/index.d.mts +1 -0
  560. package/esm/value/create/index.mjs +28 -0
  561. package/esm/value/default/default.d.mts +5 -0
  562. package/esm/value/default/default.mjs +171 -0
  563. package/esm/value/default/index.d.mts +1 -0
  564. package/esm/value/default/index.mjs +28 -0
  565. package/esm/value/delta/delta.d.mts +41 -0
  566. package/esm/value/delta/delta.mjs +194 -0
  567. package/esm/value/delta/index.d.mts +1 -0
  568. package/esm/value/delta/index.mjs +28 -0
  569. package/{value/deref.d.ts → esm/value/deref/deref.d.mts} +4 -2
  570. package/esm/value/deref/deref.mjs +41 -0
  571. package/esm/value/deref/index.d.mts +1 -0
  572. package/esm/value/deref/index.mjs +28 -0
  573. package/esm/value/equal/equal.mjs +73 -0
  574. package/esm/value/equal/index.d.mts +1 -0
  575. package/esm/value/equal/index.mjs +28 -0
  576. package/esm/value/guard/guard.mjs +123 -0
  577. package/esm/value/guard/index.d.mts +1 -0
  578. package/esm/value/guard/index.mjs +28 -0
  579. package/{value/hash.d.ts → esm/value/hash/hash.d.mts} +0 -13
  580. package/esm/value/hash/hash.mjs +173 -0
  581. package/esm/value/hash/index.d.mts +1 -0
  582. package/esm/value/hash/index.mjs +28 -0
  583. package/esm/value/index.d.mts +18 -0
  584. package/esm/value/index.mjs +57 -0
  585. package/esm/value/mutate/index.d.mts +1 -0
  586. package/esm/value/mutate/index.mjs +28 -0
  587. package/{value/mutate.d.ts → esm/value/mutate/mutate.d.mts} +1 -1
  588. package/esm/value/mutate/mutate.mjs +123 -0
  589. package/esm/value/pointer/index.d.mts +1 -0
  590. package/esm/value/pointer/index.mjs +28 -0
  591. package/esm/value/pointer/pointer.d.mts +21 -0
  592. package/esm/value/pointer/pointer.mjs +146 -0
  593. package/esm/value/transform/decode.d.mts +19 -0
  594. package/esm/value/transform/decode.mjs +210 -0
  595. package/esm/value/transform/encode.d.mts +20 -0
  596. package/esm/value/transform/encode.mjs +218 -0
  597. package/esm/value/transform/has.d.mts +3 -0
  598. package/esm/value/transform/has.mjs +142 -0
  599. package/esm/value/transform/index.d.mts +3 -0
  600. package/esm/value/transform/index.mjs +30 -0
  601. package/esm/value/value/index.d.mts +1 -0
  602. package/esm/value/value/index.mjs +28 -0
  603. package/esm/value/value/value.d.mts +53 -0
  604. package/esm/value/value/value.mjs +107 -0
  605. package/package.json +37 -27
  606. package/readme.md +183 -155
  607. package/errors/index.d.ts +0 -1
  608. package/system/index.d.ts +0 -2
  609. package/system/system.d.ts +0 -48
  610. package/system/system.js +0 -274
  611. package/typebox.d.ts +0 -962
  612. package/typebox.js +0 -2364
  613. package/value/cast.d.ts +0 -24
  614. package/value/check.d.ts +0 -9
  615. package/value/convert.d.ts +0 -10
  616. package/value/create.d.ts +0 -30
  617. package/value/delta.d.ts +0 -41
  618. package/value/index.d.ts +0 -5
  619. package/value/pointer.d.ts +0 -24
  620. package/value/pointer.js +0 -148
  621. package/value/transform.d.ts +0 -37
  622. package/value/transform.js +0 -473
  623. package/value/value.d.ts +0 -47
  624. package/value/value.js +0 -117
  625. /package/{errors → cjs/errors}/index.js +0 -0
  626. /package/{value → cjs/value/guard}/guard.js +0 -0
  627. /package/{value/clone.d.ts → esm/value/clone/clone.d.mts} +0 -0
  628. /package/{value/equal.d.ts → esm/value/equal/equal.d.mts} +0 -0
  629. /package/{value/guard.d.ts → esm/value/guard/guard.d.mts} +0 -0
@@ -0,0 +1,9 @@
1
+ import type { TSchema } from '../../type/schema/index.mjs';
2
+ export declare class ValueConvertUnknownTypeError extends Error {
3
+ readonly schema: TSchema;
4
+ constructor(schema: TSchema);
5
+ }
6
+ /** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
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. */
9
+ export declare function Convert<T extends TSchema>(schema: T, value: unknown): unknown;
@@ -0,0 +1,287 @@
1
+ /*--------------------------------------------------------------------------
2
+
3
+ @sinclair/typebox/value
4
+
5
+ The MIT License (MIT)
6
+
7
+ Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+
27
+ ---------------------------------------------------------------------------*/
28
+ import { IsArray, IsObject, IsDate, IsUndefined, IsString, IsNumber, IsBoolean, IsBigInt, IsSymbol } from '../guard/index.mjs';
29
+ import { Clone } from '../clone/index.mjs';
30
+ import { Check } from '../check/index.mjs';
31
+ import { Deref } from '../deref/index.mjs';
32
+ import { TObject as IsObjectType } from '../../type/guard/type.mjs';
33
+ import { Kind } from '../../type/symbols/index.mjs';
34
+ import { Composite } from '../../type/composite/index.mjs';
35
+ // ------------------------------------------------------------------
36
+ // Errors
37
+ // ------------------------------------------------------------------
38
+ export class ValueConvertUnknownTypeError extends Error {
39
+ schema;
40
+ constructor(schema) {
41
+ super('Unknown type');
42
+ this.schema = schema;
43
+ }
44
+ }
45
+ // ------------------------------------------------------------------
46
+ // Conversions
47
+ // ------------------------------------------------------------------
48
+ function IsStringNumeric(value) {
49
+ return IsString(value) && !isNaN(value) && !isNaN(parseFloat(value));
50
+ }
51
+ function IsValueToString(value) {
52
+ return IsBigInt(value) || IsBoolean(value) || IsNumber(value);
53
+ }
54
+ function IsValueTrue(value) {
55
+ return value === true || (IsNumber(value) && value === 1) || (IsBigInt(value) && value === BigInt('1')) || (IsString(value) && (value.toLowerCase() === 'true' || value === '1'));
56
+ }
57
+ function IsValueFalse(value) {
58
+ return value === false || (IsNumber(value) && (value === 0 || Object.is(value, -0))) || (IsBigInt(value) && value === BigInt('0')) || (IsString(value) && (value.toLowerCase() === 'false' || value === '0' || value === '-0'));
59
+ }
60
+ function IsTimeStringWithTimeZone(value) {
61
+ return IsString(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value);
62
+ }
63
+ function IsTimeStringWithoutTimeZone(value) {
64
+ return IsString(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value);
65
+ }
66
+ function IsDateTimeStringWithTimeZone(value) {
67
+ return IsString(value) && /^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value);
68
+ }
69
+ function IsDateTimeStringWithoutTimeZone(value) {
70
+ return IsString(value) && /^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value);
71
+ }
72
+ function IsDateString(value) {
73
+ return IsString(value) && /^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(value);
74
+ }
75
+ // ------------------------------------------------------------------
76
+ // Convert
77
+ // ------------------------------------------------------------------
78
+ function TryConvertLiteralString(value, target) {
79
+ const conversion = TryConvertString(value);
80
+ return conversion === target ? conversion : value;
81
+ }
82
+ function TryConvertLiteralNumber(value, target) {
83
+ const conversion = TryConvertNumber(value);
84
+ return conversion === target ? conversion : value;
85
+ }
86
+ function TryConvertLiteralBoolean(value, target) {
87
+ const conversion = TryConvertBoolean(value);
88
+ return conversion === target ? conversion : value;
89
+ }
90
+ // prettier-ignore
91
+ function TryConvertLiteral(schema, value) {
92
+ return (IsString(schema.const) ? TryConvertLiteralString(value, schema.const) :
93
+ IsNumber(schema.const) ? TryConvertLiteralNumber(value, schema.const) :
94
+ IsBoolean(schema.const) ? TryConvertLiteralBoolean(value, schema.const) :
95
+ Clone(value));
96
+ }
97
+ function TryConvertBoolean(value) {
98
+ return IsValueTrue(value) ? true : IsValueFalse(value) ? false : value;
99
+ }
100
+ function TryConvertBigInt(value) {
101
+ return IsStringNumeric(value) ? BigInt(parseInt(value)) : IsNumber(value) ? BigInt(value | 0) : IsValueFalse(value) ? BigInt(0) : IsValueTrue(value) ? BigInt(1) : value;
102
+ }
103
+ function TryConvertString(value) {
104
+ return IsValueToString(value) ? value.toString() : IsSymbol(value) && value.description !== undefined ? value.description.toString() : value;
105
+ }
106
+ function TryConvertNumber(value) {
107
+ return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;
108
+ }
109
+ function TryConvertInteger(value) {
110
+ return IsStringNumeric(value) ? parseInt(value) : IsNumber(value) ? value | 0 : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;
111
+ }
112
+ function TryConvertNull(value) {
113
+ return IsString(value) && value.toLowerCase() === 'null' ? null : value;
114
+ }
115
+ function TryConvertUndefined(value) {
116
+ return IsString(value) && value === 'undefined' ? undefined : value;
117
+ }
118
+ // ------------------------------------------------------------------
119
+ // note: this function may return an invalid dates for the regex
120
+ // tests above. Invalid dates will however be checked during the
121
+ // casting function and will return a epoch date if invalid.
122
+ // Consider better string parsing for the iso dates in future
123
+ // revisions.
124
+ // ------------------------------------------------------------------
125
+ // prettier-ignore
126
+ function TryConvertDate(value) {
127
+ return (IsDate(value) ? value :
128
+ IsNumber(value) ? new Date(value) :
129
+ IsValueTrue(value) ? new Date(1) :
130
+ IsValueFalse(value) ? new Date(0) :
131
+ IsStringNumeric(value) ? new Date(parseInt(value)) :
132
+ IsTimeStringWithoutTimeZone(value) ? new Date(`1970-01-01T${value}.000Z`) :
133
+ IsTimeStringWithTimeZone(value) ? new Date(`1970-01-01T${value}`) :
134
+ IsDateTimeStringWithoutTimeZone(value) ? new Date(`${value}.000Z`) :
135
+ IsDateTimeStringWithTimeZone(value) ? new Date(value) :
136
+ IsDateString(value) ? new Date(`${value}T00:00:00.000Z`) :
137
+ value);
138
+ }
139
+ // ------------------------------------------------------------------
140
+ // Default
141
+ // ------------------------------------------------------------------
142
+ function Default(value) {
143
+ return value;
144
+ }
145
+ // ------------------------------------------------------------------
146
+ // Convert
147
+ // ------------------------------------------------------------------
148
+ function TArray(schema, references, value) {
149
+ if (IsArray(value)) {
150
+ return value.map((value) => Visit(schema.items, references, value));
151
+ }
152
+ return value;
153
+ }
154
+ function TBigInt(schema, references, value) {
155
+ return TryConvertBigInt(value);
156
+ }
157
+ function TBoolean(schema, references, value) {
158
+ return TryConvertBoolean(value);
159
+ }
160
+ function TDate(schema, references, value) {
161
+ return TryConvertDate(value);
162
+ }
163
+ function TInteger(schema, references, value) {
164
+ return TryConvertInteger(value);
165
+ }
166
+ // prettier-ignore
167
+ function TIntersect(schema, references, value) {
168
+ const allObjects = schema.allOf.every(schema => IsObjectType(schema));
169
+ if (allObjects)
170
+ return Visit(Composite(schema.allOf), references, value);
171
+ return Visit(schema.allOf[0], references, value); // todo: fix this
172
+ }
173
+ function TLiteral(schema, references, value) {
174
+ return TryConvertLiteral(schema, value);
175
+ }
176
+ function TNull(schema, references, value) {
177
+ return TryConvertNull(value);
178
+ }
179
+ function TNumber(schema, references, value) {
180
+ return TryConvertNumber(value);
181
+ }
182
+ // prettier-ignore
183
+ function TObject(schema, references, value) {
184
+ const isConvertable = IsObject(value);
185
+ if (!isConvertable)
186
+ return value;
187
+ return Object.getOwnPropertyNames(schema.properties).reduce((value, key) => {
188
+ return !IsUndefined(value[key])
189
+ ? ({ ...value, [key]: Visit(schema.properties[key], references, value[key]) })
190
+ : ({ ...value });
191
+ }, value);
192
+ }
193
+ function TRecord(schema, references, value) {
194
+ const propertyKey = Object.getOwnPropertyNames(schema.patternProperties)[0];
195
+ const property = schema.patternProperties[propertyKey];
196
+ const result = {};
197
+ for (const [propKey, propValue] of Object.entries(value)) {
198
+ result[propKey] = Visit(property, references, propValue);
199
+ }
200
+ return result;
201
+ }
202
+ function TRef(schema, references, value) {
203
+ return Visit(Deref(schema, references), references, value);
204
+ }
205
+ function TString(schema, references, value) {
206
+ return TryConvertString(value);
207
+ }
208
+ function TSymbol(schema, references, value) {
209
+ return IsString(value) || IsNumber(value) ? Symbol(value) : value;
210
+ }
211
+ function TThis(schema, references, value) {
212
+ return Visit(Deref(schema, references), references, value);
213
+ }
214
+ // prettier-ignore
215
+ function TTuple(schema, references, value) {
216
+ const isConvertable = IsArray(value) && !IsUndefined(schema.items);
217
+ if (!isConvertable)
218
+ return value;
219
+ return value.map((value, index) => {
220
+ return (index < schema.items.length)
221
+ ? Visit(schema.items[index], references, value)
222
+ : value;
223
+ });
224
+ }
225
+ function TUndefined(schema, references, value) {
226
+ return TryConvertUndefined(value);
227
+ }
228
+ function TUnion(schema, references, value) {
229
+ for (const subschema of schema.anyOf) {
230
+ const converted = Visit(subschema, references, value);
231
+ if (Check(subschema, references, converted)) {
232
+ return converted;
233
+ }
234
+ }
235
+ return value;
236
+ }
237
+ function Visit(schema, references, value) {
238
+ const references_ = IsString(schema.$id) ? [...references, schema] : references;
239
+ const schema_ = schema;
240
+ switch (schema[Kind]) {
241
+ case 'Array':
242
+ return TArray(schema_, references_, value);
243
+ case 'BigInt':
244
+ return TBigInt(schema_, references_, value);
245
+ case 'Boolean':
246
+ return TBoolean(schema_, references_, value);
247
+ case 'Date':
248
+ return TDate(schema_, references_, value);
249
+ case 'Integer':
250
+ return TInteger(schema_, references_, value);
251
+ case 'Intersect':
252
+ return TIntersect(schema_, references_, value);
253
+ case 'Literal':
254
+ return TLiteral(schema_, references_, value);
255
+ case 'Null':
256
+ return TNull(schema_, references_, value);
257
+ case 'Number':
258
+ return TNumber(schema_, references_, value);
259
+ case 'Object':
260
+ return TObject(schema_, references_, value);
261
+ case 'Record':
262
+ return TRecord(schema_, references_, value);
263
+ case 'Ref':
264
+ return TRef(schema_, references_, value);
265
+ case 'String':
266
+ return TString(schema_, references_, value);
267
+ case 'Symbol':
268
+ return TSymbol(schema_, references_, value);
269
+ case 'This':
270
+ return TThis(schema_, references_, value);
271
+ case 'Tuple':
272
+ return TTuple(schema_, references_, value);
273
+ case 'Undefined':
274
+ return TUndefined(schema_, references_, value);
275
+ case 'Union':
276
+ return TUnion(schema_, references_, value);
277
+ default:
278
+ return Default(value);
279
+ }
280
+ }
281
+ /** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
282
+ // prettier-ignore
283
+ export function Convert(...args) {
284
+ return args.length === 3
285
+ ? Visit(args[0], args[1], args[2])
286
+ : Visit(args[0], [], args[1]);
287
+ }
@@ -0,0 +1 @@
1
+ export * from './convert.mjs';
@@ -0,0 +1,28 @@
1
+ /*--------------------------------------------------------------------------
2
+
3
+ @sinclair/typebox/value
4
+
5
+ The MIT License (MIT)
6
+
7
+ Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+
27
+ ---------------------------------------------------------------------------*/
28
+ export * from './convert.mjs';
@@ -0,0 +1,31 @@
1
+ import type { TSchema } from '../../type/schema/index.mjs';
2
+ import type { Static } from '../../type/static/index.mjs';
3
+ export declare class ValueCreateUnknownTypeError extends Error {
4
+ readonly schema: TSchema;
5
+ constructor(schema: TSchema);
6
+ }
7
+ export declare class ValueCreateNeverTypeError extends Error {
8
+ readonly schema: TSchema;
9
+ constructor(schema: TSchema);
10
+ }
11
+ export declare class ValueCreateNotTypeError extends Error {
12
+ readonly schema: TSchema;
13
+ constructor(schema: TSchema);
14
+ }
15
+ export declare class ValueCreateIntersectTypeError extends Error {
16
+ readonly schema: TSchema;
17
+ constructor(schema: TSchema);
18
+ }
19
+ export declare class ValueCreateTempateLiteralTypeError extends Error {
20
+ readonly schema: TSchema;
21
+ constructor(schema: TSchema);
22
+ }
23
+ export declare class ValueCreateRecursiveInstantiationError extends Error {
24
+ readonly schema: TSchema;
25
+ readonly recursiveMaxDepth: number;
26
+ constructor(schema: TSchema, recursiveMaxDepth: number);
27
+ }
28
+ /** Creates a value from the given schema and references */
29
+ export declare function Create<T extends TSchema>(schema: T, references: TSchema[]): Static<T>;
30
+ /** Creates a value from the given schema */
31
+ export declare function Create<T extends TSchema>(schema: T): Static<T>;