@evolu/common 8.6.2 → 8.8.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 (303) hide show
  1. package/dist/src/Array.d.ts +21 -21
  2. package/dist/src/Array.js +5 -5
  3. package/dist/src/Assert.d.ts +478 -141
  4. package/dist/src/Assert.d.ts.map +1 -1
  5. package/dist/src/Assert.js +644 -99
  6. package/dist/src/Binary.d.ts +254 -0
  7. package/dist/src/Binary.d.ts.map +1 -0
  8. package/dist/src/Binary.js +958 -0
  9. package/dist/src/Console.d.ts +2 -10
  10. package/dist/src/Console.d.ts.map +1 -1
  11. package/dist/src/Console.js +6 -12
  12. package/dist/src/Crypto.d.ts +5 -5
  13. package/dist/src/Crypto.js +1 -1
  14. package/dist/src/Eq.d.ts +35 -40
  15. package/dist/src/Eq.d.ts.map +1 -1
  16. package/dist/src/Eq.js +51 -87
  17. package/dist/src/Function.d.ts +9 -14
  18. package/dist/src/Function.d.ts.map +1 -1
  19. package/dist/src/Function.js +7 -9
  20. package/dist/src/Http.d.ts +6 -7
  21. package/dist/src/Http.d.ts.map +1 -1
  22. package/dist/src/LeakDetector.d.ts.map +1 -1
  23. package/dist/src/LeakDetector.js +1 -0
  24. package/dist/src/LockManager.d.ts +1 -1
  25. package/dist/src/LockManager.js +1 -1
  26. package/dist/src/Lookup.d.ts +3 -2
  27. package/dist/src/Lookup.d.ts.map +1 -1
  28. package/dist/src/Lookup.js +4 -3
  29. package/dist/src/Number.d.ts +1 -1
  30. package/dist/src/Number.d.ts.map +1 -1
  31. package/dist/src/Number.js +1 -1
  32. package/dist/src/Object.d.ts +4 -4
  33. package/dist/src/Object.d.ts.map +1 -1
  34. package/dist/src/Object.js +5 -4
  35. package/dist/src/Option.d.ts +1 -2
  36. package/dist/src/Option.d.ts.map +1 -1
  37. package/dist/src/Option.js +1 -2
  38. package/dist/src/Platform.js +2 -0
  39. package/dist/src/Polyfills.js +4 -1
  40. package/dist/src/Random.d.ts +1 -1
  41. package/dist/src/Result.d.ts +49 -54
  42. package/dist/src/Result.d.ts.map +1 -1
  43. package/dist/src/Result.js +17 -22
  44. package/dist/src/Set.d.ts +6 -6
  45. package/dist/src/Set.js +2 -2
  46. package/dist/src/Sqlite.js +1 -1
  47. package/dist/src/String.js +3 -2
  48. package/dist/src/Task.d.ts +32 -32
  49. package/dist/src/Task.d.ts.map +1 -1
  50. package/dist/src/Task.js +20 -22
  51. package/dist/src/Test.d.ts +31 -3
  52. package/dist/src/Test.d.ts.map +1 -1
  53. package/dist/src/Test.js +46 -3
  54. package/dist/src/Time.d.ts +3 -11
  55. package/dist/src/Time.d.ts.map +1 -1
  56. package/dist/src/Time.js +10 -18
  57. package/dist/src/Type.d.ts +87 -85
  58. package/dist/src/Type.d.ts.map +1 -1
  59. package/dist/src/Type.js +70 -63
  60. package/dist/src/Types.d.ts +12 -12
  61. package/dist/src/Types.js +1 -1
  62. package/dist/src/WebSocket.d.ts +4 -7
  63. package/dist/src/WebSocket.d.ts.map +1 -1
  64. package/dist/src/Worker.d.ts +1 -1
  65. package/dist/src/Worker.js +7 -7
  66. package/dist/src/index.d.ts +1 -1
  67. package/dist/src/index.js +1 -1
  68. package/dist/src/intl/_en.d.ts.map +1 -1
  69. package/dist/src/intl/_en.js +1 -1
  70. package/dist/src/intl/ar.d.ts.map +1 -1
  71. package/dist/src/intl/ar.js +1 -1
  72. package/dist/src/intl/bn.d.ts.map +1 -1
  73. package/dist/src/intl/bn.js +1 -1
  74. package/dist/src/intl/ca.d.ts.map +1 -1
  75. package/dist/src/intl/ca.js +1 -1
  76. package/dist/src/intl/cs.d.ts.map +1 -1
  77. package/dist/src/intl/cs.js +1 -1
  78. package/dist/src/intl/da.d.ts.map +1 -1
  79. package/dist/src/intl/da.js +1 -1
  80. package/dist/src/intl/de.d.ts.map +1 -1
  81. package/dist/src/intl/de.js +1 -1
  82. package/dist/src/intl/el.d.ts.map +1 -1
  83. package/dist/src/intl/el.js +1 -1
  84. package/dist/src/intl/es.d.ts.map +1 -1
  85. package/dist/src/intl/es.js +1 -1
  86. package/dist/src/intl/fa.d.ts.map +1 -1
  87. package/dist/src/intl/fa.js +1 -1
  88. package/dist/src/intl/fi.d.ts.map +1 -1
  89. package/dist/src/intl/fi.js +1 -1
  90. package/dist/src/intl/fil.d.ts.map +1 -1
  91. package/dist/src/intl/fil.js +1 -1
  92. package/dist/src/intl/fr.d.ts.map +1 -1
  93. package/dist/src/intl/fr.js +1 -1
  94. package/dist/src/intl/he.d.ts.map +1 -1
  95. package/dist/src/intl/he.js +1 -1
  96. package/dist/src/intl/hi.d.ts.map +1 -1
  97. package/dist/src/intl/hi.js +1 -1
  98. package/dist/src/intl/hr.d.ts.map +1 -1
  99. package/dist/src/intl/hr.js +1 -1
  100. package/dist/src/intl/hu.d.ts.map +1 -1
  101. package/dist/src/intl/hu.js +1 -1
  102. package/dist/src/intl/id.d.ts.map +1 -1
  103. package/dist/src/intl/id.js +1 -1
  104. package/dist/src/intl/it.d.ts.map +1 -1
  105. package/dist/src/intl/it.js +1 -1
  106. package/dist/src/intl/ja.d.ts.map +1 -1
  107. package/dist/src/intl/ja.js +1 -1
  108. package/dist/src/intl/ko.d.ts.map +1 -1
  109. package/dist/src/intl/ko.js +1 -1
  110. package/dist/src/intl/ml.d.ts.map +1 -1
  111. package/dist/src/intl/ml.js +1 -1
  112. package/dist/src/intl/mr.d.ts.map +1 -1
  113. package/dist/src/intl/mr.js +1 -1
  114. package/dist/src/intl/ms.d.ts.map +1 -1
  115. package/dist/src/intl/ms.js +1 -1
  116. package/dist/src/intl/nb.d.ts.map +1 -1
  117. package/dist/src/intl/nb.js +1 -1
  118. package/dist/src/intl/nl.d.ts.map +1 -1
  119. package/dist/src/intl/nl.js +1 -1
  120. package/dist/src/intl/pa.d.ts.map +1 -1
  121. package/dist/src/intl/pa.js +1 -1
  122. package/dist/src/intl/pl.d.ts.map +1 -1
  123. package/dist/src/intl/pl.js +1 -1
  124. package/dist/src/intl/pt-BR.d.ts.map +1 -1
  125. package/dist/src/intl/pt-BR.js +1 -1
  126. package/dist/src/intl/pt.d.ts.map +1 -1
  127. package/dist/src/intl/pt.js +1 -1
  128. package/dist/src/intl/ro.d.ts.map +1 -1
  129. package/dist/src/intl/ro.js +1 -1
  130. package/dist/src/intl/sk.d.ts.map +1 -1
  131. package/dist/src/intl/sk.js +1 -1
  132. package/dist/src/intl/sl.d.ts.map +1 -1
  133. package/dist/src/intl/sl.js +1 -1
  134. package/dist/src/intl/sv.d.ts.map +1 -1
  135. package/dist/src/intl/sv.js +1 -1
  136. package/dist/src/intl/sw.d.ts.map +1 -1
  137. package/dist/src/intl/sw.js +1 -1
  138. package/dist/src/intl/ta.d.ts.map +1 -1
  139. package/dist/src/intl/ta.js +1 -1
  140. package/dist/src/intl/te.d.ts.map +1 -1
  141. package/dist/src/intl/te.js +1 -1
  142. package/dist/src/intl/th.d.ts.map +1 -1
  143. package/dist/src/intl/th.js +1 -1
  144. package/dist/src/intl/tr.d.ts.map +1 -1
  145. package/dist/src/intl/tr.js +1 -1
  146. package/dist/src/intl/uk.d.ts.map +1 -1
  147. package/dist/src/intl/uk.js +1 -1
  148. package/dist/src/intl/ur.d.ts.map +1 -1
  149. package/dist/src/intl/ur.js +1 -1
  150. package/dist/src/intl/vi.d.ts.map +1 -1
  151. package/dist/src/intl/vi.js +1 -1
  152. package/dist/src/intl/zh-CN.d.ts.map +1 -1
  153. package/dist/src/intl/zh-CN.js +1 -1
  154. package/dist/src/intl/zh-TW.d.ts.map +1 -1
  155. package/dist/src/intl/zh-TW.js +1 -1
  156. package/dist/src/local-first/Evolu.d.ts +12 -12
  157. package/dist/src/local-first/Evolu.d.ts.map +1 -1
  158. package/dist/src/local-first/Evolu.js +2 -2
  159. package/dist/src/local-first/Protocol.d.ts +28 -76
  160. package/dist/src/local-first/Protocol.d.ts.map +1 -1
  161. package/dist/src/local-first/Protocol.js +45 -229
  162. package/dist/src/local-first/Query.d.ts +11 -11
  163. package/dist/src/local-first/Query.js +6 -6
  164. package/dist/src/local-first/Relay.d.ts +2 -2
  165. package/dist/src/local-first/Schema.d.ts +3 -5
  166. package/dist/src/local-first/Schema.d.ts.map +1 -1
  167. package/dist/src/local-first/Schema.js +2 -4
  168. package/dist/src/local-first/Shared.d.ts.map +1 -1
  169. package/dist/src/local-first/Shared.js +5 -5
  170. package/dist/src/local-first/Storage.js +4 -4
  171. package/dist/src/local-first/Timestamp.d.ts +9 -0
  172. package/dist/src/local-first/Timestamp.d.ts.map +1 -1
  173. package/dist/src/local-first/Timestamp.js +13 -10
  174. package/package.json +7 -5
  175. package/src/Array.test.ts +809 -0
  176. package/src/Array.ts +21 -21
  177. package/src/Assert.test.ts +1181 -0
  178. package/src/Assert.ts +971 -227
  179. package/src/BigInt.test.ts +28 -0
  180. package/src/Binary.test.ts +1128 -0
  181. package/src/Binary.ts +1377 -0
  182. package/src/Brand.test.ts +90 -0
  183. package/src/Cache.test.ts +183 -0
  184. package/src/Callbacks.test.ts +66 -0
  185. package/src/Console.test.ts +809 -0
  186. package/src/Console.ts +9 -17
  187. package/src/Crypto.test.ts +138 -0
  188. package/src/Crypto.ts +5 -5
  189. package/src/Eq.test.ts +333 -0
  190. package/src/Eq.ts +110 -176
  191. package/src/Error.test.ts +118 -0
  192. package/src/Function.test.ts +204 -0
  193. package/src/Function.ts +10 -15
  194. package/src/Http.test.ts +816 -0
  195. package/src/Http.ts +6 -7
  196. package/src/LeakDetector.test.ts +210 -0
  197. package/src/LeakDetector.ts +1 -0
  198. package/src/LockManager.ts +2 -2
  199. package/src/Lookup.test.ts +418 -0
  200. package/src/Lookup.ts +4 -3
  201. package/src/Microtask.test.ts +140 -0
  202. package/src/Number.test.ts +218 -0
  203. package/src/Number.ts +2 -2
  204. package/src/Object.test.ts +293 -0
  205. package/src/Object.ts +5 -4
  206. package/src/Option.test.ts +104 -0
  207. package/src/Option.ts +1 -2
  208. package/src/Order.test.ts +56 -0
  209. package/src/Platform.ts +2 -0
  210. package/src/Polyfills.ts +3 -4
  211. package/src/Random.test.ts +89 -0
  212. package/src/Random.ts +1 -1
  213. package/src/Ref.test.ts +139 -0
  214. package/src/RefCount.test.ts +184 -0
  215. package/src/Relation.test.ts +505 -0
  216. package/src/Resource.test.ts +4623 -0
  217. package/src/Result.test.ts +1829 -0
  218. package/src/Result.ts +49 -54
  219. package/src/Schedule.test.ts +1554 -0
  220. package/src/Set.test.ts +279 -0
  221. package/src/Set.ts +6 -6
  222. package/src/Sqlite.ts +1 -1
  223. package/src/Store.test.ts +288 -0
  224. package/src/String.test.ts +54 -0
  225. package/src/String.ts +3 -3
  226. package/src/Task.test.ts +10820 -0
  227. package/src/Task.ts +38 -43
  228. package/src/Test.test.ts +88 -0
  229. package/src/Test.ts +49 -3
  230. package/src/Time.test.ts +926 -0
  231. package/src/Time.ts +13 -21
  232. package/src/Type.base64.test.ts +88 -0
  233. package/src/Type.test.ts +20465 -0
  234. package/src/Type.ts +114 -111
  235. package/src/Types.test.ts +324 -0
  236. package/src/Types.ts +13 -13
  237. package/src/WebSocket.ts +4 -7
  238. package/src/Worker.test.ts +755 -0
  239. package/src/Worker.ts +13 -18
  240. package/src/index.ts +1 -1
  241. package/src/intl/_en.ts +1 -1
  242. package/src/intl/ar.ts +1 -1
  243. package/src/intl/bn.ts +1 -1
  244. package/src/intl/ca.ts +1 -1
  245. package/src/intl/cs.ts +1 -1
  246. package/src/intl/da.ts +1 -1
  247. package/src/intl/de.ts +1 -1
  248. package/src/intl/el.ts +1 -1
  249. package/src/intl/es.ts +1 -1
  250. package/src/intl/fa.ts +1 -1
  251. package/src/intl/fi.ts +1 -1
  252. package/src/intl/fil.ts +1 -1
  253. package/src/intl/fr.ts +1 -1
  254. package/src/intl/he.ts +1 -1
  255. package/src/intl/hi.ts +1 -1
  256. package/src/intl/hr.ts +1 -1
  257. package/src/intl/hu.ts +1 -1
  258. package/src/intl/id.ts +1 -1
  259. package/src/intl/intl.test.ts +3106 -0
  260. package/src/intl/it.ts +1 -1
  261. package/src/intl/ja.ts +1 -1
  262. package/src/intl/ko.ts +1 -1
  263. package/src/intl/ml.ts +1 -1
  264. package/src/intl/mr.ts +1 -1
  265. package/src/intl/ms.ts +1 -1
  266. package/src/intl/nb.ts +1 -1
  267. package/src/intl/nl.ts +1 -1
  268. package/src/intl/pa.ts +1 -1
  269. package/src/intl/pl.ts +1 -1
  270. package/src/intl/pt-BR.ts +1 -1
  271. package/src/intl/pt.ts +1 -1
  272. package/src/intl/ro.ts +1 -1
  273. package/src/intl/sk.ts +1 -1
  274. package/src/intl/sl.ts +1 -1
  275. package/src/intl/sv.ts +1 -1
  276. package/src/intl/sw.ts +1 -1
  277. package/src/intl/ta.ts +1 -1
  278. package/src/intl/te.ts +1 -1
  279. package/src/intl/th.ts +1 -1
  280. package/src/intl/tr.ts +1 -1
  281. package/src/intl/uk.ts +1 -1
  282. package/src/intl/ur.ts +1 -1
  283. package/src/intl/vi.ts +1 -1
  284. package/src/intl/zh-CN.ts +1 -1
  285. package/src/intl/zh-TW.ts +1 -1
  286. package/src/local-first/Evolu.test.ts +1921 -0
  287. package/src/local-first/Evolu.ts +18 -14
  288. package/src/local-first/Owner.test.ts +83 -0
  289. package/src/local-first/Protocol.test.ts +1037 -0
  290. package/src/local-first/Protocol.ts +75 -290
  291. package/src/local-first/Query.test.ts +349 -0
  292. package/src/local-first/Query.ts +11 -11
  293. package/src/local-first/Relay.ts +2 -2
  294. package/src/local-first/Schema.ts +3 -5
  295. package/src/local-first/Shared.test.ts +1828 -0
  296. package/src/local-first/Shared.ts +9 -8
  297. package/src/local-first/Storage.ts +4 -4
  298. package/src/local-first/Timestamp.test.ts +374 -0
  299. package/src/local-first/Timestamp.ts +22 -10
  300. package/dist/src/Buffer.d.ts +0 -122
  301. package/dist/src/Buffer.d.ts.map +0 -1
  302. package/dist/src/Buffer.js +0 -69
  303. package/src/Buffer.ts +0 -206
