@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
package/src/Queue.ts
ADDED
|
@@ -0,0 +1,644 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Chunk from "./Chunk.js"
|
|
5
|
+
import type * as Deferred from "./Deferred.js"
|
|
6
|
+
import type * as Effect from "./Effect.js"
|
|
7
|
+
import * as internal from "./internal/queue.js"
|
|
8
|
+
import type * as MutableQueue from "./MutableQueue.js"
|
|
9
|
+
import type * as MutableRef from "./MutableRef.js"
|
|
10
|
+
import type * as Option from "./Option.js"
|
|
11
|
+
import type { Pipeable } from "./Pipeable.js"
|
|
12
|
+
import type * as Types from "./Types.js"
|
|
13
|
+
import type * as Unify from "./Unify.js"
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @since 2.0.0
|
|
17
|
+
* @category symbols
|
|
18
|
+
*/
|
|
19
|
+
export const EnqueueTypeId: unique symbol = internal.EnqueueTypeId
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 2.0.0
|
|
23
|
+
* @category symbols
|
|
24
|
+
*/
|
|
25
|
+
export type EnqueueTypeId = typeof EnqueueTypeId
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @since 2.0.0
|
|
29
|
+
* @category symbols
|
|
30
|
+
*/
|
|
31
|
+
export const DequeueTypeId: unique symbol = internal.DequeueTypeId
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @since 2.0.0
|
|
35
|
+
* @category symbols
|
|
36
|
+
*/
|
|
37
|
+
export type DequeueTypeId = typeof DequeueTypeId
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @since 2.0.0
|
|
41
|
+
* @category symbols
|
|
42
|
+
*/
|
|
43
|
+
export const QueueStrategyTypeId: unique symbol = internal.QueueStrategyTypeId
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @since 2.0.0
|
|
47
|
+
* @category symbols
|
|
48
|
+
*/
|
|
49
|
+
export type QueueStrategyTypeId = typeof QueueStrategyTypeId
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @since 2.0.0
|
|
53
|
+
* @category symbols
|
|
54
|
+
*/
|
|
55
|
+
export const BackingQueueTypeId: unique symbol = internal.BackingQueueTypeId
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @since 2.0.0
|
|
59
|
+
* @category symbols
|
|
60
|
+
*/
|
|
61
|
+
export type BackingQueueTypeId = typeof BackingQueueTypeId
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @since 2.0.0
|
|
65
|
+
* @category models
|
|
66
|
+
*/
|
|
67
|
+
export interface Queue<in out A> extends Enqueue<A>, Dequeue<A> {
|
|
68
|
+
/** @internal */
|
|
69
|
+
readonly queue: BackingQueue<A>
|
|
70
|
+
/** @internal */
|
|
71
|
+
readonly takers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
72
|
+
/** @internal */
|
|
73
|
+
readonly shutdownHook: Deferred.Deferred<void>
|
|
74
|
+
/** @internal */
|
|
75
|
+
readonly shutdownFlag: MutableRef.MutableRef<boolean>
|
|
76
|
+
/** @internal */
|
|
77
|
+
readonly strategy: Strategy<A>
|
|
78
|
+
|
|
79
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
80
|
+
readonly [Unify.unifySymbol]?: QueueUnify<this>
|
|
81
|
+
readonly [Unify.ignoreSymbol]?: QueueUnifyIgnore
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @category models
|
|
86
|
+
* @since 3.8.0
|
|
87
|
+
*/
|
|
88
|
+
export interface QueueUnify<A extends { [Unify.typeSymbol]?: any }> extends DequeueUnify<A> {
|
|
89
|
+
Queue?: () => Extract<A[Unify.typeSymbol], Queue<any>>
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @category models
|
|
94
|
+
* @since 3.8.0
|
|
95
|
+
*/
|
|
96
|
+
export interface QueueUnifyIgnore extends DequeueUnifyIgnore {
|
|
97
|
+
Dequeue?: true
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @since 2.0.0
|
|
102
|
+
* @category models
|
|
103
|
+
*/
|
|
104
|
+
export interface Enqueue<in A> extends Queue.EnqueueVariance<A>, BaseQueue, Pipeable {
|
|
105
|
+
/**
|
|
106
|
+
* Places one value in the queue.
|
|
107
|
+
*/
|
|
108
|
+
offer(value: A): Effect.Effect<boolean>
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Places one value in the queue when possible without needing the fiber runtime.
|
|
112
|
+
*/
|
|
113
|
+
unsafeOffer(value: A): boolean
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* For Bounded Queue: uses the `BackPressure` Strategy, places the values in
|
|
117
|
+
* the queue and always returns true. If the queue has reached capacity, then
|
|
118
|
+
* the fiber performing the `offerAll` will be suspended until there is room
|
|
119
|
+
* in the queue.
|
|
120
|
+
*
|
|
121
|
+
* For Unbounded Queue: Places all values in the queue and returns true.
|
|
122
|
+
*
|
|
123
|
+
* For Sliding Queue: uses `Sliding` Strategy If there is room in the queue,
|
|
124
|
+
* it places the values otherwise it removes the old elements and enqueues the
|
|
125
|
+
* new ones. Always returns true.
|
|
126
|
+
*
|
|
127
|
+
* For Dropping Queue: uses `Dropping` Strategy, It places the values in the
|
|
128
|
+
* queue but if there is no room it will not enqueue them and return false.
|
|
129
|
+
*/
|
|
130
|
+
offerAll(iterable: Iterable<A>): Effect.Effect<boolean>
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @since 2.0.0
|
|
135
|
+
* @category models
|
|
136
|
+
*/
|
|
137
|
+
export interface Dequeue<out A> extends Effect.Effect<A>, Queue.DequeueVariance<A>, BaseQueue {
|
|
138
|
+
/**
|
|
139
|
+
* Takes the oldest value in the queue. If the queue is empty, this will return
|
|
140
|
+
* a computation that resumes when an item has been added to the queue.
|
|
141
|
+
*/
|
|
142
|
+
readonly take: Effect.Effect<A>
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Takes all the values in the queue and returns the values. If the queue is
|
|
146
|
+
* empty returns an empty collection.
|
|
147
|
+
*/
|
|
148
|
+
readonly takeAll: Effect.Effect<Chunk.Chunk<A>>
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Takes up to max number of values from the queue.
|
|
152
|
+
*/
|
|
153
|
+
takeUpTo(max: number): Effect.Effect<Chunk.Chunk<A>>
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Takes a number of elements from the queue between the specified minimum and
|
|
157
|
+
* maximum. If there are fewer than the minimum number of elements available,
|
|
158
|
+
* suspends until at least the minimum number of elements have been collected.
|
|
159
|
+
*/
|
|
160
|
+
takeBetween(min: number, max: number): Effect.Effect<Chunk.Chunk<A>>
|
|
161
|
+
|
|
162
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
163
|
+
readonly [Unify.unifySymbol]?: DequeueUnify<this>
|
|
164
|
+
readonly [Unify.ignoreSymbol]?: DequeueUnifyIgnore
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @category models
|
|
169
|
+
* @since 3.8.0
|
|
170
|
+
*/
|
|
171
|
+
export interface DequeueUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
|
|
172
|
+
Dequeue?: () => A[Unify.typeSymbol] extends Dequeue<infer A0> | infer _ ? Dequeue<A0> : never
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @category models
|
|
177
|
+
* @since 3.8.0
|
|
178
|
+
*/
|
|
179
|
+
export interface DequeueUnifyIgnore extends Effect.EffectUnifyIgnore {
|
|
180
|
+
Effect?: true
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* The base interface that all `Queue`s must implement.
|
|
185
|
+
*
|
|
186
|
+
* @since 2.0.0
|
|
187
|
+
* @category models
|
|
188
|
+
*/
|
|
189
|
+
export interface BaseQueue {
|
|
190
|
+
/**
|
|
191
|
+
* Returns the number of elements the queue can hold.
|
|
192
|
+
*/
|
|
193
|
+
capacity(): number
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns false if shutdown has been called.
|
|
197
|
+
*/
|
|
198
|
+
isActive(): boolean
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Retrieves the size of the queue, which is equal to the number of elements
|
|
202
|
+
* in the queue. This may be negative if fibers are suspended waiting for
|
|
203
|
+
* elements to be added to the queue.
|
|
204
|
+
*/
|
|
205
|
+
readonly size: Effect.Effect<number>
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Retrieves the size of the queue, which is equal to the number of elements
|
|
209
|
+
* in the queue. This may be negative if fibers are suspended waiting for
|
|
210
|
+
* elements to be added to the queue. Returns None if shutdown has been called
|
|
211
|
+
*/
|
|
212
|
+
unsafeSize(): Option.Option<number>
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Returns `true` if the `Queue` contains at least one element, `false`
|
|
216
|
+
* otherwise.
|
|
217
|
+
*/
|
|
218
|
+
readonly isFull: Effect.Effect<boolean>
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Returns `true` if the `Queue` contains zero elements, `false` otherwise.
|
|
222
|
+
*/
|
|
223
|
+
readonly isEmpty: Effect.Effect<boolean>
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Interrupts any fibers that are suspended on `offer` or `take`. Future calls
|
|
227
|
+
* to `offer*` and `take*` will be interrupted immediately.
|
|
228
|
+
*/
|
|
229
|
+
readonly shutdown: Effect.Effect<void>
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Returns `true` if `shutdown` has been called, otherwise returns `false`.
|
|
233
|
+
*/
|
|
234
|
+
readonly isShutdown: Effect.Effect<boolean>
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Waits until the queue is shutdown. The `Effect` returned by this method will
|
|
238
|
+
* not resume until the queue has been shutdown. If the queue is already
|
|
239
|
+
* shutdown, the `Effect` will resume right away.
|
|
240
|
+
*/
|
|
241
|
+
readonly awaitShutdown: Effect.Effect<void>
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* @since 2.0.0
|
|
246
|
+
* @category models
|
|
247
|
+
*/
|
|
248
|
+
export interface Strategy<in out A> extends Queue.StrategyVariance<A> {
|
|
249
|
+
/**
|
|
250
|
+
* Returns the number of surplus values that were unable to be added to the
|
|
251
|
+
* `Queue`
|
|
252
|
+
*/
|
|
253
|
+
surplusSize(): number
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Determines how the `Queue.Strategy` should shut down when the `Queue` is
|
|
257
|
+
* shut down.
|
|
258
|
+
*/
|
|
259
|
+
readonly shutdown: Effect.Effect<void>
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Determines the behavior of the `Queue.Strategy` when there are surplus
|
|
263
|
+
* values that could not be added to the `Queue` following an `offer`
|
|
264
|
+
* operation.
|
|
265
|
+
*/
|
|
266
|
+
handleSurplus(
|
|
267
|
+
iterable: Iterable<A>,
|
|
268
|
+
queue: BackingQueue<A>,
|
|
269
|
+
takers: MutableQueue.MutableQueue<Deferred.Deferred<A>>,
|
|
270
|
+
isShutdown: MutableRef.MutableRef<boolean>
|
|
271
|
+
): Effect.Effect<boolean>
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* It is called when the backing queue is empty but there are some
|
|
275
|
+
* takers that can be completed
|
|
276
|
+
*/
|
|
277
|
+
onCompleteTakersWithEmptyQueue(
|
|
278
|
+
takers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
279
|
+
): void
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Determines the behavior of the `Queue.Strategy` when the `Queue` has empty
|
|
283
|
+
* slots following a `take` operation.
|
|
284
|
+
*/
|
|
285
|
+
unsafeOnQueueEmptySpace(
|
|
286
|
+
queue: BackingQueue<A>,
|
|
287
|
+
takers: MutableQueue.MutableQueue<Deferred.Deferred<A>>
|
|
288
|
+
): void
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* @since 2.0.0
|
|
293
|
+
* @category models
|
|
294
|
+
*/
|
|
295
|
+
export interface BackingQueue<in out A> extends Queue.BackingQueueVariance<A> {
|
|
296
|
+
/**
|
|
297
|
+
* Dequeues an element from the queue.
|
|
298
|
+
* Returns either an element from the queue, or the `def` param.
|
|
299
|
+
*/
|
|
300
|
+
poll<Def>(def: Def): A | Def
|
|
301
|
+
/**
|
|
302
|
+
* Dequeues up to `limit` elements from the queue.
|
|
303
|
+
*/
|
|
304
|
+
pollUpTo(limit: number): Chunk.Chunk<A>
|
|
305
|
+
/**
|
|
306
|
+
* Enqueues a collection of values into the queue.
|
|
307
|
+
*
|
|
308
|
+
* Returns a `Chunk` of the values that were **not** able to be enqueued.
|
|
309
|
+
*/
|
|
310
|
+
offerAll(elements: Iterable<A>): Chunk.Chunk<A>
|
|
311
|
+
/**
|
|
312
|
+
* Offers an element to the queue.
|
|
313
|
+
*
|
|
314
|
+
* Returns whether the enqueue was successful or not.
|
|
315
|
+
*/
|
|
316
|
+
offer(element: A): boolean
|
|
317
|
+
/**
|
|
318
|
+
* The **maximum** number of elements that a queue can hold.
|
|
319
|
+
*
|
|
320
|
+
* **Note**: unbounded queues can still implement this interface with
|
|
321
|
+
* `capacity = Infinity`.
|
|
322
|
+
*/
|
|
323
|
+
capacity(): number
|
|
324
|
+
/**
|
|
325
|
+
* Returns the number of elements currently in the queue
|
|
326
|
+
*/
|
|
327
|
+
length(): number
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* @since 2.0.0
|
|
332
|
+
*/
|
|
333
|
+
export declare namespace Queue {
|
|
334
|
+
/**
|
|
335
|
+
* @since 2.0.0
|
|
336
|
+
* @category models
|
|
337
|
+
*/
|
|
338
|
+
export interface EnqueueVariance<in A> {
|
|
339
|
+
readonly [EnqueueTypeId]: {
|
|
340
|
+
readonly _In: Types.Contravariant<A>
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* @since 2.0.0
|
|
346
|
+
* @category models
|
|
347
|
+
*/
|
|
348
|
+
export interface DequeueVariance<out A> {
|
|
349
|
+
readonly [DequeueTypeId]: {
|
|
350
|
+
readonly _Out: Types.Covariant<A>
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* @since 2.0.0
|
|
356
|
+
* @category models
|
|
357
|
+
*/
|
|
358
|
+
export interface StrategyVariance<in out A> {
|
|
359
|
+
readonly [QueueStrategyTypeId]: {
|
|
360
|
+
readonly _A: Types.Invariant<A>
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* @since 2.0.0
|
|
366
|
+
* @category models
|
|
367
|
+
*/
|
|
368
|
+
export interface BackingQueueVariance<in out A> {
|
|
369
|
+
readonly [BackingQueueTypeId]: {
|
|
370
|
+
readonly _A: Types.Invariant<A>
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Returns `true` if the specified value is a `Queue`, `false` otherwise.
|
|
377
|
+
*
|
|
378
|
+
* @since 2.0.0
|
|
379
|
+
* @category refinements
|
|
380
|
+
*/
|
|
381
|
+
export const isQueue: (u: unknown) => u is Queue<unknown> = internal.isQueue
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Returns `true` if the specified value is a `Dequeue`, `false` otherwise.
|
|
385
|
+
*
|
|
386
|
+
* @since 2.0.0
|
|
387
|
+
* @category refinements
|
|
388
|
+
*/
|
|
389
|
+
export const isDequeue: (u: unknown) => u is Dequeue<unknown> = internal.isDequeue
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Returns `true` if the specified value is a `Enqueue`, `false` otherwise.
|
|
393
|
+
*
|
|
394
|
+
* @since 2.0.0
|
|
395
|
+
* @category refinements
|
|
396
|
+
*/
|
|
397
|
+
export const isEnqueue: (u: unknown) => u is Enqueue<unknown> = internal.isEnqueue
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* @since 2.0.0
|
|
401
|
+
* @category strategies
|
|
402
|
+
*/
|
|
403
|
+
export const backPressureStrategy: <A>() => Strategy<A> = internal.backPressureStrategy
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* @since 2.0.0
|
|
407
|
+
* @category strategies
|
|
408
|
+
*/
|
|
409
|
+
export const droppingStrategy: <A>() => Strategy<A> = internal.droppingStrategy
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* @since 2.0.0
|
|
413
|
+
* @category strategies
|
|
414
|
+
*/
|
|
415
|
+
export const slidingStrategy: <A>() => Strategy<A> = internal.slidingStrategy
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* @since 2.0.0
|
|
419
|
+
* @category constructors
|
|
420
|
+
*/
|
|
421
|
+
export const make: <A>(queue: BackingQueue<A>, strategy: Strategy<A>) => Effect.Effect<Queue<A>> = internal.make
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Makes a new bounded `Queue`. When the capacity of the queue is reached, any
|
|
425
|
+
* additional calls to `offer` will be suspended until there is more room in
|
|
426
|
+
* the queue.
|
|
427
|
+
*
|
|
428
|
+
* **Note**: When possible use only power of 2 capacities; this will provide
|
|
429
|
+
* better performance by utilising an optimised version of the underlying
|
|
430
|
+
* `RingBuffer`.
|
|
431
|
+
*
|
|
432
|
+
* @since 2.0.0
|
|
433
|
+
* @category constructors
|
|
434
|
+
*/
|
|
435
|
+
export const bounded: <A>(requestedCapacity: number) => Effect.Effect<Queue<A>> = internal.bounded
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* Makes a new bounded `Queue` with the dropping strategy.
|
|
439
|
+
*
|
|
440
|
+
* When the capacity of the queue is reached, new elements will be dropped and the
|
|
441
|
+
* old elements will remain.
|
|
442
|
+
*
|
|
443
|
+
* **Note**: When possible use only power of 2 capacities; this will provide
|
|
444
|
+
* better performance by utilising an optimised version of the underlying
|
|
445
|
+
* `RingBuffer`.
|
|
446
|
+
*
|
|
447
|
+
* @since 2.0.0
|
|
448
|
+
* @category constructors
|
|
449
|
+
*/
|
|
450
|
+
export const dropping: <A>(requestedCapacity: number) => Effect.Effect<Queue<A>> = internal.dropping
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Makes a new bounded `Queue` with the sliding strategy.
|
|
454
|
+
*
|
|
455
|
+
* When the capacity of the queue is reached, new elements will be added and the
|
|
456
|
+
* old elements will be dropped.
|
|
457
|
+
*
|
|
458
|
+
* **Note**: When possible use only power of 2 capacities; this will provide
|
|
459
|
+
* better performance by utilising an optimised version of the underlying
|
|
460
|
+
* `RingBuffer`.
|
|
461
|
+
*
|
|
462
|
+
* @since 2.0.0
|
|
463
|
+
* @category constructors
|
|
464
|
+
*/
|
|
465
|
+
export const sliding: <A>(requestedCapacity: number) => Effect.Effect<Queue<A>> = internal.sliding
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Creates a new unbounded `Queue`.
|
|
469
|
+
*
|
|
470
|
+
* @since 2.0.0
|
|
471
|
+
* @category constructors
|
|
472
|
+
*/
|
|
473
|
+
export const unbounded: <A>() => Effect.Effect<Queue<A>> = internal.unbounded
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Returns the number of elements the queue can hold.
|
|
477
|
+
*
|
|
478
|
+
* @since 2.0.0
|
|
479
|
+
* @category getters
|
|
480
|
+
*/
|
|
481
|
+
export const capacity: <A>(self: Dequeue<A> | Enqueue<A>) => number = internal.capacity
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Retrieves the size of the queue, which is equal to the number of elements
|
|
485
|
+
* in the queue. This may be negative if fibers are suspended waiting for
|
|
486
|
+
* elements to be added to the queue.
|
|
487
|
+
*
|
|
488
|
+
* @since 2.0.0
|
|
489
|
+
* @category getters
|
|
490
|
+
*/
|
|
491
|
+
export const size: <A>(self: Dequeue<A> | Enqueue<A>) => Effect.Effect<number> = internal.size
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Returns `true` if the `Queue` contains zero elements, `false` otherwise.
|
|
495
|
+
*
|
|
496
|
+
* @since 2.0.0
|
|
497
|
+
* @category getters
|
|
498
|
+
*/
|
|
499
|
+
export const isEmpty: <A>(self: Dequeue<A> | Enqueue<A>) => Effect.Effect<boolean> = internal.isEmpty
|
|
500
|
+
|
|
501
|
+
/**
|
|
502
|
+
* Returns `true` if the `Queue` contains at least one element, `false`
|
|
503
|
+
* otherwise.
|
|
504
|
+
*
|
|
505
|
+
* @since 2.0.0
|
|
506
|
+
* @category getters
|
|
507
|
+
*/
|
|
508
|
+
export const isFull: <A>(self: Dequeue<A> | Enqueue<A>) => Effect.Effect<boolean> = internal.isFull
|
|
509
|
+
|
|
510
|
+
/**
|
|
511
|
+
* Returns `true` if `shutdown` has been called, otherwise returns `false`.
|
|
512
|
+
*
|
|
513
|
+
* @since 2.0.0
|
|
514
|
+
* @category getters
|
|
515
|
+
*/
|
|
516
|
+
export const isShutdown: <A>(self: Dequeue<A> | Enqueue<A>) => Effect.Effect<boolean> = internal.isShutdown
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Waits until the queue is shutdown. The `Effect` returned by this method will
|
|
520
|
+
* not resume until the queue has been shutdown. If the queue is already
|
|
521
|
+
* shutdown, the `Effect` will resume right away.
|
|
522
|
+
*
|
|
523
|
+
* @since 2.0.0
|
|
524
|
+
* @category utils
|
|
525
|
+
*/
|
|
526
|
+
export const awaitShutdown: <A>(self: Dequeue<A> | Enqueue<A>) => Effect.Effect<void> = internal.awaitShutdown
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Interrupts any fibers that are suspended on `offer` or `take`. Future calls
|
|
530
|
+
* to `offer*` and `take*` will be interrupted immediately.
|
|
531
|
+
*
|
|
532
|
+
* @since 2.0.0
|
|
533
|
+
* @category utils
|
|
534
|
+
*/
|
|
535
|
+
export const shutdown: <A>(self: Dequeue<A> | Enqueue<A>) => Effect.Effect<void> = internal.shutdown
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Places one value in the queue.
|
|
539
|
+
*
|
|
540
|
+
* @since 2.0.0
|
|
541
|
+
* @category utils
|
|
542
|
+
*/
|
|
543
|
+
export const offer: {
|
|
544
|
+
<A>(value: A): (self: Enqueue<A>) => Effect.Effect<boolean>
|
|
545
|
+
<A>(self: Enqueue<A>, value: A): Effect.Effect<boolean>
|
|
546
|
+
} = internal.offer
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Places one value in the queue.
|
|
550
|
+
*
|
|
551
|
+
* @since 2.0.0
|
|
552
|
+
* @category utils
|
|
553
|
+
*/
|
|
554
|
+
export const unsafeOffer: {
|
|
555
|
+
<A>(value: A): (self: Enqueue<A>) => boolean
|
|
556
|
+
<A>(self: Enqueue<A>, value: A): boolean
|
|
557
|
+
} = internal.unsafeOffer
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* For Bounded Queue: uses the `BackPressure` Strategy, places the values in
|
|
561
|
+
* the queue and always returns true. If the queue has reached capacity, then
|
|
562
|
+
* the fiber performing the `offerAll` will be suspended until there is room
|
|
563
|
+
* in the queue.
|
|
564
|
+
*
|
|
565
|
+
* For Unbounded Queue: Places all values in the queue and returns true.
|
|
566
|
+
*
|
|
567
|
+
* For Sliding Queue: uses `Sliding` Strategy If there is room in the queue,
|
|
568
|
+
* it places the values otherwise it removes the old elements and enqueues the
|
|
569
|
+
* new ones. Always returns true.
|
|
570
|
+
*
|
|
571
|
+
* For Dropping Queue: uses `Dropping` Strategy, It places the values in the
|
|
572
|
+
* queue but if there is no room it will not enqueue them and return false.
|
|
573
|
+
*
|
|
574
|
+
* @since 2.0.0
|
|
575
|
+
* @category utils
|
|
576
|
+
*/
|
|
577
|
+
export const offerAll: {
|
|
578
|
+
<A>(iterable: Iterable<A>): (self: Enqueue<A>) => Effect.Effect<boolean>
|
|
579
|
+
<A>(self: Enqueue<A>, iterable: Iterable<A>): Effect.Effect<boolean>
|
|
580
|
+
} = internal.offerAll
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Returns the first value in the `Queue` as a `Some<A>`, or `None` if the queue
|
|
584
|
+
* is empty.
|
|
585
|
+
*
|
|
586
|
+
* @since 2.0.0
|
|
587
|
+
* @category utils
|
|
588
|
+
*/
|
|
589
|
+
export const poll: <A>(self: Dequeue<A>) => Effect.Effect<Option.Option<A>> = internal.poll
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Takes the oldest value in the queue. If the queue is empty, this will return
|
|
593
|
+
* a computation that resumes when an item has been added to the queue.
|
|
594
|
+
*
|
|
595
|
+
* @since 2.0.0
|
|
596
|
+
* @category utils
|
|
597
|
+
*/
|
|
598
|
+
export const take: <A>(self: Dequeue<A>) => Effect.Effect<A> = internal.take
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* Takes all the values in the queue and returns the values. If the queue is
|
|
602
|
+
* empty returns an empty collection.
|
|
603
|
+
*
|
|
604
|
+
* @since 2.0.0
|
|
605
|
+
* @category utils
|
|
606
|
+
*/
|
|
607
|
+
export const takeAll: <A>(self: Dequeue<A>) => Effect.Effect<Chunk.Chunk<A>> = internal.takeAll
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Takes up to max number of values from the queue.
|
|
611
|
+
*
|
|
612
|
+
* @since 2.0.0
|
|
613
|
+
* @category utils
|
|
614
|
+
*/
|
|
615
|
+
export const takeUpTo: {
|
|
616
|
+
(max: number): <A>(self: Dequeue<A>) => Effect.Effect<Chunk.Chunk<A>>
|
|
617
|
+
<A>(self: Dequeue<A>, max: number): Effect.Effect<Chunk.Chunk<A>>
|
|
618
|
+
} = internal.takeUpTo
|
|
619
|
+
|
|
620
|
+
/**
|
|
621
|
+
* Takes a number of elements from the queue between the specified minimum and
|
|
622
|
+
* maximum. If there are fewer than the minimum number of elements available,
|
|
623
|
+
* suspends until at least the minimum number of elements have been collected.
|
|
624
|
+
*
|
|
625
|
+
* @since 2.0.0
|
|
626
|
+
* @category utils
|
|
627
|
+
*/
|
|
628
|
+
export const takeBetween: {
|
|
629
|
+
(min: number, max: number): <A>(self: Dequeue<A>) => Effect.Effect<Chunk.Chunk<A>>
|
|
630
|
+
<A>(self: Dequeue<A>, min: number, max: number): Effect.Effect<Chunk.Chunk<A>>
|
|
631
|
+
} = internal.takeBetween
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Takes the specified number of elements from the queue. If there are fewer
|
|
635
|
+
* than the specified number of elements available, it suspends until they
|
|
636
|
+
* become available.
|
|
637
|
+
*
|
|
638
|
+
* @since 2.0.0
|
|
639
|
+
* @category utils
|
|
640
|
+
*/
|
|
641
|
+
export const takeN: {
|
|
642
|
+
(n: number): <A>(self: Dequeue<A>) => Effect.Effect<Chunk.Chunk<A>>
|
|
643
|
+
<A>(self: Dequeue<A>, n: number): Effect.Effect<Chunk.Chunk<A>>
|
|
644
|
+
} = internal.takeN
|