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.
- package/dist/Effect.d.ts +19 -63
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +24 -65
- package/dist/Effect.js.map +1 -1
- package/dist/Layer.d.ts +25 -0
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +25 -0
- package/dist/Layer.js.map +1 -1
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +3 -0
- package/dist/MutableList.js.map +1 -1
- package/dist/Number.d.ts.map +1 -1
- package/dist/Number.js +12 -3
- package/dist/Number.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +16 -14
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/TxChunk.d.ts +39 -39
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +3 -3
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +9 -9
- package/dist/TxDeferred.d.ts.map +1 -1
- package/dist/TxDeferred.js +2 -2
- package/dist/TxDeferred.js.map +1 -1
- package/dist/TxHashMap.d.ts +59 -59
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +8 -8
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +35 -35
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +7 -7
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +23 -23
- package/dist/TxPriorityQueue.d.ts.map +1 -1
- package/dist/TxPriorityQueue.js +4 -4
- package/dist/TxPriorityQueue.js.map +1 -1
- package/dist/TxPubSub.d.ts +14 -14
- package/dist/TxPubSub.d.ts.map +1 -1
- package/dist/TxPubSub.js +12 -12
- package/dist/TxPubSub.js.map +1 -1
- package/dist/TxQueue.d.ts +33 -33
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +29 -44
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +10 -33
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +14 -37
- package/dist/TxReentrantLock.js.map +1 -1
- package/dist/TxRef.d.ts +36 -42
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +16 -25
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +8 -8
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +10 -10
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +14 -14
- package/dist/TxSubscriptionRef.d.ts.map +1 -1
- package/dist/TxSubscriptionRef.js +5 -5
- package/dist/TxSubscriptionRef.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +5 -2
- package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +5 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js +5 -2
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +12 -1
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +1 -0
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +55 -26
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +2 -2
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +13 -8
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +1 -4
- package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +5 -5
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +1 -1
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +1 -1
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +6 -0
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +9 -0
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +1 -1
- package/src/Effect.ts +24 -75
- package/src/Layer.ts +27 -0
- package/src/MutableList.ts +3 -0
- package/src/Number.ts +13 -3
- package/src/SchemaRepresentation.ts +8 -6
- package/src/TxChunk.ts +53 -62
- package/src/TxDeferred.ts +14 -17
- package/src/TxHashMap.ts +91 -101
- package/src/TxHashSet.ts +68 -70
- package/src/TxPriorityQueue.ts +34 -38
- package/src/TxPubSub.ts +30 -32
- package/src/TxQueue.ts +70 -84
- package/src/TxReentrantLock.ts +30 -54
- package/src/TxRef.ts +53 -65
- package/src/TxSemaphore.ts +23 -24
- package/src/TxSubscriptionRef.ts +25 -27
- package/src/index.ts +3 -3
- package/src/unstable/ai/AnthropicStructuredOutput.ts +3 -3
- package/src/unstable/ai/OpenAiStructuredOutput.ts +5 -2
- package/src/unstable/ai/internal/codec-transformer.ts +3 -2
- package/src/unstable/cli/internal/command.ts +16 -1
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +77 -38
- package/src/unstable/cluster/Entity.ts +18 -7
- package/src/unstable/cluster/SqlMessageStorage.ts +0 -4
- package/src/unstable/rpc/RpcSerialization.ts +5 -5
- package/src/unstable/socket/Socket.ts +1 -1
- 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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1715
|
-
Effect.
|
|
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
|
|
1744
|
-
Effect.
|
|
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
|
|
1772
|
-
Effect.
|
|
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
|
|
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
|
|
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.
|
|
1833
|
-
})
|
|
1818
|
+
return yield* Effect.txRetry
|
|
1819
|
+
}).pipe(Effect.tx)
|