@@ -326,7 +326,7 @@ export declare const createConsole: ({ name, level, output, path, formatter, }?:
326
326
  *
327
327
  * const output = createNativeConsoleOutput();
328
328
  *
329
- * assertType<ConsoleOutput, typeof output>();
329
+ * assertType<typeof output, ConsoleOutput>();
330
330
  * assertEqual(typeof output.write, "function");
331
331
  * ```
332
332
  */
@@ -371,15 +371,7 @@ export declare const createNativeConsoleOutput: () => ConsoleOutput;
371
371
  * assertType(Data, nested);
372
372
  * assertEqual(nested, ["+1.500s [relay] [db]", "opened"]);
373
373
  *
374
- * const localTimestamp = new globalThis.Date(
375
- * 2026,
376
- * 0,
377
- * 28,
378
- * 14,
379
- * 30,
380
- * 15,
381
- * 123,
382
- * ).getTime();
374
+ * const localTimestamp = new Date(2026, 0, 28, 14, 30, 15, 123).getTime();
383
375
  * const formatAbsolute = createConsoleFormatter({
384
376
  * time: testCreateTime({ startAt: Millis.orThrow(localTimestamp) }),
385
377
  * })({ timestampFormat: "absolute" });
@@ -1 +1 @@
1
- {"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/Console.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,OAAO,EACb,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,MAAM,WAAW,OAAO;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,YAAY,CAAC;IAEtC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAExD,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IAEpC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAE1C,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAE1D,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAE1D,gCAAgC;IAChC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAExD,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAEzD,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAEzD,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAE1D,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAE3E,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE1C,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC,sCAAsC;IACtC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,GACtB,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAErC,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACvC;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,OAAO,GACP,KAAK,GACL,MAAM,GACN,MAAM,GACN,OAAO,GACP,KAAK,GACL,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,GACP,YAAY,CAAC;AAEjB;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC7E;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC;AAE/E,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAEhC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAEvD;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,2DAA2D;AAC3D,MAAM,MAAM,2BAA2B,GACrC,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,uBAAuB,EAAE,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACtE;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,gEAAgE;IAChE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;IAE/D,mCAAmC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAYD,iCAAiC;AACjC,eAAO,MAAM,aAAa,+CAMvB,aAAa,KAAQ,OAwDvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,yBAAyB,QAAO,aAU3C,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,eAAO,MAAM,sBAAsB,cACP,OAAO,CAAC,OAAO,CAAC,eACjC,sBAAsB,KAAQ,gBA+BtC,CAAC;AAEJ,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,QAAO,kBAM3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,wBAAwB,YAC1B,KAAK,CAAC,YAAY,CAAC,KAC3B,aAID,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,iBAAiB,YACnB,aAAa,CAAC,aAAa,CAAC,KACpC,aAID,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,gBAE3B;IACD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,KAAQ,WAkBR,CAAC"}
1
+ {"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/Console.ts"],"names":[],"mappings":"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"}
@@ -71,14 +71,16 @@ export const createConsole = ({ name = "", level = "log", output = createNativeC
71
71
  *
72
72
  * const output = createNativeConsoleOutput();
73
73
  *
74
- * assertType<ConsoleOutput, typeof output>();
74
+ * assertType<typeof output, ConsoleOutput>();
75
75
  * assertEqual(typeof output.write, "function");
76
76
  * ```
77
77
  */
78
78
  export const createNativeConsoleOutput = () => ({
79
79
  write: (entry, formatter) => {
80
80
  const args = formatter ? formatter(entry) : entry.args;
81
- globalThis.console[entry.method](...args);
81
+ // oxlint-disable-next-line evolu/no-unnecessary-global-this -- Write to the global object console even if a realm lexical binding shadows it.
82
+ const nativeConsole = globalThis.console;
83
+ nativeConsole[entry.method](...args);
82
84
  },
83
85
  });
84
86
  /**
@@ -121,15 +123,7 @@ export const createNativeConsoleOutput = () => ({
121
123
  * assertType(Data, nested);
122
124
  * assertEqual(nested, ["+1.500s [relay] [db]", "opened"]);
123
125
  *
124
- * const localTimestamp = new globalThis.Date(
125
- * 2026,
126
- * 0,
127
- * 28,
128
- * 14,
129
- * 30,
130
- * 15,
131
- * 123,
132
- * ).getTime();
126
+ * const localTimestamp = new Date(2026, 0, 28, 14, 30, 15, 123).getTime();
133
127
  * const formatAbsolute = createConsoleFormatter({
134
128
  * time: testCreateTime({ startAt: Millis.orThrow(localTimestamp) }),
135
129
  * })({ timestampFormat: "absolute" });
@@ -156,7 +150,7 @@ export const createConsoleFormatter = ({ time = createTime() } = {}) => (config
156
150
  timestamp = formatMillisAsClockTime(now);
157
151
  break;
158
152
  case "iso":
159
- timestamp = new globalThis.Date(now).toISOString();
153
+ timestamp = new Date(now).toISOString();
160
154
  break;
161
155
  }
162
156
  const path = entry.path.length > 0 ? entry.path.map((p) => `[${p}]`).join(" ") : "";
@@ -49,10 +49,10 @@ export interface RandomBytes {
49
49
  * const seed = randomBytes.create(64);
50
50
  * const custom = randomBytes.create(48);
51
51
  *
52
- * assertType<Entropy16, typeof nonce16>();
53
- * assertType<Entropy24, typeof nonce24>();
54
- * assertType<Entropy32, typeof key>();
55
- * assertType<Entropy64, typeof seed>();
52
+ * assertType<typeof nonce16, Entropy16>();
53
+ * assertType<typeof nonce24, Entropy24>();
54
+ * assertType<typeof key, Entropy32>();
55
+ * assertType<typeof seed, Entropy64>();
56
56
  * assertEqual(custom.length, 48);
57
57
  * ```
58
58
  */
@@ -127,7 +127,7 @@ export type XChaCha20Poly1305Ciphertext = typeof XChaCha20Poly1305Ciphertext.Out
127
127
  * randomBytes: createRandomBytes(),
128
128
  * })(plaintext, encryptionKey);
