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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/build/import/compiler/compiler.d.mts +9 -0
  2. package/build/import/compiler/compiler.mjs +60 -6
  3. package/build/import/errors/errors.d.mts +3 -0
  4. package/build/import/errors/errors.mjs +28 -3
  5. package/build/import/errors/function.d.mts +3 -0
  6. package/build/import/errors/function.mjs +4 -0
  7. package/build/import/index.mjs +9 -0
  8. package/build/import/system/policy.d.mts +10 -0
  9. package/build/import/system/policy.mjs +13 -0
  10. package/build/import/system/system.d.mts +3 -0
  11. package/build/import/system/system.mjs +9 -0
  12. package/build/import/type/any/any.d.mts +1 -0
  13. package/build/import/type/any/any.mjs +1 -0
  14. package/build/import/type/array/array.d.mts +7 -0
  15. package/build/import/type/array/array.mjs +1 -0
  16. package/build/import/type/async-iterator/async-iterator.d.mts +1 -0
  17. package/build/import/type/async-iterator/async-iterator.mjs +1 -0
  18. package/build/import/type/awaited/awaited.d.mts +7 -6
  19. package/build/import/type/awaited/awaited.mjs +23 -13
  20. package/build/import/type/bigint/bigint.d.mts +1 -0
  21. package/build/import/type/bigint/bigint.mjs +1 -0
  22. package/build/import/type/boolean/boolean.d.mts +1 -0
  23. package/build/import/type/boolean/boolean.mjs +1 -0
  24. package/build/import/type/clone/type.d.mts +2 -0
  25. package/build/import/type/clone/type.mjs +2 -0
  26. package/build/import/type/clone/value.d.mts +1 -0
  27. package/build/import/type/clone/value.mjs +2 -0
  28. package/build/import/type/composite/composite.d.mts +1 -0
  29. package/build/import/type/composite/composite.mjs +1 -0
  30. package/build/import/type/const/const.d.mts +2 -1
  31. package/build/import/type/const/const.mjs +5 -1
  32. package/build/import/type/constructor/constructor.d.mts +1 -0
  33. package/build/import/type/constructor/constructor.mjs +1 -0
  34. package/build/import/type/constructor-parameters/constructor-parameters.d.mts +1 -0
  35. package/build/import/type/constructor-parameters/constructor-parameters.mjs +1 -0
  36. package/build/import/type/date/date.d.mts +6 -0
  37. package/build/import/type/date/date.mjs +1 -0
  38. package/build/import/type/deref/deref.d.mts +1 -0
  39. package/build/import/type/deref/deref.mjs +18 -0
  40. package/build/import/type/enum/enum.d.mts +1 -0
  41. package/build/import/type/enum/enum.mjs +1 -0
  42. package/build/import/type/exclude/exclude-from-mapped-result.mjs +3 -0
  43. package/build/import/type/exclude/exclude.d.mts +2 -0
  44. package/build/import/type/exclude/exclude.mjs +3 -0
  45. package/build/import/type/extends/extends-check.mjs +173 -1
  46. package/build/import/type/extends/extends-from-mapped-key.mjs +4 -0
  47. package/build/import/type/extends/extends-from-mapped-result.mjs +3 -0
  48. package/build/import/type/extends/extends-undefined.d.mts +1 -0
  49. package/build/import/type/extends/extends-undefined.mjs +3 -0
  50. package/build/import/type/extends/extends.d.mts +3 -0
  51. package/build/import/type/extends/extends.mjs +7 -0
  52. package/build/import/type/extract/extract-from-mapped-result.mjs +3 -0
  53. package/build/import/type/extract/extract.d.mts +2 -0
  54. package/build/import/type/extract/extract.mjs +3 -0
  55. package/build/import/type/function/function.d.mts +1 -0
  56. package/build/import/type/function/function.mjs +1 -0
  57. package/build/import/type/guard/type.d.mts +46 -0
  58. package/build/import/type/guard/type.mjs +84 -1
  59. package/build/import/type/guard/value.d.mts +14 -0
  60. package/build/import/type/guard/value.mjs +14 -0
  61. package/build/import/type/helpers/helpers.d.mts +1 -0
  62. package/build/import/type/helpers/helpers.mjs +1 -0
  63. package/build/import/type/indexed/index.d.mts +0 -1
  64. package/build/import/type/indexed/index.mjs +0 -1
  65. package/build/import/type/indexed/indexed-from-mapped-key.d.mts +2 -2
  66. package/build/import/type/indexed/indexed-from-mapped-key.mjs +10 -3
  67. package/build/import/type/indexed/indexed-property-keys.d.mts +1 -0
  68. package/build/import/type/indexed/indexed-property-keys.mjs +9 -0
  69. package/build/import/type/indexed/indexed.d.mts +40 -4
  70. package/build/import/type/indexed/indexed.mjs +84 -5
  71. package/build/import/type/instance-type/instance-type.d.mts +1 -0
  72. package/build/import/type/instance-type/instance-type.mjs +1 -0
  73. package/build/import/type/integer/integer.d.mts +1 -0
  74. package/build/import/type/integer/integer.mjs +1 -0
  75. package/build/import/type/intersect/intersect-create.mjs +8 -0
  76. package/build/import/type/intersect/intersect-evaluated.d.mts +1 -0
  77. package/build/import/type/intersect/intersect-evaluated.mjs +9 -0
  78. package/build/import/type/intersect/intersect.d.mts +1 -0
  79. package/build/import/type/intersect/intersect.mjs +5 -0
  80. package/build/import/type/intrinsic/capitalize.d.mts +1 -0
  81. package/build/import/type/intrinsic/capitalize.mjs +1 -0
  82. package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +4 -0
  83. package/build/import/type/intrinsic/intrinsic.d.mts +2 -0
  84. package/build/import/type/intrinsic/intrinsic.mjs +16 -1
  85. package/build/import/type/intrinsic/lowercase.d.mts +1 -0
  86. package/build/import/type/intrinsic/lowercase.mjs +1 -0
  87. package/build/import/type/intrinsic/uncapitalize.d.mts +1 -0
  88. package/build/import/type/intrinsic/uncapitalize.mjs +1 -0
  89. package/build/import/type/intrinsic/uppercase.d.mts +1 -0
  90. package/build/import/type/intrinsic/uppercase.mjs +1 -0
  91. package/build/import/type/iterator/iterator.d.mts +1 -0
  92. package/build/import/type/iterator/iterator.mjs +1 -0
  93. package/build/import/type/keyof/keyof-from-mapped-result.mjs +3 -0
  94. package/build/import/type/keyof/keyof-property-keys.d.mts +2 -0
  95. package/build/import/type/keyof/keyof-property-keys.mjs +20 -0
  96. package/build/import/type/keyof/keyof.d.mts +2 -0
  97. package/build/import/type/keyof/keyof.mjs +6 -0
  98. package/build/import/type/literal/literal.d.mts +1 -0
  99. package/build/import/type/literal/literal.mjs +1 -0
  100. package/build/import/type/mapped/mapped-key.mjs +1 -0
  101. package/build/import/type/mapped/mapped-result.mjs +1 -0
  102. package/build/import/type/mapped/mapped.d.mts +2 -0
  103. package/build/import/type/mapped/mapped.mjs +19 -1
  104. package/build/import/type/modifiers/modifiers.mjs +10 -0
  105. package/build/import/type/never/never.d.mts +1 -0
  106. package/build/import/type/never/never.mjs +1 -0
  107. package/build/import/type/not/not.d.mts +1 -0
  108. package/build/import/type/not/not.mjs +1 -0
  109. package/build/import/type/null/null.d.mts +1 -0
  110. package/build/import/type/null/null.mjs +1 -0
  111. package/build/import/type/number/number.d.mts +1 -0
  112. package/build/import/type/number/number.mjs +1 -0
  113. package/build/import/type/object/object.d.mts +5 -0
  114. package/build/import/type/object/object.mjs +6 -0
  115. package/build/import/type/omit/omit-from-mapped-key.mjs +4 -0
  116. package/build/import/type/omit/omit.d.mts +3 -0
  117. package/build/import/type/omit/omit.mjs +12 -0
  118. package/build/import/type/operators/operators.d.mts +8 -0
  119. package/build/import/type/operators/operators.mjs +15 -0
  120. package/build/import/type/optional/optional.d.mts +1 -0
  121. package/build/import/type/optional/optional.mjs +1 -0
  122. package/build/import/type/parameters/parameters.d.mts +1 -0
  123. package/build/import/type/parameters/parameters.mjs +1 -0
  124. package/build/import/type/partial/partial-from-mapped-result.mjs +3 -0
  125. package/build/import/type/partial/partial.d.mts +2 -0
  126. package/build/import/type/partial/partial.mjs +9 -0
  127. package/build/import/type/pick/pick-from-mapped-key.mjs +4 -0
  128. package/build/import/type/pick/pick.d.mts +3 -0
  129. package/build/import/type/pick/pick.mjs +7 -0
  130. package/build/import/type/promise/promise.d.mts +1 -0
  131. package/build/import/type/promise/promise.mjs +1 -0
  132. package/build/import/type/readonly/readonly.d.mts +1 -0
  133. package/build/import/type/readonly/readonly.mjs +1 -0
  134. package/build/import/type/readonly-optional/readonly-optional.d.mts +1 -0
  135. package/build/import/type/readonly-optional/readonly-optional.mjs +1 -0
  136. package/build/import/type/record/record.d.mts +11 -9
  137. package/build/import/type/record/record.mjs +53 -28
  138. package/build/import/type/recursive/recursive.d.mts +1 -0
  139. package/build/import/type/recursive/recursive.mjs +3 -0
  140. package/build/import/type/ref/ref.d.mts +2 -0
  141. package/build/import/type/ref/ref.mjs +1 -0
  142. package/build/import/type/regexp/regexp.d.mts +2 -0
  143. package/build/import/type/regexp/regexp.mjs +1 -0
  144. package/build/import/type/registry/format.d.mts +6 -0
  145. package/build/import/type/registry/format.mjs +7 -0
  146. package/build/import/type/registry/type.d.mts +6 -0
  147. package/build/import/type/registry/type.mjs +7 -0
  148. package/build/import/type/required/required-from-mapped-result.mjs +3 -0
  149. package/build/import/type/required/required.d.mts +2 -0
  150. package/build/import/type/required/required.mjs +9 -0
  151. package/build/import/type/rest/rest.d.mts +1 -0
  152. package/build/import/type/rest/rest.mjs +5 -0
  153. package/build/import/type/return-type/return-type.d.mts +1 -0
  154. package/build/import/type/return-type/return-type.mjs +1 -0
  155. package/build/import/type/schema/schema.d.mts +7 -0
  156. package/build/import/type/static/static.d.mts +3 -0
  157. package/build/import/type/strict/strict.d.mts +1 -0
  158. package/build/import/type/strict/strict.mjs +1 -0
  159. package/build/import/type/string/string.d.mts +7 -0
  160. package/build/import/type/string/string.mjs +1 -0
  161. package/build/import/type/symbol/symbol.d.mts +1 -0
  162. package/build/import/type/symbol/symbol.mjs +1 -0
  163. package/build/import/type/symbols/symbols.d.mts +5 -0
  164. package/build/import/type/symbols/symbols.mjs +5 -0
  165. package/build/import/type/template-literal/finite.mjs +10 -0
  166. package/build/import/type/template-literal/generate.mjs +10 -0
  167. package/build/import/type/template-literal/parser.d.mts +2 -0
  168. package/build/import/type/template-literal/parser.mjs +17 -0
  169. package/build/import/type/template-literal/pattern.mjs +11 -0
  170. package/build/import/type/template-literal/syntax.d.mts +1 -0
  171. package/build/import/type/template-literal/syntax.mjs +8 -0
  172. package/build/import/type/template-literal/template-literal.d.mts +2 -0
  173. package/build/import/type/template-literal/template-literal.mjs +2 -0
  174. package/build/import/type/template-literal/union.d.mts +1 -0
  175. package/build/import/type/template-literal/union.mjs +4 -0
  176. package/build/import/type/transform/transform.d.mts +1 -0
  177. package/build/import/type/transform/transform.mjs +9 -0
  178. package/build/import/type/tuple/tuple.d.mts +1 -0
  179. package/build/import/type/tuple/tuple.mjs +3 -0
  180. package/build/import/type/type/index.d.mts +1 -0
  181. package/build/import/type/type/index.mjs +7 -0
  182. package/build/import/type/type/javascript.d.mts +19 -0
  183. package/build/import/type/type/javascript.mjs +18 -0
  184. package/build/import/type/type/json.d.mts +64 -3
  185. package/build/import/type/type/json.mjs +55 -1
  186. package/build/import/type/type/type.mjs +3 -0
  187. package/build/import/type/uint8array/uint8array.d.mts +1 -0
  188. package/build/import/type/uint8array/uint8array.mjs +1 -0
  189. package/build/import/type/undefined/undefined.d.mts +1 -0
  190. package/build/import/type/undefined/undefined.mjs +1 -0
  191. package/build/import/type/union/union-evaluated.d.mts +1 -0
  192. package/build/import/type/union/union-evaluated.mjs +10 -0
  193. package/build/import/type/union/union.d.mts +1 -0
  194. package/build/import/type/union/union.mjs +2 -0
  195. package/build/import/type/unknown/unknown.d.mts +1 -0
  196. package/build/import/type/unknown/unknown.mjs +1 -0
  197. package/build/import/type/unsafe/unsafe.d.mts +1 -0
  198. package/build/import/type/unsafe/unsafe.mjs +1 -0
  199. package/build/import/type/void/void.d.mts +1 -0
  200. package/build/import/type/void/void.mjs +1 -0
  201. package/build/import/value/cast/cast.d.mts +2 -0
  202. package/build/import/value/cast/cast.mjs +28 -0
  203. package/build/import/value/check/check.d.mts +2 -0
  204. package/build/import/value/check/check.mjs +19 -1
  205. package/build/import/value/clean/clean.d.mts +2 -0
  206. package/build/import/value/clean/clean.mjs +12 -1
  207. package/build/import/value/clone/clone.d.mts +1 -0
  208. package/build/import/value/clone/clone.mjs +7 -0
  209. package/build/import/value/convert/convert.d.mts +2 -0
  210. package/build/import/value/convert/convert.mjs +30 -1
  211. package/build/import/value/create/create.d.mts +2 -0
  212. package/build/import/value/create/create.mjs +17 -0
  213. package/build/import/value/default/default.d.mts +2 -0
  214. package/build/import/value/default/default.mjs +19 -0
  215. package/build/import/value/delta/delta.mjs +15 -0
  216. package/build/import/value/deref/deref.d.mts +1 -0
  217. package/build/import/value/deref/deref.mjs +1 -0
  218. package/build/import/value/equal/equal.d.mts +1 -0
  219. package/build/import/value/equal/equal.mjs +7 -0
  220. package/build/import/value/guard/guard.d.mts +20 -0
  221. package/build/import/value/guard/guard.mjs +30 -0
  222. package/build/import/value/hash/hash.d.mts +1 -0
  223. package/build/import/value/hash/hash.mjs +19 -0
  224. package/build/import/value/index.mjs +12 -0
  225. package/build/import/value/mutate/mutate.d.mts +1 -0
  226. package/build/import/value/mutate/mutate.mjs +11 -0
  227. package/build/import/value/pointer/pointer.d.mts +5 -0
  228. package/build/import/value/pointer/pointer.mjs +18 -0
  229. package/build/import/value/transform/decode.d.mts +5 -0
  230. package/build/import/value/transform/decode.mjs +23 -0
  231. package/build/import/value/transform/encode.d.mts +6 -0
  232. package/build/import/value/transform/encode.mjs +25 -0
  233. package/build/import/value/transform/has.d.mts +1 -0
  234. package/build/import/value/transform/has.mjs +16 -0
  235. package/build/import/value/value/value.d.mts +24 -0
  236. package/build/import/value/value/value.mjs +15 -0
  237. package/build/require/compiler/compiler.d.ts +9 -0
  238. package/build/require/compiler/compiler.js +61 -6
  239. package/build/require/compiler/index.js +1 -0
  240. package/build/require/errors/errors.d.ts +3 -0
  241. package/build/require/errors/errors.js +29 -3
  242. package/build/require/errors/function.d.ts +3 -0
  243. package/build/require/errors/function.js +5 -0
  244. package/build/require/errors/index.js +1 -0
  245. package/build/require/index.js +10 -0
  246. package/build/require/system/index.js +1 -0
  247. package/build/require/system/policy.d.ts +10 -0
  248. package/build/require/system/policy.js +14 -0
  249. package/build/require/system/system.d.ts +3 -0
  250. package/build/require/system/system.js +10 -0
  251. package/build/require/type/any/any.d.ts +1 -0
  252. package/build/require/type/any/any.js +2 -0
  253. package/build/require/type/any/index.js +1 -0
  254. package/build/require/type/array/array.d.ts +7 -0
  255. package/build/require/type/array/array.js +2 -0
  256. package/build/require/type/array/index.js +1 -0
  257. package/build/require/type/async-iterator/async-iterator.d.ts +1 -0
  258. package/build/require/type/async-iterator/async-iterator.js +2 -0
  259. package/build/require/type/async-iterator/index.js +1 -0
  260. package/build/require/type/awaited/awaited.d.ts +7 -6
  261. package/build/require/type/awaited/awaited.js +25 -15
  262. package/build/require/type/awaited/index.js +1 -0
  263. package/build/require/type/bigint/bigint.d.ts +1 -0
  264. package/build/require/type/bigint/bigint.js +2 -0
  265. package/build/require/type/bigint/index.js +1 -0
  266. package/build/require/type/boolean/boolean.d.ts +1 -0
  267. package/build/require/type/boolean/boolean.js +2 -0
  268. package/build/require/type/boolean/index.js +1 -0
  269. package/build/require/type/clone/index.js +1 -0
  270. package/build/require/type/clone/type.d.ts +2 -0
  271. package/build/require/type/clone/type.js +3 -0
  272. package/build/require/type/clone/value.d.ts +1 -0
  273. package/build/require/type/clone/value.js +3 -0
  274. package/build/require/type/composite/composite.d.ts +1 -0
  275. package/build/require/type/composite/composite.js +2 -0
  276. package/build/require/type/composite/index.js +1 -0
  277. package/build/require/type/const/const.d.ts +2 -1
  278. package/build/require/type/const/const.js +6 -1
  279. package/build/require/type/const/index.js +1 -0
  280. package/build/require/type/constructor/constructor.d.ts +1 -0
  281. package/build/require/type/constructor/constructor.js +2 -0
  282. package/build/require/type/constructor/index.js +1 -0
  283. package/build/require/type/constructor-parameters/constructor-parameters.d.ts +1 -0
  284. package/build/require/type/constructor-parameters/constructor-parameters.js +2 -0
  285. package/build/require/type/constructor-parameters/index.js +1 -0
  286. package/build/require/type/date/date.d.ts +6 -0
  287. package/build/require/type/date/date.js +2 -0
  288. package/build/require/type/date/index.js +1 -0
  289. package/build/require/type/deref/deref.d.ts +1 -0
  290. package/build/require/type/deref/deref.js +19 -0
  291. package/build/require/type/deref/index.js +1 -0
  292. package/build/require/type/discard/discard.js +1 -0
  293. package/build/require/type/discard/index.js +1 -0
  294. package/build/require/type/enum/enum.d.ts +1 -0
  295. package/build/require/type/enum/enum.js +2 -0
  296. package/build/require/type/enum/index.js +1 -0
  297. package/build/require/type/exclude/exclude-from-mapped-result.js +4 -0
  298. package/build/require/type/exclude/exclude.d.ts +2 -0
  299. package/build/require/type/exclude/exclude.js +4 -0
  300. package/build/require/type/exclude/index.js +1 -0
  301. package/build/require/type/extends/extends-check.js +174 -1
  302. package/build/require/type/extends/extends-from-mapped-key.js +5 -0
  303. package/build/require/type/extends/extends-from-mapped-result.js +4 -0
  304. package/build/require/type/extends/extends-undefined.d.ts +1 -0
  305. package/build/require/type/extends/extends-undefined.js +4 -0
  306. package/build/require/type/extends/extends.d.ts +3 -0
  307. package/build/require/type/extends/extends.js +8 -0
  308. package/build/require/type/extends/index.js +1 -0
  309. package/build/require/type/extract/extract-from-mapped-result.js +4 -0
  310. package/build/require/type/extract/extract.d.ts +2 -0
  311. package/build/require/type/extract/extract.js +4 -0
  312. package/build/require/type/extract/index.js +1 -0
  313. package/build/require/type/function/function.d.ts +1 -0
  314. package/build/require/type/function/function.js +2 -0
  315. package/build/require/type/function/index.js +1 -0
  316. package/build/require/type/guard/index.js +1 -0
  317. package/build/require/type/guard/type.d.ts +46 -0
  318. package/build/require/type/guard/type.js +85 -1
  319. package/build/require/type/guard/value.d.ts +14 -0
  320. package/build/require/type/guard/value.js +15 -0
  321. package/build/require/type/helpers/helpers.d.ts +1 -0
  322. package/build/require/type/helpers/helpers.js +2 -0
  323. package/build/require/type/helpers/index.js +1 -0
  324. package/build/require/type/index.js +1 -0
  325. package/build/require/type/indexed/index.d.ts +0 -1
  326. package/build/require/type/indexed/index.js +1 -1
  327. package/build/require/type/indexed/indexed-from-mapped-key.d.ts +2 -2
  328. package/build/require/type/indexed/indexed-from-mapped-key.js +11 -3
  329. package/build/require/type/indexed/indexed-property-keys.d.ts +1 -0
  330. package/build/require/type/indexed/indexed-property-keys.js +10 -0
  331. package/build/require/type/indexed/indexed.d.ts +40 -4
  332. package/build/require/type/indexed/indexed.js +84 -4
  333. package/build/require/type/instance-type/index.js +1 -0
  334. package/build/require/type/instance-type/instance-type.d.ts +1 -0
  335. package/build/require/type/instance-type/instance-type.js +2 -0
  336. package/build/require/type/integer/index.js +1 -0
  337. package/build/require/type/integer/integer.d.ts +1 -0
  338. package/build/require/type/integer/integer.js +2 -0
  339. package/build/require/type/intersect/index.js +1 -0
  340. package/build/require/type/intersect/intersect-create.js +9 -0
  341. package/build/require/type/intersect/intersect-evaluated.d.ts +1 -0
  342. package/build/require/type/intersect/intersect-evaluated.js +10 -0
  343. package/build/require/type/intersect/intersect-type.js +1 -0
  344. package/build/require/type/intersect/intersect.d.ts +1 -0
  345. package/build/require/type/intersect/intersect.js +6 -0
  346. package/build/require/type/intrinsic/capitalize.d.ts +1 -0
  347. package/build/require/type/intrinsic/capitalize.js +2 -0
  348. package/build/require/type/intrinsic/index.js +1 -0
  349. package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +5 -0
  350. package/build/require/type/intrinsic/intrinsic.d.ts +2 -0
  351. package/build/require/type/intrinsic/intrinsic.js +17 -1
  352. package/build/require/type/intrinsic/lowercase.d.ts +1 -0
  353. package/build/require/type/intrinsic/lowercase.js +2 -0
  354. package/build/require/type/intrinsic/uncapitalize.d.ts +1 -0
  355. package/build/require/type/intrinsic/uncapitalize.js +2 -0
  356. package/build/require/type/intrinsic/uppercase.d.ts +1 -0
  357. package/build/require/type/intrinsic/uppercase.js +2 -0
  358. package/build/require/type/iterator/index.js +1 -0
  359. package/build/require/type/iterator/iterator.d.ts +1 -0
  360. package/build/require/type/iterator/iterator.js +2 -0
  361. package/build/require/type/keyof/index.js +1 -0
  362. package/build/require/type/keyof/keyof-from-mapped-result.js +4 -0
  363. package/build/require/type/keyof/keyof-property-keys.d.ts +2 -0
  364. package/build/require/type/keyof/keyof-property-keys.js +21 -0
  365. package/build/require/type/keyof/keyof.d.ts +2 -0
  366. package/build/require/type/keyof/keyof.js +7 -0
  367. package/build/require/type/literal/index.js +1 -0
  368. package/build/require/type/literal/literal.d.ts +1 -0
  369. package/build/require/type/literal/literal.js +2 -0
  370. package/build/require/type/mapped/index.js +1 -0
  371. package/build/require/type/mapped/mapped-key.js +2 -0
  372. package/build/require/type/mapped/mapped-result.js +2 -0
  373. package/build/require/type/mapped/mapped.d.ts +2 -0
  374. package/build/require/type/mapped/mapped.js +20 -1
  375. package/build/require/type/modifiers/index.js +1 -0
  376. package/build/require/type/modifiers/modifiers.js +11 -0
  377. package/build/require/type/never/index.js +1 -0
  378. package/build/require/type/never/never.d.ts +1 -0
  379. package/build/require/type/never/never.js +2 -0
  380. package/build/require/type/not/index.js +1 -0
  381. package/build/require/type/not/not.d.ts +1 -0
  382. package/build/require/type/not/not.js +2 -0
  383. package/build/require/type/null/index.js +1 -0
  384. package/build/require/type/null/null.d.ts +1 -0
  385. package/build/require/type/null/null.js +2 -0
  386. package/build/require/type/number/index.js +1 -0
  387. package/build/require/type/number/number.d.ts +1 -0
  388. package/build/require/type/number/number.js +2 -0
  389. package/build/require/type/object/index.js +1 -0
  390. package/build/require/type/object/object.d.ts +5 -0
  391. package/build/require/type/object/object.js +7 -0
  392. package/build/require/type/omit/index.js +1 -0
  393. package/build/require/type/omit/omit-from-mapped-key.js +5 -0
  394. package/build/require/type/omit/omit.d.ts +3 -0
  395. package/build/require/type/omit/omit.js +13 -0
  396. package/build/require/type/operators/index.js +1 -0
  397. package/build/require/type/operators/operators.d.ts +8 -0
  398. package/build/require/type/operators/operators.js +16 -0
  399. package/build/require/type/optional/index.js +1 -0
  400. package/build/require/type/optional/optional.d.ts +1 -0
  401. package/build/require/type/optional/optional.js +2 -0
  402. package/build/require/type/parameters/index.js +1 -0
  403. package/build/require/type/parameters/parameters.d.ts +1 -0
  404. package/build/require/type/parameters/parameters.js +2 -0
  405. package/build/require/type/partial/index.js +1 -0
  406. package/build/require/type/partial/partial-from-mapped-result.js +4 -0
  407. package/build/require/type/partial/partial.d.ts +2 -0
  408. package/build/require/type/partial/partial.js +10 -0
  409. package/build/require/type/patterns/index.js +1 -0
  410. package/build/require/type/patterns/patterns.js +1 -0
  411. package/build/require/type/pick/index.js +1 -0
  412. package/build/require/type/pick/pick-from-mapped-key.js +5 -0
  413. package/build/require/type/pick/pick.d.ts +3 -0
  414. package/build/require/type/pick/pick.js +8 -0
  415. package/build/require/type/promise/index.js +1 -0
  416. package/build/require/type/promise/promise.d.ts +1 -0
  417. package/build/require/type/promise/promise.js +2 -0
  418. package/build/require/type/readonly/index.js +1 -0
  419. package/build/require/type/readonly/readonly.d.ts +1 -0
  420. package/build/require/type/readonly/readonly.js +2 -0
  421. package/build/require/type/readonly-optional/index.js +1 -0
  422. package/build/require/type/readonly-optional/readonly-optional.d.ts +1 -0
  423. package/build/require/type/readonly-optional/readonly-optional.js +2 -0
  424. package/build/require/type/record/index.js +1 -0
  425. package/build/require/type/record/record.d.ts +11 -9
  426. package/build/require/type/record/record.js +54 -28
  427. package/build/require/type/recursive/index.js +1 -0
  428. package/build/require/type/recursive/recursive.d.ts +1 -0
  429. package/build/require/type/recursive/recursive.js +4 -0
  430. package/build/require/type/ref/index.js +1 -0
  431. package/build/require/type/ref/ref.d.ts +2 -0
  432. package/build/require/type/ref/ref.js +2 -0
  433. package/build/require/type/regexp/index.js +1 -0
  434. package/build/require/type/regexp/regexp.d.ts +2 -0
  435. package/build/require/type/regexp/regexp.js +2 -0
  436. package/build/require/type/registry/format.d.ts +6 -0
  437. package/build/require/type/registry/format.js +8 -0
  438. package/build/require/type/registry/index.js +1 -0
  439. package/build/require/type/registry/type.d.ts +6 -0
  440. package/build/require/type/registry/type.js +8 -0
  441. package/build/require/type/required/index.js +1 -0
  442. package/build/require/type/required/required-from-mapped-result.js +4 -0
  443. package/build/require/type/required/required.d.ts +2 -0
  444. package/build/require/type/required/required.js +10 -0
  445. package/build/require/type/rest/index.js +1 -0
  446. package/build/require/type/rest/rest.d.ts +1 -0
  447. package/build/require/type/rest/rest.js +6 -0
  448. package/build/require/type/return-type/index.js +1 -0
  449. package/build/require/type/return-type/return-type.d.ts +1 -0
  450. package/build/require/type/return-type/return-type.js +2 -0
  451. package/build/require/type/schema/anyschema.js +1 -0
  452. package/build/require/type/schema/index.js +1 -0
  453. package/build/require/type/schema/schema.d.ts +7 -0
  454. package/build/require/type/schema/schema.js +1 -0
  455. package/build/require/type/static/index.js +1 -0
  456. package/build/require/type/static/static.d.ts +3 -0
  457. package/build/require/type/static/static.js +1 -0
  458. package/build/require/type/strict/index.js +1 -0
  459. package/build/require/type/strict/strict.d.ts +1 -0
  460. package/build/require/type/strict/strict.js +2 -0
  461. package/build/require/type/string/index.js +1 -0
  462. package/build/require/type/string/string.d.ts +7 -0
  463. package/build/require/type/string/string.js +2 -0
  464. package/build/require/type/symbol/index.js +1 -0
  465. package/build/require/type/symbol/symbol.d.ts +1 -0
  466. package/build/require/type/symbol/symbol.js +2 -0
  467. package/build/require/type/symbols/index.js +1 -0
  468. package/build/require/type/symbols/symbols.d.ts +5 -0
  469. package/build/require/type/symbols/symbols.js +6 -0
  470. package/build/require/type/template-literal/finite.js +11 -0
  471. package/build/require/type/template-literal/generate.js +11 -0
  472. package/build/require/type/template-literal/index.js +1 -0
  473. package/build/require/type/template-literal/parser.d.ts +2 -0
  474. package/build/require/type/template-literal/parser.js +18 -0
  475. package/build/require/type/template-literal/pattern.js +12 -0
  476. package/build/require/type/template-literal/syntax.d.ts +1 -0
  477. package/build/require/type/template-literal/syntax.js +9 -0
  478. package/build/require/type/template-literal/template-literal.d.ts +2 -0
  479. package/build/require/type/template-literal/template-literal.js +3 -0
  480. package/build/require/type/template-literal/union.d.ts +1 -0
  481. package/build/require/type/template-literal/union.js +5 -0
  482. package/build/require/type/transform/index.js +1 -0
  483. package/build/require/type/transform/transform.d.ts +1 -0
  484. package/build/require/type/transform/transform.js +10 -0
  485. package/build/require/type/tuple/index.js +1 -0
  486. package/build/require/type/tuple/tuple.d.ts +1 -0
  487. package/build/require/type/tuple/tuple.js +4 -0
  488. package/build/require/type/type/index.d.ts +1 -0
  489. package/build/require/type/type/index.js +8 -0
  490. package/build/require/type/type/javascript.d.ts +19 -0
  491. package/build/require/type/type/javascript.js +19 -0
  492. package/build/require/type/type/json.d.ts +64 -3
  493. package/build/require/type/type/json.js +56 -1
  494. package/build/require/type/type/type.js +4 -0
  495. package/build/require/type/uint8array/index.js +1 -0
  496. package/build/require/type/uint8array/uint8array.d.ts +1 -0
  497. package/build/require/type/uint8array/uint8array.js +2 -0
  498. package/build/require/type/undefined/index.js +1 -0
  499. package/build/require/type/undefined/undefined.d.ts +1 -0
  500. package/build/require/type/undefined/undefined.js +2 -0
  501. package/build/require/type/union/index.js +1 -0
  502. package/build/require/type/union/union-create.js +1 -0
  503. package/build/require/type/union/union-evaluated.d.ts +1 -0
  504. package/build/require/type/union/union-evaluated.js +11 -0
  505. package/build/require/type/union/union-type.js +1 -0
  506. package/build/require/type/union/union.d.ts +1 -0
  507. package/build/require/type/union/union.js +3 -0
  508. package/build/require/type/unknown/index.js +1 -0
  509. package/build/require/type/unknown/unknown.d.ts +1 -0
  510. package/build/require/type/unknown/unknown.js +2 -0
  511. package/build/require/type/unsafe/index.js +1 -0
  512. package/build/require/type/unsafe/unsafe.d.ts +1 -0
  513. package/build/require/type/unsafe/unsafe.js +2 -0
  514. package/build/require/type/void/index.js +1 -0
  515. package/build/require/type/void/void.d.ts +1 -0
  516. package/build/require/type/void/void.js +2 -0
  517. package/build/require/value/cast/cast.d.ts +2 -0
  518. package/build/require/value/cast/cast.js +29 -0
  519. package/build/require/value/cast/index.js +1 -0
  520. package/build/require/value/check/check.d.ts +2 -0
  521. package/build/require/value/check/check.js +20 -1
  522. package/build/require/value/check/index.js +1 -0
  523. package/build/require/value/clean/clean.d.ts +2 -0
  524. package/build/require/value/clean/clean.js +13 -1
  525. package/build/require/value/clean/index.js +1 -0
  526. package/build/require/value/clone/clone.d.ts +1 -0
  527. package/build/require/value/clone/clone.js +8 -0
  528. package/build/require/value/clone/index.js +1 -0
  529. package/build/require/value/convert/convert.d.ts +2 -0
  530. package/build/require/value/convert/convert.js +31 -1
  531. package/build/require/value/convert/index.js +1 -0
  532. package/build/require/value/create/create.d.ts +2 -0
  533. package/build/require/value/create/create.js +18 -0
  534. package/build/require/value/create/index.js +1 -0
  535. package/build/require/value/default/default.d.ts +2 -0
  536. package/build/require/value/default/default.js +20 -0
  537. package/build/require/value/default/index.js +1 -0
  538. package/build/require/value/delta/delta.js +16 -0
  539. package/build/require/value/delta/index.js +1 -0
  540. package/build/require/value/deref/deref.d.ts +1 -0
  541. package/build/require/value/deref/deref.js +2 -0
  542. package/build/require/value/deref/index.js +1 -0
  543. package/build/require/value/equal/equal.d.ts +1 -0
  544. package/build/require/value/equal/equal.js +8 -0
  545. package/build/require/value/equal/index.js +1 -0
  546. package/build/require/value/guard/guard.d.ts +20 -0
  547. package/build/require/value/guard/guard.js +31 -0
  548. package/build/require/value/guard/index.js +1 -0
  549. package/build/require/value/hash/hash.d.ts +1 -0
  550. package/build/require/value/hash/hash.js +20 -0
  551. package/build/require/value/hash/index.js +1 -0
  552. package/build/require/value/index.js +13 -0
  553. package/build/require/value/mutate/index.js +1 -0
  554. package/build/require/value/mutate/mutate.d.ts +1 -0
  555. package/build/require/value/mutate/mutate.js +12 -0
  556. package/build/require/value/pointer/index.js +1 -0
  557. package/build/require/value/pointer/pointer.d.ts +5 -0
  558. package/build/require/value/pointer/pointer.js +19 -0
  559. package/build/require/value/transform/decode.d.ts +5 -0
  560. package/build/require/value/transform/decode.js +24 -0
  561. package/build/require/value/transform/encode.d.ts +6 -0
  562. package/build/require/value/transform/encode.js +26 -0
  563. package/build/require/value/transform/has.d.ts +1 -0
  564. package/build/require/value/transform/has.js +17 -0
  565. package/build/require/value/transform/index.js +1 -0
  566. package/build/require/value/value/index.js +1 -0
  567. package/build/require/value/value/value.d.ts +24 -0
  568. package/build/require/value/value/value.js +16 -0
  569. package/license +3 -1
  570. package/package.json +1 -1
  571. package/readme.md +4 -5
  572. package/build/import/type/indexed/indexed-result.d.mts +0 -33
  573. package/build/import/type/indexed/indexed-result.mjs +0 -65
  574. package/build/require/type/indexed/indexed-result.d.ts +0 -33
  575. package/build/require/type/indexed/indexed-result.js +0 -69
