@evolu/common 8.4.0 → 8.6.0

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 (353) hide show
  1. package/dist/src/Array.d.ts +191 -94
  2. package/dist/src/Array.d.ts.map +1 -1
  3. package/dist/src/Array.js +91 -40
  4. package/dist/src/Assert.d.ts +233 -30
  5. package/dist/src/Assert.d.ts.map +1 -1
  6. package/dist/src/Assert.js +151 -30
  7. package/dist/src/BigInt.d.ts +3 -3
  8. package/dist/src/BigInt.js +3 -3
  9. package/dist/src/Brand.d.ts +7 -7
  10. package/dist/src/Buffer.d.ts +12 -4
  11. package/dist/src/Buffer.d.ts.map +1 -1
  12. package/dist/src/Cache.d.ts +8 -3
  13. package/dist/src/Cache.d.ts.map +1 -1
  14. package/dist/src/Cache.js +8 -3
  15. package/dist/src/Callbacks.d.ts +8 -4
  16. package/dist/src/Callbacks.d.ts.map +1 -1
  17. package/dist/src/Console.d.ts +45 -30
  18. package/dist/src/Console.d.ts.map +1 -1
  19. package/dist/src/Console.js +32 -21
  20. package/dist/src/Crypto.d.ts +13 -8
  21. package/dist/src/Crypto.d.ts.map +1 -1
  22. package/dist/src/Crypto.js +6 -3
  23. package/dist/src/Eq.d.ts +107 -58
  24. package/dist/src/Eq.d.ts.map +1 -1
  25. package/dist/src/Eq.js +308 -112
  26. package/dist/src/Function.d.ts +54 -24
  27. package/dist/src/Function.d.ts.map +1 -1
  28. package/dist/src/Function.js +34 -17
  29. package/dist/src/Http.d.ts +52 -19
  30. package/dist/src/Http.d.ts.map +1 -1
  31. package/dist/src/Identicon.d.ts +9 -4
  32. package/dist/src/Identicon.d.ts.map +1 -1
  33. package/dist/src/Identicon.js +9 -4
  34. package/dist/src/LeakDetector.d.ts.map +1 -1
  35. package/dist/src/LeakDetector.js +4 -1
  36. package/dist/src/LockManager.d.ts +12 -10
  37. package/dist/src/LockManager.d.ts.map +1 -1
  38. package/dist/src/Lookup.d.ts +4 -2
  39. package/dist/src/Lookup.d.ts.map +1 -1
  40. package/dist/src/Lookup.js +5 -2
  41. package/dist/src/Number.d.ts +28 -24
  42. package/dist/src/Number.d.ts.map +1 -1
  43. package/dist/src/Number.js +16 -17
  44. package/dist/src/Object.d.ts +89 -47
  45. package/dist/src/Object.d.ts.map +1 -1
  46. package/dist/src/Object.js +88 -41
  47. package/dist/src/Option.d.ts +14 -5
  48. package/dist/src/Option.d.ts.map +1 -1
  49. package/dist/src/Option.js +14 -5
  50. package/dist/src/Order.d.ts +12 -12
  51. package/dist/src/Order.js +12 -12
  52. package/dist/src/Platform.d.ts +2 -2
  53. package/dist/src/Platform.js +1 -0
  54. package/dist/src/Random.d.ts +7 -4
  55. package/dist/src/Random.d.ts.map +1 -1
  56. package/dist/src/Redacted.d.ts +13 -6
  57. package/dist/src/Redacted.d.ts.map +1 -1
  58. package/dist/src/Redacted.js +4 -2
  59. package/dist/src/Ref.d.ts +4 -4
  60. package/dist/src/Relation.d.ts +5 -7
  61. package/dist/src/Relation.d.ts.map +1 -1
  62. package/dist/src/Relation.js +3 -3
  63. package/dist/src/Resource.d.ts +27 -12
  64. package/dist/src/Resource.d.ts.map +1 -1
  65. package/dist/src/Resource.js +9 -3
  66. package/dist/src/Result.d.ts +258 -114
  67. package/dist/src/Result.d.ts.map +1 -1
  68. package/dist/src/Result.js +74 -39
  69. package/dist/src/Schedule.d.ts +233 -116
  70. package/dist/src/Schedule.d.ts.map +1 -1
  71. package/dist/src/Schedule.js +204 -110
  72. package/dist/src/Set.d.ts +43 -24
  73. package/dist/src/Set.d.ts.map +1 -1
  74. package/dist/src/Set.js +25 -13
  75. package/dist/src/Sqlite.d.ts +4 -4
  76. package/dist/src/Sqlite.d.ts.map +1 -1
  77. package/dist/src/Sqlite.js +18 -15
  78. package/dist/src/Store.d.ts.map +1 -1
  79. package/dist/src/Store.js +3 -1
  80. package/dist/src/String.d.ts.map +1 -1
  81. package/dist/src/String.js +1 -1
  82. package/dist/src/Task.d.ts +555 -264
  83. package/dist/src/Task.d.ts.map +1 -1
  84. package/dist/src/Task.js +278 -168
  85. package/dist/src/Test.d.ts +10 -4
  86. package/dist/src/Test.d.ts.map +1 -1
  87. package/dist/src/Test.js +11 -4
  88. package/dist/src/Time.d.ts +27 -17
  89. package/dist/src/Time.d.ts.map +1 -1
  90. package/dist/src/Time.js +25 -8
  91. package/dist/src/Type.d.ts +1218 -372
  92. package/dist/src/Type.d.ts.map +1 -1
  93. package/dist/src/Type.js +1056 -379
  94. package/dist/src/Types.d.ts +95 -40
  95. package/dist/src/Types.d.ts.map +1 -1
  96. package/dist/src/Types.js +13 -4
  97. package/dist/src/WebSocket.d.ts +14 -6
  98. package/dist/src/WebSocket.d.ts.map +1 -1
  99. package/dist/src/WebSocket.js +8 -0
  100. package/dist/src/Worker.d.ts +10 -6
  101. package/dist/src/Worker.d.ts.map +1 -1
  102. package/dist/src/Worker.js +1 -1
  103. package/dist/src/intl/_en.d.ts +3 -1
  104. package/dist/src/intl/_en.d.ts.map +1 -1
  105. package/dist/src/intl/_en.js +17 -3
  106. package/dist/src/intl/ar.d.ts +3 -1
  107. package/dist/src/intl/ar.d.ts.map +1 -1
  108. package/dist/src/intl/ar.js +15 -2
  109. package/dist/src/intl/bn.d.ts +3 -1
  110. package/dist/src/intl/bn.d.ts.map +1 -1
  111. package/dist/src/intl/bn.js +16 -3
  112. package/dist/src/intl/ca.d.ts +3 -1
  113. package/dist/src/intl/ca.d.ts.map +1 -1
  114. package/dist/src/intl/ca.js +16 -3
  115. package/dist/src/intl/cs.d.ts +3 -1
  116. package/dist/src/intl/cs.d.ts.map +1 -1
  117. package/dist/src/intl/cs.js +16 -3
  118. package/dist/src/intl/da.d.ts +3 -1
  119. package/dist/src/intl/da.d.ts.map +1 -1
  120. package/dist/src/intl/da.js +16 -3
  121. package/dist/src/intl/de.d.ts +3 -1
  122. package/dist/src/intl/de.d.ts.map +1 -1
  123. package/dist/src/intl/de.js +16 -3
  124. package/dist/src/intl/el.d.ts +3 -1
  125. package/dist/src/intl/el.d.ts.map +1 -1
  126. package/dist/src/intl/el.js +16 -3
  127. package/dist/src/intl/es.d.ts +3 -1
  128. package/dist/src/intl/es.d.ts.map +1 -1
  129. package/dist/src/intl/es.js +16 -3
  130. package/dist/src/intl/fa.d.ts +3 -1
  131. package/dist/src/intl/fa.d.ts.map +1 -1
  132. package/dist/src/intl/fa.js +16 -3
  133. package/dist/src/intl/fi.d.ts +3 -1
  134. package/dist/src/intl/fi.d.ts.map +1 -1
  135. package/dist/src/intl/fi.js +16 -3
  136. package/dist/src/intl/fil.d.ts +3 -1
  137. package/dist/src/intl/fil.d.ts.map +1 -1
  138. package/dist/src/intl/fil.js +16 -3
  139. package/dist/src/intl/fr.d.ts +3 -1
  140. package/dist/src/intl/fr.d.ts.map +1 -1
  141. package/dist/src/intl/fr.js +16 -3
  142. package/dist/src/intl/he.d.ts +3 -1
  143. package/dist/src/intl/he.d.ts.map +1 -1
  144. package/dist/src/intl/he.js +16 -3
  145. package/dist/src/intl/hi.d.ts +3 -1
  146. package/dist/src/intl/hi.d.ts.map +1 -1
  147. package/dist/src/intl/hi.js +16 -3
  148. package/dist/src/intl/hr.d.ts +3 -1
  149. package/dist/src/intl/hr.d.ts.map +1 -1
  150. package/dist/src/intl/hr.js +16 -3
  151. package/dist/src/intl/hu.d.ts +2 -1
  152. package/dist/src/intl/hu.d.ts.map +1 -1
  153. package/dist/src/intl/hu.js +15 -3
  154. package/dist/src/intl/id.d.ts +3 -1
  155. package/dist/src/intl/id.d.ts.map +1 -1
  156. package/dist/src/intl/id.js +16 -3
  157. package/dist/src/intl/it.d.ts +3 -1
  158. package/dist/src/intl/it.d.ts.map +1 -1
  159. package/dist/src/intl/it.js +16 -3
  160. package/dist/src/intl/ja.d.ts +3 -1
  161. package/dist/src/intl/ja.d.ts.map +1 -1
  162. package/dist/src/intl/ja.js +16 -3
  163. package/dist/src/intl/ko.d.ts +3 -1
  164. package/dist/src/intl/ko.d.ts.map +1 -1
  165. package/dist/src/intl/ko.js +16 -3
  166. package/dist/src/intl/ml.d.ts +3 -1
  167. package/dist/src/intl/ml.d.ts.map +1 -1
  168. package/dist/src/intl/ml.js +16 -3
  169. package/dist/src/intl/mr.d.ts +3 -1
  170. package/dist/src/intl/mr.d.ts.map +1 -1
  171. package/dist/src/intl/mr.js +16 -3
  172. package/dist/src/intl/ms.d.ts +3 -1
  173. package/dist/src/intl/ms.d.ts.map +1 -1
  174. package/dist/src/intl/ms.js +15 -2
  175. package/dist/src/intl/nb.d.ts +2 -1
  176. package/dist/src/intl/nb.d.ts.map +1 -1
  177. package/dist/src/intl/nb.js +14 -2
  178. package/dist/src/intl/nl.d.ts +3 -1
  179. package/dist/src/intl/nl.d.ts.map +1 -1
  180. package/dist/src/intl/nl.js +16 -3
  181. package/dist/src/intl/pa.d.ts +3 -1
  182. package/dist/src/intl/pa.d.ts.map +1 -1
  183. package/dist/src/intl/pa.js +16 -3
  184. package/dist/src/intl/pl.d.ts +2 -0
  185. package/dist/src/intl/pl.d.ts.map +1 -1
  186. package/dist/src/intl/pl.js +15 -2
  187. package/dist/src/intl/pt-BR.d.ts +3 -1
  188. package/dist/src/intl/pt-BR.d.ts.map +1 -1
  189. package/dist/src/intl/pt-BR.js +16 -3
  190. package/dist/src/intl/pt.d.ts +3 -1
  191. package/dist/src/intl/pt.d.ts.map +1 -1
  192. package/dist/src/intl/pt.js +15 -2
  193. package/dist/src/intl/ro.d.ts +3 -1
  194. package/dist/src/intl/ro.d.ts.map +1 -1
  195. package/dist/src/intl/ro.js +16 -3
  196. package/dist/src/intl/sk.d.ts +3 -1
  197. package/dist/src/intl/sk.d.ts.map +1 -1
  198. package/dist/src/intl/sk.js +15 -2
  199. package/dist/src/intl/sl.d.ts +3 -1
  200. package/dist/src/intl/sl.d.ts.map +1 -1
  201. package/dist/src/intl/sl.js +16 -3
  202. package/dist/src/intl/sv.d.ts +3 -1
  203. package/dist/src/intl/sv.d.ts.map +1 -1
  204. package/dist/src/intl/sv.js +16 -3
  205. package/dist/src/intl/sw.d.ts +1 -0
  206. package/dist/src/intl/sw.d.ts.map +1 -1
  207. package/dist/src/intl/sw.js +14 -2
  208. package/dist/src/intl/ta.d.ts +3 -1
  209. package/dist/src/intl/ta.d.ts.map +1 -1
  210. package/dist/src/intl/ta.js +16 -3
  211. package/dist/src/intl/te.d.ts +3 -1
  212. package/dist/src/intl/te.d.ts.map +1 -1
  213. package/dist/src/intl/te.js +16 -3
  214. package/dist/src/intl/th.d.ts +3 -1
  215. package/dist/src/intl/th.d.ts.map +1 -1
  216. package/dist/src/intl/th.js +16 -3
  217. package/dist/src/intl/tr.d.ts +3 -1
  218. package/dist/src/intl/tr.d.ts.map +1 -1
  219. package/dist/src/intl/tr.js +16 -3
  220. package/dist/src/intl/uk.d.ts +3 -1
  221. package/dist/src/intl/uk.d.ts.map +1 -1
  222. package/dist/src/intl/uk.js +16 -3
  223. package/dist/src/intl/ur.d.ts +3 -1
  224. package/dist/src/intl/ur.d.ts.map +1 -1
  225. package/dist/src/intl/ur.js +15 -2
  226. package/dist/src/intl/vi.d.ts +3 -1
  227. package/dist/src/intl/vi.d.ts.map +1 -1
  228. package/dist/src/intl/vi.js +16 -3
  229. package/dist/src/intl/zh-CN.d.ts +3 -1
  230. package/dist/src/intl/zh-CN.d.ts.map +1 -1
  231. package/dist/src/intl/zh-CN.js +16 -3
  232. package/dist/src/intl/zh-TW.d.ts +3 -1
  233. package/dist/src/intl/zh-TW.d.ts.map +1 -1
  234. package/dist/src/intl/zh-TW.js +16 -3
  235. package/dist/src/local-first/Db.js +3 -2
  236. package/dist/src/local-first/Evolu.d.ts +47 -24
  237. package/dist/src/local-first/Evolu.d.ts.map +1 -1
  238. package/dist/src/local-first/Evolu.js +1 -0
  239. package/dist/src/local-first/Owner.d.ts +18 -14
  240. package/dist/src/local-first/Owner.d.ts.map +1 -1
  241. package/dist/src/local-first/Owner.js +14 -11
  242. package/dist/src/local-first/Protocol.d.ts +5 -5
  243. package/dist/src/local-first/Protocol.d.ts.map +1 -1
  244. package/dist/src/local-first/Protocol.js +35 -29
  245. package/dist/src/local-first/Query.d.ts +34 -21
  246. package/dist/src/local-first/Query.d.ts.map +1 -1
  247. package/dist/src/local-first/Query.js +27 -14
  248. package/dist/src/local-first/Relay.d.ts +12 -5
  249. package/dist/src/local-first/Relay.d.ts.map +1 -1
  250. package/dist/src/local-first/Relay.js +1 -1
  251. package/dist/src/local-first/Schema.d.ts +19 -11
  252. package/dist/src/local-first/Schema.d.ts.map +1 -1
  253. package/dist/src/local-first/Schema.js +11 -6
  254. package/dist/src/local-first/Shared.d.ts.map +1 -1
  255. package/dist/src/local-first/Shared.js +4 -2
  256. package/dist/src/local-first/Storage.d.ts +4 -2
  257. package/dist/src/local-first/Storage.d.ts.map +1 -1
  258. package/dist/src/local-first/Timestamp.d.ts.map +1 -1
  259. package/dist/src/local-first/Timestamp.js +1 -1
  260. package/package.json +3 -4
  261. package/src/Array.ts +195 -95
  262. package/src/Assert.ts +337 -31
  263. package/src/BigInt.ts +3 -3
  264. package/src/Brand.ts +7 -7
  265. package/src/Buffer.ts +12 -4
  266. package/src/Cache.ts +8 -3
  267. package/src/Callbacks.ts +8 -4
  268. package/src/Console.ts +45 -30
  269. package/src/Crypto.ts +13 -8
  270. package/src/Eq.ts +450 -122
  271. package/src/Function.ts +54 -24
  272. package/src/Http.ts +52 -19
  273. package/src/Identicon.ts +9 -4
  274. package/src/LeakDetector.ts +4 -3
  275. package/src/LockManager.ts +12 -10
  276. package/src/Lookup.ts +5 -2
  277. package/src/Number.ts +28 -24
  278. package/src/Object.ts +115 -49
  279. package/src/Option.ts +14 -5
  280. package/src/Order.ts +12 -12
  281. package/src/Platform.ts +3 -2
  282. package/src/Random.ts +7 -4
  283. package/src/Redacted.ts +13 -6
  284. package/src/Ref.ts +4 -4
  285. package/src/Relation.ts +8 -10
  286. package/src/Resource.ts +36 -15
  287. package/src/Result.ts +263 -119
  288. package/src/Schedule.ts +233 -116
  289. package/src/Set.ts +43 -24
  290. package/src/Sqlite.ts +18 -15
  291. package/src/Store.ts +3 -1
  292. package/src/String.ts +1 -1
  293. package/src/Task.ts +566 -286
  294. package/src/Test.ts +11 -4
  295. package/src/Time.ts +36 -19
  296. package/src/Type.ts +2191 -590
  297. package/src/Types.ts +108 -40
  298. package/src/WebSocket.ts +22 -6
  299. package/src/Worker.ts +11 -7
  300. package/src/intl/_en.ts +20 -4
  301. package/src/intl/ar.ts +17 -2
  302. package/src/intl/bn.ts +19 -4
  303. package/src/intl/ca.ts +19 -4
  304. package/src/intl/cs.ts +19 -4
  305. package/src/intl/da.ts +19 -4
  306. package/src/intl/de.ts +19 -4
  307. package/src/intl/el.ts +19 -4
  308. package/src/intl/es.ts +19 -4
  309. package/src/intl/fa.ts +19 -4
  310. package/src/intl/fi.ts +19 -4
  311. package/src/intl/fil.ts +19 -4
  312. package/src/intl/fr.ts +19 -4
  313. package/src/intl/he.ts +19 -4
  314. package/src/intl/hi.ts +19 -4
  315. package/src/intl/hr.ts +19 -4
  316. package/src/intl/hu.ts +18 -4
  317. package/src/intl/id.ts +19 -4
  318. package/src/intl/it.ts +19 -4
  319. package/src/intl/ja.ts +19 -4
  320. package/src/intl/ko.ts +19 -4
  321. package/src/intl/ml.ts +19 -4
  322. package/src/intl/mr.ts +19 -4
  323. package/src/intl/ms.ts +17 -2
  324. package/src/intl/nb.ts +16 -2
  325. package/src/intl/nl.ts +19 -4
  326. package/src/intl/pa.ts +19 -4
  327. package/src/intl/pl.ts +18 -2
  328. package/src/intl/pt-BR.ts +19 -4
  329. package/src/intl/pt.ts +17 -2
  330. package/src/intl/ro.ts +19 -4
  331. package/src/intl/sk.ts +17 -2
  332. package/src/intl/sl.ts +19 -4
  333. package/src/intl/sv.ts +19 -4
  334. package/src/intl/sw.ts +15 -2
  335. package/src/intl/ta.ts +19 -4
  336. package/src/intl/te.ts +19 -4
  337. package/src/intl/th.ts +19 -4
  338. package/src/intl/tr.ts +19 -4
  339. package/src/intl/uk.ts +19 -4
  340. package/src/intl/ur.ts +17 -2
  341. package/src/intl/vi.ts +19 -3
  342. package/src/intl/zh-CN.ts +19 -4
  343. package/src/intl/zh-TW.ts +19 -4
  344. package/src/local-first/Db.ts +2 -1
  345. package/src/local-first/Evolu.ts +48 -24
  346. package/src/local-first/Owner.ts +18 -14
  347. package/src/local-first/Protocol.ts +45 -35
  348. package/src/local-first/Query.ts +40 -24
  349. package/src/local-first/Relay.ts +13 -6
  350. package/src/local-first/Schema.ts +19 -11
  351. package/src/local-first/Shared.ts +4 -2
  352. package/src/local-first/Storage.ts +4 -2
  353. package/src/local-first/Timestamp.ts +1 -1
