lib0 0.2.111 → 0.2.114

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-44483-1752694096242-0.json +1 -0
  19. package/coverage/tmp/{coverage-37931-1752527222567-0.json → coverage-44484-1752694068692-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 +72 -43
  189. package/dist/schema.cjs.map +1 -1
  190. package/dist/schema.d.ts +66 -60
  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 +66 -60
  310. package/schema.d.ts.map +1 -1
  311. package/schema.js +66 -37
  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/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
  */
@@ -243,6 +238,12 @@ export const number: $Schema<number>;
243
238
  * @type {$Schema<string>}
244
239
  */
245
240
  export const string: $Schema<string>;
241
+ export { $undefined as undefined };
242
+ /**
243
+ * @type {$Schema<void>}
244
+ */
245
+ export const $void: $Schema<void>;
246
+ export const $null: $Schema<null>;
246
247
  /**
247
248
  * Assert that a variable is of this specific type.
248
249
  * The assertion check is only performed in non-production environments.
@@ -252,17 +253,30 @@ export const string: $Schema<string>;
252
253
  export const assert: <T>(o: any, schema: $Schema<T>) => asserts o is T;
253
254
  export type LiteralType = string | number | bigint | boolean | null | undefined;
254
255
  export type AnyObject = {
255
- [k: string]: any;
256
- [k: number]: any;
257
- [k: symbol]: any;
256
+ [k: string | number | symbol]: any;
258
257
  };
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>] : [];
258
+ export type Unwrap<T> = T extends $Schema<infer X> ? X : T;
259
+ export type UnwrapArray<T extends readonly unknown[]> = T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [];
262
260
  export type CastToSchema<T> = T extends $Schema<infer S> ? $Schema<S> : never;
263
261
  export type TupleLast<Arr extends unknown[]> = Arr extends [...unknown[], infer L] ? L : never;
264
262
  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>>;
263
+ export type Intersect<T extends readonly unknown[]> = T extends [] ? {} : T extends [infer First] ? First : T extends [infer First, ...infer Rest] ? First & Intersect<Rest> : never;
264
+ export type $ObjectToType<S extends {
265
+ [key: string | symbol | number]: $Schema<any>;
266
+ }> = { [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; };
267
+ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: UnwrapArray<TuplePop<Args>>) => Unwrap<TupleLast<Args>>;
268
+ /**
269
+ * @template {$Schema<any>} S
270
+ * @extends $Schema<Unwrap<S>|undefined>
271
+ */
272
+ declare class $Optional<S extends $Schema<any>> extends $Schema<Unwrap<S> | undefined> {
273
+ /**
274
+ * @param {S} s
275
+ */
276
+ constructor(s: S);
277
+ s: S;
278
+ get [isOptionalSymbol](): boolean;
279
+ }
266
280
  /**
267
281
  * @typedef {string|number|bigint|boolean|null|undefined} LiteralType
268
282
  */
@@ -271,22 +285,11 @@ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: ExtractTy
271
285
  */
272
286
  /**
273
287
  * @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
288
+ * @typedef {T extends $Schema<infer X> ? X : T} Unwrap
286
289
  */
287
290
  /**
288
291
  * @template {readonly unknown[]} T
289
- * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...ExtractTypesFromSchemaArray<Rest>] : [] } ExtractTypesFromSchemaArray
292
+ * @typedef {T extends readonly [$Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [] } UnwrapArray
290
293
  */
291
294
  /**
292
295
  * @template T
@@ -300,18 +303,21 @@ export type _LArgsToLambdaDef<Args extends $Schema<any>[]> = (...args: ExtractTy
300
303
  * @template {unknown[]} Arr
301
304
  * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop
302
305
  */
303
- declare const schemaSymbol: unique symbol;
304
306
  /**
305
- * @type {$Schema<null>}
306
- */
307
- declare const null_: $Schema<null>;
308
- /**
309
- * @type {$Schema<void>}
307
+ * @template {readonly unknown[]} T
308
+ * @typedef {T extends []
309
+ * ? {}
310
+ * : T extends [infer First]
311
+ * ? First
312
+ * : T extends [infer First, ...infer Rest]
313
+ * ? First & Intersect<Rest>
314
+ * : never
315
+ * } Intersect
310
316
  */
311
- declare const void_: $Schema<void>;
317
+ declare const schemaSymbol: unique symbol;
312
318
  /**
313
319
  * @type {$Schema<undefined>}
314
320
  */
315
- declare const undefined_: $Schema<undefined>;
316
- export { null_ as null, _null as null, void_ as void, _void as void, undefined_ as undefined };
321
+ declare const $undefined: $Schema<undefined>;
322
+ declare const isOptionalSymbol: unique symbol;
317
323
  //# 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":"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"}
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
  /**
@@ -89,14 +89,14 @@ export class $Schema {
89
89
  * @type {$Schema<T?>}
90
90
  */
91
91
  get nullable () {
92
- return union(this, null_)
92
+ return union(this, $null)
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,21 @@ 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 }>}
221
253
  */
222
- export const object = def => new $Object(def)
254
+ export const object = def => /** @type {any} */ (new $Object(def))
223
255
 