129
129
  *
130
- * assertType<XChaCha20Poly1305Ciphertext, typeof ciphertext>();
130
+ * assertType<typeof ciphertext, XChaCha20Poly1305Ciphertext>();
131
131
  * assertEqual(nonce.length, 24);
132
132
  * ```
133
133
  *
@@ -85,7 +85,7 @@ export const XChaCha20Poly1305Ciphertext = /*#__PURE__*/ brand("XChaCha20Poly130
85
85
  * randomBytes: createRandomBytes(),
86
86
  * })(plaintext, encryptionKey);
87
87
  *
88
- * assertType<XChaCha20Poly1305Ciphertext, typeof ciphertext>();
88
+ * assertType<typeof ciphertext, XChaCha20Poly1305Ciphertext>();
89
89
  * assertEqual(nonce.length, 24);
90
90
  * ```
91
91
  *
package/dist/src/Eq.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * @module
5
5
  */
6
6
  import type { Order } from "./Order.ts";
7
- import type { IsData, JsonValue, JsonValueInput } from "./Type.ts";
7
+ import type { IsData } from "./Type.ts";
8
8
  import type { CompileTimeError } from "./Types.ts";
9
9
  /**
10
10
  * Compares two values of the same type `A` for equality.
@@ -18,6 +18,13 @@ import type { CompileTimeError } from "./Types.ts";
18
18
  * - **Transitive**: if `eq(a, b)` and `eq(b, c)` are `true`, then `eq(a, c)` is
19
19
  * `true`.
20
20
  *
21
+ * Evolu does not provide `eqStrict`: JavaScript strict equality (`===`) is not
22
+ * reflexive because `NaN === NaN` is `false`, so it cannot define an
23
+ * `Eq<number>`. Use `===` directly when that behavior is required. See [MDN's
24
+ * equality comparisons and sameness
25
+ * guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Equality_comparisons_and_sameness)
26
+ * for how JavaScript's equality algorithms differ.
27
+ *
21
28
  * Use {@link eqFromOrder} to derive equality from an {@link Order}.
22
29
  *
23
30
  * ### Example
@@ -46,13 +53,13 @@ export type Eq<in A> = (x: A, y: A) => boolean;
46
53
  * ### Example
47
54
  *
48
55
  * ```ts
49
- * import { assertFalse, assertTrue, eqStrict } from "@evolu/common";
56
+ * import { assertFalse, assertTrue, eqSameValue } from "@evolu/common";
50
57
  *
51
- * assertTrue(eqStrict(NaN, NaN));
52
- * assertFalse(eqStrict(0, -0));
58
+ * assertTrue(eqSameValue(NaN, NaN));
59
+ * assertFalse(eqSameValue(0, -0));
53
60
  * ```
54
61
  */
