@clayroach/effect 3.19.14-source-capture.8 → 3.19.14-source-trace.2
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/SourceLocation/package.json +6 -0
- package/dist/cjs/Effect.js +2 -28
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/FiberRef.js +12 -1
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/Layer.js +2 -24
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/RuntimeFlags.js +1 -29
- package/dist/cjs/RuntimeFlags.js.map +1 -1
- package/dist/cjs/SourceLocation.js +60 -0
- package/dist/cjs/SourceLocation.js.map +1 -0
- package/dist/cjs/Tracer.js +1 -15
- package/dist/cjs/Tracer.js.map +1 -1
- package/dist/cjs/Utils.js +1 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/clock.js +1 -1
- package/dist/cjs/internal/clock.js.map +1 -1
- package/dist/cjs/internal/core.js +17 -50
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +18 -30
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +16 -65
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/layer/circular.js +1 -5
- package/dist/cjs/internal/layer/circular.js.map +1 -1
- package/dist/cjs/internal/layer.js +1 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logger.js +25 -2
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/runtimeFlags.js +2 -11
- package/dist/cjs/internal/runtimeFlags.js.map +1 -1
- package/dist/cjs/internal/tracer.js +1 -114
- package/dist/cjs/internal/tracer.js.map +1 -1
- package/dist/dts/Config.d.ts +2 -2
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +8 -29
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +12 -0
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +0 -22
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/RuntimeFlags.d.ts +0 -28
- package/dist/dts/RuntimeFlags.d.ts.map +1 -1
- package/dist/dts/SourceLocation.d.ts +88 -0
- package/dist/dts/SourceLocation.d.ts.map +1 -0
- package/dist/dts/Tracer.d.ts +0 -15
- package/dist/dts/Tracer.d.ts.map +1 -1
- package/dist/dts/index.d.ts +6 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/layer.d.ts.map +1 -1
- package/dist/dts/internal/runtimeFlags.d.ts.map +1 -1
- package/dist/esm/Effect.js +0 -26
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/FiberRef.js +11 -0
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/Layer.js +0 -22
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/RuntimeFlags.js +0 -28
- package/dist/esm/RuntimeFlags.js.map +1 -1
- package/dist/esm/SourceLocation.js +51 -0
- package/dist/esm/SourceLocation.js.map +1 -0
- package/dist/esm/Tracer.js +0 -14
- package/dist/esm/Tracer.js.map +1 -1
- package/dist/esm/Utils.js +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/clock.js +1 -1
- package/dist/esm/internal/clock.js.map +1 -1
- package/dist/esm/internal/core.js +12 -45
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +18 -30
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +13 -60
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/layer/circular.js +0 -4
- package/dist/esm/internal/layer/circular.js.map +1 -1
- package/dist/esm/internal/layer.js +0 -2
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logger.js +25 -2
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/runtimeFlags.js +1 -9
- package/dist/esm/internal/runtimeFlags.js.map +1 -1
- package/dist/esm/internal/tracer.js +0 -111
- package/dist/esm/internal/tracer.js.map +1 -1
- package/package.json +12 -1
- package/src/Arbitrary.ts +1101 -0
- package/src/Array.ts +3589 -0
- package/src/BigDecimal.ts +1349 -0
- package/src/BigInt.ts +643 -0
- package/src/Boolean.ts +287 -0
- package/src/Brand.ts +360 -0
- package/src/Cache.ts +281 -0
- package/src/Cause.ts +1555 -0
- package/src/Channel.ts +2355 -0
- package/src/ChildExecutorDecision.ts +146 -0
- package/src/Chunk.ts +1495 -0
- package/src/Clock.ts +111 -0
- package/src/Config.ts +542 -0
- package/src/ConfigError.ts +270 -0
- package/src/ConfigProvider.ts +333 -0
- package/src/ConfigProviderPathPatch.ts +100 -0
- package/src/Console.ts +226 -0
- package/src/Context.ts +585 -0
- package/src/Cron.ts +706 -0
- package/src/Data.ts +596 -0
- package/src/DateTime.ts +1686 -0
- package/src/DefaultServices.ts +34 -0
- package/src/Deferred.ts +301 -0
- package/src/Differ.ts +450 -0
- package/src/Duration.ts +1000 -0
- package/src/Effect.ts +14817 -0
- package/src/Effectable.ts +107 -0
- package/src/Either.ts +1040 -0
- package/src/Encoding.ts +195 -0
- package/src/Equal.ts +98 -0
- package/src/Equivalence.ts +235 -0
- package/src/ExecutionPlan.ts +308 -0
- package/src/ExecutionStrategy.ts +119 -0
- package/src/Exit.ts +467 -0
- package/src/FastCheck.ts +9 -0
- package/src/Fiber.ts +744 -0
- package/src/FiberHandle.ts +540 -0
- package/src/FiberId.ts +195 -0
- package/src/FiberMap.ts +656 -0
- package/src/FiberRef.ts +444 -0
- package/src/FiberRefs.ts +204 -0
- package/src/FiberRefsPatch.ts +105 -0
- package/src/FiberSet.ts +491 -0
- package/src/FiberStatus.ts +108 -0
- package/src/Function.ts +1222 -0
- package/src/GlobalValue.ts +53 -0
- package/src/Graph.ts +3732 -0
- package/src/GroupBy.ts +103 -0
- package/src/HKT.ts +45 -0
- package/src/Hash.ts +195 -0
- package/src/HashMap.ts +519 -0
- package/src/HashRing.ts +317 -0
- package/src/HashSet.ts +2346 -0
- package/src/Inspectable.ts +287 -0
- package/src/Iterable.ts +1119 -0
- package/src/JSONSchema.ts +1044 -0
- package/src/KeyedPool.ts +167 -0
- package/src/Layer.ts +1228 -0
- package/src/LayerMap.ts +436 -0
- package/src/List.ts +977 -0
- package/src/LogLevel.ts +285 -0
- package/src/LogSpan.ts +25 -0
- package/src/Logger.ts +702 -0
- package/src/Mailbox.ts +268 -0
- package/src/ManagedRuntime.ts +180 -0
- package/src/Match.ts +1477 -0
- package/src/MergeDecision.ts +95 -0
- package/src/MergeState.ts +172 -0
- package/src/MergeStrategy.ts +107 -0
- package/src/Metric.ts +780 -0
- package/src/MetricBoundaries.ts +69 -0
- package/src/MetricHook.ts +151 -0
- package/src/MetricKey.ts +224 -0
- package/src/MetricKeyType.ts +262 -0
- package/src/MetricLabel.ts +47 -0
- package/src/MetricPair.ts +71 -0
- package/src/MetricPolling.ts +148 -0
- package/src/MetricRegistry.ts +48 -0
- package/src/MetricState.ts +257 -0
- package/src/Micro.ts +4405 -0
- package/src/ModuleVersion.ts +18 -0
- package/src/MutableHashMap.ts +411 -0
- package/src/MutableHashSet.ts +706 -0
- package/src/MutableList.ts +297 -0
- package/src/MutableQueue.ts +227 -0
- package/src/MutableRef.ts +202 -0
- package/src/NonEmptyIterable.ts +32 -0
- package/src/Number.ts +1071 -0
- package/src/Option.ts +2170 -0
- package/src/Order.ts +373 -0
- package/src/Ordering.ts +111 -0
- package/src/ParseResult.ts +2031 -0
- package/src/PartitionedSemaphore.ts +200 -0
- package/src/Pipeable.ts +566 -0
- package/src/Pool.ts +204 -0
- package/src/Predicate.ts +1405 -0
- package/src/Pretty.ts +205 -0
- package/src/PrimaryKey.ts +23 -0
- package/src/PubSub.ts +182 -0
- package/src/Queue.ts +644 -0
- package/src/Random.ts +204 -0
- package/src/RateLimiter.ts +138 -0
- package/src/RcMap.ts +141 -0
- package/src/RcRef.ts +122 -0
- package/src/Readable.ts +93 -0
- package/src/Record.ts +1274 -0
- package/src/RedBlackTree.ts +421 -0
- package/src/Redacted.ts +144 -0
- package/src/Ref.ts +180 -0
- package/src/RegExp.ts +38 -0
- package/src/Reloadable.ts +127 -0
- package/src/Request.ts +347 -0
- package/src/RequestBlock.ts +118 -0
- package/src/RequestResolver.ts +366 -0
- package/src/Resource.ts +119 -0
- package/src/Runtime.ts +383 -0
- package/src/RuntimeFlags.ts +336 -0
- package/src/RuntimeFlagsPatch.ts +183 -0
- package/src/STM.ts +2045 -0
- package/src/Schedule.ts +2219 -0
- package/src/ScheduleDecision.ts +62 -0
- package/src/ScheduleInterval.ts +151 -0
- package/src/ScheduleIntervals.ts +122 -0
- package/src/Scheduler.ts +353 -0
- package/src/Schema.ts +10914 -0
- package/src/SchemaAST.ts +3043 -0
- package/src/Scope.ts +204 -0
- package/src/ScopedCache.ts +151 -0
- package/src/ScopedRef.ts +117 -0
- package/src/Secret.ts +88 -0
- package/src/SingleProducerAsyncInput.ts +67 -0
- package/src/Sink.ts +1461 -0
- package/src/SortedMap.ts +287 -0
- package/src/SortedSet.ts +390 -0
- package/src/SourceLocation.ts +108 -0
- package/src/Stream.ts +6468 -0
- package/src/StreamEmit.ts +136 -0
- package/src/StreamHaltStrategy.ts +123 -0
- package/src/Streamable.ts +45 -0
- package/src/String.ts +778 -0
- package/src/Struct.ts +243 -0
- package/src/Subscribable.ts +100 -0
- package/src/SubscriptionRef.ts +298 -0
- package/src/Supervisor.ts +240 -0
- package/src/Symbol.ts +29 -0
- package/src/SynchronizedRef.ts +270 -0
- package/src/TArray.ts +495 -0
- package/src/TDeferred.ts +100 -0
- package/src/TMap.ts +515 -0
- package/src/TPriorityQueue.ts +223 -0
- package/src/TPubSub.ts +200 -0
- package/src/TQueue.ts +432 -0
- package/src/TRandom.ts +129 -0
- package/src/TReentrantLock.ts +224 -0
- package/src/TRef.ts +178 -0
- package/src/TSemaphore.ts +129 -0
- package/src/TSet.ts +365 -0
- package/src/TSubscriptionRef.ts +192 -0
- package/src/Take.ts +258 -0
- package/src/TestAnnotation.ts +158 -0
- package/src/TestAnnotationMap.ts +119 -0
- package/src/TestAnnotations.ts +117 -0
- package/src/TestClock.ts +556 -0
- package/src/TestConfig.ts +47 -0
- package/src/TestContext.ts +36 -0
- package/src/TestLive.ts +53 -0
- package/src/TestServices.ts +390 -0
- package/src/TestSized.ts +55 -0
- package/src/Tracer.ts +182 -0
- package/src/Trie.ts +840 -0
- package/src/Tuple.ts +305 -0
- package/src/Types.ts +353 -0
- package/src/Unify.ts +113 -0
- package/src/UpstreamPullRequest.ts +117 -0
- package/src/UpstreamPullStrategy.ts +121 -0
- package/src/Utils.ts +809 -0
- package/src/index.ts +1568 -0
- package/src/internal/array.ts +8 -0
- package/src/internal/blockedRequests.ts +520 -0
- package/src/internal/cache.ts +733 -0
- package/src/internal/cause.ts +1050 -0
- package/src/internal/channel/channelExecutor.ts +1200 -0
- package/src/internal/channel/channelState.ts +134 -0
- package/src/internal/channel/childExecutorDecision.ts +96 -0
- package/src/internal/channel/continuation.ts +200 -0
- package/src/internal/channel/mergeDecision.ts +113 -0
- package/src/internal/channel/mergeState.ts +120 -0
- package/src/internal/channel/mergeStrategy.ts +72 -0
- package/src/internal/channel/singleProducerAsyncInput.ts +259 -0
- package/src/internal/channel/subexecutor.ts +229 -0
- package/src/internal/channel/upstreamPullRequest.ts +84 -0
- package/src/internal/channel/upstreamPullStrategy.ts +87 -0
- package/src/internal/channel.ts +2603 -0
- package/src/internal/clock.ts +95 -0
- package/src/internal/completedRequestMap.ts +9 -0
- package/src/internal/concurrency.ts +54 -0
- package/src/internal/config.ts +716 -0
- package/src/internal/configError.ts +304 -0
- package/src/internal/configProvider/pathPatch.ts +97 -0
- package/src/internal/configProvider.ts +799 -0
- package/src/internal/console.ts +153 -0
- package/src/internal/context.ts +337 -0
- package/src/internal/core-effect.ts +2293 -0
- package/src/internal/core-stream.ts +998 -0
- package/src/internal/core.ts +3189 -0
- package/src/internal/data.ts +36 -0
- package/src/internal/dataSource.ts +327 -0
- package/src/internal/dateTime.ts +1277 -0
- package/src/internal/defaultServices/console.ts +100 -0
- package/src/internal/defaultServices.ts +163 -0
- package/src/internal/deferred.ts +46 -0
- package/src/internal/differ/chunkPatch.ts +211 -0
- package/src/internal/differ/contextPatch.ts +232 -0
- package/src/internal/differ/hashMapPatch.ts +220 -0
- package/src/internal/differ/hashSetPatch.ts +176 -0
- package/src/internal/differ/orPatch.ts +311 -0
- package/src/internal/differ/readonlyArrayPatch.ts +210 -0
- package/src/internal/differ.ts +200 -0
- package/src/internal/doNotation.ts +80 -0
- package/src/internal/effect/circular.ts +895 -0
- package/src/internal/effectable.ts +131 -0
- package/src/internal/either.ts +110 -0
- package/src/internal/encoding/base64.ts +286 -0
- package/src/internal/encoding/base64Url.ts +29 -0
- package/src/internal/encoding/common.ts +51 -0
- package/src/internal/encoding/hex.ts +315 -0
- package/src/internal/errors.ts +7 -0
- package/src/internal/executionPlan.ts +114 -0
- package/src/internal/executionStrategy.ts +74 -0
- package/src/internal/fiber.ts +388 -0
- package/src/internal/fiberId.ts +267 -0
- package/src/internal/fiberMessage.ts +82 -0
- package/src/internal/fiberRefs/patch.ts +144 -0
- package/src/internal/fiberRefs.ts +297 -0
- package/src/internal/fiberRuntime.ts +3842 -0
- package/src/internal/fiberScope.ts +71 -0
- package/src/internal/fiberStatus.ts +119 -0
- package/src/internal/groupBy.ts +530 -0
- package/src/internal/hashMap/array.ts +49 -0
- package/src/internal/hashMap/bitwise.ts +32 -0
- package/src/internal/hashMap/config.ts +14 -0
- package/src/internal/hashMap/keySet.ts +8 -0
- package/src/internal/hashMap/node.ts +391 -0
- package/src/internal/hashMap.ts +586 -0
- package/src/internal/hashSet.ts +323 -0
- package/src/internal/keyedPool.ts +244 -0
- package/src/internal/layer/circular.ts +214 -0
- package/src/internal/layer.ts +1483 -0
- package/src/internal/logSpan.ts +20 -0
- package/src/internal/logger-circular.ts +24 -0
- package/src/internal/logger.ts +522 -0
- package/src/internal/mailbox.ts +561 -0
- package/src/internal/managedRuntime/circular.ts +6 -0
- package/src/internal/managedRuntime.ts +134 -0
- package/src/internal/matcher.ts +652 -0
- package/src/internal/metric/boundaries.ts +75 -0
- package/src/internal/metric/hook.ts +483 -0
- package/src/internal/metric/key.ts +167 -0
- package/src/internal/metric/keyType.ts +238 -0
- package/src/internal/metric/label.ts +41 -0
- package/src/internal/metric/pair.ts +48 -0
- package/src/internal/metric/polling.ts +149 -0
- package/src/internal/metric/registry.ts +187 -0
- package/src/internal/metric/state.ts +290 -0
- package/src/internal/metric.ts +577 -0
- package/src/internal/opCodes/cause.ts +35 -0
- package/src/internal/opCodes/channel.ts +83 -0
- package/src/internal/opCodes/channelChildExecutorDecision.ts +17 -0
- package/src/internal/opCodes/channelMergeDecision.ts +11 -0
- package/src/internal/opCodes/channelMergeState.ts +17 -0
- package/src/internal/opCodes/channelMergeStrategy.ts +11 -0
- package/src/internal/opCodes/channelState.ts +23 -0
- package/src/internal/opCodes/channelUpstreamPullRequest.ts +11 -0
- package/src/internal/opCodes/channelUpstreamPullStrategy.ts +11 -0
- package/src/internal/opCodes/config.ts +65 -0
- package/src/internal/opCodes/configError.ts +35 -0
- package/src/internal/opCodes/continuation.ts +11 -0
- package/src/internal/opCodes/deferred.ts +11 -0
- package/src/internal/opCodes/effect.ts +89 -0
- package/src/internal/opCodes/layer.ts +59 -0
- package/src/internal/opCodes/streamHaltStrategy.ts +23 -0
- package/src/internal/option.ts +80 -0
- package/src/internal/pool.ts +432 -0
- package/src/internal/pubsub.ts +1762 -0
- package/src/internal/query.ts +204 -0
- package/src/internal/queue.ts +766 -0
- package/src/internal/random.ts +161 -0
- package/src/internal/rateLimiter.ts +93 -0
- package/src/internal/rcMap.ts +285 -0
- package/src/internal/rcRef.ts +192 -0
- package/src/internal/redBlackTree/iterator.ts +200 -0
- package/src/internal/redBlackTree/node.ts +68 -0
- package/src/internal/redBlackTree.ts +1245 -0
- package/src/internal/redacted.ts +73 -0
- package/src/internal/ref.ts +171 -0
- package/src/internal/reloadable.ts +140 -0
- package/src/internal/request.ts +177 -0
- package/src/internal/resource.ts +76 -0
- package/src/internal/ringBuffer.ts +68 -0
- package/src/internal/runtime.ts +558 -0
- package/src/internal/runtimeFlags.ts +178 -0
- package/src/internal/runtimeFlagsPatch.ts +103 -0
- package/src/internal/schedule/decision.ts +47 -0
- package/src/internal/schedule/interval.ts +101 -0
- package/src/internal/schedule/intervals.ts +180 -0
- package/src/internal/schedule.ts +2199 -0
- package/src/internal/schema/errors.ts +191 -0
- package/src/internal/schema/schemaId.ts +106 -0
- package/src/internal/schema/util.ts +50 -0
- package/src/internal/scopedCache.ts +644 -0
- package/src/internal/scopedRef.ts +118 -0
- package/src/internal/secret.ts +89 -0
- package/src/internal/singleShotGen.ts +35 -0
- package/src/internal/sink.ts +2120 -0
- package/src/internal/stack.ts +10 -0
- package/src/internal/stm/core.ts +817 -0
- package/src/internal/stm/entry.ts +59 -0
- package/src/internal/stm/journal.ts +123 -0
- package/src/internal/stm/opCodes/stm.ts +71 -0
- package/src/internal/stm/opCodes/stmState.ts +17 -0
- package/src/internal/stm/opCodes/strategy.ts +17 -0
- package/src/internal/stm/opCodes/tExit.ts +29 -0
- package/src/internal/stm/opCodes/tryCommit.ts +11 -0
- package/src/internal/stm/stm.ts +1453 -0
- package/src/internal/stm/stmState.ts +136 -0
- package/src/internal/stm/tArray.ts +550 -0
- package/src/internal/stm/tDeferred.ts +81 -0
- package/src/internal/stm/tExit.ts +190 -0
- package/src/internal/stm/tMap.ts +824 -0
- package/src/internal/stm/tPriorityQueue.ts +267 -0
- package/src/internal/stm/tPubSub.ts +551 -0
- package/src/internal/stm/tQueue.ts +393 -0
- package/src/internal/stm/tRandom.ts +140 -0
- package/src/internal/stm/tReentrantLock.ts +352 -0
- package/src/internal/stm/tRef.ts +195 -0
- package/src/internal/stm/tSemaphore.ts +113 -0
- package/src/internal/stm/tSet.ts +259 -0
- package/src/internal/stm/tSubscriptionRef.ts +286 -0
- package/src/internal/stm/tryCommit.ts +34 -0
- package/src/internal/stm/txnId.ts +14 -0
- package/src/internal/stm/versioned.ts +4 -0
- package/src/internal/stream/debounceState.ts +57 -0
- package/src/internal/stream/emit.ts +123 -0
- package/src/internal/stream/haltStrategy.ts +94 -0
- package/src/internal/stream/handoff.ts +187 -0
- package/src/internal/stream/handoffSignal.ts +59 -0
- package/src/internal/stream/pull.ts +34 -0
- package/src/internal/stream/sinkEndReason.ts +30 -0
- package/src/internal/stream/zipAllState.ts +88 -0
- package/src/internal/stream/zipChunksState.ts +56 -0
- package/src/internal/stream.ts +8801 -0
- package/src/internal/string-utils.ts +107 -0
- package/src/internal/subscriptionRef.ts +138 -0
- package/src/internal/supervisor/patch.ts +190 -0
- package/src/internal/supervisor.ts +303 -0
- package/src/internal/synchronizedRef.ts +114 -0
- package/src/internal/take.ts +199 -0
- package/src/internal/testing/sleep.ts +27 -0
- package/src/internal/testing/suspendedWarningData.ts +85 -0
- package/src/internal/testing/warningData.ts +94 -0
- package/src/internal/tracer.ts +150 -0
- package/src/internal/trie.ts +722 -0
- package/src/internal/version.ts +7 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import * as Effect from "../../Effect.js"
|
|
2
|
+
import type * as Exit from "../../Exit.js"
|
|
3
|
+
import { hasProperty } from "../../Predicate.js"
|
|
4
|
+
import type * as Types from "../../Types.js"
|
|
5
|
+
import * as OpCodes from "../opCodes/channelState.js"
|
|
6
|
+
import type { ErasedExecutor } from "./channelExecutor.js"
|
|
7
|
+
|
|
8
|
+
/** @internal */
|
|
9
|
+
export const ChannelStateTypeId = Symbol.for("effect/ChannelState")
|
|
10
|
+
|
|
11
|
+
/** @internal */
|
|
12
|
+
export type ChannelStateTypeId = typeof ChannelStateTypeId
|
|
13
|
+
|
|
14
|
+
/** @internal */
|
|
15
|
+
export interface ChannelState<out E, out R> extends ChannelState.Variance<E, R> {}
|
|
16
|
+
|
|
17
|
+
/** @internal */
|
|
18
|
+
export declare namespace ChannelState {
|
|
19
|
+
export interface Variance<out E, out R> {
|
|
20
|
+
readonly [ChannelStateTypeId]: {
|
|
21
|
+
readonly _E: Types.Covariant<E>
|
|
22
|
+
readonly _R: Types.Covariant<R>
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const channelStateVariance = {
|
|
28
|
+
/* c8 ignore next */
|
|
29
|
+
_E: (_: never) => _,
|
|
30
|
+
/* c8 ignore next */
|
|
31
|
+
_R: (_: never) => _
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** @internal */
|
|
35
|
+
const proto = {
|
|
36
|
+
[ChannelStateTypeId]: channelStateVariance
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** @internal */
|
|
40
|
+
export type Primitive =
|
|
41
|
+
| Done
|
|
42
|
+
| Emit
|
|
43
|
+
| FromEffect
|
|
44
|
+
| Read
|
|
45
|
+
|
|
46
|
+
/** @internal */
|
|
47
|
+
export type Op<Tag extends string, Body = {}> = ChannelState<never, never> & Body & {
|
|
48
|
+
readonly _tag: Tag
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** @internal */
|
|
52
|
+
export interface Done extends Op<OpCodes.OP_DONE, {}> {}
|
|
53
|
+
|
|
54
|
+
/** @internal */
|
|
55
|
+
export interface Emit extends Op<OpCodes.OP_EMIT, {}> {}
|
|
56
|
+
|
|
57
|
+
/** @internal */
|
|
58
|
+
export interface FromEffect extends
|
|
59
|
+
Op<OpCodes.OP_FROM_EFFECT, {
|
|
60
|
+
readonly effect: Effect.Effect<unknown, unknown, unknown>
|
|
61
|
+
}>
|
|
62
|
+
{}
|
|
63
|
+
|
|
64
|
+
/** @internal */
|
|
65
|
+
export interface Read extends
|
|
66
|
+
Op<OpCodes.OP_READ, {
|
|
67
|
+
readonly upstream: ErasedExecutor<unknown>
|
|
68
|
+
onEffect(effect: Effect.Effect<void, never, unknown>): Effect.Effect<void, never, unknown>
|
|
69
|
+
onEmit(value: unknown): Effect.Effect<void, never, unknown>
|
|
70
|
+
onDone(exit: Exit.Exit<unknown, unknown>): Effect.Effect<void, never, unknown>
|
|
71
|
+
}>
|
|
72
|
+
{}
|
|
73
|
+
|
|
74
|
+
/** @internal */
|
|
75
|
+
export const Done = (): ChannelState<never, never> => {
|
|
76
|
+
const op = Object.create(proto)
|
|
77
|
+
op._tag = OpCodes.OP_DONE
|
|
78
|
+
return op
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** @internal */
|
|
82
|
+
export const Emit = (): ChannelState<never, never> => {
|
|
83
|
+
const op = Object.create(proto)
|
|
84
|
+
op._tag = OpCodes.OP_EMIT
|
|
85
|
+
return op
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** @internal */
|
|
89
|
+
export const fromEffect = <X, E, R>(effect: Effect.Effect<X, E, R>): ChannelState<E, R> => {
|
|
90
|
+
const op = Object.create(proto)
|
|
91
|
+
op._tag = OpCodes.OP_FROM_EFFECT
|
|
92
|
+
op.effect = effect
|
|
93
|
+
return op
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** @internal */
|
|
97
|
+
export const Read = <R>(
|
|
98
|
+
upstream: ErasedExecutor<R>,
|
|
99
|
+
onEffect: (effect: Effect.Effect<void, never, R>) => Effect.Effect<void, never, R>,
|
|
100
|
+
onEmit: (value: unknown) => Effect.Effect<void, never, R> | undefined,
|
|
101
|
+
onDone: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void, never, R> | undefined
|
|
102
|
+
): ChannelState<never, R> => {
|
|
103
|
+
const op = Object.create(proto)
|
|
104
|
+
op._tag = OpCodes.OP_READ
|
|
105
|
+
op.upstream = upstream
|
|
106
|
+
op.onEffect = onEffect
|
|
107
|
+
op.onEmit = onEmit
|
|
108
|
+
op.onDone = onDone
|
|
109
|
+
return op
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** @internal */
|
|
113
|
+
export const isChannelState = (u: unknown): u is ChannelState<unknown, unknown> => hasProperty(u, ChannelStateTypeId)
|
|
114
|
+
|
|
115
|
+
/** @internal */
|
|
116
|
+
export const isDone = <E, R>(self: ChannelState<E, R>): self is Done => (self as Primitive)._tag === OpCodes.OP_DONE
|
|
117
|
+
|
|
118
|
+
/** @internal */
|
|
119
|
+
export const isEmit = <E, R>(self: ChannelState<E, R>): self is Emit => (self as Primitive)._tag === OpCodes.OP_EMIT
|
|
120
|
+
|
|
121
|
+
/** @internal */
|
|
122
|
+
export const isFromEffect = <E, R>(self: ChannelState<E, R>): self is FromEffect =>
|
|
123
|
+
(self as Primitive)._tag === OpCodes.OP_FROM_EFFECT
|
|
124
|
+
|
|
125
|
+
/** @internal */
|
|
126
|
+
export const isRead = <E, R>(self: ChannelState<E, R>): self is Read => (self as Primitive)._tag === OpCodes.OP_READ
|
|
127
|
+
|
|
128
|
+
/** @internal */
|
|
129
|
+
export const effect = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> =>
|
|
130
|
+
isFromEffect(self) ? self.effect as Effect.Effect<void, E, R> : Effect.void
|
|
131
|
+
|
|
132
|
+
/** @internal */
|
|
133
|
+
export const effectOrUndefinedIgnored = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> | undefined =>
|
|
134
|
+
isFromEffect(self) ? Effect.ignore(self.effect as Effect.Effect<void, E, R>) : undefined
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type * as ChildExecutorDecision from "../../ChildExecutorDecision.js"
|
|
2
|
+
import { dual } from "../../Function.js"
|
|
3
|
+
import { hasProperty } from "../../Predicate.js"
|
|
4
|
+
import * as OpCodes from "../opCodes/channelChildExecutorDecision.js"
|
|
5
|
+
|
|
6
|
+
/** @internal */
|
|
7
|
+
const ChildExecutorDecisionSymbolKey = "effect/ChannelChildExecutorDecision"
|
|
8
|
+
|
|
9
|
+
/** @internal */
|
|
10
|
+
export const ChildExecutorDecisionTypeId: ChildExecutorDecision.ChildExecutorDecisionTypeId = Symbol.for(
|
|
11
|
+
ChildExecutorDecisionSymbolKey
|
|
12
|
+
) as ChildExecutorDecision.ChildExecutorDecisionTypeId
|
|
13
|
+
|
|
14
|
+
/** @internal */
|
|
15
|
+
const proto = {
|
|
16
|
+
[ChildExecutorDecisionTypeId]: ChildExecutorDecisionTypeId
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** @internal */
|
|
20
|
+
export const Continue = (_: void): ChildExecutorDecision.ChildExecutorDecision => {
|
|
21
|
+
const op = Object.create(proto)
|
|
22
|
+
op._tag = OpCodes.OP_CONTINUE
|
|
23
|
+
return op
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** @internal */
|
|
27
|
+
export const Close = (value: unknown): ChildExecutorDecision.ChildExecutorDecision => {
|
|
28
|
+
const op = Object.create(proto)
|
|
29
|
+
op._tag = OpCodes.OP_CLOSE
|
|
30
|
+
op.value = value
|
|
31
|
+
return op
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** @internal */
|
|
35
|
+
export const Yield = (_: void): ChildExecutorDecision.ChildExecutorDecision => {
|
|
36
|
+
const op = Object.create(proto)
|
|
37
|
+
op._tag = OpCodes.OP_YIELD
|
|
38
|
+
return op
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** @internal */
|
|
42
|
+
export const isChildExecutorDecision = (u: unknown): u is ChildExecutorDecision.ChildExecutorDecision =>
|
|
43
|
+
hasProperty(u, ChildExecutorDecisionTypeId)
|
|
44
|
+
|
|
45
|
+
/** @internal */
|
|
46
|
+
export const isContinue = (
|
|
47
|
+
self: ChildExecutorDecision.ChildExecutorDecision
|
|
48
|
+
): self is ChildExecutorDecision.Continue => self._tag === OpCodes.OP_CONTINUE
|
|
49
|
+
|
|
50
|
+
/** @internal */
|
|
51
|
+
export const isClose = (
|
|
52
|
+
self: ChildExecutorDecision.ChildExecutorDecision
|
|
53
|
+
): self is ChildExecutorDecision.Close => self._tag === OpCodes.OP_CLOSE
|
|
54
|
+
|
|
55
|
+
/** @internal */
|
|
56
|
+
export const isYield = (
|
|
57
|
+
self: ChildExecutorDecision.ChildExecutorDecision
|
|
58
|
+
): self is ChildExecutorDecision.Yield => self._tag === OpCodes.OP_YIELD
|
|
59
|
+
|
|
60
|
+
/** @internal */
|
|
61
|
+
export const match = dual<
|
|
62
|
+
<A>(
|
|
63
|
+
options: {
|
|
64
|
+
readonly onContinue: () => A
|
|
65
|
+
readonly onClose: (value: unknown) => A
|
|
66
|
+
readonly onYield: () => A
|
|
67
|
+
}
|
|
68
|
+
) => (self: ChildExecutorDecision.ChildExecutorDecision) => A,
|
|
69
|
+
<A>(
|
|
70
|
+
self: ChildExecutorDecision.ChildExecutorDecision,
|
|
71
|
+
options: {
|
|
72
|
+
readonly onContinue: () => A
|
|
73
|
+
readonly onClose: (value: unknown) => A
|
|
74
|
+
readonly onYield: () => A
|
|
75
|
+
}
|
|
76
|
+
) => A
|
|
77
|
+
>(2, <A>(
|
|
78
|
+
self: ChildExecutorDecision.ChildExecutorDecision,
|
|
79
|
+
{ onClose, onContinue, onYield }: {
|
|
80
|
+
readonly onContinue: () => A
|
|
81
|
+
readonly onClose: (value: unknown) => A
|
|
82
|
+
readonly onYield: () => A
|
|
83
|
+
}
|
|
84
|
+
): A => {
|
|
85
|
+
switch (self._tag) {
|
|
86
|
+
case OpCodes.OP_CONTINUE: {
|
|
87
|
+
return onContinue()
|
|
88
|
+
}
|
|
89
|
+
case OpCodes.OP_CLOSE: {
|
|
90
|
+
return onClose(self.value)
|
|
91
|
+
}
|
|
92
|
+
case OpCodes.OP_YIELD: {
|
|
93
|
+
return onYield()
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
})
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type * as Cause from "../../Cause.js"
|
|
2
|
+
import type * as Channel from "../../Channel.js"
|
|
3
|
+
import type * as Effect from "../../Effect.js"
|
|
4
|
+
import * as Exit from "../../Exit.js"
|
|
5
|
+
import type * as Types from "../../Types.js"
|
|
6
|
+
import * as OpCodes from "../opCodes/continuation.js"
|
|
7
|
+
|
|
8
|
+
/** @internal */
|
|
9
|
+
export const ContinuationTypeId = Symbol.for("effect/ChannelContinuation")
|
|
10
|
+
|
|
11
|
+
/** @internal */
|
|
12
|
+
export type ContinuationTypeId = typeof ContinuationTypeId
|
|
13
|
+
|
|
14
|
+
/** @internal */
|
|
15
|
+
export interface Continuation<
|
|
16
|
+
out Env,
|
|
17
|
+
in InErr,
|
|
18
|
+
in InElem,
|
|
19
|
+
in InDone,
|
|
20
|
+
out OutErr,
|
|
21
|
+
out OutErr2,
|
|
22
|
+
out OutElem,
|
|
23
|
+
out OutDone,
|
|
24
|
+
out OutDone2
|
|
25
|
+
> extends Continuation.Variance<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2> {}
|
|
26
|
+
|
|
27
|
+
/** @internal */
|
|
28
|
+
export declare namespace Continuation {
|
|
29
|
+
/** @internal */
|
|
30
|
+
export interface Variance<
|
|
31
|
+
out Env,
|
|
32
|
+
in InErr,
|
|
33
|
+
in InElem,
|
|
34
|
+
in InDone,
|
|
35
|
+
out OutErr,
|
|
36
|
+
out OutErr2,
|
|
37
|
+
out OutElem,
|
|
38
|
+
out OutDone,
|
|
39
|
+
out OutDone2
|
|
40
|
+
> {
|
|
41
|
+
readonly [ContinuationTypeId]: {
|
|
42
|
+
readonly _Env: Types.Covariant<Env>
|
|
43
|
+
readonly _InErr: Types.Contravariant<InErr>
|
|
44
|
+
readonly _InElem: Types.Contravariant<InElem>
|
|
45
|
+
readonly _InDone: Types.Contravariant<InDone>
|
|
46
|
+
readonly _OutErr: Types.Covariant<OutErr>
|
|
47
|
+
readonly _OutDone: Types.Covariant<OutDone>
|
|
48
|
+
readonly _OutErr2: Types.Covariant<OutErr2>
|
|
49
|
+
readonly _OutElem: Types.Covariant<OutElem>
|
|
50
|
+
readonly _OutDone2: Types.Covariant<OutDone2>
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** @internal */
|
|
56
|
+
export type Primitive = ErasedContinuationK | ErasedContinuationFinalizer
|
|
57
|
+
|
|
58
|
+
/** @internal */
|
|
59
|
+
export type ErasedContinuationK = ContinuationK<
|
|
60
|
+
unknown,
|
|
61
|
+
unknown,
|
|
62
|
+
unknown,
|
|
63
|
+
unknown,
|
|
64
|
+
unknown,
|
|
65
|
+
unknown,
|
|
66
|
+
unknown,
|
|
67
|
+
unknown,
|
|
68
|
+
unknown
|
|
69
|
+
>
|
|
70
|
+
|
|
71
|
+
/** @internal */
|
|
72
|
+
export type ErasedContinuationFinalizer = ContinuationFinalizer<unknown, unknown, unknown>
|
|
73
|
+
|
|
74
|
+
/** @internal */
|
|
75
|
+
export interface ContinuationK<
|
|
76
|
+
out Env,
|
|
77
|
+
in InErr,
|
|
78
|
+
in InElem,
|
|
79
|
+
in InDone,
|
|
80
|
+
out OutErr,
|
|
81
|
+
out OutErr2,
|
|
82
|
+
out OutElem,
|
|
83
|
+
out OutDone,
|
|
84
|
+
out OutDone2
|
|
85
|
+
> extends
|
|
86
|
+
Continuation<
|
|
87
|
+
Env,
|
|
88
|
+
InErr,
|
|
89
|
+
InElem,
|
|
90
|
+
InDone,
|
|
91
|
+
OutErr,
|
|
92
|
+
OutErr2,
|
|
93
|
+
OutElem,
|
|
94
|
+
OutDone,
|
|
95
|
+
OutDone2
|
|
96
|
+
>
|
|
97
|
+
{
|
|
98
|
+
readonly _tag: OpCodes.OP_CONTINUATION_K
|
|
99
|
+
onSuccess(
|
|
100
|
+
o: OutDone
|
|
101
|
+
): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>
|
|
102
|
+
onHalt(
|
|
103
|
+
c: Cause.Cause<OutErr>
|
|
104
|
+
): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>
|
|
105
|
+
onExit(
|
|
106
|
+
exit: Exit.Exit<OutDone, OutErr>
|
|
107
|
+
): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** @internal */
|
|
111
|
+
export interface ContinuationFinalizer<out Env, out OutErr, out OutDone> extends
|
|
112
|
+
Continuation<
|
|
113
|
+
Env,
|
|
114
|
+
unknown,
|
|
115
|
+
unknown,
|
|
116
|
+
unknown,
|
|
117
|
+
OutErr,
|
|
118
|
+
never,
|
|
119
|
+
never,
|
|
120
|
+
OutDone,
|
|
121
|
+
never
|
|
122
|
+
>
|
|
123
|
+
{
|
|
124
|
+
readonly _tag: OpCodes.OP_CONTINUATION_FINALIZER
|
|
125
|
+
finalizer(exit: Exit.Exit<OutErr, OutDone>): Effect.Effect<unknown, never, Env>
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const continuationVariance = {
|
|
129
|
+
/* c8 ignore next */
|
|
130
|
+
_Env: (_: never) => _,
|
|
131
|
+
/* c8 ignore next */
|
|
132
|
+
_InErr: (_: unknown) => _,
|
|
133
|
+
/* c8 ignore next */
|
|
134
|
+
_InElem: (_: unknown) => _,
|
|
135
|
+
/* c8 ignore next */
|
|
136
|
+
_InDone: (_: unknown) => _,
|
|
137
|
+
/* c8 ignore next */
|
|
138
|
+
_OutErr: (_: never) => _,
|
|
139
|
+
/* c8 ignore next */
|
|
140
|
+
_OutDone: (_: never) => _,
|
|
141
|
+
/* c8 ignore next */
|
|
142
|
+
_OutErr2: (_: never) => _,
|
|
143
|
+
/* c8 ignore next */
|
|
144
|
+
_OutElem: (_: never) => _,
|
|
145
|
+
/* c8 ignore next */
|
|
146
|
+
_OutDone2: (_: never) => _
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** @internal */
|
|
150
|
+
export class ContinuationKImpl<
|
|
151
|
+
out Env,
|
|
152
|
+
out Env2,
|
|
153
|
+
in InErr,
|
|
154
|
+
in InElem,
|
|
155
|
+
in InDone,
|
|
156
|
+
in out OutErr,
|
|
157
|
+
out OutErr2,
|
|
158
|
+
out OutElem,
|
|
159
|
+
in out OutDone,
|
|
160
|
+
out OutDone2
|
|
161
|
+
> implements
|
|
162
|
+
ContinuationK<
|
|
163
|
+
Env | Env2,
|
|
164
|
+
InErr,
|
|
165
|
+
InElem,
|
|
166
|
+
InDone,
|
|
167
|
+
OutErr,
|
|
168
|
+
OutErr2,
|
|
169
|
+
OutElem,
|
|
170
|
+
OutDone,
|
|
171
|
+
OutDone2
|
|
172
|
+
>
|
|
173
|
+
{
|
|
174
|
+
readonly _tag = OpCodes.OP_CONTINUATION_K
|
|
175
|
+
readonly [ContinuationTypeId] = continuationVariance
|
|
176
|
+
constructor(
|
|
177
|
+
readonly onSuccess: (
|
|
178
|
+
o: OutDone
|
|
179
|
+
) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>,
|
|
180
|
+
readonly onHalt: (
|
|
181
|
+
c: Cause.Cause<OutErr>
|
|
182
|
+
) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env2>
|
|
183
|
+
) {
|
|
184
|
+
}
|
|
185
|
+
onExit(
|
|
186
|
+
exit: Exit.Exit<OutDone, OutErr>
|
|
187
|
+
): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env | Env2> {
|
|
188
|
+
return Exit.isFailure(exit) ? this.onHalt(exit.cause) : this.onSuccess(exit.value)
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** @internal */
|
|
193
|
+
export class ContinuationFinalizerImpl<out Env, in out OutErr, in out OutDone>
|
|
194
|
+
implements ContinuationFinalizer<Env, OutErr, OutDone>
|
|
195
|
+
{
|
|
196
|
+
readonly _tag = OpCodes.OP_CONTINUATION_FINALIZER
|
|
197
|
+
readonly [ContinuationTypeId] = continuationVariance
|
|
198
|
+
constructor(readonly finalizer: (exit: Exit.Exit<OutErr, OutDone>) => Effect.Effect<unknown, never, Env>) {
|
|
199
|
+
}
|
|
200
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type * as Effect from "../../Effect.js"
|
|
2
|
+
import type * as Exit from "../../Exit.js"
|
|
3
|
+
import { dual } from "../../Function.js"
|
|
4
|
+
import type * as MergeDecision from "../../MergeDecision.js"
|
|
5
|
+
import { hasProperty } from "../../Predicate.js"
|
|
6
|
+
import * as OpCodes from "../opCodes/channelMergeDecision.js"
|
|
7
|
+
|
|
8
|
+
/** @internal */
|
|
9
|
+
const MergeDecisionSymbolKey = "effect/ChannelMergeDecision"
|
|
10
|
+
|
|
11
|
+
/** @internal */
|
|
12
|
+
export const MergeDecisionTypeId: MergeDecision.MergeDecisionTypeId = Symbol.for(
|
|
13
|
+
MergeDecisionSymbolKey
|
|
14
|
+
) as MergeDecision.MergeDecisionTypeId
|
|
15
|
+
|
|
16
|
+
/** @internal */
|
|
17
|
+
const proto = {
|
|
18
|
+
[MergeDecisionTypeId]: {
|
|
19
|
+
_R: (_: never) => _,
|
|
20
|
+
_E0: (_: unknown) => _,
|
|
21
|
+
_Z0: (_: unknown) => _,
|
|
22
|
+
_E: (_: never) => _,
|
|
23
|
+
_Z: (_: never) => _
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** @internal */
|
|
28
|
+
export type Primitive =
|
|
29
|
+
| Done
|
|
30
|
+
| Await
|
|
31
|
+
|
|
32
|
+
/** @internal */
|
|
33
|
+
export type Op<Tag extends string, Body = {}> =
|
|
34
|
+
& MergeDecision.MergeDecision<never, unknown, unknown, never, never>
|
|
35
|
+
& Body
|
|
36
|
+
& {
|
|
37
|
+
readonly _tag: Tag
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** @internal */
|
|
41
|
+
export interface Done extends
|
|
42
|
+
Op<OpCodes.OP_DONE, {
|
|
43
|
+
readonly effect: Effect.Effect<never>
|
|
44
|
+
}>
|
|
45
|
+
{}
|
|
46
|
+
|
|
47
|
+
/** @internal */
|
|
48
|
+
export interface Await extends
|
|
49
|
+
Op<OpCodes.OP_AWAIT, {
|
|
50
|
+
f(exit: Exit.Exit<unknown, unknown>): Effect.Effect<never>
|
|
51
|
+
}>
|
|
52
|
+
{}
|
|
53
|
+
|
|
54
|
+
/** @internal */
|
|
55
|
+
export const Done = <Z, E, R>(
|
|
56
|
+
effect: Effect.Effect<Z, E, R>
|
|
57
|
+
): MergeDecision.MergeDecision<R, unknown, unknown, E, Z> => {
|
|
58
|
+
const op = Object.create(proto)
|
|
59
|
+
op._tag = OpCodes.OP_DONE
|
|
60
|
+
op.effect = effect
|
|
61
|
+
return op
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** @internal */
|
|
65
|
+
export const Await = <R, E0, Z0, E, Z>(
|
|
66
|
+
f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>
|
|
67
|
+
): MergeDecision.MergeDecision<R, E0, Z0, E, Z> => {
|
|
68
|
+
const op = Object.create(proto)
|
|
69
|
+
op._tag = OpCodes.OP_AWAIT
|
|
70
|
+
op.f = f
|
|
71
|
+
return op
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** @internal */
|
|
75
|
+
export const AwaitConst = <Z, E, R>(
|
|
76
|
+
effect: Effect.Effect<Z, E, R>
|
|
77
|
+
): MergeDecision.MergeDecision<R, unknown, unknown, E, Z> => Await(() => effect)
|
|
78
|
+
|
|
79
|
+
/** @internal */
|
|
80
|
+
export const isMergeDecision = (
|
|
81
|
+
u: unknown
|
|
82
|
+
): u is MergeDecision.MergeDecision<unknown, unknown, unknown, unknown, unknown> => hasProperty(u, MergeDecisionTypeId)
|
|
83
|
+
|
|
84
|
+
/** @internal */
|
|
85
|
+
export const match = dual<
|
|
86
|
+
<R, E0, Z0, E, Z, Z2>(
|
|
87
|
+
options: {
|
|
88
|
+
readonly onDone: (effect: Effect.Effect<Z, E, R>) => Z2
|
|
89
|
+
readonly onAwait: (f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>) => Z2
|
|
90
|
+
}
|
|
91
|
+
) => (self: MergeDecision.MergeDecision<R, E0, Z0, E, Z>) => Z2,
|
|
92
|
+
<R, E0, Z0, E, Z, Z2>(
|
|
93
|
+
self: MergeDecision.MergeDecision<R, E0, Z0, E, Z>,
|
|
94
|
+
options: {
|
|
95
|
+
readonly onDone: (effect: Effect.Effect<Z, E, R>) => Z2
|
|
96
|
+
readonly onAwait: (f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>) => Z2
|
|
97
|
+
}
|
|
98
|
+
) => Z2
|
|
99
|
+
>(2, <R, E0, Z0, E, Z, Z2>(
|
|
100
|
+
self: MergeDecision.MergeDecision<R, E0, Z0, E, Z>,
|
|
101
|
+
{ onAwait, onDone }: {
|
|
102
|
+
readonly onDone: (effect: Effect.Effect<Z, E, R>) => Z2
|
|
103
|
+
readonly onAwait: (f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>) => Z2
|
|
104
|
+
}
|
|
105
|
+
): Z2 => {
|
|
106
|
+
const op = self as Primitive
|
|
107
|
+
switch (op._tag) {
|
|
108
|
+
case OpCodes.OP_DONE:
|
|
109
|
+
return onDone(op.effect)
|
|
110
|
+
case OpCodes.OP_AWAIT:
|
|
111
|
+
return onAwait(op.f)
|
|
112
|
+
}
|
|
113
|
+
})
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type * as Effect from "../../Effect.js"
|
|
2
|
+
import type * as Either from "../../Either.js"
|
|
3
|
+
import type * as Exit from "../../Exit.js"
|
|
4
|
+
import type * as Fiber from "../../Fiber.js"
|
|
5
|
+
import { dual } from "../../Function.js"
|
|
6
|
+
import type * as MergeState from "../../MergeState.js"
|
|
7
|
+
import { hasProperty } from "../../Predicate.js"
|
|
8
|
+
import * as OpCodes from "../opCodes/channelMergeState.js"
|
|
9
|
+
|
|
10
|
+
/** @internal */
|
|
11
|
+
const MergeStateSymbolKey = "effect/ChannelMergeState"
|
|
12
|
+
|
|
13
|
+
/** @internal */
|
|
14
|
+
export const MergeStateTypeId: MergeState.MergeStateTypeId = Symbol.for(
|
|
15
|
+
MergeStateSymbolKey
|
|
16
|
+
) as MergeState.MergeStateTypeId
|
|
17
|
+
|
|
18
|
+
/** @internal */
|
|
19
|
+
const proto = {
|
|
20
|
+
[MergeStateTypeId]: MergeStateTypeId
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** @internal */
|
|
24
|
+
export const BothRunning = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
|
|
25
|
+
left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
|
|
26
|
+
right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
|
|
27
|
+
): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
|
|
28
|
+
const op = Object.create(proto)
|
|
29
|
+
op._tag = OpCodes.OP_BOTH_RUNNING
|
|
30
|
+
op.left = left
|
|
31
|
+
op.right = right
|
|
32
|
+
return op
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** @internal */
|
|
36
|
+
export const LeftDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
|
|
37
|
+
f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>
|
|
38
|
+
): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
|
|
39
|
+
const op = Object.create(proto)
|
|
40
|
+
op._tag = OpCodes.OP_LEFT_DONE
|
|
41
|
+
op.f = f
|
|
42
|
+
return op
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** @internal */
|
|
46
|
+
export const RightDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
|
|
47
|
+
f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>
|
|
48
|
+
): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
|
|
49
|
+
const op = Object.create(proto)
|
|
50
|
+
op._tag = OpCodes.OP_RIGHT_DONE
|
|
51
|
+
op.f = f
|
|
52
|
+
return op
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** @internal */
|
|
56
|
+
export const isMergeState = (
|
|
57
|
+
u: unknown
|
|
58
|
+
): u is MergeState.MergeState<unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown> =>
|
|
59
|
+
hasProperty(u, MergeStateTypeId)
|
|
60
|
+
|
|
61
|
+
/** @internal */
|
|
62
|
+
export const isBothRunning = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
|
|
63
|
+
self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>
|
|
64
|
+
): self is MergeState.BothRunning<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
|
|
65
|
+
return self._tag === OpCodes.OP_BOTH_RUNNING
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** @internal */
|
|
69
|
+
export const isLeftDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
|
|
70
|
+
self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>
|
|
71
|
+
): self is MergeState.LeftDone<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
|
|
72
|
+
return self._tag === OpCodes.OP_LEFT_DONE
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** @internal */
|
|
76
|
+
export const isRightDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
|
|
77
|
+
self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>
|
|
78
|
+
): self is MergeState.RightDone<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
|
|
79
|
+
return self._tag === OpCodes.OP_RIGHT_DONE
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** @internal */
|
|
83
|
+
export const match = dual<
|
|
84
|
+
<Env, Err, Err1, Err2, Elem, Done, Done1, Done2, Z>(
|
|
85
|
+
options: {
|
|
86
|
+
readonly onBothRunning: (
|
|
87
|
+
left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
|
|
88
|
+
right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
|
|
89
|
+
) => Z
|
|
90
|
+
readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
91
|
+
readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
92
|
+
}
|
|
93
|
+
) => (self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>) => Z,
|
|
94
|
+
<Env, Err, Err1, Err2, Elem, Done, Done1, Done2, Z>(
|
|
95
|
+
self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>,
|
|
96
|
+
options: {
|
|
97
|
+
readonly onBothRunning: (
|
|
98
|
+
left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
|
|
99
|
+
right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
|
|
100
|
+
) => Z
|
|
101
|
+
readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
102
|
+
readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
|
|
103
|
+
}
|
|
104
|
+
) => Z
|
|
105
|
+
>(2, (
|
|
106
|
+
self,
|
|
107
|
+
{ onBothRunning, onLeftDone, onRightDone }
|
|
108
|
+
) => {
|
|
109
|
+
switch (self._tag) {
|
|
110
|
+
case OpCodes.OP_BOTH_RUNNING: {
|
|
111
|
+
return onBothRunning(self.left, self.right)
|
|
112
|
+
}
|
|
113
|
+
case OpCodes.OP_LEFT_DONE: {
|
|
114
|
+
return onLeftDone(self.f)
|
|
115
|
+
}
|
|
116
|
+
case OpCodes.OP_RIGHT_DONE: {
|
|
117
|
+
return onRightDone(self.f)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
})
|