@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/Clock.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Context from "./Context.js"
|
|
5
|
+
import type * as Duration from "./Duration.js"
|
|
6
|
+
import type * as Effect from "./Effect.js"
|
|
7
|
+
import * as internal from "./internal/clock.js"
|
|
8
|
+
import * as defaultServices from "./internal/defaultServices.js"
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @since 2.0.0
|
|
12
|
+
* @category symbols
|
|
13
|
+
*/
|
|
14
|
+
export const ClockTypeId: unique symbol = internal.ClockTypeId
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 2.0.0
|
|
18
|
+
* @category symbols
|
|
19
|
+
*/
|
|
20
|
+
export type ClockTypeId = typeof ClockTypeId
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Represents a time-based clock which provides functionality related to time
|
|
24
|
+
* and scheduling.
|
|
25
|
+
*
|
|
26
|
+
* @since 2.0.0
|
|
27
|
+
* @category models
|
|
28
|
+
*/
|
|
29
|
+
export interface Clock {
|
|
30
|
+
readonly [ClockTypeId]: ClockTypeId
|
|
31
|
+
/**
|
|
32
|
+
* Unsafely returns the current time in milliseconds.
|
|
33
|
+
*/
|
|
34
|
+
unsafeCurrentTimeMillis(): number
|
|
35
|
+
/**
|
|
36
|
+
* Returns the current time in milliseconds.
|
|
37
|
+
*/
|
|
38
|
+
readonly currentTimeMillis: Effect.Effect<number>
|
|
39
|
+
/**
|
|
40
|
+
* Unsafely returns the current time in nanoseconds.
|
|
41
|
+
*/
|
|
42
|
+
unsafeCurrentTimeNanos(): bigint
|
|
43
|
+
/**
|
|
44
|
+
* Returns the current time in nanoseconds.
|
|
45
|
+
*/
|
|
46
|
+
readonly currentTimeNanos: Effect.Effect<bigint>
|
|
47
|
+
/**
|
|
48
|
+
* Asynchronously sleeps for the specified duration.
|
|
49
|
+
*/
|
|
50
|
+
sleep(duration: Duration.Duration): Effect.Effect<void>
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @since 2.0.0
|
|
55
|
+
* @category models
|
|
56
|
+
*/
|
|
57
|
+
export type CancelToken = () => boolean
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @since 2.0.0
|
|
61
|
+
* @category models
|
|
62
|
+
*/
|
|
63
|
+
export type Task = () => void
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @since 2.0.0
|
|
67
|
+
* @category models
|
|
68
|
+
*/
|
|
69
|
+
export interface ClockScheduler {
|
|
70
|
+
/**
|
|
71
|
+
* Unsafely schedules the specified task for the specified duration.
|
|
72
|
+
*/
|
|
73
|
+
unsafeSchedule(task: Task, duration: Duration.Duration): CancelToken
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @since 2.0.0
|
|
78
|
+
* @category constructors
|
|
79
|
+
*/
|
|
80
|
+
export const make: (_: void) => Clock = internal.make
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @since 2.0.0
|
|
84
|
+
* @category constructors
|
|
85
|
+
*/
|
|
86
|
+
export const sleep: (duration: Duration.DurationInput) => Effect.Effect<void> = defaultServices.sleep
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @since 2.0.0
|
|
90
|
+
* @category constructors
|
|
91
|
+
*/
|
|
92
|
+
export const currentTimeMillis: Effect.Effect<number> = defaultServices.currentTimeMillis
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @since 2.0.0
|
|
96
|
+
* @category constructors
|
|
97
|
+
*/
|
|
98
|
+
export const currentTimeNanos: Effect.Effect<bigint> = defaultServices.currentTimeNanos
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @since 2.0.0
|
|
102
|
+
* @category constructors
|
|
103
|
+
*/
|
|
104
|
+
export const clockWith: <A, E, R>(f: (clock: Clock) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> =
|
|
105
|
+
defaultServices.clockWith
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @since 2.0.0
|
|
109
|
+
* @category context
|
|
110
|
+
*/
|
|
111
|
+
export const Clock: Context.Tag<Clock, Clock> = internal.clockTag
|
package/src/Config.ts
ADDED
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 2.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Brand from "./Brand.js"
|
|
5
|
+
import type * as Chunk from "./Chunk.js"
|
|
6
|
+
import type * as ConfigError from "./ConfigError.js"
|
|
7
|
+
import type * as Duration from "./Duration.js"
|
|
8
|
+
import type * as Effect from "./Effect.js"
|
|
9
|
+
import type * as Either from "./Either.js"
|
|
10
|
+
import type { LazyArg } from "./Function.js"
|
|
11
|
+
import type * as HashMap from "./HashMap.js"
|
|
12
|
+
import type * as HashSet from "./HashSet.js"
|
|
13
|
+
import * as internal from "./internal/config.js"
|
|
14
|
+
import type * as LogLevel from "./LogLevel.js"
|
|
15
|
+
import type * as Option from "./Option.js"
|
|
16
|
+
import type { Predicate, Refinement } from "./Predicate.js"
|
|
17
|
+
import type * as Redacted from "./Redacted.js"
|
|
18
|
+
import type * as Secret from "./Secret.js"
|
|
19
|
+
import type * as Types from "./Types.js"
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 2.0.0
|
|
23
|
+
* @category symbols
|
|
24
|
+
*/
|
|
25
|
+
export const ConfigTypeId: unique symbol = internal.ConfigTypeId
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @since 2.0.0
|
|
29
|
+
* @category symbols
|
|
30
|
+
*/
|
|
31
|
+
export type ConfigTypeId = typeof ConfigTypeId
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A `Config` describes the structure of some configuration data.
|
|
35
|
+
*
|
|
36
|
+
* @since 2.0.0
|
|
37
|
+
* @category models
|
|
38
|
+
*/
|
|
39
|
+
export interface Config<out A> extends Config.Variance<A>, Effect.Effect<A, ConfigError.ConfigError> {}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @since 2.0.0
|
|
43
|
+
*/
|
|
44
|
+
export declare namespace Config {
|
|
45
|
+
/**
|
|
46
|
+
* @since 2.0.0
|
|
47
|
+
* @category models
|
|
48
|
+
*/
|
|
49
|
+
export interface Variance<out A> {
|
|
50
|
+
readonly [ConfigTypeId]: {
|
|
51
|
+
readonly _A: Types.Covariant<A>
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @since 2.5.0
|
|
57
|
+
* @category models
|
|
58
|
+
*/
|
|
59
|
+
export type Success<T extends Config<any>> = [T] extends [Config<infer _A>] ? _A : never
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @since 2.0.0
|
|
63
|
+
* @category models
|
|
64
|
+
*/
|
|
65
|
+
export interface Primitive<out A> extends Config<A> {
|
|
66
|
+
readonly description: string
|
|
67
|
+
parse(text: string): Either.Either<A, ConfigError.ConfigError>
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Wraps a nested structure, converting all primitives to a `Config`.
|
|
72
|
+
*
|
|
73
|
+
* `Config.Wrap<{ key: string }>` becomes `{ key: Config<string> }`
|
|
74
|
+
*
|
|
75
|
+
* To create the resulting config, use the `unwrap` constructor.
|
|
76
|
+
*
|
|
77
|
+
* @since 2.0.0
|
|
78
|
+
* @category models
|
|
79
|
+
*/
|
|
80
|
+
export type Wrap<A> = [NonNullable<A>] extends [infer T] ? [IsPlainObject<T>] extends [true] ?
|
|
81
|
+
| { readonly [K in keyof A]: Wrap<A[K]> }
|
|
82
|
+
| Config<A>
|
|
83
|
+
: Config<A>
|
|
84
|
+
: Config<A>
|
|
85
|
+
|
|
86
|
+
type IsPlainObject<A> = [A] extends [Record<string, any>]
|
|
87
|
+
? [keyof A] extends [never] ? false : [keyof A] extends [string] ? true : false
|
|
88
|
+
: false
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @since 2.0.0
|
|
93
|
+
* @category models
|
|
94
|
+
*/
|
|
95
|
+
export type LiteralValue = string | number | boolean | null | bigint
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Constructs a config from a tuple / struct / arguments of configs.
|
|
99
|
+
*
|
|
100
|
+
* @since 2.0.0
|
|
101
|
+
* @category constructors
|
|
102
|
+
*/
|
|
103
|
+
export const all: <const Arg extends Iterable<Config<any>> | Record<string, Config<any>>>(
|
|
104
|
+
arg: Arg
|
|
105
|
+
) => Config<
|
|
106
|
+
[Arg] extends [ReadonlyArray<Config<any>>] ? {
|
|
107
|
+
-readonly [K in keyof Arg]: [Arg[K]] extends [Config<infer A>] ? A : never
|
|
108
|
+
}
|
|
109
|
+
: [Arg] extends [Iterable<Config<infer A>>] ? Array<A>
|
|
110
|
+
: [Arg] extends [Record<string, Config<any>>] ? {
|
|
111
|
+
-readonly [K in keyof Arg]: [Arg[K]] extends [Config<infer A>] ? A : never
|
|
112
|
+
}
|
|
113
|
+
: never
|
|
114
|
+
> = internal.all
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Constructs a config for an array of values.
|
|
118
|
+
*
|
|
119
|
+
* @since 2.0.0
|
|
120
|
+
* @category constructors
|
|
121
|
+
*/
|
|
122
|
+
export const array: <A>(config: Config<A>, name?: string) => Config<Array<A>> = internal.array
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Constructs a config for a boolean value.
|
|
126
|
+
*
|
|
127
|
+
* @since 2.0.0
|
|
128
|
+
* @category constructors
|
|
129
|
+
*/
|
|
130
|
+
export const boolean: (name?: string) => Config<boolean> = internal.boolean
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Constructs a config for a network port [1, 65535].
|
|
134
|
+
*
|
|
135
|
+
* @since 3.16.0
|
|
136
|
+
* @category constructors
|
|
137
|
+
*/
|
|
138
|
+
export const port: (name?: string) => Config<number> = internal.port
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Constructs a config for an URL value.
|
|
142
|
+
*
|
|
143
|
+
* @since 3.11.0
|
|
144
|
+
* @category constructors
|
|
145
|
+
*/
|
|
146
|
+
export const url: (name?: string) => Config<URL> = internal.url
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Constructs a config for a sequence of values.
|
|
150
|
+
*
|
|
151
|
+
* @since 2.0.0
|
|
152
|
+
* @category constructors
|
|
153
|
+
*/
|
|
154
|
+
export const chunk: <A>(config: Config<A>, name?: string) => Config<Chunk.Chunk<A>> = internal.chunk
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Constructs a config for a date value.
|
|
158
|
+
*
|
|
159
|
+
* @since 2.0.0
|
|
160
|
+
* @category constructors
|
|
161
|
+
*/
|
|
162
|
+
export const date: (name?: string) => Config<Date> = internal.date
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Constructs a config that fails with the specified message.
|
|
166
|
+
*
|
|
167
|
+
* @since 2.0.0
|
|
168
|
+
* @category constructors
|
|
169
|
+
*/
|
|
170
|
+
export const fail: (message: string) => Config<never> = internal.fail
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Constructs a config for a float value.
|
|
174
|
+
*
|
|
175
|
+
* @since 2.0.0
|
|
176
|
+
* @category constructors
|
|
177
|
+
*/
|
|
178
|
+
export const number: (name?: string) => Config<number> = internal.number
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Constructs a config for a integer value.
|
|
182
|
+
*
|
|
183
|
+
* @since 2.0.0
|
|
184
|
+
* @category constructors
|
|
185
|
+
*/
|
|
186
|
+
export const integer: (name?: string) => Config<number> = internal.integer
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Constructs a config for a literal value.
|
|
190
|
+
*
|
|
191
|
+
* **Example**
|
|
192
|
+
*
|
|
193
|
+
* ```ts
|
|
194
|
+
* import { Config } from "effect"
|
|
195
|
+
*
|
|
196
|
+
* const config = Config.literal("http", "https")("PROTOCOL")
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* @since 2.0.0
|
|
200
|
+
* @category constructors
|
|
201
|
+
*/
|
|
202
|
+
export const literal: <Literals extends ReadonlyArray<LiteralValue>>(...literals: Literals) => (
|
|
203
|
+
name?: string
|
|
204
|
+
) => Config<Literals[number]> = internal.literal
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Constructs a config for a `LogLevel` value.
|
|
208
|
+
*
|
|
209
|
+
* @since 2.0.0
|
|
210
|
+
* @category constructors
|
|
211
|
+
*/
|
|
212
|
+
export const logLevel: (name?: string) => Config<LogLevel.LogLevel> = internal.logLevel
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Constructs a config for a duration value.
|
|
216
|
+
*
|
|
217
|
+
* @since 2.5.0
|
|
218
|
+
* @category constructors
|
|
219
|
+
*/
|
|
220
|
+
export const duration: (name?: string) => Config<Duration.Duration> = internal.duration
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* This function returns `true` if the specified value is an `Config` value,
|
|
224
|
+
* `false` otherwise.
|
|
225
|
+
*
|
|
226
|
+
* This function can be useful for checking the type of a value before
|
|
227
|
+
* attempting to operate on it as an `Config` value. For example, you could
|
|
228
|
+
* use `isConfig` to check the type of a value before using it as an
|
|
229
|
+
* argument to a function that expects an `Config` value.
|
|
230
|
+
*
|
|
231
|
+
* @since 2.0.0
|
|
232
|
+
* @category refinements
|
|
233
|
+
*/
|
|
234
|
+
export const isConfig: (u: unknown) => u is Config<unknown> = internal.isConfig
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Returns a config whose structure is the same as this one, but which produces
|
|
238
|
+
* a different value, constructed using the specified function.
|
|
239
|
+
*
|
|
240
|
+
* @since 2.0.0
|
|
241
|
+
* @category mapping
|
|
242
|
+
*/
|
|
243
|
+
export const map: {
|
|
244
|
+
<A, B>(f: (a: A) => B): (self: Config<A>) => Config<B>
|
|
245
|
+
<A, B>(self: Config<A>, f: (a: A) => B): Config<B>
|
|
246
|
+
} = internal.map
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Returns a config whose structure is the same as this one, but which may
|
|
250
|
+
* produce a different value, constructed using the specified function, which
|
|
251
|
+
* may throw exceptions that will be translated into validation errors.
|
|
252
|
+
*
|
|
253
|
+
* @since 2.0.0
|
|
254
|
+
* @category utils
|
|
255
|
+
*/
|
|
256
|
+
export const mapAttempt: {
|
|
257
|
+
<A, B>(f: (a: A) => B): (self: Config<A>) => Config<B>
|
|
258
|
+
<A, B>(self: Config<A>, f: (a: A) => B): Config<B>
|
|
259
|
+
} = internal.mapAttempt
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Returns a new config whose structure is the samea as this one, but which
|
|
263
|
+
* may produce a different value, constructed using the specified fallible
|
|
264
|
+
* function.
|
|
265
|
+
*
|
|
266
|
+
* @since 2.0.0
|
|
267
|
+
* @category utils
|
|
268
|
+
*/
|
|
269
|
+
export const mapOrFail: {
|
|
270
|
+
<A, B>(f: (a: A) => Either.Either<B, ConfigError.ConfigError>): (self: Config<A>) => Config<B>
|
|
271
|
+
<A, B>(self: Config<A>, f: (a: A) => Either.Either<B, ConfigError.ConfigError>): Config<B>
|
|
272
|
+
} = internal.mapOrFail
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Returns a config that has this configuration nested as a property of the
|
|
276
|
+
* specified name.
|
|
277
|
+
*
|
|
278
|
+
* @since 2.0.0
|
|
279
|
+
* @category utils
|
|
280
|
+
*/
|
|
281
|
+
export const nested: {
|
|
282
|
+
(name: string): <A>(self: Config<A>) => Config<A>
|
|
283
|
+
<A>(self: Config<A>, name: string): Config<A>
|
|
284
|
+
} = internal.nested
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Returns a config whose structure is preferentially described by this
|
|
288
|
+
* config, but which falls back to the specified config if there is an issue
|
|
289
|
+
* reading from this config.
|
|
290
|
+
*
|
|
291
|
+
* @since 2.0.0
|
|
292
|
+
* @category utils
|
|
293
|
+
*/
|
|
294
|
+
export const orElse: {
|
|
295
|
+
<A2>(that: LazyArg<Config<A2>>): <A>(self: Config<A>) => Config<A2 | A>
|
|
296
|
+
<A, A2>(self: Config<A>, that: LazyArg<Config<A2>>): Config<A | A2>
|
|
297
|
+
} = internal.orElse
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Returns configuration which reads from this configuration, but which falls
|
|
301
|
+
* back to the specified configuration if reading from this configuration
|
|
302
|
+
* fails with an error satisfying the specified predicate.
|
|
303
|
+
*
|
|
304
|
+
* @since 2.0.0
|
|
305
|
+
* @category utils
|
|
306
|
+
*/
|
|
307
|
+
export const orElseIf: {
|
|
308
|
+
<A2>(
|
|
309
|
+
options: {
|
|
310
|
+
readonly if: Predicate<ConfigError.ConfigError>
|
|
311
|
+
readonly orElse: LazyArg<Config<A2>>
|
|
312
|
+
}
|
|
313
|
+
): <A>(self: Config<A>) => Config<A | A2>
|
|
314
|
+
<A, A2>(
|
|
315
|
+
self: Config<A>,
|
|
316
|
+
options: {
|
|
317
|
+
readonly if: Predicate<ConfigError.ConfigError>
|
|
318
|
+
readonly orElse: LazyArg<Config<A2>>
|
|
319
|
+
}
|
|
320
|
+
): Config<A | A2>
|
|
321
|
+
} = internal.orElseIf
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Returns an optional version of this config, which will be `None` if the
|
|
325
|
+
* data is missing from configuration, and `Some` otherwise.
|
|
326
|
+
*
|
|
327
|
+
* @since 2.0.0
|
|
328
|
+
* @category utils
|
|
329
|
+
*/
|
|
330
|
+
export const option: <A>(self: Config<A>) => Config<Option.Option<A>> = internal.option
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Constructs a new primitive config.
|
|
334
|
+
*
|
|
335
|
+
* @since 2.0.0
|
|
336
|
+
* @category constructors
|
|
337
|
+
*/
|
|
338
|
+
export const primitive: <A>(
|
|
339
|
+
description: string,
|
|
340
|
+
parse: (text: string) => Either.Either<A, ConfigError.ConfigError>
|
|
341
|
+
) => Config<A> = internal.primitive
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Returns a config that describes a sequence of values, each of which has the
|
|
345
|
+
* structure of this config.
|
|
346
|
+
*
|
|
347
|
+
* @since 2.0.0
|
|
348
|
+
* @category utils
|
|
349
|
+
*/
|
|
350
|
+
export const repeat: <A>(self: Config<A>) => Config<Array<A>> = internal.repeat
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Constructs a config for a secret value.
|
|
354
|
+
*
|
|
355
|
+
* @since 2.0.0
|
|
356
|
+
* @category constructors
|
|
357
|
+
* @deprecated
|
|
358
|
+
*/
|
|
359
|
+
export const secret: (name?: string) => Config<Secret.Secret> = internal.secret
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Constructs a config for a redacted value.
|
|
363
|
+
*
|
|
364
|
+
* @since 2.0.0
|
|
365
|
+
* @category constructors
|
|
366
|
+
*/
|
|
367
|
+
export const redacted: {
|
|
368
|
+
(name?: string): Config<Redacted.Redacted>
|
|
369
|
+
<A>(config: Config<A>): Config<Redacted.Redacted<A>>
|
|
370
|
+
} = internal.redacted
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Constructs a config for a branded value.
|
|
374
|
+
*
|
|
375
|
+
* @since 3.16.0
|
|
376
|
+
* @category constructors
|
|
377
|
+
*/
|
|
378
|
+
export const branded: {
|
|
379
|
+
<A, B extends Brand.Branded<A, any>>(
|
|
380
|
+
constructor: Brand.Brand.Constructor<B>
|
|
381
|
+
): (config: Config<A>) => Config<B>
|
|
382
|
+
<B extends Brand.Branded<string, any>>(
|
|
383
|
+
name: string | undefined,
|
|
384
|
+
constructor: Brand.Brand.Constructor<B>
|
|
385
|
+
): Config<B>
|
|
386
|
+
<A, B extends Brand.Branded<A, any>>(
|
|
387
|
+
config: Config<A>,
|
|
388
|
+
constructor: Brand.Brand.Constructor<B>
|
|
389
|
+
): Config<B>
|
|
390
|
+
} = internal.branded
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Constructs a config for a sequence of values.
|
|
394
|
+
*
|
|
395
|
+
* @since 2.0.0
|
|
396
|
+
* @category constructors
|
|
397
|
+
*/
|
|
398
|
+
export const hashSet: <A>(config: Config<A>, name?: string) => Config<HashSet.HashSet<A>> = internal.hashSet
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Constructs a config for a string value.
|
|
402
|
+
*
|
|
403
|
+
* @since 2.0.0
|
|
404
|
+
* @category constructors
|
|
405
|
+
*/
|
|
406
|
+
export const string: (name?: string) => Config<string> = internal.string
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Constructs a config for a non-empty string value.
|
|
410
|
+
*
|
|
411
|
+
* @since 3.7.0
|
|
412
|
+
* @category constructors
|
|
413
|
+
*/
|
|
414
|
+
export const nonEmptyString: (name?: string) => Config<string> = internal.nonEmptyString
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Constructs a config which contains the specified value.
|
|
418
|
+
*
|
|
419
|
+
* @since 2.0.0
|
|
420
|
+
* @category constructors
|
|
421
|
+
*/
|
|
422
|
+
export const succeed: <A>(value: A) => Config<A> = internal.succeed
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Lazily constructs a config.
|
|
426
|
+
*
|
|
427
|
+
* @since 2.0.0
|
|
428
|
+
* @category constructors
|
|
429
|
+
*/
|
|
430
|
+
export const suspend: <A>(config: LazyArg<Config<A>>) => Config<A> = internal.suspend
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Constructs a config which contains the specified lazy value.
|
|
434
|
+
*
|
|
435
|
+
* @since 2.0.0
|
|
436
|
+
* @category constructors
|
|
437
|
+
*/
|
|
438
|
+
export const sync: <A>(value: LazyArg<A>) => Config<A> = internal.sync
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Constructs a config for a sequence of values.
|
|
442
|
+
*
|
|
443
|
+
* @since 2.0.0
|
|
444
|
+
* @category constructors
|
|
445
|
+
*/
|
|
446
|
+
export const hashMap: <A>(config: Config<A>, name?: string) => Config<HashMap.HashMap<string, A>> = internal.hashMap
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Constructs a config from some configuration wrapped with the `Wrap<A>` utility type.
|
|
450
|
+
*
|
|
451
|
+
* For example:
|
|
452
|
+
*
|
|
453
|
+
* ```
|
|
454
|
+
* import { Config, unwrap } from "./Config"
|
|
455
|
+
*
|
|
456
|
+
* interface Options { key: string }
|
|
457
|
+
*
|
|
458
|
+
* const makeConfig = (config: Config.Wrap<Options>): Config<Options> => unwrap(config)
|
|
459
|
+
* ```
|
|
460
|
+
*
|
|
461
|
+
* @since 2.0.0
|
|
462
|
+
* @category constructors
|
|
463
|
+
*/
|
|
464
|
+
export const unwrap: <A>(wrapped: Config.Wrap<A>) => Config<A> = internal.unwrap
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* Returns a config that describes the same structure as this one, but which
|
|
468
|
+
* performs validation during loading.
|
|
469
|
+
*
|
|
470
|
+
* @since 2.0.0
|
|
471
|
+
* @category utils
|
|
472
|
+
*/
|
|
473
|
+
export const validate: {
|
|
474
|
+
<A, B extends A>(
|
|
475
|
+
options: {
|
|
476
|
+
readonly message: string
|
|
477
|
+
readonly validation: Refinement<A, B>
|
|
478
|
+
}
|
|
479
|
+
): (self: Config<A>) => Config<B>
|
|
480
|
+
<A>(options: {
|
|
481
|
+
readonly message: string
|
|
482
|
+
readonly validation: Predicate<A>
|
|
483
|
+
}): (self: Config<A>) => Config<A>
|
|
484
|
+
<A, B extends A>(
|
|
485
|
+
self: Config<A>,
|
|
486
|
+
options: {
|
|
487
|
+
readonly message: string
|
|
488
|
+
readonly validation: Refinement<A, B>
|
|
489
|
+
}
|
|
490
|
+
): Config<B>
|
|
491
|
+
<A>(self: Config<A>, options: {
|
|
492
|
+
readonly message: string
|
|
493
|
+
readonly validation: Predicate<A>
|
|
494
|
+
}): Config<A>
|
|
495
|
+
} = internal.validate
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* Returns a config that describes the same structure as this one, but has the
|
|
499
|
+
* specified default value in case the information cannot be found.
|
|
500
|
+
*
|
|
501
|
+
* @since 2.0.0
|
|
502
|
+
* @category utils
|
|
503
|
+
*/
|
|
504
|
+
export const withDefault: {
|
|
505
|
+
<const A2>(def: A2): <A>(self: Config<A>) => Config<A2 | A>
|
|
506
|
+
<A, const A2>(self: Config<A>, def: A2): Config<A | A2>
|
|
507
|
+
} = internal.withDefault
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* Adds a description to this configuration, which is intended for humans.
|
|
511
|
+
*
|
|
512
|
+
* @since 2.0.0
|
|
513
|
+
* @category utils
|
|
514
|
+
*/
|
|
515
|
+
export const withDescription: {
|
|
516
|
+
(description: string): <A>(self: Config<A>) => Config<A>
|
|
517
|
+
<A>(self: Config<A>, description: string): Config<A>
|
|
518
|
+
} = internal.withDescription
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* Returns a config that is the composition of this config and the specified
|
|
522
|
+
* config.
|
|
523
|
+
*
|
|
524
|
+
* @since 2.0.0
|
|
525
|
+
* @category zipping
|
|
526
|
+
*/
|
|
527
|
+
export const zip: {
|
|
528
|
+
<B>(that: Config<B>): <A>(self: Config<A>) => Config<[A, B]>
|
|
529
|
+
<A, B>(self: Config<A>, that: Config<B>): Config<[A, B]>
|
|
530
|
+
} = internal.zip
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Returns a config that is the composes this config and the specified config
|
|
534
|
+
* using the provided function.
|
|
535
|
+
*
|
|
536
|
+
* @since 2.0.0
|
|
537
|
+
* @category zipping
|
|
538
|
+
*/
|
|
539
|
+
export const zipWith: {
|
|
540
|
+
<B, A, C>(that: Config<B>, f: (a: A, b: B) => C): (self: Config<A>) => Config<C>
|
|
541
|
+
<A, B, C>(self: Config<A>, that: Config<B>, f: (a: A, b: B) => C): Config<C>
|
|
542
|
+
} = internal.zipWith
|