lib0 0.2.111 → 0.2.112

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 (343) hide show
  1. package/array.d.ts +15 -15
  2. package/array.d.ts.map +1 -1
  3. package/array.test.d.ts.map +1 -1
  4. package/binary.d.ts.map +1 -1
  5. package/binary.test.d.ts.map +1 -1
  6. package/broadcastchannel.d.ts.map +1 -1
  7. package/broadcastchannel.test.d.ts.map +1 -1
  8. package/buffer.d.ts +6 -6
  9. package/buffer.d.ts.map +1 -1
  10. package/buffer.test.d.ts.map +1 -1
  11. package/cache.d.ts +3 -3
  12. package/cache.d.ts.map +1 -1
  13. package/cache.test.d.ts.map +1 -1
  14. package/component.d.ts +3 -3
  15. package/component.d.ts.map +1 -1
  16. package/component.js +1 -1
  17. package/conditions.d.ts.map +1 -1
  18. package/coverage/tmp/coverage-20054-1752683240888-0.json +1 -0
  19. package/coverage/tmp/{coverage-37931-1752527222567-0.json → coverage-20055-1752683207886-0.json} +1 -1
  20. package/crypto/aes-gcm.d.ts +2 -2
  21. package/crypto/aes-gcm.d.ts.map +1 -1
  22. package/crypto/common.d.ts.map +1 -1
  23. package/crypto/ecdsa.d.ts +1 -1
  24. package/crypto/ecdsa.d.ts.map +1 -1
  25. package/crypto/rsa-oaep.d.ts +1 -1
  26. package/crypto/rsa-oaep.d.ts.map +1 -1
  27. package/crypto.test.d.ts.map +1 -1
  28. package/decoding.d.ts +1 -1
  29. package/decoding.d.ts.map +1 -1
  30. package/diff/patience.d.ts.map +1 -1
  31. package/diff/patience.test.d.ts.map +1 -1
  32. package/diff.d.ts +2 -3
  33. package/diff.d.ts.map +1 -1
  34. package/diff.js +1 -3
  35. package/diff.test.d.ts.map +1 -1
  36. package/dist/aes-gcm.cjs +5 -5
  37. package/dist/{array-f5410bdd.cjs → array-78849c95.cjs} +2 -2
  38. package/dist/{array-f5410bdd.cjs.map → array-78849c95.cjs.map} +1 -1
  39. package/dist/array.cjs +2 -2
  40. package/dist/array.d.ts +15 -15
  41. package/dist/array.d.ts.map +1 -1
  42. package/dist/array.test.d.ts.map +1 -1
  43. package/dist/binary.d.ts.map +1 -1
  44. package/dist/binary.test.d.ts.map +1 -1
  45. package/dist/{broadcastchannel-7479dcb7.cjs → broadcastchannel-2c4b0a1c.cjs} +3 -3
  46. package/dist/{broadcastchannel-7479dcb7.cjs.map → broadcastchannel-2c4b0a1c.cjs.map} +1 -1
  47. package/dist/broadcastchannel.cjs +9 -9
  48. package/dist/broadcastchannel.d.ts.map +1 -1
  49. package/dist/broadcastchannel.test.d.ts.map +1 -1
  50. package/dist/{buffer-cba90761.cjs → buffer-a74f7330.cjs} +6 -6
  51. package/dist/{buffer-cba90761.cjs.map → buffer-a74f7330.cjs.map} +1 -1
  52. package/dist/buffer.cjs +8 -8
  53. package/dist/buffer.d.ts +6 -6
  54. package/dist/buffer.d.ts.map +1 -1
  55. package/dist/buffer.test.d.ts.map +1 -1
  56. package/dist/cache.cjs +3 -3
  57. package/dist/cache.d.ts +3 -3
  58. package/dist/cache.d.ts.map +1 -1
  59. package/dist/cache.test.d.ts.map +1 -1
  60. package/dist/component.cjs +6 -6
  61. package/dist/component.cjs.map +1 -1
  62. package/dist/component.d.ts +3 -3
  63. package/dist/component.d.ts.map +1 -1
  64. package/dist/conditions.d.ts.map +1 -1
  65. package/dist/crypto/aes-gcm.d.ts +2 -2
  66. package/dist/crypto/aes-gcm.d.ts.map +1 -1
  67. package/dist/crypto/common.d.ts.map +1 -1
  68. package/dist/crypto/ecdsa.d.ts +1 -1
  69. package/dist/crypto/ecdsa.d.ts.map +1 -1
  70. package/dist/crypto/rsa-oaep.d.ts +1 -1
  71. package/dist/crypto/rsa-oaep.d.ts.map +1 -1
  72. package/dist/crypto.test.d.ts.map +1 -1
  73. package/dist/{decoding-9732ddf2.cjs → decoding-2b136346.cjs} +3 -3
  74. package/dist/{decoding-9732ddf2.cjs.map → decoding-2b136346.cjs.map} +1 -1
  75. package/dist/decoding.cjs +5 -5
  76. package/dist/decoding.d.ts +1 -1
  77. package/dist/decoding.d.ts.map +1 -1
  78. package/dist/diff/patience.d.ts.map +1 -1
  79. package/dist/diff/patience.test.d.ts.map +1 -1
  80. package/dist/{diff-63d13d0f.cjs → diff-77c4cf8e.cjs} +3 -5
  81. package/dist/diff-77c4cf8e.cjs.map +1 -0
  82. package/dist/diff.cjs +4 -4
  83. package/dist/diff.d.ts +2 -3
  84. package/dist/diff.d.ts.map +1 -1
  85. package/dist/diff.test.d.ts.map +1 -1
  86. package/dist/dom.d.ts.map +1 -1
  87. package/dist/{encoding-62f41e96.cjs → encoding-1acb59c4.cjs} +3 -3
  88. package/dist/{encoding-62f41e96.cjs.map → encoding-1acb59c4.cjs.map} +1 -1
  89. package/dist/encoding.cjs +4 -4
  90. package/dist/encoding.d.ts +6 -6
  91. package/dist/encoding.d.ts.map +1 -1
  92. package/dist/encoding.test.d.ts.map +1 -1
  93. package/dist/{environment-2789c99d.cjs → environment-2de08e0e.cjs} +3 -3
  94. package/dist/{environment-2789c99d.cjs.map → environment-2de08e0e.cjs.map} +1 -1
  95. package/dist/environment.cjs +5 -5
  96. package/dist/eventloop.d.ts.map +1 -1
  97. package/dist/eventloop.test.d.ts.map +1 -1
  98. package/dist/{function-6c17de82.cjs → function-09b8292c.cjs} +2 -2
  99. package/dist/{function-6c17de82.cjs.map → function-09b8292c.cjs.map} +1 -1
  100. package/dist/function.cjs +3 -3
  101. package/dist/function.d.ts +8 -3
  102. package/dist/function.d.ts.map +1 -1
  103. package/dist/function.test.d.ts.map +1 -1
  104. package/dist/hash/rabin-gf2-polynomial.d.ts +3 -3
  105. package/dist/hash/rabin-gf2-polynomial.d.ts.map +1 -1
  106. package/dist/hash/rabin-uncached.d.ts +3 -3
  107. package/dist/hash/rabin-uncached.d.ts.map +1 -1
  108. package/dist/hash/rabin.d.ts +10 -10
  109. package/dist/hash/rabin.d.ts.map +1 -1
  110. package/dist/hash/rabin.test.d.ts.map +1 -1
  111. package/dist/hash/sha256.d.ts +1 -1
  112. package/dist/hash/sha256.d.ts.map +1 -1
  113. package/dist/hash/sha256.node.d.ts +1 -1
  114. package/dist/hash/sha256.node.d.ts.map +1 -1
  115. package/dist/hash/sha256.test.d.ts.map +1 -1
  116. package/dist/index.cjs +12 -12
  117. package/dist/indexeddb.d.ts +11 -11
  118. package/dist/indexeddb.d.ts.map +1 -1
  119. package/dist/indexeddbV2.d.ts +9 -9
  120. package/dist/indexeddbV2.d.ts.map +1 -1
  121. package/dist/iterator.d.ts +4 -4
  122. package/dist/iterator.d.ts.map +1 -1
  123. package/dist/json.d.ts +3 -3
  124. package/dist/json.d.ts.map +1 -1
  125. package/dist/jwt.cjs +8 -8
  126. package/dist/list.cjs +3 -3
  127. package/dist/list.d.ts +3 -3
  128. package/dist/list.d.ts.map +1 -1
  129. package/dist/list.test.d.ts.map +1 -1
  130. package/dist/logging.cjs +5 -5
  131. package/dist/logging.common.cjs +5 -5
  132. package/dist/logging.common.d.ts.map +1 -1
  133. package/dist/logging.d.ts.map +1 -1
  134. package/dist/logging.node.cjs +5 -5
  135. package/dist/logging.node.d.ts.map +1 -1
  136. package/dist/map.d.ts +1 -1
  137. package/dist/map.d.ts.map +1 -1
  138. package/dist/map.test.d.ts.map +1 -1
  139. package/dist/math.test.d.ts.map +1 -1
  140. package/dist/metric.d.ts +1 -1
  141. package/dist/metric.d.ts.map +1 -1
  142. package/dist/metric.test.d.ts.map +1 -1
  143. package/dist/mutex.d.ts.map +1 -1
  144. package/dist/number.d.ts +1 -1
  145. package/dist/number.d.ts.map +1 -1
  146. package/dist/number.test.d.ts.map +1 -1
  147. package/dist/object.d.ts +9 -13
  148. package/dist/object.d.ts.map +1 -1
  149. package/dist/object.test.d.ts.map +1 -1
  150. package/dist/observable.cjs +2 -2
  151. package/dist/observable.d.ts +4 -4
  152. package/dist/observable.d.ts.map +1 -1
  153. package/dist/observable.test.d.ts.map +1 -1
  154. package/dist/pair.d.ts +2 -2
  155. package/dist/pair.d.ts.map +1 -1
  156. package/dist/pair.test.d.ts.map +1 -1
  157. package/dist/patience.cjs +2 -2
  158. package/dist/performance.d.ts +3 -3
  159. package/dist/performance.d.ts.map +1 -1
  160. package/dist/performance.node.cjs +3 -3
  161. package/dist/performance.node.d.ts +0 -1
  162. package/dist/performance.node.d.ts.map +1 -1
  163. package/dist/pledge.d.ts +9 -9
  164. package/dist/pledge.d.ts.map +1 -1
  165. package/dist/pledge.test.d.ts.map +1 -1
  166. package/dist/prng/Mt19937.d.ts +1 -1
  167. package/dist/prng/Mt19937.d.ts.map +1 -1
  168. package/dist/prng/Xoroshiro128plus.d.ts +1 -1
  169. package/dist/prng/Xoroshiro128plus.d.ts.map +1 -1
  170. package/dist/{prng-6cd9a82d.cjs → prng-24dfe0bf.cjs} +3 -3
  171. package/dist/{prng-6cd9a82d.cjs.map → prng-24dfe0bf.cjs.map} +1 -1
  172. package/dist/prng.cjs +9 -9
  173. package/dist/prng.d.ts +3 -3
  174. package/dist/prng.d.ts.map +1 -1
  175. package/dist/prng.test.d.ts.map +1 -1
  176. package/dist/promise.d.ts +4 -4
  177. package/dist/promise.d.ts.map +1 -1
  178. package/dist/promise.test.d.ts.map +1 -1
  179. package/dist/queue.d.ts +1 -1
  180. package/dist/queue.d.ts.map +1 -1
  181. package/dist/queue.test.d.ts.map +1 -1
  182. package/dist/rabin-gf2-polynomial.cjs +8 -8
  183. package/dist/rabin-uncached.cjs +8 -8
  184. package/dist/rabin.cjs +8 -8
  185. package/dist/random.d.ts +1 -1
  186. package/dist/random.d.ts.map +1 -1
  187. package/dist/random.test.d.ts.map +1 -1
  188. package/dist/schema.cjs +64 -32
  189. package/dist/schema.cjs.map +1 -1
  190. package/dist/schema.d.ts +60 -51
  191. package/dist/schema.d.ts.map +1 -1
  192. package/dist/schema.test.d.ts +1 -0
  193. package/dist/schema.test.d.ts.map +1 -1
  194. package/dist/{set-a0a3ea69.cjs → set-5b47859e.cjs} +8 -9
  195. package/dist/set-5b47859e.cjs.map +1 -0
  196. package/dist/set.cjs +1 -1
  197. package/dist/set.d.ts +2 -2
  198. package/dist/set.d.ts.map +1 -1
  199. package/dist/set.test.d.ts.map +1 -1
  200. package/dist/sort.d.ts +3 -3
  201. package/dist/sort.d.ts.map +1 -1
  202. package/dist/sort.test.d.ts.map +1 -1
  203. package/dist/statistics.d.ts.map +1 -1
  204. package/dist/statistics.test.d.ts.map +1 -1
  205. package/dist/storage.d.ts.map +1 -1
  206. package/dist/storage.test.d.ts.map +1 -1
  207. package/dist/{string-04e96f2d.cjs → string-b2827a90.cjs} +2 -2
  208. package/dist/{string-04e96f2d.cjs.map → string-b2827a90.cjs.map} +1 -1
  209. package/dist/string.cjs +3 -3
  210. package/dist/string.d.ts.map +1 -1
  211. package/dist/string.test.d.ts.map +1 -1
  212. package/dist/symbol.test.d.ts.map +1 -1
  213. package/dist/testing.cjs +11 -11
  214. package/dist/testing.cjs.map +1 -1
  215. package/dist/testing.d.ts +5 -5
  216. package/dist/testing.d.ts.map +1 -1
  217. package/dist/testing.test.d.ts.map +1 -1
  218. package/dist/time.test.d.ts.map +1 -1
  219. package/dist/traits.d.ts.map +1 -1
  220. package/dist/traits.test.d.ts.map +1 -1
  221. package/dist/tree.d.ts +4 -4
  222. package/dist/tree.d.ts.map +1 -1
  223. package/dist/url.d.ts.map +1 -1
  224. package/dist/url.test.d.ts.map +1 -1
  225. package/dist/{websocket-2c325505.cjs → websocket-40a601d4.cjs} +1 -1
  226. package/dist/{websocket-2c325505.cjs.map → websocket-40a601d4.cjs.map} +1 -1
  227. package/dist/websocket.cjs +3 -3
  228. package/dist/websocket.d.ts +1 -1
  229. package/dist/websocket.d.ts.map +1 -1
  230. package/dom.d.ts.map +1 -1
  231. package/encoding.d.ts +6 -6
  232. package/encoding.d.ts.map +1 -1
  233. package/encoding.test.d.ts.map +1 -1
  234. package/eventloop.d.ts.map +1 -1
  235. package/eventloop.test.d.ts.map +1 -1
  236. package/function.d.ts +8 -3
  237. package/function.d.ts.map +1 -1
  238. package/function.test.d.ts.map +1 -1
  239. package/hash/rabin-gf2-polynomial.d.ts +3 -3
  240. package/hash/rabin-gf2-polynomial.d.ts.map +1 -1
  241. package/hash/rabin-uncached.d.ts +3 -3
  242. package/hash/rabin-uncached.d.ts.map +1 -1
  243. package/hash/rabin.d.ts +10 -10
  244. package/hash/rabin.d.ts.map +1 -1
  245. package/hash/rabin.test.d.ts.map +1 -1
  246. package/hash/sha256.d.ts +1 -1
  247. package/hash/sha256.d.ts.map +1 -1
  248. package/hash/sha256.node.d.ts +1 -1
  249. package/hash/sha256.node.d.ts.map +1 -1
  250. package/hash/sha256.test.d.ts.map +1 -1
  251. package/indexeddb.d.ts +11 -11
  252. package/indexeddb.d.ts.map +1 -1
  253. package/indexeddbV2.d.ts +9 -9
  254. package/indexeddbV2.d.ts.map +1 -1
  255. package/iterator.d.ts +4 -4
  256. package/iterator.d.ts.map +1 -1
  257. package/json.d.ts +3 -3
  258. package/json.d.ts.map +1 -1
  259. package/list.d.ts +3 -3
  260. package/list.d.ts.map +1 -1
  261. package/list.test.d.ts.map +1 -1
  262. package/logging.common.d.ts.map +1 -1
  263. package/logging.d.ts.map +1 -1
  264. package/logging.node.d.ts.map +1 -1
  265. package/map.d.ts +1 -1
  266. package/map.d.ts.map +1 -1
  267. package/map.test.d.ts.map +1 -1
  268. package/math.test.d.ts.map +1 -1
  269. package/metric.d.ts +1 -1
  270. package/metric.d.ts.map +1 -1
  271. package/metric.test.d.ts.map +1 -1
  272. package/mutex.d.ts.map +1 -1
  273. package/number.d.ts +1 -1
  274. package/number.d.ts.map +1 -1
  275. package/number.test.d.ts.map +1 -1
  276. package/object.d.ts +9 -13
  277. package/object.d.ts.map +1 -1
  278. package/object.test.d.ts.map +1 -1
  279. package/observable.d.ts +4 -4
  280. package/observable.d.ts.map +1 -1
  281. package/observable.test.d.ts.map +1 -1
  282. package/package.json +3 -3
  283. package/pair.d.ts +2 -2
  284. package/pair.d.ts.map +1 -1
  285. package/pair.test.d.ts.map +1 -1
  286. package/performance.d.ts +3 -3
  287. package/performance.d.ts.map +1 -1
  288. package/performance.node.d.ts +0 -1
  289. package/performance.node.d.ts.map +1 -1
  290. package/pledge.d.ts +9 -9
  291. package/pledge.d.ts.map +1 -1
  292. package/pledge.test.d.ts.map +1 -1
  293. package/prng/Mt19937.d.ts +1 -1
  294. package/prng/Mt19937.d.ts.map +1 -1
  295. package/prng/Xoroshiro128plus.d.ts +1 -1
  296. package/prng/Xoroshiro128plus.d.ts.map +1 -1
  297. package/prng.d.ts +3 -3
  298. package/prng.d.ts.map +1 -1
  299. package/prng.test.d.ts.map +1 -1
  300. package/promise.d.ts +4 -4
  301. package/promise.d.ts.map +1 -1
  302. package/promise.test.d.ts.map +1 -1
  303. package/queue.d.ts +1 -1
  304. package/queue.d.ts.map +1 -1
  305. package/queue.test.d.ts.map +1 -1
  306. package/random.d.ts +1 -1
  307. package/random.d.ts.map +1 -1
  308. package/random.test.d.ts.map +1 -1
  309. package/schema.d.ts +60 -51
  310. package/schema.d.ts.map +1 -1
  311. package/schema.js +59 -27
  312. package/schema.test.d.ts +1 -0
  313. package/schema.test.d.ts.map +1 -1
  314. package/set.d.ts +2 -2
  315. package/set.d.ts.map +1 -1
  316. package/set.js +2 -3
  317. package/set.test.d.ts.map +1 -1
  318. package/sort.d.ts +3 -3
  319. package/sort.d.ts.map +1 -1
  320. package/sort.test.d.ts.map +1 -1
  321. package/statistics.d.ts.map +1 -1
  322. package/statistics.test.d.ts.map +1 -1
  323. package/storage.d.ts.map +1 -1
  324. package/storage.test.d.ts.map +1 -1
  325. package/string.d.ts.map +1 -1
  326. package/string.test.d.ts.map +1 -1
  327. package/symbol.test.d.ts.map +1 -1
  328. package/testing.d.ts +5 -5
  329. package/testing.d.ts.map +1 -1
  330. package/testing.js +1 -1
  331. package/testing.test.d.ts.map +1 -1
  332. package/time.test.d.ts.map +1 -1
  333. package/traits.d.ts.map +1 -1
  334. package/traits.test.d.ts.map +1 -1
  335. package/tree.d.ts +4 -4
  336. package/tree.d.ts.map +1 -1
  337. package/url.d.ts.map +1 -1
  338. package/url.test.d.ts.map +1 -1
  339. package/websocket.d.ts +1 -1
  340. package/websocket.d.ts.map +1 -1
  341. package/coverage/tmp/coverage-37930-1752527249527-0.json +0 -1
  342. package/dist/diff-63d13d0f.cjs.map +0 -1
  343. package/dist/set-a0a3ea69.cjs.map +0 -1
