@fncts/test 0.0.19 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
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
  }