@@ -1,9 +1,45 @@
1
- import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
- import { type TIndexResult } from './indexed-result.mjs';
1
+ import { type TSchema, SchemaOptions } from '../schema/index.mjs';
2
+ import { type TObject, type TProperties } from '../object/index.mjs';
3
+ import { type Assert } from '../helpers/index.mjs';
4
+ import { type TNever } from '../never/index.mjs';
5
+ import { type TRecursive } from '../recursive/index.mjs';
6
+ import { type TIntersect } from '../intersect/index.mjs';
7
+ import { type TMappedKey } from '../mapped/index.mjs';
8
+ import { type TUnion } from '../union/index.mjs';
9
+ import { type TTuple } from '../tuple/index.mjs';
10
+ import { type TArray } from '../array/index.mjs';
11
+ import { IntersectEvaluated } from '../intersect/index.mjs';
12
+ import { UnionEvaluated } from '../union/index.mjs';
3
13
  import { type TIndexPropertyKeys } from './indexed-property-keys.mjs';
4
14
  import { type TIndexFromMappedKey } from './indexed-from-mapped-key.mjs';
5
- import { TMappedKey } from '../mapped/index.mjs';
6
- export type TIndex<T extends TSchema, K extends PropertyKey[]> = TIndexResult<T, K>;
15
+ type FromRest<T extends TSchema[], K extends PropertyKey> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [FromKey<L, K>, ...FromRest<R, K>] : []);
16
+ declare function FromRest<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromRest<T, K>;
17
+ type FromIntersectRest<T extends TSchema[]> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TNever ? [...FromIntersectRest<R>] : [L, ...FromIntersectRest<R>] : []);
18
+ declare function FromIntersectRest<T extends TSchema[]>(T: [...T]): FromIntersectRest<T>;
19
+ type FromIntersect<T extends TSchema[], K extends PropertyKey> = (IntersectEvaluated<FromIntersectRest<FromRest<T, K>>>);
20
+ declare function FromIntersect<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromIntersect<T, K>;
21
+ type FromUnionRest<T extends TSchema[], S = T> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TNever ? [] : FromUnionRest<R, S> : S);
22
+ declare function FromUnionRest<T extends TSchema[]>(T: [...T], S?: [...T]): FromUnionRest<T>;
23
+ type FromUnion<T extends TSchema[], K extends PropertyKey> = (UnionEvaluated<FromUnionRest<FromRest<T, K>>>);
24
+ declare function FromUnion<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromUnion<T, K>;
25
+ type FromTuple<T extends TSchema[], K extends PropertyKey> = (K extends keyof T ? T[K] : K extends '[number]' ? UnionEvaluated<T> : TNever);
26
+ declare function FromTuple<T extends TSchema[], K extends PropertyKey>(T: [...T], K: K): FromTuple<T, K>;
27
+ type FromArray<T extends TSchema, K extends PropertyKey> = (K extends '[number]' ? T : TNever);
28
+ declare function FromArray<T extends TSchema, K extends PropertyKey>(T: T, K: K): FromArray<T, K>;
29
+ type AssertPropertyKey<T> = Assert<T, string | number>;
30
+ type FromProperty<T extends TProperties, K extends PropertyKey> = (K extends keyof T ? T[K] : `${AssertPropertyKey<K>}` extends `${AssertPropertyKey<keyof T>}` ? T[AssertPropertyKey<K>] : TNever);
31
+ declare function FromProperty<T extends TProperties, K extends PropertyKey>(T: T, K: K): FromProperty<T, K>;
32
+ type FromKey<T extends TSchema, K extends PropertyKey> = (T extends TRecursive<infer S> ? FromKey<S, K> : T extends TIntersect<infer S> ? FromIntersect<S, K> : T extends TUnion<infer S> ? FromUnion<S, K> : T extends TTuple<infer S> ? FromTuple<S, K> : T extends TArray<infer S> ? FromArray<S, K> : T extends TObject<infer S> ? FromProperty<S, K> : TNever);
33
+ declare function FromKey<T extends TSchema, K extends PropertyKey>(T: T, K: K): FromKey<T, K>;
34
+ type FromKeys<T extends TSchema, K extends PropertyKey[]> = (K extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? [FromKey<T, L>, ...FromKeys<T, R>] : []);
35
+ declare function FromKeys<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): FromKeys<T, K>;
36
+ type FromSchema<T extends TSchema, K extends PropertyKey[]> = (UnionEvaluated<FromKeys<T, K>>);
37
+ declare function FromSchema<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): FromSchema<T, K>;
38
+ export type TIndex<T extends TSchema, K extends PropertyKey[]> = (FromSchema<T, K>);
39
+ /** `[Json]` Returns an Indexed property type for the given keys */
7
40
  export declare function Index<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TIndexFromMappedKey<T, K>;