@@ -16,13 +16,16 @@
16
16
  * to track:
17
17
  *
18
18
  * ```ts
19
- * const sortScores = (arr: number[]) => arr.sort((a, b) => a - b);
19
+ * import { assertEqual, assertSame } from "@evolu/common";
20
+ *
21
+ * // oxlint-disable-next-line unicorn/no-array-sort -- This example intentionally demonstrates mutating Array.sort.
22
+ * const sortScores = (arr: Array<number>) => arr.sort((a, b) => a - b);
20
23
  *
21
24
  * const scores = [3, 1, 2];
22
25
  * const leaderboard = sortScores(scores);
23
- * expect(leaderboard).toEqual([1, 2, 3]);
24
- * expect(scores).toEqual([1, 2, 3]);
25
- * expect(leaderboard).toBe(scores);
26
+ * assertEqual(leaderboard, [1, 2, 3]);
27
+ * assertEqual(scores, [1, 2, 3]);
28
+ * assertSame(leaderboard, scores);
26
29
  * ```
27
30
  *
28
31
  * Imagine every method doing that.
@@ -31,30 +34,35 @@
31
34
  * instead:
32
35
  *
33
36
  * ```ts
34
- * import { sortArray } from "@evolu/common";
37
+ * import { assertEqual, assertTrue, sortArray } from "@evolu/common";
35
38
  *
36
39
  * const sortScores = (arr: ReadonlyArray<number>) =>
37
40
  * sortArray(arr, (a, b) => a - b);
38
41
  *
39
42
  * const scores: ReadonlyArray<number> = [3, 1, 2];
40
43
  * const leaderboard = sortScores(scores);
41
- * expect(leaderboard).toEqual([1, 2, 3]);
42
- * expect(scores).toEqual([3, 1, 2]);
43
- * expect(leaderboard).not.toBe(scores);
44
+ * assertEqual(leaderboard, [1, 2, 3]);
45
+ * assertEqual(scores, [3, 1, 2]);
46
+ * assertTrue(leaderboard !== scores);
44
47
  * ```
