@clayroach/effect 3.19.14-source-capture.8 → 3.19.14-source-trace.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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
package/src/Mailbox.ts
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 3.8.0
|
|
3
|
+
* @experimental
|
|
4
|
+
*/
|
|
5
|
+
import type { Cause, NoSuchElementException } from "./Cause.js"
|
|
6
|
+
import type { Channel } from "./Channel.js"
|
|
7
|
+
import type { Chunk } from "./Chunk.js"
|
|
8
|
+
import type { Effect } from "./Effect.js"
|
|
9
|
+
import type { Exit } from "./Exit.js"
|
|
10
|
+
import type { Inspectable } from "./Inspectable.js"
|
|
11
|
+
import * as internal from "./internal/mailbox.js"
|
|
12
|
+
import type { Option } from "./Option.js"
|
|
13
|
+
import { hasProperty } from "./Predicate.js"
|
|
14
|
+
import type { Scope } from "./Scope.js"
|
|
15
|
+
import type { Stream } from "./Stream.js"
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @since 3.8.0
|
|
19
|
+
* @experimental
|
|
20
|
+
* @category type ids
|
|
21
|
+
*/
|
|
22
|
+
export const TypeId: unique symbol = internal.TypeId
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @since 3.8.0
|
|
26
|
+
* @experimental
|
|
27
|
+
* @category type ids
|
|
28
|
+
*/
|
|
29
|
+
export type TypeId = typeof TypeId
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @since 3.8.0
|
|
33
|
+
* @experimental
|
|
34
|
+
* @category type ids
|
|
35
|
+
*/
|
|
36
|
+
export const ReadonlyTypeId: unique symbol = internal.ReadonlyTypeId
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @since 3.8.0
|
|
40
|
+
* @experimental
|
|
41
|
+
* @category type ids
|
|
42
|
+
*/
|
|
43
|
+
export type ReadonlyTypeId = typeof ReadonlyTypeId
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @since 3.8.0
|
|
47
|
+
* @experimental
|
|
48
|
+
* @category guards
|
|
49
|
+
*/
|
|
50
|
+
export const isMailbox = <A = unknown, E = unknown>(u: unknown): u is Mailbox<A, E> => hasProperty(u, TypeId)
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @since 3.8.0
|
|
54
|
+
* @experimental
|
|
55
|
+
* @category guards
|
|
56
|
+
*/
|
|
57
|
+
export const isReadonlyMailbox = <A = unknown, E = unknown>(u: unknown): u is ReadonlyMailbox<A, E> =>
|
|
58
|
+
hasProperty(u, ReadonlyTypeId)
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* A `Mailbox` is a queue that can be signaled to be done or failed.
|
|
62
|
+
*
|
|
63
|
+
* @since 3.8.0
|
|
64
|
+
* @experimental
|
|
65
|
+
* @category models
|
|
66
|
+
*/
|
|
67
|
+
export interface Mailbox<in out A, in out E = never> extends ReadonlyMailbox<A, E> {
|
|
68
|
+
readonly [TypeId]: TypeId
|
|
69
|
+
/**
|
|
70
|
+
* Add a message to the mailbox. Returns `false` if the mailbox is done.
|
|
71
|
+
*/
|
|
72
|
+
readonly offer: (message: A) => Effect<boolean>
|
|
73
|
+
/**
|
|
74
|
+
* Add a message to the mailbox. Returns `false` if the mailbox is done.
|
|
75
|
+
*/
|
|
76
|
+
readonly unsafeOffer: (message: A) => boolean
|
|
77
|
+
/**
|
|
78
|
+
* Add multiple messages to the mailbox. Returns the remaining messages that
|
|
79
|
+
* were not added.
|
|
80
|
+
*/
|
|
81
|
+
readonly offerAll: (messages: Iterable<A>) => Effect<Chunk<A>>
|
|
82
|
+
/**
|
|
83
|
+
* Add multiple messages to the mailbox. Returns the remaining messages that
|
|
84
|
+
* were not added.
|
|
85
|
+
*/
|
|
86
|
+
readonly unsafeOfferAll: (messages: Iterable<A>) => Chunk<A>
|
|
87
|
+
/**
|
|
88
|
+
* Fail the mailbox with an error. If the mailbox is already done, `false` is
|
|
89
|
+
* returned.
|
|
90
|
+
*/
|
|
91
|
+
readonly fail: (error: E) => Effect<boolean>
|
|
92
|
+
/**
|
|
93
|
+
* Fail the mailbox with a cause. If the mailbox is already done, `false` is
|
|
94
|
+
* returned.
|
|
95
|
+
*/
|
|
96
|
+
readonly failCause: (cause: Cause<E>) => Effect<boolean>
|
|
97
|
+
/**
|
|
98
|
+
* Signal that the mailbox is complete. If the mailbox is already done, `false` is
|
|
99
|
+
* returned.
|
|
100
|
+
*/
|
|
101
|
+
readonly end: Effect<boolean>
|
|
102
|
+
/**
|
|
103
|
+
* Signal that the mailbox is done. If the mailbox is already done, `false` is
|
|
104
|
+
* returned.
|
|
105
|
+
*/
|
|
106
|
+
readonly done: (exit: Exit<void, E>) => Effect<boolean>
|
|
107
|
+
/**
|
|
108
|
+
* Signal that the mailbox is done. If the mailbox is already done, `false` is
|
|
109
|
+
* returned.
|
|
110
|
+
*/
|
|
111
|
+
readonly unsafeDone: (exit: Exit<void, E>) => boolean
|
|
112
|
+
/**
|
|
113
|
+
* Shutdown the mailbox, canceling any pending operations.
|
|
114
|
+
* If the mailbox is already done, `false` is returned.
|
|
115
|
+
*/
|
|
116
|
+
readonly shutdown: Effect<boolean>
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* A `ReadonlyMailbox` represents a mailbox that can only be read from.
|
|
121
|
+
*
|
|
122
|
+
* @since 3.8.0
|
|
123
|
+
* @experimental
|
|
124
|
+
* @category models
|
|
125
|
+
*/
|
|
126
|
+
export interface ReadonlyMailbox<out A, out E = never>
|
|
127
|
+
extends Effect<readonly [messages: Chunk<A>, done: boolean], E>, Inspectable
|
|
128
|
+
{
|
|
129
|
+
readonly [ReadonlyTypeId]: ReadonlyTypeId
|
|
130
|
+
/**
|
|
131
|
+
* Take all messages from the mailbox, returning an empty Chunk if the mailbox
|
|
132
|
+
* is empty or done.
|
|
133
|
+
*/
|
|
134
|
+
readonly clear: Effect<Chunk<A>, E>
|
|
135
|
+
/**
|
|
136
|
+
* Take all messages from the mailbox, or wait for messages to be available.
|
|
137
|
+
*
|
|
138
|
+
* If the mailbox is done, the `done` flag will be `true`. If the mailbox
|
|
139
|
+
* fails, the Effect will fail with the error.
|
|
140
|
+
*/
|
|
141
|
+
readonly takeAll: Effect<readonly [messages: Chunk<A>, done: boolean], E>
|
|
142
|
+
/**
|
|
143
|
+
* Take a specified number of messages from the mailbox. It will only take
|
|
144
|
+
* up to the capacity of the mailbox.
|
|
145
|
+
*
|
|
146
|
+
* If the mailbox is done, the `done` flag will be `true`. If the mailbox
|
|
147
|
+
* fails, the Effect will fail with the error.
|
|
148
|
+
*/
|
|
149
|
+
readonly takeN: (n: number) => Effect<readonly [messages: Chunk<A>, done: boolean], E>
|
|
150
|
+
/**
|
|
151
|
+
* Take a single message from the mailbox, or wait for a message to be
|
|
152
|
+
* available.
|
|
153
|
+
*
|
|
154
|
+
* If the mailbox is done, it will fail with `NoSuchElementException`. If the
|
|
155
|
+
* mailbox fails, the Effect will fail with the error.
|
|
156
|
+
*/
|
|
157
|
+
readonly take: Effect<A, E | NoSuchElementException>
|
|
158
|
+
/** Wait for the mailbox to be done. */
|
|
159
|
+
readonly await: Effect<void, E>
|
|
160
|
+
/**
|
|
161
|
+
* Check the size of the mailbox.
|
|
162
|
+
*
|
|
163
|
+
* If the mailbox is complete, it will return `None`.
|
|
164
|
+
*/
|
|
165
|
+
readonly size: Effect<Option<number>>
|
|
166
|
+
/**
|
|
167
|
+
* Check the size of the mailbox.
|
|
168
|
+
*
|
|
169
|
+
* If the mailbox is complete, it will return `None`.
|
|
170
|
+
*/
|
|
171
|
+
readonly unsafeSize: () => Option<number>
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* A `Mailbox` is a queue that can be signaled to be done or failed.
|
|
176
|
+
*
|
|
177
|
+
* @since 3.8.0
|
|
178
|
+
* @experimental
|
|
179
|
+
* @category constructors
|
|
180
|
+
* @example
|
|
181
|
+
* ```ts
|
|
182
|
+
* import * as assert from "node:assert"
|
|
183
|
+
* import { Effect, Mailbox } from "effect"
|
|
184
|
+
*
|
|
185
|
+
* Effect.gen(function*() {
|
|
186
|
+
* const mailbox = yield* Mailbox.make<number, string>()
|
|
187
|
+
*
|
|
188
|
+
* // add messages to the mailbox
|
|
189
|
+
* yield* mailbox.offer(1)
|
|
190
|
+
* yield* mailbox.offer(2)
|
|
191
|
+
* yield* mailbox.offerAll([3, 4, 5])
|
|
192
|
+
*
|
|
193
|
+
* // take messages from the mailbox
|
|
194
|
+
* const [messages, done] = yield* mailbox.takeAll
|
|
195
|
+
* assert.deepStrictEqual(messages, [1, 2, 3, 4, 5])
|
|
196
|
+
* assert.strictEqual(done, false)
|
|
197
|
+
*
|
|
198
|
+
* // signal that the mailbox is done
|
|
199
|
+
* yield* mailbox.end
|
|
200
|
+
* const [messages2, done2] = yield* mailbox.takeAll
|
|
201
|
+
* assert.deepStrictEqual(messages2, [])
|
|
202
|
+
* assert.strictEqual(done2, true)
|
|
203
|
+
*
|
|
204
|
+
* // signal that the mailbox has failed
|
|
205
|
+
* yield* mailbox.fail("boom")
|
|
206
|
+
* })
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
export const make: <A, E = never>(
|
|
210
|
+
capacity?: number | {
|
|
211
|
+
readonly capacity?: number
|
|
212
|
+
readonly strategy?: "suspend" | "dropping" | "sliding"
|
|
213
|
+
} | undefined
|
|
214
|
+
) => Effect<Mailbox<A, E>> = internal.make
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Run an `Effect` into a `Mailbox`, where success ends the mailbox and failure
|
|
218
|
+
* fails the mailbox.
|
|
219
|
+
*
|
|
220
|
+
* @since 3.8.0
|
|
221
|
+
* @experimental
|
|
222
|
+
* @category combinators
|
|
223
|
+
*/
|
|
224
|
+
export const into: {
|
|
225
|
+
<A, E>(self: Mailbox<A, E>): <AX, EX extends E, RX>(effect: Effect<AX, EX, RX>) => Effect<boolean, never, RX>
|
|
226
|
+
<AX, E, EX extends E, RX, A>(effect: Effect<AX, EX, RX>, self: Mailbox<A, E>): Effect<boolean, never, RX>
|
|
227
|
+
} = internal.into
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Create a `Channel` from a `Mailbox`.
|
|
231
|
+
*
|
|
232
|
+
* @since 3.8.0
|
|
233
|
+
* @experimental
|
|
234
|
+
* @category conversions
|
|
235
|
+
*/
|
|
236
|
+
export const toChannel: <A, E>(self: ReadonlyMailbox<A, E>) => Channel<Chunk<A>, unknown, E> = internal.toChannel
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Create a `Stream` from a `Mailbox`.
|
|
240
|
+
*
|
|
241
|
+
* @since 3.8.0
|
|
242
|
+
* @experimental
|
|
243
|
+
* @category conversions
|
|
244
|
+
*/
|
|
245
|
+
export const toStream: <A, E>(self: ReadonlyMailbox<A, E>) => Stream<A, E> = internal.toStream
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Create a `ReadonlyMailbox` from a `Stream`.
|
|
249
|
+
*
|
|
250
|
+
* @since 3.11.0
|
|
251
|
+
* @experimental
|
|
252
|
+
* @category conversions
|
|
253
|
+
*/
|
|
254
|
+
export const fromStream: {
|
|
255
|
+
(
|
|
256
|
+
options?: {
|
|
257
|
+
readonly capacity?: number | undefined
|
|
258
|
+
readonly strategy?: "suspend" | "dropping" | "sliding" | undefined
|
|
259
|
+
}
|
|
260
|
+
): <A, E, R>(self: Stream<A, E, R>) => Effect<ReadonlyMailbox<A, E>, never, R | Scope>
|
|
261
|
+
<A, E, R>(
|
|
262
|
+
self: Stream<A, E, R>,
|
|
263
|
+
options?: {
|
|
264
|
+
readonly capacity?: number | undefined
|
|
265
|
+
readonly strategy?: "suspend" | "dropping" | "sliding" | undefined
|
|
266
|
+
}
|
|
267
|
+
): Effect<ReadonlyMailbox<A, E>, never, R | Scope>
|
|
268
|
+
} = internal.fromStream
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Effect from "./Effect.js"
|
|
5
|
+
import type * as Exit from "./Exit.js"
|
|
6
|
+
import type * as Fiber from "./Fiber.js"
|
|
7
|
+
import * as internal from "./internal/managedRuntime.js"
|
|
8
|
+
import * as circular from "./internal/managedRuntime/circular.js"
|
|
9
|
+
import type * as Layer from "./Layer.js"
|
|
10
|
+
import type * as Runtime from "./Runtime.js"
|
|
11
|
+
import type * as Unify from "./Unify.js"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @since 3.9.0
|
|
15
|
+
* @category symbol
|
|
16
|
+
*/
|
|
17
|
+
export const TypeId: unique symbol = circular.TypeId as TypeId
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @since 3.9.0
|
|
21
|
+
* @category symbol
|
|
22
|
+
*/
|
|
23
|
+
export type TypeId = typeof TypeId
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Checks if the provided argument is a `ManagedRuntime`.
|
|
27
|
+
*
|
|
28
|
+
* @since 3.9.0
|
|
29
|
+
* @category guards
|
|
30
|
+
*/
|
|
31
|
+
export const isManagedRuntime: (input: unknown) => input is ManagedRuntime<unknown, unknown> = internal.isManagedRuntime
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @since 3.4.0
|
|
35
|
+
*/
|
|
36
|
+
export declare namespace ManagedRuntime {
|
|
37
|
+
/**
|
|
38
|
+
* @category type-level
|
|
39
|
+
* @since 3.4.0
|
|
40
|
+
*/
|
|
41
|
+
export type Context<T extends ManagedRuntime<never, any>> = [T] extends [ManagedRuntime<infer R, infer _E>] ? R
|
|
42
|
+
: never
|
|
43
|
+
/**
|
|
44
|
+
* @category type-level
|
|
45
|
+
* @since 3.4.0
|
|
46
|
+
*/
|
|
47
|
+
export type Error<T extends ManagedRuntime<never, any>> = [T] extends [ManagedRuntime<infer _R, infer E>] ? E : never
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @since 2.0.0
|
|
52
|
+
* @category models
|
|
53
|
+
*/
|
|
54
|
+
export interface ManagedRuntime<in R, out ER> extends Effect.Effect<Runtime.Runtime<R>, ER> {
|
|
55
|
+
readonly [TypeId]: TypeId
|
|
56
|
+
readonly memoMap: Layer.MemoMap
|
|
57
|
+
readonly runtimeEffect: Effect.Effect<Runtime.Runtime<R>, ER>
|
|
58
|
+
readonly runtime: () => Promise<Runtime.Runtime<R>>
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Executes the effect using the provided Scheduler or using the global
|
|
62
|
+
* Scheduler if not provided
|
|
63
|
+
*/
|
|
64
|
+
readonly runFork: <A, E>(
|
|
65
|
+
self: Effect.Effect<A, E, R>,
|
|
66
|
+
options?: Runtime.RunForkOptions
|
|
67
|
+
) => Fiber.RuntimeFiber<A, E | ER>
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Executes the effect synchronously returning the exit.
|
|
71
|
+
*
|
|
72
|
+
* This method is effectful and should only be invoked at the edges of your
|
|
73
|
+
* program.
|
|
74
|
+
*/
|
|
75
|
+
readonly runSyncExit: <A, E>(effect: Effect.Effect<A, E, R>) => Exit.Exit<A, ER | E>
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Executes the effect synchronously throwing in case of errors or async boundaries.
|
|
79
|
+
*
|
|
80
|
+
* This method is effectful and should only be invoked at the edges of your
|
|
81
|
+
* program.
|
|
82
|
+
*/
|
|
83
|
+
readonly runSync: <A, E>(effect: Effect.Effect<A, E, R>) => A
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Executes the effect asynchronously, eventually passing the exit value to
|
|
87
|
+
* the specified callback.
|
|
88
|
+
*
|
|
89
|
+
* This method is effectful and should only be invoked at the edges of your
|
|
90
|
+
* program.
|
|
91
|
+
*/
|
|
92
|
+
readonly runCallback: <A, E>(
|
|
93
|
+
effect: Effect.Effect<A, E, R>,
|
|
94
|
+
options?: Runtime.RunCallbackOptions<A, E | ER> | undefined
|
|
95
|
+
) => Runtime.Cancel<A, E | ER>
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Runs the `Effect`, returning a JavaScript `Promise` that will be resolved
|
|
99
|
+
* with the value of the effect once the effect has been executed, or will be
|
|
100
|
+
* rejected with the first error or exception throw by the effect.
|
|
101
|
+
*
|
|
102
|
+
* This method is effectful and should only be used at the edges of your
|
|
103
|
+
* program.
|
|
104
|
+
*/
|
|
105
|
+
readonly runPromise: <A, E>(effect: Effect.Effect<A, E, R>, options?: {
|
|
106
|
+
readonly signal?: AbortSignal | undefined
|
|
107
|
+
}) => Promise<A>
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Runs the `Effect`, returning a JavaScript `Promise` that will be resolved
|
|
111
|
+
* with the `Exit` state of the effect once the effect has been executed.
|
|
112
|
+
*
|
|
113
|
+
* This method is effectful and should only be used at the edges of your
|
|
114
|
+
* program.
|
|
115
|
+
*/
|
|
116
|
+
readonly runPromiseExit: <A, E>(effect: Effect.Effect<A, E, R>, options?: {
|
|
117
|
+
readonly signal?: AbortSignal | undefined
|
|
118
|
+
}) => Promise<Exit.Exit<A, ER | E>>
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Dispose of the resources associated with the runtime.
|
|
122
|
+
*/
|
|
123
|
+
readonly dispose: () => Promise<void>
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Dispose of the resources associated with the runtime.
|
|
127
|
+
*/
|
|
128
|
+
readonly disposeEffect: Effect.Effect<void, never, never>
|
|
129
|
+
|
|
130
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
131
|
+
readonly [Unify.unifySymbol]?: ManagedRuntimeUnify<this>
|
|
132
|
+
readonly [Unify.ignoreSymbol]?: ManagedRuntimeUnifyIgnore
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @category models
|
|
137
|
+
* @since 3.9.0
|
|
138
|
+
*/
|
|
139
|
+
export interface ManagedRuntimeUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
|
|
140
|
+
ManagedRuntime?: () => Extract<A[Unify.typeSymbol], ManagedRuntime<any, any>>
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @category models
|
|
145
|
+
* @since 3.9.0
|
|
146
|
+
*/
|
|
147
|
+
export interface ManagedRuntimeUnifyIgnore extends Effect.EffectUnifyIgnore {
|
|
148
|
+
Effect?: true
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Convert a Layer into an ManagedRuntime, that can be used to run Effect's using
|
|
153
|
+
* your services.
|
|
154
|
+
*
|
|
155
|
+
* @since 2.0.0
|
|
156
|
+
* @category runtime class
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* import { Console, Effect, Layer, ManagedRuntime } from "effect"
|
|
160
|
+
*
|
|
161
|
+
* class Notifications extends Effect.Tag("Notifications")<
|
|
162
|
+
* Notifications,
|
|
163
|
+
* { readonly notify: (message: string) => Effect.Effect<void> }
|
|
164
|
+
* >() {
|
|
165
|
+
* static Live = Layer.succeed(this, { notify: (message) => Console.log(message) })
|
|
166
|
+
* }
|
|
167
|
+
*
|
|
168
|
+
* async function main() {
|
|
169
|
+
* const runtime = ManagedRuntime.make(Notifications.Live)
|
|
170
|
+
* await runtime.runPromise(Notifications.notify("Hello, world!"))
|
|
171
|
+
* await runtime.dispose()
|
|
172
|
+
* }
|
|
173
|
+
*
|
|
174
|
+
* main()
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export const make: <R, E>(
|
|
178
|
+
layer: Layer.Layer<R, E, never>,
|
|
179
|
+
memoMap?: Layer.MemoMap | undefined
|
|
180
|
+
) => ManagedRuntime<R, E> = internal.make
|