package/dist/rabin.cjs CHANGED
@@ -2,22 +2,22 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var buffer = require('./buffer-cba90761.cjs');
5
+ var buffer = require('./buffer-a74f7330.cjs');
6
6
  var map = require('./map-0dabcc55.cjs');
7
- require('./string-04e96f2d.cjs');
8
- require('./array-f5410bdd.cjs');
9
- require('./set-a0a3ea69.cjs');
10
- require('./environment-2789c99d.cjs');
7
+ require('./string-b2827a90.cjs');
8
+ require('./array-78849c95.cjs');
9
+ require('./set-5b47859e.cjs');
10
+ require('./environment-2de08e0e.cjs');
11
11
  require('./conditions-f5c0c102.cjs');
12
12
  require('./storage.cjs');
13
- require('./function-6c17de82.cjs');
13
+ require('./function-09b8292c.cjs');
14
14
  require('./object-491858d1.cjs');
15
15
  require('./traits.cjs');
16
16
  require('./math-08e068f9.cjs');
17
- require('./encoding-62f41e96.cjs');
17
+ require('./encoding-1acb59c4.cjs');
18
18
  require('./number-466d8922.cjs');
19
19
  require('./binary-ac8e39e2.cjs');
20
- require('./decoding-9732ddf2.cjs');
20
+ require('./decoding-2b136346.cjs');
21
21
  require('./error-8582d695.cjs');