55
- export declare const eqStrict: <A>(x: A, y: A) => boolean;
62
+ export declare const eqSameValue: <A>(x: A, y: A) => boolean;
56
63
  /**
57
64
  * Compares two values using SameValueZero equality.
58
65
  *
@@ -71,13 +78,13 @@ export declare const eqStrict: <A>(x: A, y: A) => boolean;
71
78
  * ```
72
79
  */
73
80
  export declare const eqSameValueZero: <A>(x: A, y: A) => boolean;
74
- /** An {@link Eq} for strings using {@link eqStrict}. */
81
+ /** An {@link Eq} for strings using {@link eqSameValue}. */
75
82
  export declare const eqString: Eq<string>;
76
- /** An {@link Eq} for numbers using {@link eqSameValueZero}. */
83
+ /** An {@link Eq} for numbers using {@link eqSameValue}. */
77
84
  export declare const eqNumber: Eq<number>;
78
- /** An {@link Eq} for bigints using {@link eqStrict}. */
85
+ /** An {@link Eq} for bigints using {@link eqSameValue}. */
79
86
  export declare const eqBigInt: Eq<bigint>;
80
- /** An {@link Eq} for booleans using {@link eqStrict}. */
87
+ /** An {@link Eq} for booleans using {@link eqSameValue}. */
81
88
  export declare const eqBoolean: Eq<boolean>;
