effect 4.0.0-beta.41 → 4.0.0-beta.43

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 (125) hide show
  1. package/dist/Effect.d.ts +19 -63
  2. package/dist/Effect.d.ts.map +1 -1
  3. package/dist/Effect.js +24 -65
  4. package/dist/Effect.js.map +1 -1
  5. package/dist/Layer.d.ts +25 -0
  6. package/dist/Layer.d.ts.map +1 -1
  7. package/dist/Layer.js +25 -0
  8. package/dist/Layer.js.map +1 -1
  9. package/dist/MutableList.d.ts.map +1 -1
  10. package/dist/MutableList.js +3 -0
  11. package/dist/MutableList.js.map +1 -1
  12. package/dist/Number.d.ts.map +1 -1
  13. package/dist/Number.js +12 -3
  14. package/dist/Number.js.map +1 -1
  15. package/dist/SchemaRepresentation.d.ts.map +1 -1
  16. package/dist/SchemaRepresentation.js +16 -14
  17. package/dist/SchemaRepresentation.js.map +1 -1
  18. package/dist/TxChunk.d.ts +39 -39
  19. package/dist/TxChunk.d.ts.map +1 -1
  20. package/dist/TxChunk.js +3 -3
  21. package/dist/TxChunk.js.map +1 -1
  22. package/dist/TxDeferred.d.ts +9 -9
  23. package/dist/TxDeferred.d.ts.map +1 -1
  24. package/dist/TxDeferred.js +2 -2
  25. package/dist/TxDeferred.js.map +1 -1
  26. package/dist/TxHashMap.d.ts +59 -59
  27. package/dist/TxHashMap.d.ts.map +1 -1
  28. package/dist/TxHashMap.js +8 -8
  29. package/dist/TxHashMap.js.map +1 -1
  30. package/dist/TxHashSet.d.ts +35 -35
  31. package/dist/TxHashSet.d.ts.map +1 -1
  32. package/dist/TxHashSet.js +7 -7
  33. package/dist/TxHashSet.js.map +1 -1
  34. package/dist/TxPriorityQueue.d.ts +23 -23
  35. package/dist/TxPriorityQueue.d.ts.map +1 -1
  36. package/dist/TxPriorityQueue.js +4 -4
  37. package/dist/TxPriorityQueue.js.map +1 -1
  38. package/dist/TxPubSub.d.ts +14 -14
  39. package/dist/TxPubSub.d.ts.map +1 -1
  40. package/dist/TxPubSub.js +12 -12
  41. package/dist/TxPubSub.js.map +1 -1
  42. package/dist/TxQueue.d.ts +33 -33
  43. package/dist/TxQueue.d.ts.map +1 -1
  44. package/dist/TxQueue.js +29 -44
  45. package/dist/TxQueue.js.map +1 -1
  46. package/dist/TxReentrantLock.d.ts +10 -33
  47. package/dist/TxReentrantLock.d.ts.map +1 -1
  48. package/dist/TxReentrantLock.js +14 -37
  49. package/dist/TxReentrantLock.js.map +1 -1
  50. package/dist/TxRef.d.ts +36 -42
  51. package/dist/TxRef.d.ts.map +1 -1
  52. package/dist/TxRef.js +16 -25
  53. package/dist/TxRef.js.map +1 -1
  54. package/dist/TxSemaphore.d.ts +8 -8
  55. package/dist/TxSemaphore.d.ts.map +1 -1
  56. package/dist/TxSemaphore.js +10 -10
  57. package/dist/TxSemaphore.js.map +1 -1
  58. package/dist/TxSubscriptionRef.d.ts +14 -14
  59. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  60. package/dist/TxSubscriptionRef.js +5 -5
  61. package/dist/TxSubscriptionRef.js.map +1 -1
  62. package/dist/index.d.ts +3 -3
  63. package/dist/index.js +3 -3
  64. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
  65. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  66. package/dist/unstable/ai/AnthropicStructuredOutput.js +5 -2
  67. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  68. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
  69. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  70. package/dist/unstable/ai/OpenAiStructuredOutput.js +5 -1
  71. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  72. package/dist/unstable/ai/internal/codec-transformer.js +5 -2
  73. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  74. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  75. package/dist/unstable/cli/internal/command.js +12 -1
  76. package/dist/unstable/cli/internal/command.js.map +1 -1
  77. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +1 -0
  78. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  79. package/dist/unstable/cluster/ClusterWorkflowEngine.js +55 -26
  80. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  81. package/dist/unstable/cluster/Entity.d.ts +2 -2
  82. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  83. package/dist/unstable/cluster/Entity.js +13 -8
  84. package/dist/unstable/cluster/Entity.js.map +1 -1
  85. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  86. package/dist/unstable/cluster/SqlMessageStorage.js +1 -4
  87. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  88. package/dist/unstable/rpc/RpcSerialization.js +5 -5
  89. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  90. package/dist/unstable/socket/Socket.d.ts +1 -1
  91. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  92. package/dist/unstable/socket/Socket.js +1 -1
  93. package/dist/unstable/socket/Socket.js.map +1 -1
  94. package/dist/unstable/workflow/WorkflowEngine.d.ts +6 -0
  95. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  96. package/dist/unstable/workflow/WorkflowEngine.js +9 -0
  97. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  98. package/package.json +1 -1
  99. package/src/Effect.ts +24 -75
  100. package/src/Layer.ts +27 -0
  101. package/src/MutableList.ts +3 -0
  102. package/src/Number.ts +13 -3
  103. package/src/SchemaRepresentation.ts +8 -6
  104. package/src/TxChunk.ts +53 -62
  105. package/src/TxDeferred.ts +14 -17
  106. package/src/TxHashMap.ts +91 -101
  107. package/src/TxHashSet.ts +68 -70
  108. package/src/TxPriorityQueue.ts +34 -38
  109. package/src/TxPubSub.ts +30 -32
  110. package/src/TxQueue.ts +70 -84
  111. package/src/TxReentrantLock.ts +30 -54
  112. package/src/TxRef.ts +53 -65
  113. package/src/TxSemaphore.ts +23 -24
  114. package/src/TxSubscriptionRef.ts +25 -27
  115. package/src/index.ts +3 -3
  116. package/src/unstable/ai/AnthropicStructuredOutput.ts +3 -3
  117. package/src/unstable/ai/OpenAiStructuredOutput.ts +5 -2
  118. package/src/unstable/ai/internal/codec-transformer.ts +3 -2
  119. package/src/unstable/cli/internal/command.ts +16 -1
  120. package/src/unstable/cluster/ClusterWorkflowEngine.ts +77 -38
  121. package/src/unstable/cluster/Entity.ts +18 -7
  122. package/src/unstable/cluster/SqlMessageStorage.ts +0 -4
  123. package/src/unstable/rpc/RpcSerialization.ts +5 -5
  124. package/src/unstable/socket/Socket.ts +1 -1
  125. package/src/unstable/workflow/WorkflowEngine.ts +22 -0