45
48
  *
46
49
  * Even better, require a {@link NonEmptyReadonlyArray} — there's nothing to sort
47
50
  * if the array is empty anyway:
48
51
  *
49
52
  * ```ts
50
- * import { sortArray, type NonEmptyReadonlyArray } from "@evolu/common";
53
+ * import {
54
+ * assertEqual,
55
+ * assertType,
56
+ * sortArray,
57
+ * type NonEmptyReadonlyArray,
58
+ * } from "@evolu/common";
51
59
  *
52
60
  * const sortScores = (arr: NonEmptyReadonlyArray<number>) =>
53
61
  * sortArray(arr, (a, b) => a - b);
54
62
  *
55
63
  * const leaderboard = sortScores([3, 1, 2]);
56
- * expect(leaderboard).toEqual([1, 2, 3]);
57
- * expectTypeOf(leaderboard).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
64
+ * assertEqual(leaderboard, [1, 2, 3]);
65
+ * assertType<NonEmptyReadonlyArray<number>, typeof leaderboard>();
58
66
  * ```
59
67
  *
60
68
  * Sorting an empty array isn't expensive, but functions can have side effects
@@ -68,13 +76,16 @@
68
76
  * readonly arrays without mutation — use them directly.
69
77
  *
70
78
  * ```ts
71
- * import { type NonEmptyReadonlyArray } from "@evolu/common";
79
+ * import { assertEqual, type NonEmptyReadonlyArray } from "@evolu/common";
72
80
  *
73
81
  * const valid: NonEmptyReadonlyArray<number> = [1, 2, 3];
74
82
  * // @ts-expect-error An empty array is not non-empty.
75
- * const invalid: NonEmptyReadonlyArray<number> = [];
83
+ * const _invalid: NonEmptyReadonlyArray<number> = [];
76
84
  *
77
- * expect(valid.find((value) => value === 2)).toBe(2);
85
+ * assertEqual(
86
+ * valid.find((value) => value === 2),
87
+ * 2,
88
+ * );
78
89
  * ```
