@sinclair/typebox 0.31.28 → 0.32.0-dev-1

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 (417) hide show
  1. package/compiler/compiler.d.ts +25 -18
  2. package/compiler/compiler.js +118 -107
  3. package/errors/errors.d.ts +7 -7
  4. package/errors/errors.js +48 -44
  5. package/index.d.ts +71 -0
  6. package/index.js +205 -0
  7. package/package.json +8 -19
  8. package/readme.md +183 -155
  9. package/system/errors.d.ts +14 -0
  10. package/system/errors.js +192 -0
  11. package/system/index.d.ts +3 -1
  12. package/system/index.js +10 -16
  13. package/system/policy.d.ts +21 -0
  14. package/system/policy.js +74 -0
  15. package/system/system.d.ts +3 -38
  16. package/system/system.js +15 -218
  17. package/type/any/any.d.ts +8 -0
  18. package/type/any/any.js +36 -0
  19. package/type/any/index.d.ts +1 -0
  20. package/type/any/index.js +44 -0
  21. package/type/array/array.d.ts +25 -0
  22. package/type/array/array.js +42 -0
  23. package/type/array/index.d.ts +1 -0
  24. package/type/array/index.js +44 -0
  25. package/type/async-iterator/async-iterator.d.ts +11 -0
  26. package/type/async-iterator/async-iterator.js +42 -0
  27. package/type/async-iterator/index.d.ts +1 -0
  28. package/type/async-iterator/index.js +44 -0
  29. package/type/awaited/awaited.d.ts +12 -0
  30. package/type/awaited/awaited.js +66 -0
  31. package/type/awaited/index.d.ts +1 -0
  32. package/type/awaited/index.js +44 -0
  33. package/type/bigint/bigint.d.ts +16 -0
  34. package/type/bigint/bigint.js +40 -0
  35. package/type/bigint/index.d.ts +1 -0
  36. package/type/bigint/index.js +44 -0
  37. package/type/boolean/boolean.d.ts +9 -0
  38. package/type/boolean/boolean.js +40 -0
  39. package/type/boolean/index.d.ts +1 -0
  40. package/type/boolean/index.js +44 -0
  41. package/type/clone/index.d.ts +2 -0
  42. package/type/clone/index.js +32 -0
  43. package/type/clone/type.d.ts +5 -0
  44. package/type/clone/type.js +41 -0
  45. package/type/clone/value.d.ts +2 -0
  46. package/type/clone/value.js +58 -0
  47. package/type/composite/composite.d.ts +15 -0
  48. package/type/composite/composite.js +47 -0
  49. package/type/composite/index.d.ts +1 -0
  50. package/type/composite/index.js +44 -0
  51. package/type/const/const.d.ts +30 -0
  52. package/type/const/const.js +84 -0
  53. package/type/const/index.d.ts +1 -0
  54. package/type/const/index.js +44 -0
  55. package/type/constructor/constructor.d.ts +17 -0
  56. package/type/constructor/constructor.js +43 -0
  57. package/type/constructor/index.d.ts +1 -0
  58. package/type/constructor/index.js +44 -0
  59. package/type/constructor-parameters/constructor-parameters.d.ts +7 -0
  60. package/type/constructor-parameters/constructor-parameters.js +37 -0
  61. package/type/constructor-parameters/index.d.ts +1 -0
  62. package/type/constructor-parameters/index.js +44 -0
  63. package/type/date/date.d.ts +21 -0
  64. package/type/date/date.js +40 -0
  65. package/type/date/index.d.ts +1 -0
  66. package/type/date/index.js +44 -0
  67. package/type/deref/deref.d.ts +24 -0
  68. package/type/deref/deref.js +136 -0
  69. package/type/deref/index.d.ts +1 -0
  70. package/type/deref/index.js +44 -0
  71. package/type/discard/discard.d.ts +1 -0
  72. package/type/discard/discard.js +38 -0
  73. package/type/discard/index.d.ts +1 -0
  74. package/type/discard/index.js +44 -0
  75. package/type/enum/enum.d.ts +14 -0
  76. package/type/enum/enum.js +46 -0
  77. package/type/enum/index.d.ts +1 -0
  78. package/type/enum/index.js +44 -0
  79. package/type/exclude/exclude.d.ts +21 -0
  80. package/type/exclude/exclude.js +54 -0
  81. package/type/exclude/index.d.ts +1 -0
  82. package/type/exclude/index.js +44 -0
  83. package/type/extends/extends-check.d.ts +9 -0
  84. package/type/extends/extends-check.js +654 -0
  85. package/type/extends/extends-undefined.d.ts +3 -0
  86. package/type/extends/extends-undefined.js +51 -0
  87. package/type/extends/extends.d.ts +9 -0
  88. package/type/extends/extends.js +47 -0
  89. package/type/extends/index.d.ts +3 -0
  90. package/type/extends/index.js +46 -0
  91. package/type/extract/extract.d.ts +20 -0
  92. package/type/extract/extract.js +54 -0
  93. package/type/extract/index.d.ts +1 -0
  94. package/type/extract/index.js +44 -0
  95. package/type/function/function.d.ts +17 -0
  96. package/type/function/function.js +43 -0
  97. package/type/function/index.d.ts +1 -0
  98. package/type/function/index.js +44 -0
  99. package/type/guard/index.d.ts +2 -0
  100. package/type/guard/index.js +32 -0
  101. package/type/guard/type.d.ts +130 -0
  102. package/type/guard/type.js +515 -0
  103. package/type/guard/value.d.ts +28 -0
  104. package/type/guard/value.js +100 -0
  105. package/type/helpers/helpers.d.ts +42 -0
  106. package/type/helpers/helpers.js +35 -0
  107. package/type/helpers/index.d.ts +1 -0
  108. package/type/helpers/index.js +44 -0
  109. package/type/index.d.ts +70 -0
  110. package/type/index.js +113 -0
  111. package/type/indexed/index.d.ts +3 -0
  112. package/type/indexed/index.js +46 -0
  113. package/type/indexed/indexed-key.d.ts +17 -0
  114. package/type/indexed/indexed-key.js +65 -0
  115. package/type/indexed/indexed-type.d.ts +33 -0
  116. package/type/indexed/indexed-type.js +106 -0
  117. package/type/indexed/indexed.d.ts +8 -0
  118. package/type/indexed/indexed.js +41 -0
  119. package/type/instance-type/index.d.ts +1 -0
  120. package/type/instance-type/index.js +44 -0
  121. package/type/instance-type/instance-type.d.ts +5 -0
  122. package/type/instance-type/instance-type.js +36 -0
  123. package/type/integer/index.d.ts +1 -0
  124. package/type/integer/index.js +44 -0
  125. package/type/integer/integer.d.ts +16 -0
  126. package/type/integer/integer.js +40 -0
  127. package/type/intersect/index.d.ts +1 -0
  128. package/type/intersect/index.js +44 -0
  129. package/type/intersect/intersect.d.ts +22 -0
  130. package/type/intersect/intersect.js +59 -0
  131. package/type/intrinsic/index.d.ts +1 -0
  132. package/type/intrinsic/index.js +44 -0
  133. package/type/intrinsic/intrinsic.d.ts +27 -0
  134. package/type/intrinsic/intrinsic.js +106 -0
  135. package/type/iterator/index.d.ts +1 -0
  136. package/type/iterator/index.js +44 -0
  137. package/type/iterator/iterator.d.ts +11 -0
  138. package/type/iterator/iterator.js +42 -0
  139. package/type/keyof/index.d.ts +3 -0
  140. package/type/keyof/index.js +46 -0
  141. package/type/keyof/keyof-string.d.ts +30 -0
  142. package/type/keyof/keyof-string.js +103 -0
  143. package/type/keyof/keyof-type.d.ts +11 -0
  144. package/type/keyof/keyof-type.js +48 -0
  145. package/type/keyof/keyof.d.ts +5 -0
  146. package/type/keyof/keyof.js +38 -0
  147. package/type/literal/index.d.ts +1 -0
  148. package/type/literal/index.js +44 -0
  149. package/type/literal/literal.d.ts +10 -0
  150. package/type/literal/literal.js +41 -0
  151. package/type/mapped/index.d.ts +1 -0
  152. package/type/mapped/index.js +44 -0
  153. package/type/mapped/mapped.d.ts +26 -0
  154. package/type/mapped/mapped.js +47 -0
  155. package/type/modifiers/index.d.ts +1 -0
  156. package/type/modifiers/index.js +44 -0
  157. package/type/modifiers/modifiers.d.ts +18 -0
  158. package/type/modifiers/modifiers.js +78 -0
  159. package/type/never/index.d.ts +1 -0
  160. package/type/never/index.js +44 -0
  161. package/type/never/never.d.ts +9 -0
  162. package/type/never/never.js +40 -0
  163. package/type/not/index.d.ts +1 -0
  164. package/type/not/index.js +44 -0
  165. package/type/not/not.d.ts +10 -0
  166. package/type/not/not.js +41 -0
  167. package/type/null/index.d.ts +1 -0
  168. package/type/null/index.js +44 -0
  169. package/type/null/null.d.ts +9 -0
  170. package/type/null/null.js +40 -0
  171. package/type/number/index.d.ts +1 -0
  172. package/type/number/index.js +44 -0
  173. package/type/number/number.d.ts +16 -0
  174. package/type/number/number.js +40 -0
  175. package/type/object/index.d.ts +1 -0
  176. package/type/object/index.js +44 -0
  177. package/type/object/object.d.ts +44 -0
  178. package/type/object/object.js +47 -0
  179. package/type/omit/index.d.ts +1 -0
  180. package/type/omit/index.js +44 -0
  181. package/type/omit/omit.d.ts +21 -0
  182. package/type/omit/omit.js +75 -0
  183. package/type/operators/index.d.ts +1 -0
  184. package/type/operators/index.js +44 -0
  185. package/type/operators/operators.d.ts +24 -0
  186. package/type/operators/operators.js +119 -0
  187. package/type/optional/index.d.ts +1 -0
  188. package/type/optional/index.js +44 -0
  189. package/type/optional/optional.d.ts +7 -0
  190. package/type/optional/optional.js +37 -0
  191. package/type/parameters/index.d.ts +1 -0
  192. package/type/parameters/index.js +44 -0
  193. package/type/parameters/parameters.d.ts +7 -0
  194. package/type/parameters/parameters.js +37 -0
  195. package/type/partial/index.d.ts +1 -0
  196. package/type/partial/index.js +44 -0
  197. package/type/partial/partial.d.ts +23 -0
  198. package/type/partial/partial.js +73 -0
  199. package/type/patterns/index.d.ts +1 -0
  200. package/type/patterns/index.js +44 -0
  201. package/type/patterns/patterns.d.ts +6 -0
  202. package/type/patterns/patterns.js +36 -0
  203. package/type/pick/index.d.ts +1 -0
  204. package/type/pick/index.js +44 -0
  205. package/type/pick/pick.d.ts +21 -0
  206. package/type/pick/pick.js +66 -0
  207. package/type/promise/index.d.ts +1 -0
  208. package/type/promise/index.js +44 -0
  209. package/type/promise/promise.d.ts +11 -0
  210. package/type/promise/promise.js +42 -0
  211. package/type/readonly/index.d.ts +1 -0
  212. package/type/readonly/index.js +44 -0
  213. package/type/readonly/readonly.d.ts +7 -0
  214. package/type/readonly/readonly.js +37 -0
  215. package/type/readonly-optional/index.d.ts +1 -0
  216. package/type/readonly-optional/index.js +44 -0
  217. package/type/readonly-optional/readonly-optional.d.ts +6 -0
  218. package/type/readonly-optional/readonly-optional.js +37 -0
  219. package/type/record/index.d.ts +1 -0
  220. package/type/record/index.js +44 -0
  221. package/type/record/record.d.ts +55 -0
  222. package/type/record/record.js +97 -0
  223. package/type/recursive/index.d.ts +1 -0
  224. package/type/recursive/index.js +44 -0
  225. package/type/recursive/recursive.d.ts +15 -0
  226. package/type/recursive/recursive.js +48 -0
  227. package/type/ref/index.d.ts +1 -0
  228. package/type/ref/index.js +44 -0
  229. package/type/ref/ref.d.ts +12 -0
  230. package/type/ref/ref.js +45 -0
  231. package/type/regexp/index.d.ts +1 -0
  232. package/type/regexp/index.js +44 -0
  233. package/type/regexp/regexp.d.ts +7 -0
  234. package/type/regexp/regexp.js +38 -0
  235. package/type/registry/format.d.ts +13 -0
  236. package/type/registry/format.js +62 -0
  237. package/type/registry/index.d.ts +2 -0
  238. package/type/registry/index.js +32 -0
  239. package/type/registry/type.d.ts +13 -0
  240. package/type/registry/type.js +62 -0
  241. package/type/required/index.d.ts +1 -0
  242. package/type/required/index.js +44 -0
  243. package/type/required/required.d.ts +23 -0
  244. package/type/required/required.js +72 -0
  245. package/type/rest/index.d.ts +1 -0
  246. package/type/rest/index.js +44 -0
  247. package/type/rest/rest.d.ts +10 -0
  248. package/type/rest/rest.js +41 -0
  249. package/type/return-type/index.d.ts +1 -0
  250. package/type/return-type/index.js +44 -0
  251. package/type/return-type/return-type.d.ts +5 -0
  252. package/type/return-type/return-type.js +36 -0
  253. package/type/schema/anyschema.d.ts +32 -0
  254. package/type/schema/anyschema.js +29 -0
  255. package/type/schema/index.d.ts +2 -0
  256. package/type/schema/index.js +45 -0
  257. package/type/schema/schema.d.ts +29 -0
  258. package/type/schema/schema.js +30 -0
  259. package/type/static/index.d.ts +1 -0
  260. package/type/static/index.js +44 -0
  261. package/type/static/static.d.ts +34 -0
  262. package/type/static/static.js +29 -0
  263. package/type/strict/index.d.ts +1 -0
  264. package/type/strict/index.js +44 -0
  265. package/type/strict/strict.d.ts +3 -0
  266. package/type/strict/strict.js +35 -0
  267. package/type/string/index.d.ts +1 -0
  268. package/type/string/index.js +44 -0
  269. package/type/string/string.d.ts +25 -0
  270. package/type/string/string.js +36 -0
  271. package/type/symbol/index.d.ts +1 -0
  272. package/type/symbol/index.js +44 -0
  273. package/type/symbol/symbol.d.ts +10 -0
  274. package/type/symbol/symbol.js +36 -0
  275. package/type/symbols/index.d.ts +1 -0
  276. package/type/symbols/index.js +44 -0
  277. package/type/symbols/symbols.d.ts +10 -0
  278. package/type/symbols/symbols.js +40 -0
  279. package/type/template-literal/finite.d.ts +16 -0
  280. package/type/template-literal/finite.js +71 -0
  281. package/type/template-literal/generate.d.ts +15 -0
  282. package/type/template-literal/generate.js +74 -0
  283. package/type/template-literal/index.d.ts +7 -0
  284. package/type/template-literal/index.js +50 -0
  285. package/type/template-literal/parser.d.ts +19 -0
  286. package/type/template-literal/parser.js +175 -0
  287. package/type/template-literal/pattern.d.ts +4 -0
  288. package/type/template-literal/pattern.js +61 -0
  289. package/type/template-literal/syntax.d.ts +20 -0
  290. package/type/template-literal/syntax.js +87 -0
  291. package/type/template-literal/template-literal.d.ts +30 -0
  292. package/type/template-literal/template-literal.js +43 -0
  293. package/type/template-literal/union.d.ts +7 -0
  294. package/type/template-literal/union.js +48 -0
  295. package/type/transform/index.d.ts +1 -0
  296. package/type/transform/index.js +44 -0
  297. package/type/transform/transform.d.ts +29 -0
  298. package/type/transform/transform.js +72 -0
  299. package/type/tuple/index.d.ts +1 -0
  300. package/type/tuple/index.js +44 -0
  301. package/type/tuple/tuple.d.ts +15 -0
  302. package/type/tuple/tuple.js +42 -0
  303. package/type/type/index.d.ts +6 -0
  304. package/type/type/index.js +44 -0
  305. package/type/type/javascript.d.ts +58 -0
  306. package/type/type/javascript.js +120 -0
  307. package/type/type/json.d.ts +139 -0
  308. package/type/type/json.js +255 -0
  309. package/type/type/type.d.ts +58 -0
  310. package/type/type/type.js +153 -0
  311. package/type/uint8array/index.d.ts +1 -0
  312. package/type/uint8array/index.js +44 -0
  313. package/type/uint8array/uint8array.d.ts +13 -0
  314. package/type/uint8array/uint8array.js +36 -0
  315. package/type/undefined/index.d.ts +1 -0
  316. package/type/undefined/index.js +44 -0
  317. package/type/undefined/undefined.d.ts +9 -0
  318. package/type/undefined/undefined.js +36 -0
  319. package/type/union/index.d.ts +1 -0
  320. package/type/union/index.js +44 -0
  321. package/type/union/union.d.ts +16 -0
  322. package/type/union/union.js +50 -0
  323. package/type/unknown/index.d.ts +1 -0
  324. package/type/unknown/index.js +44 -0
  325. package/type/unknown/unknown.d.ts +8 -0
  326. package/type/unknown/unknown.js +39 -0
  327. package/type/unsafe/index.d.ts +1 -0
  328. package/type/unsafe/index.js +44 -0
  329. package/type/unsafe/unsafe.d.ts +11 -0
  330. package/type/unsafe/unsafe.js +39 -0
  331. package/type/void/index.d.ts +1 -0
  332. package/type/void/index.js +44 -0
  333. package/type/void/void.d.ts +9 -0
  334. package/type/void/void.js +40 -0
  335. package/value/cast/cast.d.ts +23 -0
  336. package/value/{cast.js → cast/cast.js} +62 -83
  337. package/value/cast/index.d.ts +1 -0
  338. package/value/cast/index.js +44 -0
  339. package/value/check/check.d.ts +10 -0
  340. package/value/{check.js → check/check.js} +50 -45
  341. package/value/check/index.d.ts +1 -0
  342. package/value/check/index.js +44 -0
  343. package/value/clean/clean.d.ts +5 -0
  344. package/value/clean/clean.js +167 -0
  345. package/value/clean/index.d.ts +1 -0
  346. package/value/clean/index.js +44 -0
  347. package/value/{clone.js → clone/clone.js} +6 -6
  348. package/value/clone/index.d.ts +1 -0
  349. package/value/clone/index.js +44 -0
  350. package/value/convert/convert.d.ts +9 -0
  351. package/value/{convert.js → convert/convert.js} +93 -116
  352. package/value/convert/index.d.ts +1 -0
  353. package/value/convert/index.js +44 -0
  354. package/value/create/create.d.ts +31 -0
  355. package/value/{create.js → create/create.js} +69 -62
  356. package/value/create/index.d.ts +1 -0
  357. package/value/create/index.js +44 -0
  358. package/value/default/default.d.ts +5 -0
  359. package/value/default/default.js +175 -0
  360. package/value/default/index.d.ts +1 -0
  361. package/value/default/index.js +44 -0
  362. package/value/delta/delta.d.ts +41 -0
  363. package/value/{delta.js → delta/delta.js} +57 -53
  364. package/value/delta/index.d.ts +1 -0
  365. package/value/delta/index.js +44 -0
  366. package/value/{deref.d.ts → deref/deref.d.ts} +4 -2
  367. package/value/{deref.js → deref/deref.js} +1 -2
  368. package/value/deref/index.d.ts +1 -0
  369. package/value/deref/index.js +44 -0
  370. package/value/{equal.js → equal/equal.js} +14 -14
  371. package/value/equal/index.d.ts +1 -0
  372. package/value/equal/index.js +44 -0
  373. package/value/guard/index.d.ts +1 -0
  374. package/value/guard/index.js +44 -0
  375. package/value/{hash.d.ts → hash/hash.d.ts} +0 -13
  376. package/value/{hash.js → hash/hash.js} +26 -26
  377. package/value/hash/index.d.ts +1 -0
  378. package/value/hash/index.js +44 -0
  379. package/value/index.d.ts +17 -4
  380. package/value/index.js +91 -10
  381. package/value/mutate/index.d.ts +1 -0
  382. package/value/mutate/index.js +44 -0
  383. package/value/{mutate.d.ts → mutate/mutate.d.ts} +1 -1
  384. package/value/{mutate.js → mutate/mutate.js} +25 -25
  385. package/value/pointer/index.d.ts +1 -0
  386. package/value/pointer/index.js +31 -0
  387. package/value/pointer/pointer.d.ts +21 -0
  388. package/value/pointer/pointer.js +151 -0
  389. package/value/transform/decode.d.ts +19 -0
  390. package/value/transform/decode.js +211 -0
  391. package/value/transform/encode.d.ts +20 -0
  392. package/value/transform/encode.js +219 -0
  393. package/value/transform/has.d.ts +3 -0
  394. package/value/transform/has.js +146 -0
  395. package/value/transform/index.d.ts +3 -0
  396. package/value/transform/index.js +46 -0
  397. package/value/value/index.d.ts +1 -0
  398. package/value/value/index.js +31 -0
  399. package/value/value/value.d.ts +53 -0
  400. package/value/value/value.js +125 -0
  401. package/typebox.d.ts +0 -962
  402. package/typebox.js +0 -2364
  403. package/value/cast.d.ts +0 -24
  404. package/value/check.d.ts +0 -9
  405. package/value/convert.d.ts +0 -10
  406. package/value/create.d.ts +0 -30
  407. package/value/delta.d.ts +0 -41
  408. package/value/pointer.d.ts +0 -24
  409. package/value/pointer.js +0 -148
  410. package/value/transform.d.ts +0 -37
  411. package/value/transform.js +0 -473
  412. package/value/value.d.ts +0 -47
  413. package/value/value.js +0 -117
  414. /package/value/{clone.d.ts → clone/clone.d.ts} +0 -0
  415. /package/value/{equal.d.ts → equal/equal.d.ts} +0 -0
  416. /package/value/{guard.d.ts → guard/guard.d.ts} +0 -0
  417. /package/value/{guard.js → guard/guard.js} +0 -0