package/src/TxQueue.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Accessed values are tracked by the transaction in order to detect conflicts and to track changes.
7
7
  * A transaction will retry whenever a conflict is detected or whenever the transaction explicitly
8
- * calls `Effect.retryTransaction` and any of the accessed TxQueue values change.
8
+ * calls `Effect.txRetry` and any of the accessed TxQueue values change.
9
9
  *
10
10
  * @since 4.0.0
11
11
  */
@@ -405,7 +405,7 @@ const TxQueueProto = {
405
405
  */
406
406
  export const bounded = <A = never, E = never>(
407
407
  capacity: number
408
- ): Effect.Effect<TxQueue<A, E>, never, Effect.Transaction> =>
408
+ ): Effect.Effect<TxQueue<A, E>> =>
409
409
  Effect.gen(function*() {
410
410
  const items = yield* TxChunk.empty<A>()
411
411
  const stateRef = yield* TxRef.make<State<A, E>>({ _tag: "Open" })
@@ -416,7 +416,7 @@ export const bounded = <A = never, E = never>(
416
416
  txQueue.items = items
417
417
  txQueue.stateRef = stateRef
418
418
  return txQueue
419
- })
419
+ }).pipe(Effect.tx)
420
420
 
421
421
  /**
422
422
  * Creates a new unbounded `TxQueue` with unlimited capacity.
@@ -447,7 +447,7 @@ export const bounded = <A = never, E = never>(
447
447
  * @since 4.0.0
448
448
  * @category constructors
449
449
  */
450
- export const unbounded = <A = never, E = never>(): Effect.Effect<TxQueue<A, E>, never, Effect.Transaction> =>
450
+ export const unbounded = <A = never, E = never>(): Effect.Effect<TxQueue<A, E>> =>
451
451
  Effect.gen(function*() {
452
452
  const items = yield* TxChunk.empty<A>()
453
453
  const stateRef = yield* TxRef.make<State<A, E>>({ _tag: "Open" })
@@ -458,7 +458,7 @@ export const unbounded = <A = never, E = never>(): Effect.Effect<TxQueue<A, E>,
458
458
  txQueue.items = items
459
459
  txQueue.stateRef = stateRef
460
460
  return txQueue
461
- })
461
+ }).pipe(Effect.tx)
462
462
 
