effect 2.1.2 → 2.2.1

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 (134) hide show
  1. package/dist/cjs/Cause.js.map +1 -1
  2. package/dist/cjs/Effect.js.map +1 -1
  3. package/dist/cjs/Either.js +1 -1
  4. package/dist/cjs/Either.js.map +1 -1
  5. package/dist/cjs/Exit.js.map +1 -1
  6. package/dist/cjs/FiberMap.js +59 -3
  7. package/dist/cjs/FiberMap.js.map +1 -1
  8. package/dist/cjs/FiberSet.js +55 -3
  9. package/dist/cjs/FiberSet.js.map +1 -1
  10. package/dist/cjs/HashMap.js.map +1 -1
  11. package/dist/cjs/HashSet.js.map +1 -1
  12. package/dist/cjs/List.js.map +1 -1
  13. package/dist/cjs/ReadonlyArray.js.map +1 -1
  14. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  15. package/dist/cjs/STM.js.map +1 -1
  16. package/dist/cjs/internal/cause.js.map +1 -1
  17. package/dist/cjs/internal/core-effect.js +7 -7
  18. package/dist/cjs/internal/core-effect.js.map +1 -1
  19. package/dist/cjs/internal/core.js +1 -1
  20. package/dist/cjs/internal/core.js.map +1 -1
  21. package/dist/cjs/internal/fiberId.js +11 -3
  22. package/dist/cjs/internal/fiberId.js.map +1 -1
  23. package/dist/cjs/internal/groupBy.js.map +1 -1
  24. package/dist/cjs/internal/hashMap.js.map +1 -1
  25. package/dist/cjs/internal/hashSet.js.map +1 -1
  26. package/dist/cjs/internal/schedule.js +11 -1
  27. package/dist/cjs/internal/schedule.js.map +1 -1
  28. package/dist/cjs/internal/stm/stm.js.map +1 -1
  29. package/dist/cjs/internal/stream.js +1 -4
  30. package/dist/cjs/internal/stream.js.map +1 -1
  31. package/dist/cjs/internal/trie.js.map +1 -1
  32. package/dist/cjs/internal/version.js +1 -1
  33. package/dist/dts/Cause.d.ts +6 -4
  34. package/dist/dts/Cause.d.ts.map +1 -1
  35. package/dist/dts/Chunk.d.ts +16 -16
  36. package/dist/dts/Chunk.d.ts.map +1 -1
  37. package/dist/dts/Effect.d.ts +31 -31
  38. package/dist/dts/Effect.d.ts.map +1 -1
  39. package/dist/dts/Either.d.ts +9 -9
  40. package/dist/dts/Either.d.ts.map +1 -1
  41. package/dist/dts/Exit.d.ts +3 -2
  42. package/dist/dts/Exit.d.ts.map +1 -1
  43. package/dist/dts/FiberMap.d.ts +42 -5
  44. package/dist/dts/FiberMap.d.ts.map +1 -1
  45. package/dist/dts/FiberSet.d.ts +36 -1
  46. package/dist/dts/FiberSet.d.ts.map +1 -1
  47. package/dist/dts/GroupBy.d.ts +6 -6
  48. package/dist/dts/GroupBy.d.ts.map +1 -1
  49. package/dist/dts/HashMap.d.ts +5 -4
  50. package/dist/dts/HashMap.d.ts.map +1 -1
  51. package/dist/dts/HashSet.d.ts +6 -5
  52. package/dist/dts/HashSet.d.ts.map +1 -1
  53. package/dist/dts/List.d.ts +9 -8
  54. package/dist/dts/List.d.ts.map +1 -1
  55. package/dist/dts/Option.d.ts +7 -7
  56. package/dist/dts/Option.d.ts.map +1 -1
  57. package/dist/dts/ReadonlyArray.d.ts +25 -23
  58. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  59. package/dist/dts/ReadonlyRecord.d.ts +5 -4
  60. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  61. package/dist/dts/STM.d.ts +28 -26
  62. package/dist/dts/STM.d.ts.map +1 -1
  63. package/dist/dts/SortedSet.d.ts +3 -3
  64. package/dist/dts/SortedSet.d.ts.map +1 -1
  65. package/dist/dts/Stream.d.ts +37 -37
  66. package/dist/dts/Stream.d.ts.map +1 -1
  67. package/dist/dts/Trie.d.ts +4 -4
  68. package/dist/dts/Trie.d.ts.map +1 -1
  69. package/dist/dts/internal/hashMap.d.ts.map +1 -1
  70. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  71. package/dist/dts/internal/version.d.ts +1 -1
  72. package/dist/esm/Cause.js.map +1 -1
  73. package/dist/esm/Effect.js.map +1 -1
  74. package/dist/esm/Either.js +1 -1
  75. package/dist/esm/Either.js.map +1 -1
  76. package/dist/esm/Exit.js.map +1 -1
  77. package/dist/esm/FiberMap.js +54 -1
  78. package/dist/esm/FiberMap.js.map +1 -1
  79. package/dist/esm/FiberSet.js +50 -1
  80. package/dist/esm/FiberSet.js.map +1 -1
  81. package/dist/esm/HashMap.js.map +1 -1
  82. package/dist/esm/HashSet.js.map +1 -1
  83. package/dist/esm/List.js.map +1 -1
  84. package/dist/esm/ReadonlyArray.js.map +1 -1
  85. package/dist/esm/ReadonlyRecord.js.map +1 -1
  86. package/dist/esm/STM.js.map +1 -1
  87. package/dist/esm/internal/cause.js.map +1 -1
  88. package/dist/esm/internal/core-effect.js +7 -7
  89. package/dist/esm/internal/core-effect.js.map +1 -1
  90. package/dist/esm/internal/core.js +1 -1
  91. package/dist/esm/internal/core.js.map +1 -1
  92. package/dist/esm/internal/fiberId.js +11 -3
  93. package/dist/esm/internal/fiberId.js.map +1 -1
  94. package/dist/esm/internal/groupBy.js.map +1 -1
  95. package/dist/esm/internal/hashMap.js.map +1 -1
  96. package/dist/esm/internal/hashSet.js.map +1 -1
  97. package/dist/esm/internal/schedule.js +11 -1
  98. package/dist/esm/internal/schedule.js.map +1 -1
  99. package/dist/esm/internal/stm/stm.js.map +1 -1
  100. package/dist/esm/internal/stream.js +1 -4
  101. package/dist/esm/internal/stream.js.map +1 -1
  102. package/dist/esm/internal/trie.js.map +1 -1
  103. package/dist/esm/internal/version.js +1 -1
  104. package/package.json +1 -1
  105. package/src/Cause.ts +6 -4
  106. package/src/Chunk.ts +20 -20
  107. package/src/Effect.ts +67 -72
  108. package/src/Either.ts +17 -21
  109. package/src/Exit.ts +3 -2
  110. package/src/FiberMap.ts +97 -16
  111. package/src/FiberSet.ts +86 -13
  112. package/src/GroupBy.ts +6 -6
  113. package/src/HashMap.ts +5 -4
  114. package/src/HashSet.ts +8 -7
  115. package/src/List.ts +11 -10
  116. package/src/Option.ts +8 -8
  117. package/src/ReadonlyArray.ts +44 -38
  118. package/src/ReadonlyRecord.ts +13 -10
  119. package/src/STM.ts +47 -46
  120. package/src/SortedSet.ts +5 -5
  121. package/src/Stream.ts +51 -51
  122. package/src/Trie.ts +4 -4
  123. package/src/internal/cause.ts +16 -7
  124. package/src/internal/core-effect.ts +160 -162
  125. package/src/internal/core.ts +30 -34
  126. package/src/internal/fiberId.ts +18 -17
  127. package/src/internal/groupBy.ts +2 -1
  128. package/src/internal/hashMap.ts +5 -4
  129. package/src/internal/hashSet.ts +9 -8
  130. package/src/internal/schedule.ts +15 -12
  131. package/src/internal/stm/stm.ts +104 -124
  132. package/src/internal/stream.ts +106 -97
  133. package/src/internal/trie.ts +3 -2
  134. package/src/internal/version.ts +1 -1