79
90
  *
80
91
  * ## Composition
@@ -83,7 +94,7 @@
83
94
  * because it's natural for single operations:
84
95
  *
85
96
  * ```ts
86
- * import { mapArray } from "@evolu/common";
97
+ * import { assertEqual, mapArray } from "@evolu/common";
87
98
  *
88
99
  * interface Message {
89
100
  * readonly timestamp: number;
@@ -94,7 +105,7 @@
94
105
  * { timestamp: 20 },
95
106
  * ];
96
107
  * const timestamps = mapArray(messages, (m) => m.timestamp);
97
- * expect(timestamps).toEqual([10, 20]);
108
+ * assertEqual(timestamps, [10, 20]);
98
109
  * ```
99
110
  *
100
111
  * Data-first style also reads well for a few operations, often fitting on a
@@ -102,6 +113,7 @@
102
113
  *
103
114
  * ```ts
104
115
  * import {
116
+ * assertEqual,
105
117
  * dedupeArray,
106
118
  * filterArray,
107
119
  * firstInArray,
@@ -113,11 +125,11 @@
113
125
  * } from "@evolu/common";
114
126
  *
115
127
  * const cheapest = firstInArray(sortArray([30, 10, 20], orderNumber));
116
- * expect(cheapest).toBe(10);
128
+ * assertEqual(cheapest, 10);
117
129
  *
118
130
  * const users = [{ name: "Ada" }, { name: "Linus" }, { name: "Ada" }];
119
131
  * const uniqueNames = dedupeArray(mapArray(users, (u) => u.name));
120
- * expect(uniqueNames).toEqual(["Ada", "Linus"]);
132
+ * assertEqual(uniqueNames, ["Ada", "Linus"]);
121
133
  *
122
134
  * const jobs = [
123
135
  * { id: 1, done: false },
@@ -127,7 +139,7 @@
127
139
  * if (!isNonEmptyArray(completedJobs)) throw new Error("Expected a job");
128
140
  * const latestDone = lastInArray(completedJobs);
129
141
  *
130
- * expect(latestDone).toEqual({ id: 2, done: true });
142
+ * assertEqual(latestDone, { id: 2, done: true });
131
143
  * ```