463
463
  /**
464
464
  * Creates a new dropping `TxQueue` with the specified capacity that drops new items when full.
@@ -489,7 +489,7 @@ export const unbounded = <A = never, E = never>(): Effect.Effect<TxQueue<A, E>,
489
489
  */
490
490
  export const dropping = <A = never, E = never>(
491
491
  capacity: number
492
- ): Effect.Effect<TxQueue<A, E>, never, Effect.Transaction> =>
492
+ ): Effect.Effect<TxQueue<A, E>> =>
493
493
  Effect.gen(function*() {
494
494
  const items = yield* TxChunk.empty<A>()
495
495
  const stateRef = yield* TxRef.make<State<A, E>>({ _tag: "Open" })
@@ -500,7 +500,7 @@ export const dropping = <A = never, E = never>(
500
500
  txQueue.items = items
501
501
  txQueue.stateRef = stateRef
502
502
  return txQueue
503
- })
503
+ }).pipe(Effect.tx)
504
504
 
505
505
  /**
506
506
  * Creates a new sliding `TxQueue` with the specified capacity that evicts old items when full.
@@ -533,7 +533,7 @@ export const dropping = <A = never, E = never>(
533
533
  */
534
534
  export const sliding = <A = never, E = never>(
535
535
  capacity: number
536
- ): Effect.Effect<TxQueue<A, E>, never, Effect.Transaction> =>
536
+ ): Effect.Effect<TxQueue<A, E>> =>
537
537
  Effect.gen(function*() {
538
538
  const items = yield* TxChunk.empty<A>()
539
539
  const stateRef = yield* TxRef.make<State<A, E>>({ _tag: "Open" })
@@ -544,7 +544,7 @@ export const sliding = <A = never, E = never>(
544
544
  txQueue.items = items
545
545
  txQueue.stateRef = stateRef
546
546
  return txQueue
547
- })
547
+ }).pipe(Effect.tx)
548
548
 
549
549
  // =============================================================================
550
550
  // Core Queue Operations
@@ -599,7 +599,7 @@ export const offer: {
599
599
  * @since 4.0.0
600
600
  * @category combinators
601
601
  */
602
- <A, E>(value: A): (self: TxEnqueue<A, E>) => Effect.Effect<boolean, never, Effect.Transaction>
602
+ <A, E>(value: A): (self: TxEnqueue<A, E>) => Effect.Effect<boolean>
603
603
  // =============================================================================
604
604
  // Core Queue Operations
605
605
  // =============================================================================
@@ -626,10 +626,10 @@ export const offer: {
626
626
  * @since 4.0.0
627
627
  * @category combinators
628
628
  */
629
- <A, E>(self: TxEnqueue<A, E>, value: A): Effect.Effect<boolean, never, Effect.Transaction>
629
+ <A, E>(self: TxEnqueue<A, E>, value: A): Effect.Effect<boolean>
630
630
  } = dual(
631
631
  2,
632
- <A, E>(self: TxEnqueue<A, E>, value: A): Effect.Effect<boolean, never, Effect.Transaction> =>
632
+ <A, E>(self: TxEnqueue<A, E>, value: A): Effect.Effect<boolean> =>
633
633
  Effect.gen(function*() {
634
634
  const state = yield* TxRef.get(self.stateRef)
635
635
  if (state._tag === "Done" || state._tag === "Closing") {
@@ -662,8 +662,8 @@ export const offer: {
662
662
  }
663
663
 
664
664
  // bounded strategy - block until space is available
665
- return yield* Effect.retryTransaction
666
- })
665
+ return yield* Effect.txRetry
666
+ }).pipe(Effect.tx)
667
667
  )
668
668
 
669
669
  /**
@@ -717,7 +717,7 @@ export const offerAll: {
717
717
  * @since 4.0.0
718
718
  * @category combinators
719
719
  */
720
- <A, E>(values: Iterable<A>): (self: TxEnqueue<A, E>) => Effect.Effect<Array<A>, never, Effect.Transaction>
720
+ <A, E>(values: Iterable<A>): (self: TxEnqueue<A, E>) => Effect.Effect<Array<A>>
721
721
  /**
722
722
  * Offers multiple items to the queue.
723
723
  *
@@ -743,10 +743,10 @@ export const offerAll: {
743
743
  * @since 4.0.0
744
744
  * @category combinators
745
745
  */