22
22
 
23
23
  /**
package/dist/random.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export const rand: () => number;
2
2
  export function uint32(): number;
3
3
  export function uint53(): number;
4
- export function oneOf<T>(arr: T[]): T;
4
+ export function oneOf<T>(arr: Array<T>): T;
5
5
  export function uuidv4(): string;
6
6
  //# sourceMappingURL=random.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../random.js"],"names":[],"mappings":"AAYA,gCAA+B;AAExB,iCAA2D;AAE3D,iCAGN;AAOM,sCAAyD;AAQzD,0BAFK,MAAM,CAIjB"}
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../random.js"],"names":[],"mappings":"AAYA,gCAA+B;AAExB,iCAA2D;AAE3D,iCAGN;AAOM,sBAJM,CAAC,OACH,KAAK,CAAC,CAAC,CAAC,GACP,CAAC,CAEmD;AAQzD,0BAFK,MAAM,CAIjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"random.test.d.ts","sourceRoot":"","sources":["../random.test.js"],"names":[],"mappings":"AASO,+BAFI,EAAE,QAAQ,QAKpB;AAKM,+BAFI,EAAE,QAAQ,QA0BpB;AAKM,+BAFI,EAAE,QAAQ,QAyBpB;AAKM,+BAFI,EAAE,QAAQ,QAIpB;AAKM,uCAFI,EAAE,QAAQ,QAiBpB;mBA/FkB,cAAc"}
1
+ {"version":3,"file":"random.test.d.ts","sourceRoot":"","sources":["../random.test.js"],"names":[],"mappings":"AASO,+BAFI,CAAC,CAAC,QAAQ,QAKpB;AAKM,+BAFI,CAAC,CAAC,QAAQ,QA0BpB;AAKM,+BAFI,CAAC,CAAC,QAAQ,QAyBpB;AAKM,+BAFI,CAAC,CAAC,QAAQ,QAIpB;AAKM,uCAFI,CAAC,CAAC,QAAQ,QAiBpB;mBA/FkB,cAAc"}
package/dist/schema.cjs CHANGED
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var object$1 = require('./object-491858d1.cjs');
6
- var array$1 = require('./array-f5410bdd.cjs');
6
+ var array$1 = require('./array-78849c95.cjs');
7
7
  var error = require('./error-8582d695.cjs');
8
- var environment = require('./environment-2789c99d.cjs');
9
- require('./set-a0a3ea69.cjs');
8
+ var environment = require('./environment-2de08e0e.cjs');
9
+ require('./set-5b47859e.cjs');
10
10
  require('./map-0dabcc55.cjs');
11
- require('./string-04e96f2d.cjs');
11
+ require('./string-b2827a90.cjs');
12
12
  require('./conditions-f5c0c102.cjs');
13
13
  require('./storage.cjs');
14
- require('./function-6c17de82.cjs');
14
+ require('./function-09b8292c.cjs');
15
15
  require('./traits.cjs');
16
16
 
17
17
  /**
@@ -30,24 +30,12 @@ require('./traits.cjs');
30
30
 
31
31
  /**
32
32
  * @template T
33
- * @typedef {T extends $Schema<infer X> ? X : T} TypeOfSchema
33
+ * @typedef {T extends $Schema<infer X> ? X : T} Unwrap
34
34
  */
35
35
 
36
36
  /**
37
37
  * @template {readonly unknown[]} T
38
- * @typedef {T extends []
39
- * ? {}
40
- * : T extends [infer First]
41
- * ? First
42
- * : T extends [infer First, ...infer Rest]
43
- * ? First & Intersect<Rest>
44
- * : never
45
- * } Intersect
46
- */
47
-
48
- /**
49
- * @template {readonly unknown[]} T
50
- * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [] } ExtractTypesFromSchemaArray
38
+ * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [] } UnwrapArray
51
39
  */
52
40
 
53
41
  /**
@@ -65,6 +53,18 @@ require('./traits.cjs');
65
53
  * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop
66
54
  */
67
55
 
56
+ /**
57
+ * @template {readonly unknown[]} T
58
+ * @typedef {T extends []
59
+ * ? {}
60
+ * : T extends [infer First]
61
+ * ? First
62
+ * : T extends [infer First, ...infer Rest]
63
+ * ? First & Intersect<Rest>
64
+ * : never
65
+ * } Intersect
66
+ */
67
+
68
68
  const schemaSymbol = Symbol('0schema');
69
69
 
70
70
  /**
@@ -104,10 +104,10 @@ class $Schema {
104
104
  }
105
105
 
106
106
  /**
107
- * @type {$Schema<T|undefined>}
107
+ * @type {$Optional<$Schema<T>>}
108
108
  */
109
109
  get optional () {
110
- return union(this, undefined_)
110
+ return new $Optional(/** @type {$Schema<T>} */ (this))
111
111
  }
112
112
 
113
113
  /**
@@ -203,9 +203,39 @@ class $Literal extends $Schema {
203
203
  */
204
204
  const literal = (...literals) => new $Literal(literals);
205
205
 
206
+ const isOptionalSymbol = Symbol('optional');
207
+ /**
208
+ * @template {$Schema<any>} S
209
+ * @extends $Schema<Unwrap<S>|undefined>
210
+ */
211
+ class $Optional extends $Schema {
212
+ /**
213
+ * @param {S} s
214
+ */
215
+ constructor (s) {
216
+ super();
217
+ this.s = s;
218
+ }
219
+
220
+ /**
221
+ * @param {any} o
222
+ * @return {o is (Unwrap<S>|undefined)}
223
+ */
224
+ check (o) {
225
+ return o === undefined || this.s.check(o)
226
+ }
227
+
228
+ get [isOptionalSymbol] () { return true }
229
+ }
230
+
231
+ /**
232
+ * @template {{ [key: string|symbol|number]: $Schema<any> }} S
233
+ * @typedef {{ [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? Key : never]?: S[Key] extends $Optional<$Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? never : Key]: S[Key] extends $Schema<infer Type> ? Type : never }} $ObjectToType
234
+ */
235
+
206
236
  /**
207
237
  * @template {{[key:string|symbol|number]: $Schema<any>}} S
208
- * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}
238
+ * @extends {$Schema<$ObjectToType<S>>}
209
239
  */