@@ -0,0 +1,5 @@
1
+ import type { TSchema } from '../../type/schema/index';
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. */
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. */
5
+ export declare function Clean<T extends TSchema>(schema: T): unknown;
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /*--------------------------------------------------------------------------
3
+
4
+ @sinclair/typebox/value
5
+
6
+ The MIT License (MIT)
7
+
8
+ Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in
18
+ all copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26
+ THE SOFTWARE.
27
+
28
+ ---------------------------------------------------------------------------*/
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.Clean = void 0;
31
+ const index_1 = require("../guard/index");
32
+ const type_1 = require("../../type/guard/type");
33
+ const keyof_string_1 = require("../../type/keyof/keyof-string");
34
+ const index_2 = require("../check/index");
35
+ const index_3 = require("../clone/index");
36
+ const index_4 = require("../deref/index");
37
+ const index_5 = require("../../type/symbols/index");
38
+ // ------------------------------------------------------------------
39
+ // IsSchema
40
+ // ------------------------------------------------------------------
41
+ function IsSchema(schema) {
42
+ return (0, type_1.TSchema)(schema);
43
+ }
44
+ // ------------------------------------------------------------------
45
+ // IsCheckable
46
+ // ------------------------------------------------------------------
47
+ function IsCheckable(schema) {
48
+ return (0, type_1.TSchema)(schema) && schema[index_5.Kind] !== 'Unsafe';
49
+ }
50
+ // ------------------------------------------------------------------
51
+ // Types
52
+ // ------------------------------------------------------------------
53
+ function TArray(schema, references, value) {
54
+ if (!(0, index_1.IsArray)(value))
55
+ return value;
56
+ return value.map((value) => Visit(schema.items, references, value));
57
+ }
58
+ function TIntersect(schema, references, value) {
59
+ const unevaluatedProperties = schema.unevaluatedProperties;
60
+ const intersections = schema.allOf.map((schema) => Visit(schema, references, (0, index_3.Clone)(value)));
61
+ const composite = intersections.reduce((acc, value) => ((0, index_1.IsObject)(value) ? { ...acc, ...value } : value), {});
62
+ if (!(0, index_1.IsObject)(value) || !(0, index_1.IsObject)(composite) || !IsSchema(unevaluatedProperties))
63
+ return composite;
64
+ const knownkeys = (0, keyof_string_1.KeyOfStringResolve)(schema);
65
+ for (const key of Object.getOwnPropertyNames(value)) {
66
+ if (knownkeys.includes(key))
67
+ continue;
68
+ if ((0, index_2.Check)(unevaluatedProperties, references, value[key])) {
69
+ composite[key] = Visit(unevaluatedProperties, references, value[key]);
70
+ }
71
+ }
72
+ return composite;
73
+ }
74
+ function TObject(schema, references, value) {
75
+ if (!(0, index_1.IsObject)(value) || (0, index_1.IsArray)(value))
76
+ return value; // Check IsArray for AllowArrayObject configuration
77
+ const additionalProperties = schema.additionalProperties;
78
+ for (const key of Object.getOwnPropertyNames(value)) {
79
+ if (key in schema.properties) {
80
+ value[key] = Visit(schema.properties[key], references, value[key]);
81
+ continue;
82
+ }
83
+ if (IsSchema(additionalProperties) && (0, index_2.Check)(additionalProperties, references, value[key])) {
84
+ value[key] = Visit(additionalProperties, references, value[key]);
85
+ continue;
86
+ }
87
+ delete value[key];
88
+ }
89
+ return value;
90
+ }
91
+ function TRecord(schema, references, value) {
92
+ if (!(0, index_1.IsObject)(value))
93
+ return value;
94
+ const additionalProperties = schema.additionalProperties;
95
+ const propertyKeys = Object.keys(value);
96
+ const [propertyKey, propertySchema] = Object.entries(schema.patternProperties)[0];
97
+ const propertyKeyTest = new RegExp(propertyKey);
98
+ for (const key of propertyKeys) {
99
+ if (propertyKeyTest.test(key)) {
100
+ value[key] = Visit(propertySchema, references, value[key]);
101
+ continue;
102
+ }
103
+ if (IsSchema(additionalProperties) && (0, index_2.Check)(additionalProperties, references, value[key])) {
104
+ value[key] = Visit(additionalProperties, references, value[key]);
105
+ continue;
106
+ }
107
+ delete value[key];
108
+ }
109
+ return value;
110
+ }
111
+ function TRef(schema, references, value) {
112
+ return Visit((0, index_4.Deref)(schema, references), references, value);
113
+ }
114
+ function TThis(schema, references, value) {
115
+ return Visit((0, index_4.Deref)(schema, references), references, value);
116
+ }
117
+ function TTuple(schema, references, value) {
118
+ if (!(0, index_1.IsArray)(value))
119
+ return value;
120
+ if ((0, index_1.IsUndefined)(schema.items))
121
+ return [];
122
+ const length = Math.min(value.length, schema.items.length);
123
+ for (let i = 0; i < length; i++) {
124
+ value[i] = Visit(schema.items[i], references, value[i]);
125
+ }
126
+ // prettier-ignore
127
+ return value.length > length
128
+ ? value.slice(0, length)
129
+ : value;
130
+ }
131
+ function TUnion(schema, references, value) {
132
+ for (const inner of schema.anyOf) {
133
+ if (IsCheckable(inner) && (0, index_2.Check)(inner, value)) {
134
+ return Visit(inner, references, value);
135
+ }
136
+ }
137
+ return value;
138
+ }
139
+ function Visit(schema, references, value) {
140
+ const references_ = (0, index_1.IsString)(schema.$id) ? [...references, schema] : references;
141
+ const schema_ = schema;
142
+ switch (schema_[index_5.Kind]) {
143
+ case 'Array':
144
+ return TArray(schema_, references_, value);
145
+ case 'Intersect':
146
+ return TIntersect(schema_, references_, value);
147
+ case 'Object':
148
+ return TObject(schema_, references_, value);
149
+ case 'Record':
150
+ return TRecord(schema_, references_, value);
151
+ case 'Ref':
152
+ return TRef(schema_, references_, value);
153
+ case 'This':
154
+ return TThis(schema_, references_, value);
155
+ case 'Tuple':
156
+ return TTuple(schema_, references_, value);
157
+ case 'Union':
158
+ return TUnion(schema_, references_, value);
159
+ default:
160
+ return value;
161
+ }
162
+ }
163
+ /** `[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. */
164
+ function Clean(...args) {
165
+ return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
166
+ }
167
+ exports.Clean = Clean;
@@ -0,0 +1 @@
1
+ export * from './clean';
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /*--------------------------------------------------------------------------
3
+
4
+ @sinclair/typebox/value
5
+
6
+ The MIT License (MIT)
7
+
8
+ Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in
18
+ all copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26
+ THE SOFTWARE.
27
+
28
+ ---------------------------------------------------------------------------*/
29
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ var desc = Object.getOwnPropertyDescriptor(m, k);
32
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
33
+ desc = { enumerable: true, get: function() { return m[k]; } };
34
+ }
35
+ Object.defineProperty(o, k2, desc);
36
+ }) : (function(o, m, k, k2) {
37
+ if (k2 === undefined) k2 = k;
38
+ o[k2] = m[k];
39
+ }));
40
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
41
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ __exportStar(require("./clean"), exports);
@@ -28,7 +28,7 @@ THE SOFTWARE.
28
28
  ---------------------------------------------------------------------------*/
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
30
  exports.Clone = void 0;
