@sinclair/typebox 0.31.27 → 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 +188 -160
  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 -42
  411. package/value/transform.js +0 -517
  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,654 @@
1
+ "use strict";
2
+ /*--------------------------------------------------------------------------
3
+
4
+ @sinclair/typebox/type
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.ExtendsCheck = exports.ExtendsResult = exports.ExtendsResolverError = void 0;
31
+ const index_1 = require("../any/index");
32
+ const index_2 = require("../function/index");
33
+ const index_3 = require("../number/index");
34
+ const index_4 = require("../string/index");
35
+ const index_5 = require("../unknown/index");
36
+ const index_6 = require("../template-literal/index");
37
+ const index_7 = require("../patterns/index");
38
+ const index_8 = require("../symbols/index");
39
+ const index_9 = require("../guard/index");
40
+ class ExtendsResolverError extends Error {
41
+ }
42
+ exports.ExtendsResolverError = ExtendsResolverError;
43
+ var ExtendsResult;
44
+ (function (ExtendsResult) {
45
+ ExtendsResult[ExtendsResult["Union"] = 0] = "Union";
46
+ ExtendsResult[ExtendsResult["True"] = 1] = "True";
47
+ ExtendsResult[ExtendsResult["False"] = 2] = "False";
48
+ })(ExtendsResult || (exports.ExtendsResult = ExtendsResult = {}));
49
+ // ------------------------------------------------------------------
50
+ // IntoBooleanResult
51
+ // ------------------------------------------------------------------
52
+ // prettier-ignore
53
+ function IntoBooleanResult(result) {
54
+ return result === ExtendsResult.False ? result : ExtendsResult.True;
55
+ }
56
+ // ------------------------------------------------------------------
57
+ // Throw
58
+ // ------------------------------------------------------------------
59
+ // prettier-ignore
60
+ function Throw(message) {
61
+ throw new ExtendsResolverError(message);
62
+ }
63
+ // ------------------------------------------------------------------
64
+ // StructuralRight
65
+ // ------------------------------------------------------------------
66
+ // prettier-ignore
67
+ function IsStructuralRight(right) {
68
+ return (index_9.TypeGuard.TNever(right) ||
69
+ index_9.TypeGuard.TIntersect(right) ||
70
+ index_9.TypeGuard.TUnion(right) ||
71
+ index_9.TypeGuard.TUnknown(right) ||
72
+ index_9.TypeGuard.TAny(right));
73
+ }
74
+ // prettier-ignore
75
+ function StructuralRight(left, right) {
76
+ return (index_9.TypeGuard.TNever(right) ? TNeverRight(left, right) :
77
+ index_9.TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
78
+ index_9.TypeGuard.TUnion(right) ? TUnionRight(left, right) :
79
+ index_9.TypeGuard.TUnknown(right) ? TUnknownRight(left, right) :
80
+ index_9.TypeGuard.TAny(right) ? TAnyRight(left, right) :
81
+ Throw('StructuralRight'));
82
+ }
83
+ // ------------------------------------------------------------------
84
+ // Any
85
+ // ------------------------------------------------------------------
86
+ // prettier-ignore
87
+ function TAnyRight(left, right) {
88
+ return ExtendsResult.True;
89
+ }
90
+ // prettier-ignore
91
+ function TAny(left, right) {
92
+ return (index_9.TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
93
+ (index_9.TypeGuard.TUnion(right) && right.anyOf.some((schema) => index_9.TypeGuard.TAny(schema) || index_9.TypeGuard.TUnknown(schema))) ? ExtendsResult.True :
94
+ index_9.TypeGuard.TUnion(right) ? ExtendsResult.Union :
95
+ index_9.TypeGuard.TUnknown(right) ? ExtendsResult.True :
96
+ index_9.TypeGuard.TAny(right) ? ExtendsResult.True :
97
+ ExtendsResult.Union);
98
+ }
99
+ // ------------------------------------------------------------------
100
+ // Array
101
+ // ------------------------------------------------------------------
102
+ // prettier-ignore
103
+ function TArrayRight(left, right) {
104
+ return (index_9.TypeGuard.TUnknown(left) ? ExtendsResult.False :
105
+ index_9.TypeGuard.TAny(left) ? ExtendsResult.Union :
106
+ index_9.TypeGuard.TNever(left) ? ExtendsResult.True :
107
+ ExtendsResult.False);
108
+ }
109
+ // prettier-ignore
110
+ function TArray(left, right) {
111
+ return (index_9.TypeGuard.TObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :
112
+ IsStructuralRight(right) ? StructuralRight(left, right) :
113
+ !index_9.TypeGuard.TArray(right) ? ExtendsResult.False :
114
+ IntoBooleanResult(Visit(left.items, right.items)));
115
+ }
116
+ // ------------------------------------------------------------------
117
+ // AsyncIterator
118
+ // ------------------------------------------------------------------
119
+ // prettier-ignore
120
+ function TAsyncIterator(left, right) {
121
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
122
+ !index_9.TypeGuard.TAsyncIterator(right) ? ExtendsResult.False :
123
+ IntoBooleanResult(Visit(left.items, right.items)));
124
+ }
125
+ // ------------------------------------------------------------------
126
+ // BigInt
127
+ // ------------------------------------------------------------------
128
+ // prettier-ignore
129
+ function TBigInt(left, right) {
130
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
131
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
132
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
133
+ index_9.TypeGuard.TBigInt(right) ? ExtendsResult.True :
134
+ ExtendsResult.False);
135
+ }
136
+ // ------------------------------------------------------------------
137
+ // Boolean
138
+ // ------------------------------------------------------------------
139
+ // prettier-ignore
140
+ function TBooleanRight(left, right) {
141
+ return (index_9.TypeGuard.TLiteralBoolean(left) ? ExtendsResult.True :
142
+ index_9.TypeGuard.TBoolean(left) ? ExtendsResult.True :
143
+ ExtendsResult.False);
144
+ }
145
+ // prettier-ignore
146
+ function TBoolean(left, right) {
147
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
148
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
149
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
150
+ index_9.TypeGuard.TBoolean(right) ? ExtendsResult.True :
151
+ ExtendsResult.False);
152
+ }
153
+ // ------------------------------------------------------------------
154
+ // Constructor
155
+ // ------------------------------------------------------------------
156
+ // prettier-ignore
157
+ function TConstructor(left, right) {
158
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
159
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
160
+ !index_9.TypeGuard.TConstructor(right) ? ExtendsResult.False :
161
+ left.parameters.length > right.parameters.length ? ExtendsResult.False :
162
+ (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :
163
+ IntoBooleanResult(Visit(left.returns, right.returns)));
164
+ }
165
+ // ------------------------------------------------------------------
166
+ // Date
167
+ // ------------------------------------------------------------------
168
+ // prettier-ignore
169
+ function TDate(left, right) {
170
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
171
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
172
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
173
+ index_9.TypeGuard.TDate(right) ? ExtendsResult.True :
174
+ ExtendsResult.False);
175
+ }
176
+ // ------------------------------------------------------------------
177
+ // Function
178
+ // ------------------------------------------------------------------
179
+ // prettier-ignore
180
+ function TFunction(left, right) {
181
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
182
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
183
+ !index_9.TypeGuard.TFunction(right) ? ExtendsResult.False :
184
+ left.parameters.length > right.parameters.length ? ExtendsResult.False :
185
+ (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :
186
+ IntoBooleanResult(Visit(left.returns, right.returns)));
187
+ }
188
+ // ------------------------------------------------------------------
189
+ // Integer
190
+ // ------------------------------------------------------------------
191
+ // prettier-ignore
192
+ function TIntegerRight(left, right) {
193
+ return (index_9.TypeGuard.TLiteral(left) && index_9.ValueGuard.IsNumber(left.const) ? ExtendsResult.True :
194
+ index_9.TypeGuard.TNumber(left) || index_9.TypeGuard.TInteger(left) ? ExtendsResult.True :
195
+ ExtendsResult.False);
196
+ }
197
+ // prettier-ignore
198
+ function TInteger(left, right) {
199
+ return (index_9.TypeGuard.TInteger(right) || index_9.TypeGuard.TNumber(right) ? ExtendsResult.True :
200
+ IsStructuralRight(right) ? StructuralRight(left, right) :
201
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
202
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
203
+ ExtendsResult.False);
204
+ }
205
+ // ------------------------------------------------------------------
206
+ // Intersect
207
+ // ------------------------------------------------------------------
208
+ // prettier-ignore
209
+ function TIntersectRight(left, right) {
210
+ return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)
211
+ ? ExtendsResult.True
212
+ : ExtendsResult.False;
213
+ }
214
+ // prettier-ignore
215
+ function TIntersect(left, right) {
216
+ return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)
217
+ ? ExtendsResult.True
218
+ : ExtendsResult.False;
219
+ }
220
+ // ------------------------------------------------------------------
221
+ // Iterator
222
+ // ------------------------------------------------------------------
223
+ // prettier-ignore
224
+ function TIterator(left, right) {
225
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
226
+ !index_9.TypeGuard.TIterator(right) ? ExtendsResult.False :
227
+ IntoBooleanResult(Visit(left.items, right.items)));
228
+ }
229
+ // ------------------------------------------------------------------
230
+ // Literal
231
+ // ------------------------------------------------------------------
232
+ // prettier-ignore
233
+ function TLiteral(left, right) {
234
+ return (index_9.TypeGuard.TLiteral(right) && right.const === left.const ? ExtendsResult.True :
235
+ IsStructuralRight(right) ? StructuralRight(left, right) :
236
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
237
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
238
+ index_9.TypeGuard.TString(right) ? TStringRight(left, right) :
239
+ index_9.TypeGuard.TNumber(right) ? TNumberRight(left, right) :
240
+ index_9.TypeGuard.TInteger(right) ? TIntegerRight(left, right) :
241
+ index_9.TypeGuard.TBoolean(right) ? TBooleanRight(left, right) :
242
+ ExtendsResult.False);
243
+ }
244
+ // ------------------------------------------------------------------
245
+ // Never
246
+ // ------------------------------------------------------------------
247
+ // prettier-ignore
248
+ function TNeverRight(left, right) {
249
+ return ExtendsResult.False;
250
+ }
251
+ // prettier-ignore
252
+ function TNever(left, right) {
253
+ return ExtendsResult.True;
254
+ }
255
+ // ------------------------------------------------------------------
256
+ // Not
257
+ // ------------------------------------------------------------------
258
+ // prettier-ignore
259
+ function UnwrapTNot(schema) {
260
+ let [current, depth] = [schema, 0];
261
+ while (true) {
262
+ if (!index_9.TypeGuard.TNot(current))
263
+ break;
264
+ current = current.not;
265
+ depth += 1;
266
+ }
267
+ return depth % 2 === 0 ? current : (0, index_5.Unknown)();
268
+ }
269
+ // prettier-ignore
270
+ function TNot(left, right) {
271
+ // TypeScript has no concept of negated types, and attempts to correctly check the negated
272
+ // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer
273
+ // the type. Instead we unwrap to either unknown or T and continue evaluating.
274
+ // prettier-ignore
275
+ return (index_9.TypeGuard.TNot(left) ? Visit(UnwrapTNot(left), right) :
276
+ index_9.TypeGuard.TNot(right) ? Visit(left, UnwrapTNot(right)) :
277
+ Throw('Invalid fallthrough for Not'));
278
+ }
279
+ // ------------------------------------------------------------------
280
+ // Null
281
+ // ------------------------------------------------------------------
282
+ // prettier-ignore
283
+ function TNull(left, right) {
284
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
285
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
286
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
287
+ index_9.TypeGuard.TNull(right) ? ExtendsResult.True :
288
+ ExtendsResult.False);
289
+ }
290
+ // ------------------------------------------------------------------
291
+ // Number
292
+ // ------------------------------------------------------------------
293
+ // prettier-ignore
294
+ function TNumberRight(left, right) {
295
+ return (index_9.TypeGuard.TLiteralNumber(left) ? ExtendsResult.True :
296
+ index_9.TypeGuard.TNumber(left) || index_9.TypeGuard.TInteger(left) ? ExtendsResult.True :
297
+ ExtendsResult.False);
298
+ }
299
+ // prettier-ignore
300
+ function TNumber(left, right) {
301
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
302
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
303
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
304
+ index_9.TypeGuard.TInteger(right) || index_9.TypeGuard.TNumber(right) ? ExtendsResult.True :
305
+ ExtendsResult.False);
306
+ }
307
+ // ------------------------------------------------------------------
308
+ // Object
309
+ // ------------------------------------------------------------------
310
+ // prettier-ignore
311
+ function IsObjectPropertyCount(schema, count) {
312
+ return Object.getOwnPropertyNames(schema.properties).length === count;
313
+ }
314
+ // prettier-ignore
315
+ function IsObjectStringLike(schema) {
316
+ return IsObjectArrayLike(schema);
317
+ }
318
+ // prettier-ignore
319
+ function IsObjectSymbolLike(schema) {
320
+ return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && index_9.TypeGuard.TUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((index_9.TypeGuard.TString(schema.properties.description.anyOf[0]) &&
321
+ index_9.TypeGuard.TUndefined(schema.properties.description.anyOf[1])) || (index_9.TypeGuard.TString(schema.properties.description.anyOf[1]) &&
322
+ index_9.TypeGuard.TUndefined(schema.properties.description.anyOf[0]))));
323
+ }
324
+ // prettier-ignore
325
+ function IsObjectNumberLike(schema) {
326
+ return IsObjectPropertyCount(schema, 0);
327
+ }
328
+ // prettier-ignore
329
+ function IsObjectBooleanLike(schema) {
330
+ return IsObjectPropertyCount(schema, 0);
331
+ }
332
+ // prettier-ignore
333
+ function IsObjectBigIntLike(schema) {
334
+ return IsObjectPropertyCount(schema, 0);
335
+ }
336
+ // prettier-ignore
337
+ function IsObjectDateLike(schema) {
338
+ return IsObjectPropertyCount(schema, 0);
339
+ }
340
+ // prettier-ignore
341
+ function IsObjectUint8ArrayLike(schema) {
342
+ return IsObjectArrayLike(schema);
343
+ }
344
+ // prettier-ignore
345
+ function IsObjectFunctionLike(schema) {
346
+ const length = (0, index_3.Number)();
347
+ return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);
348
+ }
349
+ // prettier-ignore
350
+ function IsObjectConstructorLike(schema) {
351
+ return IsObjectPropertyCount(schema, 0);
352
+ }
353
+ // prettier-ignore
354
+ function IsObjectArrayLike(schema) {
355
+ const length = (0, index_3.Number)();
356
+ return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);
357
+ }
358
+ // prettier-ignore
359
+ function IsObjectPromiseLike(schema) {
360
+ const then = (0, index_2.Function)([(0, index_1.Any)()], (0, index_1.Any)());
361
+ return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);
362
+ }
363
+ // ------------------------------------------------------------------
364
+ // Property
365
+ // ------------------------------------------------------------------
366
+ // prettier-ignore
367
+ function Property(left, right) {
368
+ return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :
369
+ index_9.TypeGuard.TOptional(left) && !index_9.TypeGuard.TOptional(right) ? ExtendsResult.False :
370
+ ExtendsResult.True);
371
+ }
372
+ // prettier-ignore
373
+ function TObjectRight(left, right) {
374
+ return (index_9.TypeGuard.TUnknown(left) ? ExtendsResult.False :
375
+ index_9.TypeGuard.TAny(left) ? ExtendsResult.Union : (index_9.TypeGuard.TNever(left) ||
376
+ (index_9.TypeGuard.TLiteralString(left) && IsObjectStringLike(right)) ||
377
+ (index_9.TypeGuard.TLiteralNumber(left) && IsObjectNumberLike(right)) ||
378
+ (index_9.TypeGuard.TLiteralBoolean(left) && IsObjectBooleanLike(right)) ||
379
+ (index_9.TypeGuard.TSymbol(left) && IsObjectSymbolLike(right)) ||
380
+ (index_9.TypeGuard.TBigInt(left) && IsObjectBigIntLike(right)) ||
381
+ (index_9.TypeGuard.TString(left) && IsObjectStringLike(right)) ||
382
+ (index_9.TypeGuard.TSymbol(left) && IsObjectSymbolLike(right)) ||
383
+ (index_9.TypeGuard.TNumber(left) && IsObjectNumberLike(right)) ||
384
+ (index_9.TypeGuard.TInteger(left) && IsObjectNumberLike(right)) ||
385
+ (index_9.TypeGuard.TBoolean(left) && IsObjectBooleanLike(right)) ||
386
+ (index_9.TypeGuard.TUint8Array(left) && IsObjectUint8ArrayLike(right)) ||
387
+ (index_9.TypeGuard.TDate(left) && IsObjectDateLike(right)) ||
388
+ (index_9.TypeGuard.TConstructor(left) && IsObjectConstructorLike(right)) ||
389
+ (index_9.TypeGuard.TFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :
390
+ (index_9.TypeGuard.TRecord(left) && index_9.TypeGuard.TString(RecordKey(left))) ? (() => {
391
+ // When expressing a Record with literal key values, the Record is converted into a Object with
392
+ // the Hint assigned as `Record`. This is used to invert the extends logic.
393
+ return right[index_8.Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;
394
+ })() :
395
+ (index_9.TypeGuard.TRecord(left) && index_9.TypeGuard.TNumber(RecordKey(left))) ? (() => {
396
+ return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;
397
+ })() :
398
+ ExtendsResult.False);
399
+ }
400
+ // prettier-ignore
401
+ function TObject(left, right) {
402
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
403
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
404
+ !index_9.TypeGuard.TObject(right) ? ExtendsResult.False :
405
+ (() => {
406
+ for (const key of Object.getOwnPropertyNames(right.properties)) {
407
+ if (!(key in left.properties) && !index_9.TypeGuard.TOptional(right.properties[key])) {
408
+ return ExtendsResult.False;
409
+ }
410
+ if (index_9.TypeGuard.TOptional(right.properties[key])) {
411
+ return ExtendsResult.True;
412
+ }
413
+ if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {
414
+ return ExtendsResult.False;
415
+ }
416
+ }
417
+ return ExtendsResult.True;
418
+ })());
419
+ }
420
+ // ------------------------------------------------------------------
421
+ // Promise
422
+ // ------------------------------------------------------------------
423
+ // prettier-ignore
424
+ function TPromise(left, right) {
425
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
426
+ index_9.TypeGuard.TObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :
427
+ !index_9.TypeGuard.TPromise(right) ? ExtendsResult.False :
428
+ IntoBooleanResult(Visit(left.item, right.item)));
429
+ }
430
+ // ------------------------------------------------------------------
431
+ // Record
432
+ // ------------------------------------------------------------------
433
+ // prettier-ignore
434
+ function RecordKey(schema) {
435
+ return (index_7.PatternNumberExact in schema.patternProperties ? (0, index_3.Number)() :
436
+ index_7.PatternStringExact in schema.patternProperties ? (0, index_4.String)() :
437
+ Throw('Unknown record key pattern'));
438
+ }
439
+ // prettier-ignore
440
+ function RecordValue(schema) {
441
+ return (index_7.PatternNumberExact in schema.patternProperties ? schema.patternProperties[index_7.PatternNumberExact] :
442
+ index_7.PatternStringExact in schema.patternProperties ? schema.patternProperties[index_7.PatternStringExact] :
443
+ Throw('Unable to get record value schema'));
444
+ }
445
+ // prettier-ignore
446
+ function TRecordRight(left, right) {
447
+ const [Key, Value] = [RecordKey(right), RecordValue(right)];
448
+ return ((index_9.TypeGuard.TLiteralString(left) && index_9.TypeGuard.TNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :
449
+ index_9.TypeGuard.TUint8Array(left) && index_9.TypeGuard.TNumber(Key) ? Visit(left, Value) :
450
+ index_9.TypeGuard.TString(left) && index_9.TypeGuard.TNumber(Key) ? Visit(left, Value) :
451
+ index_9.TypeGuard.TArray(left) && index_9.TypeGuard.TNumber(Key) ? Visit(left, Value) :
452
+ index_9.TypeGuard.TObject(left) ? (() => {
453
+ for (const key of Object.getOwnPropertyNames(left.properties)) {
454
+ if (Property(Value, left.properties[key]) === ExtendsResult.False) {
455
+ return ExtendsResult.False;
456
+ }
457
+ }
458
+ return ExtendsResult.True;
459
+ })() :
460
+ ExtendsResult.False);
461
+ }
462
+ // prettier-ignore
463
+ function TRecord(left, right) {
464
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
465
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
466
+ !index_9.TypeGuard.TRecord(right) ? ExtendsResult.False :
467
+ Visit(RecordValue(left), RecordValue(right)));
468
+ }
469
+ // ------------------------------------------------------------------
470
+ // String
471
+ // ------------------------------------------------------------------
472
+ // prettier-ignore
473
+ function TStringRight(left, right) {
474
+ return (index_9.TypeGuard.TLiteral(left) && index_9.ValueGuard.IsString(left.const) ? ExtendsResult.True :
475
+ index_9.TypeGuard.TString(left) ? ExtendsResult.True :
476
+ ExtendsResult.False);
477
+ }
478
+ // prettier-ignore
479
+ function TString(left, right) {
480
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
481
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
482
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
483
+ index_9.TypeGuard.TString(right) ? ExtendsResult.True :
484
+ ExtendsResult.False);
485
+ }
486
+ // ------------------------------------------------------------------
487
+ // Symbol
488
+ // ------------------------------------------------------------------
489
+ // prettier-ignore
490
+ function TSymbol(left, right) {
491
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
492
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
493
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
494
+ index_9.TypeGuard.TSymbol(right) ? ExtendsResult.True :
495
+ ExtendsResult.False);
496
+ }
497
+ // ------------------------------------------------------------------
498
+ // TemplateLiteral
499
+ // ------------------------------------------------------------------
500
+ // prettier-ignore
501
+ function TTemplateLiteral(left, right) {
502
+ // TemplateLiteral types are resolved to either unions for finite expressions or string
503
+ // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for
504
+ // either type and continue evaluating.
505
+ return (index_9.TypeGuard.TTemplateLiteral(left) ? Visit((0, index_6.TemplateLiteralToUnion)(left), right) :
506
+ index_9.TypeGuard.TTemplateLiteral(right) ? Visit(left, (0, index_6.TemplateLiteralToUnion)(right)) :
507
+ Throw('Invalid fallthrough for TemplateLiteral'));
508
+ }
509
+ // ------------------------------------------------------------------
510
+ // Tuple
511
+ // ------------------------------------------------------------------
512
+ // prettier-ignore
513
+ function IsArrayOfTuple(left, right) {
514
+ return (index_9.TypeGuard.TArray(right) &&
515
+ left.items !== undefined &&
516
+ left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));
517
+ }
518
+ // prettier-ignore
519
+ function TTupleRight(left, right) {
520
+ return (index_9.TypeGuard.TNever(left) ? ExtendsResult.True :
521
+ index_9.TypeGuard.TUnknown(left) ? ExtendsResult.False :
522
+ index_9.TypeGuard.TAny(left) ? ExtendsResult.Union :
523
+ ExtendsResult.False);
524
+ }
525
+ // prettier-ignore
526
+ function TTuple(left, right) {
527
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
528
+ index_9.TypeGuard.TObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :
529
+ index_9.TypeGuard.TArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :
530
+ !index_9.TypeGuard.TTuple(right) ? ExtendsResult.False :
531
+ (index_9.ValueGuard.IsUndefined(left.items) && !index_9.ValueGuard.IsUndefined(right.items)) || (!index_9.ValueGuard.IsUndefined(left.items) && index_9.ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :
532
+ (index_9.ValueGuard.IsUndefined(left.items) && !index_9.ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :
533
+ left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :
534
+ ExtendsResult.False);
535
+ }
536
+ // ------------------------------------------------------------------
537
+ // Uint8Array
538
+ // ------------------------------------------------------------------
539
+ // prettier-ignore
540
+ function TUint8Array(left, right) {
541
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
542
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
543
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
544
+ index_9.TypeGuard.TUint8Array(right) ? ExtendsResult.True :
545
+ ExtendsResult.False);
546
+ }
547
+ // ------------------------------------------------------------------
548
+ // Undefined
549
+ // ------------------------------------------------------------------
550
+ // prettier-ignore
551
+ function TUndefined(left, right) {
552
+ return (IsStructuralRight(right) ? StructuralRight(left, right) :
553
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
554
+ index_9.TypeGuard.TRecord(right) ? TRecordRight(left, right) :
555
+ index_9.TypeGuard.TVoid(right) ? VoidRight(left, right) :
556
+ index_9.TypeGuard.TUndefined(right) ? ExtendsResult.True :
557
+ ExtendsResult.False);
558
+ }
559
+ // ------------------------------------------------------------------
560
+ // Union
561
+ // ------------------------------------------------------------------
562
+ // prettier-ignore
563
+ function TUnionRight(left, right) {
564
+ return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)
565
+ ? ExtendsResult.True
566
+ : ExtendsResult.False;
567
+ }
568
+ // prettier-ignore
569
+ function TUnion(left, right) {
570
+ return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)
571
+ ? ExtendsResult.True
572
+ : ExtendsResult.False;
573
+ }
574
+ // ------------------------------------------------------------------
575
+ // Unknown
576
+ // ------------------------------------------------------------------
577
+ // prettier-ignore
578
+ function TUnknownRight(left, right) {
579
+ return ExtendsResult.True;
580
+ }
581
+ // prettier-ignore
582
+ function TUnknown(left, right) {
583
+ return (index_9.TypeGuard.TNever(right) ? TNeverRight(left, right) :
584
+ index_9.TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
585
+ index_9.TypeGuard.TUnion(right) ? TUnionRight(left, right) :
586
+ index_9.TypeGuard.TAny(right) ? TAnyRight(left, right) :
587
+ index_9.TypeGuard.TString(right) ? TStringRight(left, right) :
588
+ index_9.TypeGuard.TNumber(right) ? TNumberRight(left, right) :
589
+ index_9.TypeGuard.TInteger(right) ? TIntegerRight(left, right) :
590
+ index_9.TypeGuard.TBoolean(right) ? TBooleanRight(left, right) :
591
+ index_9.TypeGuard.TArray(right) ? TArrayRight(left, right) :
592
+ index_9.TypeGuard.TTuple(right) ? TTupleRight(left, right) :
593
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
594
+ index_9.TypeGuard.TUnknown(right) ? ExtendsResult.True :
595
+ ExtendsResult.False);
596
+ }
597
+ // ------------------------------------------------------------------
598
+ // Void
599
+ // ------------------------------------------------------------------
600
+ // prettier-ignore
601
+ function VoidRight(left, right) {
602
+ return (index_9.TypeGuard.TUndefined(left) ? ExtendsResult.True :
603
+ index_9.TypeGuard.TUndefined(left) ? ExtendsResult.True :
604
+ ExtendsResult.False);
605
+ }
606
+ // prettier-ignore
607
+ function TVoid(left, right) {
608
+ return (index_9.TypeGuard.TIntersect(right) ? TIntersectRight(left, right) :
609
+ index_9.TypeGuard.TUnion(right) ? TUnionRight(left, right) :
610
+ index_9.TypeGuard.TUnknown(right) ? TUnknownRight(left, right) :
611
+ index_9.TypeGuard.TAny(right) ? TAnyRight(left, right) :
612
+ index_9.TypeGuard.TObject(right) ? TObjectRight(left, right) :
613
+ index_9.TypeGuard.TVoid(right) ? ExtendsResult.True :
614
+ ExtendsResult.False);
615
+ }
616
+ // prettier-ignore
617
+ function Visit(left, right) {
618
+ return (
619
+ // resolvable
620
+ (index_9.TypeGuard.TTemplateLiteral(left) || index_9.TypeGuard.TTemplateLiteral(right)) ? TTemplateLiteral(left, right) :
621
+ (index_9.TypeGuard.TNot(left) || index_9.TypeGuard.TNot(right)) ? TNot(left, right) :
622
+ // standard
623
+ index_9.TypeGuard.TAny(left) ? TAny(left, right) :
624
+ index_9.TypeGuard.TArray(left) ? TArray(left, right) :
625
+ index_9.TypeGuard.TBigInt(left) ? TBigInt(left, right) :
626
+ index_9.TypeGuard.TBoolean(left) ? TBoolean(left, right) :
627
+ index_9.TypeGuard.TAsyncIterator(left) ? TAsyncIterator(left, right) :
628
+ index_9.TypeGuard.TConstructor(left) ? TConstructor(left, right) :
629
+ index_9.TypeGuard.TDate(left) ? TDate(left, right) :
630
+ index_9.TypeGuard.TFunction(left) ? TFunction(left, right) :
631
+ index_9.TypeGuard.TInteger(left) ? TInteger(left, right) :
632
+ index_9.TypeGuard.TIntersect(left) ? TIntersect(left, right) :
633
+ index_9.TypeGuard.TIterator(left) ? TIterator(left, right) :
634
+ index_9.TypeGuard.TLiteral(left) ? TLiteral(left, right) :
635
+ index_9.TypeGuard.TNever(left) ? TNever(left, right) :
636
+ index_9.TypeGuard.TNull(left) ? TNull(left, right) :
637
+ index_9.TypeGuard.TNumber(left) ? TNumber(left, right) :
638
+ index_9.TypeGuard.TObject(left) ? TObject(left, right) :
639
+ index_9.TypeGuard.TRecord(left) ? TRecord(left, right) :
640
+ index_9.TypeGuard.TString(left) ? TString(left, right) :
641
+ index_9.TypeGuard.TSymbol(left) ? TSymbol(left, right) :
642
+ index_9.TypeGuard.TTuple(left) ? TTuple(left, right) :
643
+ index_9.TypeGuard.TPromise(left) ? TPromise(left, right) :
644
+ index_9.TypeGuard.TUint8Array(left) ? TUint8Array(left, right) :
645
+ index_9.TypeGuard.TUndefined(left) ? TUndefined(left, right) :
646
+ index_9.TypeGuard.TUnion(left) ? TUnion(left, right) :
647
+ index_9.TypeGuard.TUnknown(left) ? TUnknown(left, right) :
648
+ index_9.TypeGuard.TVoid(left) ? TVoid(left, right) :
649
+ Throw(`Unknown left type operand '${left[index_8.Kind]}'`));
650
+ }
651
+ function ExtendsCheck(left, right) {
652
+ return Visit(left, right);
653
+ }
654
+ exports.ExtendsCheck = ExtendsCheck;
@@ -0,0 +1,3 @@
1
+ import type { TSchema } from '../schema/index';
2
+ /** Fast undefined check used for properties of type undefined */
3
+ export declare function ExtendsUndefinedCheck(schema: TSchema): boolean;