82
89
  /** An {@link Eq} for `undefined`. */
83
90
  export declare const eqUndefined: Eq<undefined>;
@@ -110,7 +117,8 @@ export declare const eqFromOrder: <A>(order: Order<A>) => Eq<A>;
110
117
  */
111
118
  export declare const createEqArrayLike: <A>(item: Eq<A>) => Eq<ArrayLike<A>>;
112
119
  /**
113
- * Compares two array-like structures element by element using {@link eqStrict}.
120
+ * Compares two array-like structures element by element using
121
+ * {@link eqSameValue}.
114
122
  *
115
123
  * Useful for structural sharing checks where objects are compared by reference
116
124
  * identity. `NaN` elements are equal, while `0` and `-0` elements differ.
@@ -118,15 +126,19 @@ export declare const createEqArrayLike: <A>(item: Eq<A>) => Eq<ArrayLike<A>>;
118
126
  * ### Example
119
127
  *
120
128
  * ```ts
121
- * import { assertFalse, assertTrue, eqArrayStrict } from "@evolu/common";
129
+ * import {
130
+ * assertFalse,
131
+ * assertTrue,
132
+ * eqArraySameValue,
133
+ * } from "@evolu/common";
122
134
  *
123
135
  * const a = { x: 1 };
124
136
  * const b = { x: 1 };
125
- * assertTrue(eqArrayStrict([a, a], [a, a]));
126
- * assertFalse(eqArrayStrict([a], [b]));
137
+ * assertTrue(eqArraySameValue([a, a], [a, a]));
138
+ * assertFalse(eqArraySameValue([a], [b]));
127
139
  * ```
128
140
  */
129
- export declare const eqArrayStrict: <A>(x: ArrayLike<A>, y: ArrayLike<A>) => boolean;
141
+ export declare const eqArraySameValue: <A>(x: ArrayLike<A>, y: ArrayLike<A>) => boolean;
130
142
  /**
131
143
  * Compares two array-like structures of numbers for equality.
132
144
  *
@@ -176,17 +188,17 @@ export declare const eqUint8Array: Eq<Uint8Array>;
176
188
  */
177
189
  export declare const createEqObject: <A>(eqs: { [K in keyof A]: Eq<A[K]>; }) => Eq<{ readonly [K in keyof A]: A[K]; }>;
178
190
  /**
179
- * Compares two {@link Data} values.
191
+ * Deeply compares two {@link Data} values using platform-independent structural
192
+ * equality.
180
193
  *
181
- * Primitive values use SameValueZero, so `NaN` equals itself and `0` equals
182
- * `-0`. Arrays and Object properties are ordered and keyed respectively. Sets
183
- * and Maps compare their elements and entries without regard to insertion
184
- * order. Dates compare their time values, while Uint8Arrays compare their
185
- * bytes. Cyclic and shared data graphs are supported.
194
+ * Primitive values use `Object.is`. Arrays are ordered; plain Objects compare
195
+ * their own string-keyed properties regardless of property order or prototype;
196
+ * Sets and Maps ignore insertion order; Dates compare their time values; and
197
+ * Uint8Arrays compare their bytes. Cyclic and shared data graphs are
198
+ * supported.
186
199
  *
187
- * The compile-time validation recursively accepts ordinary interfaces whose
188
- * properties consist only of Data. Runtime representation details are trusted;
189
- * use the {@link Data} Type at an unknown boundary.
200
+ * Arguments are restricted to Data at compile time. Use the {@link Data} Type at
201
+ * an unknown boundary.
190
202
  *
191
203
  * ### Example
192
204
  *
@@ -208,23 +220,6 @@ export declare const createEqObject: <A>(eqs: { [K in keyof A]: Eq<A[K]>; }) =>
208
220
  * ```
209
221
  */
210
222
  export declare function eqData<Actual, Expected>(actual: Actual, expected: Expected, ...dataError: EqDataError<Actual | Expected>): boolean;