31
- const guard_1 = require("./guard");
31
+ const index_1 = require("../guard/index");
32
32
  // --------------------------------------------------------------------------
33
33
  // Clonable
34
34
  // --------------------------------------------------------------------------
@@ -53,15 +53,15 @@ function ValueType(value) {
53
53
  // --------------------------------------------------------------------------
54
54
  /** Returns a clone of the given value */
55
55
  function Clone(value) {
56
- if ((0, guard_1.IsArray)(value))
56
+ if ((0, index_1.IsArray)(value))
57
57
  return ArrayType(value);
58
- if ((0, guard_1.IsDate)(value))
58
+ if ((0, index_1.IsDate)(value))
59
59
  return DateType(value);
60
- if ((0, guard_1.IsPlainObject)(value))
60
+ if ((0, index_1.IsPlainObject)(value))
61
61
  return ObjectType(value);
62
- if ((0, guard_1.IsTypedArray)(value))
62
+ if ((0, index_1.IsTypedArray)(value))
63
63
  return TypedArrayType(value);
64
- if ((0, guard_1.IsValueType)(value))
64
+ if ((0, index_1.IsValueType)(value))
65
65
  return ValueType(value);
66
66
  throw new Error('ValueClone: Unable to clone value');
67
67
  }
@@ -0,0 +1 @@
1
+ export * from './clone';
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /*--------------------------------------------------------------------------
3
+
4
+ @sinclair/typebox/value
5
+
6
+ The MIT License (MIT)
7
+
8
+ Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com>
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in
18
+ all copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26
+ THE SOFTWARE.
27
+
28
+ ---------------------------------------------------------------------------*/
29
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ var desc = Object.getOwnPropertyDescriptor(m, k);
32
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
33
+ desc = { enumerable: true, get: function() { return m[k]; } };
34
+ }
35
+ Object.defineProperty(o, k2, desc);
36
+ }) : (function(o, m, k, k2) {
37
+ if (k2 === undefined) k2 = k;
38
+ o[k2] = m[k];
39
+ }));
40
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
41
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ __exportStar(require("./clone"), exports);
@@ -0,0 +1,9 @@
1
+ import type { TSchema } from '../../type/schema/index';
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;
@@ -27,55 +27,57 @@ THE SOFTWARE.
27
27
 
