@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/Fx/Instruction.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Either } from 'hkt-ts/Either'
|
|
1
|
+
import { Either, Left, Right } from 'hkt-ts/Either'
|
|
2
2
|
import { Maybe } from 'hkt-ts/Maybe'
|
|
3
3
|
import { Lazy, flow } from 'hkt-ts/function'
|
|
4
4
|
import { NonNegativeInteger } from 'hkt-ts/number'
|
|
@@ -9,6 +9,7 @@ import { Cause } from '@/Cause/Cause.js'
|
|
|
9
9
|
import type { Env } from '@/Env/Env.js'
|
|
10
10
|
import type { Live } from '@/Fiber/Fiber.js'
|
|
11
11
|
import type { FiberContext } from '@/FiberContext/FiberContext.js'
|
|
12
|
+
import { FiberId } from '@/FiberId/FiberId.js'
|
|
12
13
|
import type { FiberRef } from '@/FiberRef/FiberRef.js'
|
|
13
14
|
import type { Future } from '@/Future/index.js'
|
|
14
15
|
import type { Layer } from '@/Layer/Layer.js'
|
|
@@ -16,28 +17,29 @@ import { Service } from '@/Service/Service.js'
|
|
|
16
17
|
import { Trace } from '@/Trace/Trace.js'
|
|
17
18
|
|
|
18
19
|
export type Instruction<R, E, A> =
|
|
19
|
-
| Access<R, R, E, A>
|
|
20
20
|
| AddTrace<R, E, A>
|
|
21
|
-
| BothFx<R, E,
|
|
21
|
+
| BothFx<R, E, A>
|
|
22
22
|
| DeleteFiberRef<R, E, any, A>
|
|
23
|
-
| EitherFx<R, E,
|
|
23
|
+
| EitherFx<R, E, A>
|
|
24
24
|
| FiberRefLocally<any, any, any, R, E, A>
|
|
25
25
|
| FlatMap<R, E, any, R, E, A>
|
|
26
|
-
| Fork<R,
|
|
26
|
+
| Fork<R, E, A>
|
|
27
27
|
| FromCause<E>
|
|
28
28
|
| FromLazy<A>
|
|
29
|
+
| GetEnv<R, E, A>
|
|
29
30
|
| GetFiberContext
|
|
30
31
|
| GetFiberRef<R, E, A>
|
|
31
32
|
| GetInterruptStatus
|
|
32
33
|
| GetTrace
|
|
33
34
|
| LazyFx<R, E, A>
|
|
34
35
|
| MapFx<R, E, any, A>
|
|
35
|
-
| Match<R,
|
|
36
|
+
| Match<R, any, any, R, E, A, R, E, A>
|
|
36
37
|
| ModifyFiberRef<R, E, any, A>
|
|
37
38
|
| Now<A>
|
|
38
39
|
| Provide<any, E, A>
|
|
39
|
-
|
|
|
40
|
+
| Provide<never, E, A>
|
|
40
41
|
| ProvideLayer<R, E, A, R, E, any>
|
|
42
|
+
| ProvideService<R, E, A, any>
|
|
41
43
|
| SetConcurrencyLevel<R, E, A>
|
|
42
44
|
| SetInterruptStatus<R, E, A>
|
|
43
45
|
| Wait<R, E, A>
|
|
@@ -48,7 +50,7 @@ export type AnyInstruction =
|
|
|
48
50
|
| Instruction<never, any, any>
|
|
49
51
|
| Instruction<any, never, any>
|
|
50
52
|
|
|
51
|
-
export abstract class Instr<R, E, A> {
|
|
53
|
+
export abstract class Instr<out R, out E, out A> {
|
|
52
54
|
readonly _R!: () => R
|
|
53
55
|
readonly _E!: () => E
|
|
54
56
|
readonly _A!: () => A
|
|
@@ -59,12 +61,12 @@ export abstract class Instr<R, E, A> {
|
|
|
59
61
|
this.instr = this
|
|
60
62
|
}
|
|
61
63
|
|
|
62
|
-
*[Symbol.iterator](): Generator<this, A,
|
|
64
|
+
*[Symbol.iterator](): Generator<this, A, any> {
|
|
63
65
|
return yield this
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
|
|
67
|
-
export class Now<A> extends Instr<never, never, A> {
|
|
69
|
+
export class Now<out A> extends Instr<never, never, A> {
|
|
68
70
|
readonly tag = 'Now'
|
|
69
71
|
constructor(readonly value: A, readonly __trace?: string) {
|
|
70
72
|
super(__trace)
|
|
@@ -75,7 +77,7 @@ export class Now<A> extends Instr<never, never, A> {
|
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
|
|
78
|
-
export class FromLazy<A> extends Instr<never, never, A> {
|
|
80
|
+
export class FromLazy<out A> extends Instr<never, never, A> {
|
|
79
81
|
readonly tag = 'FromLazy'
|
|
80
82
|
constructor(readonly f: Lazy<A>, readonly __trace?: string) {
|
|
81
83
|
super(__trace)
|
|
@@ -86,7 +88,7 @@ export class FromLazy<A> extends Instr<never, never, A> {
|
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
|
|
89
|
-
export class FromCause<E> extends Instr<never, E, never> {
|
|
91
|
+
export class FromCause<out E> extends Instr<never, E, never> {
|
|
90
92
|
readonly tag = 'FromCause'
|
|
91
93
|
constructor(readonly cause: Cause<E>, readonly __trace?: string) {
|
|
92
94
|
super(__trace)
|
|
@@ -97,7 +99,7 @@ export class FromCause<E> extends Instr<never, E, never> {
|
|
|
97
99
|
}
|
|
98
100
|
}
|
|
99
101
|
|
|
100
|
-
export class MapFx<R, E, A, B> extends Instr<R, E, B> {
|
|
102
|
+
export class MapFx<out R, out E, in out A, out B> extends Instr<R, E, B> {
|
|
101
103
|
readonly tag = 'Map'
|
|
102
104
|
|
|
103
105
|
constructor(readonly fx: Fx<R, E, A>, readonly f: (a: A) => B, readonly __trace?: string) {
|
|
@@ -107,19 +109,30 @@ export class MapFx<R, E, A, B> extends Instr<R, E, B> {
|
|
|
107
109
|
static make<R, E, A, B>(fx: Fx<R, E, A>, f: (a: A) => B, __trace?: string): Fx<R, E, B> {
|
|
108
110
|
const prev = fx.instr
|
|
109
111
|
|
|
112
|
+
// Eagerly evaluate the function to runtime cost. Stack unsafe.
|
|
110
113
|
if (prev.tag === 'Now') {
|
|
111
|
-
return
|
|
114
|
+
return Now.make(f(prev.value), __trace)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Map cannot process failures
|
|
118
|
+
if (prev.tag === 'FromCause') {
|
|
119
|
+
return prev
|
|
112
120
|
}
|
|
113
121
|
|
|
122
|
+
// Fuse together multiple maps.
|
|
114
123
|
if (prev.tag === 'Map') {
|
|
115
|
-
return
|
|
124
|
+
return MapFx.make(prev.fx, flow(prev.f, f), __trace)
|
|
116
125
|
}
|
|
117
126
|
|
|
118
127
|
return new MapFx(fx, f, __trace)
|
|
119
128
|
}
|
|
120
129
|
}
|
|
121
130
|
|
|
122
|
-
export class FlatMap<R, E, A, R2, E2, B> extends Instr<
|
|
131
|
+
export class FlatMap<out R, out E, in out A, out R2, out E2, out B> extends Instr<
|
|
132
|
+
R | R2,
|
|
133
|
+
E | E2,
|
|
134
|
+
B
|
|
135
|
+
> {
|
|
123
136
|
readonly tag = 'FlatMap'
|
|
124
137
|
|
|
125
138
|
constructor(
|
|
@@ -137,23 +150,31 @@ export class FlatMap<R, E, A, R2, E2, B> extends Instr<R | R2, E | E2, B> {
|
|
|
137
150
|
): Fx<R | R2, E | E2, B> {
|
|
138
151
|
const prev = fx.instr
|
|
139
152
|
|
|
140
|
-
|
|
141
|
-
|
|
153
|
+
// Flatmap cannot process failures
|
|
154
|
+
if (prev.tag === 'FromCause') {
|
|
155
|
+
return prev
|
|
142
156
|
}
|
|
143
157
|
|
|
158
|
+
// Fuse together Map + FlatMap into a single FlatMap.
|
|
144
159
|
if (prev.tag === 'Map') {
|
|
145
|
-
return
|
|
146
|
-
R | R2,
|
|
147
|
-
E | E2,
|
|
148
|
-
B
|
|
149
|
-
>
|
|
160
|
+
return FlatMap.make(prev.fx, flow(prev.f, f), __trace)
|
|
150
161
|
}
|
|
151
162
|
|
|
152
|
-
return new FlatMap(fx, f, __trace)
|
|
163
|
+
return new FlatMap(fx, f, __trace)
|
|
153
164
|
}
|
|
154
165
|
}
|
|
155
166
|
|
|
156
|
-
export class Match<
|
|
167
|
+
export class Match<
|
|
168
|
+
out R,
|
|
169
|
+
in out E,
|
|
170
|
+
in out A,
|
|
171
|
+
out R2,
|
|
172
|
+
out E2,
|
|
173
|
+
out B,
|
|
174
|
+
out R3,
|
|
175
|
+
out E3,
|
|
176
|
+
out C,
|
|
177
|
+
> extends Instr<R | R2 | R3, E2 | E3, B | C> {
|
|
157
178
|
readonly tag = 'Match'
|
|
158
179
|
|
|
159
180
|
constructor(
|
|
@@ -173,35 +194,24 @@ export class Match<R, E, A, R2, E2, B, R3, E3, C> extends Instr<R | R2 | R3, E2
|
|
|
173
194
|
): Fx<R | R2 | R3, E2 | E3, B | C> {
|
|
174
195
|
const prev = fx.instr
|
|
175
196
|
|
|
176
|
-
|
|
177
|
-
return onRight(prev.value) as Fx<R | R2 | R3, E2 | E3, B | C>
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (prev.tag === 'FromCause') {
|
|
181
|
-
return onLeft(prev.cause) as Fx<R | R2 | R3, E2 | E3, B | C>
|
|
182
|
-
}
|
|
183
|
-
|
|
197
|
+
// Fuse together Map + Match
|
|
184
198
|
if (prev.tag === 'Map') {
|
|
185
|
-
return
|
|
199
|
+
return Match.make(prev.fx, onLeft, flow(prev.f, onRight), __trace)
|
|
186
200
|
}
|
|
187
201
|
|
|
188
|
-
return new Match(fx, onLeft, onRight, __trace)
|
|
202
|
+
return new Match(fx, onLeft, onRight, __trace)
|
|
189
203
|
}
|
|
190
204
|
}
|
|
191
205
|
|
|
192
|
-
export class
|
|
193
|
-
readonly tag = '
|
|
206
|
+
export class GetEnv<out R, out E, out A> extends Instr<R, E, A> {
|
|
207
|
+
readonly tag = 'GetEnv'
|
|
194
208
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
static make<R, R2, E, A>(f: (r: Env<R>) => Fx<R2, E, A>, __trace?: string): Fx<R | R2, E, A> {
|
|
200
|
-
return new Access(f, __trace) as Fx<R | R2, E, A>
|
|
209
|
+
static make<R>(__trace?: string): Fx<R, never, Env<R>> {
|
|
210
|
+
return new GetEnv<R, never, Env<R>>(__trace)
|
|
201
211
|
}
|
|
202
212
|
}
|
|
203
213
|
|
|
204
|
-
export class Provide<R, E, A> extends Instr<never, E, A> {
|
|
214
|
+
export class Provide<out R, out E, out A> extends Instr<never, E, A> {
|
|
205
215
|
readonly tag = 'Provide'
|
|
206
216
|
|
|
207
217
|
constructor(readonly fx: Fx<R, E, A>, readonly env: Env<R>, readonly __trace?: string) {
|
|
@@ -274,7 +284,7 @@ export class LazyFx<R, E, A> extends Instr<R, E, A> {
|
|
|
274
284
|
export class Wait<R, E, A> extends Instr<R, E, A> {
|
|
275
285
|
readonly tag = 'Wait'
|
|
276
286
|
|
|
277
|
-
constructor(readonly future: Future<
|
|
287
|
+
constructor(readonly future: Future<any, any, any>, readonly __trace?: string) {
|
|
278
288
|
super(__trace)
|
|
279
289
|
}
|
|
280
290
|
|
|
@@ -313,10 +323,11 @@ export class SetInterruptStatus<R, E, A> extends Instr<R, E, A> {
|
|
|
313
323
|
}
|
|
314
324
|
}
|
|
315
325
|
|
|
316
|
-
export class GetFiberContext extends Instr<never, never, FiberContext
|
|
326
|
+
export class GetFiberContext extends Instr<never, never, FiberContext<FiberId.Live>> {
|
|
317
327
|
readonly tag = 'GetFiberContext'
|
|
318
328
|
|
|
319
|
-
static make = (__trace?: string): Fx<never, never, FiberContext
|
|
329
|
+
static make = (__trace?: string): Fx<never, never, FiberContext<FiberId.Live>> =>
|
|
330
|
+
new GetFiberContext(__trace)
|
|
320
331
|
}
|
|
321
332
|
|
|
322
333
|
export class GetInterruptStatus extends Instr<never, never, boolean> {
|
|
@@ -348,7 +359,7 @@ export class SetConcurrencyLevel<R, E, A> extends Instr<R, E, A> {
|
|
|
348
359
|
export class GetFiberRef<R, E, A> extends Instr<R, E, A> {
|
|
349
360
|
readonly tag = 'GetFiberRef'
|
|
350
361
|
|
|
351
|
-
constructor(readonly fiberRef: FiberRef<
|
|
362
|
+
constructor(readonly fiberRef: FiberRef<any, any, any>, __trace?: string) {
|
|
352
363
|
super(__trace)
|
|
353
364
|
}
|
|
354
365
|
|
|
@@ -411,28 +422,32 @@ export class FiberRefLocally<R, E, A, R2, E2, B> extends Instr<R2, E2, B> {
|
|
|
411
422
|
}
|
|
412
423
|
}
|
|
413
424
|
|
|
414
|
-
export class Fork<R, E, A> extends Instr<R,
|
|
425
|
+
export class Fork<R, E, A> extends Instr<R, E, A> {
|
|
415
426
|
readonly tag = 'Fork'
|
|
416
427
|
|
|
417
|
-
constructor(
|
|
428
|
+
constructor(
|
|
429
|
+
readonly fx: Fx<any, any, any>,
|
|
430
|
+
readonly context: FiberContext<FiberId.Live>,
|
|
431
|
+
readonly __trace?: string,
|
|
432
|
+
) {
|
|
418
433
|
super(__trace)
|
|
419
434
|
}
|
|
420
435
|
|
|
421
436
|
static make<R, E, A>(
|
|
422
437
|
fx: Fx<R, E, A>,
|
|
423
|
-
context: FiberContext
|
|
438
|
+
context: FiberContext<FiberId.Live>,
|
|
424
439
|
__trace?: string,
|
|
425
440
|
): Fx<R, never, Live<E, A>> {
|
|
426
|
-
return new Fork(fx, context, __trace)
|
|
441
|
+
return new Fork(fx, context, __trace)
|
|
427
442
|
}
|
|
428
443
|
}
|
|
429
444
|
|
|
430
|
-
export class BothFx<R, E, A
|
|
445
|
+
export class BothFx<R, E, A> extends Instr<R, E, A> {
|
|
431
446
|
readonly tag = 'Both'
|
|
432
447
|
|
|
433
448
|
constructor(
|
|
434
|
-
readonly first: Fx<
|
|
435
|
-
readonly second: Fx<
|
|
449
|
+
readonly first: Fx<any, any, any>,
|
|
450
|
+
readonly second: Fx<any, any, any>,
|
|
436
451
|
readonly __trace?: string,
|
|
437
452
|
) {
|
|
438
453
|
super(__trace)
|
|
@@ -443,16 +458,24 @@ export class BothFx<R, E, A, R2, E2, B> extends Instr<R | R2, E | E2, readonly [
|
|
|
443
458
|
second: Fx<R2, E2, B>,
|
|
444
459
|
__trace?: string,
|
|
445
460
|
): Fx<R | R2, E | E2, readonly [A, B]> {
|
|
446
|
-
|
|
461
|
+
// Any Failures cannot be combined into a tuple of success values
|
|
462
|
+
if (first.instr.tag === 'FromCause') {
|
|
463
|
+
return first.instr
|
|
464
|
+
}
|
|
465
|
+
if (second.instr.tag === 'FromCause') {
|
|
466
|
+
return second.instr
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
return new BothFx(first, second, __trace)
|
|
447
470
|
}
|
|
448
471
|
}
|
|
449
472
|
|
|
450
|
-
export class EitherFx<R, E, A
|
|
473
|
+
export class EitherFx<R, E, A> extends Instr<R, E, A> {
|
|
451
474
|
readonly tag = 'Either'
|
|
452
475
|
|
|
453
476
|
constructor(
|
|
454
|
-
readonly first: Fx<
|
|
455
|
-
readonly second: Fx<
|
|
477
|
+
readonly first: Fx<any, any, any>,
|
|
478
|
+
readonly second: Fx<any, any, any>,
|
|
456
479
|
readonly __trace?: string,
|
|
457
480
|
) {
|
|
458
481
|
super(__trace)
|
|
@@ -463,6 +486,26 @@ export class EitherFx<R, E, A, R2, E2, B> extends Instr<R | R2, E | E2, Either<A
|
|
|
463
486
|
second: Fx<R2, E2, B>,
|
|
464
487
|
__trace?: string,
|
|
465
488
|
): Fx<R | R2, E | E2, Either<A, B>> {
|
|
466
|
-
|
|
489
|
+
const fi = first.instr
|
|
490
|
+
|
|
491
|
+
if (fi.tag === 'Now') {
|
|
492
|
+
return Now.make(Left(fi.value), __trace)
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
const si = second.instr
|
|
496
|
+
|
|
497
|
+
if (si.tag === 'Now') {
|
|
498
|
+
return Now.make(Right(si.value), __trace)
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
if (fi.tag === 'FromCause') {
|
|
502
|
+
return fi
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
if (si.tag === 'FromCause') {
|
|
506
|
+
return si
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
return new EitherFx(first, second, __trace)
|
|
467
510
|
}
|
|
468
511
|
}
|
package/src/Fx/index.ts
CHANGED
package/src/Fx/join.ts
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pipe } from 'hkt-ts'
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import * as Fx from './Fx.js'
|
|
4
4
|
|
|
5
|
-
// eslint-disable-next-line import/no-cycle
|
|
6
5
|
import * as Fiber from '@/Fiber/Fiber.js'
|
|
6
|
+
import { FiberContext } from '@/FiberContext/FiberContext.js'
|
|
7
|
+
import { FiberId } from '@/FiberId/FiberId.js'
|
|
8
|
+
import { Scope } from '@/Scope/Scope.js'
|
|
7
9
|
|
|
8
10
|
export const join = <E, A>(fiber: Fiber.Fiber<E, A>) =>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
pipe(
|
|
12
|
+
fiber.exit,
|
|
13
|
+
Fx.flatMap((exit) =>
|
|
14
|
+
pipe(
|
|
15
|
+
Fiber.inheritFiberRefs(fiber),
|
|
16
|
+
Fx.flatMap(() => Fx.fromExit(exit)),
|
|
17
|
+
),
|
|
18
|
+
),
|
|
19
|
+
)
|
|
11
20
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
export const forkJoinInContext = <R, E, A>(
|
|
22
|
+
fx: Fx.Fx<R, E, A>,
|
|
23
|
+
context: FiberContext<FiberId.Live>,
|
|
24
|
+
): Fx.Fx<R, E, A> => pipe(fx, Fx.forkInContext(context), Fx.flatMap(join))
|
|
15
25
|
|
|
16
|
-
|
|
17
|
-
|
|
26
|
+
export const forkJoinIn = <R, E, A>(fx: Fx.Fx<R, E, A>, scope: Scope): Fx.Fx<R, E, A> =>
|
|
27
|
+
pipe(fx, Fx.forkIn(scope), Fx.flatMap(join))
|
|
28
|
+
|
|
29
|
+
export const forkJoin = <R, E, A>(fx: Fx.Fx<R, E, A>): Fx.Fx<R, E, A> =>
|
|
30
|
+
pipe(fx, Fx.fork, Fx.flatMap(join))
|
package/src/Fx/logging.ts
CHANGED
|
@@ -2,10 +2,11 @@ import { pipe } from 'hkt-ts'
|
|
|
2
2
|
|
|
3
3
|
import * as Fx from './Fx.js'
|
|
4
4
|
|
|
5
|
-
import { CurrentLogAnnotations, CurrentLogSpans } from '@/FiberRef/
|
|
5
|
+
import { CurrentLogAnnotations, CurrentLogSpans } from '@/FiberRef/builtins.js'
|
|
6
6
|
import { LogAnnotation } from '@/Logger/LogAnnotation.js'
|
|
7
7
|
import { LogLevel } from '@/Logger/LogLevel.js'
|
|
8
8
|
import { LogSpan } from '@/Logger/LogSpan.js'
|
|
9
|
+
import { EmptyTrace, Trace } from '@/Trace/Trace.js'
|
|
9
10
|
|
|
10
11
|
const makeLogWithLevel = (level: LogLevel) => (msg: string, __trace?: string) =>
|
|
11
12
|
pipe(
|
|
@@ -13,14 +14,16 @@ const makeLogWithLevel = (level: LogLevel) => (msg: string, __trace?: string) =>
|
|
|
13
14
|
Fx.bind('context', () => Fx.getFiberContext),
|
|
14
15
|
Fx.bind('spans', () => Fx.getFiberRef(CurrentLogSpans)),
|
|
15
16
|
Fx.bind('annotations', () => Fx.getFiberRef(CurrentLogAnnotations)),
|
|
17
|
+
Fx.bind('trace', () => (level >= LogLevel.Trace ? Fx.getTrace : Fx.now<Trace>(EmptyTrace))),
|
|
16
18
|
Fx.flatMap(
|
|
17
|
-
({ context, spans, annotations }) =>
|
|
19
|
+
({ context, spans, annotations, trace }) =>
|
|
18
20
|
context.logger.log(
|
|
19
21
|
msg,
|
|
20
22
|
level,
|
|
21
23
|
context.id,
|
|
22
24
|
Array.from(spans.values()),
|
|
23
25
|
Array.from(annotations.values()),
|
|
26
|
+
trace,
|
|
24
27
|
),
|
|
25
28
|
__trace,
|
|
26
29
|
),
|
package/src/Fx/run.ts
CHANGED
|
@@ -2,18 +2,24 @@ import { pipe } from 'hkt-ts'
|
|
|
2
2
|
|
|
3
3
|
import { Of, getFiberContext, map } from './Fx.js'
|
|
4
4
|
|
|
5
|
+
import { Atomic } from '@/Atomic/index.js'
|
|
6
|
+
import { AnyLiveFiber } from '@/Fiber/Fiber.js'
|
|
5
7
|
import { FiberContext } from '@/FiberContext/FiberContext.js'
|
|
6
8
|
import { FiberId } from '@/FiberId/FiberId.js'
|
|
7
9
|
import { Platform } from '@/Platform/Platform.js'
|
|
8
10
|
import { Runtime } from '@/Runtime/index.js'
|
|
9
11
|
import { GlobalScope } from '@/Scope/GlobalScope.js'
|
|
12
|
+
import { trackIn } from '@/Supervisor/trackIn.js'
|
|
10
13
|
|
|
14
|
+
export const RootFibers = Atomic<ReadonlyMap<FiberId.Live, AnyLiveFiber>>(new Map())
|
|
15
|
+
export const MainSupervisor = trackIn(RootFibers)
|
|
11
16
|
export const MainPlatform = Platform()
|
|
12
17
|
export const MainRuntime = Runtime(
|
|
13
18
|
FiberContext({
|
|
14
19
|
platform: MainPlatform,
|
|
15
|
-
id: FiberId.None
|
|
20
|
+
id: FiberId.None,
|
|
16
21
|
scope: GlobalScope,
|
|
22
|
+
supervisor: MainSupervisor,
|
|
17
23
|
}),
|
|
18
24
|
)
|
|
19
25
|
|
package/src/Fx/scheduler.ts
CHANGED
|
@@ -54,7 +54,7 @@ export function schedule(schedule: Schedule.Schedule) {
|
|
|
54
54
|
Fx.bind('env', () => Fx.getEnv<R>()),
|
|
55
55
|
Fx.bind('context', () => Fx.getFiberContext),
|
|
56
56
|
Fx.map(({ scheduler, env, context }) =>
|
|
57
|
-
scheduler.schedule(fx,
|
|
57
|
+
scheduler.schedule(fx, env, schedule, context.fork()),
|
|
58
58
|
),
|
|
59
59
|
)
|
|
60
60
|
}
|
package/src/Fx/scoped.ts
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import { pipe } from 'hkt-ts/function'
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
Fx,
|
|
5
|
-
ask,
|
|
6
|
-
ensuring,
|
|
7
|
-
getEnv,
|
|
8
|
-
getFiberContext,
|
|
9
|
-
provide,
|
|
10
|
-
provideService,
|
|
11
|
-
uninterruptable,
|
|
12
|
-
} from './Fx.js'
|
|
3
|
+
import * as Fx from './Fx.js'
|
|
13
4
|
|
|
14
5
|
import { ConcurrentStrategy, FinalizationStrategy } from '@/Finalizer/Finalizer.js'
|
|
15
6
|
import { Scope } from '@/Scope/Scope.js'
|
|
@@ -18,35 +9,36 @@ import { Scope } from '@/Scope/Scope.js'
|
|
|
18
9
|
* Run a Scoped Fx within an isolated Scope, cleaning up those resources as soon as complete.
|
|
19
10
|
*/
|
|
20
11
|
export function scoped<R, E, A>(
|
|
21
|
-
scoped: Fx<R | Scope, E, A>,
|
|
12
|
+
scoped: Fx.Fx<R | Scope, E, A>,
|
|
22
13
|
strategy: FinalizationStrategy = ConcurrentStrategy,
|
|
23
|
-
): Fx<Exclude<R, Scope>, E, A> {
|
|
24
|
-
return
|
|
25
|
-
|
|
26
|
-
|
|
14
|
+
): Fx.Fx<Exclude<R, Scope>, E, A> {
|
|
15
|
+
return pipe(
|
|
16
|
+
Fx.getFiberContext,
|
|
17
|
+
Fx.flatMap(({ scope: fiberScope }) => {
|
|
18
|
+
const scope = fiberScope.fork(strategy)
|
|
27
19
|
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
return pipe(scoped, Fx.provideService(Scope, scope), Fx.ensuring(scope.close))
|
|
21
|
+
}),
|
|
22
|
+
)
|
|
30
23
|
}
|
|
31
24
|
|
|
32
25
|
/**
|
|
33
26
|
* Track a Resource within a given Scoped environment
|
|
34
27
|
*/
|
|
35
28
|
export function managed<R, E, A, R2>(
|
|
36
|
-
acquire: Fx<R, E, A>,
|
|
37
|
-
release: (value: A) => Fx<R2, never, any>,
|
|
38
|
-
): Fx<R | R2 | Scope, E, A> {
|
|
39
|
-
return
|
|
40
|
-
Fx(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}),
|
|
29
|
+
acquire: Fx.Fx<R, E, A>,
|
|
30
|
+
release: (value: A) => Fx.Fx<R2, never, any>,
|
|
31
|
+
): Fx.Fx<R | R2 | Scope, E, A> {
|
|
32
|
+
return pipe(
|
|
33
|
+
Fx.ask(Scope),
|
|
34
|
+
Fx.bindTo('scope'),
|
|
35
|
+
Fx.bind('env', () => Fx.getEnv<R | R2>()),
|
|
36
|
+
Fx.bind('a', () => acquire),
|
|
37
|
+
Fx.tap(({ scope, env, a }) =>
|
|
38
|
+
Fx.fromLazy(() => scope.ensuring(() => pipe(a, release, Fx.provide(env)))),
|
|
39
|
+
),
|
|
40
|
+
Fx.map(({ a }) => a),
|
|
41
|
+
Fx.uninterruptable,
|
|
50
42
|
)
|
|
51
43
|
}
|
|
52
44
|
|
|
@@ -54,24 +46,21 @@ export function managed<R, E, A, R2>(
|
|
|
54
46
|
* Perform an effect with an aquired resource with the release of that resource.
|
|
55
47
|
*/
|
|
56
48
|
export function bracket<R, E, A, R2, E2, B, R3>(
|
|
57
|
-
acquire: Fx<R, E, A>,
|
|
58
|
-
withResource: (a: A) => Fx<R2, E2, B>,
|
|
59
|
-
release: (a: A) => Fx<R3, never, unknown>,
|
|
60
|
-
): Fx<Scope | R | R2 | R3, E | E2, B> {
|
|
61
|
-
return
|
|
62
|
-
const a: A = yield* managed(acquire, release)
|
|
63
|
-
|
|
64
|
-
return yield* withResource(a)
|
|
65
|
-
})
|
|
49
|
+
acquire: Fx.Fx<R, E, A>,
|
|
50
|
+
withResource: (a: A) => Fx.Fx<R2, E2, B>,
|
|
51
|
+
release: (a: A) => Fx.Fx<R3, never, unknown>,
|
|
52
|
+
): Fx.Fx<Scope | R | R2 | R3, E | E2, B> {
|
|
53
|
+
return pipe(managed(acquire, release), Fx.flatMap(withResource))
|
|
66
54
|
}
|
|
67
55
|
|
|
68
56
|
/**
|
|
69
57
|
* Run a Scoped Fx within an isolated Scope, cleaning up those resources as soon as complete.
|
|
70
58
|
*/
|
|
71
|
-
export function fiberScoped<R, E, A>(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
export function fiberScoped<R, E, A>(
|
|
60
|
+
scoped: Fx.Fx<R | Scope, E, A>,
|
|
61
|
+
): Fx.Fx<Exclude<R, Scope>, E, A> {
|
|
62
|
+
return pipe(
|
|
63
|
+
Fx.getFiberContext,
|
|
64
|
+
Fx.flatMap(({ scope }) => pipe(scoped, Fx.provideService(Scope, scope))),
|
|
65
|
+
)
|
|
77
66
|
}
|
package/src/Layer/Layer.ts
CHANGED
|
@@ -4,11 +4,6 @@ import * as Fx from '@/Fx/Fx.js'
|
|
|
4
4
|
import { Scope } from '@/Scope/Scope.js'
|
|
5
5
|
import { Service } from '@/Service/Service.js'
|
|
6
6
|
|
|
7
|
-
// TODO: Global Layers
|
|
8
|
-
// TODO: Refreshing
|
|
9
|
-
// TODO: Combinators for providing fallbacks
|
|
10
|
-
// TODO: Combinators for composing layers
|
|
11
|
-
|
|
12
7
|
export interface Layer<R, E, A> {
|
|
13
8
|
readonly service: Service<A>
|
|
14
9
|
readonly build: (scope: Scope) => Fx.Fx<R, E, A>
|
|
@@ -42,3 +37,14 @@ export function fromFx<S, R, E, A extends S>(
|
|
|
42
37
|
): Layer<R, E, S> {
|
|
43
38
|
return Layer(s, (scope) => pipe(fx, Fx.provideService(Scope, scope)))
|
|
44
39
|
}
|
|
40
|
+
|
|
41
|
+
export function orElse<E, A, R2, E2, B extends A>(orElse: (e: E) => Layer<R2, E2, B>) {
|
|
42
|
+
return <R>(layer: Layer<R, E, A>): Layer<R | R2, E2, A> => {
|
|
43
|
+
return Layer(layer.service, (scope) =>
|
|
44
|
+
pipe(
|
|
45
|
+
layer.build(scope),
|
|
46
|
+
Fx.orElse((e) => orElse(e).build(scope)),
|
|
47
|
+
),
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { addCustomTrace } from '@/Fx/index.js'
|
|
2
|
+
import { annotate, logTrace, span } from '@/Fx/logging.js'
|
|
3
|
+
import { runMain } from '@/Fx/run.js'
|
|
4
|
+
import { testSuite } from '@/_internal/suite.js'
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
testSuite(import.meta.url, () => {
|
|
5
7
|
it('allows logging to the console', async () => {
|
|
6
|
-
const test =
|
|
8
|
+
const test = addCustomTrace('outer')(
|
|
9
|
+
span('foo')(annotate('bar', 'baz')(addCustomTrace('inner')(logTrace('test')))),
|
|
10
|
+
)
|
|
7
11
|
|
|
8
|
-
await
|
|
12
|
+
await runMain(test)
|
|
9
13
|
})
|
|
10
14
|
})
|