210
240
  class $Object extends $Schema {
211
241
  /**
@@ -218,19 +248,21 @@ class $Object extends $Schema {
218
248
 
219
249
  /**
220
250
  * @param {any} o
221
- * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}
251
+ * @return {o is $ObjectToType<S>}
222
252
  */
223
253
  check (o) {
224
254
  return o != null && object$1.every(this.v, (vv, vk) => vv.check(o[vk]))
225
255
  }
226
256
  }
227
257
 
258
+ // I used an explicit type annotation instead of $ObjectToType, so that the user doesn't see the
259
+ // weird type definitions when inspecting type definions.
228
260
  /**
229
- * @template {{ [key:string|symbol|number]: $Schema<any> }} T
230
- * @param {T} def
231
- * @return {CastToSchema<$Object<T>>}
261
+ * @template {{ [key:string|symbol|number]: $Schema<any> }} S
262
+ * @param {S} def
263
+ * @return {$Schema<{ [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? Key : never]?: S[Key] extends $Optional<$Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? never : Key]: S[Key] extends $Schema<infer Type> ? Type : never }>}
232
264
  */
233
- const object = def => new $Object(def);
265
+ const object = def => /** @type {any} */ (new $Object(def));
234
266
 
235
267
  /**
236
268
  * @template {$Schema<string|number|symbol>} Keys
@@ -358,7 +390,7 @@ const instance = c => new $InstanceOf(c);
358
390
 
359
391
  /**
360
392
  * @template {$Schema<any>[]} Args
361
- * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef
393
+ * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef
362
394
  */
363
395
 
364
396
  /**
@@ -388,13 +420,13 @@ class $Lambda extends $Schema {
388
420
  /**
389
421
  * @template {$Schema<any>[]} Args
390
422
  * @param {Args} args
391
- * @return {$Schema<(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>>}
423
+ * @return {$Schema<(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>>}
392
424
  */
393
425
  const lambda = (...args) => new $Lambda(args.length > 0 ? args : [void_]);
394
426
 
395
427
  /**
396
428
  * @template {Array<$Schema<any>>} T
397
- * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}
429
+ * @extends {$Schema<Intersect<UnwrapArray<T>>>}
398
430
  */
