effect 2.3.7 → 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/BigDecimal.js +1 -1
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/BigInt.js +14 -1
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Chunk.js +1 -1
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/Cron.js +1 -1
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Duration.js +1 -1
- package/dist/cjs/Duration.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/FiberMap.js.map +1 -1
- package/dist/cjs/Hash.js +29 -1
- package/dist/cjs/Hash.js.map +1 -1
- package/dist/cjs/List.js +3 -2
- package/dist/cjs/List.js.map +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/SortedMap.js +1 -1
- package/dist/cjs/SortedMap.js.map +1 -1
- package/dist/cjs/SortedSet.js +1 -1
- package/dist/cjs/SortedSet.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 +1 -1
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/internal/cache.js +1 -1
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/cause.js +1 -1
- package/dist/cjs/internal/cause.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/context.js +1 -1
- package/dist/cjs/internal/context.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 +15 -31
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/data.js +1 -1
- package/dist/cjs/internal/data.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +5 -6
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/effectable.js +2 -2
- package/dist/cjs/internal/effectable.js.map +1 -1
- package/dist/cjs/internal/either.js +1 -1
- package/dist/cjs/internal/either.js.map +1 -1
- package/dist/cjs/internal/fiberId.js +2 -9
- package/dist/cjs/internal/fiberId.js.map +1 -1
- package/dist/cjs/internal/fiberStatus.js +4 -3
- package/dist/cjs/internal/fiberStatus.js.map +1 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/hashMap.js +1 -1
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/hashSet.js +1 -1
- package/dist/cjs/internal/hashSet.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js +2 -2
- package/dist/cjs/internal/keyedPool.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/metric/keyType.js +4 -4
- package/dist/cjs/internal/metric/keyType.js.map +1 -1
- package/dist/cjs/internal/metric/state.js +5 -9
- package/dist/cjs/internal/metric/state.js.map +1 -1
- package/dist/cjs/internal/option.js +1 -1
- package/dist/cjs/internal/option.js.map +1 -1
- package/dist/cjs/internal/pool.js +1 -1
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/redBlackTree.js +1 -1
- package/dist/cjs/internal/redBlackTree.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/secret.js +1 -1
- package/dist/cjs/internal/secret.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/core.js +1 -1
- package/dist/cjs/internal/stm/core.js.map +1 -1
- package/dist/cjs/internal/stm/stm/stmState.js +6 -4
- package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +7 -6
- package/dist/cjs/internal/stm/stm/tExit.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/trie.js +1 -1
- package/dist/cjs/internal/trie.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/BigDecimal.d.ts.map +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/FiberMap.d.ts +4 -5
- package/dist/dts/FiberMap.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/Hash.d.ts +8 -0
- package/dist/dts/Hash.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/List.d.ts.map +1 -1
- 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/SortedMap.d.ts.map +1 -1
- package/dist/dts/SortedSet.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/metric/keyType.d.ts.map +1 -1
- package/dist/dts/internal/metric/state.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/BigDecimal.js +1 -1
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/BigInt.js +12 -0
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/Chunk.js +1 -1
- package/dist/esm/Chunk.js.map +1 -1
- package/dist/esm/Cron.js +1 -1
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Duration.js +1 -1
- package/dist/esm/Duration.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/FiberMap.js.map +1 -1
- package/dist/esm/Hash.js +27 -0
- package/dist/esm/Hash.js.map +1 -1
- package/dist/esm/List.js +3 -2
- package/dist/esm/List.js.map +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/SortedMap.js +1 -1
- package/dist/esm/SortedMap.js.map +1 -1
- package/dist/esm/SortedSet.js +1 -1
- package/dist/esm/SortedSet.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 +1 -1
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/internal/cache.js +1 -1
- package/dist/esm/internal/cache.js.map +1 -1
- package/dist/esm/internal/cause.js +1 -1
- package/dist/esm/internal/cause.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/context.js +1 -1
- package/dist/esm/internal/context.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 +12 -26
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/data.js +1 -1
- package/dist/esm/internal/data.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +5 -6
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/effectable.js +2 -2
- package/dist/esm/internal/effectable.js.map +1 -1
- package/dist/esm/internal/either.js +1 -1
- package/dist/esm/internal/either.js.map +1 -1
- package/dist/esm/internal/fiberId.js +2 -9
- package/dist/esm/internal/fiberId.js.map +1 -1
- package/dist/esm/internal/fiberStatus.js +4 -3
- package/dist/esm/internal/fiberStatus.js.map +1 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/hashMap.js +1 -1
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/hashSet.js +1 -1
- package/dist/esm/internal/hashSet.js.map +1 -1
- package/dist/esm/internal/keyedPool.js +2 -2
- package/dist/esm/internal/keyedPool.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/metric/keyType.js +4 -4
- package/dist/esm/internal/metric/keyType.js.map +1 -1
- package/dist/esm/internal/metric/state.js +5 -9
- package/dist/esm/internal/metric/state.js.map +1 -1
- package/dist/esm/internal/option.js +1 -1
- package/dist/esm/internal/option.js.map +1 -1
- package/dist/esm/internal/pool.js +1 -1
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/redBlackTree.js +1 -1
- package/dist/esm/internal/redBlackTree.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/secret.js +1 -1
- package/dist/esm/internal/secret.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/core.js +1 -1
- package/dist/esm/internal/stm/core.js.map +1 -1
- package/dist/esm/internal/stm/stm/stmState.js +5 -3
- package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
- package/dist/esm/internal/stm/stm/tExit.js +6 -5
- package/dist/esm/internal/stm/stm/tExit.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/trie.js +1 -1
- package/dist/esm/internal/trie.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +3 -2
- package/src/BigDecimal.ts +2 -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 +5 -5
- package/src/Config.ts +4 -4
- package/src/Cron.ts +4 -3
- package/src/Differ.ts +2 -2
- package/src/Duration.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/FiberMap.ts +0 -1
- package/src/GroupBy.ts +16 -16
- package/src/Hash.ts +31 -0
- package/src/Layer.ts +32 -32
- package/src/List.ts +6 -5
- 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/SortedMap.ts +5 -1
- package/src/SortedSet.ts +5 -1
- 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 +7 -9
- package/src/Types.ts +11 -0
- package/src/internal/blockedRequests.ts +2 -2
- package/src/internal/cache.ts +2 -1
- package/src/internal/cause.ts +4 -3
- 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/context.ts +1 -1
- package/src/internal/core-effect.ts +28 -43
- package/src/internal/core.ts +19 -44
- package/src/internal/data.ts +1 -1
- 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 +10 -11
- package/src/internal/effectable.ts +3 -3
- package/src/internal/either.ts +23 -20
- 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/fiberId.ts +7 -13
- package/src/internal/fiberRuntime.ts +9 -9
- package/src/internal/fiberStatus.ts +7 -6
- package/src/internal/groupBy.ts +40 -40
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hashSet.ts +4 -1
- package/src/internal/keyedPool.ts +4 -2
- 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/keyType.ts +7 -5
- package/src/internal/metric/polling.ts +8 -8
- package/src/internal/metric/state.ts +11 -10
- package/src/internal/metric.ts +6 -6
- package/src/internal/option.ts +1 -1
- package/src/internal/pool.ts +2 -1
- package/src/internal/redBlackTree.ts +2 -2
- 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/secret.ts +2 -1
- package/src/internal/sink.ts +27 -29
- package/src/internal/stm/core.ts +24 -24
- package/src/internal/stm/stm/stmState.ts +16 -11
- package/src/internal/stm/stm/tExit.ts +15 -9
- 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/trie.ts +2 -2
- package/src/internal/version.ts +1 -1
package/src/internal/core.ts
CHANGED
|
@@ -158,7 +158,7 @@ class EffectPrimitive {
|
|
|
158
158
|
return this === that
|
|
159
159
|
}
|
|
160
160
|
[Hash.symbol](this: {}) {
|
|
161
|
-
return Hash.random(this)
|
|
161
|
+
return Hash.cached(this, Hash.random(this))
|
|
162
162
|
}
|
|
163
163
|
pipe() {
|
|
164
164
|
return pipeArguments(this, arguments)
|
|
@@ -195,7 +195,7 @@ class EffectPrimitiveFailure {
|
|
|
195
195
|
return this === that
|
|
196
196
|
}
|
|
197
197
|
[Hash.symbol](this: {}) {
|
|
198
|
-
return Hash.random(this)
|
|
198
|
+
return Hash.cached(this, Hash.random(this))
|
|
199
199
|
}
|
|
200
200
|
get cause() {
|
|
201
201
|
return this.i0
|
|
@@ -233,7 +233,7 @@ class EffectPrimitiveSuccess {
|
|
|
233
233
|
return this === that
|
|
234
234
|
}
|
|
235
235
|
[Hash.symbol](this: {}) {
|
|
236
|
-
return Hash.random(this)
|
|
236
|
+
return Hash.cached(this, Hash.random(this))
|
|
237
237
|
}
|
|
238
238
|
get value() {
|
|
239
239
|
return this.i0
|
|
@@ -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: (
|
|
@@ -1734,7 +1709,7 @@ export class RequestResolverImpl<out R, in A> implements RequestResolver.Request
|
|
|
1734
1709
|
this.runAll = runAll as any
|
|
1735
1710
|
}
|
|
1736
1711
|
[Hash.symbol](): number {
|
|
1737
|
-
return this.target ? Hash.hash(this.target) : Hash.random(this)
|
|
1712
|
+
return Hash.cached(this, this.target ? Hash.hash(this.target) : Hash.random(this))
|
|
1738
1713
|
}
|
|
1739
1714
|
[Equal.symbol](that: unknown): boolean {
|
|
1740
1715
|
return this.target ?
|
|
@@ -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)
|
package/src/internal/data.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { StructuralPrototype } from "./effectable.js"
|
|
|
6
6
|
/** @internal */
|
|
7
7
|
export const ArrayProto: Equal.Equal = Object.assign(Object.create(Array.prototype), {
|
|
8
8
|
[Hash.symbol](this: Array<any>) {
|
|
9
|
-
return Hash.array(this)
|
|
9
|
+
return Hash.cached(this, Hash.array(this))
|
|
10
10
|
},
|
|
11
11
|
[Equal.symbol](this: Array<any>, that: Equal.Equal) {
|
|
12
12
|
if (Array.isArray(that) && this.length === that.length) {
|
|
@@ -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)),
|
|
@@ -315,7 +314,7 @@ class Key<in out A> implements Equal.Equal {
|
|
|
315
314
|
return false
|
|
316
315
|
}
|
|
317
316
|
[Hash.symbol]() {
|
|
318
|
-
return this.eq ? 0 : Hash.hash(this.a)
|
|
317
|
+
return this.eq ? 0 : Hash.cached(this, Hash.hash(this.a))
|
|
319
318
|
}
|
|
320
319
|
}
|
|
321
320
|
|
|
@@ -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
|
|
|
@@ -73,7 +73,7 @@ export const EffectPrototype: Effect.Effect<never> & Equal.Equal = {
|
|
|
73
73
|
return this === that
|
|
74
74
|
},
|
|
75
75
|
[Hash.symbol]() {
|
|
76
|
-
return Hash.random(this)
|
|
76
|
+
return Hash.cached(this, Hash.random(this))
|
|
77
77
|
},
|
|
78
78
|
pipe() {
|
|
79
79
|
return pipeArguments(this, arguments)
|
|
@@ -82,8 +82,8 @@ export const EffectPrototype: Effect.Effect<never> & Equal.Equal = {
|
|
|
82
82
|
|
|
83
83
|
/** @internal */
|
|
84
84
|
export const StructuralPrototype: Equal.Equal = {
|
|
85
|
-
[Hash.symbol](
|
|
86
|
-
return Hash.structure(this)
|
|
85
|
+
[Hash.symbol]() {
|
|
86
|
+
return Hash.cached(this, Hash.structure(this))
|
|
87
87
|
},
|
|
88
88
|
[Equal.symbol](this: Equal.Equal, that: Equal.Equal) {
|
|
89
89
|
const selfKeys = Object.keys(this)
|
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]<
|
|
39
|
+
[Hash.symbol]<L, R>(this: Either.Right<L, R>) {
|
|
40
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,10 +51,10 @@ 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]<
|
|
57
|
+
[Hash.symbol]<L, R>(this: Either.Left<L, R>) {
|
|
58
58
|
return Hash.combine(Hash.hash(this._tag))(Hash.hash(this.left))
|
|
59
59
|
},
|
|
60
60
|
toJSON<E, A>(this: Either.Left<E, A>) {
|
|
@@ -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 */
|