@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/TMap.ts
ADDED
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Chunk from "./Chunk.js"
|
|
5
|
+
import type { LazyArg } from "./Function.js"
|
|
6
|
+
import type * as HashMap from "./HashMap.js"
|
|
7
|
+
import * as internal from "./internal/stm/tMap.js"
|
|
8
|
+
import type * as Option from "./Option.js"
|
|
9
|
+
import type * as STM from "./STM.js"
|
|
10
|
+
import type * as TArray from "./TArray.js"
|
|
11
|
+
import type * as TRef from "./TRef.js"
|
|
12
|
+
import type * as Types from "./Types.js"
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @since 2.0.0
|
|
16
|
+
* @category symbols
|
|
17
|
+
*/
|
|
18
|
+
export const TMapTypeId: unique symbol = internal.TMapTypeId
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @since 2.0.0
|
|
22
|
+
* @category symbols
|
|
23
|
+
*/
|
|
24
|
+
export type TMapTypeId = typeof TMapTypeId
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Transactional map implemented on top of `TRef` and `TArray`. Resolves
|
|
28
|
+
* conflicts via chaining.
|
|
29
|
+
*
|
|
30
|
+
* @since 2.0.0
|
|
31
|
+
* @category models
|
|
32
|
+
*/
|
|
33
|
+
export interface TMap<in out K, in out V> extends TMap.Variance<K, V> {}
|
|
34
|
+
/**
|
|
35
|
+
* @internal
|
|
36
|
+
* @since 2.0.0
|
|
37
|
+
*/
|
|
38
|
+
export interface TMap<in out K, in out V> {
|
|
39
|
+
/** @internal */
|
|
40
|
+
readonly tBuckets: TRef.TRef<TArray.TArray<Chunk.Chunk<readonly [K, V]>>>
|
|
41
|
+
/** @internal */
|
|
42
|
+
readonly tSize: TRef.TRef<number>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @since 2.0.0
|
|
47
|
+
*/
|
|
48
|
+
export declare namespace TMap {
|
|
49
|
+
/**
|
|
50
|
+
* @since 2.0.0
|
|
51
|
+
* @category models
|
|
52
|
+
*/
|
|
53
|
+
export interface Variance<in out K, in out V> {
|
|
54
|
+
readonly [TMapTypeId]: {
|
|
55
|
+
readonly _K: Types.Invariant<K>
|
|
56
|
+
readonly _V: Types.Invariant<V>
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Makes an empty `TMap`.
|
|
63
|
+
*
|
|
64
|
+
* @since 2.0.0
|
|
65
|
+
* @category constructors
|
|
66
|
+
*/
|
|
67
|
+
export const empty: <K, V>() => STM.STM<TMap<K, V>> = internal.empty
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Finds the key/value pair matching the specified predicate, and uses the
|
|
71
|
+
* provided function to extract a value out of it.
|
|
72
|
+
*
|
|
73
|
+
* @since 2.0.0
|
|
74
|
+
* @category elements
|
|
75
|
+
*/
|
|
76
|
+
export const find: {
|
|
77
|
+
<K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<Option.Option<A>>
|
|
78
|
+
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<Option.Option<A>>
|
|
79
|
+
} = internal.find
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Finds the key/value pair matching the specified predicate, and uses the
|
|
83
|
+
* provided effectful function to extract a value out of it.
|
|
84
|
+
*
|
|
85
|
+
* @since 2.0.0
|
|
86
|
+
* @category elements
|
|
87
|
+
*/
|
|
88
|
+
export const findSTM: {
|
|
89
|
+
<K, V, A, E, R>(
|
|
90
|
+
f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
91
|
+
): (self: TMap<K, V>) => STM.STM<Option.Option<A>, E, R>
|
|
92
|
+
<K, V, A, E, R>(
|
|
93
|
+
self: TMap<K, V>,
|
|
94
|
+
f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
95
|
+
): STM.STM<Option.Option<A>, E, R>
|
|
96
|
+
} = internal.findSTM
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Finds all the key/value pairs matching the specified predicate, and uses
|
|
100
|
+
* the provided function to extract values out them.
|
|
101
|
+
*
|
|
102
|
+
* @since 2.0.0
|
|
103
|
+
* @category elements
|
|
104
|
+
*/
|
|
105
|
+
export const findAll: {
|
|
106
|
+
<K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<Array<A>>
|
|
107
|
+
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<Array<A>>
|
|
108
|
+
} = internal.findAll
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Finds all the key/value pairs matching the specified predicate, and uses
|
|
112
|
+
* the provided effectful function to extract values out of them..
|
|
113
|
+
*
|
|
114
|
+
* @since 2.0.0
|
|
115
|
+
* @category elements
|
|
116
|
+
*/
|
|
117
|
+
export const findAllSTM: {
|
|
118
|
+
<K, V, A, E, R>(
|
|
119
|
+
pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
120
|
+
): (self: TMap<K, V>) => STM.STM<Array<A>, E, R>
|
|
121
|
+
<K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<Array<A>, E, R>
|
|
122
|
+
} = internal.findAllSTM
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Atomically performs transactional-effect for each binding present in map.
|
|
126
|
+
*
|
|
127
|
+
* @since 2.0.0
|
|
128
|
+
* @category elements
|
|
129
|
+
*/
|
|
130
|
+
export const forEach: {
|
|
131
|
+
<K, V, X, E, R>(f: (key: K, value: V) => STM.STM<X, E, R>): (self: TMap<K, V>) => STM.STM<void, E, R>
|
|
132
|
+
<K, V, X, E, R>(self: TMap<K, V>, f: (key: K, value: V) => STM.STM<X, E, R>): STM.STM<void, E, R>
|
|
133
|
+
} = internal.forEach
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Creates a new `TMap` from an iterable collection of key/value pairs.
|
|
137
|
+
*
|
|
138
|
+
* @since 2.0.0
|
|
139
|
+
* @category constructors
|
|
140
|
+
*/
|
|
141
|
+
export const fromIterable: <K, V>(
|
|
142
|
+
iterable: Iterable<readonly [K, V]>
|
|
143
|
+
) => STM.STM<TMap<K, V>> = internal.fromIterable
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Retrieves value associated with given key.
|
|
147
|
+
*
|
|
148
|
+
* @since 2.0.0
|
|
149
|
+
* @category elements
|
|
150
|
+
*/
|
|
151
|
+
export const get: {
|
|
152
|
+
<K>(key: K): <V>(self: TMap<K, V>) => STM.STM<Option.Option<V>>
|
|
153
|
+
<K, V>(self: TMap<K, V>, key: K): STM.STM<Option.Option<V>>
|
|
154
|
+
} = internal.get
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Retrieves value associated with given key or default value, in case the key
|
|
158
|
+
* isn't present.
|
|
159
|
+
*
|
|
160
|
+
* @since 2.0.0
|
|
161
|
+
* @category elements
|
|
162
|
+
*/
|
|
163
|
+
export const getOrElse: {
|
|
164
|
+
<K, V>(key: K, fallback: LazyArg<V>): (self: TMap<K, V>) => STM.STM<V>
|
|
165
|
+
<K, V>(self: TMap<K, V>, key: K, fallback: LazyArg<V>): STM.STM<V>
|
|
166
|
+
} = internal.getOrElse
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Tests whether or not map contains a key.
|
|
170
|
+
*
|
|
171
|
+
* @since 2.0.0
|
|
172
|
+
* @category elements
|
|
173
|
+
*/
|
|
174
|
+
export const has: {
|
|
175
|
+
<K>(key: K): <V>(self: TMap<K, V>) => STM.STM<boolean>
|
|
176
|
+
<K, V>(self: TMap<K, V>, key: K): STM.STM<boolean>
|
|
177
|
+
} = internal.has
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Tests if the map is empty or not.
|
|
181
|
+
*
|
|
182
|
+
* @since 2.0.0
|
|
183
|
+
* @category getters
|
|
184
|
+
*/
|
|
185
|
+
export const isEmpty: <K, V>(self: TMap<K, V>) => STM.STM<boolean> = internal.isEmpty
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Collects all keys stored in map.
|
|
189
|
+
*
|
|
190
|
+
* @since 2.0.0
|
|
191
|
+
* @category elements
|
|
192
|
+
*/
|
|
193
|
+
export const keys: <K, V>(self: TMap<K, V>) => STM.STM<Array<K>> = internal.keys
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Makes a new `TMap` that is initialized with specified values.
|
|
197
|
+
*
|
|
198
|
+
* @since 2.0.0
|
|
199
|
+
* @category constructors
|
|
200
|
+
*/
|
|
201
|
+
export const make: <K, V>(...entries: Array<readonly [K, V]>) => STM.STM<TMap<K, V>> = internal.make
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* If the key is not already associated with a value, stores the provided value,
|
|
205
|
+
* otherwise merge the existing value with the new one using function `f` and
|
|
206
|
+
* store the result.
|
|
207
|
+
*
|
|
208
|
+
* @since 2.0.0
|
|
209
|
+
* @category mutations
|
|
210
|
+
*/
|
|
211
|
+
export const merge: {
|
|
212
|
+
<K, V>(key: K, value: V, f: (x: V, y: V) => V): (self: TMap<K, V>) => STM.STM<V>
|
|
213
|
+
<K, V>(self: TMap<K, V>, key: K, value: V, f: (x: V, y: V) => V): STM.STM<V>
|
|
214
|
+
} = internal.merge
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Atomically folds using a pure function.
|
|
218
|
+
*
|
|
219
|
+
* @since 2.0.0
|
|
220
|
+
* @category folding
|
|
221
|
+
*/
|
|
222
|
+
export const reduce: {
|
|
223
|
+
<Z, K, V>(zero: Z, f: (acc: Z, value: V, key: K) => Z): (self: TMap<K, V>) => STM.STM<Z>
|
|
224
|
+
<K, V, Z>(self: TMap<K, V>, zero: Z, f: (acc: Z, value: V, key: K) => Z): STM.STM<Z>
|
|
225
|
+
} = internal.reduce
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Atomically folds using a transactional function.
|
|
229
|
+
*
|
|
230
|
+
* @since 2.0.0
|
|
231
|
+
* @category folding
|
|
232
|
+
*/
|
|
233
|
+
export const reduceSTM: {
|
|
234
|
+
<Z, V, K, R, E>(zero: Z, f: (acc: Z, value: V, key: K) => STM.STM<Z, E, R>): (self: TMap<K, V>) => STM.STM<Z, E, R>
|
|
235
|
+
<Z, V, K, R, E>(self: TMap<K, V>, zero: Z, f: (acc: Z, value: V, key: K) => STM.STM<Z, E, R>): STM.STM<Z, E, R>
|
|
236
|
+
} = internal.reduceSTM
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Removes binding for given key.
|
|
240
|
+
*
|
|
241
|
+
* @since 2.0.0
|
|
242
|
+
* @category mutations
|
|
243
|
+
*/
|
|
244
|
+
export const remove: {
|
|
245
|
+
<K>(key: K): <V>(self: TMap<K, V>) => STM.STM<void>
|
|
246
|
+
<K, V>(self: TMap<K, V>, key: K): STM.STM<void>
|
|
247
|
+
} = internal.remove
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Deletes all entries associated with the specified keys.
|
|
251
|
+
*
|
|
252
|
+
* @since 2.0.0
|
|
253
|
+
* @category mutations
|
|
254
|
+
*/
|
|
255
|
+
export const removeAll: {
|
|
256
|
+
<K>(keys: Iterable<K>): <V>(self: TMap<K, V>) => STM.STM<void>
|
|
257
|
+
<K, V>(self: TMap<K, V>, keys: Iterable<K>): STM.STM<void>
|
|
258
|
+
} = internal.removeAll
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Removes entries from a `TMap` that satisfy the specified predicate and returns the removed entries
|
|
262
|
+
* (or `void` if `discard = true`).
|
|
263
|
+
*
|
|
264
|
+
* @since 2.0.0
|
|
265
|
+
* @category mutations
|
|
266
|
+
*/
|
|
267
|
+
export const removeIf: {
|
|
268
|
+
<K, V>(
|
|
269
|
+
predicate: (key: K, value: V) => boolean,
|
|
270
|
+
options: {
|
|
271
|
+
readonly discard: true
|
|
272
|
+
}
|
|
273
|
+
): (self: TMap<K, V>) => STM.STM<void>
|
|
274
|
+
<K, V>(
|
|
275
|
+
predicate: (key: K, value: V) => boolean,
|
|
276
|
+
options?: {
|
|
277
|
+
readonly discard: false
|
|
278
|
+
}
|
|
279
|
+
): (self: TMap<K, V>) => STM.STM<Array<[K, V]>>
|
|
280
|
+
<K, V>(
|
|
281
|
+
self: TMap<K, V>,
|
|
282
|
+
predicate: (key: K, value: V) => boolean,
|
|
283
|
+
options: {
|
|
284
|
+
readonly discard: true
|
|
285
|
+
}
|
|
286
|
+
): STM.STM<void>
|
|
287
|
+
<K, V>(
|
|
288
|
+
self: TMap<K, V>,
|
|
289
|
+
predicate: (key: K, value: V) => boolean,
|
|
290
|
+
options?: {
|
|
291
|
+
readonly discard: false
|
|
292
|
+
}
|
|
293
|
+
): STM.STM<Array<[K, V]>>
|
|
294
|
+
} = internal.removeIf
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Retains entries in a `TMap` that satisfy the specified predicate and returns the removed entries
|
|
298
|
+
* (or `void` if `discard = true`).
|
|
299
|
+
*
|
|
300
|
+
* @since 2.0.0
|
|
301
|
+
* @category mutations
|
|
302
|
+
*/
|
|
303
|
+
export const retainIf: {
|
|
304
|
+
<K, V>(
|
|
305
|
+
predicate: (key: K, value: V) => boolean,
|
|
306
|
+
options: {
|
|
307
|
+
readonly discard: true
|
|
308
|
+
}
|
|
309
|
+
): (self: TMap<K, V>) => STM.STM<void>
|
|
310
|
+
<K, V>(
|
|
311
|
+
predicate: (key: K, value: V) => boolean,
|
|
312
|
+
options?: {
|
|
313
|
+
readonly discard: false
|
|
314
|
+
}
|
|
315
|
+
): (self: TMap<K, V>) => STM.STM<Array<[K, V]>>
|
|
316
|
+
<K, V>(
|
|
317
|
+
self: TMap<K, V>,
|
|
318
|
+
predicate: (key: K, value: V) => boolean,
|
|
319
|
+
options: {
|
|
320
|
+
readonly discard: true
|
|
321
|
+
}
|
|
322
|
+
): STM.STM<void>
|
|
323
|
+
<K, V>(
|
|
324
|
+
self: TMap<K, V>,
|
|
325
|
+
predicate: (key: K, value: V) => boolean,
|
|
326
|
+
options?: {
|
|
327
|
+
readonly discard: false
|
|
328
|
+
}
|
|
329
|
+
): STM.STM<Array<[K, V]>>
|
|
330
|
+
} = internal.retainIf
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Stores new binding into the map.
|
|
334
|
+
*
|
|
335
|
+
* @since 2.0.0
|
|
336
|
+
* @category mutations
|
|
337
|
+
*/
|
|
338
|
+
export const set: {
|
|
339
|
+
<K, V>(key: K, value: V): (self: TMap<K, V>) => STM.STM<void>
|
|
340
|
+
<K, V>(self: TMap<K, V>, key: K, value: V): STM.STM<void>
|
|
341
|
+
} = internal.set
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Stores new binding in the map if it does not already exist.
|
|
345
|
+
*
|
|
346
|
+
* @since 2.0.0
|
|
347
|
+
* @category mutations
|
|
348
|
+
*/
|
|
349
|
+
export const setIfAbsent: {
|
|
350
|
+
<K, V>(key: K, value: V): (self: TMap<K, V>) => STM.STM<void>
|
|
351
|
+
<K, V>(self: TMap<K, V>, key: K, value: V): STM.STM<void>
|
|
352
|
+
} = internal.setIfAbsent
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Returns the number of bindings.
|
|
356
|
+
*
|
|
357
|
+
* @since 2.0.0
|
|
358
|
+
* @category getters
|
|
359
|
+
*/
|
|
360
|
+
export const size: <K, V>(self: TMap<K, V>) => STM.STM<number> = internal.size
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Takes the first matching value, or retries until there is one.
|
|
364
|
+
*
|
|
365
|
+
* @since 2.0.0
|
|
366
|
+
* @category mutations
|
|
367
|
+
*/
|
|
368
|
+
export const takeFirst: {
|
|
369
|
+
<K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<A>
|
|
370
|
+
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<A>
|
|
371
|
+
} = internal.takeFirst
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Takes the first matching value, or retries until there is one.
|
|
375
|
+
*
|
|
376
|
+
* @since 2.0.0
|
|
377
|
+
* @category mutations
|
|
378
|
+
*/
|
|
379
|
+
export const takeFirstSTM: {
|
|
380
|
+
<K, V, A, E, R>(pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): (self: TMap<K, V>) => STM.STM<A, E, R>
|
|
381
|
+
<K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<A, E, R>
|
|
382
|
+
} = internal.takeFirstSTM
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Takes all matching values, or retries until there is at least one.
|
|
386
|
+
*
|
|
387
|
+
* @since 2.0.0
|
|
388
|
+
* @category mutations
|
|
389
|
+
*/
|
|
390
|
+
export const takeSome: {
|
|
391
|
+
<K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<[A, ...Array<A>]>
|
|
392
|
+
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<[A, ...Array<A>]>
|
|
393
|
+
} = internal.takeSome
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Takes all matching values, or retries until there is at least one.
|
|
397
|
+
*
|
|
398
|
+
* @since 2.0.0
|
|
399
|
+
* @category mutations
|
|
400
|
+
*/
|
|
401
|
+
export const takeSomeSTM: {
|
|
402
|
+
<K, V, A, E, R>(
|
|
403
|
+
pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
404
|
+
): (self: TMap<K, V>) => STM.STM<[A, ...Array<A>], E, R>
|
|
405
|
+
<K, V, A, E, R>(
|
|
406
|
+
self: TMap<K, V>,
|
|
407
|
+
pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
|
|
408
|
+
): STM.STM<[A, ...Array<A>], E, R>
|
|
409
|
+
} = internal.takeSomeSTM
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Collects all bindings into a `Chunk`.
|
|
413
|
+
*
|
|
414
|
+
* @since 2.0.0
|
|
415
|
+
* @category destructors
|
|
416
|
+
*/
|
|
417
|
+
export const toChunk: <K, V>(self: TMap<K, V>) => STM.STM<Chunk.Chunk<[K, V]>> = internal.toChunk
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Collects all bindings into a `HashMap`.
|
|
421
|
+
*
|
|
422
|
+
* @since 2.0.0
|
|
423
|
+
* @category destructors
|
|
424
|
+
*/
|
|
425
|
+
export const toHashMap: <K, V>(self: TMap<K, V>) => STM.STM<HashMap.HashMap<K, V>> = internal.toHashMap
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Collects all bindings into an `Array`.
|
|
429
|
+
*
|
|
430
|
+
* @since 2.0.0
|
|
431
|
+
* @category destructors
|
|
432
|
+
*/
|
|
433
|
+
export const toArray: <K, V>(self: TMap<K, V>) => STM.STM<Array<[K, V]>> = internal.toArray
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Collects all bindings into a `Map`.
|
|
437
|
+
*
|
|
438
|
+
* @since 2.0.0
|
|
439
|
+
* @category destructors
|
|
440
|
+
*/
|
|
441
|
+
export const toMap: <K, V>(self: TMap<K, V>) => STM.STM<ReadonlyMap<K, V>> = internal.toMap
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Atomically updates all bindings using a pure function.
|
|
445
|
+
*
|
|
446
|
+
* @since 2.0.0
|
|
447
|
+
* @category mutations
|
|
448
|
+
*/
|
|
449
|
+
export const transform: {
|
|
450
|
+
<K, V>(f: (key: K, value: V) => readonly [K, V]): (self: TMap<K, V>) => STM.STM<void>
|
|
451
|
+
<K, V>(self: TMap<K, V>, f: (key: K, value: V) => readonly [K, V]): STM.STM<void>
|
|
452
|
+
} = internal.transform
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Atomically updates all bindings using a transactional function.
|
|
456
|
+
*
|
|
457
|
+
* @since 2.0.0
|
|
458
|
+
* @category mutations
|
|
459
|
+
*/
|
|
460
|
+
export const transformSTM: {
|
|
461
|
+
<K, V, R, E>(f: (key: K, value: V) => STM.STM<readonly [K, V], E, R>): (self: TMap<K, V>) => STM.STM<void, E, R>
|
|
462
|
+
<K, V, R, E>(self: TMap<K, V>, f: (key: K, value: V) => STM.STM<readonly [K, V], E, R>): STM.STM<void, E, R>
|
|
463
|
+
} = internal.transformSTM
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Atomically updates all values using a pure function.
|
|
467
|
+
*
|
|
468
|
+
* @since 2.0.0
|
|
469
|
+
* @category mutations
|
|
470
|
+
*/
|
|
471
|
+
export const transformValues: {
|
|
472
|
+
<V>(f: (value: V) => V): <K>(self: TMap<K, V>) => STM.STM<void>
|
|
473
|
+
<K, V>(self: TMap<K, V>, f: (value: V) => V): STM.STM<void>
|
|
474
|
+
} = internal.transformValues
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Atomically updates all values using a transactional function.
|
|
478
|
+
*
|
|
479
|
+
* @since 2.0.0
|
|
480
|
+
* @category mutations
|
|
481
|
+
*/
|
|
482
|
+
export const transformValuesSTM: {
|
|
483
|
+
<V, R, E>(f: (value: V) => STM.STM<V, E, R>): <K>(self: TMap<K, V>) => STM.STM<void, E, R>
|
|
484
|
+
<K, V, R, E>(self: TMap<K, V>, f: (value: V) => STM.STM<V, E, R>): STM.STM<void, E, R>
|
|
485
|
+
} = internal.transformValuesSTM
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Updates the mapping for the specified key with the specified function,
|
|
489
|
+
* which takes the current value of the key as an input, if it exists, and
|
|
490
|
+
* either returns `Some` with a new value to indicate to update the value in
|
|
491
|
+
* the map or `None` to remove the value from the map. Returns `Some` with the
|
|
492
|
+
* updated value or `None` if the value was removed from the map.
|
|
493
|
+
*
|
|
494
|
+
* @since 2.0.0
|
|
495
|
+
* @category mutations
|
|
496
|
+
*/
|
|
497
|
+
export const updateWith: {
|
|
498
|
+
<K, V>(
|
|
499
|
+
key: K,
|
|
500
|
+
f: (value: Option.Option<V>) => Option.Option<V>
|
|
501
|
+
): (self: TMap<K, V>) => STM.STM<Option.Option<V>>
|
|
502
|
+
<K, V>(
|
|
503
|
+
self: TMap<K, V>,
|
|
504
|
+
key: K,
|
|
505
|
+
f: (value: Option.Option<V>) => Option.Option<V>
|
|
506
|
+
): STM.STM<Option.Option<V>>
|
|
507
|
+
} = internal.updateWith
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* Collects all values stored in map.
|
|
511
|
+
*
|
|
512
|
+
* @since 2.0.0
|
|
513
|
+
* @category elements
|
|
514
|
+
*/
|
|
515
|
+
export const values: <K, V>(self: TMap<K, V>) => STM.STM<Array<V>> = internal.values
|