399
431
  class $Intersection extends $Schema {
400
432
  /**
@@ -410,7 +442,7 @@ class $Intersection extends $Schema {
410
442
 
411
443
  /**
412
444
  * @param {any} o
413
- * @return {o is Intersect<ExtractTypesFromSchemaArray<T>>}
445
+ * @return {o is Intersect<UnwrapArray<T>>}
414
446
  */
415
447
  check (o) {
416
448
  // @ts-ignore
@@ -452,7 +484,7 @@ class $Union extends $Schema {
452
484
  /**
453
485
  * @template {Array<$Schema<any>>} T
454
486
  * @param {T} def
455
- * @return {CastToSchema<$Union<T extends Array<$Schema<infer S>> ? S : never>>}
487
+ * @return {CastToSchema<$Union<T extends [] ? never : (T extends Array<$Schema<infer S>> ? S : never)>>}
456
488
  */
457
489
  const union = (...def) => $Union.schema.check(def[0]) ? new $Union([...def[0].v, ...def.slice(1)]) : new $Union(def);
458
490
 
@@ -1 +1 @@
1
- {"version":3,"file":"schema.cjs","sources":["../schema.js"],"sourcesContent":["/**\n * @experimental WIP\n *\n * Simple & efficient schemas for your data.\n */\n\nimport * as obj from './object.js'\nimport * as arr from './array.js'\nimport * as error from './error.js'\nimport * as env from './environment.js'\n\n/**\n * @typedef {string|number|bigint|boolean|null|undefined} LiteralType\n */\n\n/**\n * @typedef {{ [k:string|number|symbol]: any }} AnyObject\n */\n\n/**\n * @template T\n * @typedef {T extends $Schema<infer X> ? X : T} TypeOfSchema\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends []\n * ? {}\n * : T extends [infer First]\n * ? First\n * : T extends [infer First, ...infer Rest]\n * ? First & Intersect<Rest>\n * : never\n * } Intersect\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [] } ExtractTypesFromSchemaArray\n */\n\n/**\n * @template T\n * @typedef {T extends $Schema<infer S> ? $Schema<S> : never} CastToSchema\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...unknown[], infer L] ? L : never} TupleLast\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop\n */\n\nconst schemaSymbol = Symbol('0schema')\n\n/**\n * @template T\n */\nexport class $Schema {\n get [schemaSymbol] () { return true }\n /**\n * Use `schema.validate(obj)` with a typed parameter that is already of typed to be an instance of\n * Schema. Validate will check the structure of the parameter and return true iff the instance\n * really is an instance of Schema.\n *\n * @param {T} o\n * @return {boolean}\n */\n validate (o) {\n return this.check(o)\n }\n\n /* c8 ignore start */\n /**\n * Similar to validate, but this method accepts untyped parameters.\n *\n * @param {any} _o\n * @return {_o is T}\n */\n check (_o) {\n error.methodUnimplemented()\n }\n /* c8 ignore stop */\n\n /**\n * @type {$Schema<T?>}\n */\n get nullable () {\n return union(this, null_)\n }\n\n /**\n * @type {$Schema<T|undefined>}\n */\n get optional () {\n return union(this, undefined_)\n }\n\n /**\n * Cast a variable to a specific type. Returns the casted value, or throws an exception otherwise.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check only if not in a production environment.\n *\n * @param {any} o\n * @return {o extends T ? T : never}\n */\n cast (o) {\n assert(o, this)\n return o\n }\n\n /**\n * Ensures that a variable is a a specific type. Returns the value, or throws an exception if the assertion check failed.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * Can be useful when defining lambdas: `s.lambda(s.$number, s.$void).ensure((n) => n + 1)`\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check if not in a production environment.\n *\n * @param {T} o\n * @return {o extends T ? T : never}\n */\n ensure (o) {\n assert(o, this)\n return o\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @extends {$Schema<C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)>}\n */\nexport class $ConstructedBy extends $Schema {\n /**\n * @param {C} c\n */\n constructor (c) {\n super()\n this.v = c\n }\n\n /**\n * @param {any} o\n * @return {o is C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)} o\n */\n check (o) {\n return o?.constructor === this.v\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @param {C} c\n * @return {CastToSchema<$ConstructedBy<C>>}\n */\nexport const constructedBy = c => new $ConstructedBy(c)\n\n/**\n * @template {LiteralType} T\n * @extends {$Schema<T>}\n */\nexport class $Literal extends $Schema {\n /**\n * @param {Array<T>} literals\n */\n constructor (literals) {\n super()\n this.v = literals\n }\n\n /**\n * @param {any} o\n * @return {o is T}\n */\n check (o) {\n return this.v.some(a => a === o)\n }\n}\n\n/**\n * @template {LiteralType[]} T\n * @param {T} literals\n * @return {CastToSchema<$Literal<T[number]>>}\n */\nexport const literal = (...literals) => new $Literal(literals)\n\n/**\n * @template {{[key:string|symbol|number]: $Schema<any>}} S\n * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}\n */\nexport class $Object extends $Schema {\n /**\n * @param {S} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}\n */\n check (o) {\n return o != null && obj.every(this.v, (vv, vk) => vv.check(o[vk]))\n }\n}\n\n/**\n * @template {{ [key:string|symbol|number]: $Schema<any> }} T\n * @param {T} def\n * @return {CastToSchema<$Object<T>>}\n */\nexport const object = def => new $Object(def)\n\n/**\n * @template {$Schema<string|number|symbol>} Keys\n * @template {$Schema<any>} Values\n * @extends {$Schema<Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>>}\n */\nexport class $Record extends $Schema {\n /**\n * @param {Keys} keys\n * @param {Values} values\n */\n constructor (keys, values) {\n super()\n this.keys = keys\n this.values = values\n }\n\n /**\n * @param {any} o\n * @return {o is Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>}\n */\n check (o) {\n return o != null && obj.every(o, (vv, vk) => this.keys.check(vk) && this.values.check(vv))\n }\n}\n\n/**\n * @template {$Schema<string|number|symbol>} Keys\n * @template {$Schema<any>} Values\n * @param {Keys} keys\n * @param {Values} values\n * @return {CastToSchema<$Record<Keys,Values>>}\n */\nexport const record = (keys, values) => new $Record(keys, values)\n\n/**\n * @template {$Schema<any>[]} S\n * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}\n */\nexport class $Tuple extends $Schema {\n /**\n * @param {S} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}\n */\n check (o) {\n return o != null && obj.every(this.v, (vv, vk) => /** @type {$Schema<any>} */ (vv).check(o[vk]))\n }\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Tuple<T>>}\n */\nexport const tuple = (...def) => new $Tuple(def)\n\n/**\n * @template {$Schema<any>} S\n * @extends {$Schema<Array<S extends $Schema<infer T> ? T : never>>}\n */\nexport class $Array extends $Schema {\n /**\n * @param {Array<S>} v\n */\n constructor (v) {\n super()\n /**\n * @type {$Schema<S extends $Schema<infer T> ? T : never>}\n */\n this.v = v.length === 1 ? v[0] : new $Union(v)\n }\n\n /**\n * @param {any} o\n * @return {o is Array<S extends $Schema<infer T> ? T : never>} o\n */\n check (o) {\n return arr.isArray(o) && arr.every(o, oi => this.v.check(oi))\n }\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {$Schema<Array<T extends Array<$Schema<infer S>> ? S : never>>}\n */\nexport const array = (...def) => new $Array(def)\n\n/**\n * @template T\n * @extends {$Schema<T>}\n */\nexport class $InstanceOf extends $Schema {\n /**\n * @param {new (...args:any) => T} constructor\n */\n constructor (constructor) {\n super()\n this.v = constructor\n }\n\n /**\n * @param {any} o\n * @return {o is T}\n */\n check (o) {\n return o instanceof this.v\n }\n}\n\n/**\n * @template T\n * @param {new (...args:any) => T} c\n * @return {$Schema<T>}\n */\nexport const instance = c => new $InstanceOf(c)\n\n/**\n * @template {$Schema<any>[]} Args\n * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef\n */\n\n/**\n * @template {Array<$Schema<any>>} Args\n * @extends {$Schema<_LArgsToLambdaDef<Args>>}\n */\nexport class $Lambda extends $Schema {\n /**\n * @param {Args} args\n */\n constructor (args) {\n super()\n this.len = args.length - 1\n this.args = tuple(...args.slice(-1))\n this.res = args[this.len]\n }\n\n /**\n * @param {any} f\n * @return {f is _LArgsToLambdaDef<Args>}\n */\n check (f) {\n return f.constructor === Function && f.length <= this.len\n }\n}\n\n/**\n * @template {$Schema<any>[]} Args\n * @param {Args} args\n * @return {$Schema<(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>>}\n */\nexport const lambda = (...args) => new $Lambda(args.length > 0 ? args : [void_])\n\n/**\n * @template {Array<$Schema<any>>} T\n * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}\n */\nexport class $Intersection extends $Schema {\n /**\n * @param {T} v\n */\n constructor (v) {\n super()\n /**\n * @type {T}\n */\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is Intersect<ExtractTypesFromSchemaArray<T>>}\n */\n check (o) {\n // @ts-ignore\n return arr.every(this.v, check => check.check(o))\n }\n}\n\n/**\n * @template {$Schema<any>[]} T\n * @param {T} def\n * @return {CastToSchema<$Intersection<T>>}\n */\nexport const intersect = (...def) => new $Intersection(def)\n\n/**\n * @template S\n * @extends {$Schema<S>}\n */\nexport class $Union extends $Schema {\n /**\n * @param {Array<$Schema<S>>} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is S}\n */\n check (o) {\n return arr.some(this.v, (vv) => vv.check(o))\n }\n\n static schema = constructedBy($Union)\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Union<T extends Array<$Schema<infer S>> ? S : never>>}\n */\nexport const union = (...def) => $Union.schema.check(def[0]) ? new $Union([...def[0].v, ...def.slice(1)]) : new $Union(def)\n\n/**\n * @type {$Schema<any>}\n */\nexport const any = intersect()\n\n/**\n * @type {$Schema<bigint>}\n */\nexport const bigint = constructedBy(BigInt)\n\n/**\n * @type {$Schema<Symbol>}\n */\nexport const symbol = constructedBy(Symbol)\n\n/**\n * @type {$Schema<number>}\n */\nexport const number = constructedBy(Number)\n\n/**\n * @type {$Schema<string>}\n */\nexport const string = constructedBy(String)\n\n/**\n * @type {$Schema<undefined>}\n */\nconst undefined_ = literal(undefined)\n\n/**\n * @type {$Schema<void>}\n */\nconst void_ = undefined_\n\n/**\n * @type {$Schema<null>}\n */\nconst null_ = literal(null)\n\nexport { null_ as null, void_ as void, undefined_ as undefined }\n\n/* c8 ignore start */\n/**\n * Assert that a variable is of this specific type.\n * The assertion check is only performed in non-production environments.\n *\n * @type {<T>(o:any,schema:$Schema<T>) => asserts o is T}\n */\nexport const assert = env.production\n ? () => {}\n : (o, schema) => {\n if (!schema.check(o)) {\n throw error.create(`Expected value to be of type ${schema.constructor.name}.`)\n }\n }\n/* c8 ignore end */\n"],"names":["error.methodUnimplemented","obj.every","arr.isArray","arr.every","arr.some","env.production","error.create"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAC;AACtC;AACA;AACA;AACA;AACO,MAAM,OAAO,CAAC;AACrB,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE;AACb,IAAIA,yBAAyB,GAAE;AAC/B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAClC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AACX,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAC;AACnB,IAAI,OAAO,CAAC;AACZ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAC;AACnB,IAAI,OAAO,CAAC;AACZ,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"}
1
+ {"version":3,"file":"schema.cjs","sources":["../schema.js"],"sourcesContent":["/**\n * @experimental WIP\n *\n * Simple & efficient schemas for your data.\n */\n\nimport * as obj from './object.js'\nimport * as arr from './array.js'\nimport * as error from './error.js'\nimport * as env from './environment.js'\n\n/**\n * @typedef {string|number|bigint|boolean|null|undefined} LiteralType\n */\n\n/**\n * @typedef {{ [k:string|number|symbol]: any }} AnyObject\n */\n\n/**\n * @template T\n * @typedef {T extends $Schema<infer X> ? X : T} Unwrap\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [] } UnwrapArray\n */\n\n/**\n * @template T\n * @typedef {T extends $Schema<infer S> ? $Schema<S> : never} CastToSchema\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...unknown[], infer L] ? L : never} TupleLast\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends []\n * ? {}\n * : T extends [infer First]\n * ? First\n * : T extends [infer First, ...infer Rest]\n * ? First & Intersect<Rest>\n * : never\n * } Intersect\n */\n\nconst schemaSymbol = Symbol('0schema')\n\n/**\n * @template T\n */\nexport class $Schema {\n get [schemaSymbol] () { return true }\n /**\n * Use `schema.validate(obj)` with a typed parameter that is already of typed to be an instance of\n * Schema. Validate will check the structure of the parameter and return true iff the instance\n * really is an instance of Schema.\n *\n * @param {T} o\n * @return {boolean}\n */\n validate (o) {\n return this.check(o)\n }\n\n /* c8 ignore start */\n /**\n * Similar to validate, but this method accepts untyped parameters.\n *\n * @param {any} _o\n * @return {_o is T}\n */\n check (_o) {\n error.methodUnimplemented()\n }\n /* c8 ignore stop */\n\n /**\n * @type {$Schema<T?>}\n */\n get nullable () {\n return union(this, null_)\n }\n\n /**\n * @type {$Optional<$Schema<T>>}\n */\n get optional () {\n return new $Optional(/** @type {$Schema<T>} */ (this))\n }\n\n /**\n * Cast a variable to a specific type. Returns the casted value, or throws an exception otherwise.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check only if not in a production environment.\n *\n * @param {any} o\n * @return {o extends T ? T : never}\n */\n cast (o) {\n assert(o, this)\n return o\n }\n\n /**\n * Ensures that a variable is a a specific type. Returns the value, or throws an exception if the assertion check failed.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * Can be useful when defining lambdas: `s.lambda(s.$number, s.$void).ensure((n) => n + 1)`\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check if not in a production environment.\n *\n * @param {T} o\n * @return {o extends T ? T : never}\n */\n ensure (o) {\n assert(o, this)\n return o\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @extends {$Schema<C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)>}\n */\nexport class $ConstructedBy extends $Schema {\n /**\n * @param {C} c\n */\n constructor (c) {\n super()\n this.v = c\n }\n\n /**\n * @param {any} o\n * @return {o is C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)} o\n */\n check (o) {\n return o?.constructor === this.v\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @param {C} c\n * @return {CastToSchema<$ConstructedBy<C>>}\n */\nexport const constructedBy = c => new $ConstructedBy(c)\n\n/**\n * @template {LiteralType} T\n * @extends {$Schema<T>}\n */\nexport class $Literal extends $Schema {\n /**\n * @param {Array<T>} literals\n */\n constructor (literals) {\n super()\n this.v = literals\n }\n\n /**\n * @param {any} o\n * @return {o is T}\n */\n check (o) {\n return this.v.some(a => a === o)\n }\n}\n\n/**\n * @template {LiteralType[]} T\n * @param {T} literals\n * @return {CastToSchema<$Literal<T[number]>>}\n */\nexport const literal = (...literals) => new $Literal(literals)\n\nconst isOptionalSymbol = Symbol('optional')\n/**\n * @template {$Schema<any>} S\n * @extends $Schema<Unwrap<S>|undefined>\n */\nclass $Optional extends $Schema {\n /**\n * @param {S} s\n */\n constructor (s) {\n super()\n this.s = s\n }\n\n /**\n * @param {any} o\n * @return {o is (Unwrap<S>|undefined)}\n */\n check (o) {\n return o === undefined || this.s.check(o)\n }\n\n get [isOptionalSymbol] () { return true }\n}\n\n/**\n * @template {{ [key: string|symbol|number]: $Schema<any> }} S\n * @typedef {{ [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? Key : never]?: S[Key] extends $Optional<$Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? never : Key]: S[Key] extends $Schema<infer Type> ? Type : never }} $ObjectToType\n */\n\n/**\n * @template {{[key:string|symbol|number]: $Schema<any>}} S\n * @extends {$Schema<$ObjectToType<S>>}\n */\nexport class $Object extends $Schema {\n /**\n * @param {S} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is $ObjectToType<S>}\n */\n check (o) {\n return o != null && obj.every(this.v, (vv, vk) => vv.check(o[vk]))\n }\n}\n\n// I used an explicit type annotation instead of $ObjectToType, so that the user doesn't see the\n// weird type definitions when inspecting type definions.\n/**\n * @template {{ [key:string|symbol|number]: $Schema<any> }} S\n * @param {S} def\n * @return {$Schema<{ [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? Key : never]?: S[Key] extends $Optional<$Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? never : Key]: S[Key] extends $Schema<infer Type> ? Type : never }>}\n */\nexport const object = def => /** @type {any} */ (new $Object(def))\n\n/**\n * @template {$Schema<string|number|symbol>} Keys\n * @template {$Schema<any>} Values\n * @extends {$Schema<Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>>}\n */\nexport class $Record extends $Schema {\n /**\n * @param {Keys} keys\n * @param {Values} values\n */\n constructor (keys, values) {\n super()\n this.keys = keys\n this.values = values\n }\n\n /**\n * @param {any} o\n * @return {o is Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>}\n */\n check (o) {\n return o != null && obj.every(o, (vv, vk) => this.keys.check(vk) && this.values.check(vv))\n }\n}\n\n/**\n * @template {$Schema<string|number|symbol>} Keys\n * @template {$Schema<any>} Values\n * @param {Keys} keys\n * @param {Values} values\n * @return {CastToSchema<$Record<Keys,Values>>}\n */\nexport const record = (keys, values) => new $Record(keys, values)\n\n/**\n * @template {$Schema<any>[]} S\n * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}\n */\nexport class $Tuple extends $Schema {\n /**\n * @param {S} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}\n */\n check (o) {\n return o != null && obj.every(this.v, (vv, vk) => /** @type {$Schema<any>} */ (vv).check(o[vk]))\n }\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Tuple<T>>}\n */\nexport const tuple = (...def) => new $Tuple(def)\n\n/**\n * @template {$Schema<any>} S\n * @extends {$Schema<Array<S extends $Schema<infer T> ? T : never>>}\n */\nexport class $Array extends $Schema {\n /**\n * @param {Array<S>} v\n */\n constructor (v) {\n super()\n /**\n * @type {$Schema<S extends $Schema<infer T> ? T : never>}\n */\n this.v = v.length === 1 ? v[0] : new $Union(v)\n }\n\n /**\n * @param {any} o\n * @return {o is Array<S extends $Schema<infer T> ? T : never>} o\n */\n check (o) {\n return arr.isArray(o) && arr.every(o, oi => this.v.check(oi))\n }\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {$Schema<Array<T extends Array<$Schema<infer S>> ? S : never>>}\n */\nexport const array = (...def) => new $Array(def)\n\n/**\n * @template T\n * @extends {$Schema<T>}\n */\nexport class $InstanceOf extends $Schema {\n /**\n * @param {new (...args:any) => T} constructor\n */\n constructor (constructor) {\n super()\n this.v = constructor\n }\n\n /**\n * @param {any} o\n * @return {o is T}\n */\n check (o) {\n return o instanceof this.v\n }\n}\n\n/**\n * @template T\n * @param {new (...args:any) => T} c\n * @return {$Schema<T>}\n */\nexport const instance = c => new $InstanceOf(c)\n\n/**\n * @template {$Schema<any>[]} Args\n * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef\n */\n\n/**\n * @template {Array<$Schema<any>>} Args\n * @extends {$Schema<_LArgsToLambdaDef<Args>>}\n */\nexport class $Lambda extends $Schema {\n /**\n * @param {Args} args\n */\n constructor (args) {\n super()\n this.len = args.length - 1\n this.args = tuple(...args.slice(-1))\n this.res = args[this.len]\n }\n\n /**\n * @param {any} f\n * @return {f is _LArgsToLambdaDef<Args>}\n */\n check (f) {\n return f.constructor === Function && f.length <= this.len\n }\n}\n\n/**\n * @template {$Schema<any>[]} Args\n * @param {Args} args\n * @return {$Schema<(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>>}\n */\nexport const lambda = (...args) => new $Lambda(args.length > 0 ? args : [void_])\n\n/**\n * @template {Array<$Schema<any>>} T\n * @extends {$Schema<Intersect<UnwrapArray<T>>>}\n */\nexport class $Intersection extends $Schema {\n /**\n * @param {T} v\n */\n constructor (v) {\n super()\n /**\n * @type {T}\n */\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is Intersect<UnwrapArray<T>>}\n */\n check (o) {\n // @ts-ignore\n return arr.every(this.v, check => check.check(o))\n }\n}\n\n/**\n * @template {$Schema<any>[]} T\n * @param {T} def\n * @return {CastToSchema<$Intersection<T>>}\n */\nexport const intersect = (...def) => new $Intersection(def)\n\n/**\n * @template S\n * @extends {$Schema<S>}\n */\nexport class $Union extends $Schema {\n /**\n * @param {Array<$Schema<S>>} v\n */\n constructor (v) {\n super()\n this.v = v\n }\n\n /**\n * @param {any} o\n * @return {o is S}\n */\n check (o) {\n return arr.some(this.v, (vv) => vv.check(o))\n }\n\n static schema = constructedBy($Union)\n}\n\n/**\n * @template {Array<$Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Union<T extends [] ? never : (T extends Array<$Schema<infer S>> ? S : never)>>}\n */\nexport const union = (...def) => $Union.schema.check(def[0]) ? new $Union([...def[0].v, ...def.slice(1)]) : new $Union(def)\n\n/**\n * @type {$Schema<any>}\n */\nexport const any = intersect()\n\n/**\n * @type {$Schema<bigint>}\n */\nexport const bigint = constructedBy(BigInt)\n\n/**\n * @type {$Schema<Symbol>}\n */\nexport const symbol = constructedBy(Symbol)\n\n/**\n * @type {$Schema<number>}\n */\nexport const number = constructedBy(Number)\n\n/**\n * @type {$Schema<string>}\n */\nexport const string = constructedBy(String)\n\n/**\n * @type {$Schema<undefined>}\n */\nconst undefined_ = literal(undefined)\n\n/**\n * @type {$Schema<void>}\n */\nconst void_ = undefined_\n\n/**\n * @type {$Schema<null>}\n */\nconst null_ = literal(null)\n\nexport { null_ as null, void_ as void, undefined_ as undefined }\n\n/* c8 ignore start */\n/**\n * Assert that a variable is of this specific type.\n * The assertion check is only performed in non-production environments.\n *\n * @type {<T>(o:any,schema:$Schema<T>) => asserts o is T}\n */\nexport const assert = env.production\n ? () => {}\n : (o, schema) => {\n if (!schema.check(o)) {\n throw error.create(`Expected value to be of type ${schema.constructor.name}.`)\n }\n }\n/* c8 ignore end */\n"],"names":["error.methodUnimplemented","obj.every","arr.isArray","arr.every","arr.some","env.production","error.create"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAC;AACtC;AACA;AACA;AACA;AACO,MAAM,OAAO,CAAC;AACrB,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE;AACb,IAAIA,yBAAyB,GAAE;AAC/B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB,IAAI,OAAO,IAAI,SAAS,4BAA4B,IAAI,EAAE;AAC1D,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AACX,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAC;AACnB,IAAI,OAAO,CAAC;AACZ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAC;AACnB,IAAI,OAAO,CAAC;AACZ,GAA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"}
package/dist/schema.d.ts CHANGED
@@ -23,9 +23,9 @@ export class $Schema<T> {
23
23
  */
24
24
  get nullable(): $Schema<T | null>;
25
25
  /**
26
- * @type {$Schema<T|undefined>}
26
+ * @type {$Optional<$Schema<T>>}
27
27
  */
28
- get optional(): $Schema<T | undefined>;
28
+ get optional(): $Optional<$Schema<T>>;
29
29
  /**
30
30
  * Cast a variable to a specific type. Returns the casted value, or throws an exception otherwise.
31
31
  * Use this if you know that the type is of a specific type and you just want to convince the type
@@ -68,9 +68,9 @@ export class $ConstructedBy<C extends (new (...args: any[]) => any) | ((...args:
68
68
  * @param {any} o
69
69
  * @return {o is C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)} o
70
70
  */
71
- check(o: any): o is C extends (...args: any[]) => infer T_1 ? T_1 : C extends new (...args: any[]) => any ? InstanceType<C> : never;
71
+ check(o: any): o is C extends ((...args: any[]) => infer T_1) ? T_1 : (C extends (new (...args: any[]) => any) ? InstanceType<C> : never);
72
72
  }
73
- export function constructedBy<C extends (new (...args: any[]) => any) | ((...args: any[]) => any)>(c: C): $Schema<C extends (...args: any[]) => infer T ? T : C extends new (...args: any[]) => any ? InstanceType<C> : never>;
73
+ export function constructedBy<C extends (new (...args: any[]) => any) | ((...args: any[]) => any)>(c: C): CastToSchema<$ConstructedBy<C>>;
74
74
  /**
75
75
  * @template {LiteralType} T
76
76
  * @extends {$Schema<T>}
@@ -82,32 +82,27 @@ export class $Literal<T extends LiteralType> extends $Schema<T> {
82
82
  constructor(literals: Array<T>);
83
83
  v: T[];
84
84
  }
85
- export function literal<T extends LiteralType[]>(...literals: T): $Schema<T[number]>;
85
+ export function literal<T extends LiteralType[]>(...literals: T): CastToSchema<$Literal<T[number]>>;
86
+ /**
87
+ * @template {{ [key: string|symbol|number]: $Schema<any> }} S
88
+ * @typedef {{ [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? Key : never]?: S[Key] extends $Optional<$Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? never : Key]: S[Key] extends $Schema<infer Type> ? Type : never }} $ObjectToType
89
+ */
86
90
  /**
87
91
  * @template {{[key:string|symbol|number]: $Schema<any>}} S
88
- * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}
92
+ * @extends {$Schema<$ObjectToType<S>>}
89
93
  */
90
94
  export class $Object<S extends {
91
- [key: string]: $Schema<any>;
92
- [key: number]: $Schema<any>;
93
- [key: symbol]: $Schema<any>;
94
- }> extends $Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never; }> {
95
+ [key: string | symbol | number]: $Schema<any>;
96
+ }> extends $Schema<$ObjectToType<S>> {
95
97
  /**
96
98
  * @param {S} v
97
99
  */
98
100
  constructor(v: S);
99
101
  v: S;
100
- /**
101
- * @param {any} o
102
- * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}
103
- */
104
- check(o: any): o is { [K in keyof S]: S[K] extends $Schema<infer Type_1> ? Type_1 : never; };
105
102
  }
106
- export function object<T extends {
107
- [key: string]: $Schema<any>;
108
- [key: number]: $Schema<any>;
109
- [key: symbol]: $Schema<any>;
110
- }>(def: T): $Schema<{ [Key in keyof T]: T[Key] extends $Schema<infer Type> ? Type : never; }>;
103
+ export function object<S extends {
104
+ [key: string | symbol | number]: $Schema<any>;
105
+ }>(def: S): $Schema<{ [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? Key : never]?: S[Key] extends $Optional<$Schema<infer Type>> ? Type : never; } & { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? never : Key]: S[Key] extends $Schema<infer Type> ? Type : never; }>;
111
106
  /**
112
107
  * @template {$Schema<string|number|symbol>} Keys
113
108
  * @template {$Schema<any>} Values
@@ -127,7 +122,7 @@ export class $Record<Keys extends $Schema<string | number | symbol>, Values exte
127
122
  */
128
123
  check(o: any): o is Record<Keys extends $Schema<infer K_1> ? K_1 : never, Values extends $Schema<infer T_1> ? T_1 : never>;
129
124
  }
130
- export function record<Keys extends $Schema<string | number | symbol>, Values extends $Schema<any>>(keys: Keys, values: Values): $Schema<Record<Keys extends $Schema<infer K> ? K : never, Values extends $Schema<infer T> ? T : never>>;
125
+ export function record<Keys extends $Schema<string | number | symbol>, Values extends $Schema<any>>(keys: Keys, values: Values): CastToSchema<$Record<Keys, Values>>;
131
126
  /**
132
127
  * @template {$Schema<any>[]} S
133
128
  * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}
@@ -144,7 +139,7 @@ export class $Tuple<S extends $Schema<any>[]> extends $Schema<{ [Key in keyof S]
144
139
  */
145
140
  check(o: any): o is { [K in keyof S]: S[K] extends $Schema<infer Type_1> ? Type_1 : never; };
146
141
  }
147
- export function tuple<T extends $Schema<any>[]>(...def: T): $Schema<{ [Key in keyof T]: T[Key] extends $Schema<infer Type> ? Type : never; }>;
142
+ export function tuple<T extends Array<$Schema<any>>>(...def: T): CastToSchema<$Tuple<T>>;
148
143
  /**
149
144
  * @template {$Schema<any>} S
150
145
  * @extends {$Schema<Array<S extends $Schema<infer T> ? T : never>>}
@@ -162,9 +157,9 @@ export class $Array<S extends $Schema<any>> extends $Schema<(S extends $Schema<i
162
157
  * @param {any} o
163
158
  * @return {o is Array<S extends $Schema<infer T> ? T : never>} o
164
159
  */
165
- check(o: any): o is (S extends $Schema<infer T_2> ? T_2 : never)[];
160
+ check(o: any): o is Array<S extends $Schema<infer T_1> ? T_1 : never>;
166
161
  }
167
- export function array<T extends $Schema<any>[]>(...def: T): $Schema<(T extends $Schema<infer S>[] ? S : never)[]>;
162
+ export function array<T extends Array<$Schema<any>>>(...def: T): $Schema<Array<T extends Array<$Schema<infer S>> ? S : never>>;
168
163
  /**
169
164
  * @template T
170
165
  * @extends {$Schema<T>}
@@ -179,13 +174,13 @@ export class $InstanceOf<T> extends $Schema<T> {
179
174
  export function instance<T>(c: new (...args: any) => T): $Schema<T>;
180
175
  /**
181
176
  * @template {$Schema<any>[]} Args
182
- * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef
177
+ * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef
183
178
  */
184
179
  /**
185
180
  * @template {Array<$Schema<any>>} Args
186
181
  * @extends {$Schema<_LArgsToLambdaDef<Args>>}
187
182
  */
188
- export class $Lambda<Args extends $Schema<any>[]> extends $Schema<_LArgsToLambdaDef<Args>> {
183
+ export class $Lambda<Args extends Array<$Schema<any>>> extends $Schema<_LArgsToLambdaDef<Args>> {
189
184
  /**
190
185
  * @param {Args} args
191
186
  */
@@ -194,12 +189,12 @@ export class $Lambda<Args extends $Schema<any>[]> extends $Schema<_LArgsToLambda
194
189
  args: $Schema<any[]>;
195
190
  res: $Schema<any>;
196
191
  }
197
- export function lambda<Args extends $Schema<any>[]>(...args: Args): $Schema<(...args: ExtractTypesFromSchemaArray<TuplePop<Args>>) => TypeOfSchema<TupleLast<Args>>>;
192
+ export function lambda<Args extends $Schema<any>[]>(...args: Args): $Schema<(...args: UnwrapArray<TuplePop<Args>>) => Unwrap<TupleLast<Args>>>;
198
193
  /**
199
194
  * @template {Array<$Schema<any>>} T
200
- * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}
195
+ * @extends {$Schema<Intersect<UnwrapArray<T>>>}
201
196
  */
202
- export class $Intersection<T extends $Schema<any>[]> extends $Schema<Intersect<ExtractTypesFromSchemaArray<T>>> {
197
+ export class $Intersection<T extends Array<$Schema<any>>> extends $Schema<Intersect<UnwrapArray<T>>> {
203
198
  /**
204
199
  * @param {T} v
205
200
  */
@@ -209,7 +204,7 @@ export class $Intersection<T extends $Schema<any>[]> extends $Schema<Intersect<E
209
204
  */
210
205
  v: T;
211
206
  }
212
- export function intersect<T extends $Schema<any>[]>(...def: T): $Schema<Intersect<ExtractTypesFromSchemaArray<T>>>;
207
+ export function intersect<T extends $Schema<any>[]>(...def: T): CastToSchema<$Intersection<T>>;
213
208
  /**
214
209
  * @template S
215
210
  * @extends {$Schema<S>}
@@ -222,7 +217,7 @@ export class $Union<S> extends $Schema<S> {
222
217
  constructor(v: Array<$Schema<S>>);
223
218
  v: $Schema<S>[];
224
219
  }
225
- export function union<T extends $Schema<any>[]>(...def: T): $Schema<T extends $Schema<infer S>[] ? S : never>;
220
+ export function union<T extends Array<$Schema<any>>>(...def: T): CastToSchema<$Union<T extends [] ? never : (T extends Array<$Schema<infer S>> ? S : never)>>;
226
221
  /**
227
222
  * @type {$Schema<any>}
228
223
  */
@@ -252,17 +247,30 @@ export const string: $Schema<string>;
252
247
  export const assert: <T>(o: any, schema: $Schema<T>) => asserts o is T;
253
248
  export type LiteralType = string | number | bigint | boolean | null | undefined;
254
249
  export type AnyObject = {
255
- [k: string]: any;
256
- [k: number]: any;
257
- [k: symbol]: any;
250
+ [k: string | number | symbol]: any;
258
251
  };
259
- export type TypeOfSchema<T> = T extends $Schema<infer X> ? X : T;
260
- export type Intersect<T extends readonly unknown[]> = T extends [] ? {} : T extends [infer First] ? First : T extends [infer First_1, ...infer Rest] ? First_1 & Intersect<Rest> : never;
261
- export type ExtractTypesFromSchemaArray<T extends readonly unknown[]> = T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [];
252
+ export type Unwrap<T> = T extends $Schema<infer X> ? X : T;
253
+ export type UnwrapArray<T extends readonly unknown[]> = T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [];
262
254
  export type CastToSchema<T> = T extends $Schema<infer S> ? $Schema<S> : never;
263
255
  export type TupleLast<Arr extends unknown[]> = Arr extends [...unknown[], infer L] ? L : never;
264
256
  export type TuplePop<Arr extends unknown[]> = Arr extends [...infer Fs, unknown] ? Fs : never;
265
- export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: ExtractTypesFromSchemaArray<TuplePop<Args>>) => TypeOfSchema<TupleLast<Args>>;
257
+ export type Intersect<T extends readonly unknown[]> = T extends [] ? {} : T extends [infer First] ? First : T extends [infer First, ...infer Rest] ? First & Intersect<Rest> : never;
258
+ export type $ObjectToType<S extends {
259
+ [key: string | symbol | number]: $Schema<any>;
260
+ }> = { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? Key : never]?: S[Key] extends $Optional<$Schema<infer Type>> ? Type : never; } & { [Key in keyof S as S[Key] extends $Optional<$Schema<any>> ? never : Key]: S[Key] extends $Schema<infer Type> ? Type : never; };
261
+ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: UnwrapArray<TuplePop<Args>>) => Unwrap<TupleLast<Args>>;
262
+ /**
263
+ * @template {$Schema<any>} S
264
+ * @extends $Schema<Unwrap<S>|undefined>
265
+ */
266
+ declare class $Optional<S extends $Schema<any>> extends $Schema<Unwrap<S> | undefined> {
267
+ /**
268
+ * @param {S} s
269
+ */
270
+ constructor(s: S);
271
+ s: S;
272
+ get [isOptionalSymbol](): boolean;
273
+ }
266
274
  /**
267
275
  * @typedef {string|number|bigint|boolean|null|undefined} LiteralType
268
276
  */
@@ -271,22 +279,11 @@ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: ExtractTy
271
279
  */
272
280
  /**
273
281
  * @template T
274
- * @typedef {T extends $Schema<infer X> ? X : T} TypeOfSchema
275
- */
276
- /**
277
- * @template {readonly unknown[]} T
278
- * @typedef {T extends []
279
- * ? {}
280
- * : T extends [infer First]
281
- * ? First
282
- * : T extends [infer First, ...infer Rest]
283
- * ? First & Intersect<Rest>
284
- * : never
285
- * } Intersect
282
+ * @typedef {T extends $Schema<infer X> ? X : T} Unwrap
286
283
  */
287
284
  /**
288
285
  * @template {readonly unknown[]} T
289
- * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [] } ExtractTypesFromSchemaArray
286
+ * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [] } UnwrapArray
290
287
  */
291
288
  /**
292
289
  * @template T
@@ -300,6 +297,17 @@ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: ExtractTy
300
297
  * @template {unknown[]} Arr
301
298
  * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop
302
299
  */
300
+ /**
301
+ * @template {readonly unknown[]} T
302
+ * @typedef {T extends []
303
+ * ? {}
304
+ * : T extends [infer First]
305
+ * ? First
306
+ * : T extends [infer First, ...infer Rest]
307
+ * ? First & Intersect<Rest>
308
+ * : never
309
+ * } Intersect
310
+ */
303
311
  declare const schemaSymbol: unique symbol;
304
312
  /**
305
313
  * @type {$Schema<null>}
@@ -313,5 +321,6 @@ declare const void_: $Schema<void>;
313
321
  * @type {$Schema<undefined>}
314
322
  */
315
323
  declare const undefined_: $Schema<undefined>;
324
+ declare const isOptionalSymbol: unique symbol;
316
325
  export { null_ as null, _null as null, void_ as void, _void as void, undefined_ as undefined };
317
326
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../schema.js"],"names":[],"mappings":"AA0DA;;GAEG;AACH;IAEE;;;;;;;OAOG;IACH,YAHW,CAAC,GACA,OAAO,CAIlB;IAGD;;;;;OAKG;IACH,UAHW,GAAG,WAKb;IAGD;;OAEG;IACH,kCAEC;IAED;;OAEG;IACH,uCAEC;IAED;;;;;;;;;;OAUG;IACH,QAHW,GAAG,GACF,YAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAKlC;IAED;;;;;;;;;;;;OAYG;IACH,UAHW,CAAC,GACA,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAKlC;IAvED,8BAAqC;CAwEtC;AAED;;;GAGG;AACH,qDAH4B,GAAG,EAAE,KAAK,GAAG,eAAc,GAAG,EAAE,KAAK,GAAG,uCAC3B,GAAG,EAAE,2CAA6C,GAAG,EAAE,KAAK,GAAG;IAGtG;;OAEG;IACH,eAFW,CAAC,EAKX;IADC,KAAU;IAGZ;;;OAGG;IACH,SAHW,GAAG,4BACuB,GAAG,EAAE,+CAA6C,GAAG,EAAE,KAAK,GAAG,2BAInG;CACF;AAOM,uDAJqB,GAAG,EAAE,KAAK,GAAG,eAAc,GAAG,EAAE,KAAK,GAAG,sCArB3B,GAAG,EAAE,2CAA6C,GAAG,EAAE,KAAK,GAAG,4BAyBjD;AAEvD;;;GAGG;AACH;IACE;;OAEG;IACH,sBAFW,MAAM,CAAC,CAAC,EAKlB;IADC,OAAiB;CAUpB;AAOM,qFAAuD;AAE9D;;;GAGG;AACH;;;;;IACE;;OAEG;IACH,eAFW,CAAC,EAKX;IADC,KAAU;IAGZ;;;OAGG;IACH,SAHW,GAAG,iFAKb;CACF;AAOM;;;;8FAAsC;AAE7C;;;;GAIG;AACH;IACE;;;OAGG;IACH,kBAHW,IAAI,UACJ,MAAM,EAMhB;IAFC,WAAgB;IAChB,eAAoB;IAGtB;;;OAGG;IACH,SAHW,GAAG,+GAKb;CACF;AASM,yOAA0D;AAEjE;;;GAGG;AACH;IACE;;OAEG;IACH,eAFW,CAAC,EAKX;IADC,KAAU;IAGZ;;;OAGG;IACH,SAHW,GAAG,iFAKb;CACF;AAOM,8IAAyC;AAEhD;;;GAGG;AACH;IACE;;OAEG;IACH,eAFW,MAAM,CAAC,CAAC,EAQlB;IAJC;;OAEG;IACH,uDAA8C;IAGhD;;;OAGG;IACH,SAHW,GAAG,uDAKb;CACF;AAOM,kHAAyC;AAEhD;;;GAGG;AACH;IACE;;OAEG;IACH,uCAFwB,GAAG,KAAK,CAAC,EAKhC;IADC,iBAJsB,GAAG,KAAK,CAAC,CAIX;CAUvB;AAOM,6CAHiB,GAAG,oBAGoB;AAE/C;;;GAGG;AAEH;;;GAGG;AACH;IACE;;OAEG;IACH,kBAFW,IAAI,EAOd;IAHC,YAA0B;IAC1B,qBAAoC;IACpC,kBAAyB;CAU5B;AAOM,qKAAyE;AAEhF;;;GAGG;AACH;IACE;;OAEG;IACH,eAFW,CAAC,EAQX;IAJC;;OAEG;IACH,GAFU,CAAC,CAED;CAWb;AAOM,mHAAoD;AAE3D;;;GAGG;AACH;IAiBE,wCAAqC;IAhBrC;;OAEG;IACH,eAFW,MAAM,QAAQ,CAAC,CAAC,CAAC,EAK3B;IADC,gBAAU;CAYb;AAOM,8GAAoH;AAE3H;;GAEG;AACH,kBAFU,QAAQ,GAAG,CAAC,CAEQ;AAE9B;;GAEG;AACH,qBAFU,QAAQ,MAAM,CAAC,CAEkB;AAE3C;;GAEG;AACH,qBAFU,QAAQ,MAAM,CAAC,CAEkB;AAE3C;;GAEG;AACH,qBAFU,QAAQ,MAAM,CAAC,CAEkB;AAE3C;;GAEG;AACH,qBAFU,QAAQ,MAAM,CAAC,CAEkB;AAoB3C;;;;;GAKG;AACH,4BAFgB,GAAG,wCAQd;0BA1eQ,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,OAAO,GAAC,IAAI,GAAC,SAAS;;;;;;;;;;;;uEAiVlC,4BAA4B,SAAS,IAAI,CAAC,CAAC,KAAG,aAAa,UAAU,IAAI,CAAC,CAAC;AAlVjG;;GAEG;AAEH;;GAEG;AAEH;;;GAGG;AAEH;;;;;;;;;;GAUG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH,0CAAsC;AA0atC;;GAEG;AACH,qBAFU,QAAQ,IAAI,CAAC,CAEI;AAR3B;;GAEG;AACH,qBAFU,QAAQ,IAAI,CAAC,CAEC;AARxB;;GAEG;AACH,0BAFU,QAAQ,SAAS,CAAC,CAES"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../schema.js"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export function testSchemas(_tc: t.TestCase): void;
2
+ export function testObjectSchemaOptionals(_tc: t.TestCase): void;
2
3
  import * as t from './testing.js';
3
4
  //# sourceMappingURL=schema.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../schema.test.js"],"names":[],"mappings":"AAOO,iCAFI,EAAE,QAAQ,QA6NpB;mBAlOkB,cAAc"}
1
+ {"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../schema.test.js"],"names":[],"mappings":"AAOO,iCAFI,CAAC,CAAC,QAAQ,QAmOpB;AAKM,+CAFI,CAAC,CAAC,QAAQ,QAiBpB;mBA5PkB,cAAc"}