@fncts/test 0.0.20 → 0.0.21

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 (262) hide show
  1. package/_cjs/api.cjs +39 -31
  2. package/_cjs/api.cjs.map +1 -1
  3. package/_cjs/control/AbstractRunnableSpec.cjs +1 -1
  4. package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -1
  5. package/_cjs/control/Annotations/live.cjs +10 -12
  6. package/_cjs/control/Annotations/live.cjs.map +1 -1
  7. package/_cjs/control/Assertion/api.cjs +45 -33
  8. package/_cjs/control/Assertion/api.cjs.map +1 -1
  9. package/_cjs/control/AssertionIO/api.cjs +20 -14
  10. package/_cjs/control/AssertionIO/api.cjs.map +1 -1
  11. package/_cjs/control/DefaultTestReporter/render.cjs +50 -50
  12. package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
  13. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +20 -16
  14. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -1
  15. package/_cjs/control/Gen/api/array.cjs +23 -17
  16. package/_cjs/control/Gen/api/array.cjs.map +1 -1
  17. package/_cjs/control/Gen/api/char.cjs +2 -2
  18. package/_cjs/control/Gen/api/char.cjs.map +1 -1
  19. package/_cjs/control/Gen/api/conc.cjs +35 -26
  20. package/_cjs/control/Gen/api/conc.cjs.map +1 -1
  21. package/_cjs/control/Gen/api/double.cjs +8 -8
  22. package/_cjs/control/Gen/api/double.cjs.map +1 -1
  23. package/_cjs/control/Gen/api/float.cjs +6 -6
  24. package/_cjs/control/Gen/api/float.cjs.map +1 -1
  25. package/_cjs/control/Gen/api/string.cjs +18 -14
  26. package/_cjs/control/Gen/api/string.cjs.map +1 -1
  27. package/_cjs/control/Gen/api/struct.cjs +4 -4
  28. package/_cjs/control/Gen/api/struct.cjs.map +1 -1
  29. package/_cjs/control/Gen/api.cjs +78 -65
  30. package/_cjs/control/Gen/api.cjs.map +1 -1
  31. package/_cjs/control/Gen.cjs.map +1 -1
  32. package/_cjs/control/Live/definition.cjs +5 -5
  33. package/_cjs/control/Live/definition.cjs.map +1 -1
  34. package/_cjs/control/RunnableSpec.cjs +8 -8
  35. package/_cjs/control/RunnableSpec.cjs.map +1 -1
  36. package/_cjs/control/Sample/api.cjs +66 -52
  37. package/_cjs/control/Sample/api.cjs.map +1 -1
  38. package/_cjs/control/Sized/live.cjs +3 -3
  39. package/_cjs/control/Sized/live.cjs.map +1 -1
  40. package/_cjs/control/Spec/api.cjs +322 -286
  41. package/_cjs/control/Spec/api.cjs.map +1 -1
  42. package/_cjs/control/Spec/definition.cjs.map +1 -1
  43. package/_cjs/control/SummaryBuilder.cjs +10 -10
  44. package/_cjs/control/SummaryBuilder.cjs.map +1 -1
  45. package/_cjs/control/Test.cjs +1 -1
  46. package/_cjs/control/Test.cjs.map +1 -1
  47. package/_cjs/control/TestAnnotationRenderer/api.cjs +28 -26
  48. package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
  49. package/_cjs/control/TestAnnotationRenderer/definition.cjs +2 -2
  50. package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -1
  51. package/_cjs/control/TestAspect/api.cjs +14 -14
  52. package/_cjs/control/TestAspect/api.cjs.map +1 -1
  53. package/_cjs/control/TestClock/api.cjs +9 -11
  54. package/_cjs/control/TestClock/api.cjs.map +1 -1
  55. package/_cjs/control/TestClock/definition.cjs +65 -75
  56. package/_cjs/control/TestClock/definition.cjs.map +1 -1
  57. package/_cjs/control/TestConsole/api.cjs +3 -3
  58. package/_cjs/control/TestConsole/api.cjs.map +1 -1
  59. package/_cjs/control/TestConsole/definition.cjs +20 -24
  60. package/_cjs/control/TestConsole/definition.cjs.map +1 -1
  61. package/_cjs/control/TestEnvironment.cjs +3 -3
  62. package/_cjs/control/TestEnvironment.cjs.map +1 -1
  63. package/_cjs/control/TestExecutor.cjs +3 -3
  64. package/_cjs/control/TestExecutor.cjs.map +1 -1
  65. package/_cjs/control/TestLogger.cjs +2 -2
  66. package/_cjs/control/TestLogger.cjs.map +1 -1
  67. package/_cjs/control/TestRandom/api.cjs +9 -9
  68. package/_cjs/control/TestRandom/api.cjs.map +1 -1
  69. package/_cjs/control/TestRandom/definition.cjs +65 -71
  70. package/_cjs/control/TestRandom/definition.cjs.map +1 -1
  71. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +11 -11
  72. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -1
  73. package/_cjs/control/TestRunner.cjs +1 -1
  74. package/_cjs/control/TestRunner.cjs.map +1 -1
  75. package/_cjs/data/AssertionValue/api.cjs +22 -14
  76. package/_cjs/data/AssertionValue/api.cjs.map +1 -1
  77. package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
  78. package/_cjs/data/ExecutedSpec/api.cjs +61 -53
  79. package/_cjs/data/ExecutedSpec/api.cjs.map +1 -1
  80. package/_cjs/data/ExecutionResult.cjs +42 -38
  81. package/_cjs/data/ExecutionResult.cjs.map +1 -1
  82. package/_cjs/data/FreeBooleanAlgebra/api.cjs +93 -77
  83. package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
  84. package/_cjs/data/LogLine/Fragment.cjs +2 -2
  85. package/_cjs/data/LogLine/Fragment.cjs.map +1 -1
  86. package/_cjs/data/LogLine/Line.cjs +11 -9
  87. package/_cjs/data/LogLine/Line.cjs.map +1 -1
  88. package/_cjs/data/LogLine/Message.cjs +32 -24
  89. package/_cjs/data/LogLine/Message.cjs.map +1 -1
  90. package/_cjs/data/LogLine/Style.cjs.map +1 -1
  91. package/_cjs/data/Render/definition.cjs +1 -1
  92. package/_cjs/data/Render/definition.cjs.map +1 -1
  93. package/_cjs/data/TestAnnotation/api.cjs +2 -2
  94. package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
  95. package/_cjs/data/TestAnnotation/definition.cjs.map +1 -1
  96. package/_cjs/data/TestAnnotationMap.cjs +3 -3
  97. package/_cjs/data/TestAnnotationMap.cjs.map +1 -1
  98. package/_cjs/demo.cjs +5 -5
  99. package/_cjs/demo.cjs.map +1 -1
  100. package/_cjs/util/math.cjs +6 -6
  101. package/_cjs/util/math.cjs.map +1 -1
  102. package/_mjs/api.mjs +37 -29
  103. package/_mjs/api.mjs.map +1 -1
  104. package/_mjs/control/AbstractRunnableSpec.mjs +1 -1
  105. package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
  106. package/_mjs/control/Annotations/live.mjs +10 -11
  107. package/_mjs/control/Annotations/live.mjs.map +1 -1
  108. package/_mjs/control/Assertion/api.mjs +40 -28
  109. package/_mjs/control/Assertion/api.mjs.map +1 -1
  110. package/_mjs/control/AssertionIO/api.mjs +17 -11
  111. package/_mjs/control/AssertionIO/api.mjs.map +1 -1
  112. package/_mjs/control/DefaultTestReporter/render.mjs +50 -50
  113. package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
  114. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +18 -14
  115. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -1
  116. package/_mjs/control/Gen/api/array.mjs +20 -14
  117. package/_mjs/control/Gen/api/array.mjs.map +1 -1
  118. package/_mjs/control/Gen/api/char.mjs +2 -2
  119. package/_mjs/control/Gen/api/char.mjs.map +1 -1
  120. package/_mjs/control/Gen/api/conc.mjs +30 -22
  121. package/_mjs/control/Gen/api/conc.mjs.map +1 -1
  122. package/_mjs/control/Gen/api/double.mjs +8 -8
  123. package/_mjs/control/Gen/api/double.mjs.map +1 -1
  124. package/_mjs/control/Gen/api/float.mjs +6 -6
  125. package/_mjs/control/Gen/api/float.mjs.map +1 -1
  126. package/_mjs/control/Gen/api/string.mjs +18 -14
  127. package/_mjs/control/Gen/api/string.mjs.map +1 -1
  128. package/_mjs/control/Gen/api/struct.mjs +4 -4
  129. package/_mjs/control/Gen/api/struct.mjs.map +1 -1
  130. package/_mjs/control/Gen/api.mjs +68 -54
  131. package/_mjs/control/Gen/api.mjs.map +1 -1
  132. package/_mjs/control/Gen.mjs.map +1 -1
  133. package/_mjs/control/Live/definition.mjs +5 -5
  134. package/_mjs/control/Live/definition.mjs.map +1 -1
  135. package/_mjs/control/RunnableSpec.mjs +8 -8
  136. package/_mjs/control/RunnableSpec.mjs.map +1 -1
  137. package/_mjs/control/Sample/api.mjs +57 -43
  138. package/_mjs/control/Sample/api.mjs.map +1 -1
  139. package/_mjs/control/Sized/live.mjs +3 -3
  140. package/_mjs/control/Sized/live.mjs.map +1 -1
  141. package/_mjs/control/Spec/api.mjs +300 -265
  142. package/_mjs/control/Spec/api.mjs.map +1 -1
  143. package/_mjs/control/Spec/definition.mjs.map +1 -1
  144. package/_mjs/control/SummaryBuilder.mjs +10 -10
  145. package/_mjs/control/SummaryBuilder.mjs.map +1 -1
  146. package/_mjs/control/Test.mjs +1 -1
  147. package/_mjs/control/Test.mjs.map +1 -1
  148. package/_mjs/control/TestAnnotationRenderer/api.mjs +27 -25
  149. package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
  150. package/_mjs/control/TestAnnotationRenderer/definition.mjs +2 -2
  151. package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -1
  152. package/_mjs/control/TestAspect/api.mjs +14 -14
  153. package/_mjs/control/TestAspect/api.mjs.map +1 -1
  154. package/_mjs/control/TestClock/api.mjs +9 -10
  155. package/_mjs/control/TestClock/api.mjs.map +1 -1
  156. package/_mjs/control/TestClock/definition.mjs +65 -72
  157. package/_mjs/control/TestClock/definition.mjs.map +1 -1
  158. package/_mjs/control/TestConsole/api.mjs +3 -3
  159. package/_mjs/control/TestConsole/api.mjs.map +1 -1
  160. package/_mjs/control/TestConsole/definition.mjs +20 -22
  161. package/_mjs/control/TestConsole/definition.mjs.map +1 -1
  162. package/_mjs/control/TestEnvironment.mjs +3 -3
  163. package/_mjs/control/TestEnvironment.mjs.map +1 -1
  164. package/_mjs/control/TestExecutor.mjs +3 -3
  165. package/_mjs/control/TestExecutor.mjs.map +1 -1
  166. package/_mjs/control/TestLogger.mjs +2 -2
  167. package/_mjs/control/TestLogger.mjs.map +1 -1
  168. package/_mjs/control/TestRandom/api.mjs +9 -9
  169. package/_mjs/control/TestRandom/api.mjs.map +1 -1
  170. package/_mjs/control/TestRandom/definition.mjs +65 -68
  171. package/_mjs/control/TestRandom/definition.mjs.map +1 -1
  172. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +11 -11
  173. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -1
  174. package/_mjs/control/TestRunner.mjs +1 -1
  175. package/_mjs/control/TestRunner.mjs.map +1 -1
  176. package/_mjs/data/AssertionValue/api.mjs +22 -14
  177. package/_mjs/data/AssertionValue/api.mjs.map +1 -1
  178. package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
  179. package/_mjs/data/ExecutedSpec/api.mjs +55 -47
  180. package/_mjs/data/ExecutedSpec/api.mjs.map +1 -1
  181. package/_mjs/data/ExecutionResult.mjs +40 -36
  182. package/_mjs/data/ExecutionResult.mjs.map +1 -1
  183. package/_mjs/data/FreeBooleanAlgebra/api.mjs +81 -65
  184. package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
  185. package/_mjs/data/LogLine/Fragment.mjs +2 -2
  186. package/_mjs/data/LogLine/Fragment.mjs.map +1 -1
  187. package/_mjs/data/LogLine/Line.mjs +11 -9
  188. package/_mjs/data/LogLine/Line.mjs.map +1 -1
  189. package/_mjs/data/LogLine/Message.mjs +26 -18
  190. package/_mjs/data/LogLine/Message.mjs.map +1 -1
  191. package/_mjs/data/LogLine/Style.mjs.map +1 -1
  192. package/_mjs/data/Render/definition.mjs +1 -1
  193. package/_mjs/data/Render/definition.mjs.map +1 -1
  194. package/_mjs/data/TestAnnotation/api.mjs +2 -2
  195. package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
  196. package/_mjs/data/TestAnnotation/definition.mjs.map +1 -1
  197. package/_mjs/data/TestAnnotationMap.mjs +3 -3
  198. package/_mjs/data/TestAnnotationMap.mjs.map +1 -1
  199. package/_mjs/demo.mjs +5 -5
  200. package/_mjs/demo.mjs.map +1 -1
  201. package/_mjs/util/math.mjs +6 -6
  202. package/_mjs/util/math.mjs.map +1 -1
  203. package/_src/api.ts +36 -35
  204. package/_src/control/AbstractRunnableSpec.ts +0 -3
  205. package/_src/control/Annotations/live.ts +0 -4
  206. package/_src/control/Assertion/api.ts +31 -20
  207. package/_src/control/AssertionIO/api.ts +23 -17
  208. package/_src/control/DefaultTestReporter/render.ts +1 -11
  209. package/_src/control/FreeBooleanAlgebraIO/api.ts +12 -14
  210. package/_src/control/Gen/api/array.ts +18 -15
  211. package/_src/control/Gen/api/conc.ts +31 -26
  212. package/_src/control/Gen/api/string.ts +13 -9
  213. package/_src/control/Gen/api/struct.ts +12 -2
  214. package/_src/control/Gen/api.ts +56 -40
  215. package/_src/control/Gen.ts +0 -1
  216. package/_src/control/Live/definition.ts +0 -4
  217. package/_src/control/Sample/api.ts +77 -66
  218. package/_src/control/Spec/api.ts +235 -222
  219. package/_src/control/Spec/definition.ts +0 -2
  220. package/_src/control/SummaryBuilder.ts +0 -1
  221. package/_src/control/TestAnnotationRenderer/api.ts +17 -15
  222. package/_src/control/TestAnnotationRenderer/definition.ts +0 -2
  223. package/_src/control/TestAspect/api.ts +0 -1
  224. package/_src/control/TestClock/definition.ts +4 -17
  225. package/_src/control/TestConsole/definition.ts +0 -1
  226. package/_src/control/TestLogger.ts +0 -2
  227. package/_src/control/TestRandom/api.ts +5 -0
  228. package/_src/control/TestRandom/definition.ts +3 -37
  229. package/_src/control/TestRenderer/ConsoleRenderer.ts +0 -1
  230. package/_src/data/AssertionValue/api.ts +26 -22
  231. package/_src/data/AssertionValue/definition.ts +0 -1
  232. package/_src/data/ExecutedSpec/api.ts +41 -36
  233. package/_src/data/ExecutionResult.ts +54 -51
  234. package/_src/data/FreeBooleanAlgebra/api.ts +68 -58
  235. package/_src/data/LogLine/Line.ts +5 -3
  236. package/_src/data/LogLine/Message.ts +26 -18
  237. package/_src/data/LogLine/Style.ts +0 -1
  238. package/_src/data/Render/definition.ts +0 -2
  239. package/_src/data/TestAnnotation/api.ts +3 -1
  240. package/_src/data/TestAnnotation/definition.ts +0 -3
  241. package/_src/data/TestAnnotationMap.ts +0 -6
  242. package/_src/demo.ts +3 -4
  243. package/_src/util/math.ts +31 -17
  244. package/api.d.ts +12 -12
  245. package/control/Assertion/api.d.ts +14 -10
  246. package/control/AssertionIO/api.d.ts +8 -8
  247. package/control/FreeBooleanAlgebraIO/api.d.ts +6 -6
  248. package/control/Gen/api/array.d.ts +6 -6
  249. package/control/Gen/api/conc.d.ts +8 -8
  250. package/control/Gen/api/string.d.ts +4 -4
  251. package/control/Gen/api.d.ts +15 -15
  252. package/control/Sample/api.d.ts +14 -14
  253. package/control/Spec/api.d.ts +38 -41
  254. package/control/TestAnnotationRenderer/api.d.ts +3 -3
  255. package/control/TestConsole/definition.d.ts +2 -2
  256. package/data/AssertionValue/api.d.ts +8 -8
  257. package/data/ExecutedSpec/api.d.ts +8 -8
  258. package/data/ExecutionResult.d.ts +4 -4
  259. package/data/FreeBooleanAlgebra/api.d.ts +20 -20
  260. package/data/LogLine/Line.d.ts +2 -2
  261. package/data/LogLine/Message.d.ts +10 -10
  262. package/package.json +3 -3