41
+ /** `[Json]` Returns an Indexed property type for the given keys */
8
42
  export declare function Index<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TIndex<T, I>;
43
+ /** `[Json]` Returns an Indexed property type for the given keys */
9
44
  export declare function Index<T extends TSchema, K extends PropertyKey[]>(T: T, K: readonly [...K], options?: SchemaOptions): TIndex<T, K>;
45
+ export {};
@@ -1,10 +1,89 @@
1
- import { IndexResult } from './indexed-result.mjs';
1
+ import { Never } from '../never/index.mjs';
2
+ import { IntersectEvaluated } from '../intersect/index.mjs';
3
+ import { UnionEvaluated } from '../union/index.mjs';
4
+ import { CloneType } from '../clone/type.mjs';
2
5
  import { IndexPropertyKeys } from './indexed-property-keys.mjs';
3
6
  import { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';
4
- import { CloneType } from '../clone/type.mjs';
5
- import { TMappedKey as IsMappedKey, TSchema as IsSchemaType } from '../guard/type.mjs';
7
+ // ------------------------------------------------------------------
8
+ // TypeGuard
9
+ // ------------------------------------------------------------------
10
+ // prettier-ignore
11
+ import { TArray as IsArrayType, TIntersect as IsIntersectType, TObject as IsObjectType, TMappedKey as IsMappedKey, TNever as IsNeverType, TSchema as IsSchemaType, TTuple as IsTupleType, TUnion as IsUnionType } from '../guard/type.mjs';
12
+ // prettier-ignore
13
+ function FromRest(T, K) {
14
+ const [L, ...R] = T;
15
+ return (T.length > 0
16
+ ? [FromKey(L, K), ...FromRest(R, K)]
17
+ : []);
18
+ }
19
+ // prettier-ignore
20
+ function FromIntersectRest(T) {
21
+ const [L, ...R] = T;
22
+ return (T.length > 0
23
+ ? IsNeverType(L)
24
+ ? [...FromIntersectRest(R)]
25
+ : [L, ...FromIntersectRest(R)]
26
+ : []);
27
+ }
28
+ // prettier-ignore
29
+ function FromIntersect(T, K) {
30
+ return (IntersectEvaluated(FromIntersectRest(FromRest(T, K))));
31
+ }
32
+ // prettier-ignore
33
+ function FromUnionRest(T, S = T) {
34
+ const [L, ...R] = T;
35
+ return (T.length > 0
36
+ ? IsNeverType(L)
37
+ ? []
38
+ : FromUnionRest(R, S)
39
+ : S);
40
+ }
41
+ // prettier-ignore
42
+ function FromUnion(T, K) {
43
+ return (UnionEvaluated(FromUnionRest(FromRest(T, K))));
44
+ }
45
+ // prettier-ignore
46
+ function FromTuple(T, K) {
47
+ return (K in T ? T[K] :
48
+ K === '[number]' ? UnionEvaluated(T) :
49
+ Never());
50
+ }
51
+ // prettier-ignore
52
+ function FromArray(T, K) {
53
+ return (K === '[number]'
54
+ ? T
55
+ : Never());
56
+ }
57
+ // prettier-ignore
58
+ function FromProperty(T, K) {
59
+ return (K in T
60
+ ? T[K]
61
+ : Never());
62
+ }
63
+ // prettier-ignore
64
+ function FromKey(T, K) {
65
+ return (IsIntersectType(T) ? FromIntersect(T.allOf, K) :
66
+ IsUnionType(T) ? FromUnion(T.anyOf, K) :
67
+ IsTupleType(T) ? FromTuple(T.items ?? [], K) :
68
+ IsArrayType(T) ? FromArray(T.items, K) :
69
+ IsObjectType(T) ? FromProperty(T.properties, K) :
70
+ Never());
71
+ }
72
+ // prettier-ignore
73
+ function FromKeys(T, K) {
74
+ const [L, ...R] = K;
75
+ return (K.length > 0
76
+ ? [FromKey(T, L), ...FromKeys(T, R)]
77
+ : []);
78
+ }
79
+ // prettier-ignore
80
+ function FromSchema(T, K) {
81
+ return (UnionEvaluated(FromKeys(T, K)));
82
+ }
83
+ /** `[Json]` Returns an Indexed property type for the given keys */
6
84
  export function Index(T, K, options = {}) {
85
+ // prettier-ignore
7
86
  return (IsMappedKey(K) ? CloneType(IndexFromMappedKey(T, K, options)) :
8
- IsSchemaType(K) ? IndexResult(T, IndexPropertyKeys(K), options) :
9
- IndexResult(T, K, options));
87
+ IsSchemaType(K) ? CloneType(FromSchema(T, IndexPropertyKeys(K)), options) :
88
+ CloneType(FromSchema(T, K), options));
10
89
  }