746
- <A, E>(self: TxEnqueue<A, E>, values: Iterable<A>): Effect.Effect<Array<A>, never, Effect.Transaction>
746
+ <A, E>(self: TxEnqueue<A, E>, values: Iterable<A>): Effect.Effect<Array<A>>
747
747
  } = dual(
748
748
  2,
749
- <A, E>(self: TxEnqueue<A, E>, values: Iterable<A>): Effect.Effect<Array<A>, never, Effect.Transaction> =>
749
+ <A, E>(self: TxEnqueue<A, E>, values: Iterable<A>): Effect.Effect<Array<A>> =>
750
750
  Effect.gen(function*() {
751
751
  const rejected: Array<A> = []
752
752
 
@@ -758,7 +758,7 @@ export const offerAll: {
758
758
  }
759
759
 
760
760
  return rejected
761
- })
761
+ }).pipe(Effect.tx)
762
762
  )
763
763
 
764
764
  /**
@@ -789,7 +789,7 @@ export const offerAll: {
789
789
  * @since 4.0.0
790
790
  * @category combinators
791
791
  */
792
- export const take = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E, Effect.Transaction> =>
792
+ export const take = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E> =>
793
793
  Effect.gen(function*() {
794
794
  const state = yield* TxRef.get(self.stateRef)
795
795
 
@@ -800,14 +800,14 @@ export const take = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E, Effect.Tr
800
800
 
801
801
  // If no items available, retry transaction
802
802
  if (yield* isEmpty(self)) {
803
- return yield* Effect.retryTransaction
803
+ return yield* Effect.txRetry
804
804
  }
805
805
 
806
806
  // Take item from queue
807
807
  const chunk = yield* TxChunk.get(self.items)
808
808
  const head = Chunk.head(chunk)
809
809
  if (Option.isNone(head)) {
810
- return yield* Effect.retryTransaction
810
+ return yield* Effect.txRetry
811
811
  }
812
812
 
813
813
  yield* TxChunk.drop(self.items, 1)
@@ -818,7 +818,7 @@ export const take = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E, Effect.Tr
818
818
  }
819
819
 
820
820
  return head.value
821
- })
821
+ }).pipe(Effect.tx)
822
822
 
823
823
  /**
824
824
  * Tries to take an item from the queue without blocking.
@@ -843,7 +843,7 @@ export const take = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E, Effect.Tr
843
843
  * @since 4.0.0
844
844
  * @category combinators
845
845
  */
846
- export const poll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Option.Option<A>, never, Effect.Transaction> =>
846
+ export const poll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Option.Option<A>> =>
847
847
  Effect.gen(function*() {
848
848
  const state = yield* TxRef.get(self.stateRef)
849
849
  if (state._tag === "Done") {
@@ -858,7 +858,7 @@ export const poll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Option.Option<A
858
858
 
859
859
  yield* TxChunk.drop(self.items, 1)
860
860
  return Option.some(head.value)
861
- })
861
+ }).pipe(Effect.tx)
862
862
 
863
863
  /**
864
864
  * Takes all items from the queue. Blocks if the queue is empty.
@@ -900,7 +900,7 @@ export const poll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Option.Option<A
900
900
  * @since 4.0.0
901
901
  * @category combinators
902
902
  */
903
- export const takeAll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Arr.NonEmptyArray<A>, E, Effect.Transaction> =>
903
+ export const takeAll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Arr.NonEmptyArray<A>, E> =>
904
904
  Effect.gen(function*() {
905
905
  const state = yield* TxRef.get(self.stateRef)
906
906
 
@@ -911,7 +911,7 @@ export const takeAll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Arr.NonEmpty
911
911
 
912
912
  // Wait if empty - same pattern as take()
913
913
  if (yield* isEmpty(self)) {
914
- return yield* Effect.retryTransaction
914
+ return yield* Effect.txRetry
915
915
  }
916
916
 
917
917
  const chunk = yield* TxChunk.get(self.items)
@@ -926,7 +926,7 @@ export const takeAll = <A, E>(self: TxDequeue<A, E>): Effect.Effect<Arr.NonEmpty
926
926
  }
927
927
 
928
928
  return items
929
- })
929
+ }).pipe(Effect.tx)
930
930
 
