@evolu/common 8.5.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 (328) hide show
  1. package/dist/src/Array.d.ts +170 -97
  2. package/dist/src/Array.d.ts.map +1 -1
  3. package/dist/src/Array.js +67 -42
  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 +150 -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/LockManager.d.ts +12 -10
  35. package/dist/src/LockManager.d.ts.map +1 -1
  36. package/dist/src/Lookup.d.ts +4 -2
  37. package/dist/src/Lookup.d.ts.map +1 -1
  38. package/dist/src/Lookup.js +4 -2
  39. package/dist/src/Number.d.ts +28 -24
  40. package/dist/src/Number.d.ts.map +1 -1
  41. package/dist/src/Number.js +16 -17
  42. package/dist/src/Object.d.ts +89 -47
  43. package/dist/src/Object.d.ts.map +1 -1
  44. package/dist/src/Object.js +88 -41
  45. package/dist/src/Option.d.ts +14 -5
  46. package/dist/src/Option.d.ts.map +1 -1
  47. package/dist/src/Option.js +14 -5
  48. package/dist/src/Order.d.ts +12 -12
  49. package/dist/src/Order.js +12 -12
  50. package/dist/src/Platform.d.ts +2 -2
  51. package/dist/src/Random.d.ts +7 -4
  52. package/dist/src/Random.d.ts.map +1 -1
  53. package/dist/src/Redacted.d.ts +13 -6
  54. package/dist/src/Redacted.d.ts.map +1 -1
  55. package/dist/src/Redacted.js +4 -2
  56. package/dist/src/Ref.d.ts +4 -4
  57. package/dist/src/Relation.d.ts +5 -7
  58. package/dist/src/Relation.d.ts.map +1 -1
  59. package/dist/src/Resource.d.ts +27 -12
  60. package/dist/src/Resource.d.ts.map +1 -1
  61. package/dist/src/Result.d.ts +258 -114
  62. package/dist/src/Result.d.ts.map +1 -1
  63. package/dist/src/Result.js +71 -34
  64. package/dist/src/Schedule.d.ts +233 -116
  65. package/dist/src/Schedule.d.ts.map +1 -1
  66. package/dist/src/Schedule.js +204 -110
  67. package/dist/src/Set.d.ts +43 -24
  68. package/dist/src/Set.d.ts.map +1 -1
  69. package/dist/src/Set.js +25 -13
  70. package/dist/src/Sqlite.d.ts +4 -4
  71. package/dist/src/Sqlite.d.ts.map +1 -1
  72. package/dist/src/Sqlite.js +9 -8
  73. package/dist/src/Task.d.ts +441 -212
  74. package/dist/src/Task.d.ts.map +1 -1
  75. package/dist/src/Task.js +238 -115
  76. package/dist/src/Test.d.ts +10 -4
  77. package/dist/src/Test.d.ts.map +1 -1
  78. package/dist/src/Test.js +10 -4
  79. package/dist/src/Time.d.ts +27 -17
  80. package/dist/src/Time.d.ts.map +1 -1
  81. package/dist/src/Time.js +16 -6
  82. package/dist/src/Type.d.ts +1096 -387
  83. package/dist/src/Type.d.ts.map +1 -1
  84. package/dist/src/Type.js +1046 -372
  85. package/dist/src/Types.d.ts +95 -40
  86. package/dist/src/Types.d.ts.map +1 -1
  87. package/dist/src/Types.js +13 -4
  88. package/dist/src/WebSocket.d.ts +14 -6
  89. package/dist/src/WebSocket.d.ts.map +1 -1
  90. package/dist/src/Worker.d.ts +10 -6
  91. package/dist/src/Worker.d.ts.map +1 -1
  92. package/dist/src/intl/_en.d.ts +3 -1
  93. package/dist/src/intl/_en.d.ts.map +1 -1
  94. package/dist/src/intl/_en.js +17 -3
  95. package/dist/src/intl/ar.d.ts +3 -1
  96. package/dist/src/intl/ar.d.ts.map +1 -1
  97. package/dist/src/intl/ar.js +15 -2
  98. package/dist/src/intl/bn.d.ts +3 -1
  99. package/dist/src/intl/bn.d.ts.map +1 -1
  100. package/dist/src/intl/bn.js +16 -3
  101. package/dist/src/intl/ca.d.ts +3 -1
  102. package/dist/src/intl/ca.d.ts.map +1 -1
  103. package/dist/src/intl/ca.js +16 -3
  104. package/dist/src/intl/cs.d.ts +3 -1
  105. package/dist/src/intl/cs.d.ts.map +1 -1
  106. package/dist/src/intl/cs.js +16 -3
  107. package/dist/src/intl/da.d.ts +3 -1
  108. package/dist/src/intl/da.d.ts.map +1 -1
  109. package/dist/src/intl/da.js +16 -3
  110. package/dist/src/intl/de.d.ts +3 -1
  111. package/dist/src/intl/de.d.ts.map +1 -1
  112. package/dist/src/intl/de.js +16 -3
  113. package/dist/src/intl/el.d.ts +3 -1
  114. package/dist/src/intl/el.d.ts.map +1 -1
  115. package/dist/src/intl/el.js +16 -3
  116. package/dist/src/intl/es.d.ts +3 -1
  117. package/dist/src/intl/es.d.ts.map +1 -1
  118. package/dist/src/intl/es.js +16 -3
  119. package/dist/src/intl/fa.d.ts +3 -1
  120. package/dist/src/intl/fa.d.ts.map +1 -1
  121. package/dist/src/intl/fa.js +16 -3
  122. package/dist/src/intl/fi.d.ts +3 -1
  123. package/dist/src/intl/fi.d.ts.map +1 -1
  124. package/dist/src/intl/fi.js +16 -3
  125. package/dist/src/intl/fil.d.ts +3 -1
  126. package/dist/src/intl/fil.d.ts.map +1 -1
  127. package/dist/src/intl/fil.js +16 -3
  128. package/dist/src/intl/fr.d.ts +3 -1
  129. package/dist/src/intl/fr.d.ts.map +1 -1
  130. package/dist/src/intl/fr.js +16 -3
  131. package/dist/src/intl/he.d.ts +3 -1
  132. package/dist/src/intl/he.d.ts.map +1 -1
  133. package/dist/src/intl/he.js +16 -3
  134. package/dist/src/intl/hi.d.ts +3 -1
  135. package/dist/src/intl/hi.d.ts.map +1 -1
  136. package/dist/src/intl/hi.js +16 -3
  137. package/dist/src/intl/hr.d.ts +3 -1
  138. package/dist/src/intl/hr.d.ts.map +1 -1
  139. package/dist/src/intl/hr.js +16 -3
  140. package/dist/src/intl/hu.d.ts +2 -1
  141. package/dist/src/intl/hu.d.ts.map +1 -1
  142. package/dist/src/intl/hu.js +15 -3
  143. package/dist/src/intl/id.d.ts +3 -1
  144. package/dist/src/intl/id.d.ts.map +1 -1
  145. package/dist/src/intl/id.js +16 -3
  146. package/dist/src/intl/it.d.ts +3 -1
  147. package/dist/src/intl/it.d.ts.map +1 -1
  148. package/dist/src/intl/it.js +16 -3
  149. package/dist/src/intl/ja.d.ts +3 -1
  150. package/dist/src/intl/ja.d.ts.map +1 -1
  151. package/dist/src/intl/ja.js +16 -3
  152. package/dist/src/intl/ko.d.ts +3 -1
  153. package/dist/src/intl/ko.d.ts.map +1 -1
  154. package/dist/src/intl/ko.js +16 -3
  155. package/dist/src/intl/ml.d.ts +3 -1
  156. package/dist/src/intl/ml.d.ts.map +1 -1
  157. package/dist/src/intl/ml.js +16 -3
  158. package/dist/src/intl/mr.d.ts +3 -1
  159. package/dist/src/intl/mr.d.ts.map +1 -1
  160. package/dist/src/intl/mr.js +16 -3
  161. package/dist/src/intl/ms.d.ts +3 -1
  162. package/dist/src/intl/ms.d.ts.map +1 -1
  163. package/dist/src/intl/ms.js +15 -2
  164. package/dist/src/intl/nb.d.ts +2 -1
  165. package/dist/src/intl/nb.d.ts.map +1 -1
  166. package/dist/src/intl/nb.js +14 -2
  167. package/dist/src/intl/nl.d.ts +3 -1
  168. package/dist/src/intl/nl.d.ts.map +1 -1
  169. package/dist/src/intl/nl.js +16 -3
  170. package/dist/src/intl/pa.d.ts +3 -1
  171. package/dist/src/intl/pa.d.ts.map +1 -1
  172. package/dist/src/intl/pa.js +16 -3
  173. package/dist/src/intl/pl.d.ts +2 -0
  174. package/dist/src/intl/pl.d.ts.map +1 -1
  175. package/dist/src/intl/pl.js +15 -2
  176. package/dist/src/intl/pt-BR.d.ts +3 -1
  177. package/dist/src/intl/pt-BR.d.ts.map +1 -1
  178. package/dist/src/intl/pt-BR.js +16 -3
  179. package/dist/src/intl/pt.d.ts +3 -1
  180. package/dist/src/intl/pt.d.ts.map +1 -1
  181. package/dist/src/intl/pt.js +15 -2
  182. package/dist/src/intl/ro.d.ts +3 -1
  183. package/dist/src/intl/ro.d.ts.map +1 -1
  184. package/dist/src/intl/ro.js +16 -3
  185. package/dist/src/intl/sk.d.ts +3 -1
  186. package/dist/src/intl/sk.d.ts.map +1 -1
  187. package/dist/src/intl/sk.js +15 -2
  188. package/dist/src/intl/sl.d.ts +3 -1
  189. package/dist/src/intl/sl.d.ts.map +1 -1
  190. package/dist/src/intl/sl.js +16 -3
  191. package/dist/src/intl/sv.d.ts +3 -1
  192. package/dist/src/intl/sv.d.ts.map +1 -1
  193. package/dist/src/intl/sv.js +16 -3
  194. package/dist/src/intl/sw.d.ts +1 -0
  195. package/dist/src/intl/sw.d.ts.map +1 -1
  196. package/dist/src/intl/sw.js +14 -2
  197. package/dist/src/intl/ta.d.ts +3 -1
  198. package/dist/src/intl/ta.d.ts.map +1 -1
  199. package/dist/src/intl/ta.js +16 -3
  200. package/dist/src/intl/te.d.ts +3 -1
  201. package/dist/src/intl/te.d.ts.map +1 -1
  202. package/dist/src/intl/te.js +16 -3
  203. package/dist/src/intl/th.d.ts +3 -1
  204. package/dist/src/intl/th.d.ts.map +1 -1
  205. package/dist/src/intl/th.js +16 -3
  206. package/dist/src/intl/tr.d.ts +3 -1
  207. package/dist/src/intl/tr.d.ts.map +1 -1
  208. package/dist/src/intl/tr.js +16 -3
  209. package/dist/src/intl/uk.d.ts +3 -1
  210. package/dist/src/intl/uk.d.ts.map +1 -1
  211. package/dist/src/intl/uk.js +16 -3
  212. package/dist/src/intl/ur.d.ts +3 -1
  213. package/dist/src/intl/ur.d.ts.map +1 -1
  214. package/dist/src/intl/ur.js +15 -2
  215. package/dist/src/intl/vi.d.ts +3 -1
  216. package/dist/src/intl/vi.d.ts.map +1 -1
  217. package/dist/src/intl/vi.js +16 -3
  218. package/dist/src/intl/zh-CN.d.ts +3 -1
  219. package/dist/src/intl/zh-CN.d.ts.map +1 -1
  220. package/dist/src/intl/zh-CN.js +16 -3
  221. package/dist/src/intl/zh-TW.d.ts +3 -1
  222. package/dist/src/intl/zh-TW.d.ts.map +1 -1
  223. package/dist/src/intl/zh-TW.js +16 -3
  224. package/dist/src/local-first/Evolu.d.ts +47 -24
  225. package/dist/src/local-first/Evolu.d.ts.map +1 -1
  226. package/dist/src/local-first/Owner.d.ts +10 -7
  227. package/dist/src/local-first/Owner.d.ts.map +1 -1
  228. package/dist/src/local-first/Owner.js +10 -7
  229. package/dist/src/local-first/Protocol.d.ts +5 -5
  230. package/dist/src/local-first/Protocol.js +5 -5
  231. package/dist/src/local-first/Query.d.ts +34 -21
  232. package/dist/src/local-first/Query.d.ts.map +1 -1
  233. package/dist/src/local-first/Query.js +25 -13
  234. package/dist/src/local-first/Relay.d.ts +12 -5
  235. package/dist/src/local-first/Relay.d.ts.map +1 -1
  236. package/dist/src/local-first/Schema.d.ts +19 -11
  237. package/dist/src/local-first/Schema.d.ts.map +1 -1
  238. package/dist/src/local-first/Schema.js +11 -6
  239. package/dist/src/local-first/Storage.d.ts +4 -2
  240. package/dist/src/local-first/Storage.d.ts.map +1 -1
  241. package/package.json +3 -4
  242. package/src/Array.ts +170 -97
  243. package/src/Assert.ts +336 -31
  244. package/src/BigInt.ts +3 -3
  245. package/src/Brand.ts +7 -7
  246. package/src/Buffer.ts +12 -4
  247. package/src/Cache.ts +8 -3
  248. package/src/Callbacks.ts +8 -4
  249. package/src/Console.ts +45 -30
  250. package/src/Crypto.ts +13 -8
  251. package/src/Eq.ts +450 -122
  252. package/src/Function.ts +54 -24
  253. package/src/Http.ts +52 -19
  254. package/src/Identicon.ts +9 -4
  255. package/src/LockManager.ts +12 -10
  256. package/src/Lookup.ts +4 -2
  257. package/src/Number.ts +28 -24
  258. package/src/Object.ts +115 -49
  259. package/src/Option.ts +14 -5
  260. package/src/Order.ts +12 -12
  261. package/src/Platform.ts +2 -2
  262. package/src/Random.ts +7 -4
  263. package/src/Redacted.ts +13 -6
  264. package/src/Ref.ts +4 -4
  265. package/src/Relation.ts +5 -7
  266. package/src/Resource.ts +27 -12
  267. package/src/Result.ts +258 -114
  268. package/src/Schedule.ts +233 -116
  269. package/src/Set.ts +43 -24
  270. package/src/Sqlite.ts +9 -8
  271. package/src/Task.ts +441 -212
  272. package/src/Test.ts +10 -4
  273. package/src/Time.ts +27 -17
  274. package/src/Type.ts +2077 -620
  275. package/src/Types.ts +108 -40
  276. package/src/WebSocket.ts +14 -6
  277. package/src/Worker.ts +10 -6
  278. package/src/intl/_en.ts +20 -4
  279. package/src/intl/ar.ts +17 -2
  280. package/src/intl/bn.ts +19 -4
  281. package/src/intl/ca.ts +19 -4
  282. package/src/intl/cs.ts +19 -4
  283. package/src/intl/da.ts +19 -4
  284. package/src/intl/de.ts +19 -4
  285. package/src/intl/el.ts +19 -4
  286. package/src/intl/es.ts +19 -4
  287. package/src/intl/fa.ts +19 -4
  288. package/src/intl/fi.ts +19 -4
  289. package/src/intl/fil.ts +19 -4
  290. package/src/intl/fr.ts +19 -4
  291. package/src/intl/he.ts +19 -4
  292. package/src/intl/hi.ts +19 -4
  293. package/src/intl/hr.ts +19 -4
  294. package/src/intl/hu.ts +18 -4
  295. package/src/intl/id.ts +19 -4
  296. package/src/intl/it.ts +19 -4
  297. package/src/intl/ja.ts +19 -4
  298. package/src/intl/ko.ts +19 -4
  299. package/src/intl/ml.ts +19 -4
  300. package/src/intl/mr.ts +19 -4
  301. package/src/intl/ms.ts +17 -2
  302. package/src/intl/nb.ts +16 -2
  303. package/src/intl/nl.ts +19 -4
  304. package/src/intl/pa.ts +19 -4
  305. package/src/intl/pl.ts +18 -2
  306. package/src/intl/pt-BR.ts +19 -4
  307. package/src/intl/pt.ts +17 -2
  308. package/src/intl/ro.ts +19 -4
  309. package/src/intl/sk.ts +17 -2
  310. package/src/intl/sl.ts +19 -4
  311. package/src/intl/sv.ts +19 -4
  312. package/src/intl/sw.ts +15 -2
  313. package/src/intl/ta.ts +19 -4
  314. package/src/intl/te.ts +19 -4
  315. package/src/intl/th.ts +19 -4
  316. package/src/intl/tr.ts +19 -4
  317. package/src/intl/uk.ts +19 -4
  318. package/src/intl/ur.ts +17 -2
  319. package/src/intl/vi.ts +19 -3
  320. package/src/intl/zh-CN.ts +19 -4
  321. package/src/intl/zh-TW.ts +19 -4
  322. package/src/local-first/Evolu.ts +47 -24
  323. package/src/local-first/Owner.ts +10 -7
  324. package/src/local-first/Protocol.ts +5 -5
  325. package/src/local-first/Query.ts +34 -21
  326. package/src/local-first/Relay.ts +12 -5
  327. package/src/local-first/Schema.ts +19 -11
  328. package/src/local-first/Storage.ts +4 -2