132
144
  *
133
145
  * For more operations, create a function like `getOldestActiveUser` or a
@@ -168,6 +180,34 @@ export type AtLeastTwoReadonlyArray<T> = readonly [T, T, ...ReadonlyArray<T>];
168
180
  * @group Constants
169
181
  */
170
182
  export declare const emptyArray: ReadonlyArray<never>;
183
+ /**
184
+ * Creates a mutable sparse Array with the specified length.
185
+ *
186
+ * Use it to build an Array with indexed writes when its final length is known.
187
+ * Assign every index before exposing the completed Array as readonly.
188
+ *
189
+ * ### Example
190
+ *
191
+ * ```ts
192
+ * import {
193
+ * assertEqual,
194
+ * assertType,
195
+ * createMutableArray,
196
+ * } from "@evolu/common";
197
+ *
198
+ * const values = createMutableArray<number>(3);
199
+ *
200
+ * for (let index = 0; index < values.length; index++) {
201
+ * values[index] = index * 10;
202
+ * }
203
+ *
204
+ * assertEqual(values, [0, 10, 20]);
205
+ * assertType<Array<number>, typeof values>();
206
+ * ```
207
+ *
208
+ * @group Constructors
209
+ */
210
+ export declare const createMutableArray: <T>(length: number) => Array<T>;
171
211
  /**
172
212
  * Better `Array.from`.
173
213
  *
@@ -179,16 +219,24 @@ export declare const emptyArray: ReadonlyArray<never>;
179
219
  * ### Creating from iterables and lengths
180
220
  *
181
221
  * ```ts
182
- * import { arrayFrom } from "@evolu/common";
222
+ * import {
223
+ * assertEqual,
224
+ * assertSame,
225
+ * assertType,
226
+ * arrayFrom,
227
+ * } from "@evolu/common";
183
228
  *
184
229
  * const fromSet = arrayFrom(new Set([1, 2, 3]));
185
- * expect(fromSet).toEqual([1, 2, 3]);
186
- * expectTypeOf(fromSet).toEqualTypeOf<ReadonlyArray<number>>();
230
+ * assertEqual(fromSet, [1, 2, 3]);
231
+ * assertType<ReadonlyArray<number>, typeof fromSet>();
187
232
  *
188
- * expect(arrayFrom(3, (i) => i * 10)).toEqual([0, 10, 20]);
233
+ * assertEqual(
234
+ * arrayFrom(3, (i) => i * 10),
235
+ * [0, 10, 20],
236
+ * );
189
237
  *
190
238
  * const existing: ReadonlyArray<number> = [1, 2, 3];
191
- * expect(arrayFrom(existing)).toBe(existing);
239
+ * assertSame(arrayFrom(existing), existing);
192
240
  * ```
193
241
  *
194
242
  * Unlike `Array.from`, there's no map parameter for iterables — use
@@ -210,19 +258,24 @@ export declare function arrayFrom<T>(length: number, map: (index: number) => T):
210
258
  * ### Awaiting sync and async iterables
211
259
  *
212
260
  * ```ts
213
- * import { arrayFromAsync } from "@evolu/common";
261
+ * import { assertEqual, assertType, arrayFromAsync } from "@evolu/common";
214
262
  *
215
- * const fromIterable = await arrayFromAsync(new Set([1, 2, 3]));
216
- * expect(fromIterable).toEqual([1, 2, 3]);
263
+ * const fromIterable = await arrayFromAsync([
264
+ * Promise.resolve(1),
265
+ * Promise.resolve(2),
266
+ * Promise.resolve(3),
267
+ * ]);
268
+ * assertEqual(fromIterable, [1, 2, 3]);
217
269
  *
218
270
  * const fromAsyncIterable = await arrayFromAsync(
219
- * (async function* () {
220
- * yield Promise.resolve(1);
221
- * yield Promise.resolve(2);
271
+ * (async function* (): AsyncGenerator<number> {
272
+ * await Promise.resolve();
273
+ * yield 1;
274
+ * yield 2;
222
275
  * })(),
223
276
  * );
224
- * expect(fromAsyncIterable).toEqual([1, 2]);
225
- * expectTypeOf(fromAsyncIterable).toEqualTypeOf<ReadonlyArray<number>>();
277
+ * assertEqual(fromAsyncIterable, [1, 2]);
278
+ * assertType<ReadonlyArray<number>, typeof fromAsyncIterable>();
226
279
  * ```
227
280
  *
228
281
  * Unlike `Array.fromAsync`, there's no map parameter — map the result with
@@ -245,6 +298,8 @@ export declare const arrayFromAsync: <T>(iterable: AsyncIterable<T> | Iterable<T
245
298
  *
246
299
  * ```ts
247
300
  * import {
301
+ * assertEqual,
302
+ * assertType,
248
303
  * firstInArray,
249
304
  * isNonEmptyArray,
250
305
  * type NonEmptyArray,
@@ -257,9 +312,9 @@ export declare const arrayFromAsync: <T>(iterable: AsyncIterable<T> | Iterable<T
257
312
  * throw new Error("Expected values");
258
313
  * }
259
314
  *
260
- * expectTypeOf(mutable).toEqualTypeOf<NonEmptyArray<number>>();
261
- * expectTypeOf(readonly).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
262
- * expect(firstInArray(readonly)).toBe(1);
315
+ * assertType<NonEmptyArray<number>, typeof mutable>();
316
+ * assertType<NonEmptyReadonlyArray<number>, typeof readonly>();
317
+ * assertEqual(firstInArray(readonly), 1);
263
318
  * ```
264
319
  *
265
320
  * @group Types
@@ -274,13 +329,15 @@ export declare function isNonEmptyArray<T>(array: ReadonlyArray<T>): array is No
274
329
  *
275
330
  * ```ts
276
331
  * import {
332
+ * assertEqual,
333
+ * assertType,
277
334
  * appendToArray,
278
335
  * type NonEmptyReadonlyArray,
279
336
  * } from "@evolu/common";
280
337
  *
281
338
  * const values = appendToArray([1, 2, 3], 4);
282
- * expect(values).toEqual([1, 2, 3, 4]);
283
- * expectTypeOf(values).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
339
+ * assertEqual(values, [1, 2, 3, 4]);
340
+ * assertType<NonEmptyReadonlyArray<number>, typeof values>();
284
341
  * ```
285
342
  *
286
343
  * @group Transformations
@@ -293,13 +350,15 @@ export declare const appendToArray: <T>(array: ReadonlyArray<T>, item: T) => Non
293
350
  *
294
351
  * ```ts
295
352
  * import {
353
+ * assertEqual,
354
+ * assertType,
296
355
  * prependToArray,
297
356
  * type NonEmptyReadonlyArray,
298
357
  * } from "@evolu/common";
299
358
  *
300
359
  * const values = prependToArray([2, 3], 1);
301
- * expect(values).toEqual([1, 2, 3]);
302
- * expectTypeOf(values).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
360
+ * assertEqual(values, [1, 2, 3]);
361
+ * assertType<NonEmptyReadonlyArray<number>, typeof values>();
303
362
  * ```
304
363
  *
305
364
  * @group Transformations
@@ -313,17 +372,21 @@ export declare const prependToArray: <T>(array: ReadonlyArray<T>, item: T) => No
313
372
  * ### Mapping with indexes while preserving non-emptiness
314
373
  *
315
374
  * ```ts
316
- * import { mapArray, type NonEmptyReadonlyArray } from "@evolu/common";
375
+ * import {
376
+ * assertEqual,
377
+ * assertType,
378
+ * mapArray,
379
+ * type NonEmptyReadonlyArray,
380
+ * } from "@evolu/common";
317
381
  *
318
382
  * const values: ReadonlyArray<number> = [1, 2, 3];
319
383
  * const indexed = mapArray(values, (value, index) => value + index);
320
- * expect(indexed).toEqual([1, 3, 5]);
321
- * expectTypeOf(indexed).toEqualTypeOf<ReadonlyArray<number>>();
384
+ * assertEqual(indexed, [1, 3, 5]);
385
+ * assertType<ReadonlyArray<number>, typeof indexed>();
322
386
  *
323
387
  * const nonEmpty: NonEmptyReadonlyArray<number> = [1, 2, 3];
324
- * expectTypeOf(mapArray(nonEmpty, (x) => x * 2)).toEqualTypeOf<
325
- * NonEmptyReadonlyArray<number>
326
- * >();
388
+ * const doubled = mapArray(nonEmpty, (x) => x * 2);
389
+ * assertType<NonEmptyReadonlyArray<number>, typeof doubled>();
327
390
  * ```
328
391
  *
329
392
  * The mapper receives `(item, index, array)`, matching native `Array.map`.
@@ -343,7 +406,12 @@ export declare function mapArray<T, U>(array: ReadonlyArray<T>, mapper: (item: T
343
406
  * ### Flattening and expanding values
344
407
  *
345
408
  * ```ts
346
- * import { flatMapArray, type NonEmptyReadonlyArray } from "@evolu/common";
409
+ * import {
410
+ * assertEqual,
411
+ * assertType,
412
+ * flatMapArray,
413
+ * type NonEmptyReadonlyArray,
414
+ * } from "@evolu/common";
347
415
  *
348
416
  * const flattened = flatMapArray([
349
417
  * [1, 2],
@@ -354,9 +422,9 @@ export declare function mapArray<T, U>(array: ReadonlyArray<T>, mapper: (item: T
354
422
  * values,
355
423
  * (value, index): NonEmptyReadonlyArray<number> => [value, index],
356
424
  * );
357
- * expect(flattened).toEqual([1, 2, 3, 4]);
358
- * expectTypeOf(expanded).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
359
- * expect(expanded).toEqual([1, 0, 2, 1, 3, 2]);
425
+ * assertEqual(flattened, [1, 2, 3, 4]);
426
+ * assertType<NonEmptyReadonlyArray<number>, typeof expanded>();
427
+ * assertEqual(expanded, [1, 0, 2, 1, 3, 2]);
360
428
  * ```
361
429
  *
362
430
  * ### Filter and map in one pass
@@ -364,7 +432,7 @@ export declare function mapArray<T, U>(array: ReadonlyArray<T>, mapper: (item: T
364
432
  * Return `[]` to filter out, `[value]` to keep:
365
433
  *
366
434
  * ```ts
367
- * import { err, flatMapArray, ok } from "@evolu/common";
435
+ * import { assertEqual, err, flatMapArray, ok } from "@evolu/common";
368
436
  *
369
437
  * const validate = (value: number) =>
370
438
  * value > 0 ? ok(value) : err(`${value} is not positive`);
@@ -373,7 +441,7 @@ export declare function mapArray<T, U>(array: ReadonlyArray<T>, mapper: (item: T
373
441
  * const result = validate(f);
374
442
  * return result.ok ? [] : [result.error];
375
443
  * });
376
- * expect(errors).toEqual(["-2 is not positive", "-4 is not positive"]);
444
+ * assertEqual(errors, ["-2 is not positive", "-4 is not positive"]);
377
445
  * ```
378
446
  *
379
447
  * The mapper receives `(item, index, array)`, matching native `Array.flatMap`.
@@ -395,16 +463,21 @@ export declare function flatMapArray<T, U>(array: ReadonlyArray<T>, mapper: (ite
395
463
  * ### Concatenating non-empty inputs
396
464
  *
397
465
  * ```ts
398
- * import { concatArrays, type NonEmptyReadonlyArray } from "@evolu/common";
466
+ * import {
467
+ * assertEqual,
468
+ * assertType,
469
+ * concatArrays,
470
+ * type NonEmptyReadonlyArray,
471
+ * } from "@evolu/common";
399
472
  *
400
473
  * const nonEmpty: NonEmptyReadonlyArray<number> = [1];
401
474
  * const joined = concatArrays([1, 2], [3, 4]);
402
475
  * const fromLeft = concatArrays(nonEmpty, []);
403
476
  * const fromRight = concatArrays([], nonEmpty);
404
477
  *
405
- * expect(joined).toEqual([1, 2, 3, 4]);
406
- * expectTypeOf(fromLeft).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
407
- * expectTypeOf(fromRight).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
478
+ * assertEqual(joined, [1, 2, 3, 4]);
479
+ * assertType<NonEmptyReadonlyArray<number>, typeof fromLeft>();
480
+ * assertType<NonEmptyReadonlyArray<number>, typeof fromRight>();
408
481
  * ```
409
482
  *
410
483
  * @group Transformations
@@ -425,16 +498,18 @@ export declare function concatArrays<T>(first: ReadonlyArray<T>, second: Readonl
425
498
  * ### With predicate
426
499
  *
427
500
  * ```ts
428
- * import { filterArray } from "@evolu/common";
501
+ * import { assertEqual, filterArray } from "@evolu/common";
429
502
  *
430
503
  * const evens = filterArray([1, 2, 3, 4, 5], (x) => x % 2 === 0);
431
- * expect(evens).toEqual([2, 4]);
504
+ * assertEqual(evens, [2, 4]);
432
505
  * ```
433
506
  *
434
507
  * ### With refinement
435
508
  *
436
509
  * ```ts
437
510
  * import {
511
+ * assertEqual,
512
+ * assertType,
438
513
  * filterArray,
439
514
  * NonEmptyTrimmedString,
440
515
  * PositiveInt,
@@ -445,8 +520,8 @@ export declare function concatArrays<T>(first: ReadonlyArray<T>, second: Readonl
445
520
  * PositiveInt.orThrow(42),
446
521
  * ];
447
522
  * const positiveInts = filterArray(mixed, PositiveInt.is);
448
- * expect(positiveInts).toEqual([42]);
449
- * expectTypeOf(positiveInts).toEqualTypeOf<ReadonlyArray<PositiveInt>>();
523
+ * assertEqual(positiveInts, [42]);
524
+ * assertType<ReadonlyArray<PositiveInt>, typeof positiveInts>();
450
525
  * ```
451
526
  *
452
527
  * The predicate receives `(item, index, array)`, matching native
@@ -467,7 +542,12 @@ export declare function filterArray<T>(array: ReadonlyArray<T>, predicate: (item
467
542
  * ### Deduplicating by value or key
468
543
  *
469
544
  * ```ts
470
- * import { dedupeArray, type NonEmptyReadonlyArray } from "@evolu/common";
545
+ * import {
546
+ * assertEqual,
547
+ * assertType,
548
+ * dedupeArray,
549
+ * type NonEmptyReadonlyArray,
550
+ * } from "@evolu/common";
471
551
  *
472
552
  * const numbers = dedupeArray([1, 2, 1, 3, 2]);
473
553
  * const people = dedupeArray(
@@ -478,9 +558,9 @@ export declare function filterArray<T>(array: ReadonlyArray<T>, predicate: (item
478
558
  * ],
479
559
  * (item) => item.id,
480
560
  * );
481
- * expectTypeOf(numbers).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
482
- * expect(numbers).toEqual([1, 2, 3]);
483
- * expect(people).toEqual([
561
+ * assertType<NonEmptyReadonlyArray<number>, typeof numbers>();
562
+ * assertEqual(numbers, [1, 2, 3]);
563
+ * assertEqual(people, [
484
564
  * { id: 1, name: "Alice" },
485
565
  * { id: 2, name: "Bob" },
486
566
  * ]);
@@ -505,20 +585,22 @@ export declare function dedupeArray<T>(array: ReadonlyArray<T>, by?: (item: T) =
505
585
  * ### With predicate
506
586
  *
507
587
  * ```ts
508
- * import { partitionArray } from "@evolu/common";
588
+ * import { assertEqual, partitionArray } from "@evolu/common";
509
589
  *
510
590
  * const [evens, odds] = partitionArray(
511
591
  * [1, 2, 3, 4, 5],
512
592
  * (x) => x % 2 === 0,
513
593
  * );
514
- * expect(evens).toEqual([2, 4]);
515
- * expect(odds).toEqual([1, 3, 5]);
594
+ * assertEqual(evens, [2, 4]);
595
+ * assertEqual(odds, [1, 3, 5]);
516
596
  * ```
517
597
  *
518
598
  * ### With refinement
519
599
  *
520
600
  * ```ts
521
601
  * import {
602
+ * assertEqual,
603
+ * assertType,
522
604
  * NonEmptyTrimmedString,
523
605
  * partitionArray,
524
606
  * PositiveInt,
@@ -529,11 +611,9 @@ export declare function dedupeArray<T>(array: ReadonlyArray<T>, by?: (item: T) =
529
611
  * PositiveInt.orThrow(42),
530
612
  * ];
531
613
  * const [positiveInts, strings] = partitionArray(mixed, PositiveInt.is);
532
- * expect(positiveInts).toEqual([42]);
533
- * expectTypeOf(positiveInts).toEqualTypeOf<ReadonlyArray<PositiveInt>>();
534
- * expectTypeOf(strings).toEqualTypeOf<
535
- * ReadonlyArray<NonEmptyTrimmedString>
536
- * >();
614
+ * assertEqual(positiveInts, [42]);
615
+ * assertType<ReadonlyArray<PositiveInt>, typeof positiveInts>();
616
+ * assertType<ReadonlyArray<NonEmptyTrimmedString>, typeof strings>();
537
617
  * ```
538
618
  *
539
619
  * The predicate receives `(item, index, array)`.
@@ -551,12 +631,17 @@ export declare function partitionArray<T>(array: ReadonlyArray<T>, predicate: (i
551
631
  * ### Sorting without mutation
552
632
  *
553
633
  * ```ts
554
- * import { sortArray, type NonEmptyReadonlyArray } from "@evolu/common";
634
+ * import {
635
+ * assertEqual,
636
+ * assertType,
637
+ * sortArray,
638
+ * type NonEmptyReadonlyArray,
639
+ * } from "@evolu/common";
555
640
  *
556
641
  * const values: NonEmptyReadonlyArray<number> = [3, 1, 2];
557
642
  * const sorted = sortArray(values, (a, b) => a - b);
558
- * expect(sorted).toEqual([1, 2, 3]);
559
- * expectTypeOf(sorted).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
643
+ * assertEqual(sorted, [1, 2, 3]);
644
+ * assertType<NonEmptyReadonlyArray<number>, typeof sorted>();
560
645
  * ```
561
646
  *
562
647
  * @group Transformations
@@ -572,12 +657,17 @@ export declare function sortArray<T>(array: ReadonlyArray<T>, compareFn?: (a: T,
572
657
  * ### Reversing without mutation
573
658
  *
574
659
  * ```ts
575
- * import { reverseArray, type NonEmptyReadonlyArray } from "@evolu/common";
660
+ * import {
661
+ * assertEqual,
662
+ * assertType,
663
+ * reverseArray,
664
+ * type NonEmptyReadonlyArray,
665
+ * } from "@evolu/common";
576
666
  *
577
667
  * const values: NonEmptyReadonlyArray<number> = [1, 2, 3];
578
668
  * const reversed = reverseArray(values);
579
- * expect(reversed).toEqual([3, 2, 1]);
580
- * expectTypeOf(reversed).toEqualTypeOf<NonEmptyReadonlyArray<number>>();
669
+ * assertEqual(reversed, [3, 2, 1]);
670
+ * assertType<NonEmptyReadonlyArray<number>, typeof reversed>();
581
671
  * ```
582
672
  *
583
673
  * @group Transformations
@@ -593,12 +683,12 @@ export declare function reverseArray<T>(array: ReadonlyArray<T>): ReadonlyArray<
593
683
  * ### Removing and replacing values
594
684
  *
595
685
  * ```ts
596
- * import { spliceArray } from "@evolu/common";
686
+ * import { assertEqual, spliceArray } from "@evolu/common";
597
687
  *
598
688
  * const values: ReadonlyArray<number> = [1, 2, 3, 4];
599
- * expect(spliceArray(values, 1, 2)).toEqual([1, 4]);
600
- * expect(spliceArray([1, 2, 3], 1, 1, 10, 11)).toEqual([1, 10, 11, 3]);
601
- * expect(values).toEqual([1, 2, 3, 4]);
689
+ * assertEqual(spliceArray(values, 1, 2), [1, 4]);
690
+ * assertEqual(spliceArray([1, 2, 3], 1, 1, 10, 11), [1, 10, 11, 3]);
691
+ * assertEqual(values, [1, 2, 3, 4]);
602
692
  * ```
603
693
  *
604
694
  * @group Transformations
@@ -623,29 +713,36 @@ export type ZipArrayResult<T extends ReadonlyArray<ReadonlyArray<unknown>>> = {
623
713
  * ### Zipping to the shortest input
624
714
  *
625
715
  * ```ts
626
- * import { zipArray, type NonEmptyReadonlyArray } from "@evolu/common";
716
+ * import {
717
+ * assertEqual,
718
+ * assertType,
719
+ * zipArray,
720
+ * type NonEmptyReadonlyArray,
721
+ * } from "@evolu/common";
627
722
  *
628
723
  * const pairs = zipArray([
629
724
  * [1, 2, 3],
630
725
  * ["a", "b", "c"],
631
726
  * ]);
632
- * expect(pairs).toEqual([
727
+ * assertEqual(pairs, [
633
728
  * [1, "a"],
634
729
  * [2, "b"],
635
730
  * [3, "c"],
636
731
  * ]);
637
- * expect(
732
+ * assertEqual(
638
733
  * zipArray([
639
734
  * [1, 2],
640
735
  * ["a", "b", "c"],
641
736
  * [true, false],
642
737
  * ]),
643
- * ).toEqual([
644
- * [1, "a", true],
645
- * [2, "b", false],
646
- * ]);
647
- * expectTypeOf(pairs).toEqualTypeOf<
648
- * NonEmptyReadonlyArray<Readonly<[number, string]>>
738
+ * [
739
+ * [1, "a", true],
740
+ * [2, "b", false],
741
+ * ],
742
+ * );
743
+ * assertType<
744
+ * NonEmptyReadonlyArray<Readonly<[number, string]>>,
745
+ * typeof pairs
649
746
  * >();
650
747
  * ```
651
748
  *
@@ -660,9 +757,9 @@ export declare function zipArray<const T extends ReadonlyArray<ReadonlyArray<unk
660
757
  * ### Reading the first value
661
758
  *
662
759
  * ```ts
663
- * import { firstInArray } from "@evolu/common";
760
+ * import { assertEqual, firstInArray } from "@evolu/common";
664
761
  *
665
- * expect(firstInArray(["a", "b", "c"])).toBe("a");
762
+ * assertEqual(firstInArray(["a", "b", "c"]), "a");
666
763
  * ```
667
764
  *
668
765
  * @group Accessors
@@ -674,9 +771,9 @@ export declare const firstInArray: <T>(array: NonEmptyReadonlyArray<T>) => T;
674
771
  * ### Reading the last value
675
772
  *
676
773
  * ```ts
677
- * import { lastInArray } from "@evolu/common";
774
+ * import { assertEqual, lastInArray } from "@evolu/common";
678
775
  *
679
- * expect(lastInArray(["a", "b", "c"])).toBe("c");
776
+ * assertEqual(lastInArray(["a", "b", "c"]), "c");
680
777
  * ```
681
778
  *
682
779
  * @group Accessors
@@ -1 +1 @@
1
- {"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../src/Array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../src/Array.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2JG;AAIH;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9E;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,KAAK,CAAM,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,UAAU,MAAM,KAAG,KAAK,CAAC,CAAC,CAExC,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACtE,oCAAoC;AACpC,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GACxB,aAAa,CAAC,CAAC,CAAC,CAAC;AAepB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,YAC1B,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KACxD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAA8B,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/E,+BAA+B;AAC/B,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,KAAK,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAOrC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SACtB,aAAa,CAAC,CAAC,CAAC,QACjB,CAAC,KACN,qBAAqB,CAAC,CAAC,CAGwC,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SACvB,aAAa,CAAC,CAAC,CAAC,QACjB,CAAC,KACN,qBAAqB,CAAC,CAAC,CAAqB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAC7D,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,4BAA4B;AAC5B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAC7D,aAAa,CAAC,CAAC,CAAC,CAAC;AAQpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GACrD,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,oCAAoC;AACpC,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACrC,aAAa,CAAC,CAAC,CAAC,CAAC;AACpB,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC/B,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,MAAM,EAAE,CACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KACpB,qBAAqB,CAAC,CAAC,CAAC,GAC5B,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,4BAA4B;AAC5B,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAC/B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,GAC5E,aAAa,CAAC,CAAC,CAAC,CAAC;AAgBpB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GACvB,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC/B,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,2BAA2B;AAC3B,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GACvB,aAAa,CAAC,CAAC,CAAC,CAAC;AAQpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EACxC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GACzE,aAAa,CAAC,CAAC,CAAC,CAAC;AACpB,sBAAsB;AACtB,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,OAAO,GACtE,aAAa,CAAC,CAAC,CAAC,CAAC;AAQpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GACxB,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,4BAA4B;AAC5B,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GACxB,aAAa,CAAC,CAAC,CAAC,CAAC;AAkBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAC3C,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GACzE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,sBAAsB;AACtB,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,OAAO,GACtE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAmBjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,4BAA4B;AAC5B,wBAAgB,SAAS,CAAC,CAAC,EACzB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GACjC,aAAa,CAAC,CAAC,CAAC,CAAC;AAQpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC9B,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,4BAA4B;AAC5B,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAK3E;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SACpB,aAAa,CAAC,CAAC,CAAC,SAChB,MAAM,eACA,MAAM,YACT,aAAa,CAAC,CAAC,CAAC,KACzB,aAAa,CAAC,CAAC,CAAkD,CAAC;AAErE;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI;KAC3E,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAChE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,QAAQ,CACtB,CAAC,SAAS,qBAAqB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG,qBAAqB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,6BAA6B;AAC7B,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAC5E,MAAM,EAAE,CAAC,GACR,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAgB9C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,KAAG,CAAa,CAAC;AAEhF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,KAAG,CACxC,CAAC"}