@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/HashMap.ts
ADDED
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { Equal } from "./Equal.js"
|
|
6
|
+
import type { HashSet } from "./HashSet.js"
|
|
7
|
+
import type { Inspectable } from "./Inspectable.js"
|
|
8
|
+
import * as HM from "./internal/hashMap.js"
|
|
9
|
+
import * as keySet_ from "./internal/hashMap/keySet.js"
|
|
10
|
+
import type { Option } from "./Option.js"
|
|
11
|
+
import type { Pipeable } from "./Pipeable.js"
|
|
12
|
+
import type { NoInfer } from "./Types.js"
|
|
13
|
+
|
|
14
|
+
const TypeId: unique symbol = HM.HashMapTypeId as TypeId
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 2.0.0
|
|
18
|
+
* @category symbol
|
|
19
|
+
*/
|
|
20
|
+
export type TypeId = typeof TypeId
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @since 2.0.0
|
|
24
|
+
* @category models
|
|
25
|
+
*/
|
|
26
|
+
export interface HashMap<out Key, out Value> extends Iterable<[Key, Value]>, Equal, Pipeable, Inspectable {
|
|
27
|
+
readonly [TypeId]: TypeId
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @since 2.0.0
|
|
32
|
+
*/
|
|
33
|
+
export declare namespace HashMap {
|
|
34
|
+
/**
|
|
35
|
+
* @since 2.0.0
|
|
36
|
+
* @category models
|
|
37
|
+
*/
|
|
38
|
+
export type UpdateFn<V> = (option: Option<V>) => Option<V>
|
|
39
|
+
/**
|
|
40
|
+
* This type-level utility extracts the key type `K` from a `HashMap<K, V>` type.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { HashMap } from "effect"
|
|
45
|
+
*
|
|
46
|
+
* declare const hm: HashMap.HashMap<string, number>
|
|
47
|
+
*
|
|
48
|
+
* // $ExpectType string
|
|
49
|
+
* type K = HashMap.HashMap.Key<typeof hm>
|
|
50
|
+
*
|
|
51
|
+
* ```
|
|
52
|
+
* @since 2.0.0
|
|
53
|
+
* @category type-level
|
|
54
|
+
*/
|
|
55
|
+
export type Key<T extends HashMap<any, any>> = [T] extends [HashMap<infer _K, infer _V>] ? _K : never
|
|
56
|
+
/**
|
|
57
|
+
* This type-level utility extracts the value type `V` from a `HashMap<K, V>` type.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* import { HashMap } from "effect"
|
|
62
|
+
*
|
|
63
|
+
* declare const hm: HashMap.HashMap<string, number>
|
|
64
|
+
*
|
|
65
|
+
* // $ExpectType number
|
|
66
|
+
* type V = HashMap.HashMap.Value<typeof hm>
|
|
67
|
+
*
|
|
68
|
+
* ```
|
|
69
|
+
* @since 2.0.0
|
|
70
|
+
* @category type-level
|
|
71
|
+
*/
|
|
72
|
+
export type Value<T extends HashMap<any, any>> = [T] extends [HashMap<infer _K, infer _V>] ? _V : never
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* This type-level utility extracts the entry type `[K, V]` from a `HashMap<K, V>` type.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* import { HashMap } from "effect"
|
|
80
|
+
*
|
|
81
|
+
* declare const hm: HashMap.HashMap<string, number>
|
|
82
|
+
*
|
|
83
|
+
* // $ExpectType [string, number]
|
|
84
|
+
* type V = HashMap.HashMap.Entry<typeof hm>
|
|
85
|
+
*
|
|
86
|
+
* ```
|
|
87
|
+
* @since 3.9.0
|
|
88
|
+
* @category type-level
|
|
89
|
+
*/
|
|
90
|
+
export type Entry<T extends HashMap<any, any>> = [Key<T>, Value<T>]
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @since 2.0.0
|
|
95
|
+
* @category refinements
|
|
96
|
+
*/
|
|
97
|
+
export const isHashMap: {
|
|
98
|
+
<K, V>(u: Iterable<readonly [K, V]>): u is HashMap<K, V>
|
|
99
|
+
(u: unknown): u is HashMap<unknown, unknown>
|
|
100
|
+
} = HM.isHashMap
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Creates a new `HashMap`.
|
|
104
|
+
*
|
|
105
|
+
* @since 2.0.0
|
|
106
|
+
* @category constructors
|
|
107
|
+
*/
|
|
108
|
+
export const empty: <K = never, V = never>() => HashMap<K, V> = HM.empty
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Constructs a new `HashMap` from an array of key/value pairs.
|
|
112
|
+
*
|
|
113
|
+
* @since 2.0.0
|
|
114
|
+
* @category constructors
|
|
115
|
+
*/
|
|
116
|
+
export const make: <Entries extends ReadonlyArray<readonly [any, any]>>(
|
|
117
|
+
...entries: Entries
|
|
118
|
+
) => HashMap<
|
|
119
|
+
Entries[number] extends readonly [infer K, any] ? K : never,
|
|
120
|
+
Entries[number] extends readonly [any, infer V] ? V : never
|
|
121
|
+
> = HM.make
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Creates a new `HashMap` from an iterable collection of key/value pairs.
|
|
125
|
+
*
|
|
126
|
+
* @since 2.0.0
|
|
127
|
+
* @category constructors
|
|
128
|
+
*/
|
|
129
|
+
export const fromIterable: <K, V>(entries: Iterable<readonly [K, V]>) => HashMap<K, V> = HM.fromIterable
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Checks if the `HashMap` contains any entries.
|
|
133
|
+
*
|
|
134
|
+
* @since 2.0.0
|
|
135
|
+
* @category elements
|
|
136
|
+
*/
|
|
137
|
+
export const isEmpty: <K, V>(self: HashMap<K, V>) => boolean = HM.isEmpty
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Safely lookup the value for the specified key in the `HashMap` using the
|
|
141
|
+
* internal hashing function.
|
|
142
|
+
*
|
|
143
|
+
* @since 2.0.0
|
|
144
|
+
* @category elements
|
|
145
|
+
*/
|
|
146
|
+
export const get: {
|
|
147
|
+
<K1 extends K, K>(key: K1): <V>(self: HashMap<K, V>) => Option<V>
|
|
148
|
+
<K1 extends K, K, V>(self: HashMap<K, V>, key: K1): Option<V>
|
|
149
|
+
} = HM.get
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Lookup the value for the specified key in the `HashMap` using a custom hash.
|
|
153
|
+
*
|
|
154
|
+
* @since 2.0.0
|
|
155
|
+
* @category elements
|
|
156
|
+
*/
|
|
157
|
+
export const getHash: {
|
|
158
|
+
<K1 extends K, K>(key: K1, hash: number): <V>(self: HashMap<K, V>) => Option<V>
|
|
159
|
+
<K1 extends K, K, V>(self: HashMap<K, V>, key: K1, hash: number): Option<V>
|
|
160
|
+
} = HM.getHash
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Unsafely lookup the value for the specified key in the `HashMap` using the
|
|
164
|
+
* internal hashing function.
|
|
165
|
+
*
|
|
166
|
+
* @since 2.0.0
|
|
167
|
+
* @category unsafe
|
|
168
|
+
*/
|
|
169
|
+
export const unsafeGet: {
|
|
170
|
+
<K1 extends K, K>(key: K1): <V>(self: HashMap<K, V>) => V
|
|
171
|
+
<K1 extends K, K, V>(self: HashMap<K, V>, key: K1): V
|
|
172
|
+
} = HM.unsafeGet
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Checks if the specified key has an entry in the `HashMap`.
|
|
176
|
+
*
|
|
177
|
+
* @since 2.0.0
|
|
178
|
+
* @category elements
|
|
179
|
+
*/
|
|
180
|
+
export const has: {
|
|
181
|
+
<K1 extends K, K>(key: K1): <K, V>(self: HashMap<K, V>) => boolean
|
|
182
|
+
<K1 extends K, K, V>(self: HashMap<K, V>, key: K1): boolean
|
|
183
|
+
} = HM.has
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Checks if the specified key has an entry in the `HashMap` using a custom
|
|
187
|
+
* hash.
|
|
188
|
+
*
|
|
189
|
+
* @since 2.0.0
|
|
190
|
+
* @category elements
|
|
191
|
+
*/
|
|
192
|
+
export const hasHash: {
|
|
193
|
+
<K1 extends K, K>(key: K1, hash: number): <V>(self: HashMap<K, V>) => boolean
|
|
194
|
+
<K1 extends K, K, V>(self: HashMap<K, V>, key: K1, hash: number): boolean
|
|
195
|
+
} = HM.hasHash
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Checks if an element matching the given predicate exists in the given `HashMap`.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* import { HashMap } from "effect"
|
|
203
|
+
*
|
|
204
|
+
* const hm = HashMap.make([1, 'a'])
|
|
205
|
+
* HashMap.hasBy(hm, (value, key) => value === 'a' && key === 1); // -> true
|
|
206
|
+
* HashMap.hasBy(hm, (value) => value === 'b'); // -> false
|
|
207
|
+
*
|
|
208
|
+
* ```
|
|
209
|
+
*
|
|
210
|
+
* @since 3.16.0
|
|
211
|
+
* @category elements
|
|
212
|
+
*/
|
|
213
|
+
export const hasBy: {
|
|
214
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>) => boolean): (self: HashMap<K, V>) => boolean
|
|
215
|
+
<K, V>(self: HashMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>) => boolean): boolean
|
|
216
|
+
} = HM.hasBy
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Sets the specified key to the specified value using the internal hashing
|
|
220
|
+
* function.
|
|
221
|
+
*
|
|
222
|
+
* @since 2.0.0
|
|
223
|
+
*/
|
|
224
|
+
export const set: {
|
|
225
|
+
<K, V>(key: K, value: V): (self: HashMap<K, V>) => HashMap<K, V>
|
|
226
|
+
<K, V>(self: HashMap<K, V>, key: K, value: V): HashMap<K, V>
|
|
227
|
+
} = HM.set
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Returns an `IterableIterator` of the keys within the `HashMap`.
|
|
231
|
+
*
|
|
232
|
+
* @since 2.0.0
|
|
233
|
+
* @category getters
|
|
234
|
+
*/
|
|
235
|
+
export const keys: <K, V>(self: HashMap<K, V>) => IterableIterator<K> = HM.keys
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Returns a `HashSet` of keys within the `HashMap`.
|
|
239
|
+
*
|
|
240
|
+
* @since 2.0.0
|
|
241
|
+
* @category getter
|
|
242
|
+
*/
|
|
243
|
+
export const keySet: <K, V>(self: HashMap<K, V>) => HashSet<K> = keySet_.keySet
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Returns an `IterableIterator` of the values within the `HashMap`.
|
|
247
|
+
*
|
|
248
|
+
* @since 2.0.0
|
|
249
|
+
* @category getters
|
|
250
|
+
*/
|
|
251
|
+
export const values: <K, V>(self: HashMap<K, V>) => IterableIterator<V> = HM.values
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Returns an `Array` of the values within the `HashMap`.
|
|
255
|
+
*
|
|
256
|
+
* @since 3.13.0
|
|
257
|
+
* @category getters
|
|
258
|
+
*/
|
|
259
|
+
export const toValues = <K, V>(self: HashMap<K, V>): Array<V> => Array.from(values(self))
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Returns an `IterableIterator` of the entries within the `HashMap`.
|
|
263
|
+
*
|
|
264
|
+
* @since 2.0.0
|
|
265
|
+
* @category getters
|
|
266
|
+
*/
|
|
267
|
+
export const entries: <K, V>(self: HashMap<K, V>) => IterableIterator<[K, V]> = HM.entries
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Returns an `Array<[K, V]>` of the entries within the `HashMap`.
|
|
271
|
+
*
|
|
272
|
+
* @since 2.0.0
|
|
273
|
+
* @category getters
|
|
274
|
+
*/
|
|
275
|
+
export const toEntries = <K, V>(self: HashMap<K, V>): Array<[K, V]> => Array.from(entries(self))
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Returns the number of entries within the `HashMap`.
|
|
279
|
+
*
|
|
280
|
+
* @since 2.0.0
|
|
281
|
+
* @category getters
|
|
282
|
+
*/
|
|
283
|
+
export const size: <K, V>(self: HashMap<K, V>) => number = HM.size
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Counts all the element of the given HashMap that pass the given predicate
|
|
287
|
+
*
|
|
288
|
+
* **Example**
|
|
289
|
+
*
|
|
290
|
+
* ```ts
|
|
291
|
+
* import { HashMap } from "effect"
|
|
292
|
+
*
|
|
293
|
+
* const map = HashMap.make([1, "a"], [2, "b"], [3, "c"])
|
|
294
|
+
* const result = HashMap.countBy(map, (_v, key) => key % 2 === 1)
|
|
295
|
+
* console.log(result) // 2
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @since 3.17.0
|
|
299
|
+
* @category folding
|
|
300
|
+
*/
|
|
301
|
+
export const countBy: {
|
|
302
|
+
<K, V>(predicate: (value: NoInfer<V>, key: NoInfer<K>) => boolean): (self: HashMap<K, V>) => number
|
|
303
|
+
<K, V>(self: HashMap<K, V>, predicate: (value: NoInfer<V>, key: NoInfer<K>) => boolean): number
|
|
304
|
+
} = HM.countBy
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Marks the `HashMap` as mutable.
|
|
308
|
+
*
|
|
309
|
+
* @since 2.0.0
|
|
310
|
+
*/
|
|
311
|
+
export const beginMutation: <K, V>(self: HashMap<K, V>) => HashMap<K, V> = HM.beginMutation
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Marks the `HashMap` as immutable.
|
|
315
|
+
*
|
|
316
|
+
* @since 2.0.0
|
|
317
|
+
*/
|
|
318
|
+
export const endMutation: <K, V>(self: HashMap<K, V>) => HashMap<K, V> = HM.endMutation
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Mutates the `HashMap` within the context of the provided function.
|
|
322
|
+
*
|
|
323
|
+
* @since 2.0.0
|
|
324
|
+
*/
|
|
325
|
+
export const mutate: {
|
|
326
|
+
<K, V>(f: (self: HashMap<K, V>) => void): (self: HashMap<K, V>) => HashMap<K, V>
|
|
327
|
+
<K, V>(self: HashMap<K, V>, f: (self: HashMap<K, V>) => void): HashMap<K, V>
|
|
328
|
+
} = HM.mutate
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Set or remove the specified key in the `HashMap` using the specified
|
|
332
|
+
* update function. The value of the specified key will be computed using the
|
|
333
|
+
* provided hash.
|
|
334
|
+
*
|
|
335
|
+
* The update function will be invoked with the current value of the key if it
|
|
336
|
+
* exists, or `None` if no such value exists.
|
|
337
|
+
*
|
|
338
|
+
* @since 2.0.0
|
|
339
|
+
*/
|
|
340
|
+
export const modifyAt: {
|
|
341
|
+
<K, V>(key: K, f: HashMap.UpdateFn<V>): (self: HashMap<K, V>) => HashMap<K, V>
|
|
342
|
+
<K, V>(self: HashMap<K, V>, key: K, f: HashMap.UpdateFn<V>): HashMap<K, V>
|
|
343
|
+
} = HM.modifyAt
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Alter the value of the specified key in the `HashMap` using the specified
|
|
347
|
+
* update function. The value of the specified key will be computed using the
|
|
348
|
+
* provided hash.
|
|
349
|
+
*
|
|
350
|
+
* The update function will be invoked with the current value of the key if it
|
|
351
|
+
* exists, or `None` if no such value exists.
|
|
352
|
+
*
|
|
353
|
+
* This function will always either update or insert a value into the `HashMap`.
|
|
354
|
+
*
|
|
355
|
+
* @since 2.0.0
|
|
356
|
+
*/
|
|
357
|
+
export const modifyHash: {
|
|
358
|
+
<K, V>(key: K, hash: number, f: HashMap.UpdateFn<V>): (self: HashMap<K, V>) => HashMap<K, V>
|
|
359
|
+
<K, V>(self: HashMap<K, V>, key: K, hash: number, f: HashMap.UpdateFn<V>): HashMap<K, V>
|
|
360
|
+
} = HM.modifyHash
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Updates the value of the specified key within the `HashMap` if it exists.
|
|
364
|
+
*
|
|
365
|
+
* @since 2.0.0
|
|
366
|
+
*/
|
|
367
|
+
export const modify: {
|
|
368
|
+
<K, V>(key: K, f: (v: V) => V): (self: HashMap<K, V>) => HashMap<K, V>
|
|
369
|
+
<K, V>(self: HashMap<K, V>, key: K, f: (v: V) => V): HashMap<K, V>
|
|
370
|
+
} = HM.modify
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Performs a union of this `HashMap` and that `HashMap`.
|
|
374
|
+
*
|
|
375
|
+
* @since 2.0.0
|
|
376
|
+
*/
|
|
377
|
+
export const union: {
|
|
378
|
+
<K1, V1>(that: HashMap<K1, V1>): <K0, V0>(self: HashMap<K0, V0>) => HashMap<K1 | K0, V1 | V0>
|
|
379
|
+
<K0, V0, K1, V1>(self: HashMap<K0, V0>, that: HashMap<K1, V1>): HashMap<K0 | K1, V0 | V1>
|
|
380
|
+
} = HM.union
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Remove the entry for the specified key in the `HashMap` using the internal
|
|
384
|
+
* hashing function.
|
|
385
|
+
*
|
|
386
|
+
* @since 2.0.0
|
|
387
|
+
*/
|
|
388
|
+
export const remove: {
|
|
389
|
+
<K>(key: K): <V>(self: HashMap<K, V>) => HashMap<K, V>
|
|
390
|
+
<K, V>(self: HashMap<K, V>, key: K): HashMap<K, V>
|
|
391
|
+
} = HM.remove
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Removes all entries in the `HashMap` which have the specified keys.
|
|
395
|
+
*
|
|
396
|
+
* @since 2.0.0
|
|
397
|
+
*/
|
|
398
|
+
export const removeMany: {
|
|
399
|
+
<K>(keys: Iterable<K>): <V>(self: HashMap<K, V>) => HashMap<K, V>
|
|
400
|
+
<K, V>(self: HashMap<K, V>, keys: Iterable<K>): HashMap<K, V>
|
|
401
|
+
} = HM.removeMany
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Maps over the entries of the `HashMap` using the specified function.
|
|
405
|
+
*
|
|
406
|
+
* @since 2.0.0
|
|
407
|
+
* @category mapping
|
|
408
|
+
*/
|
|
409
|
+
export const map: {
|
|
410
|
+
<A, V, K>(f: (value: V, key: K) => A): (self: HashMap<K, V>) => HashMap<K, A>
|
|
411
|
+
<K, V, A>(self: HashMap<K, V>, f: (value: V, key: K) => A): HashMap<K, A>
|
|
412
|
+
} = HM.map
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Chains over the entries of the `HashMap` using the specified function.
|
|
416
|
+
*
|
|
417
|
+
* **NOTE**: the hash and equal of both maps have to be the same.
|
|
418
|
+
*
|
|
419
|
+
* @since 2.0.0
|
|
420
|
+
* @category sequencing
|
|
421
|
+
*/
|
|
422
|
+
export const flatMap: {
|
|
423
|
+
<A, K, B>(f: (value: A, key: K) => HashMap<K, B>): (self: HashMap<K, A>) => HashMap<K, B>
|
|
424
|
+
<K, A, B>(self: HashMap<K, A>, f: (value: A, key: K) => HashMap<K, B>): HashMap<K, B>
|
|
425
|
+
} = HM.flatMap
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Applies the specified function to the entries of the `HashMap`.
|
|
429
|
+
*
|
|
430
|
+
* @since 2.0.0
|
|
431
|
+
* @category traversing
|
|
432
|
+
*/
|
|
433
|
+
export const forEach: {
|
|
434
|
+
<V, K>(f: (value: V, key: K) => void): (self: HashMap<K, V>) => void
|
|
435
|
+
<V, K>(self: HashMap<K, V>, f: (value: V, key: K) => void): void
|
|
436
|
+
} = HM.forEach
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Reduces the specified state over the entries of the `HashMap`.
|
|
440
|
+
*
|
|
441
|
+
* @since 2.0.0
|
|
442
|
+
* @category folding
|
|
443
|
+
*/
|
|
444
|
+
export const reduce: {
|
|
445
|
+
<Z, V, K>(zero: Z, f: (accumulator: Z, value: V, key: K) => Z): (self: HashMap<K, V>) => Z
|
|
446
|
+
<K, V, Z>(self: HashMap<K, V>, zero: Z, f: (accumulator: Z, value: V, key: K) => Z): Z
|
|
447
|
+
} = HM.reduce
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Filters entries out of a `HashMap` using the specified predicate.
|
|
451
|
+
*
|
|
452
|
+
* @since 2.0.0
|
|
453
|
+
* @category filtering
|
|
454
|
+
*/
|
|
455
|
+
export const filter: {
|
|
456
|
+
<K, A, B extends A>(f: (a: NoInfer<A>, k: K) => a is B): (self: HashMap<K, A>) => HashMap<K, B>
|
|
457
|
+
<K, A>(f: (a: NoInfer<A>, k: K) => boolean): (self: HashMap<K, A>) => HashMap<K, A>
|
|
458
|
+
<K, A, B extends A>(self: HashMap<K, A>, f: (a: A, k: K) => a is B): HashMap<K, B>
|
|
459
|
+
<K, A>(self: HashMap<K, A>, f: (a: A, k: K) => boolean): HashMap<K, A>
|
|
460
|
+
} = HM.filter
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Filters out `None` values from a `HashMap` of `Options`s.
|
|
464
|
+
*
|
|
465
|
+
* @since 2.0.0
|
|
466
|
+
* @category filtering
|
|
467
|
+
*/
|
|
468
|
+
export const compact: <K, A>(self: HashMap<K, Option<A>>) => HashMap<K, A> = HM.compact
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Maps over the entries of the `HashMap` using the specified partial function
|
|
472
|
+
* and filters out `None` values.
|
|
473
|
+
*
|
|
474
|
+
* @since 2.0.0
|
|
475
|
+
* @category filtering
|
|
476
|
+
*/
|
|
477
|
+
export const filterMap: {
|
|
478
|
+
<A, K, B>(f: (value: A, key: K) => Option<B>): (self: HashMap<K, A>) => HashMap<K, B>
|
|
479
|
+
<K, A, B>(self: HashMap<K, A>, f: (value: A, key: K) => Option<B>): HashMap<K, B>
|
|
480
|
+
} = HM.filterMap
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* Returns the first element that satisfies the specified
|
|
484
|
+
* predicate, or `None` if no such element exists.
|
|
485
|
+
*
|
|
486
|
+
* @category elements
|
|
487
|
+
* @since 2.0.0
|
|
488
|
+
*/
|
|
489
|
+
export const findFirst: {
|
|
490
|
+
<K, A, B extends A>(predicate: (a: NoInfer<A>, k: K) => a is B): (self: HashMap<K, A>) => Option<[K, B]>
|
|
491
|
+
<K, A>(predicate: (a: NoInfer<A>, k: K) => boolean): (self: HashMap<K, A>) => Option<[K, A]>
|
|
492
|
+
<K, A, B extends A>(self: HashMap<K, A>, predicate: (a: A, k: K) => a is B): Option<[K, B]>
|
|
493
|
+
<K, A>(self: HashMap<K, A>, predicate: (a: A, k: K) => boolean): Option<[K, A]>
|
|
494
|
+
} = HM.findFirst
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* Checks if any entry in a hashmap meets a specific condition.
|
|
498
|
+
*
|
|
499
|
+
* @since 3.13.0
|
|
500
|
+
* @category elements
|
|
501
|
+
*/
|
|
502
|
+
export const some: {
|
|
503
|
+
<K, A>(predicate: (a: NoInfer<A>, k: K) => boolean): (self: HashMap<K, A>) => boolean
|
|
504
|
+
<K, A>(self: HashMap<K, A>, predicate: (a: A, k: K) => boolean): boolean
|
|
505
|
+
} = HM.some
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Checks if all entries in a hashmap meets a specific condition.
|
|
509
|
+
*
|
|
510
|
+
* @param self - The hashmap to check.
|
|
511
|
+
* @param predicate - The condition to test entries (value, key).
|
|
512
|
+
*
|
|
513
|
+
* @since 3.14.0
|
|
514
|
+
* @category elements
|
|
515
|
+
*/
|
|
516
|
+
export const every: {
|
|
517
|
+
<K, A>(predicate: (a: NoInfer<A>, k: K) => boolean): (self: HashMap<K, A>) => boolean
|
|
518
|
+
<K, A>(self: HashMap<K, A>, predicate: (a: A, k: K) => boolean): boolean
|
|
519
|
+
} = HM.every
|