28
28
  ---------------------------------------------------------------------------*/
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.Convert = exports.Default = exports.ValueConvertUnknownTypeError = void 0;
31
- const guard_1 = require("./guard");
32
- const clone_1 = require("./clone");
33
- const check_1 = require("./check");
34
- const deref_1 = require("./deref");
35
- const Types = require("../typebox");
36
- // --------------------------------------------------------------------------
30
+ exports.Convert = exports.ValueConvertUnknownTypeError = void 0;
31
+ const index_1 = require("../guard/index");
32
+ const index_2 = require("../clone/index");
33
+ const index_3 = require("../check/index");
34
+ const index_4 = require("../deref/index");
35
+ const type_1 = require("../../type/guard/type");
36
+ const index_5 = require("../../type/symbols/index");
37
+ const index_6 = require("../../type/composite/index");
38
+ // ------------------------------------------------------------------
37
39
  // Errors
38
- // --------------------------------------------------------------------------
39
- class ValueConvertUnknownTypeError extends Types.TypeBoxError {
40
+ // ------------------------------------------------------------------
41
+ class ValueConvertUnknownTypeError extends Error {
40
42
  constructor(schema) {
41
43
  super('Unknown type');
42
44
  this.schema = schema;
43
45
  }
44
46
  }
45
47
  exports.ValueConvertUnknownTypeError = ValueConvertUnknownTypeError;
46
- // --------------------------------------------------------------------------
48
+ // ------------------------------------------------------------------
47
49
  // Conversions
48
- // --------------------------------------------------------------------------
50
+ // ------------------------------------------------------------------
49
51
  function IsStringNumeric(value) {
50
- return (0, guard_1.IsString)(value) && !isNaN(value) && !isNaN(parseFloat(value));
52
+ return (0, index_1.IsString)(value) && !isNaN(value) && !isNaN(parseFloat(value));
51
53
  }
52
54
  function IsValueToString(value) {
53
- return (0, guard_1.IsBigInt)(value) || (0, guard_1.IsBoolean)(value) || (0, guard_1.IsNumber)(value);
55
+ return (0, index_1.IsBigInt)(value) || (0, index_1.IsBoolean)(value) || (0, index_1.IsNumber)(value);
54
56
  }
55
57
  function IsValueTrue(value) {
56
- return value === true || ((0, guard_1.IsNumber)(value) && value === 1) || ((0, guard_1.IsBigInt)(value) && value === BigInt('1')) || ((0, guard_1.IsString)(value) && (value.toLowerCase() === 'true' || value === '1'));
58
+ return value === true || ((0, index_1.IsNumber)(value) && value === 1) || ((0, index_1.IsBigInt)(value) && value === BigInt('1')) || ((0, index_1.IsString)(value) && (value.toLowerCase() === 'true' || value === '1'));
57
59
  }
58
60
  function IsValueFalse(value) {
59
- return value === false || ((0, guard_1.IsNumber)(value) && (value === 0 || Object.is(value, -0))) || ((0, guard_1.IsBigInt)(value) && value === BigInt('0')) || ((0, guard_1.IsString)(value) && (value.toLowerCase() === 'false' || value === '0' || value === '-0'));
61
+ return value === false || ((0, index_1.IsNumber)(value) && (value === 0 || Object.is(value, -0))) || ((0, index_1.IsBigInt)(value) && value === BigInt('0')) || ((0, index_1.IsString)(value) && (value.toLowerCase() === 'false' || value === '0' || value === '-0'));
60
62
  }
61
63
  function IsTimeStringWithTimeZone(value) {
62
- return (0, guard_1.IsString)(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value);
64
+ return (0, index_1.IsString)(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(value);
63
65
  }
64
66
  function IsTimeStringWithoutTimeZone(value) {
65
- return (0, guard_1.IsString)(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value);
67
+ return (0, index_1.IsString)(value) && /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(value);
66
68
  }
67
69
  function IsDateTimeStringWithTimeZone(value) {
68
- return (0, guard_1.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);
70
+ return (0, index_1.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);
69
71
  }
70
72
  function IsDateTimeStringWithoutTimeZone(value) {
71
- return (0, guard_1.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);
73
+ return (0, index_1.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);
72
74
  }
73
75
  function IsDateString(value) {
74
- return (0, guard_1.IsString)(value) && /^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(value);
76
+ return (0, index_1.IsString)(value) && /^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(value);
75
77
  }
76
- // --------------------------------------------------------------------------
78
+ // ------------------------------------------------------------------
77
79
  // Convert
78
- // --------------------------------------------------------------------------
80
+ // ------------------------------------------------------------------
79
81
  function TryConvertLiteralString(value, target) {
80
82
  const conversion = TryConvertString(value);
81
83
  return conversion === target ? conversion : value;
@@ -88,82 +90,66 @@ function TryConvertLiteralBoolean(value, target) {
88
90
  const conversion = TryConvertBoolean(value);
89
91
  return conversion === target ? conversion : value;
90
92
  }
93
+ // prettier-ignore
91
94
  function TryConvertLiteral(schema, value) {
92
- if (typeof schema.const === 'string') {
93
- return TryConvertLiteralString(value, schema.const);
94
- }
95
- else if (typeof schema.const === 'number') {
96
- return TryConvertLiteralNumber(value, schema.const);
97
- }
98
- else if (typeof schema.const === 'boolean') {
99
- return TryConvertLiteralBoolean(value, schema.const);
100
- }
101
- else {
102
- return (0, clone_1.Clone)(value);
103
- }
95
+ return ((0, index_1.IsString)(schema.const) ? TryConvertLiteralString(value, schema.const) :
96
+ (0, index_1.IsNumber)(schema.const) ? TryConvertLiteralNumber(value, schema.const) :
97
+ (0, index_1.IsBoolean)(schema.const) ? TryConvertLiteralBoolean(value, schema.const) :
98
+ (0, index_2.Clone)(value));
104
99
  }
105
100
  function TryConvertBoolean(value) {
106
101
  return IsValueTrue(value) ? true : IsValueFalse(value) ? false : value;
107
102
  }
108
103
  function TryConvertBigInt(value) {
109
- return IsStringNumeric(value) ? BigInt(parseInt(value)) : (0, guard_1.IsNumber)(value) ? BigInt(value | 0) : IsValueFalse(value) ? BigInt(0) : IsValueTrue(value) ? BigInt(1) : value;
104
+ return IsStringNumeric(value) ? BigInt(parseInt(value)) : (0, index_1.IsNumber)(value) ? BigInt(value | 0) : IsValueFalse(value) ? BigInt(0) : IsValueTrue(value) ? BigInt(1) : value;
110
105
  }
111
106
  function TryConvertString(value) {
112
- return IsValueToString(value) ? value.toString() : (0, guard_1.IsSymbol)(value) && value.description !== undefined ? value.description.toString() : value;
107
+ return IsValueToString(value) ? value.toString() : (0, index_1.IsSymbol)(value) && value.description !== undefined ? value.description.toString() : value;
113
108
  }
114
109
  function TryConvertNumber(value) {
115
110
  return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;
116
111
  }
117
112
  function TryConvertInteger(value) {
118
- return IsStringNumeric(value) ? parseInt(value) : (0, guard_1.IsNumber)(value) ? value | 0 : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;
113
+ return IsStringNumeric(value) ? parseInt(value) : (0, index_1.IsNumber)(value) ? value | 0 : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;
119
114
  }
120
115
  function TryConvertNull(value) {
121
- return (0, guard_1.IsString)(value) && value.toLowerCase() === 'null' ? null : value;
116
+ return (0, index_1.IsString)(value) && value.toLowerCase() === 'null' ? null : value;
122
117
  }
123
118
  function TryConvertUndefined(value) {
124
- return (0, guard_1.IsString)(value) && value === 'undefined' ? undefined : value;
125
- }
119
+ return (0, index_1.IsString)(value) && value === 'undefined' ? undefined : value;
120
+ }
121
+ // ------------------------------------------------------------------
122
+ // note: this function may return an invalid dates for the regex
123
+ // tests above. Invalid dates will however be checked during the
124
+ // casting function and will return a epoch date if invalid.
125
+ // Consider better string parsing for the iso dates in future
126
+ // revisions.
127
+ // ------------------------------------------------------------------
128
+ // prettier-ignore
126
129
  function TryConvertDate(value) {
127
- // --------------------------------------------------------------------------
128
- // note: this function may return an invalid dates for the regex tests
129
- // above. Invalid dates will however be checked during the casting function
130
- // and will return a epoch date if invalid. Consider better string parsing
131
- // for the iso dates in future revisions.
132
- // --------------------------------------------------------------------------
133
- return (0, guard_1.IsDate)(value)
134
- ? value
135
- : (0, guard_1.IsNumber)(value)
136
- ? new Date(value)
137
- : IsValueTrue(value)
138
- ? new Date(1)
139
- : IsValueFalse(value)
140
- ? new Date(0)
141
- : IsStringNumeric(value)
142
- ? new Date(parseInt(value))
143
- : IsTimeStringWithoutTimeZone(value)
144
- ? new Date(`1970-01-01T${value}.000Z`)
145
- : IsTimeStringWithTimeZone(value)
146
- ? new Date(`1970-01-01T${value}`)
147
- : IsDateTimeStringWithoutTimeZone(value)
148
- ? new Date(`${value}.000Z`)
149
- : IsDateTimeStringWithTimeZone(value)
150
- ? new Date(value)
151
- : IsDateString(value)
152
- ? new Date(`${value}T00:00:00.000Z`)
153
- : value;
154
- }
155
- // --------------------------------------------------------------------------
130
+ return ((0, index_1.IsDate)(value) ? value :
131
+ (0, index_1.IsNumber)(value) ? new Date(value) :
132
+ IsValueTrue(value) ? new Date(1) :
133
+ IsValueFalse(value) ? new Date(0) :
134
+ IsStringNumeric(value) ? new Date(parseInt(value)) :
135
+ IsTimeStringWithoutTimeZone(value) ? new Date(`1970-01-01T${value}.000Z`) :
136
+ IsTimeStringWithTimeZone(value) ? new Date(`1970-01-01T${value}`) :
137
+ IsDateTimeStringWithoutTimeZone(value) ? new Date(`${value}.000Z`) :
138
+ IsDateTimeStringWithTimeZone(value) ? new Date(value) :
139
+ IsDateString(value) ? new Date(`${value}T00:00:00.000Z`) :
140
+ value);
141
+ }
142
+ // ------------------------------------------------------------------
156
143
  // Default
157
- // --------------------------------------------------------------------------
144
+ // ------------------------------------------------------------------
158
145
  function Default(value) {
159
146
  return value;
160
147
  }
161
- exports.Default = Default;
162
- // --------------------------------------------------------------------------
148
+ // ------------------------------------------------------------------
163
149
  // Convert
164
- // --------------------------------------------------------------------------
150
+ // ------------------------------------------------------------------
165
151
  function TArray(schema, references, value) {
166
- if ((0, guard_1.IsArray)(value)) {
152
+ if ((0, index_1.IsArray)(value)) {
167
153
  return value.map((value) => Visit(schema.items, references, value));
168
154
  }
169
155
  return value;
@@ -180,11 +166,12 @@ function TDate(schema, references, value) {
180
166
  function TInteger(schema, references, value) {
181
167
  return TryConvertInteger(value);
182
168
  }
169
+ // prettier-ignore
183
170
  function TIntersect(schema, references, value) {
184
- // prettier-ignore
185
- return (schema.allOf.every(schema => Types.TypeGuard.TObject(schema)))
186
- ? Visit(Types.Type.Composite(schema.allOf), references, value)
187
- : Visit(schema.allOf[0], references, value);
171
+ const allObjects = schema.allOf.every(schema => (0, type_1.TObject)(schema));
172
+ if (allObjects)
173
+ return Visit((0, index_6.Composite)(schema.allOf), references, value);
174
+ return Visit(schema.allOf[0], references, value); // todo: fix this
188
175
  }
189
176
  function TLiteral(schema, references, value) {
190
177
  return TryConvertLiteral(schema, value);
@@ -195,12 +182,16 @@ function TNull(schema, references, value) {
195
182
  function TNumber(schema, references, value) {
196
183
  return TryConvertNumber(value);
197
184
  }
185
+ // prettier-ignore
198
186
  function TObject(schema, references, value) {
199
- if ((0, guard_1.IsObject)(value))
200
- return Object.getOwnPropertyNames(schema.properties).reduce((acc, key) => {
201
- return value[key] !== undefined ? { ...acc, [key]: Visit(schema.properties[key], references, value[key]) } : { ...acc };
202
- }, value);
203
- return value;
187
+ const isConvertable = (0, index_1.IsObject)(value);
188
+ if (!isConvertable)
189
+ return value;
190
+ return Object.getOwnPropertyNames(schema.properties).reduce((value, key) => {
191
+ return !(0, index_1.IsUndefined)(value[key])
192
+ ? ({ ...value, [key]: Visit(schema.properties[key], references, value[key]) })
193
+ : ({ ...value });
194
+ }, value);
204
195
  }
205
196
  function TRecord(schema, references, value) {
206
197
  const propertyKey = Object.getOwnPropertyNames(schema.patternProperties)[0];
@@ -212,24 +203,27 @@ function TRecord(schema, references, value) {
212
203
  return result;
213
204
  }
214
205
  function TRef(schema, references, value) {
215
- return Visit((0, deref_1.Deref)(schema, references), references, value);
206
+ return Visit((0, index_4.Deref)(schema, references), references, value);
216
207
  }
217
208
  function TString(schema, references, value) {
218
209
  return TryConvertString(value);
219
210
  }
220
211
  function TSymbol(schema, references, value) {
221
- return (0, guard_1.IsString)(value) || (0, guard_1.IsNumber)(value) ? Symbol(value) : value;
212
+ return (0, index_1.IsString)(value) || (0, index_1.IsNumber)(value) ? Symbol(value) : value;
222
213
  }
223
214
  function TThis(schema, references, value) {
224
- return Visit((0, deref_1.Deref)(schema, references), references, value);
215
+ return Visit((0, index_4.Deref)(schema, references), references, value);
225
216
  }
217
+ // prettier-ignore
226
218
  function TTuple(schema, references, value) {
227
- if ((0, guard_1.IsArray)(value) && !(0, guard_1.IsUndefined)(schema.items)) {
228
- return value.map((value, index) => {
229
- return index < schema.items.length ? Visit(schema.items[index], references, value) : value;
230
- });
231
- }
232
- return value;
219
+ const isConvertable = (0, index_1.IsArray)(value) && !(0, index_1.IsUndefined)(schema.items);
220
+ if (!isConvertable)
221
+ return value;
222
+ return value.map((value, index) => {
223
+ return (index < schema.items.length)
224
+ ? Visit(schema.items[index], references, value)
225
+ : value;
226
+ });
233
227
  }
234
228
  function TUndefined(schema, references, value) {
235
229
  return TryConvertUndefined(value);
@@ -237,19 +231,16 @@ function TUndefined(schema, references, value) {
237
231
  function TUnion(schema, references, value) {
238
232
  for (const subschema of schema.anyOf) {
239
233
  const converted = Visit(subschema, references, value);
240
- if ((0, check_1.Check)(subschema, references, converted)) {
234
+ if ((0, index_3.Check)(subschema, references, converted)) {
241
235
  return converted;
242
236
  }
243
237
  }
244
238
  return value;
245
239
  }
246
240
  function Visit(schema, references, value) {
247
- const references_ = (0, guard_1.IsString)(schema.$id) ? [...references, schema] : references;
241
+ const references_ = (0, index_1.IsString)(schema.$id) ? [...references, schema] : references;
248
242
  const schema_ = schema;
249
- switch (schema[Types.Kind]) {
250
- // ------------------------------------------------------
251
- // Structural
252
- // ------------------------------------------------------
243
+ switch (schema[index_5.Kind]) {
253
244
  case 'Array':
254
245
  return TArray(schema_, references_, value);
255
246
  case 'BigInt':
@@ -286,29 +277,15 @@ function Visit(schema, references, value) {
286
277
  return TUndefined(schema_, references_, value);
287
278
  case 'Union':
288
279
  return TUnion(schema_, references_, value);
289
- // ------------------------------------------------------
290
- // Default
291
- // ------------------------------------------------------
292
- case 'Any':
293
- case 'AsyncIterator':
294
- case 'Constructor':
295
- case 'Function':
296
- case 'Iterator':
297
- case 'Never':
298
- case 'Promise':
299
- case 'TemplateLiteral':
300
- case 'Uint8Array':
301
- case 'Unknown':
302
- case 'Void':
303
- return Default(value);
304
280
  default:
305
- if (!Types.TypeRegistry.Has(schema_[Types.Kind]))
306
- throw new ValueConvertUnknownTypeError(schema_);
307
281
  return Default(value);
308
282
  }
309
283
  }
310
284
  /** Converts any type mismatched values to their target type if a reasonable conversion is possible. */
285
+ // prettier-ignore
311
286
  function Convert(...args) {
312
- return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);
287
+ return args.length === 3
288
+ ? Visit(args[0], args[1], args[2])
289
+ : Visit(args[0], [], args[1]);
313
290
  }
314
291
  exports.Convert = Convert;
@@ -0,0 +1 @@
1
+ export * from './convert';