lib0 0.2.110 → 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 (344) 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-19939-1752497665435-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 +100 -32
  189. package/dist/schema.cjs.map +1 -1
  190. package/dist/schema.d.ts +76 -47
  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 +12 -12
  214. package/dist/testing.cjs.map +1 -1
  215. package/dist/testing.d.ts +6 -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 +76 -47
  310. package/schema.d.ts.map +1 -1
  311. package/schema.js +93 -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/test.html +1 -0
  329. package/testing.d.ts +6 -5
  330. package/testing.d.ts.map +1 -1
  331. package/testing.js +2 -1
  332. package/testing.test.d.ts.map +1 -1
  333. package/time.test.d.ts.map +1 -1
  334. package/traits.d.ts.map +1 -1
  335. package/traits.test.d.ts.map +1 -1
  336. package/tree.d.ts +4 -4
  337. package/tree.d.ts.map +1 -1
  338. package/url.d.ts.map +1 -1
  339. package/url.test.d.ts.map +1 -1
  340. package/websocket.d.ts +1 -1
  341. package/websocket.d.ts.map +1 -1
  342. package/coverage/tmp/coverage-19938-1752497708602-0.json +0 -1
  343. package/dist/diff-63d13d0f.cjs.map +0 -1
  344. package/dist/set-a0a3ea69.cjs.map +0 -1
package/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,47 @@ 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;
102
+ }
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; }>;
106
+ /**
107
+ * @template {$Schema<string|number|symbol>} Keys
108
+ * @template {$Schema<any>} Values
109
+ * @extends {$Schema<Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>>}
110
+ */
111
+ export class $Record<Keys extends $Schema<string | number | symbol>, Values extends $Schema<any>> extends $Schema<Record<Keys extends $Schema<infer K> ? K : never, Values extends $Schema<infer T> ? T : never>> {
112
+ /**
113
+ * @param {Keys} keys
114
+ * @param {Values} values
115
+ */
116
+ constructor(keys: Keys, values: Values);
117
+ keys: Keys;
118
+ values: Values;
100
119
  /**
101
120
  * @param {any} o
102
- * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}
121
+ * @return {o is Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>}
103
122
  */
104
- check(o: any): o is { [K in keyof S]: S[K] extends $Schema<infer Type_1> ? Type_1 : never; };
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>;
105
124
  }
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; }>;
125
+ export function record<Keys extends $Schema<string | number | symbol>, Values extends $Schema<any>>(keys: Keys, values: Values): CastToSchema<$Record<Keys, Values>>;
111
126
  /**
112
127
  * @template {$Schema<any>[]} S
113
128
  * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}
@@ -124,7 +139,7 @@ export class $Tuple<S extends $Schema<any>[]> extends $Schema<{ [Key in keyof S]
124
139
  */
125
140
  check(o: any): o is { [K in keyof S]: S[K] extends $Schema<infer Type_1> ? Type_1 : never; };
126
141
  }
127
- 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>>;
128
143
  /**
129
144
  * @template {$Schema<any>} S
130
145
  * @extends {$Schema<Array<S extends $Schema<infer T> ? T : never>>}
@@ -142,9 +157,9 @@ export class $Array<S extends $Schema<any>> extends $Schema<(S extends $Schema<i
142
157
  * @param {any} o
143
158
  * @return {o is Array<S extends $Schema<infer T> ? T : never>} o
144
159
  */
145
- 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>;
146
161
  }
147
- 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>>;
148
163
  /**
149
164
  * @template T
150
165
  * @extends {$Schema<T>}
@@ -159,13 +174,13 @@ export class $InstanceOf<T> extends $Schema<T> {
159
174
  export function instance<T>(c: new (...args: any) => T): $Schema<T>;
160
175
  /**
161
176
  * @template {$Schema<any>[]} Args
162
- * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef
177
+ * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef
163
178
  */
164
179
  /**
165
180
  * @template {Array<$Schema<any>>} Args
166
181
  * @extends {$Schema<_LArgsToLambdaDef<Args>>}
167
182
  */
168
- export class $Lambda<Args extends $Schema<any>[]> extends $Schema<_LArgsToLambdaDef<Args>> {
183
+ export class $Lambda<Args extends Array<$Schema<any>>> extends $Schema<_LArgsToLambdaDef<Args>> {
169
184
  /**
170
185
  * @param {Args} args
171
186
  */
@@ -174,12 +189,12 @@ export class $Lambda<Args extends $Schema<any>[]> extends $Schema<_LArgsToLambda
174
189
  args: $Schema<any[]>;
175
190
  res: $Schema<any>;
176
191
  }
177
- 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>>>;
178
193
  /**
179
194
  * @template {Array<$Schema<any>>} T
180
- * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}
195
+ * @extends {$Schema<Intersect<UnwrapArray<T>>>}
181
196
  */
182
- 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>>> {
183
198
  /**
184
199
  * @param {T} v
185
200
  */
@@ -189,7 +204,7 @@ export class $Intersection<T extends $Schema<any>[]> extends $Schema<Intersect<E
189
204
  */
190
205
  v: T;
191
206
  }
192
- 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>>;
193
208
  /**
194
209
  * @template S
195
210
  * @extends {$Schema<S>}
@@ -202,7 +217,7 @@ export class $Union<S> extends $Schema<S> {
202
217
  constructor(v: Array<$Schema<S>>);
203
218
  v: $Schema<S>[];
204
219
  }
205
- 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)>>;
206
221
  /**
207
222
  * @type {$Schema<any>}
208
223
  */
@@ -232,17 +247,30 @@ export const string: $Schema<string>;
232
247
  export const assert: <T>(o: any, schema: $Schema<T>) => asserts o is T;
233
248
  export type LiteralType = string | number | bigint | boolean | null | undefined;
234
249
  export type AnyObject = {
235
- [k: string]: any;
236
- [k: number]: any;
237
- [k: symbol]: any;
250
+ [k: string | number | symbol]: any;
238
251
  };
239
- export type TypeOfSchema<T> = T extends $Schema<infer X> ? X : T;
240
- 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;
241
- 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>] : [];
242
254
  export type CastToSchema<T> = T extends $Schema<infer S> ? $Schema<S> : never;