931
931
  /**
932
932
  * Takes exactly N items from the queue in a single atomic transaction.
@@ -999,7 +999,7 @@ export const takeN: {
999
999
  * @since 4.0.0
1000
1000
  * @category combinators
1001
1001
  */
1002
- (n: number): <A, E>(self: TxDequeue<A, E>) => Effect.Effect<Array<A>, E, Effect.Transaction>
1002
+ (n: number): <A, E>(self: TxDequeue<A, E>) => Effect.Effect<Array<A>, E>
1003
1003
  /**
1004
1004
  * Takes exactly N items from the queue in a single atomic transaction.
1005
1005
  *
@@ -1035,10 +1035,10 @@ export const takeN: {
1035
1035
  * @since 4.0.0
1036
1036
  * @category combinators
1037
1037
  */
1038
- <A, E>(self: TxDequeue<A, E>, n: number): Effect.Effect<Array<A>, E, Effect.Transaction>
1038
+ <A, E>(self: TxDequeue<A, E>, n: number): Effect.Effect<Array<A>, E>
1039
1039
  } = dual(
1040
1040
  2,
1041
- <A, E>(self: TxDequeue<A, E>, n: number): Effect.Effect<Array<A>, E, Effect.Transaction> =>
1041
+ <A, E>(self: TxDequeue<A, E>, n: number): Effect.Effect<Array<A>, E> =>
1042
1042
  Effect.gen(function*() {
1043
1043
  const state = yield* TxRef.get(self.stateRef)
1044
1044
 
@@ -1075,7 +1075,7 @@ export const takeN: {
1075
1075
  }
1076
1076
 
1077
1077
  // Queue is still open but not enough items - retry transaction
1078
- return yield* Effect.retryTransaction
1078
+ return yield* Effect.txRetry
1079
1079
  }
1080
1080
 
1081
1081
  // Take the determined number of items
@@ -1090,7 +1090,7 @@ export const takeN: {
1090
1090
  }
1091
1091
 
1092
1092
  return Chunk.toArray(taken)
1093
- })
1093
+ }).pipe(Effect.tx)
1094
1094
  )
1095
1095
 
1096
1096
  /**
@@ -1150,7 +1150,7 @@ export const takeBetween: {
1150
1150
  * @since 4.0.0
1151
1151
  * @category taking
1152
1152
  */
1153
- (min: number, max: number): <A, E>(self: TxDequeue<A, E>) => Effect.Effect<Array<A>, E, Effect.Transaction>
1153
+ (min: number, max: number): <A, E>(self: TxDequeue<A, E>) => Effect.Effect<Array<A>, E>
1154
1154
  /**
1155
1155
  * Takes a variable number of items between a specified minimum and maximum from the queue.
1156
1156
  * Waits for at least the minimum number of items to be available.
@@ -1179,10 +1179,10 @@ export const takeBetween: {
1179
1179
  * @since 4.0.0
1180
1180
  * @category taking
1181
1181
  */
1182
- <A, E>(self: TxDequeue<A, E>, min: number, max: number): Effect.Effect<Array<A>, E, Effect.Transaction>
1182
+ <A, E>(self: TxDequeue<A, E>, min: number, max: number): Effect.Effect<Array<A>, E>
1183
1183
  } = dual(
1184
1184
  3,
1185
- <A, E>(self: TxDequeue<A, E>, min: number, max: number): Effect.Effect<Array<A>, E, Effect.Transaction> =>
1185
+ <A, E>(self: TxDequeue<A, E>, min: number, max: number): Effect.Effect<Array<A>, E> =>
1186
1186
  Effect.gen(function*() {
1187
1187
  const state = yield* TxRef.get(self.stateRef)
1188
1188
 
@@ -1215,7 +1215,7 @@ export const takeBetween: {
1215
1215
  }
1216
1216
 
1217
1217
  // Queue is still open but not enough items - retry transaction
1218
- return yield* Effect.retryTransaction
1218
+ return yield* Effect.txRetry
1219
1219
  }
1220
1220
 
1221
1221
  // We have at least the minimum, take up to the maximum
@@ -1230,7 +1230,7 @@ export const takeBetween: {
1230
1230
  }
1231
1231
 
1232
1232
  return Chunk.toArray(taken)
1233
- })
1233
+ }).pipe(Effect.tx)
1234
1234
  )
1235
1235
 
1236
1236
  /**
@@ -1268,7 +1268,7 @@ export const takeBetween: {
1268
1268
  * @since 4.0.0
1269
1269
  * @category combinators
1270
1270
  */
