effect 2.3.8 → 2.4.0
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/cjs/BigInt.js +14 -1
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Effect.js +16 -61
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +35 -6
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/Equal.js +1 -1
- package/dist/cjs/Equal.js.map +1 -1
- package/dist/cjs/Exit.js +1 -1
- package/dist/cjs/Number.js +25 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/ReadonlyArray.js +2 -2
- package/dist/cjs/ReadonlyArray.js.map +1 -1
- package/dist/cjs/ReadonlyRecord.js +71 -76
- package/dist/cjs/ReadonlyRecord.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js +3 -23
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/Struct.js +3 -1
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +5 -5
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/channelState.js +5 -5
- package/dist/cjs/internal/channel/channelState.js.map +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +3 -4
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +6 -23
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +11 -27
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +4 -5
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/either.js +3 -3
- package/dist/cjs/internal/either.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/layer.js +0 -2
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/runtime.js +12 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js +4 -4
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/sink.js +0 -2
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js +1 -0
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stream.js +51 -64
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/BigInt.d.ts +7 -0
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/Brand.d.ts +1 -1
- package/dist/dts/Brand.d.ts.map +1 -1
- package/dist/dts/Cause.d.ts +1 -1
- package/dist/dts/Cause.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +11 -11
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +3 -3
- package/dist/dts/Config.d.ts +4 -4
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +1 -1
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Differ.d.ts +2 -2
- package/dist/dts/Differ.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +52 -108
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +126 -83
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Encoding.d.ts +6 -6
- package/dist/dts/Encoding.d.ts.map +1 -1
- package/dist/dts/Equal.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +2 -2
- package/dist/dts/Fiber.d.ts +2 -2
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +12 -12
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +26 -26
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/List.d.ts +2 -2
- package/dist/dts/Logger.d.ts +4 -4
- package/dist/dts/Match.d.ts +2 -2
- package/dist/dts/Match.d.ts.map +1 -1
- package/dist/dts/MergeDecision.d.ts +1 -1
- package/dist/dts/MergeState.d.ts +5 -5
- package/dist/dts/MergeState.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +13 -13
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +4 -4
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +8 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +11 -11
- package/dist/dts/ReadonlyArray.d.ts +9 -8
- package/dist/dts/ReadonlyArray.d.ts.map +1 -1
- package/dist/dts/ReadonlyRecord.d.ts +111 -94
- package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +4 -4
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +13 -13
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Resource.d.ts +1 -1
- package/dist/dts/Resource.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +144 -139
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +171 -179
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts +1 -1
- package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +13 -13
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +355 -366
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +3 -3
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +2 -2
- package/dist/dts/TArray.d.ts +2 -2
- package/dist/dts/TDeferred.d.ts +3 -3
- package/dist/dts/TMap.d.ts +10 -10
- package/dist/dts/TSet.d.ts +4 -4
- package/dist/dts/Take.d.ts +2 -2
- package/dist/dts/TestAnnotation.d.ts +2 -2
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +7 -0
- package/dist/dts/Types.d.ts.map +1 -1
- package/dist/dts/internal/stm/stm.d.ts +2 -15
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/esm/BigInt.js +12 -0
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/Effect.js +13 -58
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +42 -5
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/Equal.js +1 -1
- package/dist/esm/Equal.js.map +1 -1
- package/dist/esm/Exit.js +1 -1
- package/dist/esm/Number.js +23 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/ReadonlyArray.js +2 -2
- package/dist/esm/ReadonlyArray.js.map +1 -1
- package/dist/esm/ReadonlyRecord.js +70 -75
- package/dist/esm/ReadonlyRecord.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js +5 -22
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/Struct.js +3 -1
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +5 -5
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/channelState.js +3 -3
- package/dist/esm/internal/channel/channelState.js.map +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +3 -4
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/core-effect.js +4 -20
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +8 -22
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +4 -5
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/either.js +3 -3
- package/dist/esm/internal/either.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/layer.js +0 -2
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/runtime.js +12 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js +4 -4
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/sink.js +0 -2
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/stm.js +1 -0
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stream.js +49 -59
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/BigInt.ts +13 -0
- package/src/Brand.ts +4 -4
- package/src/Cause.ts +1 -1
- package/src/Channel.ts +17 -17
- package/src/Chunk.ts +4 -4
- package/src/Config.ts +4 -4
- package/src/Cron.ts +2 -2
- package/src/Differ.ts +2 -2
- package/src/Effect.ts +68 -145
- package/src/Either.ts +215 -133
- package/src/Encoding.ts +3 -3
- package/src/Equal.ts +1 -1
- package/src/Exit.ts +2 -2
- package/src/Fiber.ts +2 -2
- package/src/GroupBy.ts +16 -16
- package/src/Layer.ts +32 -32
- package/src/List.ts +3 -3
- package/src/Logger.ts +4 -4
- package/src/Match.ts +3 -3
- package/src/MergeDecision.ts +1 -1
- package/src/MergeState.ts +8 -8
- package/src/Metric.ts +13 -13
- package/src/MetricPolling.ts +9 -9
- package/src/Number.ts +26 -0
- package/src/Option.ts +17 -17
- package/src/ReadonlyArray.ts +23 -15
- package/src/ReadonlyRecord.ts +421 -265
- package/src/Reloadable.ts +4 -4
- package/src/RequestResolver.ts +19 -19
- package/src/Resource.ts +3 -3
- package/src/STM.ts +166 -213
- package/src/Schedule.ts +331 -361
- package/src/SingleProducerAsyncInput.ts +1 -1
- package/src/Sink.ts +19 -19
- package/src/Stream.ts +449 -456
- package/src/Struct.ts +8 -5
- package/src/SubscriptionRef.ts +2 -2
- package/src/TArray.ts +2 -2
- package/src/TDeferred.ts +4 -4
- package/src/TMap.ts +10 -10
- package/src/TSet.ts +4 -4
- package/src/Take.ts +4 -4
- package/src/TestAnnotation.ts +5 -8
- package/src/Types.ts +11 -0
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cause.ts +2 -2
- package/src/internal/channel/channelExecutor.ts +26 -26
- package/src/internal/channel/channelState.ts +13 -13
- package/src/internal/channel/mergeDecision.ts +1 -1
- package/src/internal/channel/mergeState.ts +6 -6
- package/src/internal/channel/singleProducerAsyncInput.ts +5 -5
- package/src/internal/channel.ts +43 -43
- package/src/internal/clock.ts +3 -4
- package/src/internal/config.ts +7 -7
- package/src/internal/configError.ts +1 -1
- package/src/internal/configProvider/pathPatch.ts +2 -2
- package/src/internal/configProvider.ts +1 -1
- package/src/internal/core-effect.ts +28 -43
- package/src/internal/core.ts +15 -40
- package/src/internal/dataSource.ts +26 -26
- package/src/internal/differ/orPatch.ts +7 -7
- package/src/internal/differ.ts +2 -2
- package/src/internal/effect/circular.ts +9 -10
- package/src/internal/either.ts +25 -22
- package/src/internal/encoding/base64.ts +1 -1
- package/src/internal/encoding/base64Url.ts +1 -1
- package/src/internal/encoding/hex.ts +1 -1
- package/src/internal/fiber.ts +2 -2
- package/src/internal/fiberRuntime.ts +9 -9
- package/src/internal/groupBy.ts +40 -40
- package/src/internal/layer/circular.ts +4 -4
- package/src/internal/layer.ts +52 -54
- package/src/internal/matcher.ts +5 -5
- package/src/internal/metric/polling.ts +8 -8
- package/src/internal/metric.ts +6 -6
- package/src/internal/reloadable.ts +4 -4
- package/src/internal/resource.ts +2 -2
- package/src/internal/runtime.ts +32 -19
- package/src/internal/schedule.ts +430 -500
- package/src/internal/sink.ts +27 -29
- package/src/internal/stm/core.ts +23 -23
- package/src/internal/stm/stm.ts +158 -157
- package/src/internal/stm/tArray.ts +3 -3
- package/src/internal/stm/tDeferred.ts +5 -5
- package/src/internal/stm/tMap.ts +13 -13
- package/src/internal/stm/tSet.ts +4 -4
- package/src/internal/stream.ts +688 -723
- package/src/internal/subscriptionRef.ts +3 -3
- package/src/internal/take.ts +6 -6
- package/src/internal/version.ts +1 -1
package/src/internal/core.ts
CHANGED
|
@@ -480,22 +480,6 @@ export const async = <A, E = never, R = never>(
|
|
|
480
480
|
effect
|
|
481
481
|
})
|
|
482
482
|
|
|
483
|
-
/* @internal */
|
|
484
|
-
export const asyncEither = <A, E = never, R = never>(
|
|
485
|
-
register: (
|
|
486
|
-
resume: (effect: Effect.Effect<A, E, R>) => void
|
|
487
|
-
) => Either.Either<Effect.Effect<void, never, R>, Effect.Effect<A, E, R>>,
|
|
488
|
-
blockingOn: FiberId.FiberId = FiberId.none
|
|
489
|
-
): Effect.Effect<A, E, R> =>
|
|
490
|
-
async<A, E, R>((resume) => {
|
|
491
|
-
const result = register(resume)
|
|
492
|
-
if (Either.isRight(result)) {
|
|
493
|
-
resume(result.right)
|
|
494
|
-
} else {
|
|
495
|
-
return result.left
|
|
496
|
-
}
|
|
497
|
-
}, blockingOn)
|
|
498
|
-
|
|
499
483
|
/* @internal */
|
|
500
484
|
export const catchAllCause = dual<
|
|
501
485
|
<E, A2, E2, R2>(
|
|
@@ -530,15 +514,6 @@ export const catchAll: {
|
|
|
530
514
|
): Effect.Effect<A2 | A, E2, R2 | R> => matchEffect(self, { onFailure: f, onSuccess: succeed })
|
|
531
515
|
)
|
|
532
516
|
|
|
533
|
-
/**
|
|
534
|
-
* @macro identity
|
|
535
|
-
* @internal
|
|
536
|
-
*/
|
|
537
|
-
export const unified = <Args extends ReadonlyArray<any>, Ret extends Effect.Effect<any, any, any>>(
|
|
538
|
-
f: (...args: Args) => Ret
|
|
539
|
-
) =>
|
|
540
|
-
(...args: Args): Effect.Effect.Unify<Ret> => f(...args)
|
|
541
|
-
|
|
542
517
|
/* @internal */
|
|
543
518
|
export const catchIf: {
|
|
544
519
|
<E, EB extends E, A2, E2, R2>(
|
|
@@ -650,7 +625,7 @@ export const dieMessage = (message: string): Effect.Effect<never> =>
|
|
|
650
625
|
export const dieSync = (evaluate: LazyArg<unknown>): Effect.Effect<never> => flatMap(sync(evaluate), die)
|
|
651
626
|
|
|
652
627
|
/* @internal */
|
|
653
|
-
export const either = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Either.Either<
|
|
628
|
+
export const either = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<Either.Either<A, E>, never, R> =>
|
|
654
629
|
matchEffect(self, {
|
|
655
630
|
onFailure: (e) => succeed(Either.left(e)),
|
|
656
631
|
onSuccess: (a) => succeed(Either.right(a))
|
|
@@ -728,13 +703,13 @@ export const andThen: {
|
|
|
728
703
|
) => [X] extends [Effect.Effect<infer A1, infer E1, infer R1>] ? Effect.Effect<A1, E | E1, R | R1>
|
|
729
704
|
: [X] extends [Promise<infer A1>] ? Effect.Effect<A1, E | Cause.UnknownException, R>
|
|
730
705
|
: Effect.Effect<X, E, R>
|
|
731
|
-
<A,
|
|
706
|
+
<A, E, R, X>(
|
|
732
707
|
self: Effect.Effect<A, E, R>,
|
|
733
708
|
f: (a: NoInfer<A>) => X
|
|
734
709
|
): [X] extends [Effect.Effect<infer A1, infer E1, infer R1>] ? Effect.Effect<A1, E | E1, R | R1>
|
|
735
710
|
: [X] extends [Promise<infer A1>] ? Effect.Effect<A1, E | Cause.UnknownException, R>
|
|
736
711
|
: Effect.Effect<X, E, R>
|
|
737
|
-
<A,
|
|
712
|
+
<A, E, R, X>(
|
|
738
713
|
self: Effect.Effect<A, E, R>,
|
|
739
714
|
f: X
|
|
740
715
|
): [X] extends [Effect.Effect<infer A1, infer E1, infer R1>] ? Effect.Effect<A1, E | E1, R | R1>
|
|
@@ -941,7 +916,7 @@ export const if_ = dual<
|
|
|
941
916
|
(self: boolean | Effect.Effect<unknown, unknown, unknown>, { onFalse, onTrue }: {
|
|
942
917
|
readonly onTrue: Effect.Effect<unknown, unknown, unknown>
|
|
943
918
|
readonly onFalse: Effect.Effect<unknown, unknown, unknown>
|
|
944
|
-
}) => typeof self === "boolean" ? (self ? onTrue : onFalse) : flatMap(self,
|
|
919
|
+
}) => typeof self === "boolean" ? (self ? onTrue : onFalse) : flatMap(self, (b) => (b ? onTrue : onFalse))
|
|
945
920
|
)
|
|
946
921
|
|
|
947
922
|
/* @internal */
|
|
@@ -1051,7 +1026,7 @@ export const onError: {
|
|
|
1051
1026
|
} = dual(2, <A, E, R, X, R2>(
|
|
1052
1027
|
self: Effect.Effect<A, E, R>,
|
|
1053
1028
|
cleanup: (cause: Cause.Cause<E>) => Effect.Effect<X, never, R2>
|
|
1054
|
-
): Effect.Effect<A, E, R2 | R> => onExit(self,
|
|
1029
|
+
): Effect.Effect<A, E, R2 | R> => onExit(self, (exit) => exitIsSuccess(exit) ? unit : cleanup(exit.i0)))
|
|
1055
1030
|
|
|
1056
1031
|
/* @internal */
|
|
1057
1032
|
export const onExit: {
|
|
@@ -1142,7 +1117,7 @@ export const orDieWith: {
|
|
|
1142
1117
|
/* @internal */
|
|
1143
1118
|
export const partitionMap = <A, A1, A2>(
|
|
1144
1119
|
elements: Iterable<A>,
|
|
1145
|
-
f: (a: A) => Either.Either<
|
|
1120
|
+
f: (a: A) => Either.Either<A2, A1>
|
|
1146
1121
|
): [left: Array<A1>, right: Array<A2>] =>
|
|
1147
1122
|
ReadonlyArray.fromIterable(elements).reduceRight(
|
|
1148
1123
|
([lefts, rights], current) => {
|
|
@@ -1462,11 +1437,11 @@ export const zipWith: {
|
|
|
1462
1437
|
): Effect.Effect<B, E | E2, R | R2> => flatMap(self, (a) => map(that, (b) => f(a, b))))
|
|
1463
1438
|
|
|
1464
1439
|
/* @internal */
|
|
1465
|
-
export const never: Effect.Effect<never> =
|
|
1440
|
+
export const never: Effect.Effect<never> = async<never>(() => {
|
|
1466
1441
|
const interval = setInterval(() => {
|
|
1467
1442
|
//
|
|
1468
1443
|
}, 2 ** 31 - 1)
|
|
1469
|
-
return
|
|
1444
|
+
return sync(() => clearInterval(interval))
|
|
1470
1445
|
})
|
|
1471
1446
|
|
|
1472
1447
|
// -----------------------------------------------------------------------------
|
|
@@ -1723,7 +1698,7 @@ const requestResolverVariance = {
|
|
|
1723
1698
|
}
|
|
1724
1699
|
|
|
1725
1700
|
/** @internal */
|
|
1726
|
-
export class RequestResolverImpl<
|
|
1701
|
+
export class RequestResolverImpl<in A, out R> implements RequestResolver.RequestResolver<A, R> {
|
|
1727
1702
|
readonly [RequestResolverTypeId] = requestResolverVariance
|
|
1728
1703
|
constructor(
|
|
1729
1704
|
readonly runAll: (
|
|
@@ -1773,7 +1748,7 @@ export const resolverLocally = dual<
|
|
|
1773
1748
|
self: FiberRef.FiberRef<A>,
|
|
1774
1749
|
value: A
|
|
1775
1750
|
): RequestResolver.RequestResolver<B, R> =>
|
|
1776
|
-
new RequestResolverImpl<
|
|
1751
|
+
new RequestResolverImpl<B, R>(
|
|
1777
1752
|
(requests) =>
|
|
1778
1753
|
fiberRefLocally(
|
|
1779
1754
|
use.runAll(requests),
|
|
@@ -2538,7 +2513,7 @@ export const exitForEachEffect: {
|
|
|
2538
2513
|
})
|
|
2539
2514
|
|
|
2540
2515
|
/** @internal */
|
|
2541
|
-
export const exitFromEither = <
|
|
2516
|
+
export const exitFromEither = <R, L>(either: Either.Either<R, L>): Exit.Exit<R, L> => {
|
|
2542
2517
|
switch (either._tag) {
|
|
2543
2518
|
case "Left":
|
|
2544
2519
|
return exitFail(either.left)
|
|
@@ -2844,18 +2819,18 @@ export const deferredMakeAs = <A, E = never>(fiberId: FiberId.FiberId): Effect.E
|
|
|
2844
2819
|
|
|
2845
2820
|
/* @internal */
|
|
2846
2821
|
export const deferredAwait = <A, E>(self: Deferred.Deferred<A, E>): Effect.Effect<A, E> =>
|
|
2847
|
-
|
|
2822
|
+
async<A, E>((resume) => {
|
|
2848
2823
|
const state = MutableRef.get(self.state)
|
|
2849
2824
|
switch (state._tag) {
|
|
2850
2825
|
case DeferredOpCodes.OP_STATE_DONE: {
|
|
2851
|
-
return
|
|
2826
|
+
return resume(state.effect)
|
|
2852
2827
|
}
|
|
2853
2828
|
case DeferredOpCodes.OP_STATE_PENDING: {
|
|
2854
2829
|
pipe(
|
|
2855
2830
|
self.state,
|
|
2856
|
-
MutableRef.set(deferred.pending([
|
|
2831
|
+
MutableRef.set(deferred.pending([resume, ...state.joiners]))
|
|
2857
2832
|
)
|
|
2858
|
-
return
|
|
2833
|
+
return deferredInterruptJoiner(self, resume)
|
|
2859
2834
|
}
|
|
2860
2835
|
}
|
|
2861
2836
|
}, self.blockingOn)
|
|
@@ -13,21 +13,21 @@ import { invokeWithInterrupt, zipWithOptions } from "./fiberRuntime.js"
|
|
|
13
13
|
import { complete } from "./request.js"
|
|
14
14
|
|
|
15
15
|
/** @internal */
|
|
16
|
-
export const make = <
|
|
16
|
+
export const make = <A, R>(
|
|
17
17
|
runAll: (requests: Array<Array<A>>) => Effect.Effect<void, never, R>
|
|
18
18
|
): RequestResolver.RequestResolver<A, R> =>
|
|
19
19
|
new core.RequestResolverImpl((requests) => runAll(requests.map((_) => _.map((_) => _.request))))
|
|
20
20
|
|
|
21
21
|
/** @internal */
|
|
22
|
-
export const makeWithEntry = <
|
|
22
|
+
export const makeWithEntry = <A, R>(
|
|
23
23
|
runAll: (requests: Array<Array<Request.Entry<A>>>) => Effect.Effect<void, never, R>
|
|
24
24
|
): RequestResolver.RequestResolver<A, R> => new core.RequestResolverImpl((requests) => runAll(requests))
|
|
25
25
|
|
|
26
26
|
/** @internal */
|
|
27
|
-
export const makeBatched = <
|
|
27
|
+
export const makeBatched = <A extends Request.Request<any, any>, R>(
|
|
28
28
|
run: (requests: Array<A>) => Effect.Effect<void, never, R>
|
|
29
29
|
): RequestResolver.RequestResolver<A, R> =>
|
|
30
|
-
new core.RequestResolverImpl<
|
|
30
|
+
new core.RequestResolverImpl<A, R>(
|
|
31
31
|
(requests) =>
|
|
32
32
|
requests.length > 1 ?
|
|
33
33
|
core.forEachSequentialDiscard(requests, (block) =>
|
|
@@ -50,16 +50,16 @@ export const makeBatched = <R, A extends Request.Request<any, any>>(
|
|
|
50
50
|
|
|
51
51
|
/** @internal */
|
|
52
52
|
export const around = dual<
|
|
53
|
-
<R2,
|
|
53
|
+
<A2, R2, X, R3>(
|
|
54
54
|
before: Effect.Effect<A2, never, R2>,
|
|
55
|
-
after: (a: A2) => Effect.Effect<
|
|
56
|
-
) => <
|
|
55
|
+
after: (a: A2) => Effect.Effect<X, never, R3>
|
|
56
|
+
) => <A, R>(
|
|
57
57
|
self: RequestResolver.RequestResolver<A, R>
|
|
58
58
|
) => RequestResolver.RequestResolver<A, R | R2 | R3>,
|
|
59
|
-
<R,
|
|
59
|
+
<A, R, A2, R2, X, R3>(
|
|
60
60
|
self: RequestResolver.RequestResolver<A, R>,
|
|
61
61
|
before: Effect.Effect<A2, never, R2>,
|
|
62
|
-
after: (a: A2) => Effect.Effect<
|
|
62
|
+
after: (a: A2) => Effect.Effect<X, never, R3>
|
|
63
63
|
) => RequestResolver.RequestResolver<A, R | R2 | R3>
|
|
64
64
|
>(3, (self, before, after) =>
|
|
65
65
|
new core.RequestResolverImpl(
|
|
@@ -74,16 +74,16 @@ export const around = dual<
|
|
|
74
74
|
|
|
75
75
|
/** @internal */
|
|
76
76
|
export const aroundRequests = dual<
|
|
77
|
-
<A, R2,
|
|
77
|
+
<A, A2, R2, X, R3>(
|
|
78
78
|
before: (requests: ReadonlyArray<NoInfer<A>>) => Effect.Effect<A2, never, R2>,
|
|
79
|
-
after: (requests: ReadonlyArray<NoInfer<A>>, _: A2) => Effect.Effect<
|
|
79
|
+
after: (requests: ReadonlyArray<NoInfer<A>>, _: A2) => Effect.Effect<X, never, R3>
|
|
80
80
|
) => <R>(
|
|
81
81
|
self: RequestResolver.RequestResolver<A, R>
|
|
82
82
|
) => RequestResolver.RequestResolver<A, R | R2 | R3>,
|
|
83
|
-
<R,
|
|
83
|
+
<A, R, A2, R2, X, R3>(
|
|
84
84
|
self: RequestResolver.RequestResolver<A, R>,
|
|
85
85
|
before: (requests: ReadonlyArray<NoInfer<A>>) => Effect.Effect<A2, never, R2>,
|
|
86
|
-
after: (requests: ReadonlyArray<NoInfer<A>>, _: A2) => Effect.Effect<
|
|
86
|
+
after: (requests: ReadonlyArray<NoInfer<A>>, _: A2) => Effect.Effect<X, never, R3>
|
|
87
87
|
) => RequestResolver.RequestResolver<A, R | R2 | R3>
|
|
88
88
|
>(3, (self, before, after) =>
|
|
89
89
|
new core.RequestResolverImpl(
|
|
@@ -100,14 +100,14 @@ export const aroundRequests = dual<
|
|
|
100
100
|
|
|
101
101
|
/** @internal */
|
|
102
102
|
export const batchN = dual<
|
|
103
|
-
(n: number) => <
|
|
103
|
+
(n: number) => <A, R>(
|
|
104
104
|
self: RequestResolver.RequestResolver<A, R>
|
|
105
105
|
) => RequestResolver.RequestResolver<A, R>,
|
|
106
|
-
<
|
|
106
|
+
<A, R>(
|
|
107
107
|
self: RequestResolver.RequestResolver<A, R>,
|
|
108
108
|
n: number
|
|
109
109
|
) => RequestResolver.RequestResolver<A, R>
|
|
110
|
-
>(2, <
|
|
110
|
+
>(2, <A, R>(
|
|
111
111
|
self: RequestResolver.RequestResolver<A, R>,
|
|
112
112
|
n: number
|
|
113
113
|
): RequestResolver.RequestResolver<A, R> =>
|
|
@@ -144,7 +144,7 @@ export const mapInputContext = dual<
|
|
|
144
144
|
self: RequestResolver.RequestResolver<A, R>,
|
|
145
145
|
f: (context: Context.Context<R0>) => Context.Context<R>
|
|
146
146
|
) =>
|
|
147
|
-
new core.RequestResolverImpl<
|
|
147
|
+
new core.RequestResolverImpl<A, R0>(
|
|
148
148
|
(requests) =>
|
|
149
149
|
core.mapInputContext(
|
|
150
150
|
self.runAll(requests),
|
|
@@ -162,7 +162,7 @@ export const eitherWith = dual<
|
|
|
162
162
|
C extends Request.Request<any, any>
|
|
163
163
|
>(
|
|
164
164
|
that: RequestResolver.RequestResolver<B, R2>,
|
|
165
|
-
f: (_: Request.Entry<C>) => Either.Either<Request.Entry<
|
|
165
|
+
f: (_: Request.Entry<C>) => Either.Either<Request.Entry<B>, Request.Entry<A>>
|
|
166
166
|
) => <R>(
|
|
167
167
|
self: RequestResolver.RequestResolver<A, R>
|
|
168
168
|
) => RequestResolver.RequestResolver<C, R | R2>,
|
|
@@ -175,7 +175,7 @@ export const eitherWith = dual<
|
|
|
175
175
|
>(
|
|
176
176
|
self: RequestResolver.RequestResolver<A, R>,
|
|
177
177
|
that: RequestResolver.RequestResolver<B, R2>,
|
|
178
|
-
f: (_: Request.Entry<C>) => Either.Either<Request.Entry<
|
|
178
|
+
f: (_: Request.Entry<C>) => Either.Either<Request.Entry<B>, Request.Entry<A>>
|
|
179
179
|
) => RequestResolver.RequestResolver<C, R | R2>
|
|
180
180
|
>(3, <
|
|
181
181
|
R,
|
|
@@ -186,9 +186,9 @@ export const eitherWith = dual<
|
|
|
186
186
|
>(
|
|
187
187
|
self: RequestResolver.RequestResolver<A, R>,
|
|
188
188
|
that: RequestResolver.RequestResolver<B, R2>,
|
|
189
|
-
f: (_: Request.Entry<C>) => Either.Either<Request.Entry<
|
|
189
|
+
f: (_: Request.Entry<C>) => Either.Either<Request.Entry<B>, Request.Entry<A>>
|
|
190
190
|
) =>
|
|
191
|
-
new core.RequestResolverImpl<R | R2
|
|
191
|
+
new core.RequestResolverImpl<C, R | R2>(
|
|
192
192
|
(batch) =>
|
|
193
193
|
pipe(
|
|
194
194
|
core.forEachSequential(batch, (requests) => {
|
|
@@ -262,7 +262,7 @@ export const fromEffectTagged = <
|
|
|
262
262
|
A,
|
|
263
263
|
ReturnType<Fns[keyof Fns]> extends Effect.Effect<infer _A, infer _E, infer R> ? R : never
|
|
264
264
|
> =>
|
|
265
|
-
makeBatched<
|
|
265
|
+
makeBatched<A, any>((requests: Array<A>) => {
|
|
266
266
|
const grouped: Record<string, Array<A>> = {}
|
|
267
267
|
const tags: Array<A["_tag"]> = []
|
|
268
268
|
for (let i = 0, len = requests.length; i < len; i++) {
|
|
@@ -308,16 +308,16 @@ export const provideContext = dual<
|
|
|
308
308
|
|
|
309
309
|
/** @internal */
|
|
310
310
|
export const race = dual<
|
|
311
|
-
<
|
|
311
|
+
<A2 extends Request.Request<any, any>, R2>(
|
|
312
312
|
that: RequestResolver.RequestResolver<A2, R2>
|
|
313
|
-
) => <
|
|
313
|
+
) => <A extends Request.Request<any, any>, R>(
|
|
314
314
|
self: RequestResolver.RequestResolver<A, R>
|
|
315
315
|
) => RequestResolver.RequestResolver<A | A2, R | R2>,
|
|
316
|
-
<
|
|
316
|
+
<A extends Request.Request<any, any>, R, A2 extends Request.Request<any, any>, R2>(
|
|
317
317
|
self: RequestResolver.RequestResolver<A, R>,
|
|
318
318
|
that: RequestResolver.RequestResolver<A2, R2>
|
|
319
319
|
) => RequestResolver.RequestResolver<A | A2, R | R2>
|
|
320
|
-
>(2, <R,
|
|
320
|
+
>(2, <A, R, A2, R2>(
|
|
321
321
|
self: RequestResolver.RequestResolver<A, R>,
|
|
322
322
|
that: RequestResolver.RequestResolver<A2, R2>
|
|
323
323
|
) =>
|
|
@@ -188,8 +188,8 @@ type Instruction =
|
|
|
188
188
|
/** @internal */
|
|
189
189
|
export const diff = <Value, Value2, Patch, Patch2>(
|
|
190
190
|
options: {
|
|
191
|
-
readonly oldValue: Either<
|
|
192
|
-
readonly newValue: Either<
|
|
191
|
+
readonly oldValue: Either<Value2, Value>
|
|
192
|
+
readonly newValue: Either<Value2, Value>
|
|
193
193
|
readonly left: Differ<Value, Patch>
|
|
194
194
|
readonly right: Differ<Value2, Patch2>
|
|
195
195
|
}
|
|
@@ -243,23 +243,23 @@ export const combine = Dual.dual<
|
|
|
243
243
|
export const patch = Dual.dual<
|
|
244
244
|
<Value, Value2, Patch, Patch2>(
|
|
245
245
|
options: {
|
|
246
|
-
readonly oldValue: Either<
|
|
246
|
+
readonly oldValue: Either<Value2, Value>
|
|
247
247
|
readonly left: Differ<Value, Patch>
|
|
248
248
|
readonly right: Differ<Value2, Patch2>
|
|
249
249
|
}
|
|
250
|
-
) => (self: Differ.Or.Patch<Value, Value2, Patch, Patch2>) => Either<
|
|
250
|
+
) => (self: Differ.Or.Patch<Value, Value2, Patch, Patch2>) => Either<Value2, Value>,
|
|
251
251
|
<Value, Value2, Patch, Patch2>(
|
|
252
252
|
self: Differ.Or.Patch<Value, Value2, Patch, Patch2>,
|
|
253
253
|
options: {
|
|
254
|
-
readonly oldValue: Either<
|
|
254
|
+
readonly oldValue: Either<Value2, Value>
|
|
255
255
|
readonly left: Differ<Value, Patch>
|
|
256
256
|
readonly right: Differ<Value2, Patch2>
|
|
257
257
|
}
|
|
258
|
-
) => Either<
|
|
258
|
+
) => Either<Value2, Value>
|
|
259
259
|
>(2, <Value, Value2, Patch, Patch2>(
|
|
260
260
|
self: Differ.Or.Patch<Value, Value2, Patch, Patch2>,
|
|
261
261
|
{ left, oldValue, right }: {
|
|
262
|
-
oldValue: Either<
|
|
262
|
+
oldValue: Either<Value2, Value>
|
|
263
263
|
left: Differ<Value, Patch>
|
|
264
264
|
right: Differ<Value2, Patch2>
|
|
265
265
|
}
|
package/src/internal/differ.ts
CHANGED
|
@@ -86,11 +86,11 @@ export const hashSet = <Value>(): Differ.Differ<HashSet<Value>, Differ.Differ.Ha
|
|
|
86
86
|
export const orElseEither = Dual.dual<
|
|
87
87
|
<Value2, Patch2>(that: Differ.Differ<Value2, Patch2>) => <Value, Patch>(
|
|
88
88
|
self: Differ.Differ<Value, Patch>
|
|
89
|
-
) => Differ.Differ<Either<
|
|
89
|
+
) => Differ.Differ<Either<Value2, Value>, Differ.Differ.Or.Patch<Value, Value2, Patch, Patch2>>,
|
|
90
90
|
<Value, Patch, Value2, Patch2>(
|
|
91
91
|
self: Differ.Differ<Value, Patch>,
|
|
92
92
|
that: Differ.Differ<Value2, Patch2>
|
|
93
|
-
) => Differ.Differ<Either<
|
|
93
|
+
) => Differ.Differ<Either<Value2, Value>, Differ.Differ.Or.Patch<Value, Value2, Patch, Patch2>>
|
|
94
94
|
>(2, (self, that) =>
|
|
95
95
|
make({
|
|
96
96
|
empty: OrPatch.empty(),
|
|
@@ -2,7 +2,6 @@ import type * as Cause from "../../Cause.js"
|
|
|
2
2
|
import type * as Deferred from "../../Deferred.js"
|
|
3
3
|
import * as Duration from "../../Duration.js"
|
|
4
4
|
import type * as Effect from "../../Effect.js"
|
|
5
|
-
import * as Either from "../../Either.js"
|
|
6
5
|
import * as Equal from "../../Equal.js"
|
|
7
6
|
import type { Equivalence } from "../../Equivalence.js"
|
|
8
7
|
import * as Exit from "../../Exit.js"
|
|
@@ -45,7 +44,7 @@ class Semaphore {
|
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
readonly take = (n: number): Effect.Effect<number> =>
|
|
48
|
-
core.
|
|
47
|
+
core.async<number>((resume) => {
|
|
49
48
|
if (this.free < n) {
|
|
50
49
|
const observer = () => {
|
|
51
50
|
if (this.free < n) {
|
|
@@ -56,12 +55,12 @@ class Semaphore {
|
|
|
56
55
|
resume(core.succeed(n))
|
|
57
56
|
}
|
|
58
57
|
this.waiters.add(observer)
|
|
59
|
-
return
|
|
58
|
+
return core.sync(() => {
|
|
60
59
|
this.waiters.delete(observer)
|
|
61
|
-
})
|
|
60
|
+
})
|
|
62
61
|
}
|
|
63
62
|
this.taken += n
|
|
64
|
-
return
|
|
63
|
+
return resume(core.succeed(n))
|
|
65
64
|
})
|
|
66
65
|
|
|
67
66
|
readonly updateTaken = (f: (n: number) => number): Effect.Effect<number> =>
|
|
@@ -84,7 +83,7 @@ class Semaphore {
|
|
|
84
83
|
|
|
85
84
|
readonly releaseAll: Effect.Effect<number> = this.updateTaken((_) => 0)
|
|
86
85
|
|
|
87
|
-
readonly withPermits = (n: number) => <
|
|
86
|
+
readonly withPermits = (n: number) => <A, E, R>(self: Effect.Effect<A, E, R>) =>
|
|
88
87
|
core.uninterruptibleMask((restore) =>
|
|
89
88
|
core.flatMap(
|
|
90
89
|
restore(this.take(n)),
|
|
@@ -376,14 +375,14 @@ export const raceFirst = dual<
|
|
|
376
375
|
|
|
377
376
|
/** @internal */
|
|
378
377
|
export const scheduleForked = dual<
|
|
379
|
-
<
|
|
380
|
-
schedule: Schedule.Schedule<
|
|
378
|
+
<Out, R2>(
|
|
379
|
+
schedule: Schedule.Schedule<Out, unknown, R2>
|
|
381
380
|
) => <A, E, R>(
|
|
382
381
|
self: Effect.Effect<A, E, R>
|
|
383
382
|
) => Effect.Effect<Fiber.RuntimeFiber<Out, E>, never, R | R2 | Scope.Scope>,
|
|
384
|
-
<A, E, R,
|
|
383
|
+
<A, E, R, Out, R2>(
|
|
385
384
|
self: Effect.Effect<A, E, R>,
|
|
386
|
-
schedule: Schedule.Schedule<
|
|
385
|
+
schedule: Schedule.Schedule<Out, unknown, R2>
|
|
387
386
|
) => Effect.Effect<Fiber.RuntimeFiber<Out, E>, never, R | R2 | Scope.Scope>
|
|
388
387
|
>(2, (self, schedule) => pipe(self, _schedule.schedule_Effect(schedule), forkScoped))
|
|
389
388
|
|
package/src/internal/either.ts
CHANGED
|
@@ -20,12 +20,12 @@ export const TypeId: Either.TypeId = Symbol.for("effect/Either") as Either.TypeI
|
|
|
20
20
|
const CommonProto = {
|
|
21
21
|
...EffectPrototype,
|
|
22
22
|
[TypeId]: {
|
|
23
|
-
|
|
23
|
+
_R: (_: never) => _
|
|
24
24
|
},
|
|
25
|
-
[NodeInspectSymbol]<
|
|
25
|
+
[NodeInspectSymbol]<L, R>(this: Either.Either<R, L>) {
|
|
26
26
|
return this.toJSON()
|
|
27
27
|
},
|
|
28
|
-
toString<
|
|
28
|
+
toString<L, R>(this: Either.Left<L, R>) {
|
|
29
29
|
return format(this.toJSON())
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -33,13 +33,13 @@ const CommonProto = {
|
|
|
33
33
|
const RightProto = Object.assign(Object.create(CommonProto), {
|
|
34
34
|
_tag: "Right",
|
|
35
35
|
_op: "Right",
|
|
36
|
-
[Equal.symbol]<
|
|
36
|
+
[Equal.symbol]<L, R>(this: Either.Right<L, R>, that: unknown): boolean {
|
|
37
37
|
return isEither(that) && isRight(that) && Equal.equals(that.right, this.right)
|
|
38
38
|
},
|
|
39
|
-
[Hash.symbol]<
|
|
40
|
-
return Hash.
|
|
39
|
+
[Hash.symbol]<L, R>(this: Either.Right<L, R>) {
|
|
40
|
+
return Hash.combine(Hash.hash(this._tag))(Hash.hash(this.right))
|
|
41
41
|
},
|
|
42
|
-
toJSON<
|
|
42
|
+
toJSON<L, R>(this: Either.Right<L, R>) {
|
|
43
43
|
return {
|
|
44
44
|
_id: "Either",
|
|
45
45
|
_tag: this._tag,
|
|
@@ -51,11 +51,11 @@ const RightProto = Object.assign(Object.create(CommonProto), {
|
|
|
51
51
|
const LeftProto = Object.assign(Object.create(CommonProto), {
|
|
52
52
|
_tag: "Left",
|
|
53
53
|
_op: "Left",
|
|
54
|
-
[Equal.symbol]<
|
|
54
|
+
[Equal.symbol]<L, R>(this: Either.Left<L, R>, that: unknown): boolean {
|
|
55
55
|
return isEither(that) && isLeft(that) && Equal.equals(that.left, this.left)
|
|
56
56
|
},
|
|
57
|
-
[Hash.symbol]<
|
|
58
|
-
return Hash.
|
|
57
|
+
[Hash.symbol]<L, R>(this: Either.Left<L, R>) {
|
|
58
|
+
return Hash.combine(Hash.hash(this._tag))(Hash.hash(this.left))
|
|
59
59
|
},
|
|
60
60
|
toJSON<E, A>(this: Either.Left<E, A>) {
|
|
61
61
|
return {
|
|
@@ -70,38 +70,41 @@ const LeftProto = Object.assign(Object.create(CommonProto), {
|
|
|
70
70
|
export const isEither = (input: unknown): input is Either.Either<unknown, unknown> => hasProperty(input, TypeId)
|
|
71
71
|
|
|
72
72
|
/** @internal */
|
|
73
|
-
export const isLeft = <
|
|
73
|
+
export const isLeft = <R, L>(ma: Either.Either<R, L>): ma is Either.Left<L, R> => ma._tag === "Left"
|
|
74
74
|
|
|
75
75
|
/** @internal */
|
|
76
|
-
export const isRight = <
|
|
76
|
+
export const isRight = <R, L>(ma: Either.Either<R, L>): ma is Either.Right<L, R> => ma._tag === "Right"
|
|
77
77
|
|
|
78
78
|
/** @internal */
|
|
79
|
-
export const left = <
|
|
79
|
+
export const left = <L>(left: L): Either.Either<never, L> => {
|
|
80
80
|
const a = Object.create(LeftProto)
|
|
81
81
|
a.left = left
|
|
82
82
|
return a
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
/** @internal */
|
|
86
|
-
export const right = <
|
|
86
|
+
export const right = <R>(right: R): Either.Either<R> => {
|
|
87
87
|
const a = Object.create(RightProto)
|
|
88
88
|
a.right = right
|
|
89
89
|
return a
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/** @internal */
|
|
93
|
-
export const getLeft = <
|
|
94
|
-
self: Either.Either<
|
|
95
|
-
): Option<
|
|
93
|
+
export const getLeft = <R, L>(
|
|
94
|
+
self: Either.Either<R, L>
|
|
95
|
+
): Option<L> => (isRight(self) ? option.none : option.some(self.left))
|
|
96
96
|
|
|
97
97
|
/** @internal */
|
|
98
|
-
export const getRight = <
|
|
99
|
-
self: Either.Either<
|
|
100
|
-
): Option<
|
|
98
|
+
export const getRight = <R, L>(
|
|
99
|
+
self: Either.Either<R, L>
|
|
100
|
+
): Option<R> => (isLeft(self) ? option.none : option.some(self.right))
|
|
101
101
|
|
|
102
102
|
/** @internal */
|
|
103
|
-
export const fromOption
|
|
103
|
+
export const fromOption: {
|
|
104
|
+
<L>(onNone: () => L): <R>(self: Option<R>) => Either.Either<R, L>
|
|
105
|
+
<R, L>(self: Option<R>, onNone: () => L): Either.Either<R, L>
|
|
106
|
+
} = dual(
|
|
104
107
|
2,
|
|
105
|
-
<
|
|
108
|
+
<R, L>(self: Option<R>, onNone: () => L): Either.Either<R, L> =>
|
|
106
109
|
option.isNone(self) ? left(onNone()) : right(self.value)
|
|
107
110
|
)
|
|
@@ -35,7 +35,7 @@ export const encode = (bytes: Uint8Array) => {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/** @internal */
|
|
38
|
-
export const decode = (str: string): Either.Either<Encoding.DecodeException
|
|
38
|
+
export const decode = (str: string): Either.Either<Uint8Array, Encoding.DecodeException> => {
|
|
39
39
|
const length = str.length
|
|
40
40
|
if (length % 4 !== 0) {
|
|
41
41
|
return Either.left(
|
|
@@ -8,7 +8,7 @@ export const encode = (data: Uint8Array) =>
|
|
|
8
8
|
Base64.encode(data).replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_")
|
|
9
9
|
|
|
10
10
|
/** @internal */
|
|
11
|
-
export const decode = (str: string): Either.Either<Encoding.DecodeException
|
|
11
|
+
export const decode = (str: string): Either.Either<Uint8Array, Encoding.DecodeException> => {
|
|
12
12
|
const length = str.length
|
|
13
13
|
if (length % 4 === 1) {
|
|
14
14
|
return Either.left(
|
|
@@ -13,7 +13,7 @@ export const encode = (bytes: Uint8Array) => {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
/** @internal */
|
|
16
|
-
export const decode = (str: string): Either.Either<Encoding.DecodeException
|
|
16
|
+
export const decode = (str: string): Either.Either<Uint8Array, Encoding.DecodeException> => {
|
|
17
17
|
const bytes = new TextEncoder().encode(str)
|
|
18
18
|
if (bytes.length % 2 !== 0) {
|
|
19
19
|
return Either.left(DecodeException(str, `Length must be a multiple of 2, but is ${bytes.length}`))
|
package/src/internal/fiber.ts
CHANGED
|
@@ -260,8 +260,8 @@ export const orElse = dual<
|
|
|
260
260
|
|
|
261
261
|
/** @internal */
|
|
262
262
|
export const orElseEither = dual<
|
|
263
|
-
<A2, E2>(that: Fiber.Fiber<A2, E2>) => <A, E>(self: Fiber.Fiber<A, E>) => Fiber.Fiber<Either.Either<
|
|
264
|
-
<A, E, A2, E2>(self: Fiber.Fiber<A, E>, that: Fiber.Fiber<A2, E2>) => Fiber.Fiber<Either.Either<
|
|
263
|
+
<A2, E2>(that: Fiber.Fiber<A2, E2>) => <A, E>(self: Fiber.Fiber<A, E>) => Fiber.Fiber<Either.Either<A2, A>, E | E2>,
|
|
264
|
+
<A, E, A2, E2>(self: Fiber.Fiber<A, E>, that: Fiber.Fiber<A2, E2>) => Fiber.Fiber<Either.Either<A2, A>, E | E2>
|
|
265
265
|
>(2, (self, that) => orElse(map(self, Either.left), map(that, Either.right)))
|
|
266
266
|
|
|
267
267
|
/** @internal */
|
|
@@ -1915,9 +1915,9 @@ export const forEachParUnbounded = <A, B, E, R>(
|
|
|
1915
1915
|
})
|
|
1916
1916
|
|
|
1917
1917
|
/** @internal */
|
|
1918
|
-
export const forEachConcurrentDiscard = <A,
|
|
1918
|
+
export const forEachConcurrentDiscard = <A, X, E, R>(
|
|
1919
1919
|
self: Iterable<A>,
|
|
1920
|
-
f: (a: A, i: number) => Effect.Effect<
|
|
1920
|
+
f: (a: A, i: number) => Effect.Effect<X, E, R>,
|
|
1921
1921
|
batching: boolean,
|
|
1922
1922
|
processAll: boolean,
|
|
1923
1923
|
n?: number
|
|
@@ -1933,7 +1933,7 @@ export const forEachConcurrentDiscard = <A, _, E, R>(
|
|
|
1933
1933
|
let counter = 0
|
|
1934
1934
|
let interrupted = false
|
|
1935
1935
|
const fibersCount = n ? Math.min(todos.length, n) : todos.length
|
|
1936
|
-
const fibers = new Set<FiberRuntime<Exit.Exit<
|
|
1936
|
+
const fibers = new Set<FiberRuntime<Exit.Exit<X, E> | Effect.Blocked<X, E>>>()
|
|
1937
1937
|
const results = new Array()
|
|
1938
1938
|
const interruptAll = () =>
|
|
1939
1939
|
fibers.forEach((fiber) => {
|
|
@@ -1941,8 +1941,8 @@ export const forEachConcurrentDiscard = <A, _, E, R>(
|
|
|
1941
1941
|
fiber.unsafeInterruptAsFork(parent.id())
|
|
1942
1942
|
}, 0)
|
|
1943
1943
|
})
|
|
1944
|
-
const startOrder = new Array<FiberRuntime<Exit.Exit<
|
|
1945
|
-
const joinOrder = new Array<FiberRuntime<Exit.Exit<
|
|
1944
|
+
const startOrder = new Array<FiberRuntime<Exit.Exit<X, E> | Effect.Blocked<X, E>>>()
|
|
1945
|
+
const joinOrder = new Array<FiberRuntime<Exit.Exit<X, E> | Effect.Blocked<X, E>>>()
|
|
1946
1946
|
const residual = new Array<core.Blocked>()
|
|
1947
1947
|
const collectExits = () => {
|
|
1948
1948
|
const exits: Array<Exit.Exit<any, E>> = results
|
|
@@ -1978,7 +1978,7 @@ export const forEachConcurrentDiscard = <A, _, E, R>(
|
|
|
1978
1978
|
const stepOrExit = batching ? core.step : core.exit
|
|
1979
1979
|
const processingFiber = runFiber(
|
|
1980
1980
|
core.async<any, any, any>((resume) => {
|
|
1981
|
-
const pushResult = <
|
|
1981
|
+
const pushResult = <X, E>(res: Exit.Exit<X, E> | Effect.Blocked<X, E>, index: number) => {
|
|
1982
1982
|
if (res._op === "Blocked") {
|
|
1983
1983
|
residual.push(res as core.Blocked)
|
|
1984
1984
|
} else {
|
|
@@ -2002,8 +2002,8 @@ export const forEachConcurrentDiscard = <A, _, E, R>(
|
|
|
2002
2002
|
))
|
|
2003
2003
|
}
|
|
2004
2004
|
const onRes = (
|
|
2005
|
-
res: Exit.Exit<
|
|
2006
|
-
): Effect.Effect<Exit.Exit<
|
|
2005
|
+
res: Exit.Exit<X, E> | Effect.Blocked<X, E>
|
|
2006
|
+
): Effect.Effect<Exit.Exit<X, E> | Effect.Blocked<X, E>, never, R> => {
|
|
2007
2007
|
if (todos.length > 0) {
|
|
2008
2008
|
pushResult(res, index)
|
|
2009
2009
|
if (todos.length > 0) {
|
|
@@ -3315,7 +3315,7 @@ export const raceFibersWith = dual<
|
|
|
3315
3315
|
}, FiberId.combine(leftFiber.id(), rightFiber.id()))
|
|
3316
3316
|
}))
|
|
3317
3317
|
|
|
3318
|
-
const completeRace = <
|
|
3318
|
+
const completeRace = <A2, A3, E2, E3, R, R1, R2, R3>(
|
|
3319
3319
|
winner: Fiber.RuntimeFiber<any, any>,
|
|
3320
3320
|
loser: Fiber.RuntimeFiber<any, any>,
|
|
3321
3321
|
cont: (winner: Fiber.RuntimeFiber<any, any>, loser: Fiber.RuntimeFiber<any, any>) => Effect.Effect<any, any, any>,
|