224
256
  /**
225
257
  * @template {$Schema<string|number|symbol>} Keys
@@ -347,7 +379,7 @@ export const instance = c => new $InstanceOf(c)
347
379
 
348
380
  /**
349
381
  * @template {$Schema<any>[]} Args
350
- * @typedef {(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>} _LArgsToLambdaDef
382
+ * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef
351
383
  */
352
384
 
353
385
  /**
@@ -377,13 +409,13 @@ export class $Lambda extends $Schema {
377
409
  /**
378
410
  * @template {$Schema<any>[]} Args
379
411
  * @param {Args} args
380
- * @return {$Schema<(...args:ExtractTypesFromSchemaArray<TuplePop<Args>>)=>TypeOfSchema<TupleLast<Args>>>}
412
+ * @return {$Schema<(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>>}
381
413
  */
382
- export const lambda = (...args) => new $Lambda(args.length > 0 ? args : [void_])
414
+ export const lambda = (...args) => new $Lambda(args.length > 0 ? args : [$void])
383
415
 
384
416
  /**
385
417
  * @template {Array<$Schema<any>>} T
386
- * @extends {$Schema<Intersect<ExtractTypesFromSchemaArray<T>>>}
418
+ * @extends {$Schema<Intersect<UnwrapArray<T>>>}
387
419
  */
388
420
  export class $Intersection extends $Schema {
389
421
  /**
@@ -399,7 +431,7 @@ export class $Intersection extends $Schema {
399
431
 
400
432
  /**
401
433
  * @param {any} o
402
- * @return {o is Intersect<ExtractTypesFromSchemaArray<T>>}
434
+ * @return {o is Intersect<UnwrapArray<T>>}
403
435
  */
404
436
  check (o) {
405
437
  // @ts-ignore
@@ -441,7 +473,7 @@ export class $Union extends $Schema {
441
473
  /**
442
474
  * @template {Array<$Schema<any>>} T
443
475
  * @param {T} def
444
- * @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)>>}
445
477
  */
446
478
  export const union = (...def) => $Union.schema.check(def[0]) ? new $Union([...def[0].v, ...def.slice(1)]) : new $Union(def)
447
479
 
@@ -473,19 +505,16 @@ export const string = constructedBy(String)
473
505
  /**
474
506
  * @type {$Schema<undefined>}
475
507
  */
476
- const undefined_ = literal(undefined)
508
+ const $undefined = literal(undefined)
477
509
 
478
- /**
479
- * @type {$Schema<void>}
480
- */
481
- const void_ = undefined_
510
+ export { $undefined as undefined }
482
511
 
483
512
  /**
484
- * @type {$Schema<null>}
513
+ * @type {$Schema<void>}
485
514
  */
486
- const null_ = literal(null)
515
+ export const $void = literal(undefined)
487
516
 
488
- export { null_ as null, void_ as void, undefined_ as undefined }
517
+ export const $null = /** @type {$Schema<null>} */ (literal(null))
489
518
 
490
519
  /* c8 ignore start */
491
520
  /**
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,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"}
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/testing.d.ts CHANGED
@@ -45,11 +45,11 @@ export function group(description: string, f: (...args: any[]) => void): void;
45
45
  export function groupAsync(description: string, f: (...args: any[]) => Promise<any>): Promise<void>;
46
46
  export function measureTime(message: string, f: (...args: any[]) => void): number;
47
47
  export function measureTimeAsync(message: string, f: (...args: any[]) => Promise<any>): Promise<number>;
48
- export function compareArrays<T>(as: T[], bs: T[], m?: string | undefined): boolean;
49
- export function compareStrings(a: string, b: string, m?: string | undefined): void;
50
- export function compareObjects<K, V>(a: any, b: any, m?: string | undefined): void;
51
- 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;
52
- 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>;
53
53
  export function promiseRejected(f: (...args: any[]) => Promise<any>): Promise<void>;
54
54
  export function fails(f: (...args: any[]) => void): void;
55
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":";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,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;sBA/kBqB,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')
@@ -1 +1 @@
1
- {"version":3,"file":"testing.test.d.ts","sourceRoot":"","sources":["testing.test.js"],"names":[],"mappings":"AAQO,4CAEN;AAEM,yCAMN;AAKM,mCAFI,EAAE,QAAQ,QAqGpB;AAEM,6CAcN;AAEM,qCAMN;AAEM,2CAIN;AAEM,6CAON;mBAjKkB,cAAc"}
1
+ {"version":3,"file":"testing.test.d.ts","sourceRoot":"","sources":["testing.test.js"],"names":[],"mappings":"AAQO,4CAEN;AAEM,yCAMN;AAKM,mCAFI,CAAC,CAAC,QAAQ,QAqGpB;AAEM,6CAcN;AAEM,qCAMN;AAEM,2CAIN;AAEM,6CAON;mBAjKkB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"time.test.d.ts","sourceRoot":"","sources":["time.test.js"],"names":[],"mappings":"AAOO,6BAFI,EAAE,QAAQ,QAMpB;AAKM,sCAFI,EAAE,QAAQ,QAmBpB;mBAhCkB,cAAc"}
1
+ {"version":3,"file":"time.test.d.ts","sourceRoot":"","sources":["time.test.js"],"names":[],"mappings":"AAOO,6BAFI,CAAC,CAAC,QAAQ,QAMpB;AAKM,sCAFI,CAAC,CAAC,QAAQ,QAmBpB;mBAhCkB,cAAc"}