211
- /**
212
- * Compares two {@link JsonValue} values using {@link eqData}.
213
- *
214
- * ### Example
215
- *
216
- * ```ts
217
- * import { assertTrue, eqJsonValue, type JsonValue } from "@evolu/common";
218
- *
219
- * const first: JsonValue = { profile: { name: "Ada" } };
220
- * const second: JsonValue = { profile: { name: "Ada" } };
221
- *
222
- * assertTrue(eqJsonValue(first, second));
223
- * ```
224
- */
225
- export declare const eqJsonValue: Eq<JsonValue>;
226
- /** Compares two {@link JsonValueInput} values using {@link eqData}. */
227
- export declare const eqJsonValueInput: Eq<JsonValueInput>;
228
223
  type EqDataError<Value> = IsData<Value> extends true ? [] : [
229
224
  error: CompileTimeError<"eqData", "Actual and expected values must consist only of Data.">
230
225
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"Eq.d.ts","sourceRoot":"","sources":["../../src/Eq.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Eq.d.ts","sourceRoot":"","sources":["../../src/Eq.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAG,OAA0B,CAAC;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAG,OACpB,CAAC;AAE7B,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAe,CAAC;AAEhD,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAe,CAAC;AAEhD,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAe,CAAC;AAEhD,4DAA4D;AAC5D,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,OAAO,CAAe,CAAC;AAElD,qCAAqC;AACrC,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,SAAS,CAAe,CAAC;AAEtD,gCAAgC;AAChC,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,IAAI,CAAe,CAAC;AAE5C,mDAAmD;AACnD,eAAO,MAAM,WAAW,GACrB,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAG,EAAE,CAAC,CAAC,CAEP,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,iBAAiB,GAC3B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAUhC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gBAAgB,GAxGD,CAAC,uCAjBU,OAyHqC,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,uBAA4C,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,UAAU,CAAiB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,GACxB,CAAC,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,KAAG,EAAE,CAAC,EACzC,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAC9B,CASA,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,QAAQ,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,SAAS,EAAE,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,GAC3C,OAAO,CAAC;AAmQX,KAAK,WAAW,CAAC,KAAK,IACpB,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,GACtB,EAAE,GACF;IACE,KAAK,EAAE,gBAAgB,CACrB,QAAQ,EACR,uDAAuD,CACxD;CACF,CAAC"}
package/dist/src/Eq.js CHANGED
@@ -13,13 +13,13 @@ import { getObjectKind } from "./Object.js";
13
13
  * ### Example
14
14
  *
15
15
  * ```ts
16
- * import { assertFalse, assertTrue, eqStrict } from "@evolu/common";
16
+ * import { assertFalse, assertTrue, eqSameValue } from "@evolu/common";
17
17
  *
18
- * assertTrue(eqStrict(NaN, NaN));
19
- * assertFalse(eqStrict(0, -0));
18
+ * assertTrue(eqSameValue(NaN, NaN));
19
+ * assertFalse(eqSameValue(0, -0));
20
20
  * ```
21
21
  */
22
- export const eqStrict = (x, y) => Object.is(x, y);
22
+ export const eqSameValue = (x, y) => Object.is(x, y);
23
23
  /**
24
24
  * Compares two values using SameValueZero equality.
25
25
  *
@@ -38,18 +38,18 @@ export const eqStrict = (x, y) => Object.is(x, y);
38
38
  * ```
39
39
  */
40
40
  export const eqSameValueZero = (x, y) => x === y || Object.is(x, y);
41
- /** An {@link Eq} for strings using {@link eqStrict}. */
42
- export const eqString = eqStrict;
43
- /** An {@link Eq} for numbers using {@link eqSameValueZero}. */
44
- export const eqNumber = eqSameValueZero;
45
- /** An {@link Eq} for bigints using {@link eqStrict}. */
46
- export const eqBigInt = eqStrict;
47
- /** An {@link Eq} for booleans using {@link eqStrict}. */
48
- export const eqBoolean = eqStrict;
41
+ /** An {@link Eq} for strings using {@link eqSameValue}. */
42
+ export const eqString = eqSameValue;
43
+ /** An {@link Eq} for numbers using {@link eqSameValue}. */
44
+ export const eqNumber = eqSameValue;
45
+ /** An {@link Eq} for bigints using {@link eqSameValue}. */
46
+ export const eqBigInt = eqSameValue;
47
+ /** An {@link Eq} for booleans using {@link eqSameValue}. */
48
+ export const eqBoolean = eqSameValue;
49
49
  /** An {@link Eq} for `undefined`. */
50
- export const eqUndefined = eqStrict;
50
+ export const eqUndefined = eqSameValue;
51
51
  /** An {@link Eq} for `null`. */
52
- export const eqNull = eqStrict;
52
+ export const eqNull = eqSameValue;
53
53
  /** Derives an {@link Eq} from an {@link Order}. */
54
54
  export const eqFromOrder = (order) => (x, y) => order(x, y) === 0;
55
55
  /**
@@ -87,7 +87,8 @@ export const createEqArrayLike = (item) => (x, y) => {
87
87
  return true;
88
88
  };
89
89
  /**
90
- * Compares two array-like structures element by element using {@link eqStrict}.
90
+ * Compares two array-like structures element by element using
91
+ * {@link eqSameValue}.
91
92
  *
92
93
  * Useful for structural sharing checks where objects are compared by reference
93
94
  * identity. `NaN` elements are equal, while `0` and `-0` elements differ.
@@ -95,15 +96,19 @@ export const createEqArrayLike = (item) => (x, y) => {
95
96
  * ### Example
96
97
  *
97
98
  * ```ts
98
- * import { assertFalse, assertTrue, eqArrayStrict } from "@evolu/common";
99
+ * import {
100
+ * assertFalse,
101
+ * assertTrue,
102
+ * eqArraySameValue,
103
+ * } from "@evolu/common";
99
104
  *
100
105
  * const a = { x: 1 };
101
106
  * const b = { x: 1 };
102
- * assertTrue(eqArrayStrict([a, a], [a, a]));
103
- * assertFalse(eqArrayStrict([a], [b]));
107
+ * assertTrue(eqArraySameValue([a, a], [a, a]));
108
+ * assertFalse(eqArraySameValue([a], [b]));
104
109
  * ```
105
110
  */
106
- export const eqArrayStrict = /*#__PURE__*/ createEqArrayLike(eqStrict);
111
+ export const eqArraySameValue = /*#__PURE__*/ createEqArrayLike(eqSameValue);
107
112
  /**
108
113
  * Compares two array-like structures of numbers for equality.
109
114
  *
@@ -162,46 +167,16 @@ export const createEqObject = (eqs) => (x, y) => {
162
167
  return true;
163
168
  };
164
169
  export function eqData(actual, expected) {
165
- return eqDataInternal(actual, expected, {
166
- pairs: [],
167
- rightsByLeft: new Map(),
168
- });
169
- }
170
- /**
171
- * Compares two {@link JsonValue} values using {@link eqData}.
172
- *
173
- * ### Example
174
- *
175
- * ```ts
176
- * import { assertTrue, eqJsonValue, type JsonValue } from "@evolu/common";
177
- *
178
- * const first: JsonValue = { profile: { name: "Ada" } };
179
- * const second: JsonValue = { profile: { name: "Ada" } };
180
- *
181
- * assertTrue(eqJsonValue(first, second));
182
- * ```
183
- */
184
- export const eqJsonValue = eqData;
185
- /** Compares two {@link JsonValueInput} values using {@link eqData}. */
186
- export const eqJsonValueInput = eqData;
187
- const eqDataInternal = (actual, expected, context) => {
170
+ const pairs = [];
171
+ const rightsByLeft = new Map();
188
172
  const frames = [{ kind: "Compare", actual, expected }];
189
173
  const attempts = [];
190
- const retryFailedCandidate = (_frame) => {
191
- const attempt = attempts.pop();
192
- if (attempt === undefined)
193
- return false;
194
- rollbackEqDataContext(context, attempt.contextCheckpoint);
195
- frames.length = attempt.frameCheckpoint;
196
- frames.push(attempt.retry);
197
- return true;
198
- };
199
174
  while (frames.length > 0) {
200
175
  const frame = frames.pop();
201
176
  if (frame.kind === "Compare") {
202
177
  const x = frame.actual;
203
178
  const y = frame.expected;
204
- if (eqSameValueZero(x, y))
179
+ if (eqSameValue(x, y))
205
180
  continue;
206
181
  if (typeof x !== typeof y) {
207
182
  frames.push({ kind: "Fail" });
@@ -214,16 +189,16 @@ const eqDataInternal = (actual, expected, context) => {
214
189
  frames.push({ kind: "Fail" });
215
190
  continue;
216
191
  }
217
- const rights = context.rightsByLeft.get(x);
192
+ const rights = rightsByLeft.get(x);
218
193
  if (rights?.has(y))
219
194
  continue;
220
195
  if (rights === undefined) {
221
- context.rightsByLeft.set(x, new Set([y]));
196
+ rightsByLeft.set(x, new Set([y]));
222
197
  }
223
198
  else {
224
199
  rights.add(y);
225
200
  }
226
- context.pairs.push([x, y]);
201
+ pairs.push([x, y]);
227
202
  const xKind = getObjectKind(x);
228
203
  const yKind = getObjectKind(y);
229
204
  if (xKind !== yKind) {
@@ -353,13 +328,12 @@ const eqDataInternal = (actual, expected, context) => {
353
328
  frames.push({ kind: "Fail" });
354
329
  continue;
355
330
  }
356
- const attempt = {
357
- contextCheckpoint: context.pairs.length,
331
+ attempts.push({
332
+ pairsCheckpoint: pairs.length,
358
333
  frameCheckpoint: frames.length,
359
334
  retry: { ...frame, candidateIndex: frame.candidateIndex + 1 },
360
- };
361
- attempts.push(attempt);
362
- frames.push({ kind: "CommitSet", match: frame });
335
+ });
336
+ frames.push({ kind: "Commit", match: frame });
363
337
  frames.push({
364
338
  kind: "Compare",
365
339
  actual: frame.actual[frame.actualIndex],
@@ -376,13 +350,12 @@ const eqDataInternal = (actual, expected, context) => {
376
350
  }
377
351
  const [actualKey, actualValue] = frame.actual[frame.actualIndex];
378
352
  const [expectedKey, expectedValue] = frame.unmatched[frame.candidateIndex];
379
- const attempt = {
380
- contextCheckpoint: context.pairs.length,
353
+ attempts.push({
354
+ pairsCheckpoint: pairs.length,
381
355
  frameCheckpoint: frames.length,
382
356
  retry: { ...frame, candidateIndex: frame.candidateIndex + 1 },
383
- };
384
- attempts.push(attempt);
385
- frames.push({ kind: "CommitMap", match: frame });
357
+ });
358
+ frames.push({ kind: "Commit", match: frame });
386
359
  frames.push({
387
360
  kind: "Compare",
388
361
  actual: actualValue,
@@ -395,17 +368,7 @@ const eqDataInternal = (actual, expected, context) => {
395
368
  });
396
369
  continue;
397
370
  }
398
- if (frame.kind === "CommitSet") {
399
- attempts.pop();
400
- frame.match.unmatched.splice(frame.match.candidateIndex, 1);
401
- frames.push({
402
- ...frame.match,
403
- actualIndex: frame.match.actualIndex + 1,
404
- candidateIndex: 0,
405
- });
406
- continue;
407
- }
408
- if (frame.kind === "CommitMap") {
371
+ if (frame.kind === "Commit") {
409
372
  attempts.pop();
410
373
  frame.match.unmatched.splice(frame.match.candidateIndex, 1);
411
374
  frames.push({
@@ -415,17 +378,18 @@ const eqDataInternal = (actual, expected, context) => {
415
378
  });
416
379
  continue;
417
380
  }
418
- if (!retryFailedCandidate(frame))
381
+ const attempt = attempts.pop();
382
+ if (attempt === undefined)
419
383
  return false;
384
+ while (pairs.length > attempt.pairsCheckpoint) {
385
+ const [left, right] = pairs.pop();
386
+ const rights = rightsByLeft.get(left);
387
+ rights.delete(right);
388
+ if (rights.size === 0)
389
+ rightsByLeft.delete(left);
390
+ }
391
+ frames.length = attempt.frameCheckpoint;
392
+ frames.push(attempt.retry);
420
393
  }
421
394
  return true;
422
- };
423
- const rollbackEqDataContext = (context, checkpoint) => {
424
- while (context.pairs.length > checkpoint) {
425
- const [left, right] = context.pairs.pop();
426
- const rights = context.rightsByLeft.get(left);
427
- rights.delete(right);
428
- if (rights.size === 0)
429
- context.rightsByLeft.delete(left);
430
- }
431
- };
395
+ }
@@ -135,9 +135,9 @@ export declare const identity: <A>(a: A) => A;
135
135
  *
136
136
  * ```ts
137
137
  * import {
138
- * assert,
139
138
  * assertEqual,
140
139
  * assertErr,
140
+ * assertInstanceOf,
141
141
  * assertTrue,
142
142
  * disposable,
143
143
  * trySync,
@@ -159,11 +159,8 @@ export declare const identity: <A>(a: A) => A;
159
159
  * assertTrue(cleaned);
160
160
  * const result = trySync(() => resource.read());
161
161
  * assertErr(result);
162
- * assert(
163
- * result.error instanceof Error &&
164
- * result.error.message === "Cannot use a disposed object.",
165
- * "Expected the disposed-object error.",
166
- * );
162
+ * assertInstanceOf(result.error, Error);
163
+ * assertEqual(result.error.message, "Cannot use a disposed object.");
167
164
  * ```
168
165
  */
169
166
  export declare function disposable<T extends object>(value: T extends Disposable ? Omit<T, typeof Symbol.dispose> : T, disposer?: DisposableStack): T extends Disposable ? T : T & Disposable;
@@ -248,8 +245,9 @@ export declare const constVoid: Thunk<void>;
248
245
  *
249
246
  * ```ts
250
247
  * import {
251
- * assert,
248
+ * assertEqual,
252
249
  * assertErr,
250
+ * assertInstanceOf,
253
251
  * assertType,
254
252
  * todo,
255
253
  * trySync,
@@ -263,16 +261,13 @@ export declare const constVoid: Thunk<void>;
263
261
  * const getConfig = () => todo<Config>();
264
262
  *
265
263
  * assertType<
266
- * [number, Config],
267
- * [ReturnType<typeof getCount>, ReturnType<typeof getConfig>]
264
+ * [ReturnType<typeof getCount>, ReturnType<typeof getConfig>],
265
+ * [number, Config]
268
266
  * >();
269
267
  * const result = trySync(getCount);
270
268
  * assertErr(result);
271
- * assert(
272
- * result.error instanceof Error &&
273
- * result.error.message === "not yet implemented",
274
- * "Expected the not-yet-implemented error.",
275
- * );
269
+ * assertInstanceOf(result.error, Error);
270
+ * assertEqual(result.error.message, "not yet implemented");
276
271
  * ```
277
272
  */
278
273
  export declare const todo: <T>() => T;
@@ -1 +1 @@
1
- {"version":3,"file":"Function.d.ts","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,eAAO,MAAM,eAAe,UAAW,KAAK,KAAG,KAE9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,KAAK,CAAC,KAAG,CAAM,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,KAAK,EAAE,CAAC,SAAS,UAAU,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAChE,QAAQ,CAAC,EAAE,eAAe,GACzB,CAAC,SAAS,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAE7C,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,KAAK,EAAE,CAAC,SAAS,eAAe,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAC1E,QAAQ,EAAE,oBAAoB,GAC7B,CAAC,SAAS,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AA2BvD,eAAO,MAAM,YAAY,UAChB,OAAO,KACb,KAAK,IAAI,UAAU,GAAG,eAOxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ,GAClB,CAAC,SAAS,CAAC,KAAG,KAAK,CAAC,CAAC,CAEf,CAAC;AAEV,2CAA2C;AAC3C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,IAAI,CAAgC,CAAC;AAEnE,4CAA4C;AAC5C,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAiC,CAAC;AAEtE,2CAA2C;AAC3C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,IAAI,CAAgC,CAAC;AAEnE,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,SAAS,CACT,CAAC;AAEpC,mEAAmE;AACnE,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,IAAI,CAAkB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,eAAO,MAAM,IAAI,GAAI,CAAC,OAAK,CAE1B,CAAC"}
1
+ {"version":3,"file":"Function.d.ts","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,eAAO,MAAM,eAAe,UAAW,KAAK,KAAG,KAE9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,KAAK,CAAC,KAAG,CAAM,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,KAAK,EAAE,CAAC,SAAS,UAAU,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAChE,QAAQ,CAAC,EAAE,eAAe,GACzB,CAAC,SAAS,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAE7C,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,KAAK,EAAE,CAAC,SAAS,eAAe,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAC1E,QAAQ,EAAE,oBAAoB,GAC7B,CAAC,SAAS,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AA2BvD,eAAO,MAAM,YAAY,UAChB,OAAO,KACb,KAAK,IAAI,UAAU,GAAG,eAOxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ,GAClB,CAAC,SAAS,CAAC,KAAG,KAAK,CAAC,CAAC,CAEf,CAAC;AAEV,2CAA2C;AAC3C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,IAAI,CAAgC,CAAC;AAEnE,4CAA4C;AAC5C,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAiC,CAAC;AAEtE,2CAA2C;AAC3C,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,IAAI,CAAgC,CAAC;AAEnE,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,SAAS,CACT,CAAC;AAEpC,mEAAmE;AACnE,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,IAAI,CAAkB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,eAAO,MAAM,IAAI,GAAI,CAAC,OAAK,CAE1B,CAAC"}
@@ -188,8 +188,9 @@ export const constVoid = constUndefined;
188
188
  *
189
189
  * ```ts
190
190
  * import {
191
- * assert,
191
+ * assertEqual,
192
192
  * assertErr,
193
+ * assertInstanceOf,
193
194
  * assertType,
194
195
  * todo,
195
196
  * trySync,
@@ -203,19 +204,16 @@ export const constVoid = constUndefined;
203
204
  * const getConfig = () => todo<Config>();
204
205
  *
205
206
  * assertType<
206
- * [number, Config],
207
- * [ReturnType<typeof getCount>, ReturnType<typeof getConfig>]
207
+ * [ReturnType<typeof getCount>, ReturnType<typeof getConfig>],
208
+ * [number, Config]
208
209
  * >();
209
210
  * const result = trySync(getCount);
210
211
  * assertErr(result);
211
- * assert(
212
- * result.error instanceof Error &&
213
- * result.error.message === "not yet implemented",
214
- * "Expected the not-yet-implemented error.",
215
- * );
212
+ * assertInstanceOf(result.error, Error);
213
+ * assertEqual(result.error.message, "not yet implemented");
216
214
  * ```
217
215
  */
218
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
216
+ // oxlint-disable-next-line typescript/no-unnecessary-type-parameters
219
217
  export const todo = () => {
220
218
  throw new Error("not yet implemented");
221
219
  };
@@ -332,8 +332,8 @@ export type FetchConsume<T, E = never> = (response: Response) => Awaitable<Resul
332
332
  * }),
333
333
  * );
334
334
  * assertType<
335
- * Task<{ status: number; cache: string | null }, FetchTransportError>,
336
- * typeof metadata
335
+ * typeof metadata,
336
+ * Task<{ status: number; cache: string | null }, FetchTransportError>
337
337
  * >();
338
338
  * assertOk(user);
339
339
  * assertType(Data, user.value);
@@ -349,7 +349,8 @@ export type FetchConsume<T, E = never> = (response: Response) => Awaitable<Resul
349
349
  *
350
350
  * ```ts
351
351
  * import {
352
- * assert,
352
+ * assertErr,
353
+ * assertType,
353
354
  * AbortError,
354
355
  * createRun,
355
356
  * fetch,
@@ -371,10 +372,8 @@ export type FetchConsume<T, E = never> = (response: Response) => Awaitable<Resul
371
372
  * fiber.abort();
372
373
  * const result = await fiber;
373
374
  *
374
- * assert(
375
- * !result.ok && AbortError.is(result.error),
376
- * "Expected an AbortError.",
377
- * );
375
+ * assertErr(result);
376
+ * assertType(AbortError, result.error);
378
377
  * ```
379
378
  *
380
379
  * @group Fetch