@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,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Effect from "./Effect.js"
|
|
5
|
+
import * as internal from "./internal/stm/tReentrantLock.js"
|
|
6
|
+
import type * as Scope from "./Scope.js"
|
|
7
|
+
import type * as STM from "./STM.js"
|
|
8
|
+
import type * as TRef from "./TRef.js"
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @since 2.0.0
|
|
12
|
+
* @category symbols
|
|
13
|
+
*/
|
|
14
|
+
export const TReentrantLockTypeId: unique symbol = internal.TReentrantLockTypeId
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 2.0.0
|
|
18
|
+
* @category symbols
|
|
19
|
+
*/
|
|
20
|
+
export type TReentrantLockTypeId = typeof TReentrantLockTypeId
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* A `TReentrantLock` is a reentrant read/write lock. Multiple readers may all
|
|
24
|
+
* concurrently acquire read locks. Only one writer is allowed to acquire a
|
|
25
|
+
* write lock at any given time. Read locks may be upgraded into write locks. A
|
|
26
|
+
* fiber that has a write lock may acquire other write locks or read locks.
|
|
27
|
+
*
|
|
28
|
+
* The two primary methods of this structure are `readLock`, which acquires a
|
|
29
|
+
* read lock in a scoped context, and `writeLock`, which acquires a write lock
|
|
30
|
+
* in a scoped context.
|
|
31
|
+
*
|
|
32
|
+
* Although located in the STM package, there is no need for locks within STM
|
|
33
|
+
* transactions. However, this lock can be quite useful in effectful code, to
|
|
34
|
+
* provide consistent read/write access to mutable state; and being in STM
|
|
35
|
+
* allows this structure to be composed into more complicated concurrent
|
|
36
|
+
* structures that are consumed from effectful code.
|
|
37
|
+
*
|
|
38
|
+
* @since 2.0.0
|
|
39
|
+
* @category models
|
|
40
|
+
*/
|
|
41
|
+
export interface TReentrantLock extends TReentrantLock.Proto {}
|
|
42
|
+
/**
|
|
43
|
+
* @internal
|
|
44
|
+
* @since 2.0.0
|
|
45
|
+
*/
|
|
46
|
+
export interface TReentrantLock {
|
|
47
|
+
/** @internal */
|
|
48
|
+
readonly state: TRef.TRef<internal.LockState>
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @since 2.0.0
|
|
53
|
+
*/
|
|
54
|
+
export declare namespace TReentrantLock {
|
|
55
|
+
/**
|
|
56
|
+
* @since 2.0.0
|
|
57
|
+
* @category models
|
|
58
|
+
*/
|
|
59
|
+
export interface Proto {
|
|
60
|
+
readonly [TReentrantLockTypeId]: TReentrantLockTypeId
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Acquires a read lock. The transaction will suspend until no other fiber is
|
|
66
|
+
* holding a write lock. Succeeds with the number of read locks held by this
|
|
67
|
+
* fiber.
|
|
68
|
+
*
|
|
69
|
+
* @since 2.0.0
|
|
70
|
+
* @category mutations
|
|
71
|
+
*/
|
|
72
|
+
export const acquireRead: (self: TReentrantLock) => STM.STM<number> = internal.acquireRead
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Acquires a write lock. The transaction will suspend until no other fibers
|
|
76
|
+
* are holding read or write locks. Succeeds with the number of write locks
|
|
77
|
+
* held by this fiber.
|
|
78
|
+
*
|
|
79
|
+
* @since 2.0.0
|
|
80
|
+
* @category mutations
|
|
81
|
+
*/
|
|
82
|
+
export const acquireWrite: (self: TReentrantLock) => STM.STM<number> = internal.acquireWrite
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Retrieves the number of acquired read locks for this fiber.
|
|
86
|
+
*
|
|
87
|
+
* @since 2.0.0
|
|
88
|
+
* @category mutations
|
|
89
|
+
*/
|
|
90
|
+
export const fiberReadLocks: (self: TReentrantLock) => STM.STM<number> = internal.fiberReadLocks
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Retrieves the number of acquired write locks for this fiber.
|
|
94
|
+
*
|
|
95
|
+
* @since 2.0.0
|
|
96
|
+
* @category mutations
|
|
97
|
+
*/
|
|
98
|
+
export const fiberWriteLocks: (self: TReentrantLock) => STM.STM<number> = internal.fiberWriteLocks
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Just a convenience method for applications that only need reentrant locks,
|
|
102
|
+
* without needing a distinction between readers / writers.
|
|
103
|
+
*
|
|
104
|
+
* See `TReentrantLock.writeLock`.
|
|
105
|
+
*
|
|
106
|
+
* @since 2.0.0
|
|
107
|
+
* @category mutations
|
|
108
|
+
*/
|
|
109
|
+
export const lock: (self: TReentrantLock) => Effect.Effect<number, never, Scope.Scope> = internal.lock
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Determines if any fiber has a read or write lock.
|
|
113
|
+
*
|
|
114
|
+
* @since 2.0.0
|
|
115
|
+
* @category mutations
|
|
116
|
+
*/
|
|
117
|
+
export const locked: (self: TReentrantLock) => STM.STM<boolean> = internal.locked
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Makes a new reentrant read/write lock.
|
|
121
|
+
*
|
|
122
|
+
* @since 2.0.0
|
|
123
|
+
* @category constructors
|
|
124
|
+
*/
|
|
125
|
+
export const make: STM.STM<TReentrantLock> = internal.make
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Obtains a read lock in a scoped context.
|
|
129
|
+
*
|
|
130
|
+
* @since 2.0.0
|
|
131
|
+
* @category mutations
|
|
132
|
+
*/
|
|
133
|
+
export const readLock: (self: TReentrantLock) => Effect.Effect<number, never, Scope.Scope> = internal.readLock
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Retrieves the total number of acquired read locks.
|
|
137
|
+
*
|
|
138
|
+
* @since 2.0.0
|
|
139
|
+
* @category mutations
|
|
140
|
+
*/
|
|
141
|
+
export const readLocks: (self: TReentrantLock) => STM.STM<number> = internal.readLocks
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Determines if any fiber has a read lock.
|
|
145
|
+
*
|
|
146
|
+
* @since 2.0.0
|
|
147
|
+
* @category mutations
|
|
148
|
+
*/
|
|
149
|
+
export const readLocked: (self: TReentrantLock) => STM.STM<boolean> = internal.readLocked
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Releases a read lock held by this fiber. Succeeds with the outstanding
|
|
153
|
+
* number of read locks held by this fiber.
|
|
154
|
+
*
|
|
155
|
+
* @since 2.0.0
|
|
156
|
+
* @category mutations
|
|
157
|
+
*/
|
|
158
|
+
export const releaseRead: (self: TReentrantLock) => STM.STM<number> = internal.releaseRead
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Releases a write lock held by this fiber. Succeeds with the outstanding
|
|
162
|
+
* number of write locks held by this fiber.
|
|
163
|
+
*
|
|
164
|
+
* @since 2.0.0
|
|
165
|
+
* @category mutations
|
|
166
|
+
*/
|
|
167
|
+
export const releaseWrite: (self: TReentrantLock) => STM.STM<number> = internal.releaseWrite
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Runs the specified workflow with a lock.
|
|
171
|
+
*
|
|
172
|
+
* @since 2.0.0
|
|
173
|
+
* @category mutations
|
|
174
|
+
*/
|
|
175
|
+
export const withLock: {
|
|
176
|
+
(self: TReentrantLock): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
177
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, self: TReentrantLock): Effect.Effect<A, E, R>
|
|
178
|
+
} = internal.withLock
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Runs the specified workflow with a read lock.
|
|
182
|
+
*
|
|
183
|
+
* @since 2.0.0
|
|
184
|
+
* @category mutations
|
|
185
|
+
*/
|
|
186
|
+
export const withReadLock: {
|
|
187
|
+
(self: TReentrantLock): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
188
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, self: TReentrantLock): Effect.Effect<A, E, R>
|
|
189
|
+
} = internal.withReadLock
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Runs the specified workflow with a write lock.
|
|
193
|
+
*
|
|
194
|
+
* @since 2.0.0
|
|
195
|
+
* @category mutations
|
|
196
|
+
*/
|
|
197
|
+
export const withWriteLock: {
|
|
198
|
+
(self: TReentrantLock): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
199
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, self: TReentrantLock): Effect.Effect<A, E, R>
|
|
200
|
+
} = internal.withWriteLock
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Obtains a write lock in a scoped context.
|
|
204
|
+
*
|
|
205
|
+
* @since 2.0.0
|
|
206
|
+
* @category mutations
|
|
207
|
+
*/
|
|
208
|
+
export const writeLock: (self: TReentrantLock) => Effect.Effect<number, never, Scope.Scope> = internal.writeLock
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Determines if a write lock is held by some fiber.
|
|
212
|
+
*
|
|
213
|
+
* @since 2.0.0
|
|
214
|
+
* @category mutations
|
|
215
|
+
*/
|
|
216
|
+
export const writeLocked: (self: TReentrantLock) => STM.STM<boolean> = internal.writeLocked
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Computes the number of write locks held by fibers.
|
|
220
|
+
*
|
|
221
|
+
* @since 2.0.0
|
|
222
|
+
* @category mutations
|
|
223
|
+
*/
|
|
224
|
+
export const writeLocks: (self: TReentrantLock) => STM.STM<number> = internal.writeLocks
|
package/src/TRef.ts
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type * as Journal from "./internal/stm/journal.js"
|
|
6
|
+
import * as internal from "./internal/stm/tRef.js"
|
|
7
|
+
import type * as TxnId from "./internal/stm/txnId.js"
|
|
8
|
+
import type * as Versioned from "./internal/stm/versioned.js"
|
|
9
|
+
import type * as Option from "./Option.js"
|
|
10
|
+
import type { Pipeable } from "./Pipeable.js"
|
|
11
|
+
import type * as STM from "./STM.js"
|
|
12
|
+
import type * as Types from "./Types.js"
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @since 2.0.0
|
|
16
|
+
* @category symbols
|
|
17
|
+
*/
|
|
18
|
+
export const TRefTypeId: unique symbol = internal.TRefTypeId
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @since 2.0.0
|
|
22
|
+
* @category symbols
|
|
23
|
+
*/
|
|
24
|
+
export type TRefTypeId = typeof TRefTypeId
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A `TRef<A>` is a purely functional description of a mutable reference that can
|
|
28
|
+
* be modified as part of a transactional effect. The fundamental operations of
|
|
29
|
+
* a `TRef` are `set` and `get`. `set` transactionally sets the reference to a
|
|
30
|
+
* new value. `get` gets the current value of the reference.
|
|
31
|
+
*
|
|
32
|
+
* NOTE: While `TRef<A>` provides the transactional equivalent of a mutable
|
|
33
|
+
* reference, the value inside the `TRef` should be immutable.
|
|
34
|
+
*
|
|
35
|
+
* @since 2.0.0
|
|
36
|
+
* @category models
|
|
37
|
+
*/
|
|
38
|
+
export interface TRef<in out A> extends TRef.Variance<A>, Pipeable {
|
|
39
|
+
/**
|
|
40
|
+
* Note: the method is unbound, exposed only for potential extensions.
|
|
41
|
+
*/
|
|
42
|
+
modify<B>(f: (a: A) => readonly [B, A]): STM.STM<B>
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
* @since 2.0.0
|
|
47
|
+
*/
|
|
48
|
+
export interface TRef<in out A> {
|
|
49
|
+
/** @internal */
|
|
50
|
+
todos: Map<TxnId.TxnId, Journal.Todo>
|
|
51
|
+
/** @internal */
|
|
52
|
+
versioned: Versioned.Versioned<A>
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @since 2.0.0
|
|
57
|
+
*/
|
|
58
|
+
export declare namespace TRef {
|
|
59
|
+
/**
|
|
60
|
+
* @since 2.0.0
|
|
61
|
+
*/
|
|
62
|
+
export interface Variance<in out A> {
|
|
63
|
+
readonly [TRefTypeId]: {
|
|
64
|
+
readonly _A: Types.Invariant<A>
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @since 2.0.0
|
|
71
|
+
* @category mutations
|
|
72
|
+
*/
|
|
73
|
+
export const get: <A>(self: TRef<A>) => STM.STM<A> = internal.get
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @since 2.0.0
|
|
77
|
+
* @category mutations
|
|
78
|
+
*/
|
|
79
|
+
export const getAndSet: {
|
|
80
|
+
<A>(value: A): (self: TRef<A>) => STM.STM<A>
|
|
81
|
+
<A>(self: TRef<A>, value: A): STM.STM<A>
|
|
82
|
+
} = internal.getAndSet
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @since 2.0.0
|
|
86
|
+
* @category mutations
|
|
87
|
+
*/
|
|
88
|
+
export const getAndUpdate: {
|
|
89
|
+
<A>(f: (a: A) => A): (self: TRef<A>) => STM.STM<A>
|
|
90
|
+
<A>(self: TRef<A>, f: (a: A) => A): STM.STM<A>
|
|
91
|
+
} = internal.getAndUpdate
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @since 2.0.0
|
|
95
|
+
* @category mutations
|
|
96
|
+
*/
|
|
97
|
+
export const getAndUpdateSome: {
|
|
98
|
+
<A>(f: (a: A) => Option.Option<A>): (self: TRef<A>) => STM.STM<A>
|
|
99
|
+
<A>(self: TRef<A>, f: (a: A) => Option.Option<A>): STM.STM<A>
|
|
100
|
+
} = internal.getAndUpdateSome
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @since 2.0.0
|
|
104
|
+
* @category constructors
|
|
105
|
+
*/
|
|
106
|
+
export const make: <A>(value: A) => STM.STM<TRef<A>> = internal.make
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @since 2.0.0
|
|
110
|
+
* @category mutations
|
|
111
|
+
*/
|
|
112
|
+
export const modify: {
|
|
113
|
+
<A, B>(f: (a: A) => readonly [B, A]): (self: TRef<A>) => STM.STM<B>
|
|
114
|
+
<A, B>(self: TRef<A>, f: (a: A) => readonly [B, A]): STM.STM<B>
|
|
115
|
+
} = internal.modify
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @since 2.0.0
|
|
119
|
+
* @category mutations
|
|
120
|
+
*/
|
|
121
|
+
export const modifySome: {
|
|
122
|
+
<A, B>(fallback: B, f: (a: A) => Option.Option<readonly [B, A]>): (self: TRef<A>) => STM.STM<B>
|
|
123
|
+
<A, B>(self: TRef<A>, fallback: B, f: (a: A) => Option.Option<readonly [B, A]>): STM.STM<B>
|
|
124
|
+
} = internal.modifySome
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @since 2.0.0
|
|
128
|
+
* @category mutations
|
|
129
|
+
*/
|
|
130
|
+
export const set: {
|
|
131
|
+
<A>(value: A): (self: TRef<A>) => STM.STM<void>
|
|
132
|
+
<A>(self: TRef<A>, value: A): STM.STM<void>
|
|
133
|
+
} = internal.set
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @since 2.0.0
|
|
137
|
+
* @category mutations
|
|
138
|
+
*/
|
|
139
|
+
export const setAndGet: {
|
|
140
|
+
<A>(value: A): (self: TRef<A>) => STM.STM<A>
|
|
141
|
+
<A>(self: TRef<A>, value: A): STM.STM<A>
|
|
142
|
+
} = internal.setAndGet
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @since 2.0.0
|
|
146
|
+
* @category mutations
|
|
147
|
+
*/
|
|
148
|
+
export const update: {
|
|
149
|
+
<A>(f: (a: A) => A): (self: TRef<A>) => STM.STM<void>
|
|
150
|
+
<A>(self: TRef<A>, f: (a: A) => A): STM.STM<void>
|
|
151
|
+
} = internal.update
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @since 2.0.0
|
|
155
|
+
* @category mutations
|
|
156
|
+
*/
|
|
157
|
+
export const updateAndGet: {
|
|
158
|
+
<A>(f: (a: A) => A): (self: TRef<A>) => STM.STM<A>
|
|
159
|
+
<A>(self: TRef<A>, f: (a: A) => A): STM.STM<A>
|
|
160
|
+
} = internal.updateAndGet
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @since 2.0.0
|
|
164
|
+
* @category mutations
|
|
165
|
+
*/
|
|
166
|
+
export const updateSome: {
|
|
167
|
+
<A>(f: (a: A) => Option.Option<A>): (self: TRef<A>) => STM.STM<void>
|
|
168
|
+
<A>(self: TRef<A>, f: (a: A) => Option.Option<A>): STM.STM<void>
|
|
169
|
+
} = internal.updateSome
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* @since 2.0.0
|
|
173
|
+
* @category mutations
|
|
174
|
+
*/
|
|
175
|
+
export const updateSomeAndGet: {
|
|
176
|
+
<A>(f: (a: A) => Option.Option<A>): (self: TRef<A>) => STM.STM<A>
|
|
177
|
+
<A>(self: TRef<A>, f: (a: A) => Option.Option<A>): STM.STM<A>
|
|
178
|
+
} = internal.updateSomeAndGet
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type * as Effect from "./Effect.js"
|
|
6
|
+
import * as internal from "./internal/stm/tSemaphore.js"
|
|
7
|
+
import type * as Scope from "./Scope.js"
|
|
8
|
+
import type * as STM from "./STM.js"
|
|
9
|
+
import type * as TRef from "./TRef.js"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 2.0.0
|
|
13
|
+
* @category symbols
|
|
14
|
+
*/
|
|
15
|
+
export const TSemaphoreTypeId: unique symbol = internal.TSemaphoreTypeId
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @since 2.0.0
|
|
19
|
+
* @category symbols
|
|
20
|
+
*/
|
|
21
|
+
export type TSemaphoreTypeId = typeof TSemaphoreTypeId
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @since 2.0.0
|
|
25
|
+
* @category models
|
|
26
|
+
*/
|
|
27
|
+
export interface TSemaphore extends TSemaphore.Proto {}
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
* @since 2.0.0
|
|
31
|
+
*/
|
|
32
|
+
export interface TSemaphore {
|
|
33
|
+
/** @internal */
|
|
34
|
+
readonly permits: TRef.TRef<number>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @since 2.0.0
|
|
39
|
+
*/
|
|
40
|
+
export declare namespace TSemaphore {
|
|
41
|
+
/**
|
|
42
|
+
* @since 2.0.0
|
|
43
|
+
* @category models
|
|
44
|
+
*/
|
|
45
|
+
export interface Proto {
|
|
46
|
+
readonly [TSemaphoreTypeId]: TSemaphoreTypeId
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @since 2.0.0
|
|
52
|
+
* @category mutations
|
|
53
|
+
*/
|
|
54
|
+
export const acquire: (self: TSemaphore) => STM.STM<void> = internal.acquire
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @since 2.0.0
|
|
58
|
+
* @category mutations
|
|
59
|
+
*/
|
|
60
|
+
export const acquireN: {
|
|
61
|
+
(n: number): (self: TSemaphore) => STM.STM<void>
|
|
62
|
+
(self: TSemaphore, n: number): STM.STM<void>
|
|
63
|
+
} = internal.acquireN
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @since 2.0.0
|
|
67
|
+
* @category getters
|
|
68
|
+
*/
|
|
69
|
+
export const available: (self: TSemaphore) => STM.STM<number> = internal.available
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @since 2.0.0
|
|
73
|
+
* @category constructors
|
|
74
|
+
*/
|
|
75
|
+
export const make: (permits: number) => STM.STM<TSemaphore> = internal.make
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @since 2.0.0
|
|
79
|
+
* @category mutations
|
|
80
|
+
*/
|
|
81
|
+
export const release: (self: TSemaphore) => STM.STM<void> = internal.release
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @since 2.0.0
|
|
85
|
+
* @category mutations
|
|
86
|
+
*/
|
|
87
|
+
export const releaseN: {
|
|
88
|
+
(n: number): (self: TSemaphore) => STM.STM<void>
|
|
89
|
+
(self: TSemaphore, n: number): STM.STM<void>
|
|
90
|
+
} = internal.releaseN
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @since 2.0.0
|
|
94
|
+
* @category mutations
|
|
95
|
+
*/
|
|
96
|
+
export const withPermit: {
|
|
97
|
+
(semaphore: TSemaphore): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
98
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, semaphore: TSemaphore): Effect.Effect<A, E, R>
|
|
99
|
+
} = internal.withPermit
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @since 2.0.0
|
|
103
|
+
* @category mutations
|
|
104
|
+
*/
|
|
105
|
+
export const withPermits: {
|
|
106
|
+
(semaphore: TSemaphore, permits: number): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
107
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, semaphore: TSemaphore, permits: number): Effect.Effect<A, E, R>
|
|
108
|
+
} = internal.withPermits
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @since 2.0.0
|
|
112
|
+
* @category mutations
|
|
113
|
+
*/
|
|
114
|
+
export const withPermitScoped: (self: TSemaphore) => Effect.Effect<void, never, Scope.Scope> = internal.withPermitScoped
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @since 2.0.0
|
|
118
|
+
* @category mutations
|
|
119
|
+
*/
|
|
120
|
+
export const withPermitsScoped: {
|
|
121
|
+
(permits: number): (self: TSemaphore) => Effect.Effect<void, never, Scope.Scope>
|
|
122
|
+
(self: TSemaphore, permits: number): Effect.Effect<void, never, Scope.Scope>
|
|
123
|
+
} = internal.withPermitsScoped
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @since 2.0.0
|
|
127
|
+
* @category unsafe
|
|
128
|
+
*/
|
|
129
|
+
export const unsafeMake: (permits: number) => TSemaphore = internal.unsafeMakeSemaphore
|