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
@@ -19,6 +19,7 @@ import type { Predicate, Refinement } from "./Predicate.js"
19
19
  import { isBoolean } from "./Predicate.js"
20
20
  import * as RR from "./ReadonlyRecord.js"
21
21
  import * as Tuple from "./Tuple.js"
22
+ import type { NoInfer } from "./Types.js"
22
23
 
23
24
  /**
24
25
  * @category type lambdas
@@ -559,8 +560,8 @@ export const takeRight: {
559
560
  * @since 2.0.0
560
561
  */
561
562
  export const takeWhile: {
562
- <A, B extends A>(refinement: (a: A, i: number) => a is B): (self: Iterable<A>) => Array<B>
563
- <B extends A, A = B>(predicate: (a: A, i: number) => boolean): (self: Iterable<B>) => Array<B>
563
+ <A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Array<B>
564
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Array<A>
564
565
  <A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Array<B>
565
566
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A>
566
567
  } = dual(2, <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A> => {
@@ -597,10 +598,10 @@ const spanIndex = <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean
597
598
  * @since 2.0.0
598
599
  */
599
600
  export const span: {
600
- <C extends A, B extends A, A = C>(
601
- refinement: (a: A, i: number) => a is B
602
- ): (self: Iterable<C>) => [init: Array<B>, rest: Array<Exclude<C, B>>]
603
- <B extends A, A = B>(predicate: (a: A, i: number) => boolean): (self: Iterable<B>) => [init: Array<B>, rest: Array<B>]
601
+ <A, B extends A>(
602
+ refinement: (a: NoInfer<A>, i: number) => a is B
603
+ ): (self: Iterable<A>) => [init: Array<B>, rest: Array<Exclude<A, B>>]
604
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => [init: Array<A>, rest: Array<A>]
604
605
  <A, B extends A>(
605
606
  self: Iterable<A>,
606
607
  refinement: (a: A, i: number) => a is B
@@ -651,7 +652,7 @@ export const dropRight: {
651
652
  * @since 2.0.0
652
653
  */
653
654
  export const dropWhile: {
654
- <B extends A, A = B>(predicate: (a: A, i: number) => boolean): (self: Iterable<B>) => Array<B>
655
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Array<A>
655
656
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A>
656
657
  } = dual(
657
658
  2,
@@ -666,7 +667,7 @@ export const dropWhile: {
666
667
  * @since 2.0.0
667
668
  */
668
669
  export const findFirstIndex: {
669
- <A>(predicate: (a: A, i: number) => boolean): (self: Iterable<A>) => Option<number>
670
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<number>
670
671
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number>
671
672
  } = dual(2, <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number> => {
672
673
  let i = 0
@@ -686,7 +687,7 @@ export const findFirstIndex: {
686
687
  * @since 2.0.0
687
688
  */
688
689
  export const findLastIndex: {
689
- <A>(predicate: (a: A, i: number) => boolean): (self: Iterable<A>) => Option<number>
690
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<number>
690
691
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number>
691
692
  } = dual(2, <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<number> => {
692
693
  const input = fromIterable(self)
@@ -706,9 +707,9 @@ export const findLastIndex: {
706
707
  * @since 2.0.0
707
708
  */
708
709
  export const findFirst: {
709
- <A, B>(f: (a: A, i: number) => Option<B>): (self: Iterable<A>) => Option<B>
710
- <A, B extends A>(refinement: (a: A, i: number) => a is B): (self: Iterable<A>) => Option<B>
711
- <B extends A, A = B>(predicate: (a: A, i: number) => boolean): (self: Iterable<B>) => Option<B>
710
+ <A, B>(f: (a: NoInfer<A>, i: number) => Option<B>): (self: Iterable<A>) => Option<B>
711
+ <A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Option<B>
712
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<A>
712
713
  <A, B>(self: Iterable<A>, f: (a: A, i: number) => Option<B>): Option<B>
713
714
  <A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Option<B>
714
715
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<A>
@@ -740,9 +741,9 @@ export const findFirst: {
740
741
  * @since 2.0.0
741
742
  */
742
743
  export const findLast: {
743
- <A, B>(f: (a: A, i: number) => Option<B>): (self: Iterable<A>) => Option<B>
744
- <A, B extends A>(refinement: (a: A, i: number) => a is B): (self: Iterable<A>) => Option<B>
745
- <B extends A, A = B>(predicate: (a: A, i: number) => boolean): (self: Iterable<B>) => Option<B>
744
+ <A, B>(f: (a: NoInfer<A>, i: number) => Option<B>): (self: Iterable<A>) => Option<B>
745
+ <A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Option<B>
746
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Option<A>
746
747
  <A, B>(self: Iterable<A>, f: (a: A, i: number) => Option<B>): Option<B>
747
748
  <A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Option<B>
748
749
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Option<A>
@@ -896,12 +897,15 @@ export const sort: {
896
897
  * @category elements
897
898
  */
898
899
  export const sortWith: {
899
- <A, B>(f: (a: A) => B, order: Order.Order<B>): (self: ReadonlyArray<A>) => Array<A>
900
- <A, B>(self: ReadonlyArray<A>, f: (a: A) => B, order: Order.Order<B>): Array<A>
900
+ <S extends Iterable<any> | NonEmptyReadonlyArray<any>, B>(
901
+ f: (a: ReadonlyArray.Infer<S>) => B,
902
+ order: Order.Order<B>
903
+ ): (self: S) => ReadonlyArray.With<S, ReadonlyArray.Infer<S>>
904
+ <A, B>(self: NonEmptyReadonlyArray<A>, f: (a: A) => B, O: Order.Order<B>): NonEmptyArray<A>
905
+ <A, B>(self: Iterable<A>, f: (a: A) => B, order: Order.Order<B>): Array<A>
901
906
  } = dual(
902
907
  3,
903
- <A, B>(self: ReadonlyArray<A>, f: (a: A) => B, order: Order.Order<B>): Array<A> =>
904
- sort(self, Order.mapInput(order, f))
908
+ <A, B>(self: Iterable<A>, f: (a: A) => B, order: Order.Order<B>): Array<A> => sort(self, Order.mapInput(order, f))
905
909
  )
906
910
 
907
911
  /**
@@ -1236,9 +1240,9 @@ export const split: {
1236
1240
  * @since 2.0.0
1237
1241
  */
1238
1242
  export const splitWhere: {
1239
- <B extends A, A = B>(
1240
- predicate: (a: A, i: number) => boolean
1241
- ): (self: Iterable<B>) => [beforeMatch: Array<B>, fromMatch: Array<B>]
1243
+ <A>(
1244
+ predicate: (a: NoInfer<A>, i: number) => boolean
1245
+ ): (self: Iterable<A>) => [beforeMatch: Array<A>, fromMatch: Array<A>]
1242
1246
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): [beforeMatch: Array<A>, fromMatch: Array<A>]
1243
1247
  } = dual(
1244
1248
  2,
@@ -1702,15 +1706,15 @@ export const getRights = <E, A>(self: Iterable<Either<E, A>>): Array<A> => {
1702
1706
  * @since 2.0.0
1703
1707
  */
1704
1708
  export const filter: {
1705
- <A, B extends A>(refinement: (a: A, i: number) => a is B): (self: Iterable<A>) => Array<B>
1706
- <A, B extends A>(predicate: (b: B, i: number) => boolean): (self: Iterable<A>) => Array<A>
1709
+ <A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (self: Iterable<A>) => Array<B>
1710
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: Iterable<A>) => Array<A>
1707
1711
  <A, B extends A>(self: Iterable<A>, refinement: (a: A, i: number) => a is B): Array<B>
1708
1712
  <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A>
1709
1713
  } = dual(
1710
1714
  2,
1711
- <B extends A, A = B>(self: Iterable<B>, predicate: (a: A, i: number) => boolean): Array<B> => {
1715
+ <A>(self: Iterable<A>, predicate: (a: A, i: number) => boolean): Array<A> => {
1712
1716
  const as = fromIterable(self)
1713
- const out: Array<B> = []
1717
+ const out: Array<A> = []
1714
1718
  for (let i = 0; i < as.length; i++) {
1715
1719
  if (predicate(as[i], i)) {
1716
1720
  out.push(as[i])
@@ -1727,12 +1731,12 @@ export const filter: {
1727
1731
  * @since 2.0.0
1728
1732
  */
1729
1733
  export const partition: {
1730
- <C extends A, B extends A, A = C>(refinement: (a: A, i: number) => a is B): (
1731
- self: Iterable<C>
1732
- ) => [excluded: Array<Exclude<C, B>>, satisfying: Array<B>]
1733
- <B extends A, A = B>(
1734
- predicate: (a: A, i: number) => boolean
1735
- ): (self: Iterable<B>) => [excluded: Array<B>, satisfying: Array<B>]
1734
+ <A, B extends A>(refinement: (a: NoInfer<A>, i: number) => a is B): (
1735
+ self: Iterable<A>
1736
+ ) => [excluded: Array<Exclude<A, B>>, satisfying: Array<B>]
1737
+ <A>(
1738
+ predicate: (a: NoInfer<A>, i: number) => boolean
1739
+ ): (self: Iterable<A>) => [excluded: Array<A>, satisfying: Array<A>]
1736
1740
  <A, B extends A>(
1737
1741
  self: Iterable<A>,
1738
1742
  refinement: (a: A, i: number) => a is B
@@ -1793,7 +1797,7 @@ export const reduceRight: {
1793
1797
  * @category lifting
1794
1798
  * @since 2.0.0
1795
1799
  */
1796
- export const liftPredicate: {
1800
+ export const liftPredicate: { // Note: I intentionally avoid using the NoInfer pattern here.
1797
1801
  <A, B extends A>(refinement: Refinement<A, B>): (a: A) => Array<B>
1798
1802
  <A>(predicate: Predicate<A>): <B extends A>(b: B) => Array<B>
1799
1803
  } = <A>(predicate: Predicate<A>) => <B extends A>(b: B): Array<B> => predicate(b) ? [b] : []
@@ -1854,8 +1858,10 @@ export const liftEither = <A extends Array<unknown>, E, B>(
1854
1858
  * @since 2.0.0
1855
1859
  */
1856
1860
  export const every: {
1857
- <A, B extends A>(refinement: (a: A, i: number) => a is B): (self: ReadonlyArray<A>) => self is ReadonlyArray<B>
1858
- <A>(predicate: (a: A, i: number) => boolean): (self: ReadonlyArray<A>) => boolean
1861
+ <A, B extends A>(
1862
+ refinement: (a: NoInfer<A>, i: number) => a is B
1863
+ ): (self: ReadonlyArray<A>) => self is ReadonlyArray<B>
1864
+ <A>(predicate: (a: NoInfer<A>, i: number) => boolean): (self: ReadonlyArray<A>) => boolean
1859
1865
  <A, B extends A>(self: ReadonlyArray<A>, refinement: (a: A, i: number) => a is B): self is ReadonlyArray<B>
1860
1866
  <A>(self: ReadonlyArray<A>, predicate: (a: A, i: number) => boolean): boolean
1861
1867
  } = dual(
@@ -1871,9 +1877,9 @@ export const every: {
1871
1877
  * @since 2.0.0
1872
1878
  */
1873
1879
  export const some: {
1874
- <B extends A, A = B>(
1875
- predicate: (a: A, i: number) => boolean
1876
- ): (self: ReadonlyArray<B>) => self is NonEmptyReadonlyArray<B>
1880
+ <A>(
1881
+ predicate: (a: NoInfer<A>, i: number) => boolean
1882
+ ): (self: ReadonlyArray<A>) => self is NonEmptyReadonlyArray<A>
1877
1883
  <A>(self: ReadonlyArray<A>, predicate: (a: A, i: number) => boolean): self is NonEmptyReadonlyArray<A>
1878
1884
  } = dual(
1879
1885
  2,
@@ -11,6 +11,7 @@ import type { Equivalence } from "./Equivalence.js"
11
11
  import { dual, identity } from "./Function.js"
12
12
  import type { TypeLambda } from "./HKT.js"
13
13
  import * as Option from "./Option.js"
14
+ import type { NoInfer } from "./Types.js"
14
15
 
15
16
  /**
16
17
  * @category models
@@ -527,10 +528,12 @@ export const filterMap: {
527
528
  * @since 2.0.0
528
529
  */
529
530
  export const filter: {
530
- <K extends string, A, B extends A>(refinement: (a: A, key: K) => a is B): (self: Record<K, A>) => Record<string, B>
531
- <K extends string, B extends A, A = B>(
532
- predicate: (A: A, key: K) => boolean
533
- ): (self: Record<K, B>) => Record<string, B>
531
+ <K extends string, A, B extends A>(
532
+ refinement: (a: NoInfer<A>, key: K) => a is B
533
+ ): (self: Record<K, A>) => Record<string, B>
534
+ <K extends string, A>(
535
+ predicate: (A: NoInfer<A>, key: K) => boolean
536
+ ): (self: Record<K, A>) => Record<string, A>
534
537
  <K extends string, A, B extends A>(self: Record<K, A>, refinement: (a: A, key: K) => a is B): Record<string, B>
535
538
  <K extends string, A>(self: Record<K, A>, predicate: (a: A, key: K) => boolean): Record<string, A>
536
539
  } = dual(
@@ -709,12 +712,12 @@ export const separate: <A, B>(
709
712
  * @since 2.0.0
710
713
  */
711
714
  export const partition: {
712
- <K extends string, C extends A, B extends A, A = C>(refinement: (a: A, key: K) => a is B): (
713
- self: Record<K, C>
714
- ) => [excluded: Record<string, Exclude<C, B>>, satisfying: Record<string, B>]
715
- <K extends string, B extends A, A = B>(
716
- predicate: (a: A, key: K) => boolean
717
- ): (self: Record<K, B>) => [excluded: Record<string, B>, satisfying: Record<string, B>]
715
+ <K extends string, A, B extends A>(refinement: (a: NoInfer<A>, key: K) => a is B): (
716
+ self: Record<K, A>
717
+ ) => [excluded: Record<string, Exclude<A, B>>, satisfying: Record<string, B>]
718
+ <K extends string, A>(
719
+ predicate: (a: NoInfer<A>, key: K) => boolean
720
+ ): (self: Record<K, A>) => [excluded: Record<string, A>, satisfying: Record<string, A>]
718
721
  <K extends string, A, B extends A>(
719
722
  self: Record<K, A>,
720
723
  refinement: (a: A, key: K) => a is B
package/src/STM.ts CHANGED
@@ -14,7 +14,7 @@ import * as stm from "./internal/stm/stm.js"
14
14
  import type * as Option from "./Option.js"
15
15
  import type { Pipeable } from "./Pipeable.js"
16
16
  import type { Predicate, Refinement } from "./Predicate.js"
17
- import type * as Types from "./Types.js"
17
+ import type { Covariant, NoInfer } from "./Types.js"
18
18
  import type * as Unify from "./Unify.js"
19
19
 
20
20
  /**
@@ -140,9 +140,9 @@ export declare namespace STM {
140
140
  */
141
141
  export interface Variance<out R, out E, out A> {
142
142
  readonly [STMTypeId]: {
143
- readonly _R: Types.Covariant<R>
144
- readonly _E: Types.Covariant<E>
145
- readonly _A: Types.Covariant<A>
143
+ readonly _R: Covariant<R>
144
+ readonly _E: Covariant<E>
145
+ readonly _A: Covariant<A>
146
146
  }
147
147
  }
148
148
  }
@@ -550,7 +550,7 @@ export const eventually: <R, E, A>(self: STM<R, E, A>) => STM<R, E, A> = stm.eve
550
550
  * @category constructors
551
551
  */
552
552
  export const every: {
553
- <A, R, E>(predicate: (a: A) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, boolean>
553
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, boolean>
554
554
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, boolean>
555
555
  } = stm.every
556
556
 
@@ -562,7 +562,7 @@ export const every: {
562
562
  * @category constructors
563
563
  */
564
564
  export const exists: {
565
- <A, R, E>(predicate: (a: A) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, boolean>
565
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, boolean>
566
566
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, boolean>
567
567
  } = stm.exists
568
568
 
@@ -597,7 +597,7 @@ export const fiberId: STM<never, never, FiberId.FiberId> = stm.fiberId
597
597
  * @category constructors
598
598
  */
599
599
  export const filter: {
600
- <A, R, E>(predicate: (a: A) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, Array<A>>
600
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, Array<A>>
601
601
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, Array<A>>
602
602
  } = stm.filter
603
603
 
@@ -609,7 +609,7 @@ export const filter: {
609
609
  * @category constructors
610
610
  */
611
611
  export const filterNot: {
612
- <A, R, E>(predicate: (a: A) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, Array<A>>
612
+ <A, R, E>(predicate: (a: NoInfer<A>) => STM<R, E, boolean>): (iterable: Iterable<A>) => STM<R, E, Array<A>>
613
613
  <A, R, E>(iterable: Iterable<A>, predicate: (a: A) => STM<R, E, boolean>): STM<R, E, Array<A>>
614
614
  } = stm.filterNot
615
615
 
@@ -620,10 +620,13 @@ export const filterNot: {
620
620
  * @category filtering
621
621
  */
622
622
  export const filterOrDie: {
623
- <A, B extends A>(refinement: Refinement<A, B>, defect: LazyArg<unknown>): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
624
- <A, X extends A>(predicate: Predicate<X>, defect: LazyArg<unknown>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
623
+ <A, B extends A>(
624
+ refinement: Refinement<NoInfer<A>, B>,
625
+ defect: LazyArg<unknown>
626
+ ): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
627
+ <A>(predicate: Predicate<NoInfer<A>>, defect: LazyArg<unknown>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
625
628
  <R, E, A, B extends A>(self: STM<R, E, A>, refinement: Refinement<A, B>, defect: LazyArg<unknown>): STM<R, E, B>
626
- <R, E, A, X extends A>(self: STM<R, E, A>, predicate: Predicate<X>, defect: LazyArg<unknown>): STM<R, E, A>
629
+ <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM<R, E, A>
627
630
  } = stm.filterOrDie
628
631
 
629
632
  /**
@@ -634,10 +637,10 @@ export const filterOrDie: {
634
637
  * @category filtering
635
638
  */
636
639
  export const filterOrDieMessage: {
637
- <A, B extends A>(refinement: Refinement<A, B>, message: string): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
638
- <A, X extends A>(predicate: Predicate<X>, message: string): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
640
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, message: string): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
641
+ <A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
639
642
  <R, E, A, B extends A>(self: STM<R, E, A>, refinement: Refinement<A, B>, message: string): STM<R, E, B>
640
- <R, E, A, X extends A>(self: STM<R, E, A>, predicate: Predicate<X>, message: string): STM<R, E, A>
643
+ <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>, message: string): STM<R, E, A>
641
644
  } = stm.filterOrDieMessage
642
645
 
643
646
  /**
@@ -647,24 +650,24 @@ export const filterOrDieMessage: {
647
650
  * @category filtering
648
651
  */
649
652
  export const filterOrElse: {
650
- <A, B extends A, X extends A, R2, E2, A2>(
651
- refinement: Refinement<A, B>,
652
- orElse: (a: X) => STM<R2, E2, A2>
653
- ): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, B | A2>
654
- <A, X extends A, Y extends A, R2, E2, A2>(
655
- predicate: Predicate<X>,
656
- orElse: (a: Y) => STM<R2, E2, A2>
657
- ): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A | A2>
658
- <R, E, A, B extends A, X extends A, R2, E2, A2>(
653
+ <A, B extends A, R2, E2, C>(
654
+ refinement: Refinement<NoInfer<A>, B>,
655
+ orElse: (a: NoInfer<A>) => STM<R2, E2, C>
656
+ ): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, B | C>
657
+ <A, R2, E2, B>(
658
+ predicate: Predicate<NoInfer<A>>,
659
+ orElse: (a: NoInfer<A>) => STM<R2, E2, B>
660
+ ): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A | B>
661
+ <R, E, A, B extends A, R2, E2, C>(
659
662
  self: STM<R, E, A>,
660
663
  refinement: Refinement<A, B>,
661
- orElse: (a: X) => STM<R2, E2, A2>
662
- ): STM<R | R2, E | E2, B | A2>
663
- <R, E, A, X extends A, Y extends A, R2, E2, A2>(
664
+ orElse: (a: A) => STM<R2, E2, C>
665
+ ): STM<R | R2, E | E2, B | C>
666
+ <R, E, A, R2, E2, B>(
664
667
  self: STM<R, E, A>,
665
- predicate: Predicate<X>,
666
- orElse: (a: Y) => STM<R2, E2, A2>
667
- ): STM<R | R2, E | E2, A | A2>
668
+ predicate: Predicate<A>,
669
+ orElse: (a: A) => STM<R2, E2, B>
670
+ ): STM<R | R2, E | E2, A | B>
668
671
  } = stm.filterOrElse
669
672
 
670
673
  /**
@@ -674,24 +677,20 @@ export const filterOrElse: {
674
677
  * @category filtering
675
678
  */
676
679
  export const filterOrFail: {
677
- <A, B extends A, X extends A, E2>(
678
- refinement: Refinement<A, B>,
679
- orFailWith: (a: X) => E2
680
+ <A, B extends A, E2>(
681
+ refinement: Refinement<NoInfer<A>, B>,
682
+ orFailWith: (a: NoInfer<A>) => E2
680
683
  ): <R, E>(self: STM<R, E, A>) => STM<R, E2 | E, B>
681
- <A, X extends A, Y extends A, E2>(
682
- predicate: Predicate<X>,
683
- orFailWith: (a: Y) => E2
684
+ <A, E2>(
685
+ predicate: Predicate<NoInfer<A>>,
686
+ orFailWith: (a: NoInfer<A>) => E2
684
687
  ): <R, E>(self: STM<R, E, A>) => STM<R, E2 | E, A>
685
- <R, E, A, B extends A, X extends A, E2>(
688
+ <R, E, A, B extends A, E2>(
686
689
  self: STM<R, E, A>,
687
690
  refinement: Refinement<A, B>,
688
- orFailWith: (a: X) => E2
691
+ orFailWith: (a: A) => E2
689
692
  ): STM<R, E | E2, B>
690
- <R, E, A, X extends A, Y extends A, E2>(
691
- self: STM<R, E, A>,
692
- predicate: Predicate<X>,
693
- orFailWith: (a: Y) => E2
694
- ): STM<R, E | E2, A>
693
+ <R, E, A, E2>(self: STM<R, E, A>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM<R, E | E2, A>
695
694
  } = stm.filterOrFail
696
695
 
697
696
  /**
@@ -1723,7 +1722,9 @@ export const retry: STM<never, never, never> = core.retry
1723
1722
  * @category mutations
1724
1723
  */
1725
1724
  export const retryUntil: {
1725
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM<R, E, A>) => STM<R, E, B>
1726
1726
  <A>(predicate: Predicate<A>): <R, E>(self: STM<R, E, A>) => STM<R, E, A>
1727
+ <R, E, A, B extends A>(self: STM<R, E, A>, refinement: Refinement<A, B>): STM<R, E, B>
1727
1728
  <R, E, A>(self: STM<R, E, A>, predicate: Predicate<A>): STM<R, E, A>
1728
1729
  } = stm.retryUntil
1729
1730
 
@@ -1817,8 +1818,8 @@ export const sync: <A>(evaluate: () => A) => STM<never, never, A> = core.sync
1817
1818
  * @category sequencing
1818
1819
  */
1819
1820
  export const tap: {
1820
- <A, X extends A, R2, E2, _>(f: (a: X) => STM<R2, E2, _>): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A>
1821
- <R, E, A, X extends A, R2, E2, _>(self: STM<R, E, A>, f: (a: X) => STM<R2, E2, _>): STM<R | R2, E | E2, A>
1821
+ <A, R2, E2, _>(f: (a: A) => STM<R2, E2, _>): <R, E>(self: STM<R, E, A>) => STM<R2 | R, E2 | E, A>
1822
+ <R, E, A, R2, E2, _>(self: STM<R, E, A>, f: (a: A) => STM<R2, E2, _>): STM<R | R2, E | E2, A>
1822
1823
  } = stm.tap
1823
1824
 
1824
1825
  /**
@@ -1850,8 +1851,8 @@ export const tapBoth: {
1850
1851
  * @category sequencing
1851
1852
  */
1852
1853
  export const tapError: {
1853
- <E, X extends E, R2, E2, _>(f: (error: X) => STM<R2, E2, _>): <R, A>(self: STM<R, E, A>) => STM<R2 | R, E | E2, A>
1854
- <R, A, E, X extends E, R2, E2, _>(self: STM<R, E, A>, f: (error: X) => STM<R2, E2, _>): STM<R | R2, E | E2, A>
1854
+ <E, R2, E2, _>(f: (error: NoInfer<E>) => STM<R2, E2, _>): <R, A>(self: STM<R, E, A>) => STM<R2 | R, E | E2, A>
1855
+ <R, A, E, R2, E2, _>(self: STM<R, E, A>, f: (error: E) => STM<R2, E2, _>): STM<R | R2, E | E2, A>
1855
1856
  } = stm.tapError
1856
1857
 
1857
1858
  const try_: {
package/src/SortedSet.ts CHANGED
@@ -13,7 +13,7 @@ import { pipeArguments } from "./Pipeable.js"
13
13
  import type { Predicate } from "./Predicate.js"
14
14
  import { hasProperty } from "./Predicate.js"
15
15
  import * as RBT from "./RedBlackTree.js"
16
- import type * as Types from "./Types.js"
16
+ import type { Invariant, NoInfer } from "./Types.js"
17
17
 
18
18
  const TypeId: unique symbol = Symbol.for("effect/SortedSet")
19
19
 
@@ -29,7 +29,7 @@ export type TypeId = typeof TypeId
29
29
  */
30
30
  export interface SortedSet<in out A> extends Iterable<A>, Equal.Equal, Pipeable, Inspectable {
31
31
  readonly [TypeId]: {
32
- readonly _A: Types.Invariant<A>
32
+ readonly _A: Invariant<A>
33
33
  }
34
34
  /** @internal */
35
35
  readonly keyTree: RBT.RedBlackTree<A, boolean>
@@ -279,9 +279,9 @@ export const map: {
279
279
  * @category filtering
280
280
  */
281
281
  export const partition: {
282
- <B extends A, A = B>(
283
- predicate: (a: A) => boolean
284
- ): (self: SortedSet<B>) => [excluded: SortedSet<B>, satisfying: SortedSet<B>]
282
+ <A>(
283
+ predicate: (a: NoInfer<A>) => boolean
284
+ ): (self: SortedSet<A>) => [excluded: SortedSet<A>, satisfying: SortedSet<A>]
285
285
  <A>(self: SortedSet<A>, predicate: (a: A) => boolean): [excluded: SortedSet<A>, satisfying: SortedSet<A>]
286
286
  } = Dual.dual(
287
287
  2,