243
255
  export type TupleLast<Arr extends unknown[]> = Arr extends [...unknown[], infer L] ? L : never;
244
256
  export type TuplePop<Arr extends unknown[]> = Arr extends [...infer Fs, unknown] ? Fs : never;
245
- 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
+ }
246
274
  /**
247
275
  * @typedef {string|number|bigint|boolean|null|undefined} LiteralType
248
276
  */
@@ -251,22 +279,11 @@ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: ExtractTy
251
279
  */
252
280
  /**
253
281
  * @template T
254
- * @typedef {T extends $Schema<infer X> ? X : T} TypeOfSchema
255
- */
256
- /**
257
- * @template {readonly unknown[]} T
258
- * @typedef {T extends []
259
- * ? {}
260
- * : T extends [infer First]
261
- * ? First
262
- * : T extends [infer First, ...infer Rest]
263
- * ? First & Intersect<Rest>
264
- * : never
265
- * } Intersect
282
+ * @typedef {T extends $Schema<infer X> ? X : T} Unwrap
266
283
  */
267
284
  /**
268
285
  * @template {readonly unknown[]} T
269
- * @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
270
287
  */
271
288
  /**
272
289
  * @template T
@@ -280,6 +297,17 @@ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: ExtractTy
280
297
  * @template {unknown[]} Arr
281
298
  * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop
282
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
+ */
283
311
  declare const schemaSymbol: unique symbol;
284
312
  /**
285
313
  * @type {$Schema<null>}
@@ -293,5 +321,6 @@ declare const void_: $Schema<void>;
293
321
  * @type {$Schema<undefined>}
294
322
  */
295
323
  declare const undefined_: $Schema<undefined>;
324
+ declare const isOptionalSymbol: unique symbol;
296
325
  export { null_ as null, _null as null, void_ as void, _void as void, undefined_ as undefined };
297
326
  //# sourceMappingURL=schema.d.ts.map