1271
- export const peek = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E, Effect.Transaction> =>
1271
+ export const peek = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E> =>
1272
1272
  Effect.gen(function*() {
1273
1273
  const state = yield* TxRef.get(self.stateRef)
1274
1274
  if (state._tag === "Done") {
@@ -1278,11 +1278,11 @@ export const peek = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E, Effect.Tr
1278
1278
  const chunk = yield* TxChunk.get(self.items)
1279
1279
  const head = Chunk.head(chunk)
1280
1280
  if (Option.isNone(head)) {
1281
- return yield* Effect.retryTransaction
1281
+ return yield* Effect.txRetry
1282
1282
  }
1283
1283
 
1284
1284
  return head.value
1285
- })
1285
+ }).pipe(Effect.tx)
1286
1286
 
1287
1287
  /**
1288
1288
  * Gets the current size of the queue.
@@ -1303,7 +1303,7 @@ export const peek = <A, E>(self: TxDequeue<A, E>): Effect.Effect<A, E, Effect.Tr
1303
1303
  * @since 4.0.0
1304
1304
  * @category combinators
1305
1305
  */
1306
- export const size = (self: TxQueueState): Effect.Effect<number, never, Effect.Transaction> => TxChunk.size(self.items)
1306
+ export const size = (self: TxQueueState): Effect.Effect<number> => TxChunk.size(self.items)
1307
1307
 
1308
1308
  /**
1309
1309
  * Checks if the queue is empty.
@@ -1327,8 +1327,7 @@ export const size = (self: TxQueueState): Effect.Effect<number, never, Effect.Tr
1327
1327
  * @since 4.0.0
1328
1328
  * @category combinators
1329
1329
  */
1330
- export const isEmpty = (self: TxQueueState): Effect.Effect<boolean, never, Effect.Transaction> =>
1331
- TxChunk.isEmpty(self.items)
1330
+ export const isEmpty = (self: TxQueueState): Effect.Effect<boolean> => TxChunk.isEmpty(self.items)
1332
1331
 
1333
1332
  /**
1334
1333
  * Checks if the queue is at capacity.
@@ -1352,14 +1351,10 @@ export const isEmpty = (self: TxQueueState): Effect.Effect<boolean, never, Effec
1352
1351
  * @since 4.0.0
1353
1352
  * @category combinators
1354
1353
  */
1355
- export const isFull = (self: TxQueueState): Effect.Effect<boolean, never, Effect.Transaction> =>
1356
- Effect.gen(function*() {
1357
- if (self.capacity === Number.POSITIVE_INFINITY) {
1358
- return false
1359
- }
1360
- const currentSize = yield* size(self)
1361
- return currentSize >= self.capacity
1362
- })
1354
+ export const isFull = (self: TxQueueState): Effect.Effect<boolean> =>
1355
+ self.capacity === Number.POSITIVE_INFINITY
1356
+ ? Effect.succeed(false)
1357
+ : Effect.map(size(self), (currentSize) => currentSize >= self.capacity)
1363
1358
 
1364
1359
  /**
1365
1360
  * Interrupts the queue, transitioning it to a closing state.
@@ -1384,7 +1379,7 @@ export const isFull = (self: TxQueueState): Effect.Effect<boolean, never, Effect
1384
1379
  * @since 4.0.0
1385
1380
  * @category combinators
1386
1381
  */
1387
- export const interrupt = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<boolean, never, Effect.Transaction> =>
1382
+ export const interrupt = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<boolean> =>
1388
1383
  Effect.withFiber((fiber) => failCause(self, Cause.interrupt(fiber.id)))
1389
1384
 
1390
1385
  /**
@@ -1432,7 +1427,7 @@ export const fail: {
1432
1427
  * @since 4.0.0
1433
1428
  * @category combinators
1434
1429
  */
1435
- <E>(error: E): <A>(self: TxEnqueue<A, E>) => Effect.Effect<boolean, never, Effect.Transaction>
1430
+ <E>(error: E): <A>(self: TxEnqueue<A, E>) => Effect.Effect<boolean>
1436
1431
  /**
1437
1432
  * Fails the queue with the specified error.
1438
1433
  *
@@ -1455,10 +1450,10 @@ export const fail: {
1455
1450
  * @since 4.0.0
1456
1451
  * @category combinators
1457
1452
  */
