effect 2.4.19 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Array/package.json +6 -0
- package/FiberHandle/package.json +6 -0
- package/Record/package.json +6 -0
- package/dist/cjs/{ReadonlyArray.js → Array.js} +46 -23
- package/dist/cjs/Array.js.map +1 -0
- package/dist/cjs/Brand.js +2 -2
- package/dist/cjs/Brand.js.map +1 -1
- package/dist/cjs/Channel.js +4 -8
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Chunk.js +5 -1
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/ConfigError.js.map +1 -1
- package/dist/cjs/Cron.js +13 -13
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Effect.js +14 -10
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +4 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/ExecutionStrategy.js.map +1 -1
- package/dist/cjs/Exit.js +3 -9
- package/dist/cjs/Exit.js.map +1 -1
- package/dist/cjs/Fiber.js +2 -8
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberHandle.js +306 -0
- package/dist/cjs/FiberHandle.js.map +1 -0
- package/dist/cjs/FiberMap.js +105 -28
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberRefs.js.map +1 -1
- package/dist/cjs/FiberSet.js +51 -15
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/HashSet.js.map +1 -1
- package/dist/cjs/Iterable.js +40 -5
- package/dist/cjs/Iterable.js.map +1 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/List.js +3 -3
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/Metric.js +3 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/MetricKey.js.map +1 -1
- package/dist/cjs/MetricKeyType.js.map +1 -1
- package/dist/cjs/MutableHashMap.js +0 -4
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/Option.js +3 -6
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/{ReadonlyRecord.js → Record.js} +29 -29
- package/dist/cjs/Record.js.map +1 -0
- package/dist/cjs/STM.js +4 -10
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js +2 -2
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/ScopedCache.js.map +1 -1
- package/dist/cjs/Stream.js +3 -9
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/StreamHaltStrategy.js +2 -0
- package/dist/cjs/StreamHaltStrategy.js.map +1 -1
- package/dist/cjs/String.js +44 -2
- package/dist/cjs/String.js.map +1 -1
- package/dist/cjs/TestAnnotations.js +1 -1
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js +3 -3
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/Tracer.js.map +1 -1
- package/dist/cjs/index.js +8 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/{readonlyArray.js → array.js} +1 -1
- package/dist/cjs/internal/array.js.map +1 -0
- package/dist/cjs/internal/cache.js +3 -3
- package/dist/cjs/internal/cache.js.map +1 -1
- package/dist/cjs/internal/cause.js +3 -3
- package/dist/cjs/internal/cause.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +15 -15
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel/channelState.js +1 -1
- package/dist/cjs/internal/channel/channelState.js.map +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js +1 -1
- package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/cjs/internal/channel.js +10 -10
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/clock.js +2 -2
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/configError.js +20 -19
- package/dist/cjs/internal/configError.js.map +1 -1
- package/dist/cjs/internal/configProvider/pathPatch.js +1 -1
- package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
- package/dist/cjs/internal/configProvider.js +47 -48
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +42 -28
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core-stream.js +2 -3
- package/dist/cjs/internal/core-stream.js.map +1 -1
- package/dist/cjs/internal/core.js +27 -31
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/dataSource.js +19 -2
- package/dist/cjs/internal/dataSource.js.map +1 -1
- package/dist/cjs/internal/differ/readonlyArrayPatch.js +6 -6
- package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +1 -1
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/executionStrategy.js +4 -4
- package/dist/cjs/internal/executionStrategy.js.map +1 -1
- package/dist/cjs/internal/fiber.js +5 -6
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRefs/patch.js +1 -1
- package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
- package/dist/cjs/internal/fiberRefs.js +1 -1
- package/dist/cjs/internal/fiberRefs.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +33 -33
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js +3 -3
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/hashSet.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +5 -5
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logger.js +28 -8
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/managedRuntime.js +1 -1
- package/dist/cjs/internal/managedRuntime.js.map +1 -1
- package/dist/cjs/internal/metric/boundaries.js +4 -4
- package/dist/cjs/internal/metric/boundaries.js.map +1 -1
- package/dist/cjs/internal/metric/hook.js +20 -17
- package/dist/cjs/internal/metric/hook.js.map +1 -1
- package/dist/cjs/internal/metric/key.js +4 -4
- package/dist/cjs/internal/metric/key.js.map +1 -1
- package/dist/cjs/internal/metric/keyType.js +6 -1
- package/dist/cjs/internal/metric/keyType.js.map +1 -1
- package/dist/cjs/internal/metric/state.js +4 -4
- package/dist/cjs/internal/metric/state.js.map +1 -1
- package/dist/cjs/internal/metric.js +4 -4
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/pool.js +11 -11
- package/dist/cjs/internal/pool.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +5 -5
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/query.js +2 -2
- package/dist/cjs/internal/query.js.map +1 -1
- package/dist/cjs/internal/queue.js +9 -9
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/rateLimiter.js +1 -1
- package/dist/cjs/internal/rateLimiter.js.map +1 -1
- package/dist/cjs/internal/redBlackTree/iterator.js +2 -2
- package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
- package/dist/cjs/internal/reloadable.js +1 -1
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/runtime.js +4 -4
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js +5 -5
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/scopedCache.js +7 -7
- package/dist/cjs/internal/scopedCache.js.map +1 -1
- package/dist/cjs/internal/scopedRef.js +4 -4
- package/dist/cjs/internal/scopedRef.js.map +1 -1
- package/dist/cjs/internal/secret.js +2 -2
- package/dist/cjs/internal/secret.js.map +1 -1
- package/dist/cjs/internal/sink.js +10 -10
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/stm/tExit.js +2 -4
- package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js +11 -11
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stm/tMap.js +3 -3
- package/dist/cjs/internal/stm/tMap.js.map +1 -1
- package/dist/cjs/internal/stm/tPriorityQueue.js +11 -11
- package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tPubSub.js +3 -3
- package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
- package/dist/cjs/internal/stm/tQueue.js +3 -3
- package/dist/cjs/internal/stm/tQueue.js.map +1 -1
- package/dist/cjs/internal/stm/tSet.js +1 -1
- package/dist/cjs/internal/stm/tSet.js.map +1 -1
- package/dist/cjs/internal/stream/haltStrategy.js +5 -5
- package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
- package/dist/cjs/internal/stream.js +84 -85
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/supervisor.js +1 -1
- package/dist/cjs/internal/supervisor.js.map +1 -1
- package/dist/cjs/internal/take.js +1 -1
- package/dist/cjs/internal/take.js.map +1 -1
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/cjs/internal/trie.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/{ReadonlyArray.d.ts → Array.d.ts} +42 -18
- package/dist/dts/Array.d.ts.map +1 -0
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/Brand.d.ts +1 -19
- package/dist/dts/Brand.d.ts.map +1 -1
- package/dist/dts/Cache.d.ts +10 -10
- package/dist/dts/Cache.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 +6 -4
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Chunk.d.ts +1 -4
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/ConfigError.d.ts +7 -6
- package/dist/dts/ConfigError.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +0 -5
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +38 -33
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +5 -2
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/Encoding.d.ts.map +1 -1
- package/dist/dts/Equivalence.d.ts.map +1 -1
- package/dist/dts/ExecutionStrategy.d.ts +10 -2
- package/dist/dts/ExecutionStrategy.d.ts.map +1 -1
- package/dist/dts/Exit.d.ts +4 -3
- package/dist/dts/Exit.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +4 -2
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts +189 -0
- package/dist/dts/FiberHandle.d.ts.map +1 -0
- package/dist/dts/FiberMap.d.ts +48 -12
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberRefs.d.ts +1 -1
- package/dist/dts/FiberRefs.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +9 -5
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/Function.d.ts.map +1 -1
- package/dist/dts/GroupBy.d.ts +1 -1
- package/dist/dts/GroupBy.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +0 -1
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/HashSet.d.ts +0 -1
- package/dist/dts/HashSet.d.ts.map +1 -1
- package/dist/dts/Iterable.d.ts +12 -5
- package/dist/dts/Iterable.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +6 -6
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/List.d.ts +0 -11
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +2 -2
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +7 -2
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricKey.d.ts +4 -1
- package/dist/dts/MetricKey.d.ts.map +1 -1
- package/dist/dts/MetricKeyType.d.ts +4 -1
- package/dist/dts/MetricKeyType.d.ts.map +1 -1
- package/dist/dts/MutableHashMap.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +5 -3
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Order.d.ts.map +1 -1
- package/dist/dts/{ReadonlyRecord.d.ts → Record.d.ts} +29 -30
- package/dist/dts/Record.d.ts.map +1 -0
- package/dist/dts/Request.d.ts +1 -1
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +2 -2
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +6 -4
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +1 -1
- package/dist/dts/Scheduler.d.ts.map +1 -1
- package/dist/dts/ScopedCache.d.ts +9 -9
- package/dist/dts/ScopedCache.d.ts.map +1 -1
- package/dist/dts/SortedMap.d.ts.map +1 -1
- package/dist/dts/SortedSet.d.ts +1 -1
- package/dist/dts/SortedSet.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +8 -6
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamHaltStrategy.d.ts +14 -2
- package/dist/dts/StreamHaltStrategy.d.ts.map +1 -1
- package/dist/dts/String.d.ts +25 -1
- package/dist/dts/String.d.ts.map +1 -1
- package/dist/dts/Subscribable.d.ts.map +1 -1
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
- package/dist/dts/TestAnnotations.d.ts +0 -3
- package/dist/dts/TestAnnotations.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestLive.d.ts.map +1 -1
- package/dist/dts/TestServices.d.ts.map +1 -1
- package/dist/dts/TestSized.d.ts.map +1 -1
- package/dist/dts/Tracer.d.ts +12 -5
- package/dist/dts/Tracer.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +1 -1
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +0 -7
- package/dist/dts/Types.d.ts.map +1 -1
- package/dist/dts/index.d.ts +11 -7
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/array.d.ts +5 -0
- package/dist/dts/internal/array.d.ts.map +1 -0
- package/dist/dts/internal/core-stream.d.ts +4 -0
- package/dist/dts/internal/core-stream.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts +3 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/fiber.d.ts +5 -1
- package/dist/dts/internal/fiber.d.ts.map +1 -1
- package/dist/dts/internal/hashMap.d.ts.map +1 -1
- package/dist/dts/internal/logger.d.ts.map +1 -1
- package/dist/dts/internal/metric/keyType.d.ts +3 -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/random.d.ts.map +1 -1
- package/dist/dts/internal/runtimeFlags.d.ts.map +1 -1
- package/dist/dts/internal/stm/stm/tExit.d.ts +4 -1
- package/dist/dts/internal/stm/stm/tExit.d.ts.map +1 -1
- package/dist/dts/internal/stm/stm.d.ts +3 -0
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts +5 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/{ReadonlyArray.js → Array.js} +42 -20
- package/dist/esm/Array.js.map +1 -0
- package/dist/esm/Brand.js +2 -2
- package/dist/esm/Brand.js.map +1 -1
- package/dist/esm/Channel.js +4 -2
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Chunk.js +4 -1
- package/dist/esm/Chunk.js.map +1 -1
- package/dist/esm/ConfigError.js.map +1 -1
- package/dist/esm/Cron.js +13 -13
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Effect.js +11 -2
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +4 -1
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/ExecutionStrategy.js.map +1 -1
- package/dist/esm/Exit.js +4 -2
- package/dist/esm/Exit.js.map +1 -1
- package/dist/esm/Fiber.js +3 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberHandle.js +265 -0
- package/dist/esm/FiberHandle.js.map +1 -0
- package/dist/esm/FiberMap.js +103 -26
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberRefs.js.map +1 -1
- package/dist/esm/FiberSet.js +51 -15
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/HashSet.js.map +1 -1
- package/dist/esm/Iterable.js +39 -4
- package/dist/esm/Iterable.js.map +1 -1
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/List.js +3 -3
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/Metric.js +3 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/MetricKey.js.map +1 -1
- package/dist/esm/MetricKeyType.js.map +1 -1
- package/dist/esm/MutableHashMap.js +0 -3
- package/dist/esm/MutableHashMap.js.map +1 -1
- package/dist/esm/Option.js +4 -2
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/{ReadonlyRecord.js → Record.js} +29 -29
- package/dist/esm/Record.js.map +1 -0
- package/dist/esm/STM.js +5 -3
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/ScopedCache.js.map +1 -1
- package/dist/esm/Stream.js +5 -3
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/StreamHaltStrategy.js +2 -0
- package/dist/esm/StreamHaltStrategy.js.map +1 -1
- package/dist/esm/String.js +37 -1
- package/dist/esm/String.js.map +1 -1
- package/dist/esm/TestAnnotations.js +1 -1
- package/dist/esm/TestAnnotations.js.map +1 -1
- package/dist/esm/TestClock.js +3 -3
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/Tracer.js.map +1 -1
- package/dist/esm/index.js +11 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/{readonlyArray.js → array.js} +1 -1
- package/dist/esm/internal/array.js.map +1 -0
- package/dist/esm/internal/cache.js +3 -3
- package/dist/esm/internal/cache.js.map +1 -1
- package/dist/esm/internal/cause.js +3 -3
- package/dist/esm/internal/cause.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +15 -15
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel/channelState.js +1 -1
- package/dist/esm/internal/channel/channelState.js.map +1 -1
- package/dist/esm/internal/channel/singleProducerAsyncInput.js +1 -1
- package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
- package/dist/esm/internal/channel.js +8 -8
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/clock.js +2 -2
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/configError.js +20 -19
- package/dist/esm/internal/configError.js.map +1 -1
- package/dist/esm/internal/configProvider/pathPatch.js +1 -1
- package/dist/esm/internal/configProvider/pathPatch.js.map +1 -1
- package/dist/esm/internal/configProvider.js +47 -48
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/core-effect.js +39 -26
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core-stream.js +3 -2
- package/dist/esm/internal/core-stream.js.map +1 -1
- package/dist/esm/internal/core.js +24 -26
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/dataSource.js +19 -2
- package/dist/esm/internal/dataSource.js.map +1 -1
- package/dist/esm/internal/differ/readonlyArrayPatch.js +6 -6
- package/dist/esm/internal/differ/readonlyArrayPatch.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +1 -1
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/executionStrategy.js +4 -4
- package/dist/esm/internal/executionStrategy.js.map +1 -1
- package/dist/esm/internal/fiber.js +6 -5
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRefs/patch.js +1 -1
- package/dist/esm/internal/fiberRefs/patch.js.map +1 -1
- package/dist/esm/internal/fiberRefs.js +1 -1
- package/dist/esm/internal/fiberRefs.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +33 -33
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js +3 -3
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/hashSet.js.map +1 -1
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +5 -5
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logger.js +28 -8
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/managedRuntime.js +1 -1
- package/dist/esm/internal/managedRuntime.js.map +1 -1
- package/dist/esm/internal/metric/boundaries.js +4 -4
- package/dist/esm/internal/metric/boundaries.js.map +1 -1
- package/dist/esm/internal/metric/hook.js +20 -17
- package/dist/esm/internal/metric/hook.js.map +1 -1
- package/dist/esm/internal/metric/key.js +4 -4
- package/dist/esm/internal/metric/key.js.map +1 -1
- package/dist/esm/internal/metric/keyType.js +5 -1
- package/dist/esm/internal/metric/keyType.js.map +1 -1
- package/dist/esm/internal/metric/state.js +4 -4
- package/dist/esm/internal/metric/state.js.map +1 -1
- package/dist/esm/internal/metric.js +4 -4
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/pool.js +11 -11
- package/dist/esm/internal/pool.js.map +1 -1
- package/dist/esm/internal/pubsub.js +5 -5
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/query.js +2 -2
- package/dist/esm/internal/query.js.map +1 -1
- package/dist/esm/internal/queue.js +9 -9
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/rateLimiter.js +1 -1
- package/dist/esm/internal/rateLimiter.js.map +1 -1
- package/dist/esm/internal/redBlackTree/iterator.js +2 -2
- package/dist/esm/internal/redBlackTree/iterator.js.map +1 -1
- package/dist/esm/internal/reloadable.js +1 -1
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/runtime.js +4 -4
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js +3 -3
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/scopedCache.js +7 -7
- package/dist/esm/internal/scopedCache.js.map +1 -1
- package/dist/esm/internal/scopedRef.js +4 -4
- package/dist/esm/internal/scopedRef.js.map +1 -1
- package/dist/esm/internal/secret.js +2 -2
- package/dist/esm/internal/secret.js.map +1 -1
- package/dist/esm/internal/sink.js +10 -10
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/stm/tExit.js +3 -2
- package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
- package/dist/esm/internal/stm/stm.js +11 -9
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stm/tMap.js +3 -3
- package/dist/esm/internal/stm/tMap.js.map +1 -1
- package/dist/esm/internal/stm/tPriorityQueue.js +11 -11
- package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
- package/dist/esm/internal/stm/tPubSub.js +3 -3
- package/dist/esm/internal/stm/tPubSub.js.map +1 -1
- package/dist/esm/internal/stm/tQueue.js +3 -3
- package/dist/esm/internal/stm/tQueue.js.map +1 -1
- package/dist/esm/internal/stm/tSet.js +1 -1
- package/dist/esm/internal/stm/tSet.js.map +1 -1
- package/dist/esm/internal/stream/haltStrategy.js +5 -5
- package/dist/esm/internal/stream/haltStrategy.js.map +1 -1
- package/dist/esm/internal/stream.js +85 -84
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/supervisor.js +1 -1
- package/dist/esm/internal/supervisor.js.map +1 -1
- package/dist/esm/internal/take.js +1 -1
- package/dist/esm/internal/take.js.map +1 -1
- package/dist/esm/internal/tracer.js.map +1 -1
- package/dist/esm/internal/trie.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +23 -15
- package/src/{ReadonlyArray.ts → Array.ts} +50 -24
- package/src/Brand.ts +3 -3
- package/src/Cache.ts +12 -10
- package/src/Cause.ts +1 -1
- package/src/Channel.ts +12 -9
- package/src/Chunk.ts +3 -3
- package/src/ConfigError.ts +7 -6
- package/src/Cron.ts +17 -17
- package/src/Effect.ts +46 -57
- package/src/Either.ts +7 -7
- package/src/ExecutionStrategy.ts +10 -2
- package/src/Exit.ts +11 -9
- package/src/Fiber.ts +11 -8
- package/src/FiberHandle.ts +433 -0
- package/src/FiberMap.ts +200 -73
- package/src/FiberRefs.ts +1 -1
- package/src/FiberSet.ts +96 -36
- package/src/GroupBy.ts +1 -1
- package/src/HashMap.ts +0 -1
- package/src/HashSet.ts +0 -1
- package/src/Iterable.ts +48 -10
- package/src/Layer.ts +6 -6
- package/src/List.ts +3 -4
- package/src/Logger.ts +2 -2
- package/src/Metric.ts +9 -2
- package/src/MetricKey.ts +9 -1
- package/src/MetricKeyType.ts +6 -1
- package/src/MutableHashMap.ts +1 -1
- package/src/Option.ts +9 -6
- package/src/{ReadonlyRecord.ts → Record.ts} +28 -29
- package/src/Request.ts +1 -1
- package/src/RequestResolver.ts +4 -4
- package/src/STM.ts +12 -9
- package/src/Schedule.ts +1 -1
- package/src/ScopedCache.ts +11 -9
- package/src/SortedSet.ts +1 -1
- package/src/Stream.ts +14 -11
- package/src/StreamHaltStrategy.ts +14 -2
- package/src/String.ts +45 -2
- package/src/TestAnnotations.ts +1 -1
- package/src/TestClock.ts +3 -3
- package/src/Tracer.ts +13 -5
- package/src/Trie.ts +1 -1
- package/src/Types.ts +0 -8
- package/src/index.ts +13 -8
- package/src/internal/{readonlyArray.ts → array.ts} +1 -1
- package/src/internal/cache.ts +40 -40
- package/src/internal/cause.ts +5 -6
- package/src/internal/channel/channelExecutor.ts +15 -15
- package/src/internal/channel/channelState.ts +1 -1
- package/src/internal/channel/singleProducerAsyncInput.ts +1 -1
- package/src/internal/channel.ts +11 -11
- package/src/internal/clock.ts +2 -2
- package/src/internal/configError.ts +22 -21
- package/src/internal/configProvider/pathPatch.ts +1 -1
- package/src/internal/configProvider.ts +50 -53
- package/src/internal/core-effect.ts +73 -70
- package/src/internal/core-stream.ts +5 -2
- package/src/internal/core.ts +51 -50
- package/src/internal/dataSource.ts +19 -20
- package/src/internal/differ/readonlyArrayPatch.ts +6 -6
- package/src/internal/effect/circular.ts +2 -2
- package/src/internal/executionStrategy.ts +14 -12
- package/src/internal/fiber.ts +8 -5
- package/src/internal/fiberRefs/patch.ts +1 -1
- package/src/internal/fiberRefs.ts +1 -1
- package/src/internal/fiberRuntime.ts +45 -45
- package/src/internal/groupBy.ts +4 -4
- package/src/internal/hashMap.ts +0 -1
- package/src/internal/hashSet.ts +0 -1
- package/src/internal/layer/circular.ts +2 -2
- package/src/internal/layer.ts +9 -9
- package/src/internal/logger.ts +28 -8
- package/src/internal/managedRuntime.ts +1 -1
- package/src/internal/metric/boundaries.ts +5 -5
- package/src/internal/metric/hook.ts +21 -18
- package/src/internal/metric/key.ts +8 -5
- package/src/internal/metric/keyType.ts +5 -2
- package/src/internal/metric/state.ts +5 -5
- package/src/internal/metric.ts +8 -6
- package/src/internal/pool.ts +11 -11
- package/src/internal/pubsub.ts +6 -6
- package/src/internal/query.ts +4 -4
- package/src/internal/queue.ts +11 -11
- package/src/internal/rateLimiter.ts +1 -1
- package/src/internal/redBlackTree/iterator.ts +2 -2
- package/src/internal/reloadable.ts +1 -1
- package/src/internal/runtime.ts +5 -5
- package/src/internal/schedule.ts +8 -9
- package/src/internal/scopedCache.ts +53 -53
- package/src/internal/scopedRef.ts +4 -4
- package/src/internal/secret.ts +2 -2
- package/src/internal/sink.ts +10 -10
- package/src/internal/stm/stm/tExit.ts +5 -2
- package/src/internal/stm/stm.ts +13 -9
- package/src/internal/stm/tMap.ts +3 -3
- package/src/internal/stm/tPriorityQueue.ts +11 -11
- package/src/internal/stm/tPubSub.ts +3 -3
- package/src/internal/stm/tQueue.ts +3 -3
- package/src/internal/stm/tSet.ts +1 -1
- package/src/internal/stream/haltStrategy.ts +23 -14
- package/src/internal/stream.ts +91 -88
- package/src/internal/supervisor.ts +1 -1
- package/src/internal/take.ts +1 -1
- package/src/internal/tracer.ts +2 -2
- package/src/internal/trie.ts +0 -1
- package/src/internal/version.ts +1 -1
- package/ReadonlyArray/package.json +0 -6
- package/ReadonlyRecord/package.json +0 -6
- package/dist/cjs/ReadonlyArray.js.map +0 -1
- package/dist/cjs/ReadonlyRecord.js.map +0 -1
- package/dist/cjs/internal/Iterable.js +0 -61
- package/dist/cjs/internal/Iterable.js.map +0 -1
- package/dist/cjs/internal/readonlyArray.js.map +0 -1
- package/dist/dts/ReadonlyArray.d.ts.map +0 -1
- package/dist/dts/ReadonlyRecord.d.ts.map +0 -1
- package/dist/dts/internal/Iterable.d.ts +0 -2
- package/dist/dts/internal/Iterable.d.ts.map +0 -1
- package/dist/dts/internal/readonlyArray.d.ts +0 -5
- package/dist/dts/internal/readonlyArray.d.ts.map +0 -1
- package/dist/esm/ReadonlyArray.js.map +0 -1
- package/dist/esm/ReadonlyRecord.js.map +0 -1
- package/dist/esm/internal/Iterable.js +0 -53
- package/dist/esm/internal/Iterable.js.map +0 -1
- package/dist/esm/internal/readonlyArray.js.map +0 -1
- package/src/internal/Iterable.ts +0 -54
package/src/FiberMap.ts
CHANGED
|
@@ -13,6 +13,7 @@ import * as FiberRef from "./FiberRef.js"
|
|
|
13
13
|
import { dual } from "./Function.js"
|
|
14
14
|
import * as Inspectable from "./Inspectable.js"
|
|
15
15
|
import type { FiberRuntime } from "./internal/fiberRuntime.js"
|
|
16
|
+
import * as Iterable from "./Iterable.js"
|
|
16
17
|
import * as MutableHashMap from "./MutableHashMap.js"
|
|
17
18
|
import * as Option from "./Option.js"
|
|
18
19
|
import { type Pipeable, pipeArguments } from "./Pipeable.js"
|
|
@@ -39,8 +40,14 @@ export interface FiberMap<in out K, out A = unknown, out E = unknown>
|
|
|
39
40
|
extends Pipeable, Inspectable.Inspectable, Iterable<[K, Fiber.RuntimeFiber<A, E>]>
|
|
40
41
|
{
|
|
41
42
|
readonly [TypeId]: TypeId
|
|
42
|
-
readonly
|
|
43
|
-
|
|
43
|
+
readonly deferred: Deferred.Deferred<void, unknown>
|
|
44
|
+
/** @internal */
|
|
45
|
+
state: {
|
|
46
|
+
readonly _tag: "Open"
|
|
47
|
+
readonly backing: MutableHashMap.MutableHashMap<K, Fiber.RuntimeFiber<A, E>>
|
|
48
|
+
} | {
|
|
49
|
+
readonly _tag: "Closed"
|
|
50
|
+
}
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
/**
|
|
@@ -52,7 +59,10 @@ export const isFiberMap = (u: unknown): u is FiberMap<unknown> => Predicate.hasP
|
|
|
52
59
|
const Proto = {
|
|
53
60
|
[TypeId]: TypeId,
|
|
54
61
|
[Symbol.iterator](this: FiberMap<unknown>) {
|
|
55
|
-
|
|
62
|
+
if (this.state._tag === "Closed") {
|
|
63
|
+
return Iterable.empty()
|
|
64
|
+
}
|
|
65
|
+
return this.state.backing[Symbol.iterator]()
|
|
56
66
|
},
|
|
57
67
|
toString(this: FiberMap<unknown>) {
|
|
58
68
|
return Inspectable.format(this.toJSON())
|
|
@@ -60,7 +70,7 @@ const Proto = {
|
|
|
60
70
|
toJSON(this: FiberMap<unknown>) {
|
|
61
71
|
return {
|
|
62
72
|
_id: "FiberMap",
|
|
63
|
-
|
|
73
|
+
state: this.state
|
|
64
74
|
}
|
|
65
75
|
},
|
|
66
76
|
[Inspectable.NodeInspectSymbol](this: FiberMap<unknown>) {
|
|
@@ -73,10 +83,10 @@ const Proto = {
|
|
|
73
83
|
|
|
74
84
|
const unsafeMake = <K, A = unknown, E = unknown>(
|
|
75
85
|
backing: MutableHashMap.MutableHashMap<K, Fiber.RuntimeFiber<A, E>>,
|
|
76
|
-
deferred: Deferred.Deferred<
|
|
86
|
+
deferred: Deferred.Deferred<void, E>
|
|
77
87
|
): FiberMap<K, A, E> => {
|
|
78
88
|
const self = Object.create(Proto)
|
|
79
|
-
self.
|
|
89
|
+
self.state = { _tag: "Open", backing }
|
|
80
90
|
self.deferred = deferred
|
|
81
91
|
return self
|
|
82
92
|
}
|
|
@@ -108,12 +118,19 @@ const unsafeMake = <K, A = unknown, E = unknown>(
|
|
|
108
118
|
*/
|
|
109
119
|
export const make = <K, A = unknown, E = unknown>(): Effect.Effect<FiberMap<K, A, E>, never, Scope.Scope> =>
|
|
110
120
|
Effect.acquireRelease(
|
|
111
|
-
Effect.map(Deferred.make<
|
|
121
|
+
Effect.map(Deferred.make<void, E>(), (deferred) =>
|
|
112
122
|
unsafeMake<K, A, E>(
|
|
113
123
|
MutableHashMap.empty(),
|
|
114
124
|
deferred
|
|
115
125
|
)),
|
|
116
|
-
|
|
126
|
+
(map) =>
|
|
127
|
+
Effect.zipRight(
|
|
128
|
+
clear(map),
|
|
129
|
+
Effect.suspend(() => {
|
|
130
|
+
map.state = { _tag: "Closed" }
|
|
131
|
+
return Deferred.done(map.deferred, Exit.void)
|
|
132
|
+
})
|
|
133
|
+
)
|
|
117
134
|
)
|
|
118
135
|
|
|
119
136
|
/**
|
|
@@ -126,7 +143,11 @@ export const makeRuntime = <R, K, E = unknown, A = unknown>(): Effect.Effect<
|
|
|
126
143
|
<XE extends E, XA extends A>(
|
|
127
144
|
key: K,
|
|
128
145
|
effect: Effect.Effect<XA, XE, R>,
|
|
129
|
-
options?:
|
|
146
|
+
options?:
|
|
147
|
+
| Runtime.RunForkOptions & {
|
|
148
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
149
|
+
}
|
|
150
|
+
| undefined
|
|
130
151
|
) => Fiber.RuntimeFiber<XA, XE>,
|
|
131
152
|
never,
|
|
132
153
|
Scope.Scope | R
|
|
@@ -147,41 +168,54 @@ export const unsafeSet: {
|
|
|
147
168
|
<K, A, E, XE extends E, XA extends A>(
|
|
148
169
|
key: K,
|
|
149
170
|
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
150
|
-
|
|
171
|
+
options?: {
|
|
172
|
+
readonly interruptAs?: FiberId.FiberId | undefined
|
|
173
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
174
|
+
} | undefined
|
|
151
175
|
): (self: FiberMap<K, A, E>) => void
|
|
152
176
|
<K, A, E, XE extends E, XA extends A>(
|
|
153
177
|
self: FiberMap<K, A, E>,
|
|
154
178
|
key: K,
|
|
155
179
|
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
156
|
-
|
|
180
|
+
options?: {
|
|
181
|
+
readonly interruptAs?: FiberId.FiberId | undefined
|
|
182
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
183
|
+
} | undefined
|
|
157
184
|
): void
|
|
158
|
-
} = dual<
|
|
159
|
-
<K, A, E
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
interruptAs
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
185
|
+
} = dual((args) => isFiberMap(args[0]), <K, A, E, XE extends E, XA extends A>(
|
|
186
|
+
self: FiberMap<K, A, E>,
|
|
187
|
+
key: K,
|
|
188
|
+
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
189
|
+
options?: {
|
|
190
|
+
readonly interruptAs?: FiberId.FiberId | undefined
|
|
191
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
192
|
+
} | undefined
|
|
193
|
+
): void => {
|
|
194
|
+
if (self.state._tag === "Closed") {
|
|
195
|
+
fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none)
|
|
196
|
+
return
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const previous = MutableHashMap.get(self.state.backing, key)
|
|
172
200
|
if (previous._tag === "Some") {
|
|
173
|
-
if (
|
|
201
|
+
if (options?.onlyIfMissing === true) {
|
|
202
|
+
fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none)
|
|
203
|
+
return
|
|
204
|
+
} else if (previous.value === fiber) {
|
|
174
205
|
return
|
|
175
206
|
}
|
|
176
|
-
previous.value.unsafeInterruptAsFork(interruptAs ?? FiberId.none)
|
|
207
|
+
previous.value.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none)
|
|
177
208
|
}
|
|
178
209
|
|
|
179
210
|
;(fiber as FiberRuntime<unknown, unknown>).setFiberRef(FiberRef.unhandledErrorLogLevel, Option.none())
|
|
180
|
-
MutableHashMap.set(self.backing, key, fiber)
|
|
211
|
+
MutableHashMap.set(self.state.backing, key, fiber)
|
|
181
212
|
fiber.addObserver((exit) => {
|
|
182
|
-
|
|
213
|
+
if (self.state._tag === "Closed") {
|
|
214
|
+
return
|
|
215
|
+
}
|
|
216
|
+
const current = MutableHashMap.get(self.state.backing, key)
|
|
183
217
|
if (Option.isSome(current) && fiber === current.value) {
|
|
184
|
-
MutableHashMap.remove(self.backing, key)
|
|
218
|
+
MutableHashMap.remove(self.state.backing, key)
|
|
185
219
|
}
|
|
186
220
|
if (Exit.isFailure(exit) && !Cause.isInterruptedOnly(exit.cause)) {
|
|
187
221
|
Deferred.unsafeDone(self.deferred, exit as any)
|
|
@@ -199,26 +233,35 @@ export const unsafeSet: {
|
|
|
199
233
|
export const set: {
|
|
200
234
|
<K, A, E, XE extends E, XA extends A>(
|
|
201
235
|
key: K,
|
|
202
|
-
fiber: Fiber.RuntimeFiber<XA, XE
|
|
236
|
+
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
237
|
+
options?: {
|
|
238
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
239
|
+
} | undefined
|
|
203
240
|
): (self: FiberMap<K, A, E>) => Effect.Effect<void>
|
|
204
241
|
<K, A, E, XE extends E, XA extends A>(
|
|
205
242
|
self: FiberMap<K, A, E>,
|
|
206
243
|
key: K,
|
|
207
|
-
fiber: Fiber.RuntimeFiber<XA, XE
|
|
244
|
+
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
245
|
+
options?: {
|
|
246
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
247
|
+
} | undefined
|
|
208
248
|
): Effect.Effect<void>
|
|
209
|
-
} = dual<
|
|
210
|
-
<K, A, E
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
fiber: Fiber.RuntimeFiber<XA, XE>
|
|
218
|
-
) => Effect.Effect<void>
|
|
219
|
-
>(3, (self, key, fiber) =>
|
|
249
|
+
} = dual((args) => isFiberMap(args[0]), <K, A, E, XE extends E, XA extends A>(
|
|
250
|
+
self: FiberMap<K, A, E>,
|
|
251
|
+
key: K,
|
|
252
|
+
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
253
|
+
options?: {
|
|
254
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
255
|
+
} | undefined
|
|
256
|
+
): Effect.Effect<void> =>
|
|
220
257
|
Effect.fiberIdWith(
|
|
221
|
-
(fiberId) =>
|
|
258
|
+
(fiberId) =>
|
|
259
|
+
Effect.sync(() =>
|
|
260
|
+
unsafeSet(self, key, fiber, {
|
|
261
|
+
interruptAs: fiberId,
|
|
262
|
+
onlyIfMissing: options?.onlyIfMissing
|
|
263
|
+
})
|
|
264
|
+
)
|
|
222
265
|
))
|
|
223
266
|
|
|
224
267
|
/**
|
|
@@ -238,7 +281,7 @@ export const unsafeGet: {
|
|
|
238
281
|
self: FiberMap<K, A, E>,
|
|
239
282
|
key: K
|
|
240
283
|
) => Option.Option<Fiber.RuntimeFiber<A, E>>
|
|
241
|
-
>(2, (self, key) => MutableHashMap.get(self.backing, key))
|
|
284
|
+
>(2, (self, key) => self.state._tag === "Closed" ? Option.none() : MutableHashMap.get(self.state.backing, key))
|
|
242
285
|
|
|
243
286
|
/**
|
|
244
287
|
* Retrieve a fiber from the FiberMap.
|
|
@@ -257,7 +300,36 @@ export const get: {
|
|
|
257
300
|
self: FiberMap<K, A, E>,
|
|
258
301
|
key: K
|
|
259
302
|
) => Effect.Effect<Fiber.RuntimeFiber<A, E>, NoSuchElementException>
|
|
260
|
-
>(2, (self, key) => Effect.suspend(() =>
|
|
303
|
+
>(2, (self, key) => Effect.suspend(() => unsafeGet(self, key)))
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Check if a key exists in the FiberMap.
|
|
307
|
+
*
|
|
308
|
+
* @since 2.0.0
|
|
309
|
+
* @categories combinators
|
|
310
|
+
*/
|
|
311
|
+
export const unsafeHas: {
|
|
312
|
+
<K>(key: K): <A, E>(self: FiberMap<K, A, E>) => boolean
|
|
313
|
+
<K, A, E>(self: FiberMap<K, A, E>, key: K): boolean
|
|
314
|
+
} = dual(
|
|
315
|
+
2,
|
|
316
|
+
<K, A, E>(self: FiberMap<K, A, E>, key: K): boolean =>
|
|
317
|
+
self.state._tag === "Closed" ? false : MutableHashMap.has(self.state.backing, key)
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Check if a key exists in the FiberMap.
|
|
322
|
+
*
|
|
323
|
+
* @since 2.0.0
|
|
324
|
+
* @categories combinators
|
|
325
|
+
*/
|
|
326
|
+
export const has: {
|
|
327
|
+
<K>(key: K): <A, E>(self: FiberMap<K, A, E>) => Effect.Effect<boolean>
|
|
328
|
+
<K, A, E>(self: FiberMap<K, A, E>, key: K): Effect.Effect<boolean>
|
|
329
|
+
} = dual(
|
|
330
|
+
2,
|
|
331
|
+
<K, A, E>(self: FiberMap<K, A, E>, key: K): Effect.Effect<boolean> => Effect.sync(() => unsafeHas(self, key))
|
|
332
|
+
)
|
|
261
333
|
|
|
262
334
|
/**
|
|
263
335
|
* Remove a fiber from the FiberMap, interrupting it if it exists.
|
|
@@ -278,11 +350,14 @@ export const remove: {
|
|
|
278
350
|
) => Effect.Effect<void>
|
|
279
351
|
>(2, (self, key) =>
|
|
280
352
|
Effect.suspend(() => {
|
|
281
|
-
|
|
353
|
+
if (self.state._tag === "Closed") {
|
|
354
|
+
return Effect.void
|
|
355
|
+
}
|
|
356
|
+
const fiber = MutableHashMap.get(self.state.backing, key)
|
|
282
357
|
if (fiber._tag === "None") {
|
|
283
|
-
return Effect.
|
|
358
|
+
return Effect.void
|
|
284
359
|
}
|
|
285
|
-
|
|
360
|
+
// will be removed by the observer
|
|
286
361
|
return Fiber.interrupt(fiber.value)
|
|
287
362
|
}))
|
|
288
363
|
|
|
@@ -291,12 +366,25 @@ export const remove: {
|
|
|
291
366
|
* @categories combinators
|
|
292
367
|
*/
|
|
293
368
|
export const clear = <K, A, E>(self: FiberMap<K, A, E>): Effect.Effect<void> =>
|
|
294
|
-
Effect.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
369
|
+
Effect.suspend(() => {
|
|
370
|
+
if (self.state._tag === "Closed") {
|
|
371
|
+
return Effect.void
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
return Effect.forEach(self.state.backing, ([, fiber]) =>
|
|
375
|
+
// will be removed by the observer
|
|
376
|
+
Fiber.interrupt(fiber))
|
|
377
|
+
})
|
|
378
|
+
|
|
379
|
+
const constInterruptedFiber = (function() {
|
|
380
|
+
let fiber: Fiber.RuntimeFiber<never, never> | undefined = undefined
|
|
381
|
+
return () => {
|
|
382
|
+
if (fiber === undefined) {
|
|
383
|
+
fiber = Effect.runFork(Effect.interrupt)
|
|
384
|
+
}
|
|
385
|
+
return fiber
|
|
386
|
+
}
|
|
387
|
+
})()
|
|
300
388
|
|
|
301
389
|
/**
|
|
302
390
|
* Run an Effect and add the forked fiber to the FiberMap.
|
|
@@ -308,32 +396,58 @@ export const clear = <K, A, E>(self: FiberMap<K, A, E>): Effect.Effect<void> =>
|
|
|
308
396
|
export const run: {
|
|
309
397
|
<K, A, E>(
|
|
310
398
|
self: FiberMap<K, A, E>,
|
|
311
|
-
key: K
|
|
399
|
+
key: K,
|
|
400
|
+
options?: {
|
|
401
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
402
|
+
} | undefined
|
|
312
403
|
): <R, XE extends E, XA extends A>(
|
|
313
404
|
effect: Effect.Effect<XA, XE, R>
|
|
314
405
|
) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>
|
|
315
406
|
<K, A, E, R, XE extends E, XA extends A>(
|
|
316
407
|
self: FiberMap<K, A, E>,
|
|
317
408
|
key: K,
|
|
318
|
-
effect: Effect.Effect<XA, XE, R
|
|
409
|
+
effect: Effect.Effect<XA, XE, R>,
|
|
410
|
+
options?: {
|
|
411
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
412
|
+
} | undefined
|
|
319
413
|
): Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>
|
|
320
414
|
} = function() {
|
|
321
|
-
if (arguments
|
|
415
|
+
if (Effect.isEffect(arguments[2])) {
|
|
322
416
|
const self = arguments[0] as FiberMap<any>
|
|
323
417
|
const key = arguments[1]
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
418
|
+
const effect = arguments[2] as Effect.Effect<any, any, any>
|
|
419
|
+
const options = arguments[3] as { readonly onlyIfMissing?: boolean } | undefined
|
|
420
|
+
return Effect.suspend(() => {
|
|
421
|
+
if (self.state._tag === "Closed") {
|
|
422
|
+
return Effect.interrupt
|
|
423
|
+
} else if (options?.onlyIfMissing === true && unsafeHas(self, key)) {
|
|
424
|
+
return Effect.sync(constInterruptedFiber)
|
|
425
|
+
}
|
|
426
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
427
|
+
Effect.tap(
|
|
428
|
+
restore(Effect.forkDaemon(effect)),
|
|
429
|
+
(fiber) => set(self, key, fiber, options)
|
|
430
|
+
)
|
|
328
431
|
)
|
|
432
|
+
}) as any
|
|
329
433
|
}
|
|
330
434
|
const self = arguments[0] as FiberMap<any>
|
|
331
435
|
const key = arguments[1]
|
|
332
|
-
const
|
|
333
|
-
return Effect.
|
|
334
|
-
Effect.
|
|
335
|
-
|
|
336
|
-
|
|
436
|
+
const options = arguments[2] as { readonly onlyIfMissing?: boolean } | undefined
|
|
437
|
+
return (effect: Effect.Effect<any, any, any>) =>
|
|
438
|
+
Effect.suspend(() => {
|
|
439
|
+
if (self.state._tag === "Closed") {
|
|
440
|
+
return Effect.interrupt
|
|
441
|
+
} else if (options?.onlyIfMissing === true && unsafeHas(self, key)) {
|
|
442
|
+
return Effect.sync(constInterruptedFiber)
|
|
443
|
+
}
|
|
444
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
445
|
+
Effect.tap(
|
|
446
|
+
restore(Effect.forkDaemon(effect)),
|
|
447
|
+
(fiber) => set(self, key, fiber, options)
|
|
448
|
+
)
|
|
449
|
+
)
|
|
450
|
+
})
|
|
337
451
|
}
|
|
338
452
|
|
|
339
453
|
/**
|
|
@@ -369,7 +483,11 @@ export const runtime: <K, A, E>(
|
|
|
369
483
|
<XE extends E, XA extends A>(
|
|
370
484
|
key: K,
|
|
371
485
|
effect: Effect.Effect<XA, XE, R>,
|
|
372
|
-
options?:
|
|
486
|
+
options?:
|
|
487
|
+
| Runtime.RunForkOptions & {
|
|
488
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
489
|
+
}
|
|
490
|
+
| undefined
|
|
373
491
|
) => Fiber.RuntimeFiber<XA, XE>,
|
|
374
492
|
never,
|
|
375
493
|
R
|
|
@@ -381,10 +499,19 @@ export const runtime: <K, A, E>(
|
|
|
381
499
|
return <XE extends E, XA extends A>(
|
|
382
500
|
key: K,
|
|
383
501
|
effect: Effect.Effect<XA, XE, R>,
|
|
384
|
-
options?:
|
|
502
|
+
options?:
|
|
503
|
+
| Runtime.RunForkOptions & {
|
|
504
|
+
readonly onlyIfMissing?: boolean | undefined
|
|
505
|
+
}
|
|
506
|
+
| undefined
|
|
385
507
|
) => {
|
|
508
|
+
if (self.state._tag === "Closed") {
|
|
509
|
+
return constInterruptedFiber()
|
|
510
|
+
} else if (options?.onlyIfMissing === true && unsafeHas(self, key)) {
|
|
511
|
+
return constInterruptedFiber()
|
|
512
|
+
}
|
|
386
513
|
const fiber = runFork(effect, options)
|
|
387
|
-
unsafeSet(self, key, fiber)
|
|
514
|
+
unsafeSet(self, key, fiber, options)
|
|
388
515
|
return fiber
|
|
389
516
|
}
|
|
390
517
|
}
|
|
@@ -395,7 +522,7 @@ export const runtime: <K, A, E>(
|
|
|
395
522
|
* @categories combinators
|
|
396
523
|
*/
|
|
397
524
|
export const size = <K, A, E>(self: FiberMap<K, A, E>): Effect.Effect<number> =>
|
|
398
|
-
Effect.sync(() => MutableHashMap.size(self.backing))
|
|
525
|
+
Effect.sync(() => self.state._tag === "Closed" ? 0 : MutableHashMap.size(self.state.backing))
|
|
399
526
|
|
|
400
527
|
/**
|
|
401
528
|
* Join all fibers in the FiberMap. If any of the Fiber's in the map terminate with a failure,
|
|
@@ -414,5 +541,5 @@ export const size = <K, A, E>(self: FiberMap<K, A, E>): Effect.Effect<number> =>
|
|
|
414
541
|
* yield* _(FiberMap.join(map));
|
|
415
542
|
* });
|
|
416
543
|
*/
|
|
417
|
-
export const join = <K, A, E>(self: FiberMap<K, A, E>): Effect.Effect<
|
|
418
|
-
Deferred.await(self.deferred as Deferred.Deferred<
|
|
544
|
+
export const join = <K, A, E>(self: FiberMap<K, A, E>): Effect.Effect<void, E> =>
|
|
545
|
+
Deferred.await(self.deferred as Deferred.Deferred<void, E>)
|
package/src/FiberRefs.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 2.0.0
|
|
3
3
|
*/
|
|
4
|
+
import type * as Arr from "./Array.js"
|
|
4
5
|
import type * as Effect from "./Effect.js"
|
|
5
6
|
import type * as FiberId from "./FiberId.js"
|
|
6
7
|
import type * as FiberRef from "./FiberRef.js"
|
|
@@ -8,7 +9,6 @@ import type * as HashSet from "./HashSet.js"
|
|
|
8
9
|
import * as internal from "./internal/fiberRefs.js"
|
|
9
10
|
import type * as Option from "./Option.js"
|
|
10
11
|
import type { Pipeable } from "./Pipeable.js"
|
|
11
|
-
import type * as Arr from "./ReadonlyArray.js"
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @since 2.0.0
|
package/src/FiberSet.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @since 2.0.0
|
|
3
3
|
*/
|
|
4
4
|
import * as Effect from "effect/Effect"
|
|
5
|
+
import * as FiberId from "effect/FiberId"
|
|
5
6
|
import type * as Scope from "effect/Scope"
|
|
6
7
|
import * as Cause from "./Cause.js"
|
|
7
8
|
import * as Deferred from "./Deferred.js"
|
|
@@ -11,6 +12,7 @@ import * as FiberRef from "./FiberRef.js"
|
|
|
11
12
|
import { dual } from "./Function.js"
|
|
12
13
|
import * as Inspectable from "./Inspectable.js"
|
|
13
14
|
import type { FiberRuntime } from "./internal/fiberRuntime.js"
|
|
15
|
+
import * as Iterable from "./Iterable.js"
|
|
14
16
|
import * as Option from "./Option.js"
|
|
15
17
|
import { type Pipeable, pipeArguments } from "./Pipeable.js"
|
|
16
18
|
import * as Predicate from "./Predicate.js"
|
|
@@ -36,8 +38,14 @@ export interface FiberSet<out A = unknown, out E = unknown>
|
|
|
36
38
|
extends Pipeable, Inspectable.Inspectable, Iterable<Fiber.RuntimeFiber<A, E>>
|
|
37
39
|
{
|
|
38
40
|
readonly [TypeId]: TypeId
|
|
39
|
-
readonly
|
|
40
|
-
|
|
41
|
+
readonly deferred: Deferred.Deferred<void, unknown>
|
|
42
|
+
/** @internal */
|
|
43
|
+
state: {
|
|
44
|
+
readonly _tag: "Open"
|
|
45
|
+
readonly backing: Set<Fiber.RuntimeFiber<A, E>>
|
|
46
|
+
} | {
|
|
47
|
+
readonly _tag: "Closed"
|
|
48
|
+
}
|
|
41
49
|
}
|
|
42
50
|
|
|
43
51
|
/**
|
|
@@ -49,7 +57,10 @@ export const isFiberSet = (u: unknown): u is FiberSet<unknown, unknown> => Predi
|
|
|
49
57
|
const Proto = {
|
|
50
58
|
[TypeId]: TypeId,
|
|
51
59
|
[Symbol.iterator](this: FiberSet<unknown, unknown>) {
|
|
52
|
-
|
|
60
|
+
if (this.state._tag === "Closed") {
|
|
61
|
+
return Iterable.empty()
|
|
62
|
+
}
|
|
63
|
+
return this.state.backing[Symbol.iterator]()
|
|
53
64
|
},
|
|
54
65
|
toString(this: FiberSet<unknown, unknown>) {
|
|
55
66
|
return Inspectable.format(this.toJSON())
|
|
@@ -57,7 +68,7 @@ const Proto = {
|
|
|
57
68
|
toJSON(this: FiberSet<unknown, unknown>) {
|
|
58
69
|
return {
|
|
59
70
|
_id: "FiberMap",
|
|
60
|
-
|
|
71
|
+
state: this.state
|
|
61
72
|
}
|
|
62
73
|
},
|
|
63
74
|
[Inspectable.NodeInspectSymbol](this: FiberSet<unknown, unknown>) {
|
|
@@ -70,10 +81,10 @@ const Proto = {
|
|
|
70
81
|
|
|
71
82
|
const unsafeMake = <A, E>(
|
|
72
83
|
backing: Set<Fiber.RuntimeFiber<A, E>>,
|
|
73
|
-
deferred: Deferred.Deferred<
|
|
84
|
+
deferred: Deferred.Deferred<void, unknown>
|
|
74
85
|
): FiberSet<A, E> => {
|
|
75
86
|
const self = Object.create(Proto)
|
|
76
|
-
self.
|
|
87
|
+
self.state = { _tag: "Open", backing }
|
|
77
88
|
self.deferred = deferred
|
|
78
89
|
return self
|
|
79
90
|
}
|
|
@@ -105,8 +116,15 @@ const unsafeMake = <A, E>(
|
|
|
105
116
|
*/
|
|
106
117
|
export const make = <A = unknown, E = unknown>(): Effect.Effect<FiberSet<A, E>, never, Scope.Scope> =>
|
|
107
118
|
Effect.acquireRelease(
|
|
108
|
-
Effect.map(Deferred.make<
|
|
109
|
-
|
|
119
|
+
Effect.map(Deferred.make<void, unknown>(), (deferred) => unsafeMake(new Set(), deferred)),
|
|
120
|
+
(set) =>
|
|
121
|
+
Effect.zipRight(
|
|
122
|
+
clear(set),
|
|
123
|
+
Effect.suspend(() => {
|
|
124
|
+
set.state = { _tag: "Closed" }
|
|
125
|
+
return Deferred.done(set.deferred, Exit.void)
|
|
126
|
+
})
|
|
127
|
+
)
|
|
110
128
|
)
|
|
111
129
|
|
|
112
130
|
/**
|
|
@@ -135,24 +153,39 @@ export const makeRuntime = <R = never, A = unknown, E = unknown>(): Effect.Effec
|
|
|
135
153
|
* @categories combinators
|
|
136
154
|
*/
|
|
137
155
|
export const unsafeAdd: {
|
|
138
|
-
<A, E, XE extends E, XA extends A>(fiber: Fiber.RuntimeFiber<XA, XE>): (self: FiberSet<A, E>) => void
|
|
139
|
-
<A, E, XE extends E, XA extends A>(self: FiberSet<A, E>, fiber: Fiber.RuntimeFiber<XA, XE>): void
|
|
140
|
-
} = dual<
|
|
141
156
|
<A, E, XE extends E, XA extends A>(
|
|
142
|
-
fiber: Fiber.RuntimeFiber<XA, XE
|
|
143
|
-
|
|
157
|
+
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
158
|
+
options?: {
|
|
159
|
+
readonly interruptAs?: FiberId.FiberId | undefined
|
|
160
|
+
} | undefined
|
|
161
|
+
): (self: FiberSet<A, E>) => void
|
|
144
162
|
<A, E, XE extends E, XA extends A>(
|
|
145
163
|
self: FiberSet<A, E>,
|
|
146
|
-
fiber: Fiber.RuntimeFiber<XA, XE
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
164
|
+
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
165
|
+
options?: {
|
|
166
|
+
readonly interruptAs?: FiberId.FiberId | undefined
|
|
167
|
+
} | undefined
|
|
168
|
+
): void
|
|
169
|
+
} = dual((args) => isFiberSet(args[0]), <A, E, XE extends E, XA extends A>(
|
|
170
|
+
self: FiberSet<A, E>,
|
|
171
|
+
fiber: Fiber.RuntimeFiber<XA, XE>,
|
|
172
|
+
options?: {
|
|
173
|
+
readonly interruptAs?: FiberId.FiberId | undefined
|
|
174
|
+
} | undefined
|
|
175
|
+
): void => {
|
|
176
|
+
if (self.state._tag === "Closed") {
|
|
177
|
+
fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none)
|
|
178
|
+
return
|
|
179
|
+
} else if (self.state.backing.has(fiber)) {
|
|
150
180
|
return
|
|
151
181
|
}
|
|
152
182
|
;(fiber as FiberRuntime<unknown, unknown>).setFiberRef(FiberRef.unhandledErrorLogLevel, Option.none())
|
|
153
|
-
self.backing.add(fiber)
|
|
183
|
+
self.state.backing.add(fiber)
|
|
154
184
|
fiber.addObserver((exit) => {
|
|
155
|
-
self.
|
|
185
|
+
if (self.state._tag === "Closed") {
|
|
186
|
+
return
|
|
187
|
+
}
|
|
188
|
+
self.state.backing.delete(fiber)
|
|
156
189
|
if (Exit.isFailure(exit) && !Cause.isInterruptedOnly(exit.cause)) {
|
|
157
190
|
Deferred.unsafeDone(self.deferred, exit as any)
|
|
158
191
|
}
|
|
@@ -181,19 +214,31 @@ export const add: {
|
|
|
181
214
|
self: FiberSet<A, E>,
|
|
182
215
|
fiber: Fiber.RuntimeFiber<XA, XE>
|
|
183
216
|
) => Effect.Effect<void>
|
|
184
|
-
>(
|
|
217
|
+
>(
|
|
218
|
+
2,
|
|
219
|
+
(self, fiber) =>
|
|
220
|
+
Effect.fiberIdWith((fiberId) =>
|
|
221
|
+
Effect.sync(() =>
|
|
222
|
+
unsafeAdd(self, fiber, {
|
|
223
|
+
interruptAs: fiberId
|
|
224
|
+
})
|
|
225
|
+
)
|
|
226
|
+
)
|
|
227
|
+
)
|
|
185
228
|
|
|
186
229
|
/**
|
|
187
230
|
* @since 2.0.0
|
|
188
231
|
* @categories combinators
|
|
189
232
|
*/
|
|
190
233
|
export const clear = <A, E>(self: FiberSet<A, E>): Effect.Effect<void> =>
|
|
191
|
-
Effect.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
234
|
+
Effect.suspend(() => {
|
|
235
|
+
if (self.state._tag === "Closed") {
|
|
236
|
+
return Effect.void
|
|
237
|
+
}
|
|
238
|
+
return Effect.forEach(self.state.backing, (fiber) =>
|
|
239
|
+
// will be removed by the observer
|
|
240
|
+
Fiber.interrupt(fiber))
|
|
241
|
+
})
|
|
197
242
|
|
|
198
243
|
/**
|
|
199
244
|
* Fork an Effect and add the forked fiber to the FiberSet.
|
|
@@ -214,16 +259,30 @@ export const run: {
|
|
|
214
259
|
const self = arguments[0] as FiberSet<any, any>
|
|
215
260
|
if (arguments.length === 1) {
|
|
216
261
|
return (effect: Effect.Effect<any, any, any>) =>
|
|
262
|
+
Effect.suspend(() => {
|
|
263
|
+
if (self.state._tag === "Closed") {
|
|
264
|
+
return Effect.interrupt
|
|
265
|
+
}
|
|
266
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
267
|
+
Effect.tap(
|
|
268
|
+
restore(Effect.forkDaemon(effect)),
|
|
269
|
+
(fiber) => add(self, fiber)
|
|
270
|
+
)
|
|
271
|
+
)
|
|
272
|
+
})
|
|
273
|
+
}
|
|
274
|
+
const effect = arguments[1] as Effect.Effect<any, any, any>
|
|
275
|
+
return Effect.suspend(() => {
|
|
276
|
+
if (self.state._tag === "Closed") {
|
|
277
|
+
return Effect.interrupt
|
|
278
|
+
}
|
|
279
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
217
280
|
Effect.tap(
|
|
218
|
-
Effect.forkDaemon(effect),
|
|
281
|
+
restore(Effect.forkDaemon(effect)),
|
|
219
282
|
(fiber) => add(self, fiber)
|
|
220
283
|
)
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
return Effect.tap(
|
|
224
|
-
Effect.forkDaemon(effect),
|
|
225
|
-
(fiber) => add(self, fiber)
|
|
226
|
-
) as any
|
|
284
|
+
)
|
|
285
|
+
}) as any
|
|
227
286
|
}
|
|
228
287
|
|
|
229
288
|
/**
|
|
@@ -281,7 +340,8 @@ export const runtime: <A, E>(
|
|
|
281
340
|
* @since 2.0.0
|
|
282
341
|
* @categories combinators
|
|
283
342
|
*/
|
|
284
|
-
export const size = <A, E>(self: FiberSet<A, E>): Effect.Effect<number> =>
|
|
343
|
+
export const size = <A, E>(self: FiberSet<A, E>): Effect.Effect<number> =>
|
|
344
|
+
Effect.sync(() => self.state._tag === "Closed" ? 0 : self.state.backing.size)
|
|
285
345
|
|
|
286
346
|
/**
|
|
287
347
|
* Join all fibers in the FiberSet. If any of the Fiber's in the set terminate with a failure,
|
|
@@ -300,5 +360,5 @@ export const size = <A, E>(self: FiberSet<A, E>): Effect.Effect<number> => Effec
|
|
|
300
360
|
* yield* _(FiberSet.join(set));
|
|
301
361
|
* });
|
|
302
362
|
*/
|
|
303
|
-
export const join = <A, E>(self: FiberSet<A, E>): Effect.Effect<
|
|
304
|
-
Deferred.await(self.deferred as Deferred.Deferred<
|
|
363
|
+
export const join = <A, E>(self: FiberSet<A, E>): Effect.Effect<void, E> =>
|
|
364
|
+
Deferred.await(self.deferred as Deferred.Deferred<void, E>)
|