@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,421 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type { Chunk } from "./Chunk.js"
|
|
5
|
+
import type { Equal } from "./Equal.js"
|
|
6
|
+
import type { Inspectable } from "./Inspectable.js"
|
|
7
|
+
import * as RBT from "./internal/redBlackTree.js"
|
|
8
|
+
import * as RBTI from "./internal/redBlackTree/iterator.js"
|
|
9
|
+
import type { Option } from "./Option.js"
|
|
10
|
+
import type { Order } from "./Order.js"
|
|
11
|
+
import type { Pipeable } from "./Pipeable.js"
|
|
12
|
+
import type * as Types from "./Types.js"
|
|
13
|
+
|
|
14
|
+
const TypeId: unique symbol = RBT.RedBlackTreeTypeId 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 constants
|
|
25
|
+
*/
|
|
26
|
+
export const Direction = RBTI.Direction
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A Red-Black Tree.
|
|
30
|
+
*
|
|
31
|
+
* @since 2.0.0
|
|
32
|
+
* @category models
|
|
33
|
+
*/
|
|
34
|
+
export interface RedBlackTree<in out Key, out Value> extends Iterable<[Key, Value]>, Equal, Pipeable, Inspectable {
|
|
35
|
+
readonly [TypeId]: {
|
|
36
|
+
readonly _Key: Types.Invariant<Key>
|
|
37
|
+
readonly _Value: Types.Covariant<Value>
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @since 2.0.0
|
|
43
|
+
*/
|
|
44
|
+
export declare namespace RedBlackTree {
|
|
45
|
+
/**
|
|
46
|
+
* @since 2.0.0
|
|
47
|
+
*/
|
|
48
|
+
export type Direction = number & {
|
|
49
|
+
readonly Direction: unique symbol
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @since 2.0.0
|
|
55
|
+
* @category refinements
|
|
56
|
+
*/
|
|
57
|
+
export const isRedBlackTree: {
|
|
58
|
+
<K, V>(u: Iterable<readonly [K, V]>): u is RedBlackTree<K, V>
|
|
59
|
+
(u: unknown): u is RedBlackTree<unknown, unknown>
|
|
60
|
+
} = RBT.isRedBlackTree
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Creates an empty `RedBlackTree`.
|
|
64
|
+
*
|
|
65
|
+
* @since 2.0.0
|
|
66
|
+
* @category constructors
|
|
67
|
+
*/
|
|
68
|
+
export const empty: <K, V = never>(ord: Order<K>) => RedBlackTree<K, V> = RBT.empty
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Creates a new `RedBlackTree` from an iterable collection of key/value pairs.
|
|
72
|
+
*
|
|
73
|
+
* @since 2.0.0
|
|
74
|
+
* @category constructors
|
|
75
|
+
*/
|
|
76
|
+
export const fromIterable: {
|
|
77
|
+
<B>(ord: Order<B>): <K extends B, V>(entries: Iterable<readonly [K, V]>) => RedBlackTree<K, V>
|
|
78
|
+
<K extends B, V, B>(entries: Iterable<readonly [K, V]>, ord: Order<B>): RedBlackTree<K, V>
|
|
79
|
+
} = RBT.fromIterable
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Constructs a new `RedBlackTree` from the specified entries.
|
|
83
|
+
*
|
|
84
|
+
* @since 2.0.0
|
|
85
|
+
* @category constructors
|
|
86
|
+
*/
|
|
87
|
+
export const make: <K>(
|
|
88
|
+
ord: Order<K>
|
|
89
|
+
) => <Entries extends Array<readonly [K, any]>>(
|
|
90
|
+
...entries: Entries
|
|
91
|
+
) => RedBlackTree<K, Entries[number] extends readonly [any, infer V] ? V : never> = RBT.make
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Returns an iterator that points to the element at the specified index of the
|
|
95
|
+
* tree.
|
|
96
|
+
*
|
|
97
|
+
* **Note**: The iterator will run through elements in order.
|
|
98
|
+
*
|
|
99
|
+
* @since 2.0.0
|
|
100
|
+
* @category traversing
|
|
101
|
+
*/
|
|
102
|
+
export const at: {
|
|
103
|
+
(index: number): <K, V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
104
|
+
<K, V>(self: RedBlackTree<K, V>, index: number): Iterable<[K, V]>
|
|
105
|
+
} = RBT.atForwards
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Returns an iterator that points to the element at the specified index of the
|
|
109
|
+
* tree.
|
|
110
|
+
*
|
|
111
|
+
* **Note**: The iterator will run through elements in reverse order.
|
|
112
|
+
*
|
|
113
|
+
* @since 2.0.0
|
|
114
|
+
* @category traversing
|
|
115
|
+
*/
|
|
116
|
+
export const atReversed: {
|
|
117
|
+
(index: number): <K, V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
118
|
+
<K, V>(self: RedBlackTree<K, V>, index: number): Iterable<[K, V]>
|
|
119
|
+
} = RBT.atBackwards
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Finds all values in the tree associated with the specified key.
|
|
123
|
+
*
|
|
124
|
+
* @since 2.0.0
|
|
125
|
+
* @category elements
|
|
126
|
+
*/
|
|
127
|
+
export const findAll: {
|
|
128
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Chunk<V>
|
|
129
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Chunk<V>
|
|
130
|
+
} = RBT.findAll
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Finds the first value in the tree associated with the specified key, if it exists.
|
|
134
|
+
*
|
|
135
|
+
* @category elements
|
|
136
|
+
* @since 2.0.0
|
|
137
|
+
*/
|
|
138
|
+
export const findFirst: {
|
|
139
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Option<V>
|
|
140
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Option<V>
|
|
141
|
+
} = RBT.findFirst
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Returns the first entry in the tree, if it exists.
|
|
145
|
+
*
|
|
146
|
+
* @since 2.0.0
|
|
147
|
+
* @category getters
|
|
148
|
+
*/
|
|
149
|
+
export const first: <K, V>(self: RedBlackTree<K, V>) => Option<[K, V]> = RBT.first
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Returns the element at the specified index within the tree or `None` if the
|
|
153
|
+
* specified index does not exist.
|
|
154
|
+
*
|
|
155
|
+
* @since 2.0.0
|
|
156
|
+
* @category elements
|
|
157
|
+
*/
|
|
158
|
+
export const getAt: {
|
|
159
|
+
(index: number): <K, V>(self: RedBlackTree<K, V>) => Option<[K, V]>
|
|
160
|
+
<K, V>(self: RedBlackTree<K, V>, index: number): Option<[K, V]>
|
|
161
|
+
} = RBT.getAt
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Gets the `Order<K>` that the `RedBlackTree<K, V>` is using.
|
|
165
|
+
*
|
|
166
|
+
* @since 2.0.0
|
|
167
|
+
* @category getters
|
|
168
|
+
*/
|
|
169
|
+
export const getOrder: <K, V>(self: RedBlackTree<K, V>) => Order<K> = RBT.getOrder
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Returns an iterator that traverse entries in order with keys greater than the
|
|
173
|
+
* specified key.
|
|
174
|
+
*
|
|
175
|
+
* @since 2.0.0
|
|
176
|
+
* @category traversing
|
|
177
|
+
*/
|
|
178
|
+
export const greaterThan: {
|
|
179
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
180
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
181
|
+
} = RBT.greaterThanForwards
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Returns an iterator that traverse entries in reverse order with keys greater
|
|
185
|
+
* than the specified key.
|
|
186
|
+
*
|
|
187
|
+
* @since 2.0.0
|
|
188
|
+
* @category traversing
|
|
189
|
+
*/
|
|
190
|
+
export const greaterThanReversed: {
|
|
191
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
192
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
193
|
+
} = RBT.greaterThanBackwards
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns an iterator that traverse entries in order with keys greater than or
|
|
197
|
+
* equal to the specified key.
|
|
198
|
+
*
|
|
199
|
+
* @since 2.0.0
|
|
200
|
+
* @category traversing
|
|
201
|
+
*/
|
|
202
|
+
export const greaterThanEqual: {
|
|
203
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
204
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
205
|
+
} = RBT.greaterThanEqualForwards
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Returns an iterator that traverse entries in reverse order with keys greater
|
|
209
|
+
* than or equal to the specified key.
|
|
210
|
+
*
|
|
211
|
+
* @since 2.0.0
|
|
212
|
+
* @category traversing
|
|
213
|
+
*/
|
|
214
|
+
export const greaterThanEqualReversed: {
|
|
215
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
216
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
217
|
+
} = RBT.greaterThanEqualBackwards
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Finds the item with key, if it exists.
|
|
221
|
+
*
|
|
222
|
+
* @since 2.0.0
|
|
223
|
+
* @category elements
|
|
224
|
+
*/
|
|
225
|
+
export const has: {
|
|
226
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => boolean
|
|
227
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): boolean
|
|
228
|
+
} = RBT.has
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Insert a new item into the tree.
|
|
232
|
+
*
|
|
233
|
+
* @since 2.0.0
|
|
234
|
+
*/
|
|
235
|
+
export const insert: {
|
|
236
|
+
<K, V>(key: K, value: V): (self: RedBlackTree<K, V>) => RedBlackTree<K, V>
|
|
237
|
+
<K, V>(self: RedBlackTree<K, V>, key: K, value: V): RedBlackTree<K, V>
|
|
238
|
+
} = RBT.insert
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Get all the keys present in the tree in order.
|
|
242
|
+
*
|
|
243
|
+
* @since 2.0.0
|
|
244
|
+
* @category getters
|
|
245
|
+
*/
|
|
246
|
+
export const keys: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<K> = RBT.keysForward
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Get all the keys present in the tree in reverse order.
|
|
250
|
+
*
|
|
251
|
+
* @since 2.0.0
|
|
252
|
+
* @category getters
|
|
253
|
+
*/
|
|
254
|
+
export const keysReversed: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<K> = RBT.keysBackward
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Returns the last entry in the tree, if it exists.
|
|
258
|
+
*
|
|
259
|
+
* @since 2.0.0
|
|
260
|
+
* @category getters
|
|
261
|
+
*/
|
|
262
|
+
export const last: <K, V>(self: RedBlackTree<K, V>) => Option<[K, V]> = RBT.last
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Returns an iterator that traverse entries in order with keys less than the
|
|
266
|
+
* specified key.
|
|
267
|
+
*
|
|
268
|
+
* @since 2.0.0
|
|
269
|
+
* @category traversing
|
|
270
|
+
*/
|
|
271
|
+
export const lessThan: {
|
|
272
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
273
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
274
|
+
} = RBT.lessThanForwards
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Returns an iterator that traverse entries in reverse order with keys less
|
|
278
|
+
* than the specified key.
|
|
279
|
+
*
|
|
280
|
+
* @since 2.0.0
|
|
281
|
+
* @category traversing
|
|
282
|
+
*/
|
|
283
|
+
export const lessThanReversed: {
|
|
284
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
285
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
286
|
+
} = RBT.lessThanBackwards
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Returns an iterator that traverse entries in order with keys less than or
|
|
290
|
+
* equal to the specified key.
|
|
291
|
+
*
|
|
292
|
+
* @since 2.0.0
|
|
293
|
+
* @category traversing
|
|
294
|
+
*/
|
|
295
|
+
export const lessThanEqual: {
|
|
296
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
297
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
298
|
+
} = RBT.lessThanEqualForwards
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Returns an iterator that traverse entries in reverse order with keys less
|
|
302
|
+
* than or equal to the specified key.
|
|
303
|
+
*
|
|
304
|
+
* @since 2.0.0
|
|
305
|
+
* @category traversing
|
|
306
|
+
*/
|
|
307
|
+
export const lessThanEqualReversed: {
|
|
308
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]>
|
|
309
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]>
|
|
310
|
+
} = RBT.lessThanEqualBackwards
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Execute the specified function for each node of the tree, in order.
|
|
314
|
+
*
|
|
315
|
+
* @since 2.0.0
|
|
316
|
+
* @category traversing
|
|
317
|
+
*/
|
|
318
|
+
export const forEach: {
|
|
319
|
+
<K, V>(f: (key: K, value: V) => void): (self: RedBlackTree<K, V>) => void
|
|
320
|
+
<K, V>(self: RedBlackTree<K, V>, f: (key: K, value: V) => void): void
|
|
321
|
+
} = RBT.forEach
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Visit each node of the tree in order with key greater then or equal to max.
|
|
325
|
+
*
|
|
326
|
+
* @since 2.0.0
|
|
327
|
+
* @category traversing
|
|
328
|
+
*/
|
|
329
|
+
export const forEachGreaterThanEqual: {
|
|
330
|
+
<K, V>(min: K, f: (key: K, value: V) => void): (self: RedBlackTree<K, V>) => void
|
|
331
|
+
<K, V>(self: RedBlackTree<K, V>, min: K, f: (key: K, value: V) => void): void
|
|
332
|
+
} = RBT.forEachGreaterThanEqual
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Visit each node of the tree in order with key lower then max.
|
|
336
|
+
*
|
|
337
|
+
* @since 2.0.0
|
|
338
|
+
* @category traversing
|
|
339
|
+
*/
|
|
340
|
+
export const forEachLessThan: {
|
|
341
|
+
<K, V>(max: K, f: (key: K, value: V) => void): (self: RedBlackTree<K, V>) => void
|
|
342
|
+
<K, V>(self: RedBlackTree<K, V>, max: K, f: (key: K, value: V) => void): void
|
|
343
|
+
} = RBT.forEachLessThan
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Visit each node of the tree in order with key lower than max and greater
|
|
347
|
+
* than or equal to min.
|
|
348
|
+
*
|
|
349
|
+
* @since 2.0.0
|
|
350
|
+
* @category traversing
|
|
351
|
+
*/
|
|
352
|
+
export const forEachBetween: {
|
|
353
|
+
<K, V>(
|
|
354
|
+
options: {
|
|
355
|
+
readonly min: K
|
|
356
|
+
readonly max: K
|
|
357
|
+
readonly body: (key: K, value: V) => void
|
|
358
|
+
}
|
|
359
|
+
): (self: RedBlackTree<K, V>) => void
|
|
360
|
+
<K, V>(
|
|
361
|
+
self: RedBlackTree<K, V>,
|
|
362
|
+
options: {
|
|
363
|
+
readonly min: K
|
|
364
|
+
readonly max: K
|
|
365
|
+
readonly body: (key: K, value: V) => void
|
|
366
|
+
}
|
|
367
|
+
): void
|
|
368
|
+
} = RBT.forEachBetween
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Reduce a state over the entries of the tree.
|
|
372
|
+
*
|
|
373
|
+
* @since 2.0.0
|
|
374
|
+
* @category folding
|
|
375
|
+
*/
|
|
376
|
+
export const reduce: {
|
|
377
|
+
<Z, V, K>(zero: Z, f: (accumulator: Z, value: V, key: K) => Z): (self: RedBlackTree<K, V>) => Z
|
|
378
|
+
<Z, V, K>(self: RedBlackTree<K, V>, zero: Z, f: (accumulator: Z, value: V, key: K) => Z): Z
|
|
379
|
+
} = RBT.reduce
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Removes the entry with the specified key, if it exists.
|
|
383
|
+
*
|
|
384
|
+
* @since 2.0.0
|
|
385
|
+
*/
|
|
386
|
+
export const removeFirst: {
|
|
387
|
+
<K>(key: K): <V>(self: RedBlackTree<K, V>) => RedBlackTree<K, V>
|
|
388
|
+
<K, V>(self: RedBlackTree<K, V>, key: K): RedBlackTree<K, V>
|
|
389
|
+
} = RBT.removeFirst
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Traverse the tree in reverse order.
|
|
393
|
+
*
|
|
394
|
+
* @since 2.0.0
|
|
395
|
+
* @category traversing
|
|
396
|
+
*/
|
|
397
|
+
export const reversed: <K, V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> = RBT.reversed
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Returns the size of the tree.
|
|
401
|
+
*
|
|
402
|
+
* @since 2.0.0
|
|
403
|
+
* @category getters
|
|
404
|
+
*/
|
|
405
|
+
export const size: <K, V>(self: RedBlackTree<K, V>) => number = RBT.size
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Get all values present in the tree in order.
|
|
409
|
+
*
|
|
410
|
+
* @since 2.0.0
|
|
411
|
+
* @category getters
|
|
412
|
+
*/
|
|
413
|
+
export const values: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<V> = RBT.valuesForward
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Get all values present in the tree in reverse order.
|
|
417
|
+
*
|
|
418
|
+
* @since 2.0.0
|
|
419
|
+
* @category getters
|
|
420
|
+
*/
|
|
421
|
+
export const valuesReversed: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<V> = RBT.valuesBackward
|
package/src/Redacted.ts
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Redacted module provides functionality for handling sensitive information
|
|
3
|
+
* securely within your application. By using the `Redacted` data type, you can
|
|
4
|
+
* ensure that sensitive values are not accidentally exposed in logs or error
|
|
5
|
+
* messages.
|
|
6
|
+
*
|
|
7
|
+
* @since 3.3.0
|
|
8
|
+
*/
|
|
9
|
+
import type * as Equal from "./Equal.js"
|
|
10
|
+
import * as Equivalence from "./Equivalence.js"
|
|
11
|
+
import * as redacted_ from "./internal/redacted.js"
|
|
12
|
+
import type { Pipeable } from "./Pipeable.js"
|
|
13
|
+
import type { Covariant } from "./Types.js"
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @since 3.3.0
|
|
17
|
+
* @category symbols
|
|
18
|
+
*/
|
|
19
|
+
export const RedactedTypeId: unique symbol = redacted_.RedactedTypeId
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 3.3.0
|
|
23
|
+
* @category symbols
|
|
24
|
+
*/
|
|
25
|
+
export type RedactedTypeId = typeof RedactedTypeId
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @since 3.3.0
|
|
29
|
+
* @category models
|
|
30
|
+
*/
|
|
31
|
+
export interface Redacted<out A = string> extends Redacted.Variance<A>, Equal.Equal, Pipeable {
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @since 3.3.0
|
|
36
|
+
*/
|
|
37
|
+
export declare namespace Redacted {
|
|
38
|
+
/**
|
|
39
|
+
* @since 3.3.0
|
|
40
|
+
* @category models
|
|
41
|
+
*/
|
|
42
|
+
export interface Variance<out A> {
|
|
43
|
+
readonly [RedactedTypeId]: {
|
|
44
|
+
readonly _A: Covariant<A>
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @since 3.3.0
|
|
50
|
+
* @category type-level
|
|
51
|
+
*/
|
|
52
|
+
export type Value<T extends Redacted<any>> = [T] extends [Redacted<infer _A>] ? _A : never
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @since 3.3.0
|
|
57
|
+
* @category refinements
|
|
58
|
+
*/
|
|
59
|
+
export const isRedacted: (u: unknown) => u is Redacted<unknown> = redacted_.isRedacted
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* This function creates a `Redacted<A>` instance from a given value `A`,
|
|
63
|
+
* securely hiding its content.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* import { Redacted } from "effect"
|
|
68
|
+
*
|
|
69
|
+
* const API_KEY = Redacted.make("1234567890")
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @since 3.3.0
|
|
73
|
+
* @category constructors
|
|
74
|
+
*/
|
|
75
|
+
export const make: <A>(value: A) => Redacted<A> = redacted_.make
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Retrieves the original value from a `Redacted` instance. Use this function
|
|
79
|
+
* with caution, as it exposes the sensitive data.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* import * as assert from "node:assert"
|
|
84
|
+
* import { Redacted } from "effect"
|
|
85
|
+
*
|
|
86
|
+
* const API_KEY = Redacted.make("1234567890")
|
|
87
|
+
*
|
|
88
|
+
* assert.equal(Redacted.value(API_KEY), "1234567890")
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @since 3.3.0
|
|
92
|
+
* @category getters
|
|
93
|
+
*/
|
|
94
|
+
export const value: <A>(self: Redacted<A>) => A = redacted_.value
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Erases the underlying value of a `Redacted` instance, rendering it unusable.
|
|
98
|
+
* This function is intended to ensure that sensitive data does not remain in
|
|
99
|
+
* memory longer than necessary.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* import * as assert from "node:assert"
|
|
104
|
+
* import { Redacted } from "effect"
|
|
105
|
+
*
|
|
106
|
+
* const API_KEY = Redacted.make("1234567890")
|
|
107
|
+
*
|
|
108
|
+
* assert.equal(Redacted.value(API_KEY), "1234567890")
|
|
109
|
+
*
|
|
110
|
+
* Redacted.unsafeWipe(API_KEY)
|
|
111
|
+
*
|
|
112
|
+
* assert.throws(() => Redacted.value(API_KEY), new Error("Unable to get redacted value"))
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* @since 3.3.0
|
|
116
|
+
* @category unsafe
|
|
117
|
+
*/
|
|
118
|
+
export const unsafeWipe: <A>(self: Redacted<A>) => boolean = redacted_.unsafeWipe
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Generates an equivalence relation for `Redacted<A>` values based on an
|
|
122
|
+
* equivalence relation for the underlying values `A`. This function is useful
|
|
123
|
+
* for comparing `Redacted` instances without exposing their contents.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* import * as assert from "node:assert"
|
|
128
|
+
* import { Redacted, Equivalence } from "effect"
|
|
129
|
+
*
|
|
130
|
+
* const API_KEY1 = Redacted.make("1234567890")
|
|
131
|
+
* const API_KEY2 = Redacted.make("1-34567890")
|
|
132
|
+
* const API_KEY3 = Redacted.make("1234567890")
|
|
133
|
+
*
|
|
134
|
+
* const equivalence = Redacted.getEquivalence(Equivalence.string)
|
|
135
|
+
*
|
|
136
|
+
* assert.equal(equivalence(API_KEY1, API_KEY2), false)
|
|
137
|
+
* assert.equal(equivalence(API_KEY1, API_KEY3), true)
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* @category equivalence
|
|
141
|
+
* @since 3.3.0
|
|
142
|
+
*/
|
|
143
|
+
export const getEquivalence = <A>(isEquivalent: Equivalence.Equivalence<A>): Equivalence.Equivalence<Redacted<A>> =>
|
|
144
|
+
Equivalence.make((x, y) => isEquivalent(value(x), value(y)))
|