package/schema.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["schema.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["schema.js"],"names":[],"mappings":"AA0DA;;GAEG;AACH,qBAFa,CAAC;IAIZ;;;;;;;OAOG;IACH,YAHW,CAAC,GACA,OAAO,CAIlB;IAGD;;;;;OAKG;IACH,UAHW,GAAG,GACF,EAAE,IAAI,CAAC,CAIlB;IAGD;;OAEG;IACH,gBAFU,OAAO,CAAC,CAAC,OAAC,CAAC,CAIpB;IAED;;OAEG;IACH,gBAFU,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAI9B;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,4BAHuE,CAAC,SAA1D,CAAC,KAAK,GAAG,IAAI,EAAC,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAC,GAAG,EAAE,KAAK,GAAG,CAAE,sCAC7B,GAAG,EAAE,KAAK,MAAM,CAAC,+BAAiC,GAAG,EAAE,KAAK,GAAG;IAGtG;;OAEG;IACH,eAFW,CAAC,EAKX;IADC,KAAU;IAGZ;;;OAGG;IACH,SAHW,GAAG,GACF,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,EAAC,GAAG,EAAE,KAAK,MAAM,GAAC,CAAC,GAAG,GAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,EAAC,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAI/H;CACF;AAOM,8BAJgE,CAAC,SAA1D,CAAC,KAAK,GAAG,IAAI,EAAC,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAC,GAAG,EAAE,KAAK,GAAG,CAAE,KAC3D,CAAC,GACA,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAEY;AAEvD;;;GAGG;AACH,sBAH2B,CAAC,SAAd,WAAY;IAIxB;;OAEG;IACH,sBAFW,KAAK,CAAC,CAAC,CAAC,EAKlB;IADC,OAAiB;CAUpB;AAOM,wBAJsB,CAAC,SAAhB,WAAW,EAAG,eACjB,CAAC,GACA,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAEiB;AA2B9D;;;GAGG;AAEH;;;GAGG;AACH,qBAH0D,CAAC,SAA9C;IAAE,CAAC,GAAG,EAAC,MAAM,GAAC,MAAM,GAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CAAE;IAIvD;;OAEG;IACH,eAFW,CAAC,EAKX;IADC,KAAU;CAUb;AASM,uBAJqD,CAAC,SAAhD;IAAG,CAAC,GAAG,EAAC,MAAM,GAAC,MAAM,GAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CAAG,OAChD,CAAC,GACA,OAAO,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAE,CAAC,CAEhO;AAElE;;;;GAIG;AACH,qBAJ6C,IAAI,SAAnC,OAAO,CAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAE,EAChB,MAAM,SAApB,OAAO,CAAC,GAAG,CAAE,oDAC4B,CAAC,4CAA2C,CAAC;IAGlG;;;OAGG;IACH,kBAHW,IAAI,UACJ,MAAM,EAMhB;IAFC,WAAgB;IAChB,eAAoB;IAGtB;;;OAGG;IACH,SAHW,GAAG,GACF,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,OAAO,CAAC,MAAM,GAAC,CAAC,GAAG,GAAC,GAAG,KAAK,EAAC,MAAM,SAAS,OAAO,CAAC,MAAM,GAAC,CAAC,GAAG,GAAC,GAAG,KAAK,CAAC,CAI7G;CACF;AASM,uBANsC,IAAI,SAAnC,OAAO,CAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAE,EAChB,MAAM,SAApB,OAAO,CAAC,GAAG,CAAE,QAChB,IAAI,UACJ,MAAM,GACL,YAAY,CAAC,OAAO,CAAC,IAAI,EAAC,MAAM,CAAC,CAAC,CAEmB;AAEjE;;;GAGG;AACH,oBAH8B,CAAC,SAAjB,OAAO,CAAC,GAAG,CAAC,EAAG,qBACL,GAAG,2CAA2C,IAAI;IAGxE;;OAEG;IACH,eAFW,CAAC,EAKX;IADC,KAAU;IAGZ;;;OAGG;IACH,SAHW,GAAG,GACF,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,MAAI,CAAC,GAAG,MAAI,GAAG,KAAK,GAAE,CAInF;CACF;AAOM,sBAJ4B,CAAC,SAAtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAE,UACvB,CAAC,GACA,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAEa;AAEhD;;;GAGG;AACH,oBAH4B,CAAC,SAAf,OAAO,CAAC,GAAG,CAAE,2CACwB,CAAC;IAGlD;;OAEG;IACH,eAFW,KAAK,CAAC,CAAC,CAAC,EAQlB;IAJC;;OAEG;IACH,GAFU,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,GAAC,CAAC,GAAG,GAAC,GAAG,KAAK,CAAC,CAEX;IAGhD;;;OAGG;IACH,SAHW,GAAG,GACF,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,GAAC,CAAC,GAAG,GAAC,GAAG,KAAK,CAAC,CAI7D;CACF;AAOM,sBAJ4B,CAAC,SAAtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAE,UACvB,CAAC,GACA,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAEzB;AAEhD;;;GAGG;AACH,yBAHa,CAAC;IAIZ;;OAEG;IACH,yBAFW,KAAK,GAAG,IAAI,EAAC,GAAG,KAAK,CAAC,EAKhC;IADC,iBAJsB,GAAG,KAAK,CAAC,CAIX;CAUvB;AAOM,yBAJM,CAAC,KACH,KAAK,GAAG,IAAI,EAAC,GAAG,KAAK,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAEyB;AAE/C;;;GAGG;AAEH;;;GAGG;AACH,qBAHmC,IAAI,SAAzB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAE;IAIhC;;OAEG;IACH,kBAFW,IAAI,EAOd;IAHC,YAA0B;IAC1B,qBAAoC;IACpC,kBAAyB;CAU5B;AAOM,uBAJuB,IAAI,SAApB,OAAO,CAAC,GAAG,CAAC,EAAG,WAClB,IAAI,GACH,OAAO,CAAC,CAAC,GAAG,IAAI,EAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAEH;AAEhF;;;GAGG;AACH,2BAHmC,CAAC,SAAtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAE;IAIhC;;OAEG;IACH,eAFW,CAAC,EAQX;IAJC;;OAEG;IACH,GAFU,CAAC,CAED;CAWb;AAOM,0BAJuB,CAAC,SAAjB,OAAO,CAAC,GAAG,CAAC,EAAG,UAClB,CAAC,GACA,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAEiB;AAE3D;;;GAGG;AACH,oBAHa,CAAC;IAoBZ,wCAAqC;IAhBrC;;OAEG;IACH,eAFW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAK3B;IADC,gBAAU;CAYb;AAOM,sBAJ4B,CAAC,SAAtB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAE,UACvB,CAAC,GACA,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAEmB;AAE3H;;GAEG;AACH,kBAFU,OAAO,CAAC,GAAG,CAAC,CAEQ;AAE9B;;GAEG;AACH,qBAFU,OAAO,CAAC,MAAM,CAAC,CAEkB;AAE3C;;GAEG;AACH,qBAFU,OAAO,CAAC,MAAM,CAAC,CAEkB;AAE3C;;GAEG;AACH,qBAFU,OAAO,CAAC,MAAM,CAAC,CAEkB;AAE3C;;GAEG;AACH,qBAFU,OAAO,CAAC,MAAM,CAAC,CAEkB;AAoB3C;;;;;GAKG;AACH,qBAFU,CAAC,CAAC,EAAE,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAQnD;0BA1gBQ,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,OAAO,GAAC,IAAI,GAAC,SAAS;wBAI3C;IAAE,CAAC,CAAC,EAAC,MAAM,GAAC,MAAM,GAAC,MAAM,GAAG,GAAG,CAAA;CAAE;mBAIjC,CAAC,IACD,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;wBAIb,CAAC,SAAtB,SAAU,OAAO,EAAG,IACpB,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;yBAI7F,CAAC,IACD,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;sBAInC,GAAG,SAAd,OAAO,EAAG,IACX,GAAG,SAAS,CAAC,GAAG,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;qBAInC,GAAG,SAAd,OAAO,EAAG,IACX,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK;sBAI1B,CAAC,SAAtB,SAAU,OAAO,EAAG,IACpB,CAAC,SAAS,EAAE,GAClB,EAAE,GACF,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,GACvB,KAAK,GACL,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GACtC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GACvB,KAAK;0BAwKiD,CAAC,SAAjD;IAAG,CAAC,GAAG,EAAE,MAAM,GAAC,MAAM,GAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CAAG,IAC/C,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAE;8BA+J5P,IAAI,SAApB,OAAO,CAAC,GAAG,CAAC,EAAG,IAChB,CAAC,GAAG,IAAI,EAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AA1L3E;;;GAGG;AACH,wBAH4B,CAAC,SAAf,OAAO,CAAC,GAAG,CAAE;IAIzB;;OAEG;IACH,eAFW,CAAC,EAKX;IADC,KAAU;IAWZ,kCAAyC;CAC1C;AA9MD;;GAEG;AAEH;;GAEG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;;;;;GAUG;AAEH,0CAAsC;AA0ctC;;GAEG;AACH,qBAFU,OAAO,CAAC,IAAI,CAAC,CAEI;AAR3B;;GAEG;AACH,qBAFU,OAAO,CAAC,IAAI,CAAC,CAEC;AARxB;;GAEG;AACH,0BAFU,OAAO,CAAC,SAAS,CAAC,CAES;AAzTrC,8CAA2C"}
package/schema.js CHANGED
@@ -19,24 +19,12 @@ import * as env from './environment.js'
19
19
 
20
20
  /**
21
21
  * @template T
22
- * @typedef {T extends $Schema<infer X> ? X : T} TypeOfSchema
22
+ * @typedef {T extends $Schema<infer X> ? X : T} Unwrap
23
23
  */
24
24
 
25
25
  /**
26
26
  * @template {readonly unknown[]} T
27
- * @typedef {T extends []
28
- * ? {}
29
- * : T extends [infer First]
30
- * ? First
31
- * : T extends [infer First, ...infer Rest]
32
- * ? First & Intersect<Rest>
33
- * : never
34
- * } Intersect
35
- */
36
-
37
- /**
38
- * @template {readonly unknown[]} T
39
- * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [] } ExtractTypesFromSchemaArray
27
+ * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [] } UnwrapArray
40
28
  */
41
29
 
42
30
  /**
@@ -54,6 +42,18 @@ import * as env from './environment.js'
54
42
  * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop
55
43
  */
56
44
 
45
+ /**
46
+ * @template {readonly unknown[]} T
47
+ * @typedef {T extends []
48
+ * ? {}
49
+ * : T extends [infer First]
50
+ * ? First
51
+ * : T extends [infer First, ...infer Rest]
52
+ * ? First & Intersect<Rest>
53
+ * : never
54
+ * } Intersect
55
+ */
56
+
57
57
  const schemaSymbol = Symbol('0schema')
58
58
 
59
59
  /**
@@ -93,10 +93,10 @@ export class $Schema {
93
93
  }
94
94
 
95
95
  /**
96
- * @type {$Schema<T|undefined>}
96
+ * @type {$Optional<$Schema<T>>}
97
97
  */
98
98
  get optional () {
99
- return union(this, undefined_)
99
+ return new $Optional(/** @type {$Schema<T>} */ (this))
100
100
  }
101
101
 
102
102
  /**
@@ -192,9 +192,39 @@ export class $Literal extends $Schema {
192
192
  */
193
193
  export const literal = (...literals) => new $Literal(literals)
194
194
 
195
+ const isOptionalSymbol = Symbol('optional')
196
+ /**
197
+ * @template {$Schema<any>} S
198
+ * @extends $Schema<Unwrap<S>|undefined>
199
+ */
200
+ class $Optional extends $Schema {
201
+ /**
202
+ * @param {S} s
203
+ */
204
+ constructor (s) {
205
+ super()
206
+ this.s = s
207
+ }
208
+
209
+ /**
210
+ * @param {any} o
211
+ * @return {o is (Unwrap<S>|undefined)}
212
+ */
213
+ check (o) {
214
+ return o === undefined || this.s.check(o)
215
+ }
216
+
217
+ get [isOptionalSymbol] () { return true }
218
+ }
219
+
220
+ /**
221
+ * @template {{ [key: string|symbol|number]: $Schema<any> }} S
222
+ * @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
223
+ */
224
+
195
225
  /**
196
226
  * @template {{[key:string|symbol|number]: $Schema<any>}} S
197
- * @extends {$Schema<{ [Key in keyof S]: S[Key] extends $Schema<infer Type> ? Type : never }>}
227
+ * @extends {$Schema<$ObjectToType<S>>}
198
228
  */
199
229
  export class $Object extends $Schema {
200
230
  /**
@@ -207,19 +237,55 @@ export class $Object extends $Schema {
207
237
 
208
238
  /**
209
239
  * @param {any} o
210
- * @return {o is { [K in keyof S]: S[K] extends $Schema<infer Type> ? Type : never }}
240
+ * @return {o is $ObjectToType<S>}
211
241
  */
212
242
  check (o) {
213
243
  return o != null && obj.every(this.v, (vv, vk) => vv.check(o[vk]))
214
244
  }
215
245
  }
216
246
 
247
+ // I used an explicit type annotation instead of $ObjectToType, so that the user doesn't see the
248
+ // weird type definitions when inspecting type definions.
217
249
  /**
218
- * @template {{ [key:string|symbol|number]: $Schema<any> }} T
219
- * @param {T} def
220
- * @return {CastToSchema<$Object<T>>}
250
+ * @template {{ [key:string|symbol|number]: $Schema<any> }} S
251
+ * @param {S} def
252
+ * @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 }>}
253
+ */
254
+ export const object = def => /** @type {any} */ (new $Object(def))
255
+
256
+ /**
257
+ * @template {$Schema<string|number|symbol>} Keys
258
+ * @template {$Schema<any>} Values
259
+ * @extends {$Schema<Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>>}
260
+ */
261
+ export class $Record extends $Schema {
262
+ /**
263
+ * @param {Keys} keys
264
+ * @param {Values} values
265
+ */
266
+ constructor (keys, values) {
267
+ super()
268
+ this.keys = keys
269
+ this.values = values
270
+ }
271
+
272
+ /**
273
+ * @param {any} o
274
+ * @return {o is Record<Keys extends $Schema<infer K> ? K : never,Values extends $Schema<infer T> ? T : never>}
275
+ */
276
+ check (o) {
277
+ return o != null && obj.every(o, (vv, vk) => this.keys.check(vk) && this.values.check(vv))
278
+ }
279
+ }
280
+
281
+ /**
282
+ * @template {$Schema<string|number|symbol>} Keys
283
+ * @template {$Schema<any>} Values
284
+ * @param {Keys} keys
285
+ * @param {Values} values
286
+ * @return {CastToSchema<$Record<Keys,Values>>}
221
287
  */
222
- export const object = def => new $Object(def)
288
+ export const record = (keys, values) => new $Record(keys, values)
223
289
 
224
290
  /**
225
291
  * @template {$Schema<any>[]} S
@@ -313,7 +379,7 @@ export const instance = c => new $InstanceOf(c)
313
379
 
314
380
  /**
315
381
  * @template {$Schema<any>[]} Args
316
- * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef
382
+ * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef
317
383
  */
318
384
 
319
385
  /**
@@ -343,13 +409,13 @@ export class $Lambda extends $Schema {
343
409
  /**
344
410
  * @template {$Schema<any>[]} Args
345
411
  * @param {Args} args
346
- * @return {$Schema<(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>>}
412
+ * @return {$Schema<(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>>}
347
413
  */
348
414
  export const lambda = (...args) => new $Lambda(args.length > 0 ? args : [void_])
349
415
 
350
416
  /**
351
417
  * @template {Array<$Schema<any>>} T
352
- * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}
418
+ * @extends {$Schema<Intersect<UnwrapArray<T>>>}
353
419
  */
354
420
  export class $Intersection extends $Schema {
355
421
  /**
@@ -365,7 +431,7 @@ export class $Intersection extends $Schema {
365
431
 
366
432
  /**
367
433
  * @param {any} o
368
- * @return {o is Intersect<ExtractTypesFromSchemaArray<T>>}
434
+ * @return {o is Intersect<UnwrapArray<T>>}
369
435
  */
370
436
  check (o) {
371
437
  // @ts-ignore
@@ -407,7 +473,7 @@ export class $Union extends $Schema {
407
473
  /**
408
474
  * @template {Array<$Schema<any>>} T
409
475
  * @param {T} def
410
- * @return {CastToSchema<$Union<T extends Array<$Schema<infer S>> ? S : never>>}
476
+ * @return {CastToSchema<$Union<T extends [] ? never : (T extends Array<$Schema<infer S>> ? S : never)>>}
411
477
  */
412
478
  export const union = (...def) => $Union.schema.check(def[0]) ? new $Union([...def[0].v, ...def.slice(1)]) : new $Union(def)
413
479
 
package/schema.test.d.ts CHANGED
@@ -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,QAqNpB;mBA1NkB,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"}
package/set.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export function create(): Set<any>;
2
- export function toArray<T>(set: Set<T>): T[];
3
- export function first<T>(set: Set<T>): T;
2
+ export function toArray<T>(set: Set<T>): Array<T>;
3
+ export function first<T>(set: Set<T>): T | undefined;
4
4
  export function from<T>(entries: Iterable<T>): Set<T>;
5
5
  //# sourceMappingURL=set.d.ts.map
package/set.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["set.js"],"names":[],"mappings":"AAMO,mCAA8B;AAO9B,6CAAsC;AAOtC,yCACiC;AAOjC,sDAAwC"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["set.js"],"names":[],"mappings":"AAMO,mCAA8B;AAO9B,wBAJM,CAAC,OACH,GAAG,CAAC,CAAC,CAAC,GACL,KAAK,CAAC,CAAC,CAAC,CAEyB;AAOtC,sBAJM,CAAC,OACH,GAAG,CAAC,CAAC,CAAC,GACL,CAAC,GAAC,SAAS,CAE8B;AAO9C,qBAJM,CAAC,WACH,QAAQ,CAAC,CAAC,CAAC,GACV,GAAG,CAAC,CAAC,CAAC,CAE6B"}
package/set.js CHANGED
@@ -16,10 +16,9 @@ export const toArray = set => Array.from(set)
16
16
  /**
17
17
  * @template T
18
18
  * @param {Set<T>} set
19
- * @return {T}
19
+ * @return {T|undefined}
20
20
  */
21
- export const first = set =>
22
- set.values().next().value ?? undefined
21
+ export const first = set => set.values().next().value
23
22
 
24
23
  /**
25
24
  * @template T
package/set.test.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"set.test.d.ts","sourceRoot":"","sources":["set.test.js"],"names":[],"mappings":"AAMO,+BAFI,EAAE,QAAQ,QAUpB;mBAdkB,cAAc"}
1
+ {"version":3,"file":"set.test.d.ts","sourceRoot":"","sources":["set.test.js"],"names":[],"mappings":"AAMO,+BAFI,CAAC,CAAC,QAAQ,QAUpB;mBAdkB,cAAc"}
package/sort.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export function _insertionSort<T>(arr: T[], lo: number, hi: number, compare: (arg0: T, arg1: T) => number): void;
2
- export function insertionSort<T>(arr: T[], compare: (arg0: T, arg1: T) => number): void;
3
- export function quicksort<T>(arr: T[], compare: (arg0: T, arg1: T) => number): void;
1
+ export function _insertionSort<T>(arr: Array<T>, lo: number, hi: number, compare: (arg0: T, arg1: T) => number): void;
2
+ export function insertionSort<T>(arr: Array<T>, compare: (arg0: T, arg1: T) => number): void;
3
+ export function quicksort<T>(arr: Array<T>, compare: (arg0: T, arg1: T) => number): void;
4
4
  //# sourceMappingURL=sort.d.ts.map
package/sort.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["sort.js"],"names":[],"mappings":"AAkBO,gDAJI,MAAM,MACN,MAAM,iCACQ,MAAM,QAU9B;AAQM,0EAHkB,MAAM,GACnB,IAAI,CAIf;AAiDM,sEAHkB,MAAM,GACnB,IAAI,CAIf"}
1
+ {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["sort.js"],"names":[],"mappings":"AAkBO,+BANM,CAAC,OACH,KAAK,CAAC,CAAC,CAAC,MACR,MAAM,MACN,MAAM,WACN,CAAS,IAAC,EAAD,CAAC,EAAC,IAAC,EAAD,CAAC,KAAE,MAAM,QAU9B;AAQM,8BALM,CAAC,OACH,KAAK,CAAC,CAAC,CAAC,WACR,CAAS,IAAC,EAAD,CAAC,EAAC,IAAC,EAAD,CAAC,KAAE,MAAM,GACnB,IAAI,CAIf;AAiDM,0BALM,CAAC,OACH,KAAK,CAAC,CAAC,CAAC,WACR,CAAS,IAAC,EAAD,CAAC,EAAC,IAAC,EAAD,CAAC,KAAE,MAAM,GACnB,IAAI,CAIf"}
@@ -1 +1 @@
1
- {"version":3,"file":"sort.test.d.ts","sourceRoot":"","sources":["sort.test.js"],"names":[],"mappings":"AAoEO,kCAFI,EAAE,QAAQ,QAoBpB;AAKM,mCAFI,EAAE,QAAQ,QAoBpB;AAKM,mCAFI,EAAE,QAAQ,QAoBpB;AAKM,yCAFI,EAAE,QAAQ,QAoBpB;AAKM,+CAFI,EAAE,QAAQ,QA4BpB;mBAzLkB,cAAc"}
1
+ {"version":3,"file":"sort.test.d.ts","sourceRoot":"","sources":["sort.test.js"],"names":[],"mappings":"AAoEO,kCAFI,CAAC,CAAC,QAAQ,QAoBpB;AAKM,mCAFI,CAAC,CAAC,QAAQ,QAoBpB;AAKM,mCAFI,CAAC,CAAC,QAAQ,QAoBpB;AAKM,yCAFI,CAAC,CAAC,QAAQ,QAoBpB;AAKM,+CAFI,CAAC,CAAC,QAAQ,QA4BpB;mBAzLkB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["statistics.js"],"names":[],"mappings":"AAYO,4BAHI,MAAM,MAAM,CAAC,GACZ,MAAM,CAE2K;AAMtL,6BAHI,MAAM,MAAM,CAAC,GACZ,MAAM,CAEgD"}
1
+ {"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["statistics.js"],"names":[],"mappings":"AAYO,4BAHI,KAAK,CAAC,MAAM,CAAC,GACZ,MAAM,CAE2K;AAMtL,6BAHI,KAAK,CAAC,MAAM,CAAC,GACZ,MAAM,CAEgD"}
@@ -1 +1 @@
1
- {"version":3,"file":"statistics.test.d.ts","sourceRoot":"","sources":["statistics.test.js"],"names":[],"mappings":"AAOO,+BAFI,EAAE,QAAQ,QASpB;mBAbkB,cAAc"}
1
+ {"version":3,"file":"statistics.test.d.ts","sourceRoot":"","sources":["statistics.test.js"],"names":[],"mappings":"AAOO,+BAFI,CAAC,CAAC,QAAQ,QASpB;mBAbkB,cAAc"}
package/storage.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["storage.js"],"names":[],"mappings":"AAiDA;;GAEG;AAEH,6BAAuC;AAShC,8CAJa;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,IAAI,eAIuC;AAS9G,+CAJa;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,IAAI,eAI2C"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["storage.js"],"names":[],"mappings":"AAiDA;;GAEG;AAEH,6BAAuC;AAShC,uCAJI,CAAS,IAAmD,EAAnD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,IAAI,eAIuC;AAS9G,wCAJI,CAAS,IAAmD,EAAnD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,IAAI,eAI2C"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.test.d.ts","sourceRoot":"","sources":["storage.test.js"],"names":[],"mappings":"AAMO,sCAFI,EAAE,QAAQ,QAapB;mBAhBkB,cAAc"}
1
+ {"version":3,"file":"storage.test.d.ts","sourceRoot":"","sources":["storage.test.js"],"names":[],"mappings":"AAMO,sCAFI,CAAC,CAAC,QAAQ,QAapB;mBAhBkB,cAAc"}
package/string.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.js"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,0DAA+C;AAC/C,gEAAiD;AAEjD;;;GAGG;AACH,yCAAsD;AAc/C,4BAHI,MAAM,GACL,MAAM,CAEuC;AASlD,iCAJI,MAAM,aACN,MAAM,GACL,MAAM,CAEkH;AAO7H,oCAHI,MAAM,GACL,MAAM,CAE2D;AAMtE,yCAHI,MAAM,GACL,UAAU,CAUrB;AAGD,0CAAyH;AAMlH,uCAHI,MAAM,GACL,UAAU,CAE6C;AAjB5D,gCAHI,MAAM,GACL,UAAU,CAUrB;AAsBM,yCAHI,UAAU,GACT,MAAM,CAejB;AAGD,+CAAmI;AAkB5H,uCAHI,UAAU,GACT,MAAM,CAE8E;AAlCzF,gCAHI,UAAU,GACT,MAAM,CAejB;AAoCM,4BALI,MAAM,SACN,MAAM,UACN,MAAM,WACN,MAAM,UAEkG;AAM5G,+BAHI,MAAM,KACN,MAAM,UAE0D;AAOpE,gCAFI,MAAM,UAST;AAOD,kCAFI,MAAM,UAST"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.js"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,0DAA+C;AAC/C,gEAAiD;AAEjD;;;GAGG;AACH,yCAAsD;AAc/C,4BAHI,MAAM,GACL,MAAM,CAEuC;AASlD,iCAJI,MAAM,aACN,MAAM,GACL,MAAM,CAEkH;AAO7H,oCAHI,MAAM,GACL,MAAM,CAE2D;AAMtE,yCAHI,MAAM,GACL,UAAU,CAUrB;AAGD,8BAA0C,WAAW,CAAoE;AAMlH,uCAHI,MAAM,GACL,UAAU,CAE6C;AAjB5D,gCAHI,MAAM,GACL,UAAU,CAUrB;AAsBM,yCAHI,UAAU,GACT,MAAM,CAejB;AAGD,+CAAmI;AAkB5H,uCAHI,UAAU,GACT,MAAM,CAE8E;AAlCzF,gCAHI,UAAU,GACT,MAAM,CAejB;AAoCM,4BALI,MAAM,SACN,MAAM,UACN,MAAM,WACN,MAAM,UAEkG;AAM5G,+BAHI,MAAM,KACN,MAAM,UAE0D;AAOpE,gCAFI,MAAM,UAST;AAOD,kCAFI,MAAM,UAST"}
@@ -1 +1 @@
1
- {"version":3,"file":"string.test.d.ts","sourceRoot":"","sources":["string.test.js"],"names":[],"mappings":"AAOO,mCAFI,EAAE,QAAQ,QAMpB;AAKM,iDAFI,EAAE,QAAQ,QAOpB;AAKM,iDAFI,EAAE,QAAQ,QAapB;AAKM,iDAFI,EAAE,QAAQ,QAapB;AAKM,6CAFI,EAAE,QAAQ,QAYpB;AAKM,gCAFI,EAAE,QAAQ,QAMpB;AAKM,oCAFI,EAAE,QAAQ,QAYpB;mBA1FkB,cAAc"}
1
+ {"version":3,"file":"string.test.d.ts","sourceRoot":"","sources":["string.test.js"],"names":[],"mappings":"AAOO,mCAFI,CAAC,CAAC,QAAQ,QAMpB;AAKM,iDAFI,CAAC,CAAC,QAAQ,QAOpB;AAKM,iDAFI,CAAC,CAAC,QAAQ,QAapB;AAKM,iDAFI,CAAC,CAAC,QAAQ,QAapB;AAKM,6CAFI,CAAC,CAAC,QAAQ,QAYpB;AAKM,gCAFI,CAAC,CAAC,QAAQ,QAMpB;AAKM,oCAFI,CAAC,CAAC,QAAQ,QAYpB;mBA1FkB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"symbol.test.d.ts","sourceRoot":"","sources":["symbol.test.js"],"names":[],"mappings":"AAMO,6CAFI,EAAE,QAAQ,QAQpB;mBAZkB,cAAc"}
1
+ {"version":3,"file":"symbol.test.d.ts","sourceRoot":"","sources":["symbol.test.js"],"names":[],"mappings":"AAMO,6CAFI,CAAC,CAAC,QAAQ,QAQpB;mBAZkB,cAAc"}
package/test.html CHANGED
@@ -154,6 +154,7 @@
154
154
  "lib0/performance.js": "./performance.js",
155
155
  "lib0/dist/performance.cjs": "./dist/performance.node.cjs",
156
156
  "lib0/performance": "./performance.js",
157
+ "lib0/schema": "./schema.js",
157
158
  "isomorphic.js": "./node_modules/isomorphic.js/browser.mjs",
158
159
  "isomorphic.js/package.json": "./node_modules/isomorphic.js/package.json"
159
160
  },
package/testing.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { production } from "./environment.js";
1
2
  export const extensive: boolean;
2
3
  export const envSeed: number | null;
3
4
  export class TestCase {
@@ -44,11 +45,11 @@ export function group(description: string, f: (...args: any[]) => void): void;
44
45
  export function groupAsync(description: string, f: (...args: any[]) => Promise<any>): Promise<void>;
45
46
  export function measureTime(message: string, f: (...args: any[]) => void): number;
46
47
  export function measureTimeAsync(message: string, f: (...args: any[]) => Promise<any>): Promise<number>;
47
- export function compareArrays<T>(as: T[], bs: T[], m?: string | undefined): boolean;
48
- export function compareStrings(a: string, b: string, m?: string | undefined): void;
49
- export function compareObjects<K, V>(a: any, b: any, m?: string | undefined): void;
50
- export function compare<T>(a: T, b: T, message?: string | null | undefined, customCompare?: ((arg0: any, arg1: T, arg2: T, arg3: string, arg4: any) => boolean) | undefined): boolean;
51
- export function assert<T>(property: T, message?: string | null | undefined): asserts property is NonNullable<T>;
48
+ export function compareArrays<T>(as: Array<T>, bs: Array<T>, m?: string): boolean;
49
+ export function compareStrings(a: string, b: string, m?: string): void;
50
+ export function compareObjects<K, V>(a: any, b: any, m?: string): void;
51
+ export function compare<T>(a: T, b: T, message?: string | null, customCompare?: (arg0: any, arg1: T, arg2: T, arg3: string, arg4: any) => boolean): boolean;
52
+ export function assert<T>(property: T, message?: string | null): asserts property is NonNullable<T>;
52
53
  export function promiseRejected(f: (...args: any[]) => Promise<any>): Promise<void>;
53
54
  export function fails(f: (...args: any[]) => void): void;
54
55
  export function failsAsync(f: (...args: any[]) => Promise<any>): Promise<void>;
package/testing.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["testing.js"],"names":[],"mappings":"AA6DA,gCAAiD;AAGjD,oCAAmG;AAEnG;IACE;;;OAGG;IACH,wBAHW,MAAM,YACN,MAAM,EAmBhB;IAhBC;;OAEG;IACH,YAFU,MAAM,CAEY;IAC5B;;OAEG;IACH,UAFU,MAAM,CAEQ;IACxB;;;;OAIG;IACH,MAFU,IAAI,MAAM,EAAC,GAAG,CAAC,CAEJ;IACrB,qBAAiB;IACjB,wBAAiB;IAGnB,kBAGC;IAED;;OAEG;IAEH,mBAOC;IAED;;;;OAIG;IACH,sBAMC;CACF;AAED,oCAA6E;AAgBtE,gCANI,MAAM,QACN,MAAM,YACG,QAAQ,KAAE,IAAI,GAAC,QAAQ,GAAG,CAAC,KACpC,MAAM,iBACN,MAAM,oBA0EhB;AAcM,sCAHI,MAAM,SACN,MAAM,QAEwF;AAYlG,2BAFI,MAAM,QAE6B;AAE9C,yDAAoC;AAEpC,8EAA0C;AAoBnC,mCAHI,MAAM,eACM,GAAG,OAAE,IAAI,QAS/B;AAoBM,wCAHI,MAAM,eACM,GAAG,OAAE,QAAQ,GAAG,CAAC,iBASvC;AAoBM,qCAJI,MAAM,eACM,GAAG,OAAE,IAAI,GACpB,MAAM,CAYjB;AAoBM,0CAJI,MAAM,eACM,GAAG,OAAE,QAAQ,GAAG,CAAC,GAC5B,QAAQ,MAAM,CAAC,CAY1B;AASM,4EAFK,OAAO,CAYlB;AAQM,kCALI,MAAM,KACN,MAAM,gCAUhB;AASM,mFAA2F;AA8H3F,oGAFa,GAAG,0BAAK,MAAM,QAAC,GAAG,KAAE,OAAO,wBAE8E;AAUtH,gHAA8H;AAK9H,6CAFgB,GAAG,OAAE,QAAQ,GAAG,CAAC,iBASvC;AAMM,mCAHgB,GAAG,OAAE,IAAI,QAW/B;AAMM,wCAHgB,GAAG,OAAE,QAAQ,GAAG,CAAC,iBAWvC;AAKM;QAFW,MAAM;YAAS,MAAM,UAAW,QAAQ,KAAE,IAAI,GAAC,QAAQ,GAAG,CAAC;;qBA2C5E;AAQM,6BAHI,MAAM,SAMhB;AAQM,4BAHI,OAAO,QAOjB;sBA9kBqB,WAAW"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["testing.js"],"names":[],"mappings":";AA8DA,gCAAiD;AAGjD,oCAAmG;AAEnG;IACE;;;OAGG;IACH,wBAHW,MAAM,YACN,MAAM,EAmBhB;IAhBC;;OAEG;IACH,YAFU,MAAM,CAEY;IAC5B;;OAEG;IACH,UAFU,MAAM,CAEQ;IACxB;;;;OAIG;IACH,MAFU,GAAG,CAAC,MAAM,EAAC,GAAG,CAAC,CAEJ;IACrB,qBAAiB;IACjB,wBAAiB;IAGnB,kBAGC;IAED;;OAEG;IAEH,YAHU,MAAM,CAUf;IAED;;;;OAIG;IACH,YAFU,IAAI,CAAC,IAAI,CAQlB;CACF;AAED,oCAA6E;AAgBtE,gCANI,MAAM,QACN,MAAM,KACN,CAAS,IAAQ,EAAR,QAAQ,KAAE,IAAI,GAAC,OAAO,CAAC,GAAG,CAAC,KACpC,MAAM,iBACN,MAAM,oBA0EhB;AAcM,sCAHI,MAAM,SACN,MAAM,QAEwF;AAYlG,2BAFI,MAAM,QAE6B;AAE9C,yDAAoC;AAEpC,8EAA0C;AAoBnC,mCAHI,MAAM,KACN,IAAS,IAAM,EAAH,GAAG,EAAA,KAAE,IAAI,QAS/B;AAoBM,wCAHI,MAAM,KACN,IAAS,IAAM,EAAH,GAAG,EAAA,KAAE,OAAO,CAAC,GAAG,CAAC,iBASvC;AAoBM,qCAJI,MAAM,KACN,IAAS,IAAM,EAAH,GAAG,EAAA,KAAE,IAAI,GACpB,MAAM,CAYjB;AAoBM,0CAJI,MAAM,KACN,IAAS,IAAM,EAAH,GAAG,EAAA,KAAE,OAAO,CAAC,GAAG,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CAY1B;AASM,8BANM,CAAC,MACH,KAAK,CAAC,CAAC,CAAC,MACR,KAAK,CAAC,CAAC,CAAC,MACR,MAAM,GACL,OAAO,CAYlB;AAQM,kCALI,MAAM,KACN,MAAM,MACN,MAAM,QAShB;AASM,+BANM,CAAC,EAAC,CAAC,sBAGL,MAAM,QAGiF;AA8H3F,wBANM,CAAC,KACH,CAAC,KACD,CAAC,YACD,MAAM,OAAC,kBACP,CAAS,IAAG,EAAH,GAAG,EAAC,IAAC,EAAD,CAAC,EAAC,IAAC,EAAD,CAAC,EAAC,IAAM,EAAN,MAAM,EAAC,IAAG,EAAH,GAAG,KAAE,OAAO,WAE8E;AAUtH,uBAPM,CAAC,YACH,CAAC,YACD,MAAM,OAAC,GACN,QAAQ,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAIuF;AAK9H,mCAFI,IAAS,IAAM,EAAH,GAAG,EAAA,KAAE,OAAO,CAAC,GAAG,CAAC,iBASvC;AAMM,yBAHI,IAAS,IAAM,EAAH,GAAG,EAAA,KAAE,IAAI,QAW/B;AAMM,8BAHI,IAAS,IAAM,EAAH,GAAG,EAAA,KAAE,OAAO,CAAC,GAAG,CAAC,iBAWvC;AAKM;;4BAF2C,QAAQ,KAAE,IAAI,GAAC,OAAO,CAAC,GAAG,CAAC;;qBA2C5E;AAQM,6BAHI,MAAM,SAMhB;AAQM,4BAHI,OAAO,QAOjB;sBA/kBqB,WAAW"}
package/testing.js CHANGED
@@ -31,7 +31,7 @@
31
31
  * * runTests automatically tests all exported functions that start with "test".
32
32
  * * The name of the function should be in camelCase and is used for the logging output.
33
33
  * *
34
- * * @param {t.TestCase} tc
34
+ * * @ param {t.TestCase} tc
35
35
  * *\/
36
36
  * export const testMyFirstTest = tc => {
37
37
  * t.compare({ a: 4 }, { a: 4 }, 'objects are equal')
@@ -59,6 +59,7 @@ import * as promise from './promise.js'
59
59
  import * as performance from 'lib0/performance'
60
60
  import * as traits from './traits.js'
61
61
 
62
+ export { production } from './environment.js'
62
63
  export const extensive = env.hasConf('extensive')
63
64
 
64
65
  /* c8 ignore next */