@@ -10,14 +10,16 @@ import { RenderParam } from "../../data/RenderParam.js";
10
10
  import { Assertion } from "./definition.js";
11
11
 
12
12
  /**
13
- * @tsplus fluent fncts.test.Assertion and
14
- * @tsplus operator fncts.test.Assertion &&
13
+ * @tsplus pipeable fncts.test.Assertion and
14
+ * @tsplus pipeable-operator fncts.test.Assertion &&
15
15
  */
16
- export function and_<A>(self: Assertion<A>, that: Assertion<A>): Assertion<A> {
17
- return new Assertion(
18
- Render.infix(RenderParam(self), "&&", RenderParam(that)),
19
- (actual) => self.run(actual) && that.run(actual),
20
- );
16
+ export function and<A>(that: Assertion<A>) {
17
+ return (self: Assertion<A>): Assertion<A> => {
18
+ return new Assertion(
19
+ Render.infix(RenderParam(self), "&&", RenderParam(that)),
20
+ (actual) => self.run(actual) && that.run(actual),
21
+ );
22
+ };
21
23
  }
22
24
 
23
25
  /**
@@ -210,10 +212,12 @@ export function isLessThanOrEqualTo(n: number): Assertion<number> {
210
212
  }
211
213
 
212
214
  /**
213
- * @tsplus fluent fncts.test.Assertion label
215
+ * @tsplus pipeable fncts.test.Assertion label
214
216
  */
215
- export function label_<A>(self: Assertion<A>, label: string): Assertion<A> {
216
- return new Assertion(Render.infix(RenderParam(self), ":", RenderParam(label)), self.run);
217
+ export function label(label: string) {
218
+ return <A>(self: Assertion<A>): Assertion<A> => {
219
+ return new Assertion(Render.infix(RenderParam(self), ":", RenderParam(label)), self.run);
220
+ };
217
221
  }
218
222
 
219
223
  /**
@@ -224,16 +228,21 @@ export function not<A>(assertion: Assertion<A>): Assertion<A> {
224
228
  }
225
229
 
226
230
  /**
227
- * @tsplus fluent fncts.test.Assertion or
228
- * @tsplus operator fncts.test.Assertion ||
231
+ * @tsplus pipeable fncts.test.Assertion or
232
+ * @tsplus pipeable-operator fncts.test.Assertion ||
229
233
  */
230
- export function or_<A>(self: Assertion<A>, that: Assertion<A>): Assertion<A> {
231
- return new Assertion(
232
- Render.infix(RenderParam(self), "||", RenderParam(that)),
233
- (actual) => self.run(actual) || that.run(actual),
234
- );
234
+ export function or<A>(that: Assertion<A>) {
235
+ return (self: Assertion<A>): Assertion<A> => {
236
+ return new Assertion(
237
+ Render.infix(RenderParam(self), "||", RenderParam(that)),
238
+ (actual) => self.run(actual) || that.run(actual),
239
+ );
240
+ };
235
241
  }
236
242
 
243
+ /**
244
+ * @tsplus getter fncts.test.Assertion succeeds
245
+ */
237
246
  export function succeeds<A>(assertion: Assertion<A>): Assertion<Exit<any, A>> {
238
247
  return Assertion.rec("succeeds", [RenderParam(assertion)], assertion, (exit) =>
239
248
  exit.match(
@@ -244,10 +253,12 @@ export function succeeds<A>(assertion: Assertion<A>): Assertion<Exit<any, A>> {
244
253
  }
245
254
 
246
255
  /**
247
- * @tsplus fluent fncts.test.Assertion test
256
+ * @tsplus pipeable fncts.test.Assertion test
248
257
  */
249
- export function test_<A>(self: Assertion<A>, actual: A): boolean {
250
- return self.run(actual).isSuccess;
258
+ export function test<A>(actual: A) {
259
+ return (self: Assertion<A>): boolean => {
260
+ return self.run(actual).isSuccess;
261
+ };
251
262
  }
252
263
 
253
264
  export const completes = Assertion.make("completes", [], () => true);
@@ -3,30 +3,36 @@ import { RenderParam } from "../../data/RenderParam.js";
3
3
  import { AssertionIO } from "./definition.js";
4
4
 
5
5
  /**
6
- * @tsplus fluent fncts.test.AssertionIO and
7
- * @tsplus operator fncts.test.AssertionIO &&
6
+ * @tsplus pipeable fncts.test.AssertionIO and
7
+ * @tsplus pipeable-operator fncts.test.AssertionIO &&
8
8
  */
9
- export function and_<A>(self: AssertionIO<A>, that: AssertionIO<A>): AssertionIO<A> {
10
- return new AssertionIO(
11
- Render.infix(RenderParam(self), "&&", RenderParam(that)),
12
- (actual) => self.runIO(actual) && that.runIO(actual),
13
- );
9
+ export function and<A>(that: AssertionIO<A>) {
10
+ return (self: AssertionIO<A>): AssertionIO<A> => {
11
+ return new AssertionIO(
12
+ Render.infix(RenderParam(self), "&&", RenderParam(that)),
13
+ (actual) => self.runIO(actual) && that.runIO(actual),
14
+ );
15
+ };
14
16
  }
15
17
 
16
18
  /**
17
- * @tsplus fluent fncts.test.AssertionIO or
18
- * @tsplus operator fncts.test.AssertionIO ||
19
+ * @tsplus pipeable fncts.test.AssertionIO or
20
+ * @tsplus pipeable-operator fncts.test.AssertionIO ||
19
21
  */
20
- export function or_<A>(self: AssertionIO<A>, that: AssertionIO<A>): AssertionIO<A> {
21
- return new AssertionIO(
22
- Render.infix(RenderParam(self), "||", RenderParam(that)),
23
- (actual) => self.runIO(actual) || that.runIO(actual),
24
- );
22
+ export function or<A>(that: AssertionIO<A>) {
23
+ return (self: AssertionIO<A>): AssertionIO<A> => {
24
+ return new AssertionIO(
25
+ Render.infix(RenderParam(self), "||", RenderParam(that)),
26
+ (actual) => self.runIO(actual) || that.runIO(actual),
27
+ );
28
+ };
25
29
  }
26
30
 
27
31
  /**
28
- * @tsplus fluent fncts.test.AssertionIO label
32
+ * @tsplus pipeable fncts.test.AssertionIO label
29
33
  */
30
- export function label_<A>(self: AssertionIO<A>, label: string): AssertionIO<A> {
31
- return new AssertionIO(Render.infix(RenderParam(self), ":", RenderParam(label)), self.runIO);
34
+ export function label(label: string) {
35
+ return <A>(self: AssertionIO<A>): AssertionIO<A> => {
36
+ return new AssertionIO(Render.infix(RenderParam(self), ":", RenderParam(label)), self.runIO);
37
+ };
32
38
  }
@@ -51,15 +51,12 @@ export function renderStats<E>(duration: number, executedSpec: ExecutedSpec<E>)
51
51
  ],
52
52
  }),
53
53
  );
54
-
55
54
  const total = success + ignore + failure;
56
-
57
55
  const stats = detail(
58
56
  `Ran ${total} test${
59
57
  total === 1 ? "" : "s"
60
58
  } in ${duration}ms: ${success} succeeded, ${ignore} ignored, ${failure} failed`,
61
59
  );
62
-
63
60
  return rendered(Other, "", Passed, 0, List(stats.toLine));
64
61
  }
65
62
 
@@ -89,7 +86,6 @@ function renderLoop<E>(
89
86
  return false;
90
87
  }
91
88
  });
92
-
93
89
  const annotations = executedSpec.fold<E, TestAnnotationMap>(
94
90
  matchTag({
95
91
  Labeled: ({ spec }) => spec,
@@ -97,19 +93,15 @@ function renderLoop<E>(
97
93
  Test: ({ annotations }) => annotations,
98
94
  }),
99
95
  );
100
-
101
96
  const [status, renderedLabel] = specs.isEmpty
102
97
  ? [Ignored, Vector(renderSuiteIgnored(labels.reverse.join(" - "), depth))]
103
98
  : hasFailures
104
99
  ? [Failed, Vector(renderSuiteFailed(labels.reverse.join(" - "), depth))]
105
100
  : [Passed, Vector(renderSuiteSucceeded(labels.reverse.join(" - "), depth))];
106
-
107
101
  const allAnnotations = ancestors.prepend(annotations);
108
-
109
- const rest = Vector.from(specs).flatMap((spec) =>
102
+ const rest = Vector.from(specs).flatMap((spec) =>
110
103
  renderLoop(spec, depth + 1, ancestors.prepend(annotations), List.empty()),
111
104
  );
112
-
113
105
  return rest.prepend(
114
106
  rendered(
115
107
  Suite,
@@ -215,7 +207,6 @@ function renderGenFailureDetails(failureDetails: Maybe<GenFailureDetails>, offse
215
207
  `Test failed after ${details.iterations + 1} iteration${details.iterations > 0 ? "s" : ""} with input: `,
216
208
  ) + error(shrunken)
217
209
  ).withOffset(offset + 1);
218
-
219
210
  return initial === shrunken
220
211
  ? renderShrunken.toMessage
221
212
  : renderShrunken | (Fragment("Original input before shrinking was: ") + error(initial)).withOffset(offset + 1);
@@ -246,7 +237,6 @@ function renderValue<A>(av: AssertionValue<A>, offset: number) {
246
237
 
247
238
  function expressionRedundant(valueStr: string, expression: string) {
248
239
  const strip = (s: string) => s.replace('"', "").replace(" ", "").replace("\n", "").replace("\\n", "");
249
-
250
240
  return strip(valueStr) === strip(expression);
251
241
  }
252
242
 
@@ -3,25 +3,23 @@ import type { FreeBooleanAlgebraIO } from "./definition.js";
3
3
  import { FreeBooleanAlgebra } from "../../data/FreeBooleanAlgebra.js";
4
4
 
5
5
  /**
6
- * @tsplus fluent fncts.test.FreeBooleanAlgebraIO and
7
- * @tsplus operator fncts.test.FreeBooleanAlgebraIO &&
6
+ * @tsplus pipeable fncts.test.FreeBooleanAlgebraIO and
7
+ * @tsplus pipeable-operator fncts.test.FreeBooleanAlgebraIO &&
8
8
  */
9
- export function and_<R, E, A extends A1, R1, E1, A1>(
10
- self: FreeBooleanAlgebraIO<R, E, A>,
11
- that: FreeBooleanAlgebraIO<R1, E1, A1>,
12
- ): FreeBooleanAlgebraIO<R | R1, E | E1, A | A1> {
13
- return self.zipWith(that, (a, b) => a && b);
9
+ export function and<R1, E1, A1>(that: FreeBooleanAlgebraIO<R1, E1, A1>) {
10
+ return <R, E, A extends A1>(self: FreeBooleanAlgebraIO<R, E, A>): FreeBooleanAlgebraIO<R | R1, E | E1, A | A1> => {
11
+ return self.zipWith(that, (a, b) => a && b);
12
+ };
14
13
  }
15
14
 
16
15
  /**
17
- * @tsplus fluent fncts.test.FreeBooleanAlgebraIO or
18
- * @tsplus operator fncts.test.FreeBooleanAlgebraIO ||
16
+ * @tsplus pipeable fncts.test.FreeBooleanAlgebraIO or
17
+ * @tsplus pipeable-operator fncts.test.FreeBooleanAlgebraIO ||
19
18
  */
20
- export function or_<R, E, A extends A1, R1, E1, A1>(
21
- self: FreeBooleanAlgebraIO<R, E, A>,
22
- that: FreeBooleanAlgebraIO<R1, E1, A1>,
23
- ): FreeBooleanAlgebraIO<R | R1, E | E1, A | A1> {
24
- return self.zipWith(that, (a, b) => a || b);
19
+ export function or<R1, E1, A1>(that: FreeBooleanAlgebraIO<R1, E1, A1>) {
20
+ return <R, E, A extends A1>(self: FreeBooleanAlgebraIO<R, E, A>): FreeBooleanAlgebraIO<R | R1, E | E1, A | A1> => {
21
+ return self.zipWith(that, (a, b) => a || b);
22
+ };
25
23
  }
26
24
 
27
25
  /**
@@ -4,28 +4,31 @@ import type { EqConstraint, LengthConstraints } from "../constraints.js";
4
4
  import { Gen } from "../definition.js";
5
5
 
6
6
  /**
7
- * @tsplus fluent fncts.test.Gen array
7
+ * @tsplus pipeable fncts.test.Gen array
8
8
  */
9
- export function array<R, A>(g: Gen<R, A>, constraints: LengthConstraints = {}): Gen<R | Sized, ReadonlyArray<A>> {
10
- const minLength = constraints.minLength || 0;
11
- return constraints.maxLength
12
- ? Gen.int({ min: minLength, max: constraints.maxLength }).flatMap((n) => g.arrayN(n))
13
- : Gen.small((n) => g.arrayN(n), minLength);
9
+ export function array(constraints: LengthConstraints = {}) {
10
+ return <R, A>(g: Gen<R, A>): Gen<R | Sized, ReadonlyArray<A>> => {
11
+ const minLength = constraints.minLength || 0;
12
+ return constraints.maxLength
13
+ ? Gen.int({ min: minLength, max: constraints.maxLength }).flatMap((n) => g.arrayN(n))
14
+ : Gen.small((n) => g.arrayN(n), minLength);
15
+ };
14
16
  }
15
17
 
16
18
  /**
17
- * @tsplus fluent fncts.test.Gen arrayN
19
+ * @tsplus pipeable fncts.test.Gen arrayN
18
20
  */
19
- export function arrayN_<R, A>(self: Gen<R, A>, n: number): Gen<R, ReadonlyArray<A>> {
20
- return self.concN(n).map((conc) => conc.toArray);
21
+ export function arrayN(n: number) {
22
+ return <R, A>(self: Gen<R, A>): Gen<R, ReadonlyArray<A>> => {
23
+ return self.concN(n).map((conc) => conc.toArray);
24
+ };
21
25
  }
22
26
 
23
27
  /**
24
- * @tsplus fluent fncts.test.Gen uniqueArray
28
+ * @tsplus pipeable fncts.test.Gen uniqueArray
25
29
  */
26
- export function uniqueArray_<R, A>(
27
- gen: Gen<R, A>,
28
- constraints: LengthConstraints & EqConstraint<A> = {},
29
- ): Gen<Sized | R, ReadonlyArray<A>> {
30
- return gen.uniqueConc(constraints).map((conc) => conc.toArray);
30
+ export function uniqueArray<A>(constraints: LengthConstraints & EqConstraint<A> = {}) {
31
+ return <R>(gen: Gen<R, A>): Gen<Sized | R, ReadonlyArray<A>> => {
32
+ return gen.uniqueConc(constraints).map((conc) => conc.toArray);
33
+ };
31
34
  }
@@ -6,43 +6,48 @@ import { Eq, Equatable } from "@fncts/base/typeclass";
6
6
  import { Gen } from "../definition.js";
7
7
 
8
8
  /**
9
- * @tsplus fluent fncts.test.Gen conc
9
+ * @tsplus pipeable fncts.test.Gen conc
10
10
  */
11
- export function conc<R, A>(self: Gen<R, A>, constraints: LengthConstraints = {}): Gen<R | Sized, Conc<A>> {
12
- const minLength = constraints.minLength ?? 0;
13
- return constraints.maxLength
14
- ? Gen.int({ min: minLength, max: constraints.maxLength }).flatMap((n) => self.concN(n))
15
- : Gen.small((n) => self.concN(n), minLength);
11
+ export function conc(constraints: LengthConstraints = {}) {
12
+ return <R, A>(self: Gen<R, A>): Gen<R | Sized, Conc<A>> => {
13
+ const minLength = constraints.minLength ?? 0;
14
+ return constraints.maxLength
15
+ ? Gen.int({ min: minLength, max: constraints.maxLength }).flatMap((n) => self.concN(n))
16
+ : Gen.small((n) => self.concN(n), minLength);
17
+ };
16
18
  }
17
19
 
18
20
  /**
19
- * @tsplus fluent fncts.test.Gen concN
21
+ * @tsplus pipeable fncts.test.Gen concN
20
22
  */
21
- export function concN_<R, A>(g: Gen<R, A>, n: number): Gen<R, Conc<A>> {
22
- return Conc.replicate(n, g).foldLeft(Gen.constant(Conc.empty()) as Gen<R, Conc<A>>, (gen, a) =>
23
- gen.zipWith(a, (as, a) => as.append(a)),
24
- );
23
+ export function concN(n: number) {
24
+ return <R, A>(g: Gen<R, A>): Gen<R, Conc<A>> => {
25
+ return Conc.replicate(n, g).foldLeft(Gen.constant(Conc.empty()) as Gen<R, Conc<A>>, (gen, a) =>
26
+ gen.zipWith(a, (as, a) => as.append(a)),
27
+ );
28
+ };
25
29
  }
26
30
 
27
31
  /**
28
- * @tsplus fluent fncts.test.Gen uniqueConc
32
+ * @tsplus pipeable fncts.test.Gen uniqueConc
29
33
  */
30
- export function uniqueConc_<R, A>(
31
- self: Gen<R, A>,
32
- constraints: LengthConstraints & EqConstraint<A> = {},
33
- ): Gen<Sized | R, Conc<A>> {
34
- const minLength = constraints.minLength ?? 0;
35
- const eq = constraints.eq ?? Eq({ equals: Equatable.strictEquals });
36
- return constraints.maxLength
37
- ? Gen.bounded(minLength, constraints.maxLength, (n) => self.uniqueConcN(n, eq))
38
- : Gen.small((n) => self.uniqueConcN(n, eq), minLength);
34
+ export function uniqueConc<A>(constraints: LengthConstraints & EqConstraint<A> = {}) {
35
+ return <R>(self: Gen<R, A>): Gen<Sized | R, Conc<A>> => {
36
+ const minLength = constraints.minLength ?? 0;
37
+ const eq = constraints.eq ?? Eq({ equals: Equatable.strictEquals });
38
+ return constraints.maxLength
39
+ ? Gen.bounded(minLength, constraints.maxLength, (n) => self.uniqueConcN(n, eq))
40
+ : Gen.small((n) => self.uniqueConcN(n, eq), minLength);
41
+ };
39
42
  }
40
43
 
41
44
  /**
42
- * @tsplus fluent fncts.test.Gen uniqueConcN
45
+ * @tsplus pipeable fncts.test.Gen uniqueConcN
43
46
  */
44
- export function uniqueConcN_<R, A>(self: Gen<R, A>, n: number, /** @tsplus auto */ E: Eq<A>): Gen<R, Conc<A>> {
45
- return Conc.replicate(n, self).foldLeft(Gen.constant(Conc.empty()) as Gen<R, Conc<A>>, (gen, a) =>
46
- gen.zipWith(a, (as, a) => (as.elem(a, E) ? as : as.append(a))),
47
- );
47
+ export function uniqueConcN<A>(n: number, /** @tsplus auto */ E: Eq<A>) {
48
+ return <R>(self: Gen<R, A>): Gen<R, Conc<A>> => {
49
+ return Conc.replicate(n, self).foldLeft(Gen.constant(Conc.empty()) as Gen<R, Conc<A>>, (gen, a) =>
50
+ gen.zipWith(a, (as, a) => (as.elem(a, E) ? as : as.append(a))),
51
+ );
52
+ };
48
53
  }
@@ -47,20 +47,24 @@ export function string16(constraints: LengthConstraints = {}): Gen<Sized, string
47
47
  }
48
48
 
49
49
  /**
50
- * @tsplus fluent fncts.test.Gen string
50
+ * @tsplus pipeable fncts.test.Gen string
51
51
  */
52
- export function string<R>(char: Gen<R, string>, constraints: LengthConstraints = {}): Gen<R | Sized, string> {
53
- const min = constraints.minLength || 0;
54
- return constraints.maxLength
55
- ? Gen.bounded(min, constraints.maxLength, (n) => char.stringN(n))
56
- : Gen.small((n) => char.stringN(n), min);
52
+ export function string(constraints: LengthConstraints = {}) {
53
+ return <R>(char: Gen<R, string>): Gen<R | Sized, string> => {
54
+ const min = constraints.minLength || 0;
55
+ return constraints.maxLength
56
+ ? Gen.bounded(min, constraints.maxLength, (n) => char.stringN(n))
57
+ : Gen.small((n) => char.stringN(n), min);
58
+ };
57
59
  }
58
60
 
59
61
  /**
60
- * @tsplus fluent fncts.test.Gen stringN
62
+ * @tsplus pipeable fncts.test.Gen stringN
61
63
  */
62
- export function stringN<R>(char: Gen<R, string>, n: number): Gen<R, string> {
63
- return char.arrayN(n).map((arr) => arr.join(""));
64
+ export function stringN(n: number) {
65
+ return <R>(char: Gen<R, string>): Gen<R, string> => {
66
+ return char.arrayN(n).map((arr) => arr.join(""));
67
+ };
64
68
  }
65
69
 
66
70
  /**
@@ -4,7 +4,12 @@ import { Gen } from "../definition.js";
4
4
 
5
5
  export function struct<P extends Record<string, Gen<any, any>>>(
6
6
  properties: P,
7
- ): Gen<_R<P[keyof P]>, { readonly [K in keyof P]: _A<P[K]> }> {
7
+ ): Gen<
8
+ _R<P[keyof P]>,
9
+ {
10
+ readonly [K in keyof P]: _A<P[K]>;
11
+ }
12
+ > {
8
13
  const entries = Object.entries(properties);
9
14
  return entries.foldLeft(Gen.constant({}) as Gen<any, any>, (b, [k, gen]) =>
10
15
  b.zipWith(gen, (out, a) => ({ ...out, [k]: a })),
@@ -13,7 +18,12 @@ export function struct<P extends Record<string, Gen<any, any>>>(
13
18
 
14
19
  export function partial<P extends Record<string, Gen<any, any>>>(
15
20
  properties: P,
16
- ): Gen<unknown & _R<P[keyof P]>, Partial<{ readonly [K in keyof P]: _A<P[K]> }>> {
21
+ ): Gen<
22
+ unknown & _R<P[keyof P]>,
23
+ Partial<{
24
+ readonly [K in keyof P]: _A<P[K]>;
25
+ }>
26
+ > {
17
27
  const entries = Object.entries(properties);
18
28
  return entries.foldLeft(Gen.constant({}) as Gen<any, any>, (b, [k, gen]) =>
19
29
  Gen.unwrap(Random.nextBoolean.ifIO(IO.succeed(b.zipWith(gen, (r, a) => ({ ...r, [k]: a }))), IO.succeed(b))),
@@ -45,16 +45,18 @@ export function constant<A>(a: A): Gen<never, A> {
45
45
  }
46
46
 
47
47
  /**
48
- * @tsplus fluent fncts.test.Gen flatMap
48
+ * @tsplus pipeable fncts.test.Gen flatMap
49
49
  */
50
- export function flatMap_<R, A, R1, B>(ma: Gen<R, A>, f: (a: A) => Gen<R1, B>): Gen<R | R1, B> {
51
- return new Gen(
52
- Sample.flatMapStream(ma.sample, (sample) => {
53
- const values = f(sample.value).sample;
54
- const shrinks = new Gen(sample.shrink).flatMap((a) => f(a)).sample;
55
- return values.map((maybeSample) => maybeSample.map((sample) => sample.flatMap((b) => new Sample(b, shrinks))));
56
- }),
57
- );
50
+ export function flatMap<A, R1, B>(f: (a: A) => Gen<R1, B>) {
51
+ return <R>(ma: Gen<R, A>): Gen<R | R1, B> => {
52
+ return new Gen(
53
+ Sample.flatMapStream(ma.sample, (sample) => {
54
+ const values = f(sample.value).sample;
55
+ const shrinks = new Gen(sample.shrink).flatMap((a) => f(a)).sample;
56
+ return values.map((maybeSample) => maybeSample.map((sample) => sample.flatMap((b) => new Sample(b, shrinks))));
57
+ }),
58
+ );
59
+ };
58
60
  }
59
61
 
60
62
  /**
@@ -70,19 +72,23 @@ export function defer<R, A>(gen: Lazy<Gen<R, A>>): Gen<R, A> {
70
72
  export const empty: Gen<never, never> = new Gen(Stream.empty);
71
73
 
72
74
  /**
73
- * @tsplus fluent fncts.test.Gen filter
75
+ * @tsplus pipeable fncts.test.Gen filter
74
76
  */
75
- export function filter_<R, A, B extends A>(fa: Gen<R, A>, p: Refinement<A, B>): Gen<R, B>;
76
- export function filter_<R, A>(fa: Gen<R, A>, p: Predicate<A>): Gen<R, A>;
77
- export function filter_<R, A>(fa: Gen<R, A>, p: Predicate<A>): Gen<R, A> {
78
- return fa.flatMap((a) => (p(a) ? Gen.constant(a) : Gen.empty));
77
+ export function filter<A, B extends A>(p: Refinement<A, B>): <R>(fa: Gen<R, A>) => Gen<R, B>;
78
+ export function filter<A>(p: Predicate<A>): <R>(fa: Gen<R, A>) => Gen<R, A>;
79
+ export function filter<A>(p: Predicate<A>) {
80
+ return <R>(fa: Gen<R, A>): Gen<R, A> => {
81
+ return fa.flatMap((a) => (p(a) ? Gen.constant(a) : Gen.empty));
82
+ };
79
83
  }
80
84
 
81
85
  /**
82
- * @tsplus fluent fncts.test.Gen filterNot
86
+ * @tsplus pipeable fncts.test.Gen filterNot
83
87
  */
84
- export function filterNot_<R, A>(fa: Gen<R, A>, p: Predicate<A>): Gen<R, A> {
85
- return fa.filter((a) => !p(a));
88
+ export function filterNot<A>(p: Predicate<A>) {
89
+ return <R>(fa: Gen<R, A>): Gen<R, A> => {
90
+ return fa.filter((a) => !p(a));
91
+ };
86
92
  }
87
93
 
88
94
  /**
@@ -124,24 +130,28 @@ export function int(constraints: NumberConstraints = {}): Gen<never, number> {
124
130
  }
125
131
 
126
132
  /**
127
- * @tsplus fluent fncts.test.Gen map
133
+ * @tsplus pipeable fncts.test.Gen map
128
134
  */
129
- export function map_<R, A, B>(self: Gen<R, A>, f: (a: A) => B): Gen<R, B> {
130
- return new Gen(self.sample.map((maybeSample) => maybeSample.map((sample) => sample.map(f))));
135
+ export function map<A, B>(f: (a: A) => B) {
136
+ return <R>(self: Gen<R, A>): Gen<R, B> => {
137
+ return new Gen(self.sample.map((maybeSample) => maybeSample.map((sample) => sample.map(f))));
138
+ };
131
139
  }
132
140
 
133
141
  /**
134
- * @tsplus fluent fncts.test.Gen mapIO
142
+ * @tsplus pipeable fncts.test.Gen mapIO
135
143
  */
136
- export function mapIO_<R, A, R1, B>(self: Gen<R, A>, f: (a: A) => IO<R1, never, B>): Gen<R | R1, B> {
137
- return new Gen(
138
- self.sample.mapIO((maybeSample) =>
139
- maybeSample.match(
140
- () => IO.succeedNow(Nothing()),
141
- (sample) => sample.foreach(f).map(Maybe.just),
144
+ export function mapIO<A, R1, B>(f: (a: A) => IO<R1, never, B>) {
145
+ return <R>(self: Gen<R, A>): Gen<R | R1, B> => {
146
+ return new Gen(
147
+ self.sample.mapIO((maybeSample) =>
148
+ maybeSample.match(
149
+ () => IO.succeedNow(Nothing()),
150
+ (sample) => sample.foreach(f).map(Maybe.just),
151
+ ),
142
152
  ),
143
- ),
144
- );
153
+ );
154
+ };
145
155
  }
146
156
 
147
157
  /**
@@ -168,7 +178,9 @@ export function medium<R, A>(f: (n: number) => Gen<R, A>, min = 0): Gen<R | Size
168
178
  * @tsplus static fncts.test.GenOps memo
169
179
  */
170
180
  export function memo<R, A>(builder: (maxDepth: number) => Gen<R, A>): (maxDepth?: number) => Gen<R, A> {
171
- const previous: { [depth: number]: Gen<R, A> } = {};
181
+ const previous: {
182
+ [depth: number]: Gen<R, A>;
183
+ } = {};
172
184
  let remainingDepth = 10;
173
185
  return (maxDepth?: number): Gen<R, A> => {
174
186
  const n = maxDepth !== undefined ? maxDepth : remainingDepth;
@@ -198,14 +210,16 @@ export function oneOf<A extends ReadonlyArray<Gen<any, any>>>(...gens: A): Gen<_
198
210
  }
199
211
 
200
212
  /**
201
- * @tsplus fluent fncts.test.Gen reshrink
213
+ * @tsplus pipeable fncts.test.Gen reshrink
202
214
  */
203
- export function reshrink_<R, A, R1, B>(gen: Gen<R, A>, f: (a: A) => Sample<R1, B>): Gen<R | R1, B> {
204
- return new Gen(
205
- (gen.sample as Stream<R | R1, never, Maybe<Sample<R, A>>>).map((maybeSample) =>
206
- maybeSample.map((sample) => f(sample.value)),
207
- ),
208
- );
215
+ export function reshrink<A, R1, B>(f: (a: A) => Sample<R1, B>) {
216
+ return <R>(gen: Gen<R, A>): Gen<R | R1, B> => {
217
+ return new Gen(
218
+ (gen.sample as Stream<R | R1, never, Maybe<Sample<R, A>>>).map((maybeSample) =>
219
+ maybeSample.map((sample) => f(sample.value)),
220
+ ),
221
+ );
222
+ };
209
223
  }
210
224
 
211
225
  /**
@@ -269,8 +283,10 @@ export function weighted<R, A>(...gens: ReadonlyArray<readonly [Gen<R, A>, numbe
269
283
  }
270
284
 
271
285
  /**
272
- * @tsplus fluent fncts.test.Gen zipWith
286
+ * @tsplus pipeable fncts.test.Gen zipWith
273
287
  */
274
- export function zipWith_<R, A, R1, B, C>(self: Gen<R, A>, that: Gen<R1, B>, f: (a: A, b: B) => C): Gen<R | R1, C> {
275
- return self.flatMap((a) => that.map((b) => f(a, b)));
288
+ export function zipWith<A, R1, B, C>(that: Gen<R1, B>, f: (a: A, b: B) => C) {
289
+ return <R>(self: Gen<R, A>): Gen<R | R1, C> => {
290
+ return self.flatMap((a) => that.map((b) => f(a, b)));
291
+ };
276
292
  }
@@ -3,7 +3,6 @@ export * from "./Gen/api.js";
3
3
  export * from "./Gen/constraints.js";
4
4
  export * from "./Gen/definition.js";
5
5
  // codegen:end
6
-
7
6
  // codegen:start { preset: barrel, include: ./Gen/api/*.ts }
8
7
  export * from "./Gen/api/array.js";
9
8
  export * from "./Gen/api/char.js";
@@ -1,5 +1,3 @@
1
- import type { Erase } from "@fncts/typelevel/Intersection";
2
-
3
1
  import { IOEnv } from "@fncts/io/IOEnv";
4
2
 
5
3
  /**
@@ -12,7 +10,6 @@ export const LiveTag = Tag<Live>("fncts.test.Live");
12
10
  */
13
11
  export abstract class Live {
14
12
  abstract provide<R, E, A>(io: IO<R, E, A>): IO<R, E, A>;
15
-
16
13
  static Default: Layer<IOEnv, never, Live> = Layer.fromIO(
17
14
  IO.environmentWith(
18
15
  (env) =>
@@ -24,7 +21,6 @@ export abstract class Live {
24
21
  ),
25
22
  LiveTag,
26
23
  );
27
-
28
24
  static Live<R extends Live, E, A>(io: IO<R, E, A>): IO<R | Live, E, A> {
29
25
  return IO.serviceWithIO((live) => live.provide(io), LiveTag);
30
26
  }