1458
- <A, E>(self: TxEnqueue<A, E>, error: E): Effect.Effect<boolean, never, Effect.Transaction>
1453
+ <A, E>(self: TxEnqueue<A, E>, error: E): Effect.Effect<boolean>
1459
1454
  } = dual(
1460
1455
  2,
1461
- <A, E>(self: TxEnqueue<A, E>, error: E): Effect.Effect<boolean, never, Effect.Transaction> =>
1456
+ <A, E>(self: TxEnqueue<A, E>, error: E): Effect.Effect<boolean> =>
1462
1457
  Effect.gen(function*() {
1463
1458
  const state = yield* TxRef.get(self.stateRef)
1464
1459
 
@@ -1471,7 +1466,7 @@ export const fail: {
1471
1466
  yield* TxRef.set(self.stateRef, { _tag: "Done", cause: Cause.fail(error) })
1472
1467
 
1473
1468
  return true
1474
- })
1469
+ }).pipe(Effect.tx)
1475
1470
  )
1476
1471
 
1477
1472
  /**
@@ -1521,7 +1516,7 @@ export const failCause: {
1521
1516
  * @since 4.0.0
1522
1517
  * @category combinators
1523
1518
  */
1524
- <E>(cause: Cause.Cause<E>): <A>(self: TxEnqueue<A, E>) => Effect.Effect<boolean, never, Effect.Transaction>
1519
+ <E>(cause: Cause.Cause<E>): <A>(self: TxEnqueue<A, E>) => Effect.Effect<boolean>
1525
1520
  /**
1526
1521
  * Completes the queue with the specified exit value.
1527
1522
  *
@@ -1545,10 +1540,10 @@ export const failCause: {
1545
1540
  * @since 4.0.0
1546
1541
  * @category combinators
1547
1542
  */
1548
- <A, E>(self: TxEnqueue<A, E>, cause: Cause.Cause<E>): Effect.Effect<boolean, never, Effect.Transaction>
1543
+ <A, E>(self: TxEnqueue<A, E>, cause: Cause.Cause<E>): Effect.Effect<boolean>
1549
1544
  } = dual(
1550
1545
  2,
1551
- <A, E>(self: TxEnqueue<A, E>, cause: Cause.Cause<E>): Effect.Effect<boolean, never, Effect.Transaction> =>
1546
+ <A, E>(self: TxEnqueue<A, E>, cause: Cause.Cause<E>): Effect.Effect<boolean> =>
1552
1547
  Effect.gen(function*() {
1553
1548
  const state = yield* TxRef.get(self.stateRef)
1554
1549
 
@@ -1565,7 +1560,7 @@ export const failCause: {
1565
1560
  }
1566
1561
 
1567
1562
  return true
1568
- })
1563
+ }).pipe(Effect.tx)
1569
1564
  )
1570
1565
 
1571
1566
  /**
@@ -1602,7 +1597,7 @@ export const failCause: {
1602
1597
  * @since 4.0.0
1603
1598
  * @category combinators
1604
1599
  */
1605
- export const end = <A, E>(self: TxEnqueue<A, E | Cause.Done>): Effect.Effect<boolean, never, Effect.Transaction> =>
1600
+ export const end = <A, E>(self: TxEnqueue<A, E | Cause.Done>): Effect.Effect<boolean> =>
1606
1601
  failCause(self, Cause.fail(Cause.Done()))
1607
1602
 
1608
1603
  /**
@@ -1634,7 +1629,7 @@ export const end = <A, E>(self: TxEnqueue<A, E | Cause.Done>): Effect.Effect<boo
1634
1629
  * @since 4.0.0
1635
1630
  * @category combinators
1636
1631
  */
1637
- export const clear = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<Array<A>, ExcludeDone<E>, Effect.Transaction> =>
1632
+ export const clear = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<Array<A>, ExcludeDone<E>> =>
1638
1633
  Effect.gen(function*() {
1639
1634
  const state = yield* TxRef.get(self.stateRef)
1640
1635
  if (state._tag === "Done") {
@@ -1647,7 +1642,7 @@ export const clear = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<Array<A>, Excl
1647
1642
  const chunk = yield* TxChunk.get(self.items)
1648
1643
  yield* TxChunk.set(self.items, Chunk.empty())
1649
1644
  return Chunk.toArray(chunk)
1650
- })
1645
+ }).pipe(Effect.tx)
1651
1646
 
1652
1647
  /**
1653
1648
  * Shuts down the queue immediately by clearing all items and interrupting it (legacy compatibility).
@@ -1683,11 +1678,11 @@ export const clear = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<Array<A>, Excl
1683
1678
  * @since 4.0.0
1684
1679
  * @category combinators
1685
1680
  */