@@ -7,6 +7,7 @@ import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
7
7
  import { pipeArguments } from "../Pipeable.js"
8
8
  import type { Predicate, Refinement } from "../Predicate.js"
9
9
  import { hasProperty } from "../Predicate.js"
10
+ import type { NoInfer } from "../Types.js"
10
11
  import * as HM from "./hashMap.js"
11
12
 
12
13
  const HashSetSymbolKey = "effect/HashSet"
@@ -112,7 +113,7 @@ export const some = dual<
112
113
 
113
114
  /** @internal */
114
115
  export const every: {
115
- <A, B extends A>(refinement: Refinement<A, B>): (self: HS.HashSet<A>) => self is HS.HashSet<B>
116
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: HS.HashSet<A>) => self is HS.HashSet<B>
116
117
  <A>(predicate: Predicate<A>): (self: HS.HashSet<A>) => boolean
117
118
  <A, B extends A>(self: HS.HashSet<A>, refinement: Refinement<A, B>): self is HS.HashSet<B>
118
119
  <A>(self: HS.HashSet<A>, predicate: Predicate<A>): boolean
@@ -272,8 +273,8 @@ export const reduce = dual<
272
273
 
273
274
  /** @internal */
274
275
  export const filter: {
275
- <A, B extends A>(refinement: Refinement<A, B>): (self: HS.HashSet<A>) => HS.HashSet<B>
276
- <B extends A, A = B>(predicate: Predicate<B>): (self: HS.HashSet<A>) => HS.HashSet<A>
276
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): (self: HS.HashSet<A>) => HS.HashSet<B>
277
+ <A>(predicate: Predicate<NoInfer<A>>): (self: HS.HashSet<A>) => HS.HashSet<A>
277
278
  <A, B extends A>(self: HS.HashSet<A>, refinement: Refinement<A, B>): HS.HashSet<B>