@@ -1,4 +1,5 @@
1
1
  import type { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import type { TConstructor } from '../constructor/index.mjs';
3
3
  export type TInstanceType<T extends TConstructor<TSchema[], TSchema>> = T['returns'];
4
+ /** `[JavaScript]` Extracts the InstanceType from the given Constructor type */
4
5
  export declare function InstanceType<T extends TConstructor<any[], any>>(schema: T, options?: SchemaOptions): TInstanceType<T>;
@@ -1,4 +1,5 @@
1
1
  import { CloneType } from '../clone/type.mjs';
2
+ /** `[JavaScript]` Extracts the InstanceType from the given Constructor type */
2
3
  export function InstanceType(schema, options = {}) {
3
4
  return CloneType(schema.returns, options);
4
5
  }
@@ -12,4 +12,5 @@ export interface TInteger extends TSchema, IntegerOptions {
12
12
  static: number;
13
13
  type: 'integer';
14
14
  }
15
+ /** `[Json]` Creates an Integer type */
15
16
  export declare function Integer(options?: IntegerOptions): TInteger;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[Json]` Creates an Integer type */
2
3
  export function Integer(options = {}) {
3
4
  return {
4
5
  ...options,
@@ -1,6 +1,14 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
2
  import { CloneType, CloneRest } from '../clone/type.mjs';
3
+ // ------------------------------------------------------------------
4
+ // TypeGuard
5
+ // ------------------------------------------------------------------
6
+ // prettier-ignore
3
7
  import { TObject as IsObjectType, TSchema as IsSchemaType } from '../guard/type.mjs';
8
+ // ------------------------------------------------------------------
9
+ // IntersectCreate
10
+ // ------------------------------------------------------------------
11
+ // prettier-ignore
4
12
  export function IntersectCreate(T, options) {
5
13
  const allObjects = T.every((schema) => IsObjectType(schema));
6
14
  const clonedUnevaluatedProperties = IsSchemaType(options.unevaluatedProperties)
@@ -12,5 +12,6 @@ declare function RemoveOptionalFromType<T extends TSchema>(T: T): RemoveOptional
12
12
  type ResolveIntersect<T extends TSchema[]> = (IsIntersectOptional<T> extends true ? TOptional<TIntersect<RemoveOptionalFromRest<T>>> : TIntersect<RemoveOptionalFromRest<T>>);
13
13
  declare function ResolveIntersect<T extends TSchema[]>(T: [...T], options: SchemaOptions): ResolveIntersect<T>;
14
14
  export type IntersectEvaluated<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : ResolveIntersect<T>);
15
+ /** `[Json]` Creates an evaluated Intersect type */
15
16
  export declare function IntersectEvaluated<T extends TSchema[], R = IntersectEvaluated<T>>(T: [...T], options?: IntersectOptions): R;
16
17
  export {};
@@ -4,7 +4,12 @@ import { Discard } from '../discard/index.mjs';
4
4
  import { Never } from '../never/index.mjs';
5
5
  import { Optional } from '../optional/index.mjs';
6
6
  import { IntersectCreate } from './intersect-create.mjs';
7
+ // ------------------------------------------------------------------
8
+ // TypeGuard
9
+ // ------------------------------------------------------------------
10
+ // prettier-ignore
7
11
  import { TOptional as IsOptionalType, TTransform as IsTransformType, } from '../guard/type.mjs';
12
+ // prettier-ignore
8
13
  function IsIntersectOptional(T) {
9
14
  const [L, ...R] = T;
10
15
  return (T.length > 0
@@ -13,17 +18,21 @@ function IsIntersectOptional(T) {
13
18
  : false
14
19
  : true);
15
20
  }
21
+ // prettier-ignore
16
22
  function RemoveOptionalFromRest(T) {
17
23
  return (T.map(T => RemoveOptionalFromType(T)));
18
24
  }
25
+ // prettier-ignore
19
26
  function RemoveOptionalFromType(T) {
20
27
  return (Discard(T, [OptionalKind]));
21
28
  }
29
+ // prettier-ignore
22
30
  function ResolveIntersect(T, options) {
23
31
  return (IsIntersectOptional(T)
24
32
  ? Optional(IntersectCreate(RemoveOptionalFromRest(T), options))
25
33
  : IntersectCreate(RemoveOptionalFromRest(T), options));
26
34
  }
35
+ /** `[Json]` Creates an evaluated Intersect type */
27
36
  export function IntersectEvaluated(T, options = {}) {
28
37
  if (T.length === 0)
29
38
  return Never(options);
@@ -2,4 +2,5 @@ import type { TSchema } from '../schema/index.mjs';
2
2
  import { type TNever } from '../never/index.mjs';
3
3
  import { TIntersect, IntersectOptions } from './intersect-type.mjs';
4
4
  export type Intersect<T extends TSchema[]> = (T extends [] ? TNever : T extends [TSchema] ? T[0] : TIntersect<T>);
5
+ /** `[Json]` Creates an evaluated Intersect type */
5
6
  export declare function Intersect<T extends TSchema[]>(T: [...T], options?: IntersectOptions): Intersect<T>;
@@ -1,7 +1,12 @@
1
1
  import { CloneType } from '../clone/type.mjs';
2
2
  import { Never } from '../never/index.mjs';
3
3
  import { IntersectCreate } from './intersect-create.mjs';
4
+ // ------------------------------------------------------------------
5
+ // TypeGuard
6
+ // ------------------------------------------------------------------
7
+ // prettier-ignore
4
8
  import { TTransform as IsTransformType, } from '../guard/type.mjs';
9
+ /** `[Json]` Creates an evaluated Intersect type */
5
10
  export function Intersect(T, options = {}) {
6
11
  if (T.length === 0)
7
12
  return Never(options);
@@ -1,4 +1,5 @@
1
1
  import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import { TIntrinsic } from './intrinsic.mjs';
3
3
  export type TCapitalize<T extends TSchema> = TIntrinsic<T, 'Capitalize'>;
4
+ /** `[Json]` Intrinsic function to Capitalize LiteralString types */
4
5
  export declare function Capitalize<T extends TSchema>(T: T, options?: SchemaOptions): TCapitalize<T>;
@@ -1,4 +1,5 @@
1
1
  import { Intrinsic } from './intrinsic.mjs';
2
+ /** `[Json]` Intrinsic function to Capitalize LiteralString types */
2
3
  export function Capitalize(T, options = {}) {
3
4
  return Intrinsic(T, 'Capitalize', options);
4
5
  }
@@ -1,20 +1,24 @@
1
1
  import { MappedResult } from '../mapped/index.mjs';
2
2
  import { Intrinsic } from './intrinsic.mjs';
3
3
  import { Literal } from '../literal/index.mjs';
4
+ // prettier-ignore
4
5
  function MappedIntrinsicPropertyKey(K, M, options) {
5
6
  return {
6
7
  [K]: Intrinsic(Literal(K), M, options)
7
8
  };
8
9
  }
10
+ // prettier-ignore
9
11
  function MappedIntrinsicPropertyKeys(K, M, options) {
10
12
  const [L, ...R] = K;
11
13
  return (K.length > 0
12
14
  ? { ...MappedIntrinsicPropertyKey(L, M, options), ...MappedIntrinsicPropertyKeys(R, M, options) }
13
15
  : {});
14
16
  }
17
+ // prettier-ignore
15
18
  function MappedIntrinsicProperties(T, M, options) {
16
19
  return MappedIntrinsicPropertyKeys(T['keys'], M, options);
17
20
  }
21
+ // prettier-ignore
18
22
  export function IntrinsicFromMappedKey(T, M, options) {
19
23
  const P = MappedIntrinsicProperties(T, M, options);
20
24
  return MappedResult(P);
@@ -12,6 +12,8 @@ declare function FromLiteralValue(value: TLiteralValue, mode: IntrinsicMode): st
12
12
  type FromRest<T extends TSchema[], M extends IntrinsicMode> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? [TIntrinsic<L, M>, ...FromRest<R, M>] : [];
13
13
  declare function FromRest<T extends TSchema[], M extends IntrinsicMode>(T: [...T], mode: M): FromRest<T, M>;
14
14
  export type TIntrinsic<T extends TSchema, M extends IntrinsicMode> = T extends TMappedKey ? TIntrinsicFromMappedKey<T, M> : T extends TTemplateLiteral<infer S> ? TTemplateLiteral<FromTemplateLiteral<S, M>> : T extends TUnion<infer S> ? TUnion<FromRest<S, M>> : T extends TLiteral<infer S> ? TLiteral<FromLiteralValue<S, M>> : T;
15
+ /** Applies an intrinsic string manipulation to the given type. */
15
16
  export declare function Intrinsic<T extends TMappedKey, M extends IntrinsicMode>(schema: T, mode: M, options?: SchemaOptions): TIntrinsicFromMappedKey<T, M>;
17
+ /** Applies an intrinsic string manipulation to the given type. */
16
18
  export declare function Intrinsic<T extends TSchema, M extends IntrinsicMode>(schema: T, mode: M, options?: SchemaOptions): TIntrinsic<T, M>;
17
19
  export {};
@@ -2,7 +2,14 @@ import { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralFinite, Te
2
2
  import { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';
3
3
  import { Literal } from '../literal/index.mjs';
4
4
  import { Union } from '../union/index.mjs';
5
+ // ------------------------------------------------------------------
6
+ // TypeGuard
7
+ // ------------------------------------------------------------------
8
+ // prettier-ignore
5
9
  import { TMappedKey as IsMappedKeyType, TTemplateLiteral as IsTemplateLiteralType, TUnion as IsUnionType, TLiteral as IsLiteralType } from '../guard/type.mjs';
10
+ // ------------------------------------------------------------------
11
+ // Apply
12
+ // ------------------------------------------------------------------
6
13
  function ApplyUncapitalize(value) {
7
14
  const [first, rest] = [value.slice(0, 1), value.slice(1)];
8
15
  return [first.toLowerCase(), rest].join('');
@@ -18,6 +25,8 @@ function ApplyLowercase(value) {
18
25
  return value.toLowerCase();
19
26
  }
20
27
  function FromTemplateLiteral(schema, mode, options) {
28
+ // note: template literals require special runtime handling as they are encoded in string patterns.
29
+ // This diverges from the mapped type which would otherwise map on the template literal kind.
21
30
  const expression = TemplateLiteralParseExact(schema.pattern);
22
31
  const finite = IsTemplateLiteralFinite(expression);
23
32
  if (!finite)
@@ -28,6 +37,7 @@ function FromTemplateLiteral(schema, mode, options) {
28
37
  const union = Union(mapped);
29
38
  return TemplateLiteral([union], options);
30
39
  }
40
+ // prettier-ignore
31
41
  function FromLiteralValue(value, mode) {
32
42
  return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :
33
43
  mode === 'Capitalize' ? ApplyCapitalize(value) :
@@ -39,8 +49,13 @@ function FromRest(T, mode) {
39
49
  const [L, ...R] = T;
40
50
  return (T.length > 0 ? [Intrinsic(L, mode), ...FromRest(R, mode)] : []);
41
51
  }
52
+ /** Applies an intrinsic string manipulation to the given type. */
42
53
  export function Intrinsic(schema, mode, options = {}) {
43
- return (IsMappedKeyType(schema) ? IntrinsicFromMappedKey(schema, mode, options) :
54
+ // prettier-ignore
55
+ return (
56
+ // Intrinsic-Mapped-Inference
57
+ IsMappedKeyType(schema) ? IntrinsicFromMappedKey(schema, mode, options) :
58
+ // Standard-Inference
44
59
  IsTemplateLiteralType(schema) ? FromTemplateLiteral(schema, mode, schema) :
45
60
  IsUnionType(schema) ? Union(FromRest(schema.anyOf, mode), options) :
46
61
  IsLiteralType(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :
@@ -1,4 +1,5 @@
1
1
  import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import { TIntrinsic } from './intrinsic.mjs';
3
3
  export type TLowercase<T extends TSchema> = TIntrinsic<T, 'Lowercase'>;
4
+ /** `[Json]` Intrinsic function to Lowercase LiteralString types */
4
5
  export declare function Lowercase<T extends TSchema>(T: T, options?: SchemaOptions): TLowercase<T>;
@@ -1,4 +1,5 @@
1
1
  import { Intrinsic } from './intrinsic.mjs';
2
+ /** `[Json]` Intrinsic function to Lowercase LiteralString types */
2
3
  export function Lowercase(T, options = {}) {
3
4
  return Intrinsic(T, 'Lowercase', options);
4
5
  }
@@ -1,4 +1,5 @@
1
1
  import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import { TIntrinsic } from './intrinsic.mjs';
3
3
  export type TUncapitalize<T extends TSchema> = TIntrinsic<T, 'Uncapitalize'>;
4
+ /** `[Json]` Intrinsic function to Uncapitalize LiteralString types */
4
5
  export declare function Uncapitalize<T extends TSchema>(T: T, options?: SchemaOptions): TUncapitalize<T>;
@@ -1,4 +1,5 @@
1
1
  import { Intrinsic } from './intrinsic.mjs';
2
+ /** `[Json]` Intrinsic function to Uncapitalize LiteralString types */
2
3
  export function Uncapitalize(T, options = {}) {
3
4
  return Intrinsic(T, 'Uncapitalize', options);
4
5
  }
@@ -1,4 +1,5 @@
1
1
  import { TSchema, SchemaOptions } from '../schema/index.mjs';
2
2
  import { TIntrinsic } from './intrinsic.mjs';
3
3
  export type TUppercase<T extends TSchema> = TIntrinsic<T, 'Uppercase'>;
4
+ /** `[Json]` Intrinsic function to Uppercase LiteralString types */
4
5
  export declare function Uppercase<T extends TSchema>(T: T, options?: SchemaOptions): TUppercase<T>;
@@ -1,4 +1,5 @@
1
1
  import { Intrinsic } from './intrinsic.mjs';
2
+ /** `[Json]` Intrinsic function to Uppercase LiteralString types */
2
3
  export function Uppercase(T, options = {}) {
3
4
  return Intrinsic(T, 'Uppercase', options);
4
5
  }
@@ -7,4 +7,5 @@ export interface TIterator<T extends TSchema = TSchema> extends TSchema {
7
7
  type: 'Iterator';
8
8
  items: T;
9
9
  }
10
+ /** `[JavaScript]` Creates an Iterator type */
10
11
  export declare function Iterator<T extends TSchema>(items: T, options?: SchemaOptions): TIterator<T>;
@@ -1,5 +1,6 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
2
  import { CloneType } from '../clone/type.mjs';
3
+ /** `[JavaScript]` Creates an Iterator type */
3
4
  export function Iterator(items, options = {}) {
4
5
  return {
5
6
  ...options,
@@ -1,13 +1,16 @@
1
1
  import { MappedResult } from '../mapped/index.mjs';
2
2
  import { KeyOf } from './keyof.mjs';
3
+ // prettier-ignore
3
4
  function FromProperties(K, options) {
4
5
  return globalThis.Object.getOwnPropertyNames(K).reduce((Acc, K2) => {
5
6
  return { ...Acc, [K2]: KeyOf(K[K2], options) };
6
7
  }, {});
7
8
  }
9
+ // prettier-ignore
8
10
  function FromMappedResult(K, options) {
9
11
  return FromProperties(K.properties, options);
10
12
  }
13
+ // prettier-ignore
11
14
  export function KeyOfFromMappedResult(T, options) {
12
15
  const P = FromMappedResult(T, options);
13
16
  return MappedResult(P);
@@ -23,6 +23,8 @@ type FromProperties<T extends TProperties> = (UnionToTuple<keyof T>);
23
23
  declare function FromProperties<T extends TProperties>(T: T): FromProperties<T>;
24
24
  export type KeyOfPropertyKeys<T extends TSchema> = (T extends TRecursive<infer S> ? KeyOfPropertyKeys<S> : T extends TIntersect<infer S> ? FromIntersect<S> : T extends TUnion<infer S> ? FromUnion<S> : T extends TTuple<infer S> ? FromTuple<S> : T extends TArray<infer S> ? FromArray<S> : T extends TObject<infer S> ? FromProperties<S> : [
25
25
  ]);
26
+ /** Returns a tuple of PropertyKeys derived from the given TSchema. */
26
27
  export declare function KeyOfPropertyKeys<T extends TSchema>(T: T): KeyOfPropertyKeys<T>;
28
+ /** Returns a regular expression pattern derived from the given TSchema */
27
29
  export declare function KeyOfPattern(schema: TSchema): string;
28
30
  export {};
@@ -1,31 +1,45 @@
1
1
  import { Increment } from '../helpers/index.mjs';
2
2
  import { OperatorUnionMany, OperatorIntersectMany } from '../operators/index.mjs';
3
+ // ------------------------------------------------------------------
4
+ // TypeGuard
5
+ // ------------------------------------------------------------------
6
+ // prettier-ignore
3
7
  import { TIntersect as IsIntersectType, TUnion as IsUnionType, TTuple as IsTupleType, TArray as IsArrayType, TObject as IsObjectType, TRecord as IsRecordType } from '../guard/type.mjs';
8
+ // prettier-ignore
4
9
  function FromRest(T) {
5
10
  const [L, ...R] = T;
6
11
  return (T.length > 0
7
12
  ? [KeyOfPropertyKeys(L), ...FromRest(R)]
8
13
  : []);
9
14
  }
15
+ // prettier-ignore
10
16
  function FromIntersect(T, C = FromRest(T)) {
11
17
  return OperatorUnionMany(C);
12
18
  }
19
+ // prettier-ignore
13
20
  function FromUnion(T) {
14
21
  const C = FromRest(T);
15
22
  return OperatorIntersectMany(C);
16
23
  }
24
+ // prettier-ignore
17
25
  function FromTuple(T, I = '0') {
18
26
  const [_, ...R] = T;
19
27
  return (T.length > 0
20
28
  ? [I, ...FromTuple(R, Increment(I))]
21
29
  : []);
22
30
  }
31
+ // prettier-ignore
23
32
  function FromArray(_) {
24
33
  return (['[number]']);
25
34
  }
35
+ // prettier-ignore
26
36
  function FromProperties(T) {
27
37
  return (globalThis.Object.getOwnPropertyNames(T));
28
38
  }
39
+ // ------------------------------------------------------------------
40
+ // FromPatternProperties
41
+ // ------------------------------------------------------------------
42
+ // prettier-ignore
29
43
  function FromPatternProperties(patternProperties) {
30
44
  if (!includePatternProperties)
31
45
  return [];
@@ -36,6 +50,8 @@ function FromPatternProperties(patternProperties) {
36
50
  : key;
37
51
  });
38
52
  }
53
+ /** Returns a tuple of PropertyKeys derived from the given TSchema. */
54
+ // prettier-ignore
39
55
  export function KeyOfPropertyKeys(T) {
40
56
  return (IsIntersectType(T) ? FromIntersect(T.allOf) :
41
57
  IsUnionType(T) ? FromUnion(T.anyOf) :
@@ -45,7 +61,11 @@ export function KeyOfPropertyKeys(T) {
45
61
  IsRecordType(T) ? FromPatternProperties(T.patternProperties) :
46
62
  []);
47
63
  }
64
+ // ----------------------------------------------------------------
65
+ // KeyOfPattern
66
+ // ----------------------------------------------------------------
48
67
  let includePatternProperties = false;
68
+ /** Returns a regular expression pattern derived from the given TSchema */
49
69
  export function KeyOfPattern(schema) {
50
70
  includePatternProperties = true;
51
71
  const keys = KeyOfPropertyKeys(schema);
@@ -10,6 +10,8 @@ import { type TKeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';
10
10
  type FromLiterals<T extends TLiteralValue[]> = (T extends [infer L extends TLiteralValue, ...infer R extends TLiteralValue[]] ? L extends '[number]' ? [TNumber, ...FromLiterals<R>] : [TLiteral<L>, ...FromLiterals<R>] : []);
11
11
  declare function FromLiterals<T extends TLiteralValue[]>(T: [...T]): FromLiterals<T>;
12
12
  export type TKeyOf<T extends TSchema> = (Ensure<UnionEvaluated<FromLiterals<KeyOfPropertyKeys<T>>>>);
13
+ /** `[Json]` Creates a KeyOf type */
13
14
  export declare function KeyOf<T extends TMappedResult>(T: T, options?: SchemaOptions): TKeyOfFromMappedResult<T>;
15
+ /** `[Json]` Creates a KeyOf type */
14
16
  export declare function KeyOf<T extends TSchema>(T: T, options?: SchemaOptions): TKeyOf<T>;
15
17
  export {};
@@ -4,7 +4,12 @@ import { KeyOfPropertyKeys } from './keyof-property-keys.mjs';
4
4
  import { UnionEvaluated } from '../union/index.mjs';
5
5
  import { CloneType } from '../clone/type.mjs';
6
6
  import { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';
7
+ // ------------------------------------------------------------------
8
+ // TypeGuard
9
+ // ------------------------------------------------------------------
10
+ // prettier-ignore
7
11
  import { TMappedResult as IsMappedResultType } from '../guard/type.mjs';
12
+ // prettier-ignore
8
13
  function FromLiterals(T) {
9
14
  const [L, ...R] = T;
10
15
  return (T.length > 0
@@ -13,6 +18,7 @@ function FromLiterals(T) {
13
18
  : [Literal(L), ...FromLiterals(R)]
14
19
  : []);
15
20
  }
21
+ /** `[Json]` Creates a KeyOf type */
16
22
  export function KeyOf(T, options = {}) {
17
23
  if (IsMappedResultType(T)) {
18
24
  return KeyOfFromMappedResult(T, options);
@@ -6,4 +6,5 @@ export interface TLiteral<T extends TLiteralValue = TLiteralValue> extends TSche
6
6
  static: T;
7
7
  const: T;
8
8
  }
9
+ /** `[Json]` Creates a Literal type */
9
10
  export declare function Literal<T extends TLiteralValue>(value: T, options?: SchemaOptions): TLiteral<T>;
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ /** `[Json]` Creates a Literal type */
2
3
  export function Literal(value, options = {}) {
3
4
  return {
4
5
  ...options,
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ // prettier-ignore
2
3
  export function MappedKey(T) {
3
4
  return {
4
5
  [Kind]: 'MappedKey',
@@ -1,4 +1,5 @@
1
1
  import { Kind } from '../symbols/index.mjs';
2
+ // prettier-ignore
2
3
  export function MappedResult(properties) {
3
4
  return {
4
5
  [Kind]: 'MappedResult',
@@ -38,6 +38,8 @@ type FromMappedFunctionReturnType<K extends PropertyKey[], T extends TSchema> =
38
38
  declare function FromMappedFunctionReturnType<K extends PropertyKey[], T extends TSchema>(K: [...K], T: T): FromMappedFunctionReturnType<K, T>;
39
39
  export type TMappedFunction<K extends PropertyKey[], I = TMappedKey<K>> = (T: I) => TSchema;
40
40
  export type TMapped<K extends PropertyKey[], F extends TMappedFunction<K>, R extends TProperties = Evaluate<FromMappedFunctionReturnType<K, ReturnType<F>>>> = Ensure<TObject<R>>;
41
+ /** `[Json]` Creates a Mapped object type */
41
42
  export declare function Mapped<K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>, F extends TMappedFunction<I> = TMappedFunction<I>, R extends TMapped<I, F> = TMapped<I, F>>(key: K, map: F, options?: ObjectOptions): R;
43
+ /** `[Json]` Creates a Mapped object type */
42
44
  export declare function Mapped<K extends PropertyKey[], F extends TMappedFunction<K> = TMappedFunction<K>, R extends TMapped<K, F> = TMapped<K, F>>(key: [...K], map: F, options?: ObjectOptions): R;
43
45
  export {};