1686
- export const shutdown = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<boolean, never, Effect.Transaction> =>
1681
+ export const shutdown = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<boolean> =>
1687
1682
  Effect.gen(function*() {
1688
1683
  yield* Effect.ignore(clear(self))
1689
1684
  return yield* interrupt(self)
1690
- })
1685
+ }).pipe(Effect.tx)
1691
1686
 
1692
1687
  /**
1693
1688
  * Checks if the queue is in the open state.
@@ -1711,11 +1706,8 @@ export const shutdown = <A, E>(self: TxEnqueue<A, E>): Effect.Effect<boolean, ne
1711
1706
  * @since 4.0.0
1712
1707
  * @category combinators
1713
1708
  */
1714
- export const isOpen = (self: TxQueueState): Effect.Effect<boolean, never, Effect.Transaction> =>
1715
- Effect.gen(function*() {
1716
- const state = yield* TxRef.get(self.stateRef)
1717
- return state._tag === "Open"
1718
- })
1709
+ export const isOpen = (self: TxQueueState): Effect.Effect<boolean> =>
1710
+ Effect.map(TxRef.get(self.stateRef), (state) => state._tag === "Open")
1719
1711
 
1720
1712
  /**
1721
1713
  * Checks if the queue is in the closing state.
@@ -1740,11 +1732,8 @@ export const isOpen = (self: TxQueueState): Effect.Effect<boolean, never, Effect
1740
1732
  * @since 4.0.0
1741
1733
  * @category combinators
1742
1734
  */
1743
- export const isClosing = (self: TxQueueState): Effect.Effect<boolean, never, Effect.Transaction> =>
1744
- Effect.gen(function*() {
1745
- const state = yield* TxRef.get(self.stateRef)
1746
- return state._tag === "Closing"
1747
- })
1735
+ export const isClosing = (self: TxQueueState): Effect.Effect<boolean> =>
1736
+ Effect.map(TxRef.get(self.stateRef), (state) => state._tag === "Closing")
1748
1737
 
1749
1738
  /**
1750
1739
  * Checks if the queue is done (completed or failed).
@@ -1768,11 +1757,8 @@ export const isClosing = (self: TxQueueState): Effect.Effect<boolean, never, Eff
1768
1757
  * @since 4.0.0
1769
1758
  * @category combinators
1770
1759
  */
1771
- export const isDone = (self: TxQueueState): Effect.Effect<boolean, never, Effect.Transaction> =>
1772
- Effect.gen(function*() {
1773
- const state = yield* TxRef.get(self.stateRef)
1774
- return state._tag === "Done"
1775
- })
1760
+ export const isDone = (self: TxQueueState): Effect.Effect<boolean> =>
1761
+ Effect.map(TxRef.get(self.stateRef), (state) => state._tag === "Done")
1776
1762
 
1777
1763
  /**
1778
1764
  * Checks if the queue is shutdown (legacy compatibility).
@@ -1796,7 +1782,7 @@ export const isDone = (self: TxQueueState): Effect.Effect<boolean, never, Effect
1796
1782
  * @since 4.0.0
1797
1783
  * @category combinators
1798
1784
  */
1799
- export const isShutdown = (self: TxQueueState): Effect.Effect<boolean, never, Effect.Transaction> => isDone(self)
1785
+ export const isShutdown = (self: TxQueueState): Effect.Effect<boolean> => isDone(self)
1800
1786
 
1801
1787
  /**
1802
1788
  * Waits for the queue to complete (either successfully or with failure).
@@ -1820,7 +1806,7 @@ export const isShutdown = (self: TxQueueState): Effect.Effect<boolean, never, Ef
1820
1806
  * @since 4.0.0
1821
1807
  * @category combinators
1822
1808
  */
1823
- export const awaitCompletion = (self: TxQueueState): Effect.Effect<void, never, Effect.Transaction> =>
1809
+ export const awaitCompletion = (self: TxQueueState): Effect.Effect<void> =>
1824
1810
  Effect.gen(function*() {
1825
1811
  const state = yield* TxRef.get(self.stateRef)
1826
1812
 
@@ -1829,5 +1815,5 @@ export const awaitCompletion = (self: TxQueueState): Effect.Effect<void, never,
1829
1815
  }
1830
1816
 
1831
1817
  // Not done yet, retry transaction
1832
- return yield* Effect.retryTransaction
1833
- })
1818
+ return yield* Effect.txRetry
1819
+ }).pipe(Effect.tx)