@typed/fx 0.0.3 → 0.0.4
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/.eslintcache +1 -1
- package/.tracing-plugin/plugin.cjs +30 -0
- package/.tracing-plugin/plugin.d.ts.map +1 -1
- package/.tracing-plugin/plugin.js.map +1 -1
- package/cjs/Atomic/Atomic.d.ts +2 -2
- package/cjs/Atomic/Atomic.d.ts.map +1 -1
- package/cjs/Atomic/Atomic.js +1 -1
- package/cjs/Atomic/Atomic.js.map +1 -1
- package/cjs/Effect/Effect.d.ts +199 -0
- package/cjs/Effect/Effect.d.ts.map +1 -0
- package/cjs/Effect/Effect.js +66 -0
- package/cjs/Effect/Effect.js.map +1 -0
- package/cjs/Env/Env.d.ts.map +1 -1
- package/cjs/Env/Env.js +2 -55
- package/cjs/Env/Env.js.map +1 -1
- package/cjs/Exit/hkt.d.ts +11 -1
- package/cjs/Exit/hkt.d.ts.map +1 -1
- package/cjs/Exit/hkt.js +9 -3
- package/cjs/Exit/hkt.js.map +1 -1
- package/cjs/Fiber/Fiber.d.ts +8 -8
- package/cjs/Fiber/Fiber.d.ts.map +1 -1
- package/cjs/Fiber/Fiber.js +2 -9
- package/cjs/Fiber/Fiber.js.map +1 -1
- package/cjs/Fiber/fromExit.d.ts +4 -0
- package/cjs/Fiber/fromExit.d.ts.map +1 -0
- package/cjs/Fiber/fromExit.js +16 -0
- package/cjs/Fiber/fromExit.js.map +1 -0
- package/cjs/Fiber/hkt.d.ts +40 -0
- package/cjs/Fiber/hkt.d.ts.map +1 -0
- package/cjs/Fiber/hkt.js +101 -0
- package/cjs/Fiber/hkt.js.map +1 -0
- package/cjs/Fiber/index.d.ts +1 -0
- package/cjs/Fiber/index.d.ts.map +1 -1
- package/cjs/Fiber/index.js +1 -0
- package/cjs/Fiber/index.js.map +1 -1
- package/cjs/FiberContext/FiberContext.d.ts +5 -7
- package/cjs/FiberContext/FiberContext.d.ts.map +1 -1
- package/cjs/FiberContext/FiberContext.js +3 -5
- package/cjs/FiberContext/FiberContext.js.map +1 -1
- package/cjs/FiberId/FiberId.d.ts +1 -1
- package/cjs/FiberId/FiberId.d.ts.map +1 -1
- package/cjs/FiberRef/FiberRef.d.ts +2 -18
- package/cjs/FiberRef/FiberRef.d.ts.map +1 -1
- package/cjs/FiberRef/FiberRef.js +1 -34
- package/cjs/FiberRef/FiberRef.js.map +1 -1
- package/cjs/FiberRef/builtins.d.ts +22 -0
- package/cjs/FiberRef/builtins.d.ts.map +1 -0
- package/cjs/FiberRef/builtins.js +94 -0
- package/cjs/FiberRef/builtins.js.map +1 -0
- package/cjs/FiberRef/index.d.ts.map +1 -1
- package/cjs/FiberRef/index.js +0 -1
- package/cjs/FiberRef/index.js.map +1 -1
- package/cjs/FiberRefs/FiberRefs.d.ts +3 -1
- package/cjs/FiberRefs/FiberRefs.d.ts.map +1 -1
- package/cjs/FiberRefs/FiberRefs.js +5 -18
- package/cjs/FiberRefs/FiberRefs.js.map +1 -1
- package/cjs/FiberRuntime/FiberRuntime.d.ts +14 -14
- package/cjs/FiberRuntime/FiberRuntime.d.ts.map +1 -1
- package/cjs/FiberRuntime/FiberRuntime.js +159 -152
- package/cjs/FiberRuntime/FiberRuntime.js.map +1 -1
- package/cjs/Fx/Fx.d.ts +13 -12
- package/cjs/Fx/Fx.d.ts.map +1 -1
- package/cjs/Fx/Fx.js +52 -37
- package/cjs/Fx/Fx.js.map +1 -1
- package/cjs/Fx/Instruction.d.ts +33 -35
- package/cjs/Fx/Instruction.d.ts.map +1 -1
- package/cjs/Fx/Instruction.js +44 -26
- package/cjs/Fx/Instruction.js.map +1 -1
- package/cjs/Fx/fromLayer.d.ts +5 -0
- package/cjs/Fx/fromLayer.d.ts.map +1 -0
- package/cjs/Fx/fromLayer.js +33 -0
- package/cjs/Fx/fromLayer.js.map +1 -0
- package/cjs/Fx/index.d.ts +1 -0
- package/cjs/Fx/index.d.ts.map +1 -1
- package/cjs/Fx/index.js +1 -0
- package/cjs/Fx/index.js.map +1 -1
- package/cjs/Fx/join.d.ts +8 -2
- package/cjs/Fx/join.d.ts.map +1 -1
- package/cjs/Fx/join.js +9 -10
- package/cjs/Fx/join.js.map +1 -1
- package/cjs/Fx/logging.d.ts.map +1 -1
- package/cjs/Fx/logging.js +5 -4
- package/cjs/Fx/logging.js.map +1 -1
- package/cjs/Fx/run.d.ts +7 -2
- package/cjs/Fx/run.d.ts.map +1 -1
- package/cjs/Fx/run.js +9 -4
- package/cjs/Fx/run.js.map +1 -1
- package/cjs/Fx/scheduler.js +1 -1
- package/cjs/Fx/scheduler.js.map +1 -1
- package/cjs/Fx/scoped.d.ts +5 -5
- package/cjs/Fx/scoped.d.ts.map +1 -1
- package/cjs/Fx/scoped.js +30 -20
- package/cjs/Fx/scoped.js.map +1 -1
- package/cjs/Layer/Layer.d.ts +1 -0
- package/cjs/Layer/Layer.d.ts.map +1 -1
- package/cjs/Layer/Layer.js +7 -1
- package/cjs/Layer/Layer.js.map +1 -1
- package/cjs/Logger/Console.d.ts.map +1 -1
- package/cjs/Logger/Console.js +45 -17
- package/cjs/Logger/Console.js.map +1 -1
- package/cjs/Logger/Logger.d.ts +2 -1
- package/cjs/Logger/Logger.d.ts.map +1 -1
- package/cjs/Logger/Logger.js +2 -2
- package/cjs/Logger/Logger.js.map +1 -1
- package/cjs/Node/Runtime.d.ts +9 -0
- package/cjs/Node/Runtime.d.ts.map +1 -0
- package/cjs/Node/Runtime.js +20 -0
- package/cjs/Node/Runtime.js.map +1 -0
- package/cjs/Node/gracefulShutdown.d.ts +5 -0
- package/cjs/Node/gracefulShutdown.d.ts.map +1 -0
- package/cjs/Node/gracefulShutdown.js +66 -0
- package/cjs/Node/gracefulShutdown.js.map +1 -0
- package/cjs/Node/index.d.ts +3 -0
- package/cjs/Node/index.d.ts.map +1 -0
- package/cjs/{Ref → Node}/index.js +2 -2
- package/cjs/Node/index.js.map +1 -0
- package/cjs/Platform/Platform.d.ts +4 -2
- package/cjs/Platform/Platform.d.ts.map +1 -1
- package/cjs/Platform/Platform.js +5 -3
- package/cjs/Platform/Platform.js.map +1 -1
- package/cjs/Runtime/Runtime.d.ts +4 -4
- package/cjs/Runtime/Runtime.d.ts.map +1 -1
- package/cjs/Runtime/Runtime.js +1 -1
- package/cjs/Runtime/Runtime.js.map +1 -1
- package/cjs/Scheduler/RootScheduler.d.ts.map +1 -1
- package/cjs/Scheduler/RootScheduler.js +9 -8
- package/cjs/Scheduler/RootScheduler.js.map +1 -1
- package/cjs/Scheduler/Scheduler.d.ts +3 -2
- package/cjs/Scheduler/Scheduler.d.ts.map +1 -1
- package/cjs/Scheduler/Scheduler.js.map +1 -1
- package/cjs/Scheduler/index.d.ts +2 -0
- package/cjs/Scheduler/index.d.ts.map +1 -1
- package/cjs/Scheduler/index.js +17 -0
- package/cjs/Scheduler/index.js.map +1 -1
- package/cjs/Scheduler/{scheduled.d.ts → runSchedule.d.ts} +2 -2
- package/cjs/Scheduler/runSchedule.d.ts.map +1 -0
- package/cjs/Scheduler/{scheduled.js → runSchedule.js} +5 -5
- package/cjs/Scheduler/runSchedule.js.map +1 -0
- package/cjs/Scope/LocalScope.d.ts.map +1 -1
- package/cjs/Scope/LocalScope.js +4 -10
- package/cjs/Scope/LocalScope.js.map +1 -1
- package/cjs/Scope/ReleaseMap.d.ts +3 -3
- package/cjs/Scope/ReleaseMap.d.ts.map +1 -1
- package/cjs/Scope/ReleaseMap.js +45 -8
- package/cjs/Scope/ReleaseMap.js.map +1 -1
- package/cjs/Semaphore/Semaphore.d.ts +2 -1
- package/cjs/Semaphore/Semaphore.d.ts.map +1 -1
- package/cjs/Semaphore/Semaphore.js +14 -23
- package/cjs/Semaphore/Semaphore.js.map +1 -1
- package/cjs/Service/Id.d.ts +12 -1
- package/cjs/Service/Id.d.ts.map +1 -1
- package/cjs/Service/Id.js +11 -1
- package/cjs/Service/Id.js.map +1 -1
- package/cjs/Service/fn.d.ts +47 -0
- package/cjs/Service/fn.d.ts.map +1 -0
- package/cjs/Service/fn.js +19 -0
- package/cjs/Service/fn.js.map +1 -0
- package/cjs/Service/index.d.ts +1 -0
- package/cjs/Service/index.d.ts.map +1 -1
- package/cjs/Service/index.js +1 -0
- package/cjs/Service/index.js.map +1 -1
- package/cjs/Service/tagged.d.ts +10 -2
- package/cjs/Service/tagged.d.ts.map +1 -1
- package/cjs/Sink/Sink.d.ts +5 -5
- package/cjs/Sink/Sink.d.ts.map +1 -1
- package/cjs/Sink/Sink.js +11 -7
- package/cjs/Sink/Sink.js.map +1 -1
- package/cjs/Stream/Stream.d.ts +39 -6
- package/cjs/Stream/Stream.d.ts.map +1 -1
- package/cjs/Stream/Stream.js.map +1 -1
- package/cjs/Stream/bimap.d.ts +15 -0
- package/cjs/Stream/bimap.d.ts.map +1 -0
- package/cjs/Stream/bimap.js +74 -0
- package/cjs/Stream/bimap.js.map +1 -0
- package/cjs/Stream/continueWith.d.ts +27 -0
- package/cjs/Stream/continueWith.d.ts.map +1 -0
- package/cjs/Stream/continueWith.js +66 -0
- package/cjs/Stream/continueWith.js.map +1 -0
- package/cjs/Stream/drain.d.ts +3 -2
- package/cjs/Stream/drain.d.ts.map +1 -1
- package/cjs/Stream/drain.js +6 -6
- package/cjs/Stream/drain.js.map +1 -1
- package/cjs/Stream/empty.d.ts +3 -0
- package/cjs/Stream/empty.d.ts.map +1 -0
- package/cjs/Stream/empty.js +31 -0
- package/cjs/Stream/empty.js.map +1 -0
- package/cjs/Stream/flatMap.d.ts +15 -0
- package/cjs/Stream/flatMap.d.ts.map +1 -0
- package/cjs/Stream/flatMap.js +102 -0
- package/cjs/Stream/flatMap.js.map +1 -0
- package/cjs/Stream/flatMapFx.d.ts +4 -0
- package/cjs/Stream/flatMapFx.d.ts.map +1 -0
- package/cjs/Stream/flatMapFx.js +11 -0
- package/cjs/Stream/flatMapFx.js.map +1 -0
- package/cjs/Stream/fromCallback.d.ts +21 -0
- package/cjs/Stream/fromCallback.d.ts.map +1 -0
- package/cjs/Stream/fromCallback.js +65 -0
- package/cjs/Stream/fromCallback.js.map +1 -0
- package/cjs/Stream/fromFx.d.ts +12 -1
- package/cjs/Stream/fromFx.d.ts.map +1 -1
- package/cjs/Stream/fromFx.js +18 -4
- package/cjs/Stream/fromFx.js.map +1 -1
- package/cjs/Stream/hkt.d.ts +15 -0
- package/cjs/Stream/hkt.d.ts.map +1 -0
- package/cjs/Stream/hkt.js +42 -0
- package/cjs/Stream/hkt.js.map +1 -0
- package/cjs/Stream/index.d.ts +11 -0
- package/cjs/Stream/index.d.ts.map +1 -1
- package/cjs/Stream/index.js +11 -0
- package/cjs/Stream/index.js.map +1 -1
- package/cjs/Stream/map.d.ts +14 -0
- package/cjs/Stream/map.d.ts.map +1 -0
- package/cjs/Stream/map.js +30 -0
- package/cjs/Stream/map.js.map +1 -0
- package/cjs/Stream/periodic.d.ts +4 -0
- package/cjs/Stream/periodic.d.ts.map +1 -0
- package/cjs/Stream/periodic.js +32 -0
- package/cjs/Stream/periodic.js.map +1 -0
- package/cjs/Stream/run.d.ts +6 -0
- package/cjs/Stream/run.d.ts.map +1 -0
- package/cjs/{Ref/Ref.js → Stream/run.js} +10 -30
- package/cjs/Stream/run.js.map +1 -0
- package/cjs/Stream/scheduled.d.ts +5 -0
- package/cjs/Stream/scheduled.d.ts.map +1 -0
- package/cjs/Stream/scheduled.js +34 -0
- package/cjs/Stream/scheduled.js.map +1 -0
- package/cjs/Stream/tap.d.ts +4 -0
- package/cjs/Stream/tap.d.ts.map +1 -0
- package/cjs/Stream/tap.js +9 -0
- package/cjs/Stream/tap.js.map +1 -0
- package/cjs/Supervisor/Supervisor.d.ts +507 -0
- package/cjs/Supervisor/Supervisor.d.ts.map +1 -1
- package/cjs/Supervisor/Supervisor.js +2 -1
- package/cjs/Supervisor/Supervisor.js.map +1 -1
- package/cjs/Supervisor/index.d.ts +1 -0
- package/cjs/Supervisor/index.d.ts.map +1 -1
- package/cjs/Supervisor/index.js +1 -0
- package/cjs/Supervisor/index.js.map +1 -1
- package/cjs/Supervisor/maxFailures.d.ts +18 -0
- package/cjs/Supervisor/maxFailures.d.ts.map +1 -0
- package/cjs/Supervisor/maxFailures.js +72 -0
- package/cjs/Supervisor/maxFailures.js.map +1 -0
- package/cjs/Supervisor/trackIn.d.ts +6 -0
- package/cjs/Supervisor/trackIn.d.ts.map +1 -0
- package/cjs/Supervisor/trackIn.js +16 -0
- package/cjs/Supervisor/trackIn.js.map +1 -0
- package/cjs/Trace/Trace.d.ts +1 -1
- package/cjs/Trace/Trace.d.ts.map +1 -1
- package/cjs/Trace/Trace.js +8 -35
- package/cjs/Trace/Trace.js.map +1 -1
- package/cjs/Tracing/plugin.d.ts.map +1 -1
- package/cjs/Tracing/plugin.js +30 -0
- package/cjs/Tracing/plugin.js.map +1 -1
- package/cjs/_internal/suite.d.ts +12 -0
- package/cjs/_internal/suite.d.ts.map +1 -0
- package/cjs/_internal/suite.js +13 -0
- package/cjs/_internal/suite.js.map +1 -0
- package/cjs/index.d.ts +3 -1
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +4 -2
- package/cjs/index.js.map +1 -1
- package/coverage/tmp/coverage-14409-1663382601663-0.json +1 -0
- package/coverage/tmp/coverage-14414-1663382601571-0.json +1 -0
- package/coverage/tmp/coverage-14432-1663382601494-0.json +1 -0
- package/esm/Atomic/Atomic.d.ts +2 -2
- package/esm/Atomic/Atomic.d.ts.map +1 -1
- package/esm/Atomic/Atomic.js +1 -1
- package/esm/Atomic/Atomic.js.map +1 -1
- package/esm/Effect/Effect.d.ts +199 -0
- package/esm/Effect/Effect.d.ts.map +1 -0
- package/esm/Effect/Effect.js +50 -0
- package/esm/Effect/Effect.js.map +1 -0
- package/esm/Env/Env.d.ts.map +1 -1
- package/esm/Env/Env.js +2 -32
- package/esm/Env/Env.js.map +1 -1
- package/esm/Exit/hkt.d.ts +11 -1
- package/esm/Exit/hkt.d.ts.map +1 -1
- package/esm/Exit/hkt.js +9 -3
- package/esm/Exit/hkt.js.map +1 -1
- package/esm/Fiber/Fiber.d.ts +8 -8
- package/esm/Fiber/Fiber.d.ts.map +1 -1
- package/esm/Fiber/Fiber.js +3 -10
- package/esm/Fiber/Fiber.js.map +1 -1
- package/esm/Fiber/fromExit.d.ts +4 -0
- package/esm/Fiber/fromExit.d.ts.map +1 -0
- package/esm/Fiber/fromExit.js +12 -0
- package/esm/Fiber/fromExit.js.map +1 -0
- package/esm/Fiber/hkt.d.ts +40 -0
- package/esm/Fiber/hkt.d.ts.map +1 -0
- package/esm/Fiber/hkt.js +75 -0
- package/esm/Fiber/hkt.js.map +1 -0
- package/esm/Fiber/index.d.ts +1 -0
- package/esm/Fiber/index.d.ts.map +1 -1
- package/esm/Fiber/index.js +1 -0
- package/esm/Fiber/index.js.map +1 -1
- package/esm/FiberContext/FiberContext.d.ts +5 -7
- package/esm/FiberContext/FiberContext.d.ts.map +1 -1
- package/esm/FiberContext/FiberContext.js +3 -5
- package/esm/FiberContext/FiberContext.js.map +1 -1
- package/esm/FiberId/FiberId.d.ts +1 -1
- package/esm/FiberId/FiberId.d.ts.map +1 -1
- package/esm/FiberRef/FiberRef.d.ts +2 -18
- package/esm/FiberRef/FiberRef.d.ts.map +1 -1
- package/esm/FiberRef/FiberRef.js +1 -34
- package/esm/FiberRef/FiberRef.js.map +1 -1
- package/esm/FiberRef/builtins.d.ts +22 -0
- package/esm/FiberRef/builtins.d.ts.map +1 -0
- package/esm/FiberRef/builtins.js +67 -0
- package/esm/FiberRef/builtins.js.map +1 -0
- package/esm/FiberRef/index.d.ts.map +1 -1
- package/esm/FiberRef/index.js +0 -1
- package/esm/FiberRef/index.js.map +1 -1
- package/esm/FiberRefs/FiberRefs.d.ts +3 -1
- package/esm/FiberRefs/FiberRefs.d.ts.map +1 -1
- package/esm/FiberRefs/FiberRefs.js +5 -18
- package/esm/FiberRefs/FiberRefs.js.map +1 -1
- package/esm/FiberRuntime/FiberRuntime.d.ts +14 -14
- package/esm/FiberRuntime/FiberRuntime.d.ts.map +1 -1
- package/esm/FiberRuntime/FiberRuntime.js +160 -153
- package/esm/FiberRuntime/FiberRuntime.js.map +1 -1
- package/esm/Fx/Fx.d.ts +13 -12
- package/esm/Fx/Fx.d.ts.map +1 -1
- package/esm/Fx/Fx.js +49 -35
- package/esm/Fx/Fx.js.map +1 -1
- package/esm/Fx/Instruction.d.ts +33 -35
- package/esm/Fx/Instruction.d.ts.map +1 -1
- package/esm/Fx/Instruction.js +42 -24
- package/esm/Fx/Instruction.js.map +1 -1
- package/esm/Fx/fromLayer.d.ts +5 -0
- package/esm/Fx/fromLayer.d.ts.map +1 -0
- package/esm/Fx/fromLayer.js +6 -0
- package/esm/Fx/fromLayer.js.map +1 -0
- package/esm/Fx/index.d.ts +1 -0
- package/esm/Fx/index.d.ts.map +1 -1
- package/esm/Fx/index.js +1 -0
- package/esm/Fx/index.js.map +1 -1
- package/esm/Fx/join.d.ts +8 -2
- package/esm/Fx/join.d.ts.map +1 -1
- package/esm/Fx/join.js +6 -10
- package/esm/Fx/join.js.map +1 -1
- package/esm/Fx/logging.d.ts.map +1 -1
- package/esm/Fx/logging.js +3 -2
- package/esm/Fx/logging.js.map +1 -1
- package/esm/Fx/run.d.ts +7 -2
- package/esm/Fx/run.d.ts.map +1 -1
- package/esm/Fx/run.js +5 -0
- package/esm/Fx/run.js.map +1 -1
- package/esm/Fx/scheduler.js +1 -1
- package/esm/Fx/scheduler.js.map +1 -1
- package/esm/Fx/scoped.d.ts +5 -5
- package/esm/Fx/scoped.d.ts.map +1 -1
- package/esm/Fx/scoped.js +7 -20
- package/esm/Fx/scoped.js.map +1 -1
- package/esm/Layer/Layer.d.ts +1 -0
- package/esm/Layer/Layer.d.ts.map +1 -1
- package/esm/Layer/Layer.js +5 -0
- package/esm/Layer/Layer.js.map +1 -1
- package/esm/Logger/Console.d.ts.map +1 -1
- package/esm/Logger/Console.js +22 -17
- package/esm/Logger/Console.js.map +1 -1
- package/esm/Logger/Logger.d.ts +2 -1
- package/esm/Logger/Logger.d.ts.map +1 -1
- package/esm/Logger/Logger.js +2 -2
- package/esm/Logger/Logger.js.map +1 -1
- package/esm/Node/Runtime.d.ts +9 -0
- package/esm/Node/Runtime.d.ts.map +1 -0
- package/esm/Node/Runtime.js +17 -0
- package/esm/Node/Runtime.js.map +1 -0
- package/esm/Node/gracefulShutdown.d.ts +5 -0
- package/esm/Node/gracefulShutdown.d.ts.map +1 -0
- package/esm/Node/gracefulShutdown.js +36 -0
- package/esm/Node/gracefulShutdown.js.map +1 -0
- package/esm/Node/index.d.ts +3 -0
- package/esm/Node/index.d.ts.map +1 -0
- package/esm/Node/index.js +3 -0
- package/esm/Node/index.js.map +1 -0
- package/esm/Platform/Platform.d.ts +4 -2
- package/esm/Platform/Platform.d.ts.map +1 -1
- package/esm/Platform/Platform.js +5 -3
- package/esm/Platform/Platform.js.map +1 -1
- package/esm/Runtime/Runtime.d.ts +4 -4
- package/esm/Runtime/Runtime.d.ts.map +1 -1
- package/esm/Runtime/Runtime.js +1 -1
- package/esm/Runtime/Runtime.js.map +1 -1
- package/esm/Scheduler/RootScheduler.d.ts.map +1 -1
- package/esm/Scheduler/RootScheduler.js +7 -6
- package/esm/Scheduler/RootScheduler.js.map +1 -1
- package/esm/Scheduler/Scheduler.d.ts +3 -2
- package/esm/Scheduler/Scheduler.d.ts.map +1 -1
- package/esm/Scheduler/Scheduler.js.map +1 -1
- package/esm/Scheduler/index.d.ts +2 -0
- package/esm/Scheduler/index.d.ts.map +1 -1
- package/esm/Scheduler/index.js +2 -1
- package/esm/Scheduler/index.js.map +1 -1
- package/esm/Scheduler/{scheduled.d.ts → runSchedule.d.ts} +2 -2
- package/esm/Scheduler/runSchedule.d.ts.map +1 -0
- package/esm/Scheduler/{scheduled.js → runSchedule.js} +3 -3
- package/esm/Scheduler/runSchedule.js.map +1 -0
- package/esm/Scope/LocalScope.d.ts.map +1 -1
- package/esm/Scope/LocalScope.js +5 -11
- package/esm/Scope/LocalScope.js.map +1 -1
- package/esm/Scope/ReleaseMap.d.ts +3 -3
- package/esm/Scope/ReleaseMap.d.ts.map +1 -1
- package/esm/Scope/ReleaseMap.js +23 -9
- package/esm/Scope/ReleaseMap.js.map +1 -1
- package/esm/Semaphore/Semaphore.d.ts +2 -1
- package/esm/Semaphore/Semaphore.d.ts.map +1 -1
- package/esm/Semaphore/Semaphore.js +16 -25
- package/esm/Semaphore/Semaphore.js.map +1 -1
- package/esm/Service/Id.d.ts +12 -1
- package/esm/Service/Id.d.ts.map +1 -1
- package/esm/Service/Id.js +12 -2
- package/esm/Service/Id.js.map +1 -1
- package/esm/Service/fn.d.ts +47 -0
- package/esm/Service/fn.d.ts.map +1 -0
- package/esm/Service/fn.js +15 -0
- package/esm/Service/fn.js.map +1 -0
- package/esm/Service/index.d.ts +1 -0
- package/esm/Service/index.d.ts.map +1 -1
- package/esm/Service/index.js +1 -0
- package/esm/Service/index.js.map +1 -1
- package/esm/Service/tagged.d.ts +10 -2
- package/esm/Service/tagged.d.ts.map +1 -1
- package/esm/Sink/Sink.d.ts +5 -5
- package/esm/Sink/Sink.d.ts.map +1 -1
- package/esm/Sink/Sink.js +12 -8
- package/esm/Sink/Sink.js.map +1 -1
- package/esm/Stream/Stream.d.ts +39 -6
- package/esm/Stream/Stream.d.ts.map +1 -1
- package/esm/Stream/Stream.js.map +1 -1
- package/esm/Stream/bimap.d.ts +15 -0
- package/esm/Stream/bimap.d.ts.map +1 -0
- package/esm/Stream/bimap.js +46 -0
- package/esm/Stream/bimap.js.map +1 -0
- package/esm/Stream/continueWith.d.ts +27 -0
- package/esm/Stream/continueWith.d.ts.map +1 -0
- package/esm/Stream/continueWith.js +36 -0
- package/esm/Stream/continueWith.js.map +1 -0
- package/esm/Stream/drain.d.ts +3 -2
- package/esm/Stream/drain.d.ts.map +1 -1
- package/esm/Stream/drain.js +6 -6
- package/esm/Stream/drain.js.map +1 -1
- package/esm/Stream/empty.d.ts +3 -0
- package/esm/Stream/empty.d.ts.map +1 -0
- package/esm/Stream/empty.js +5 -0
- package/esm/Stream/empty.js.map +1 -0
- package/esm/Stream/flatMap.d.ts +15 -0
- package/esm/Stream/flatMap.d.ts.map +1 -0
- package/esm/Stream/flatMap.js +74 -0
- package/esm/Stream/flatMap.js.map +1 -0
- package/esm/Stream/flatMapFx.d.ts +4 -0
- package/esm/Stream/flatMapFx.d.ts.map +1 -0
- package/esm/Stream/flatMapFx.js +7 -0
- package/esm/Stream/flatMapFx.js.map +1 -0
- package/esm/Stream/fromCallback.d.ts +21 -0
- package/esm/Stream/fromCallback.d.ts.map +1 -0
- package/esm/Stream/fromCallback.js +37 -0
- package/esm/Stream/fromCallback.js.map +1 -0
- package/esm/Stream/fromFx.d.ts +12 -1
- package/esm/Stream/fromFx.d.ts.map +1 -1
- package/esm/Stream/fromFx.js +16 -2
- package/esm/Stream/fromFx.js.map +1 -1
- package/esm/Stream/hkt.d.ts +15 -0
- package/esm/Stream/hkt.d.ts.map +1 -0
- package/esm/Stream/hkt.js +16 -0
- package/esm/Stream/hkt.js.map +1 -0
- package/esm/Stream/index.d.ts +11 -0
- package/esm/Stream/index.d.ts.map +1 -1
- package/esm/Stream/index.js +11 -0
- package/esm/Stream/index.js.map +1 -1
- package/esm/Stream/map.d.ts +14 -0
- package/esm/Stream/map.d.ts.map +1 -0
- package/esm/Stream/map.js +25 -0
- package/esm/Stream/map.js.map +1 -0
- package/esm/Stream/periodic.d.ts +4 -0
- package/esm/Stream/periodic.d.ts.map +1 -0
- package/esm/Stream/periodic.js +5 -0
- package/esm/Stream/periodic.js.map +1 -0
- package/esm/Stream/run.d.ts +6 -0
- package/esm/Stream/run.d.ts.map +1 -0
- package/esm/Stream/run.js +9 -0
- package/esm/Stream/run.js.map +1 -0
- package/esm/Stream/scheduled.d.ts +5 -0
- package/esm/Stream/scheduled.d.ts.map +1 -0
- package/esm/Stream/scheduled.js +7 -0
- package/esm/Stream/scheduled.js.map +1 -0
- package/esm/Stream/tap.d.ts +4 -0
- package/esm/Stream/tap.d.ts.map +1 -0
- package/esm/Stream/tap.js +5 -0
- package/esm/Stream/tap.js.map +1 -0
- package/esm/Supervisor/Supervisor.d.ts +507 -0
- package/esm/Supervisor/Supervisor.d.ts.map +1 -1
- package/esm/Supervisor/Supervisor.js +2 -1
- package/esm/Supervisor/Supervisor.js.map +1 -1
- package/esm/Supervisor/index.d.ts +1 -0
- package/esm/Supervisor/index.d.ts.map +1 -1
- package/esm/Supervisor/index.js +1 -0
- package/esm/Supervisor/index.js.map +1 -1
- package/esm/Supervisor/maxFailures.d.ts +18 -0
- package/esm/Supervisor/maxFailures.d.ts.map +1 -0
- package/esm/Supervisor/maxFailures.js +45 -0
- package/esm/Supervisor/maxFailures.js.map +1 -0
- package/esm/Supervisor/trackIn.d.ts +6 -0
- package/esm/Supervisor/trackIn.d.ts.map +1 -0
- package/esm/Supervisor/trackIn.js +12 -0
- package/esm/Supervisor/trackIn.js.map +1 -0
- package/esm/Trace/Trace.d.ts +1 -1
- package/esm/Trace/Trace.d.ts.map +1 -1
- package/esm/Trace/Trace.js +8 -35
- package/esm/Trace/Trace.js.map +1 -1
- package/esm/Tracing/plugin.d.ts.map +1 -1
- package/esm/Tracing/plugin.js +30 -0
- package/esm/Tracing/plugin.js.map +1 -1
- package/esm/_internal/suite.d.ts +12 -0
- package/esm/_internal/suite.d.ts.map +1 -0
- package/esm/_internal/suite.js +8 -0
- package/esm/_internal/suite.js.map +1 -0
- package/esm/index.d.ts +3 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +6 -2
- package/esm/index.js.map +1 -1
- package/package.json +269 -38
- package/readme.md +1 -2
- package/src/Atomic/Atomic.test.ts +33 -0
- package/src/Atomic/Atomic.ts +3 -3
- package/src/Effect/Effect.ts +109 -0
- package/src/Env/Env.ts +3 -51
- package/src/Exit/hkt.ts +18 -3
- package/src/Fiber/Fiber.ts +17 -16
- package/src/Fiber/fromExit.ts +14 -0
- package/src/Fiber/hkt.ts +125 -0
- package/src/Fiber/index.ts +1 -0
- package/src/FiberContext/FiberContext.ts +17 -16
- package/src/FiberId/FiberId.ts +1 -1
- package/src/FiberRef/FiberRef.ts +3 -63
- package/src/FiberRef/builtins.ts +114 -0
- package/src/FiberRef/index.ts +0 -1
- package/src/FiberRefs/FiberRefs.ts +11 -26
- package/src/FiberRuntime/FiberRuntime.ts +263 -245
- package/src/Fx/Fx.test.ts +52 -31
- package/src/Fx/Fx.ts +58 -34
- package/src/Fx/Instruction.ts +103 -60
- package/src/Fx/fromLayer.ts +8 -0
- package/src/Fx/index.ts +1 -0
- package/src/Fx/join.ts +23 -10
- package/src/Fx/logging.ts +5 -2
- package/src/Fx/run.ts +7 -1
- package/src/Fx/scheduler.ts +1 -1
- package/src/Fx/scoped.ts +35 -46
- package/src/Layer/Layer.ts +11 -5
- package/src/Logger/Console.test.ts +9 -5
- package/src/Logger/Console.ts +32 -17
- package/src/Logger/Logger.ts +4 -2
- package/src/Node/Runtime.ts +26 -0
- package/src/Node/gracefulShutdown.ts +54 -0
- package/src/Node/index.ts +2 -0
- package/src/Platform/Platform.ts +11 -5
- package/src/Runtime/Runtime.ts +7 -5
- package/src/Scheduler/RootScheduler.ts +18 -10
- package/src/Scheduler/Scheduler.ts +12 -5
- package/src/Scheduler/index.ts +2 -0
- package/src/Scheduler/{scheduled.ts → runSchedule.ts} +1 -1
- package/src/Scope/Closeable.test.ts +5 -1
- package/src/Scope/LocalScope.ts +13 -12
- package/src/Scope/ReleaseMap.ts +27 -9
- package/src/Semaphore/Semaphore.ts +28 -29
- package/src/Service/Id.ts +34 -2
- package/src/Service/fn.ts +41 -0
- package/src/Service/index.ts +1 -0
- package/src/Sink/Sink.ts +35 -21
- package/src/Stream/Stream.ts +43 -7
- package/src/Stream/_internal.test.ts +12 -0
- package/src/Stream/bimap.ts +59 -0
- package/src/Stream/continueWith.test.ts +23 -0
- package/src/Stream/continueWith.ts +65 -0
- package/src/Stream/drain.ts +15 -29
- package/src/Stream/empty.ts +8 -0
- package/src/Stream/flatMap.test.ts +43 -0
- package/src/Stream/flatMap.ts +102 -0
- package/src/Stream/flatMapFx.ts +12 -0
- package/src/Stream/fromCallback.test.ts +35 -0
- package/src/Stream/fromCallback.ts +65 -0
- package/src/Stream/fromFx.test.ts +3 -4
- package/src/Stream/fromFx.ts +34 -16
- package/src/Stream/hkt.ts +36 -0
- package/src/Stream/index.ts +11 -0
- package/src/Stream/logging.test.ts +24 -0
- package/src/Stream/map.ts +35 -0
- package/src/Stream/periodic.ts +9 -0
- package/src/Stream/run.ts +14 -0
- package/src/Stream/scheduled.test.ts +34 -0
- package/src/Stream/scheduled.ts +21 -0
- package/src/Stream/tap.ts +21 -0
- package/src/Supervisor/Supervisor.ts +14 -0
- package/src/Supervisor/index.ts +1 -0
- package/src/Supervisor/maxFailures.ts +86 -0
- package/src/Supervisor/trackIn.ts +33 -0
- package/src/Trace/Trace.ts +11 -45
- package/src/Tracing/plugin.ts +44 -0
- package/src/_internal/suite.ts +24 -0
- package/src/index.ts +3 -1
- package/cjs/Ref/Ref.d.ts +0 -40
- package/cjs/Ref/Ref.d.ts.map +0 -1
- package/cjs/Ref/Ref.js.map +0 -1
- package/cjs/Ref/atomic.d.ts +0 -5
- package/cjs/Ref/atomic.d.ts.map +0 -1
- package/cjs/Ref/atomic.js +0 -20
- package/cjs/Ref/atomic.js.map +0 -1
- package/cjs/Ref/index.d.ts +0 -3
- package/cjs/Ref/index.d.ts.map +0 -1
- package/cjs/Ref/index.js.map +0 -1
- package/cjs/Scheduler/scheduled.d.ts.map +0 -1
- package/cjs/Scheduler/scheduled.js.map +0 -1
- package/cjs/internal.d.ts +0 -18
- package/cjs/internal.d.ts.map +0 -1
- package/cjs/internal.js +0 -3
- package/cjs/internal.js.map +0 -1
- package/coverage/tmp/coverage-74826-1660784295157-0.json +0 -1
- package/coverage/tmp/coverage-74830-1660784295115-0.json +0 -1
- package/coverage/tmp/coverage-74836-1660784295074-0.json +0 -1
- package/esm/Ref/Ref.d.ts +0 -40
- package/esm/Ref/Ref.d.ts.map +0 -1
- package/esm/Ref/Ref.js +0 -30
- package/esm/Ref/Ref.js.map +0 -1
- package/esm/Ref/atomic.d.ts +0 -5
- package/esm/Ref/atomic.d.ts.map +0 -1
- package/esm/Ref/atomic.js +0 -16
- package/esm/Ref/atomic.js.map +0 -1
- package/esm/Ref/index.d.ts +0 -3
- package/esm/Ref/index.d.ts.map +0 -1
- package/esm/Ref/index.js +0 -3
- package/esm/Ref/index.js.map +0 -1
- package/esm/Scheduler/scheduled.d.ts.map +0 -1
- package/esm/Scheduler/scheduled.js.map +0 -1
- package/esm/internal.d.ts +0 -18
- package/esm/internal.d.ts.map +0 -1
- package/esm/internal.js +0 -2
- package/esm/internal.js.map +0 -1
- package/src/Ref/Ref.test.ts +0 -34
- package/src/Ref/Ref.ts +0 -76
- package/src/Ref/atomic.ts +0 -33
- package/src/Ref/index.ts +0 -2
- package/src/internal.ts +0 -33
package/src/Env/Env.ts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as Maybe from 'hkt-ts/Maybe'
|
|
3
|
-
|
|
4
|
-
// eslint-disable-next-line import/no-cycle
|
|
5
|
-
import * as FiberRef from '@/FiberRef/index.js'
|
|
6
|
-
// eslint-disable-next-line import/no-cycle
|
|
1
|
+
import { getServiceFromFiberRefs } from '@/FiberRef/builtins.js'
|
|
7
2
|
import * as FiberRefs from '@/FiberRefs/FiberRefs.js'
|
|
8
|
-
import {
|
|
9
|
-
// eslint-disable-next-line import/no-cycle
|
|
10
|
-
import { join } from '@/Fx/join.js'
|
|
3
|
+
import { Of } from '@/Fx/Fx.js'
|
|
11
4
|
import { Service } from '@/Service/Service.js'
|
|
12
5
|
|
|
13
6
|
export interface Env<R> {
|
|
@@ -16,47 +9,6 @@ export interface Env<R> {
|
|
|
16
9
|
|
|
17
10
|
export function Env<R>(fiberRefs: FiberRefs.FiberRefs): Env<R> {
|
|
18
11
|
return {
|
|
19
|
-
get:
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function get(fiberRefs: FiberRefs.FiberRefs) {
|
|
24
|
-
return <S>(id: Service<S>): Of<S> => {
|
|
25
|
-
return Fx(function* () {
|
|
26
|
-
const service = pipe(
|
|
27
|
-
fiberRefs,
|
|
28
|
-
FiberRefs.maybeGetFiberRefStack(FiberRef.Services),
|
|
29
|
-
Maybe.flatMap((s) => s.value.get(id)),
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
if (Maybe.isJust(service)) {
|
|
33
|
-
return service.value as S
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const layers = FiberRefs.maybeGetFiberRefStack(FiberRef.Layers)(fiberRefs)
|
|
37
|
-
const layer = pipe(
|
|
38
|
-
layers,
|
|
39
|
-
Maybe.flatMap((s) => s.value.get(id)),
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
if (Maybe.isNothing(layers) || Maybe.isNothing(layer)) {
|
|
43
|
-
throw new Error(`Unable to find Layer or Service for ${id.description}`)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const [makeFiber, currentFiber] = layer.value
|
|
47
|
-
|
|
48
|
-
if (Maybe.isJust(currentFiber)) {
|
|
49
|
-
return (yield* fromExit(yield* currentFiber.value.exit)) as S
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const fiber = makeFiber()
|
|
53
|
-
|
|
54
|
-
FiberRefs.setFiberRef(
|
|
55
|
-
FiberRef.Layers,
|
|
56
|
-
layers.value.value.set(id, [makeFiber, Maybe.Just(fiber)]),
|
|
57
|
-
)(fiberRefs)
|
|
58
|
-
|
|
59
|
-
return (yield* join(fiber)) as S
|
|
60
|
-
})
|
|
12
|
+
get: getServiceFromFiberRefs(fiberRefs),
|
|
61
13
|
}
|
|
62
14
|
}
|
package/src/Exit/hkt.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { HKT2, Params, flow, pipe } from 'hkt-ts'
|
|
2
|
-
import
|
|
1
|
+
import { HKT2, Params, Variance, flow, pipe } from 'hkt-ts'
|
|
2
|
+
import * as Either from 'hkt-ts/Either'
|
|
3
3
|
import * as B from 'hkt-ts/Typeclass/Bicovariant'
|
|
4
|
+
import { Bottom2 } from 'hkt-ts/Typeclass/Bottom'
|
|
4
5
|
import * as C from 'hkt-ts/Typeclass/Covariant'
|
|
6
|
+
import { Top2 } from 'hkt-ts/Typeclass/Top'
|
|
5
7
|
|
|
6
8
|
import { Exit } from './Exit.js'
|
|
7
9
|
|
|
@@ -9,10 +11,15 @@ import * as Cause from '@/Cause/index.js'
|
|
|
9
11
|
|
|
10
12
|
export interface ExitHKT extends HKT2 {
|
|
11
13
|
readonly type: Exit<this[Params.E], this[Params.A]>
|
|
14
|
+
readonly defaults: {
|
|
15
|
+
readonly [Params.E]: Variance.Covariant<unknown>
|
|
16
|
+
readonly [Params.A]: Variance.Covariant<unknown>
|
|
17
|
+
}
|
|
12
18
|
}
|
|
13
19
|
|
|
14
20
|
export const Bicovariant: B.Bicovariant2<ExitHKT> = {
|
|
15
|
-
bimap: (f, g) => (exit) =>
|
|
21
|
+
bimap: (f, g) => (exit) =>
|
|
22
|
+
pipe(exit, Either.match(flow(Cause.map(f), Either.Left), flow(g, Either.Right))),
|
|
16
23
|
}
|
|
17
24
|
|
|
18
25
|
export const bimap = Bicovariant.bimap
|
|
@@ -27,3 +34,11 @@ export const bindTo = C.bindTo(Covariant)
|
|
|
27
34
|
export const flap = C.flap(Covariant)
|
|
28
35
|
export const mapTo = C.mapTo(Covariant)
|
|
29
36
|
export const tupled = C.tupled(Covariant)
|
|
37
|
+
|
|
38
|
+
export const Top = Either.Top as Top2<ExitHKT>
|
|
39
|
+
export const top = Top.top
|
|
40
|
+
|
|
41
|
+
export const Bottom: Bottom2<ExitHKT> = {
|
|
42
|
+
bottom: Either.Left(Cause.Empty),
|
|
43
|
+
}
|
|
44
|
+
export const bottom = Bottom.bottom
|
package/src/Fiber/Fiber.ts
CHANGED
|
@@ -3,10 +3,9 @@ import { flow, pipe } from 'hkt-ts/function'
|
|
|
3
3
|
import type { Exit } from '@/Exit/Exit.js'
|
|
4
4
|
import type { FiberContext } from '@/FiberContext/FiberContext.js'
|
|
5
5
|
import type { FiberId } from '@/FiberId/FiberId.js'
|
|
6
|
-
// eslint-disable-next-line import/no-cycle
|
|
7
6
|
import { join } from '@/FiberRefs/FiberRefs.js'
|
|
8
7
|
import type { FiberStatus } from '@/FiberStatus/index.js'
|
|
9
|
-
import {
|
|
8
|
+
import { Of, flatMap, fork, fromExit, getFiberContext, map } from '@/Fx/Fx.js'
|
|
10
9
|
import type { Trace } from '@/Trace/Trace.js'
|
|
11
10
|
|
|
12
11
|
export type Fiber<E, A> = Live<E, A> | Synthetic<E, A>
|
|
@@ -31,20 +30,20 @@ export interface Live<E, A> {
|
|
|
31
30
|
|
|
32
31
|
export type AnyLiveFiber = Live<any, any> | Live<never, never> | Live<any, never> | Live<never, any>
|
|
33
32
|
|
|
34
|
-
export const Live = <E, A>(params: Omit<Live<E, A>, 'tag'>):
|
|
33
|
+
export const Live = <E, A>(params: Omit<Live<E, A>, 'tag'>): Fiber<E, A> => ({
|
|
35
34
|
tag: 'Live',
|
|
36
35
|
...params,
|
|
37
36
|
})
|
|
38
37
|
|
|
39
38
|
export interface Synthetic<E, A> {
|
|
40
39
|
readonly tag: 'Synthetic'
|
|
41
|
-
readonly id: FiberId
|
|
40
|
+
readonly id: FiberId
|
|
42
41
|
readonly exit: Of<Exit<E, A>>
|
|
43
42
|
readonly inheritFiberRefs: Of<void>
|
|
44
43
|
readonly interruptAs: (id: FiberId) => Of<Exit<E, A>>
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
export const Synthetic = <E, A>(params: Omit<Synthetic<E, A>, 'tag'>):
|
|
46
|
+
export const Synthetic = <E, A>(params: Omit<Synthetic<E, A>, 'tag'>): Fiber<E, A> => ({
|
|
48
47
|
tag: 'Synthetic',
|
|
49
48
|
...params,
|
|
50
49
|
})
|
|
@@ -54,23 +53,25 @@ export const match =
|
|
|
54
53
|
(fiber: Fiber<E, A>) =>
|
|
55
54
|
fiber.tag === 'Live' ? onLive(fiber) : onSynthetic(fiber)
|
|
56
55
|
|
|
57
|
-
export const inheritFiberRefs = <E, A>(fiber: Fiber<E, A>) =>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
56
|
+
export const inheritFiberRefs = <E, A>(fiber: Fiber<E, A>): Of<void> =>
|
|
57
|
+
pipe(
|
|
58
|
+
fiber,
|
|
59
|
+
match(
|
|
60
|
+
(l) =>
|
|
61
|
+
pipe(
|
|
62
|
+
getFiberContext,
|
|
63
|
+
map((c) => join(c.fiberRefs, l.context.fiberRefs)),
|
|
64
|
+
),
|
|
65
|
+
(s) => s.inheritFiberRefs,
|
|
66
|
+
),
|
|
67
|
+
)
|
|
67
68
|
|
|
68
69
|
export const interruptAs =
|
|
69
70
|
(id: FiberId) =>
|
|
70
71
|
<E, A>(fiber: Fiber<E, A>) =>
|
|
71
72
|
fiber.interruptAs(id)
|
|
72
73
|
|
|
73
|
-
export const interruptAsFork = (id: FiberId) => flow(interruptAs(id), fork)
|
|
74
|
+
export const interruptAsFork = (id: FiberId) => flow(interruptAs(id), flatMap(fromExit), fork)
|
|
74
75
|
|
|
75
76
|
export const interrupt = <E, A>(fiber: Fiber<E, A>) =>
|
|
76
77
|
pipe(
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Fiber, Synthetic } from './Fiber.js'
|
|
2
|
+
|
|
3
|
+
import { Exit } from '@/Exit/Exit.js'
|
|
4
|
+
import { FiberId } from '@/FiberId/FiberId.js'
|
|
5
|
+
import { now, unit } from '@/Fx/index.js'
|
|
6
|
+
|
|
7
|
+
export function fromExit<E, A>(exit: Exit<E, A>): Fiber<E, A> {
|
|
8
|
+
return Synthetic({
|
|
9
|
+
id: new FiberId.Synthetic([]),
|
|
10
|
+
exit: now(exit),
|
|
11
|
+
inheritFiberRefs: unit,
|
|
12
|
+
interruptAs: () => now(exit),
|
|
13
|
+
})
|
|
14
|
+
}
|
package/src/Fiber/hkt.ts
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { makeAssociative } from 'hkt-ts/Array'
|
|
2
|
+
import { HKT2, Params } from 'hkt-ts/HKT'
|
|
3
|
+
import * as AB from 'hkt-ts/Typeclass/AssociativeBoth'
|
|
4
|
+
import * as B from 'hkt-ts/Typeclass/Bicovariant'
|
|
5
|
+
import { Bottom2 } from 'hkt-ts/Typeclass/Bottom'
|
|
6
|
+
import { CommutativeBoth2 } from 'hkt-ts/Typeclass/CommutativeBoth'
|
|
7
|
+
import * as C from 'hkt-ts/Typeclass/Covariant'
|
|
8
|
+
import * as IB from 'hkt-ts/Typeclass/IdentityBoth'
|
|
9
|
+
import { Top2 } from 'hkt-ts/Typeclass/Top'
|
|
10
|
+
import { flow, pipe } from 'hkt-ts/function'
|
|
11
|
+
|
|
12
|
+
import { Fiber, Synthetic, inheritFiberRefs } from './Fiber.js'
|
|
13
|
+
import { fromExit } from './fromExit.js'
|
|
14
|
+
|
|
15
|
+
import * as Exit from '@/Exit/index.js'
|
|
16
|
+
import * as FiberId from '@/FiberId/FiberId.js'
|
|
17
|
+
import * as Fx from '@/Fx/Fx.js'
|
|
18
|
+
|
|
19
|
+
export interface FiberHKT extends HKT2 {
|
|
20
|
+
readonly type: Fiber<this[Params.E], this[Params.A]>
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const Bicovariant: B.Bicovariant2<FiberHKT> = {
|
|
24
|
+
bimap: (f, g) => (fiber) =>
|
|
25
|
+
Synthetic({
|
|
26
|
+
id: FiberId.Synthetic([fiber.id]),
|
|
27
|
+
exit: pipe(fiber.exit, Fx.map(Exit.bimap(f, g))),
|
|
28
|
+
inheritFiberRefs: inheritFiberRefs(fiber),
|
|
29
|
+
interruptAs: flow(fiber.interruptAs, Fx.map(Exit.bimap(f, g))),
|
|
30
|
+
}),
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const bimap = Bicovariant.bimap
|
|
34
|
+
export const mapLeft = B.mapLeft(Bicovariant)
|
|
35
|
+
export const map = B.map(Bicovariant)
|
|
36
|
+
|
|
37
|
+
export const Covariant: C.Covariant2<FiberHKT> = {
|
|
38
|
+
map,
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const bindTo = C.bindTo(Covariant)
|
|
42
|
+
export const flap = C.flap(Covariant)
|
|
43
|
+
export const mapTo = C.mapTo(Covariant)
|
|
44
|
+
export const tupled = C.tupled(Covariant)
|
|
45
|
+
|
|
46
|
+
export const Top: Top2<FiberHKT> = {
|
|
47
|
+
top: fromExit(Exit.top),
|
|
48
|
+
}
|
|
49
|
+
export const top = Top.top
|
|
50
|
+
|
|
51
|
+
export const Bottom: Bottom2<FiberHKT> = {
|
|
52
|
+
bottom: fromExit(Exit.bottom),
|
|
53
|
+
}
|
|
54
|
+
export const bottom = Bottom.bottom
|
|
55
|
+
|
|
56
|
+
const concatExitSeq = Exit.makeSequentialAssociative<any, any>(makeAssociative<any>()).concat
|
|
57
|
+
|
|
58
|
+
export const AssociativeBoth: AB.AssociativeBoth2<FiberHKT> = {
|
|
59
|
+
both: (fb) => (fa) =>
|
|
60
|
+
Synthetic({
|
|
61
|
+
id: FiberId.Synthetic([fa.id, fb.id]),
|
|
62
|
+
exit: pipe(
|
|
63
|
+
Fx.zipAllSeq([fa.exit, fb.exit]),
|
|
64
|
+
Fx.flatMap(([ea, eb]) => Fx.now(concatExitSeq(Exit.tupled(ea), Exit.tupled(eb)))),
|
|
65
|
+
),
|
|
66
|
+
inheritFiberRefs: pipe(
|
|
67
|
+
inheritFiberRefs(fa),
|
|
68
|
+
Fx.flatMap(() => inheritFiberRefs(fb)),
|
|
69
|
+
),
|
|
70
|
+
interruptAs: (id) =>
|
|
71
|
+
pipe(
|
|
72
|
+
Fx.zipAllSeq([fa.interruptAs(id), fb.interruptAs(id)]),
|
|
73
|
+
Fx.map(([ea, eb]) => concatExitSeq(Exit.tupled(ea), Exit.tupled(eb))),
|
|
74
|
+
),
|
|
75
|
+
}),
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export const bothSeq = AssociativeBoth.both
|
|
79
|
+
|
|
80
|
+
export const zipLeftSeq = AB.zipLeft<FiberHKT>({ ...AssociativeBoth, ...Covariant })
|
|
81
|
+
export const zipRightSeq = AB.zipRight<FiberHKT>({ ...AssociativeBoth, ...Covariant })
|
|
82
|
+
|
|
83
|
+
const concatExitPar = Exit.makeParallelAssociative<any, any>(makeAssociative<any>()).concat
|
|
84
|
+
|
|
85
|
+
export const CommutativeBoth: CommutativeBoth2<FiberHKT> = {
|
|
86
|
+
both: (fb) => (fa) =>
|
|
87
|
+
Synthetic({
|
|
88
|
+
id: FiberId.Synthetic([fa.id, fb.id]),
|
|
89
|
+
exit: pipe(
|
|
90
|
+
Fx.zipAll([fa.exit, fb.exit]),
|
|
91
|
+
Fx.flatMap(([ea, eb]) => Fx.now(concatExitPar(Exit.tupled(ea), Exit.tupled(eb)))),
|
|
92
|
+
),
|
|
93
|
+
inheritFiberRefs: pipe(
|
|
94
|
+
inheritFiberRefs(fa),
|
|
95
|
+
Fx.flatMap(() => inheritFiberRefs(fb)),
|
|
96
|
+
),
|
|
97
|
+
interruptAs: (id) =>
|
|
98
|
+
pipe(
|
|
99
|
+
Fx.zipAll([fa.interruptAs(id), fb.interruptAs(id)]),
|
|
100
|
+
Fx.map(([ea, eb]) => concatExitPar(Exit.tupled(ea), Exit.tupled(eb))),
|
|
101
|
+
),
|
|
102
|
+
}),
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const both = CommutativeBoth.both
|
|
106
|
+
export const zipLeft = AB.zipLeft<FiberHKT>({ ...CommutativeBoth, ...Covariant })
|
|
107
|
+
export const zipRight = AB.zipRight<FiberHKT>({ ...CommutativeBoth, ...Covariant })
|
|
108
|
+
|
|
109
|
+
export const IdentityBothSeq: IB.IdentityBoth2<FiberHKT> = {
|
|
110
|
+
...AssociativeBoth,
|
|
111
|
+
...Top,
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export const tupleSeq = IB.tuple<FiberHKT>({ ...IdentityBothSeq, ...Covariant })
|
|
115
|
+
export const structSeq = IB.struct<FiberHKT>({ ...IdentityBothSeq, ...Covariant })
|
|
116
|
+
|
|
117
|
+
export const IdentityBothPar: IB.IdentityBoth2<FiberHKT> = {
|
|
118
|
+
...CommutativeBoth,
|
|
119
|
+
...Top,
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export const tuple = IB.tuple<FiberHKT>({ ...IdentityBothPar, ...Covariant })
|
|
123
|
+
export const struct = IB.struct<FiberHKT>({ ...IdentityBothPar, ...Covariant })
|
|
124
|
+
|
|
125
|
+
// TODO: More Typeclass instances
|
package/src/Fiber/index.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Just, Maybe, Nothing } from 'hkt-ts/Maybe'
|
|
2
2
|
|
|
3
|
-
import { Renderer, defaultRenderer } from '@/Cause/Renderer.js'
|
|
4
3
|
import * as FiberId from '@/FiberId/FiberId.js'
|
|
5
4
|
import { FiberRefs } from '@/FiberRefs/FiberRefs.js'
|
|
6
5
|
import { SequentialStrategy } from '@/Finalizer/Finalizer.js'
|
|
@@ -11,52 +10,54 @@ import { Closeable } from '@/Scope/Closeable.js'
|
|
|
11
10
|
import { LocalScope } from '@/Scope/LocalScope.js'
|
|
12
11
|
import { None, Supervisor } from '@/Supervisor/Supervisor.js'
|
|
13
12
|
|
|
14
|
-
export interface FiberContext {
|
|
15
|
-
readonly id:
|
|
13
|
+
export interface FiberContext<Id extends FiberId.FiberId = FiberId.FiberId> {
|
|
14
|
+
readonly id: Id
|
|
16
15
|
readonly platform: Platform
|
|
17
16
|
readonly fiberRefs: FiberRefs
|
|
18
17
|
readonly scope: Closeable
|
|
19
18
|
readonly supervisor: Supervisor<any>
|
|
20
19
|
readonly logger: Logger<string, any>
|
|
21
|
-
readonly renderer: Renderer<any>
|
|
22
20
|
readonly parent: Maybe<FiberContext>
|
|
23
21
|
|
|
24
|
-
readonly fork:
|
|
22
|
+
readonly fork: <Id2 extends FiberId.FiberId = FiberId.Live>(
|
|
23
|
+
overrides?: Partial<FiberContext<Id2>>,
|
|
24
|
+
) => FiberContext<Id2>
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export function FiberContext
|
|
27
|
+
export function FiberContext<Id extends FiberId.FiberId = FiberId.Live>(
|
|
28
|
+
params: Partial<Omit<FiberContext<Id>, 'fork'>> = {},
|
|
29
|
+
): FiberContext<Id> {
|
|
28
30
|
const {
|
|
29
31
|
platform = Platform(),
|
|
30
|
-
id = FiberId.Live(platform),
|
|
32
|
+
id = FiberId.Live(platform) as Id,
|
|
31
33
|
fiberRefs = FiberRefs(),
|
|
32
34
|
scope = new LocalScope(SequentialStrategy),
|
|
33
35
|
supervisor = None,
|
|
34
36
|
logger = Console,
|
|
35
|
-
renderer = defaultRenderer,
|
|
36
37
|
parent = Nothing,
|
|
37
38
|
} = params
|
|
38
39
|
|
|
39
|
-
const context: FiberContext = {
|
|
40
|
+
const context: FiberContext<Id> = {
|
|
40
41
|
id,
|
|
41
42
|
platform,
|
|
42
43
|
fiberRefs,
|
|
43
44
|
scope,
|
|
44
45
|
supervisor,
|
|
45
46
|
logger,
|
|
46
|
-
renderer,
|
|
47
47
|
parent,
|
|
48
|
-
fork: (overrides?: Partial<FiberContext>) =>
|
|
48
|
+
fork: ((overrides?: Partial<FiberContext>) =>
|
|
49
|
+
fork(context, overrides)) as FiberContext<Id>['fork'],
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
return context
|
|
52
53
|
}
|
|
53
54
|
|
|
54
|
-
export function fork(
|
|
55
|
-
context: FiberContext
|
|
56
|
-
overrides?: Partial<Omit<FiberContext
|
|
57
|
-
): FiberContext {
|
|
55
|
+
export function fork<Id extends FiberId.FiberId = FiberId.Live, Id2 extends FiberId.FiberId = Id>(
|
|
56
|
+
context: FiberContext<Id>,
|
|
57
|
+
overrides?: Partial<Omit<FiberContext<Id2>, 'fork'>>,
|
|
58
|
+
): FiberContext<Id2> {
|
|
58
59
|
return FiberContext({
|
|
59
|
-
id: overrides?.id ?? FiberId.Live(context.platform),
|
|
60
|
+
id: (overrides?.id ?? FiberId.Live(context.platform)) as Id2,
|
|
60
61
|
platform: overrides?.platform ?? context.platform.fork(),
|
|
61
62
|
fiberRefs: overrides?.fiberRefs ?? context.fiberRefs.fork(),
|
|
62
63
|
scope: overrides?.scope ?? context.scope.fork(),
|
package/src/FiberId/FiberId.ts
CHANGED
|
@@ -10,7 +10,7 @@ import * as S from 'hkt-ts/string'
|
|
|
10
10
|
|
|
11
11
|
import { increment } from '@/Atomic/AtomicCounter.js'
|
|
12
12
|
import { Clock, timeToDate } from '@/Clock/Clock.js'
|
|
13
|
-
import { Platform } from '@/Platform/Platform.js'
|
|
13
|
+
import type { Platform } from '@/Platform/Platform.js'
|
|
14
14
|
import { Time } from '@/Time/index.js'
|
|
15
15
|
|
|
16
16
|
export type FiberId = FiberId.None | FiberId.Live | FiberId.Synthetic
|
package/src/FiberRef/FiberRef.ts
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Just, Maybe, Nothing } from 'hkt-ts/Maybe'
|
|
1
|
+
import { Just, Maybe } from 'hkt-ts/Maybe'
|
|
3
2
|
import { Second } from 'hkt-ts/Typeclass/Concat'
|
|
4
3
|
import { DeepEquals, Eq } from 'hkt-ts/Typeclass/Eq'
|
|
5
|
-
import { NonNegativeInteger } from 'hkt-ts/number'
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
import { Env } from '@/Env/Env.js'
|
|
9
|
-
import type { Live } from '@/Fiber/Fiber.js'
|
|
10
|
-
import { Fx, getFiberContext, map, now } from '@/Fx/Fx.js'
|
|
11
|
-
import { ImmutableMap } from '@/ImmutableMap/ImmutableMap.js'
|
|
12
|
-
import { LogAnnotation } from '@/Logger/LogAnnotation.js'
|
|
13
|
-
import { LogSpan } from '@/Logger/LogSpan.js'
|
|
14
|
-
import { Semaphore } from '@/Semaphore/Semaphore.js'
|
|
15
|
-
import { Service } from '@/Service/Service.js'
|
|
16
|
-
import { EmptyTrace, Trace } from '@/Trace/Trace.js'
|
|
5
|
+
import { type Fx } from '@/Fx/Fx.js'
|
|
17
6
|
|
|
18
7
|
export class FiberRef<R, E, A> {
|
|
19
8
|
constructor(
|
|
@@ -32,11 +21,7 @@ export type ErrorsOf<T> = T extends FiberRef<infer _R, infer _E, infer _A> ? _E
|
|
|
32
21
|
export type OutputOf<T> = T extends FiberRef<infer _R, infer _E, infer _A> ? _A : never
|
|
33
22
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
34
23
|
|
|
35
|
-
export type AnyFiberRef =
|
|
36
|
-
| FiberRef<any, any, any>
|
|
37
|
-
| FiberRef<never, never, any>
|
|
38
|
-
| FiberRef<never, any, any>
|
|
39
|
-
| FiberRef<any, never, any>
|
|
24
|
+
export type AnyFiberRef = FiberRef<any, any, any>
|
|
40
25
|
|
|
41
26
|
export function make<R, E, A>(initial: Fx<R, E, A>, params: Params<A> = {}): FiberRef<R, E, A> {
|
|
42
27
|
return new FiberRef(initial, params.fork, params.join, params.Eq)
|
|
@@ -47,48 +32,3 @@ export type Params<A> = {
|
|
|
47
32
|
readonly join?: (current: A, incoming: A) => A
|
|
48
33
|
readonly Eq?: Eq<A>
|
|
49
34
|
}
|
|
50
|
-
|
|
51
|
-
export const CurrentEnv = make(
|
|
52
|
-
pipe(
|
|
53
|
-
getFiberContext,
|
|
54
|
-
map((c) => Env<any>(c.fiberRefs)),
|
|
55
|
-
),
|
|
56
|
-
{
|
|
57
|
-
fork: constant(Nothing), // Always create a new Env for each Fiber.
|
|
58
|
-
join: identity, // Always keep the parent Fiber's Env
|
|
59
|
-
},
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
export const CurrentConcurrencyLevel = make(
|
|
63
|
-
now<Semaphore>(new Semaphore(NonNegativeInteger(Infinity))),
|
|
64
|
-
{
|
|
65
|
-
join: identity, // Always keep the parent Fiber's concurrency level
|
|
66
|
-
},
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
export const CurrentInterruptStatus = make(now<boolean>(true), {
|
|
70
|
-
join: identity, // Always keep the parent Fiber's interrupt status
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
export const CurrentTrace = make(now<Trace>(EmptyTrace), {
|
|
74
|
-
join: identity, // Always keep the parent Fiber's trace
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
export const Layers = FiberRef.make(
|
|
78
|
-
now(ImmutableMap<Service<any>, readonly [() => Live<never, any>, Maybe<Live<never, any>>]>()),
|
|
79
|
-
{
|
|
80
|
-
join: identity, // Always keep the parent Fiber's layers
|
|
81
|
-
},
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
export const Services = FiberRef.make(now(ImmutableMap<Service<any>, any>()), {
|
|
85
|
-
join: identity, // Always keep the parent Fiber's services
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
export const CurrentLogSpans = FiberRef.make(now(ImmutableMap<string, LogSpan>()), {
|
|
89
|
-
join: identity,
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
export const CurrentLogAnnotations = FiberRef.make(now(ImmutableMap<string, LogAnnotation>()), {
|
|
93
|
-
join: identity,
|
|
94
|
-
})
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Maybe, constant, identity, pipe } from 'hkt-ts'
|
|
2
|
+
import { Nothing } from 'hkt-ts/Maybe'
|
|
3
|
+
import { NonNegativeInteger } from 'hkt-ts/number'
|
|
4
|
+
|
|
5
|
+
import { FiberRef, make } from './FiberRef.js'
|
|
6
|
+
|
|
7
|
+
import type { Env } from '@/Env/Env.js'
|
|
8
|
+
import { Live } from '@/Fiber/Fiber.js'
|
|
9
|
+
import * as FiberRefs from '@/FiberRefs/FiberRefs.js'
|
|
10
|
+
import * as Fx from '@/Fx/Fx.js'
|
|
11
|
+
import { join } from '@/Fx/join.js'
|
|
12
|
+
import { ImmutableMap } from '@/ImmutableMap/ImmutableMap.js'
|
|
13
|
+
import { LogAnnotation } from '@/Logger/LogAnnotation.js'
|
|
14
|
+
import { LogSpan } from '@/Logger/LogSpan.js'
|
|
15
|
+
import { Semaphore } from '@/Semaphore/Semaphore.js'
|
|
16
|
+
import { Service } from '@/Service/Service.js'
|
|
17
|
+
import { Trace } from '@/Trace/Trace.js'
|
|
18
|
+
|
|
19
|
+
export const CurrentEnv = make(
|
|
20
|
+
pipe(
|
|
21
|
+
Fx.getFiberContext,
|
|
22
|
+
// Always use a snapshot of the FiberRefs to avoid mutability problems.
|
|
23
|
+
Fx.map((c): Env<any> => ({ get: getServiceFromFiberRefs(c.fiberRefs) })),
|
|
24
|
+
),
|
|
25
|
+
{
|
|
26
|
+
fork: constant(Nothing), // Always create a new Env for each Fiber.
|
|
27
|
+
join: identity, // Always keep the parent Fiber's Env
|
|
28
|
+
},
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
export const CurrentConcurrencyLevel = make(
|
|
32
|
+
Fx.fromLazy(() => new Semaphore(NonNegativeInteger(Infinity))),
|
|
33
|
+
{
|
|
34
|
+
join: identity, // Always keep the parent Fiber's concurrency level
|
|
35
|
+
},
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
export const CurrentInterruptStatus = make(Fx.now(true), {
|
|
39
|
+
join: identity, // Always keep the parent Fiber's interrupt status
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
export const CurrentTrace = make(
|
|
43
|
+
Fx.fromLazy<Trace>(() => Trace.runtime(new Error())),
|
|
44
|
+
{
|
|
45
|
+
join: identity, // Always keep the parent Fiber's trace
|
|
46
|
+
},
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
export const Layers = FiberRef.make(
|
|
50
|
+
Fx.fromLazy(() =>
|
|
51
|
+
ImmutableMap<Service<any>, readonly [() => Live<never, any>, Maybe.Maybe<Live<never, any>>]>(),
|
|
52
|
+
),
|
|
53
|
+
{
|
|
54
|
+
join: identity, // Always keep the parent Fiber's layers
|
|
55
|
+
},
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
export const Services = FiberRef.make(Fx.now(ImmutableMap<Service<any>, any>()), {
|
|
59
|
+
join: identity, // Always keep the parent Fiber's services
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
export const CurrentLogSpans = FiberRef.make(Fx.now(ImmutableMap<string, LogSpan>()), {
|
|
63
|
+
join: identity,
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
export const CurrentLogAnnotations = FiberRef.make(Fx.now(ImmutableMap<string, LogAnnotation>()), {
|
|
67
|
+
join: identity,
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
export function getServiceFromFiberRefs(fiberRefs: FiberRefs.FiberRefs) {
|
|
71
|
+
return <S>(id: Service<S>): Fx.Of<S> => {
|
|
72
|
+
return Fx.lazy(() => {
|
|
73
|
+
const service = pipe(
|
|
74
|
+
fiberRefs,
|
|
75
|
+
FiberRefs.maybeGetFiberRefValue(Services),
|
|
76
|
+
Maybe.flatMap((s) => s.get(id)),
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
if (Maybe.isJust(service)) {
|
|
80
|
+
return Fx.success(service.value as S)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return getLayerFromFiberRefs(id, fiberRefs)
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const getLayerFromFiberRefs = <S>(id: Service<S>, fiberRefs: FiberRefs.FiberRefs) =>
|
|
89
|
+
Fx.lazy(() => {
|
|
90
|
+
const layers = FiberRefs.maybeGetFiberRefValue(Layers)(fiberRefs)
|
|
91
|
+
|
|
92
|
+
// Add Layers if it is missing
|
|
93
|
+
if (Maybe.isNothing(layers)) {
|
|
94
|
+
throw new Error(`Unable to find Layer or Service for ${id.description}`)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const layer = layers.value.get(id)
|
|
98
|
+
|
|
99
|
+
if (Maybe.isNothing(layer)) {
|
|
100
|
+
throw new Error(`Unable to find Layer or Service for ${id.description}`)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const [makeFiber, currentFiber] = layer.value
|
|
104
|
+
|
|
105
|
+
if (Maybe.isJust(currentFiber)) {
|
|
106
|
+
return pipe(currentFiber.value.exit, Fx.flatMap(Fx.fromExit))
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const fiber = makeFiber()
|
|
110
|
+
|
|
111
|
+
FiberRefs.setFiberRef(Layers, layers.value.set(id, [makeFiber, Maybe.Just(fiber)]))(fiberRefs)
|
|
112
|
+
|
|
113
|
+
return join(fiber)
|
|
114
|
+
})
|
package/src/FiberRef/index.ts
CHANGED