278
279
  <A>(self: HS.HashSet<A>, predicate: Predicate<A>): HS.HashSet<A>
279
280
  } = dual(2, <A>(self: HS.HashSet<A>, f: Predicate<A>) => {
@@ -291,12 +292,12 @@ export const filter: {
291
292
 
292
293
  /** @internal */
293
294
  export const partition: {
294
- <C extends A, B extends A, A = C>(
295
- refinement: Refinement<A, B>
296
- ): (self: HS.HashSet<C>) => [excluded: HS.HashSet<Exclude<C, B>>, satisfying: HS.HashSet<B>]
297
295
  <A, B extends A>(
298
- predicate: Predicate<A>
299
- ): (self: HS.HashSet<B>) => [excluded: HS.HashSet<B>, satisfying: HS.HashSet<B>]
296
+ refinement: Refinement<NoInfer<A>, B>
297
+ ): (self: HS.HashSet<A>) => [excluded: HS.HashSet<Exclude<A, B>>, satisfying: HS.HashSet<B>]
298
+ <A>(
299
+ predicate: Predicate<NoInfer<A>>
300
+ ): (self: HS.HashSet<A>) => [excluded: HS.HashSet<A>, satisfying: HS.HashSet<A>]
300
301
  <A, B extends A>(
301
302
  self: HS.HashSet<A>,
302
303
  refinement: Refinement<A, B>
@@ -116,18 +116,21 @@ class ScheduleDriverImpl<Env, In, Out> implements Schedule.ScheduleDriver<Env, I
116
116
  core.flatMap((now) =>
117
117
  pipe(
118
118
  core.suspend(() => this.schedule.step(now, input, state)),
119
- core.flatMap(([state, out, decision]) =>
120
- ScheduleDecision.isDone(decision) ?
121
- pipe(
122
- ref.set(this.ref, [Option.some(out), state] as const),
123
- core.zipRight(core.fail(Option.none()))
124
- ) :
125
- pipe(
126
- ref.set(this.ref, [Option.some(out), state] as const),
127
- core.zipRight(effect.sleep(Duration.millis(Intervals.start(decision.intervals) - now))),
128
- core.as(out)
129
- )
130
- )
119
+ core.flatMap(([state, out, decision]) => {
120
+ const setState = ref.set(this.ref, [Option.some(out), state] as const)
121
+ if (ScheduleDecision.isDone(decision)) {
122
+ return core.zipRight(setState, core.fail(Option.none()))
123
+ }
124
+ const millis = Intervals.start(decision.intervals) - now
125
+ if (millis <= 0) {
126
+ return core.as(setState, out)
127
+ }
128
+ return pipe(
129
+ setState,
130
+ core.zipRight(effect.sleep(Duration.millis(millis))),
131
+ core.as(out)
132
+ )
133
+ })
131
134
  )
132
135
  )
133
136
  )
@@ -12,6 +12,7 @@ import * as predicate from "../../Predicate.js"
12
12
  import type { Predicate, Refinement } from "../../Predicate.js"
13
13
  import * as RA from "../../ReadonlyArray.js"
14
14
  import type * as STM from "../../STM.js"
15
+ import type { NoInfer } from "../../Types.js"
15
16
  import * as effectCore from "../core.js"
16
17
  import * as SingleShotGen from "../singleShotGen.js"
17
18
  import * as core from "./core.js"
@@ -337,7 +338,7 @@ export const eventually = <R, E, A>(self: STM.STM<R, E, A>): STM.STM<R, E, A> =>
337
338
 
338
339
  /** @internal */
339
340
  export const every = dual<
340
- <A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
341
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
341
342
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, boolean>
342
343
  >(
343
344
  2,
@@ -364,7 +365,7 @@ export const every = dual<
364
365
 
365
366
  /** @internal */
366
367
  export const exists = dual<
367
- <A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
368
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, boolean>,
368
369
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, boolean>
369
370
  >(
370
371
  2,
@@ -391,7 +392,7 @@ export const fiberId: STM.STM<never, never, FiberId.FiberId> = core.effect<never
391
392
 
392
393
  /** @internal */
393
394
  export const filter = dual<
394
- <A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
395
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
395
396
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, Array<A>>
396
397
  >(
397
398
  2,
@@ -414,7 +415,7 @@ export const filter = dual<
414
415
 
415
416
  /** @internal */
416
417
  export const filterNot = dual<
417
- <A, R, E>(predicate: (a: A) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
418
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM.STM<R, E, boolean>) => (iterable: Iterable<A>) => STM.STM<R, E, Array<A>>,
418
419
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM.STM<R, E, boolean>) => STM.STM<R, E, Array<A>>
419
420
  >(
420
421
  2,
@@ -423,117 +424,97 @@ export const filterNot = dual<
423
424
  )
424
425
 
425
426
  /** @internal */
426
- export const filterOrDie = dual<
427
- {
428
- <A, B extends A>(
429
- refinement: Refinement<A, B>,
430
- defect: LazyArg<unknown>
431
- ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
432
- <A, X extends A>(
433
- predicate: Predicate<X>,
434
- defect: LazyArg<unknown>
435
- ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
436
- },
437
- {
438
- <R, E, A, B extends A>(
439
- self: STM.STM<R, E, A>,
440
- refinement: Refinement<A, B>,
441
- defect: LazyArg<unknown>
442
- ): STM.STM<R, E, B>
443
- <R, E, A, X extends A>(self: STM.STM<R, E, A>, predicate: Predicate<X>, defect: LazyArg<unknown>): STM.STM<R, E, A>
444
- }
445
- >(
427
+ export const filterOrDie: {
428
+ <A, B extends A>(
429
+ refinement: Refinement<NoInfer<A>, B>,
430
+ defect: LazyArg<unknown>
431
+ ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
432
+ <A>(
433
+ predicate: Predicate<NoInfer<A>>,
434
+ defect: LazyArg<unknown>
435
+ ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
436
+ <R, E, A, B extends A>(
437
+ self: STM.STM<R, E, A>,
438
+ refinement: Refinement<A, B>,
439
+ defect: LazyArg<unknown>
440
+ ): STM.STM<R, E, B>
441
+ <R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM.STM<R, E, A>
442
+ } = dual(
446
443
  3,
447
- <R, E, A, X extends A>(self: STM.STM<R, E, A>, predicate: Predicate<X>, defect: LazyArg<unknown>): STM.STM<R, E, A> =>
444
+ <R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM.STM<R, E, A> =>
448
445
  filterOrElse(self, predicate, () => core.dieSync(defect))
449
446
  )
450
447
 
451
448
  /** @internal */
452
- export const filterOrDieMessage = dual<
453
- {
454
- <A, B extends A>(refinement: Refinement<A, B>, message: string): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
455
- <A, X extends A>(predicate: Predicate<X>, message: string): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
456
- },
457
- {
458
- <R, E, A, B extends A>(self: STM.STM<R, E, A>, refinement: Refinement<A, B>, message: string): STM.STM<R, E, B>
459
- <R, E, A, X extends A>(self: STM.STM<R, E, A>, predicate: Predicate<X>, message: string): STM.STM<R, E, A>
460
- }
461
- >(
449
+ export const filterOrDieMessage: {
450
+ <A, B extends A>(
451
+ refinement: Refinement<NoInfer<A>, B>,
452
+ message: string
453
+ ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
454
+ <A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
455
+ <R, E, A, B extends A>(self: STM.STM<R, E, A>, refinement: Refinement<A, B>, message: string): STM.STM<R, E, B>
456
+ <R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, message: string): STM.STM<R, E, A>
457
+ } = dual(
462
458
  3,
463
- (self, predicate, message) => filterOrElse(self, predicate, () => core.dieMessage(message))
459
+ <R, E, A>(self: STM.STM<R, E, A>, predicate: Predicate<A>, message: string): STM.STM<R, E, A> =>
460
+ filterOrElse(self, predicate, () => core.dieMessage(message))
464
461
  )
465
462
 
466
463
  /** @internal */
467
- export const filterOrElse = dual<
468
- {
469
- <A, B extends A, X extends A, R2, E2, A2>(
470
- refinement: Refinement<A, B>,
471
- orElse: (a: X) => STM.STM<R2, E2, A2>
472
- ): <R, E>(
473
- self: STM.STM<R, E, A>
474
- ) => STM.STM<R2 | R, E2 | E, B | A2>
475
- <A, X extends A, Y extends A, R2, E2, A2>(
476
- predicate: Predicate<X>,
477
- orElse: (a: Y) => STM.STM<R2, E2, A2>
478
- ): <R, E>(
479
- self: STM.STM<R, E, A>
480
- ) => STM.STM<R2 | R, E2 | E, A | A2>
481
- },
482
- {
483
- <R, E, A, B extends A, X extends A, R2, E2, A2>(
484
- self: STM.STM<R, E, A>,
485
- refinement: Refinement<A, B>,
486
- orElse: (a: X) => STM.STM<R2, E2, A2>
487
- ): STM.STM<R2 | R, E2 | E, B | A2>
488
- <R, E, A, X extends A, Y extends A, R2, E2, A2>(
489
- self: STM.STM<R, E, A>,
490
- predicate: Predicate<X>,
491
- orElse: (a: Y) => STM.STM<R2, E2, A2>
492
- ): STM.STM<R2 | R, E2 | E, A | A2>
493
- }
494
- >(
464
+ export const filterOrElse: {
465
+ <A, B extends A, R2, E2, C>(
466
+ refinement: Refinement<NoInfer<A>, B>,
467
+ orElse: (a: NoInfer<A>) => STM.STM<R2, E2, C>
468
+ ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E2 | E, B | C>
469
+ <A, R2, E2, B>(
470
+ predicate: Predicate<NoInfer<A>>,
471
+ orElse: (a: NoInfer<A>) => STM.STM<R2, E2, B>
472
+ ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E2 | E, A | B>
473
+ <R, E, A, B extends A, R2, E2, C>(
474
+ self: STM.STM<R, E, A>,
475
+ refinement: Refinement<A, B>,
476
+ orElse: (a: A) => STM.STM<R2, E2, C>
477
+ ): STM.STM<R | R2, E | E2, B | C>
478
+ <R, E, A, R2, E2, B>(
479
+ self: STM.STM<R, E, A>,
480
+ predicate: Predicate<A>,
481
+ orElse: (a: A) => STM.STM<R2, E2, B>
482
+ ): STM.STM<R | R2, E | E2, A | B>
483
+ } = dual(
495
484
  3,
496
- <R, E, A, X extends A, Y extends A, R2, E2, A2>(
485
+ <R, E, A, R2, E2, B>(
497
486
  self: STM.STM<R, E, A>,
498
- predicate: Predicate<X>,
499
- orElse: (a: Y) => STM.STM<R2, E2, A2>
500
- ): STM.STM<R2 | R, E2 | E, A | A2> =>
501
- core.flatMap(self, (a): STM.STM<R | R2, E | E2, A | A2> =>
502
- predicate(a as X) ?
503
- core.succeed(a) :
504
- orElse(a as Y))
487
+ predicate: Predicate<A>,
488
+ orElse: (a: A) => STM.STM<R2, E2, B>
489
+ ): STM.STM<R | R2, E | E2, A | B> =>
490
+ core.flatMap(self, (a): STM.STM<R2, E2, A | B> => predicate(a) ? core.succeed(a) : orElse(a))
505
491
  )
506
492
 
507
493
  /** @internal */
508
- export const filterOrFail = dual<
509
- {
510
- <A, B extends A, X extends A, E2>(
511
- refinement: Refinement<A, B>,
512
- orFailWith: (a: X) => E2
513
- ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E2 | E, B>
514
- <A, X extends A, Y extends A, E2>(
515
- predicate: Predicate<X>,
516
- orFailWith: (a: Y) => E2
517
- ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E2 | E, A>
518
- },
519
- {
520
- <R, E, A, B extends A, X extends A, E2>(
521
- self: STM.STM<R, E, A>,
522
- refinement: Refinement<A, B>,
523
- orFailWith: (a: X) => E2
524
- ): STM.STM<R, E2 | E, B>
525
- <R, E, A, X extends A, Y extends A, E2>(
526
- self: STM.STM<R, E, A>,
527
- predicate: Predicate<X>,
528
- orFailWith: (a: Y) => E2
529
- ): STM.STM<R, E2 | E, A>
530
- }
531
- >(3, (self, predicate, orFailWith) =>
532
- filterOrElse(
533
- self,
534
- predicate,
535
- (a) => core.failSync(() => orFailWith(a as any))
536
- ))
494
+ export const filterOrFail: {
495
+ <A, B extends A, E2>(
496
+ refinement: Refinement<NoInfer<A>, B>,
497
+ orFailWith: (a: NoInfer<A>) => E2
498
+ ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E2 | E, B>
499
+ <A, E2>(
500
+ predicate: Predicate<NoInfer<A>>,
501
+ orFailWith: (a: NoInfer<A>) => E2
502
+ ): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E2 | E, A>
503
+ <R, E, A, B extends A, E2>(
504
+ self: STM.STM<R, E, A>,
505
+ refinement: Refinement<A, B>,
506
+ orFailWith: (a: A) => E2
507
+ ): STM.STM<R, E | E2, B>
508
+ <R, E, A, E2>(self: STM.STM<R, E, A>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM.STM<R, E | E2, A>
509
+ } = dual(
510
+ 3,
511
+ <R, E, A, E2>(self: STM.STM<R, E, A>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM.STM<R, E | E2, A> =>
512
+ filterOrElse(
513
+ self,
514
+ predicate,
515
+ (a) => core.failSync(() => orFailWith(a))
516
+ )
517
+ )
537
518
 
538
519
  /** @internal */
539
520
  export const flatten = <R, E, R2, E2, A>(self: STM.STM<R, E, STM.STM<R2, E2, A>>): STM.STM<R | R2, E | E2, A> =>
@@ -1221,7 +1202,7 @@ export const replicateSTMDiscard = dual<
1221
1202
  /** @internal */
1222
1203
  export const retryUntil = dual<
1223
1204
  {
1224
- <A, B extends A>(refinement: Refinement<A, B>): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
1205
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, B>
1225
1206
  <A>(predicate: Predicate<A>): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R, E, A>
1226
1207
  },
1227
1208
  {
@@ -1328,15 +1309,14 @@ export const summarized = dual<
1328
1309
  export const suspend = <R, E, A>(evaluate: LazyArg<STM.STM<R, E, A>>): STM.STM<R, E, A> => flatten(core.sync(evaluate))
1329
1310
 
1330
1311
  /** @internal */
1331
- export const tap = dual<
1332
- <A, X extends A, R2, E2, _>(
1333
- f: (a: X) => STM.STM<R2, E2, _>
1334
- ) => <R, E>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E2 | E, A>,
1335
- <R, E, A, X extends A, R2, E2, _>(
1336
- self: STM.STM<R, E, A>,
1337
- f: (a: X) => STM.STM<R2, E2, _>
1338
- ) => STM.STM<R2 | R, E2 | E, A>
1339
- >(2, (self, f) => core.flatMap(self, (a) => as(f(a as any), a)))
1312
+ export const tap: {
1313
+ <A, R2, E2, _>(f: (a: A) => STM.STM<R2, E2, _>): <R, E>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E2 | E, A>
1314
+ <R, E, A, R2, E2, _>(self: STM.STM<R, E, A>, f: (a: A) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A>
1315
+ } = dual(
1316
+ 2,
1317
+ <R, E, A, R2, E2, _>(self: STM.STM<R, E, A>, f: (a: A) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A> =>
1318
+ core.flatMap(self, (a) => as(f(a), a))
1319
+ )
1340
1320
 
1341
1321
  /** @internal */
1342
1322
  export const tapBoth = dual<
@@ -1362,19 +1342,19 @@ export const tapBoth = dual<
1362
1342
  }))
1363
1343
 
1364
1344
  /** @internal */
1365
- export const tapError = dual<
1366
- <E, X extends E, R2, E2, _>(
1367
- f: (error: X) => STM.STM<R2, E2, _>
1368
- ) => <R, A>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E | E2, A>,
1369
- <R, A, E, X extends E, R2, E2, _>(
1370
- self: STM.STM<R, E, A>,
1371
- f: (error: X) => STM.STM<R2, E2, _>
1372
- ) => STM.STM<R2 | R, E | E2, A>
1373
- >(2, (self, f) =>
1374
- core.matchSTM(self, {
1375
- onFailure: (e) => core.zipRight(f(e as any), core.fail(e)),
1376
- onSuccess: core.succeed
1377
- }))
1345
+ export const tapError: {
1346
+ <E, R2, E2, _>(
1347
+ f: (error: NoInfer<E>) => STM.STM<R2, E2, _>
1348
+ ): <R, A>(self: STM.STM<R, E, A>) => STM.STM<R2 | R, E | E2, A>
1349
+ <R, A, E, R2, E2, _>(self: STM.STM<R, E, A>, f: (error: E) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A>
1350
+ } = dual(
1351
+ 2,
1352
+ <R, A, E, R2, E2, _>(self: STM.STM<R, E, A>, f: (error: E) => STM.STM<R2, E2, _>): STM.STM<R | R2, E | E2, A> =>
1353
+ core.matchSTM(self, {
1354
+ onFailure: (e) => core.zipRight(f(e), core.fail(e)),
1355
+ onSuccess: core.succeed
1356
+ })
1357
+ )
1378
1358
 
1379
1359
  /** @internal */
1380
1360
  export const try_: {