@@ -16,12 +16,12 @@ import { assertType, NonNaNNumber, NonNegativeFiniteNumber, PositiveInt, } from
16
16
  * ### Recurring immediately
17
17
  *
18
18
  * ```ts
19
- * import { forever, take, testCreateDeps } from "@evolu/common";
19
+ * import { assertOk, forever, take, testCreateDeps } from "@evolu/common";
20
20
  *
21
21
  * // Retry immediately, up to 5 times.
22
22
  * const immediate = take(5)(forever);
23
23
  * const step = immediate(testCreateDeps());
24
- * expectOk(step(undefined), [0, 0]);
24
+ * assertOk(step(undefined), [0, 0]);
25
25
  * ```
26
26
  *
27
27
  * @group Constructors
@@ -38,13 +38,19 @@ export const forever = () => {
38
38
  * ### Scheduling one recurrence
39
39
  *
40
40
  * ```ts
41
- * import { done, once, testCreateDeps } from "@evolu/common";
41
+ * import {
42
+ * assertErr,
43
+ * assertOk,
44
+ * done,
45
+ * once,
46
+ * testCreateDeps,
47
+ * } from "@evolu/common";
42
48
  *
43
49
  * // Produce one scheduled recurrence, then stop.
44
50
  * const oneShot = once;
45
51
  * const step = oneShot(testCreateDeps());
46
- * expectOk(step(undefined), [0, 0]);
47
- * expectErr(step(undefined), done());
52
+ * assertOk(step(undefined), [0, 0]);
53
+ * assertErr(step(undefined), done());
48
54
  * ```
49
55
  *
50
56
  * @group Constructors
@@ -70,15 +76,21 @@ export const once = () => {
70
76
  * ### Limiting recurrence count
71
77
  *
72
78
  * ```ts
73
- * import { done, recurs, testCreateDeps } from "@evolu/common";
79
+ * import {
80
+ * assertErr,
81
+ * assertOk,
82
+ * done,
83
+ * recurs,
84
+ * testCreateDeps,
85
+ * } from "@evolu/common";
74
86
  *
75
87
  * // Retry up to 3 times (4 total attempts including the initial operation).
76
88
  * const retry = recurs(3);
77
89
  * const step = retry(testCreateDeps());
78
- * expectOk(step(undefined), [0, 0]);
90
+ * assertOk(step(undefined), [0, 0]);
79
91
  * step(undefined);
80
92
  * step(undefined);
81
- * expectErr(step(undefined), done());
93
+ * assertErr(step(undefined), done());
82
94
  * ```
83
95
  *
84
96
  * @group Constructors
@@ -93,7 +105,7 @@ export const recurs = (n) => take(n)(forever);
93
105
  * ### Constant spacing
94
106
  *
95
107
  * ```ts
96
- * import { spaced, take, testCreateDeps } from "@evolu/common";
108
+ * import { assertOk, spaced, take, testCreateDeps } from "@evolu/common";
97
109
  *
98
110
  * // Poll every second, retry three times, or run a long-lived heartbeat.
99
111
  * const poll = spaced("1s");
@@ -101,9 +113,9 @@ export const recurs = (n) => take(n)(forever);
101
113
  * const heartbeat = spaced("30s");
102
114
  * const deps = testCreateDeps();
103
115
  *
104
- * expectOk(poll(deps)(undefined), [1000, 1000]);
105
- * expectOk(retry(deps)(undefined), [500, 500]);
106
- * expectOk(heartbeat(deps)(undefined), [30000, 30000]);
116
+ * assertOk(poll(deps)(undefined), [1000, 1000]);
117
+ * assertOk(retry(deps)(undefined), [500, 500]);
118
+ * assertOk(heartbeat(deps)(undefined), [30000, 30000]);
107
119
  * ```
108
120
  *
109
121
  * @group Constructors
@@ -127,17 +139,17 @@ export const spaced = (duration) => () => {
127
139
  * ### Exponential growth factors
128
140
  *
129
141
  * ```ts
130
- * import { exponential, testCreateDeps } from "@evolu/common";
142
+ * import { assertOk, exponential, testCreateDeps } from "@evolu/common";
131
143
  *
132
144
  * // Standard doubling and gentler 1.5× growth.
133
145
  * const standard = exponential("100ms");
134
146
  * const gentle = exponential("100ms", 1.5);
135
147
  * const standardStep = standard(testCreateDeps());
136
148
  * const gentleStep = gentle(testCreateDeps());
137
- * expectOk(standardStep(undefined), [100, 100]);
138
- * expectOk(standardStep(undefined), [200, 200]);
139
- * expectOk(gentleStep(undefined), [100, 100]);
140
- * expectOk(gentleStep(undefined), [150, 150]);
149
+ * assertOk(standardStep(undefined), [100, 100]);
150
+ * assertOk(standardStep(undefined), [200, 200]);
151
+ * assertOk(gentleStep(undefined), [100, 100]);
152
+ * assertOk(gentleStep(undefined), [150, 150]);
141
153
  * ```
142
154
  *
143
155
  * @group Constructors
@@ -174,12 +186,12 @@ const saturateComputedMillis = (value) => {
174
186
  * ### Linear growth
175
187
  *
176
188
  * ```ts
177
- * import { linear, testCreateDeps } from "@evolu/common";
189
+ * import { assertOk, linear, testCreateDeps } from "@evolu/common";
178
190
  *
179
191
  * // 100ms, 200ms, 300ms, 400ms, ...
180
192
  * const step = linear("100ms")(testCreateDeps());
181
- * expectOk(step(undefined), [100, 100]);
182
- * expectOk(step(undefined), [200, 200]);
193
+ * assertOk(step(undefined), [100, 100]);
194
+ * assertOk(step(undefined), [200, 200]);
183
195
  * ```
184
196
  *
185
197
  * @group Constructors
@@ -210,13 +222,13 @@ export const linear = (base) => () => {
210
222
  * ### Fibonacci growth
211
223
  *
212
224
  * ```ts
213
- * import { fibonacci, testCreateDeps } from "@evolu/common";
225
+ * import { assertOk, fibonacci, testCreateDeps } from "@evolu/common";
214
226
  *
215
227
  * // 100ms, 100ms, 200ms, 300ms, 500ms, ...
216
228
  * const step = fibonacci("100ms")(testCreateDeps());
217
- * expectOk(step(undefined), [100, 100]);
218
- * expectOk(step(undefined), [100, 100]);
219
- * expectOk(step(undefined), [200, 200]);
229
+ * assertOk(step(undefined), [100, 100]);
230
+ * assertOk(step(undefined), [100, 100]);
231
+ * assertOk(step(undefined), [200, 200]);
220
232
  * ```
221
233
  *
222
234
  * @group Constructors
@@ -244,7 +256,7 @@ export const fibonacci = (initial) => () => {
244
256
  * ### Maintaining a fixed cadence
245
257
  *
246
258
  * ```ts
247
- * import { fixed, take, testCreateDeps } from "@evolu/common";
259
+ * import { assertOk, fixed, take, testCreateDeps } from "@evolu/common";
248
260
  *
249
261
  * // A bounded health check and an unbounded cron-like cadence.
250
262
  * const healthCheck = take(10)(fixed("5s"));
@@ -252,10 +264,10 @@ export const fibonacci = (initial) => () => {
252
264
  *
253
265
  * const healthDeps = testCreateDeps();
254
266
  * const healthStep = healthCheck(healthDeps);
255
- * expectOk(healthStep(undefined), [0, 5000]);
267
+ * assertOk(healthStep(undefined), [0, 5000]);
256
268
  * healthDeps.time.advance("3s");
257
- * expectOk(healthStep(undefined), [1, 2000]);
258
- * expectOk(cronLike(testCreateDeps())(undefined), [0, 60000]);
269
+ * assertOk(healthStep(undefined), [1, 2000]);
270
+ * assertOk(cronLike(testCreateDeps())(undefined), [0, 60000]);
259
271
  * ```
260
272
  *
261
273
  * @group Constructors
@@ -304,7 +316,7 @@ const createScheduleStepMetrics = (deps) => {
304
316
  * ### Aligning to time windows
305
317
  *
306
318
  * ```ts
307
- * import { testCreateDeps, windowed } from "@evolu/common";
319
+ * import { assertOk, testCreateDeps, windowed } from "@evolu/common";
308
320
  *
309
321
  * const stepAfter = (elapsed: "3s" | "7s") => {
310
322
  * const deps = testCreateDeps();
@@ -315,8 +327,8 @@ const createScheduleStepMetrics = (deps) => {
315
327
  * };
316
328
  *
317
329
  * // At 3s the next boundary is 2s away; at 7s it is 3s away.
318
- * expectOk(stepAfter("3s"), [1, 2000]);
319
- * expectOk(stepAfter("7s"), [1, 3000]);
330
+ * assertOk(stepAfter("3s"), [1, 2000]);
331
+ * assertOk(stepAfter("7s"), [1, 3000]);
320
332
  * ```
321
333
  *
322
334
  * @group Constructors
@@ -340,12 +352,18 @@ export const windowed = (interval) => (deps) => {
340
352
  * ### Scheduling one delayed recurrence
341
353
  *
342
354
  * ```ts
343
- * import { done, fromDelay, testCreateDeps } from "@evolu/common";
355
+ * import {
356
+ * assertErr,
357
+ * assertOk,
358
+ * done,
359
+ * fromDelay,
360
+ * testCreateDeps,
361
+ * } from "@evolu/common";
344
362
  *
345
363
  * // Wait one second, then stop.
346
364
  * const step = fromDelay("1s")(testCreateDeps());
347
- * expectOk(step(undefined), [1000, 1000]);
348
- * expectErr(step(undefined), done());
365
+ * assertOk(step(undefined), [1000, 1000]);
366
+ * assertErr(step(undefined), done());
349
367
  * ```
350
368
  *
351
369
  * @group Constructors
@@ -360,15 +378,21 @@ export const fromDelay = (delay) => take(1)(spaced(delay));
360
378
  * ### Sequencing custom delays
361
379
  *
362
380
  * ```ts
363
- * import { done, fromDelays, testCreateDeps } from "@evolu/common";
381
+ * import {
382
+ * assertErr,
383
+ * assertOk,
384
+ * done,
385
+ * fromDelays,
386
+ * testCreateDeps,
387
+ * } from "@evolu/common";
364
388
  *
365
389
  * // A custom retry sequence: 100ms, 500ms, then 2s.
366
390
  * const custom = fromDelays("100ms", "500ms", "2s");
367
391
  * const step = custom(testCreateDeps());
368
- * expectOk(step(undefined), [100, 100]);
369
- * expectOk(step(undefined), [500, 500]);
370
- * expectOk(step(undefined), [2000, 2000]);
371
- * expectErr(step(undefined), done());
392
+ * assertOk(step(undefined), [100, 100]);
393
+ * assertOk(step(undefined), [500, 500]);
394
+ * assertOk(step(undefined), [2000, 2000]);
395
+ * assertErr(step(undefined), done());
372
396
  * ```
373
397
  *
374
398
  * @group Constructors
@@ -384,6 +408,8 @@ export const fromDelays = (...delays) => sequenceSchedules(...delays.map((d) =>
384
408
  *
385
409
  * ```ts
386
410
  * import {
411
+ * assertErr,
412
+ * assertOk,
387
413
  * done,
388
414
  * elapsed,
389
415
  * exponential,
@@ -395,7 +421,7 @@ export const fromDelays = (...delays) => sequenceSchedules(...delays.map((d) =>
395
421
  *
396
422
  * // Track elapsed time alongside each backoff step.
397
423
  * const withTiming = intersectSchedules(exponential("100ms"), elapsed);
398
- * expectOk(withTiming(testCreateDeps())(undefined), [[100, 0], 100]);
424
+ * assertOk(withTiming(testCreateDeps())(undefined), [[100, 0], 100]);
399
425
  *
400
426
  * // Or stop a schedule after 30 seconds of elapsed time.
401
427
  * const timeLimited = whileScheduleOutput((ms: Millis) => ms < 30000)(
@@ -405,7 +431,7 @@ export const fromDelays = (...delays) => sequenceSchedules(...delays.map((d) =>
405
431
  * const step = timeLimited(deps);
406
432
  * step(undefined);
407
433
  * deps.time.advance("30s");
408
- * expectErr(step(undefined), done());
434
+ * assertErr(step(undefined), done());
409
435
  * ```
410
436
  *
411
437
  * @group Constructors
@@ -424,6 +450,8 @@ export const elapsed = (deps) => {
424
450
  *
425
451
  * ```ts
426
452
  * import {
453
+ * assertErr,
454
+ * assertOk,
427
455
  * done,
428
456
  * during,
429
457
  * exponential,
@@ -435,16 +463,16 @@ export const elapsed = (deps) => {
435
463
  * const timeLimited = during("30s");
436
464
  * const deps = testCreateDeps();
437
465
  * const step = timeLimited(deps);
438
- * expectOk(step(undefined), [0, 0]);
466
+ * assertOk(step(undefined), [0, 0]);
439
467
  * deps.time.advance("30.1s");
440
- * expectErr(step(undefined), done());
468
+ * assertErr(step(undefined), done());
441
469
  *
442
470
  * // Combine elapsed time with backoff for a time-boxed retry.
443
471
  * const timedRetry = intersectSchedules(
444
472
  * exponential("100ms"),
445
473
  * during("10s"),
446
474
  * );
447
- * expectOk(timedRetry(testCreateDeps())(undefined), [[100, 0], 100]);
475
+ * assertOk(timedRetry(testCreateDeps())(undefined), [[100, 0], 100]);
448
476
  * ```
449
477
  *
450
478
  * @group Constructors
@@ -459,6 +487,7 @@ export const during = (duration) => whileScheduleOutput((ms) => ms <= durationTo
459
487
  *
460
488
  * ```ts
461
489
  * import {
490
+ * assertOk,
462
491
  * always,
463
492
  * exponential,
464
493
  * intersectSchedules,
@@ -467,14 +496,14 @@ export const during = (duration) => whileScheduleOutput((ms) => ms <= durationTo
467
496
  *
468
497
  * // Always emit the same label.
469
498
  * const labeled = always("retry");
470
- * expectOk(labeled(testCreateDeps())(undefined), ["retry", 0]);
499
+ * assertOk(labeled(testCreateDeps())(undefined), ["retry", 0]);
471
500
  *
472
501
  * // Add a label while preserving exponential timing.
473
502
  * const withLabel = intersectSchedules(
474
503
  * exponential("100ms"),
475
504
  * always("backoff"),
476
505
  * );
477
- * expectOk(withLabel(testCreateDeps())(undefined), [
506
+ * assertOk(withLabel(testCreateDeps())(undefined), [
478
507
  * [100, "backoff"],
479
508
  * 100,
480
509
  * ]);
@@ -493,7 +522,7 @@ export const always = (value) => mapSchedule(() => value)(forever);
493
522
  * ### Unfolding state
494
523
  *
495
524
  * ```ts
496
- * import { testCreateDeps, unfoldSchedule } from "@evolu/common";
525
+ * import { assertOk, testCreateDeps, unfoldSchedule } from "@evolu/common";
497
526
  *
498
527
  * // Unfold counters, custom backoff values, or state machines.
499
528
  * const counter = unfoldSchedule(0, (n) => n + 1);
@@ -516,12 +545,12 @@ export const always = (value) => mapSchedule(() => value)(forever);
516
545
  * const counterStep = counter(testCreateDeps());
517
546
  * const backoffStep = customBackoff(testCreateDeps());
518
547
  * const phaseStep = phases(testCreateDeps());
519
- * expectOk(counterStep(undefined), [0, 0]);
520
- * expectOk(counterStep(undefined), [1, 0]);
548
+ * assertOk(counterStep(undefined), [0, 0]);
549
+ * assertOk(counterStep(undefined), [1, 0]);
521
550
  * backoffStep(undefined);
522
551
  * phaseStep(undefined);
523
- * expectOk(backoffStep(undefined), [150, 0]);
524
- * expectOk(phaseStep(undefined), ["warmup", 0]);
552
+ * assertOk(backoffStep(undefined), [150, 0]);
553
+ * assertOk(phaseStep(undefined), ["warmup", 0]);
525
554
  * ```
526
555
  *
527
556
  * @group Constructors
@@ -545,14 +574,20 @@ export const unfoldSchedule = (initial, next) => () => {
545
574
  * ### Limiting a schedule
546
575
  *
547
576
  * ```ts
548
- * import { done, exponential, take, testCreateDeps } from "@evolu/common";
577
+ * import {
578
+ * assertErr,
579
+ * done,
580
+ * exponential,
581
+ * take,
582
+ * testCreateDeps,
583
+ * } from "@evolu/common";
549
584
  *
550
585
  * // Three exponential retries, then Done.
551
586
  * const step = take(3)(exponential("100ms"))(testCreateDeps());
552
587
  * step(undefined);
553
588
  * step(undefined);
554
589
  * step(undefined);
555
- * expectErr(step(undefined), done());
590
+ * assertErr(step(undefined), done());
556
591
  * ```
557
592
  *
558
593
  * @group Limiting
@@ -576,6 +611,8 @@ export const take = (n) => (schedule) => (deps) => {
576
611
  *
577
612
  * ```ts
578
613
  * import {
614
+ * assertErr,
615
+ * assertOk,
579
616
  * done,
580
617
  * exponential,
581
618
  * maxElapsed,
@@ -585,9 +622,9 @@ export const take = (n) => (schedule) => (deps) => {
585
622
  * // Retry for at most 30 seconds.
586
623
  * const deps = testCreateDeps();
587
624
  * const step = maxElapsed("30s")(exponential("1s"))(deps);
588
- * expectOk(step(undefined), [1000, 1000]);
625
+ * assertOk(step(undefined), [1000, 1000]);
589
626
  * deps.time.advance("30s");
590
- * expectErr(step(undefined), done());
627
+ * assertErr(step(undefined), done());
591
628
  * ```
592
629
  *
593
630
  * @group Limiting
@@ -618,7 +655,12 @@ export const maxElapsed = (duration) => {
618
655
  * ### Capping delays
619
656
  *
620
657
  * ```ts
621
- * import { exponential, maxDelay, testCreateDeps } from "@evolu/common";
658
+ * import {
659
+ * assertOk,
660
+ * exponential,
661
+ * maxDelay,
662
+ * testCreateDeps,
663
+ * } from "@evolu/common";
622
664
  *
623
665
  * // Exponential delays grow 1s, 2s, 4s, 8s, then stay capped at 10s.
624
666
  * const step = maxDelay("10s")(exponential("1s"))(testCreateDeps());
@@ -626,7 +668,7 @@ export const maxElapsed = (duration) => {
626
668
  * step(undefined);
627
669
  * step(undefined);
628
670
  * step(undefined);
629
- * expectOk(step(undefined), [16000, 10000]);
671
+ * assertOk(step(undefined), [16000, 10000]);
630
672
  * ```
631
673
  *
632
674
  * @group Limiting
@@ -664,6 +706,7 @@ export const maxDelay = (max) => {
664
706
  *
665
707
  * ```ts
666
708
  * import {
709
+ * assertOk,
667
710
  * exponential,
668
711
  * jitter,
669
712
  * spaced,
@@ -681,8 +724,8 @@ export const maxDelay = (max) => {
681
724
  * // Poll around a 30s target cadence, from 27s to 33s.
682
725
  * const polling = jitter("10%", "around")(spaced("30s"));
683
726
  *
684
- * expectOk(conservative(deps)(undefined), [1000, 875]);
685
- * expectOk(polling(deps)(undefined), [30000, 30000]);
727
+ * assertOk(conservative(deps)(undefined), [1000, 875]);
728
+ * assertOk(polling(deps)(undefined), [30000, 30000]);
686
729
  * ```
687
730
  *
688
731
  * @group Delay
@@ -713,12 +756,17 @@ const createJitter = (factor, maxMultiplier) => (schedule) => (deps) => {
713
756
  * ### Replacing the first delay
714
757
  *
715
758
  * ```ts
716
- * import { delayed, exponential, testCreateDeps } from "@evolu/common";
759
+ * import {
760
+ * assertOk,
761
+ * delayed,
762
+ * exponential,
763
+ * testCreateDeps,
764
+ * } from "@evolu/common";
717
765
  *
718
766
  * const step = delayed("1s")(exponential("100ms"))(testCreateDeps());
719
767
  * // Only the first delay is replaced; later exponential delays are unchanged.
720
- * expectOk(step(undefined), [100, 1000]);
721
- * expectOk(step(undefined), [200, 200]);
768
+ * assertOk(step(undefined), [100, 1000]);
769
+ * assertOk(step(undefined), [200, 200]);
722
770
  * ```
723
771
  *
724
772
  * @group Delay
@@ -746,11 +794,16 @@ export const delayed = (initialDelay) => {
746
794
  * ### Adding to every delay
747
795
  *
748
796
  * ```ts
749
- * import { addDelay, exponential, testCreateDeps } from "@evolu/common";
797
+ * import {
798
+ * assertOk,
799
+ * addDelay,
800
+ * exponential,
801
+ * testCreateDeps,
802
+ * } from "@evolu/common";
750
803
  *
751
804
  * // Add 500ms to every exponential delay.
752
805
  * const step = addDelay("500ms")(exponential("100ms"))(testCreateDeps());
753
- * expectOk(step(undefined), [100, 600]);
806
+ * assertOk(step(undefined), [100, 600]);
754
807
  * ```
755
808
  *
756
809
  * @group Delay
@@ -767,7 +820,12 @@ export const addDelay = (extra) => {
767
820
  * ### Transforming delays
768
821
  *
769
822
  * ```ts
770
- * import { exponential, modifyDelay, testCreateDeps } from "@evolu/common";
823
+ * import {
824
+ * assertOk,
825
+ * exponential,
826
+ * modifyDelay,
827
+ * testCreateDeps,
828
+ * } from "@evolu/common";
771
829
  *
772
830
  * // Arbitrary transformations can double or cap delays.
773
831
  * const slower = modifyDelay((delay) => delay * 2)(exponential("100ms"));
@@ -777,8 +835,8 @@ export const addDelay = (extra) => {
777
835
  * );
778
836
  * const deps = testCreateDeps();
779
837
  *
780
- * expectOk(slower(deps)(undefined), [100, 200]);
781
- * expectOk(capped(deps)(undefined), [20000, 10000]);
838
+ * assertOk(slower(deps)(undefined), [100, 200]);
839
+ * assertOk(capped(deps)(undefined), [20000, 10000]);
782
840
  * ```
783
841
  *
784
842
  * @group Delay
@@ -810,21 +868,26 @@ export const modifyDelay = (f) => (schedule) => (deps) => {
810
868
  * ### Compensating for execution time
811
869
  *
812
870
  * ```ts
813
- * import { compensate, spaced, testCreateDeps } from "@evolu/common";
871
+ * import {
872
+ * assertOk,
873
+ * compensate,
874
+ * spaced,
875
+ * testCreateDeps,
876
+ * } from "@evolu/common";
814
877
  *
815
878
  * const fastDeps = testCreateDeps();
816
879
  * const fastStep = compensate(spaced("5s"))(fastDeps);
817
- * expectOk(fastStep(undefined), [5000, 5000]);
880
+ * assertOk(fastStep(undefined), [5000, 5000]);
818
881
  * // Five seconds waiting plus one second working leaves four seconds.
819
882
  * fastDeps.time.advance("6s");
820
- * expectOk(fastStep(undefined), [5000, 4000]);
883
+ * assertOk(fastStep(undefined), [5000, 4000]);
821
884
  *
822
885
  * const slowDeps = testCreateDeps();
823
886
  * const slowStep = compensate(spaced("5s"))(slowDeps);
824
- * expectOk(slowStep(undefined), [5000, 5000]);
887
+ * assertOk(slowStep(undefined), [5000, 5000]);
825
888
  * // Five seconds waiting plus six seconds working leaves no delay.
826
889
  * slowDeps.time.advance("11s");
827
- * expectOk(slowStep(undefined), [5000, 0]);
890
+ * assertOk(slowStep(undefined), [5000, 0]);
828
891
  * ```
829
892
  *
830
893
  * @group Delay
@@ -856,6 +919,8 @@ export const compensate = (schedule) => (deps) => {
856
919
  *
857
920
  * ```ts
858
921
  * import {
922
+ * assertErr,
923
+ * assertOk,
859
924
  * done,
860
925
  * exponential,
861
926
  * testCreateDeps,
@@ -870,8 +935,8 @@ export const compensate = (schedule) => (deps) => {
870
935
  * (error: MyError) => error.type === "Transient",
871
936
  * )(exponential("100ms"));
872
937
  * const step = retryTransient(testCreateDeps());
873
- * expectOk(step({ type: "Transient" }), [100, 100]);
874
- * expectErr(step({ type: "Fatal" }), done());
938
+ * assertOk(step({ type: "Transient" }), [100, 100]);
939
+ * assertErr(step({ type: "Fatal" }), done());
875
940
  * ```
876
941
  *
877
942
  * @group Filtering
@@ -899,6 +964,8 @@ export const whileScheduleInput = (predicate) => (schedule) => (deps) => {
899
964
  *
900
965
  * ```ts
901
966
  * import {
967
+ * assertErr,
968
+ * assertOk,
902
969
  * done,
903
970
  * exponential,
904
971
  * testCreateDeps,
@@ -913,8 +980,8 @@ export const whileScheduleInput = (predicate) => (schedule) => (deps) => {
913
980
  * (error: MyError) => error.type === "Fatal",
914
981
  * )(exponential("100ms"));
915
982
  * const step = stopOnFatal(testCreateDeps());
916
- * expectOk(step({ type: "Transient" }), [100, 100]);
917
- * expectErr(step({ type: "Fatal" }), done());
983
+ * assertOk(step({ type: "Transient" }), [100, 100]);
984
+ * assertErr(step({ type: "Fatal" }), done());
918
985
  * ```
919
986
  *
920
987
  * @group Filtering
@@ -941,6 +1008,7 @@ export const untilScheduleInput = (predicate) => (schedule) => (deps) => {
941
1008
  *
942
1009
  * ```ts
943
1010
  * import {
1011
+ * assertErr,
944
1012
  * done,
945
1013
  * exponential,
946
1014
  * testCreateDeps,
@@ -956,7 +1024,7 @@ export const untilScheduleInput = (predicate) => (schedule) => (deps) => {
956
1024
  * step(undefined);
957
1025
  * step(undefined);
958
1026
  * step(undefined);
959
- * expectErr(step(undefined), done());
1027
+ * assertErr(step(undefined), done());
960
1028
  * ```
961
1029
  *
962
1030
  * @group Filtering
@@ -986,6 +1054,7 @@ export const whileScheduleOutput = (predicate) => (schedule) => (deps) => {
986
1054
  *
987
1055
  * ```ts
988
1056
  * import {
1057
+ * assertErr,
989
1058
  * done,
990
1059
  * exponential,
991
1060
  * testCreateDeps,
@@ -1002,7 +1071,7 @@ export const whileScheduleOutput = (predicate) => (schedule) => (deps) => {
1002
1071
  * step(undefined);
1003
1072
  * step(undefined);
1004
1073
  * step(undefined);
1005
- * expectErr(step(undefined), done());
1074
+ * assertErr(step(undefined), done());
1006
1075
  * ```
1007
1076
  *
1008
1077
  * @group Filtering
@@ -1034,6 +1103,7 @@ export const untilScheduleOutput = (predicate) => (schedule) => (deps) => {
1034
1103
  *
1035
1104
  * ```ts
1036
1105
  * import {
1106
+ * assertOk,
1037
1107
  * exponential,
1038
1108
  * resetScheduleAfter,
1039
1109
  * testCreateDeps,
@@ -1042,9 +1112,9 @@ export const untilScheduleOutput = (predicate) => (schedule) => (deps) => {
1042
1112
  * const backoff = resetScheduleAfter("1m")(exponential("1s"));
1043
1113
  * const deps = testCreateDeps();
1044
1114
  * const step = backoff(deps);
1045
- * expectOk(step(undefined), [1000, 1000]);
1115
+ * assertOk(step(undefined), [1000, 1000]);
1046
1116
  * deps.time.advance("1m");
1047
- * expectOk(step(undefined), [1000, 1000]);
1117
+ * assertOk(step(undefined), [1000, 1000]);
1048
1118
  * ```
1049
1119
  *
1050
1120
  * @group State
@@ -1078,6 +1148,7 @@ export const resetScheduleAfter = (duration) => {
1078
1148
  *
1079
1149
  * ```ts
1080
1150
  * import {
1151
+ * assertOk,
1081
1152
  * exponential,
1082
1153
  * mapSchedule,
1083
1154
  * testCreateDeps,
@@ -1089,7 +1160,7 @@ export const resetScheduleAfter = (duration) => {
1089
1160
  * doubled: delay * 2,
1090
1161
  * }))(exponential("100ms"));
1091
1162
  * const step = schedule(testCreateDeps());
1092
- * expectOk(step(undefined), [{ delay: 100, doubled: 200 }, 100]);
1163
+ * assertOk(step(undefined), [{ delay: 100, doubled: 200 }, 100]);
1093
1164
  * ```
1094
1165
  *
1095
1166
  * @group Transform
@@ -1128,6 +1199,7 @@ export function passthrough(schedule) {
1128
1199
  *
1129
1200
  * ```ts
1130
1201
  * import {
1202
+ * assertOk,
1131
1203
  * exponential,
1132
1204
  * foldSchedule,
1133
1205
  * minMillis,
@@ -1157,9 +1229,9 @@ export function passthrough(schedule) {
1157
1229
  * const deps = testCreateDeps();
1158
1230
  * const totalStep = withTotal(deps);
1159
1231
  * totalStep(undefined);
1160
- * expectOk(totalStep(undefined), [300, 200]);
1161
- * expectOk(collected(deps)(undefined), [[1000], 1000]);
1162
- * expectOk(counted(deps)(undefined), [
1232
+ * assertOk(totalStep(undefined), [300, 200]);
1233
+ * assertOk(collected(deps)(undefined), [[1000], 1000]);
1234
+ * assertOk(counted(deps)(undefined), [
1163
1235
  * { attempts: 1, lastDelay: 100 },
1164
1236
  * 100,
1165
1237
  * ]);
@@ -1189,12 +1261,17 @@ export const foldSchedule = (initial, f) => (schedule) => (deps) => {
1189
1261
  * ### Counting repetitions
1190
1262
  *
1191
1263
  * ```ts
1192
- * import { exponential, repetitions, testCreateDeps } from "@evolu/common";
1264
+ * import {
1265
+ * assertOk,
1266
+ * exponential,
1267
+ * repetitions,
1268
+ * testCreateDeps,
1269
+ * } from "@evolu/common";
1193
1270
  *
1194
1271
  * // Count retries while preserving exponential timing.
1195
1272
  * const step = repetitions(exponential("100ms"))(testCreateDeps());
1196
- * expectOk(step(undefined), [0, 100]);
1197
- * expectOk(step(undefined), [1, 200]);
1273
+ * assertOk(step(undefined), [0, 100]);
1274
+ * assertOk(step(undefined), [1, 200]);
1198
1275
  * ```
1199
1276
  *
1200
1277
  * @group Transform
@@ -1210,6 +1287,8 @@ export const repetitions = (schedule) => foldSchedule(-1, (n) => n + 1)(schedule
1210
1287
  *
1211
1288
  * ```ts
1212
1289
  * import {
1290
+ * assertEqual,
1291
+ * assertOk,
1213
1292
  * delays,
1214
1293
  * exponential,
1215
1294
  * tapScheduleOutput,
@@ -1225,9 +1304,9 @@ export const repetitions = (schedule) => foldSchedule(-1, (n) => n + 1)(schedule
1225
1304
  * })(delays(exponential("100ms")));
1226
1305
  * const deps = testCreateDeps();
1227
1306
  *
1228
- * expectOk(monitorDelays(deps)(undefined), [100, 100]);
1229
- * expectOk(logged(deps)(undefined), [100, 100]);
1230
- * expect(observed).toEqual([100]);
1307
+ * assertOk(monitorDelays(deps)(undefined), [100, 100]);
1308
+ * assertOk(logged(deps)(undefined), [100, 100]);
1309
+ * assertEqual(observed, [100]);
1231
1310
  * ```
1232
1311
  *
1233
1312
  * @group Transform
@@ -1253,6 +1332,7 @@ export const delays = (schedule) => (deps) => {
1253
1332
  *
1254
1333
  * ```ts
1255
1334
  * import {
1335
+ * assertOk,
1256
1336
  * collectAllScheduleOutputs,
1257
1337
  * spaced,
1258
1338
  * take,
@@ -1263,7 +1343,7 @@ export const delays = (schedule) => (deps) => {
1263
1343
  * const collected = collectAllScheduleOutputs(take(3)(spaced("100ms")));
1264
1344
  * const step = collected(testCreateDeps());
1265
1345
  * step(undefined);
1266
- * expectOk(step(undefined), [[100, 100], 100]);
1346
+ * assertOk(step(undefined), [[100, 100], 100]);
1267
1347
  * ```
1268
1348
  *
1269
1349
  * @group Collection
@@ -1279,6 +1359,7 @@ export const collectAllScheduleOutputs = (schedule) => foldSchedule([], (acc, ou
1279
1359
  *
1280
1360
  * ```ts
1281
1361
  * import {
1362
+ * assertOk,
1282
1363
  * collectScheduleInputs,
1283
1364
  * exponential,
1284
1365
  * take,
@@ -1292,7 +1373,7 @@ export const collectAllScheduleOutputs = (schedule) => foldSchedule([], (acc, ou
1292
1373
  * const errorHistory = collectScheduleInputs(retries);
1293
1374
  * const step = errorHistory(testCreateDeps());
1294
1375
  * step("network");
1295
- * expectOk(step("timeout"), [["network", "timeout"], 200]);
1376
+ * assertOk(step("timeout"), [["network", "timeout"], 200]);
1296
1377
  * ```
1297
1378
  *
1298
1379
  * @group Collection
@@ -1308,6 +1389,8 @@ export const collectScheduleInputs = (schedule) => collectAllScheduleOutputs(pas
1308
1389
  *
1309
1390
  * ```ts
1310
1391
  * import {
1392
+ * assertErr,
1393
+ * assertOk,
1311
1394
  * collectWhileScheduleOutput,
1312
1395
  * done,
1313
1396
  * exponential,
@@ -1323,8 +1406,8 @@ export const collectScheduleInputs = (schedule) => collectAllScheduleOutputs(pas
1323
1406
  * step(undefined);
1324
1407
  * step(undefined);
1325
1408
  * step(undefined);
1326
- * expectOk(step(undefined), [[100, 200, 400, 800], 800]);
1327
- * expectErr(step(undefined), done());
1409
+ * assertOk(step(undefined), [[100, 200, 400, 800], 800]);
1410
+ * assertErr(step(undefined), done());
1328
1411
  * ```
1329
1412
  *
1330
1413
  * @group Collection
@@ -1340,6 +1423,8 @@ export const collectWhileScheduleOutput = (predicate) => (schedule) => collectAl
1340
1423
  *
1341
1424
  * ```ts
1342
1425
  * import {
1426
+ * assertErr,
1427
+ * assertOk,
1343
1428
  * collectUntilScheduleOutput,
1344
1429
  * done,
1345
1430
  * exponential,
@@ -1355,8 +1440,8 @@ export const collectWhileScheduleOutput = (predicate) => (schedule) => collectAl
1355
1440
  * step(undefined);
1356
1441
  * step(undefined);
1357
1442
  * step(undefined);
1358
- * expectOk(step(undefined), [[100, 200, 400, 800], 800]);
1359
- * expectErr(step(undefined), done());
1443
+ * assertOk(step(undefined), [[100, 200, 400, 800], 800]);
1444
+ * assertErr(step(undefined), done());
1360
1445
  * ```
1361
1446
  *
1362
1447
  * @group Collection
@@ -1372,6 +1457,7 @@ export const collectUntilScheduleOutput = (predicate) => (schedule) => collectAl
1372
1457
  *
1373
1458
  * ```ts
1374
1459
  * import {
1460
+ * assertOk,
1375
1461
  * exponential,
1376
1462
  * fixed,
1377
1463
  * sequenceSchedules,
@@ -1388,7 +1474,7 @@ export const collectUntilScheduleOutput = (predicate) => (schedule) => collectAl
1388
1474
  * step(undefined);
1389
1475
  * step(undefined);
1390
1476
  * step(undefined);
1391
- * expectOk(step(undefined), [0, 500]);
1477
+ * assertOk(step(undefined), [0, 500]);
1392
1478
  * ```
1393
1479
  *
1394
1480
  * @group Composition
@@ -1417,6 +1503,8 @@ export const sequenceSchedules = (...schedules) => (deps) => {
1417
1503
  *
1418
1504
  * ```ts
1419
1505
  * import {
1506
+ * assertErr,
1507
+ * assertOk,
1420
1508
  * done,
1421
1509
  * exponential,
1422
1510
  * forever,
@@ -1432,9 +1520,9 @@ export const sequenceSchedules = (...schedules) => (deps) => {
1432
1520
  * take(5)(exponential("1s")),
1433
1521
  * maxElapsed("30s")(forever),
1434
1522
  * )(deps);
1435
- * expectOk(step(undefined), [[1000, 0], 1000]);
1523
+ * assertOk(step(undefined), [[1000, 0], 1000]);
1436
1524
  * deps.time.advance("30s");
1437
- * expectErr(step(undefined), done());
1525
+ * assertErr(step(undefined), done());
1438
1526
  * ```
1439
1527
  *
1440
1528
  * @group Composition
@@ -1466,6 +1554,8 @@ export const intersectSchedules = (a, b) => (deps) => {
1466
1554
  *
1467
1555
  * ```ts
1468
1556
  * import {
1557
+ * assertErr,
1558
+ * assertOk,
1469
1559
  * done,
1470
1560
  * spaced,
1471
1561
  * take,
@@ -1479,9 +1569,9 @@ export const intersectSchedules = (a, b) => (deps) => {
1479
1569
  * take(2)(spaced("200ms")),
1480
1570
  * );
1481
1571
  * const step = either(testCreateDeps());
1482
- * expectOk(step(undefined), [100, 100]);
1483
- * expectOk(step(undefined), [200, 200]);
1484
- * expectErr(step(undefined), done());
1572
+ * assertOk(step(undefined), [100, 100]);
1573
+ * assertOk(step(undefined), [200, 200]);
1574
+ * assertErr(step(undefined), done());
1485
1575
  * ```
1486
1576
  *
1487
1577
  * @group Composition
@@ -1525,6 +1615,8 @@ export const unionSchedules = (a, b) => (deps) => {
1525
1615
  *
1526
1616
  * ```ts
1527
1617
  * import {
1618
+ * assertErr,
1619
+ * assertOk,
1528
1620
  * done,
1529
1621
  * exponential,
1530
1622
  * take,
@@ -1544,10 +1636,10 @@ export const unionSchedules = (a, b) => (deps) => {
1544
1636
  * )(exponential("100ms")),
1545
1637
  * );
1546
1638
  * const step = awsWithThrottling(testCreateDeps());
1547
- * expectOk(step({ type: "Throttled" }), [1000, 1000]);
1548
- * expectOk(step({ type: "NetworkError" }), [100, 100]);
1549
- * expectOk(step({ type: "Throttled" }), [2000, 2000]);
1550
- * expectErr(step({ type: "NetworkError" }), done());
1639
+ * assertOk(step({ type: "Throttled" }), [1000, 1000]);
1640
+ * assertOk(step({ type: "NetworkError" }), [100, 100]);
1641
+ * assertOk(step({ type: "Throttled" }), [2000, 2000]);
1642
+ * assertErr(step({ type: "NetworkError" }), done());
1551
1643
  * ```
1552
1644
  *
1553
1645
  * @group Composition
@@ -1575,6 +1667,7 @@ export const whenInput = (predicate, altSchedule) => (schedule) => (deps) => {
1575
1667
  *
1576
1668
  * ```ts
1577
1669
  * import {
1670
+ * assertEqual,
1578
1671
  * exponential,
1579
1672
  * retryStrategyAws,
1580
1673
  * tapScheduleOutput,
@@ -1597,8 +1690,8 @@ export const whenInput = (predicate, altSchedule) => (schedule) => (deps) => {
1597
1690
  * logged(deps)(undefined);
1598
1691
  * tracked(deps)(undefined);
1599
1692
  *
1600
- * expect(messages).toEqual(["Next delay: 100ms"]);
1601
- * expect(recordedCandidates).toEqual([50]);
1693
+ * assertEqual(messages, ["Next delay: 100ms"]);
1694
+ * assertEqual(recordedCandidates, [50]);
1602
1695
  * ```
1603
1696
  *
1604
1697
  * @group Side effects
@@ -1623,6 +1716,7 @@ export const tapScheduleOutput = (f) => (schedule) => (deps) => {
1623
1716
  *
1624
1717
  * ```ts
1625
1718
  * import {
1719
+ * assertEqual,
1626
1720
  * exponential,
1627
1721
  * tapScheduleInput,
1628
1722
  * testCreateDeps,
@@ -1649,8 +1743,8 @@ export const tapScheduleOutput = (f) => (schedule) => (deps) => {
1649
1743
  * logged(deps)(error);
1650
1744
  * tracked(deps)(error);
1651
1745
  *
1652
- * expect(messages).toEqual(["Retrying after error: NetworkError"]);
1653
- * expect(reasons).toEqual(["NetworkError"]);
1746
+ * assertEqual(messages, ["Retrying after error: NetworkError"]);
1747
+ * assertEqual(reasons, ["NetworkError"]);
1654
1748
  * ```
1655
1749
  *
1656
1750
  * @group Side effects