effect 4.0.0-beta.102 → 4.0.0-beta.103
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/dist/Array.d.ts +971 -1037
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +381 -407
- package/dist/Array.js.map +1 -1
- package/dist/BigDecimal.d.ts +433 -756
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +200 -325
- package/dist/BigDecimal.js.map +1 -1
- package/dist/BigInt.d.ts +207 -267
- package/dist/BigInt.d.ts.map +1 -1
- package/dist/BigInt.js +107 -135
- package/dist/BigInt.js.map +1 -1
- package/dist/Boolean.d.ts +146 -188
- package/dist/Boolean.d.ts.map +1 -1
- package/dist/Boolean.js +64 -84
- package/dist/Boolean.js.map +1 -1
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +405 -254
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +166 -101
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +167 -277
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Cause.js +122 -176
- package/dist/Cause.js.map +1 -1
- package/dist/Channel.d.ts +729 -768
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +514 -440
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +834 -1173
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +326 -439
- package/dist/Chunk.js.map +1 -1
- package/dist/Clock.d.ts +180 -49
- package/dist/Clock.d.ts.map +1 -1
- package/dist/Clock.js +96 -31
- package/dist/Clock.js.map +1 -1
- package/dist/Combiner.d.ts +20 -33
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +18 -30
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +225 -173
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +336 -265
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +194 -68
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +115 -80
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Console.d.ts +233 -33
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +232 -32
- package/dist/Console.js.map +1 -1
- package/dist/Context.d.ts +151 -274
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +171 -214
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +68 -77
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +57 -66
- package/dist/Cron.js.map +1 -1
- package/dist/Crypto.d.ts +13 -15
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +9 -10
- package/dist/Crypto.js.map +1 -1
- package/dist/Data.d.ts +60 -80
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +16 -23
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +562 -660
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +307 -362
- package/dist/DateTime.js.map +1 -1
- package/dist/Deferred.d.ts +253 -256
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/Deferred.js +104 -96
- package/dist/Deferred.js.map +1 -1
- package/dist/Duration.d.ts +216 -308
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +132 -186
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +2841 -3247
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1322 -1546
- package/dist/Effect.js.map +1 -1
- package/dist/Effectable.js.map +1 -1
- package/dist/Encoding.d.ts +22 -40
- package/dist/Encoding.d.ts.map +1 -1
- package/dist/Encoding.js +22 -40
- package/dist/Encoding.js.map +1 -1
- package/dist/Equal.d.ts +33 -37
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +29 -21
- package/dist/Equal.js.map +1 -1
- package/dist/Equivalence.d.ts +103 -105
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +77 -79
- package/dist/Equivalence.js.map +1 -1
- package/dist/ErrorReporter.d.ts +51 -27
- package/dist/ErrorReporter.d.ts.map +1 -1
- package/dist/ErrorReporter.js +50 -26
- package/dist/ErrorReporter.js.map +1 -1
- package/dist/ExecutionPlan.d.ts +13 -55
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +7 -28
- package/dist/ExecutionPlan.js.map +1 -1
- package/dist/Exit.d.ts +116 -192
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +82 -130
- package/dist/Exit.js.map +1 -1
- package/dist/Fiber.d.ts +82 -146
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js +48 -87
- package/dist/Fiber.js.map +1 -1
- package/dist/FiberHandle.d.ts +152 -105
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +106 -73
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +213 -168
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +114 -89
- package/dist/FiberMap.js.map +1 -1
- package/dist/FiberSet.d.ts +123 -81
- package/dist/FiberSet.d.ts.map +1 -1
- package/dist/FiberSet.js +85 -59
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +153 -264
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +42 -147
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +61 -33
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +26 -15
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +25 -33
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +48 -49
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +76 -145
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +40 -57
- package/dist/Function.js.map +1 -1
- package/dist/Graph.d.ts +360 -714
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +168 -297
- package/dist/Graph.js.map +1 -1
- package/dist/HKT.d.ts +12 -6
- package/dist/HKT.d.ts.map +1 -1
- package/dist/Hash.d.ts +47 -83
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +46 -68
- package/dist/Hash.js.map +1 -1
- package/dist/HashMap.d.ts +319 -411
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +122 -166
- package/dist/HashMap.js.map +1 -1
- package/dist/HashRing.d.ts.map +1 -1
- package/dist/HashRing.js +1 -0
- package/dist/HashRing.js.map +1 -1
- package/dist/HashSet.d.ts +177 -284
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js +68 -109
- package/dist/HashSet.js.map +1 -1
- package/dist/Inspectable.d.ts +12 -12
- package/dist/Inspectable.js +8 -8
- package/dist/Inspectable.js.map +1 -1
- package/dist/Iterable.d.ts +620 -786
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +228 -306
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonPatch.d.ts +11 -13
- package/dist/JsonPatch.d.ts.map +1 -1
- package/dist/JsonPatch.js +44 -102
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonPointer.d.ts +8 -8
- package/dist/JsonPointer.js +8 -8
- package/dist/JsonPointer.js.map +1 -1
- package/dist/JsonSchema.d.ts +98 -44
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +297 -234
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +23 -35
- package/dist/Latch.d.ts.map +1 -1
- package/dist/Latch.js +16 -28
- package/dist/Latch.js.map +1 -1
- package/dist/Layer.d.ts +359 -260
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +195 -175
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +42 -29
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +31 -21
- package/dist/LayerMap.js.map +1 -1
- package/dist/LayerRef.d.ts +6 -2
- package/dist/LayerRef.d.ts.map +1 -1
- package/dist/LayerRef.js +6 -2
- package/dist/LayerRef.js.map +1 -1
- package/dist/LogLevel.d.ts +114 -214
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +41 -76
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +218 -467
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +204 -450
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +7 -5
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +7 -5
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Match.d.ts +217 -252
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +150 -183
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +442 -993
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +198 -642
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts +144 -173
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js +68 -79
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/MutableHashSet.d.ts +84 -89
- package/dist/MutableHashSet.d.ts.map +1 -1
- package/dist/MutableHashSet.js +44 -47
- package/dist/MutableHashSet.js.map +1 -1
- package/dist/MutableList.d.ts +71 -370
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +59 -284
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts +420 -243
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +209 -120
- package/dist/MutableRef.js.map +1 -1
- package/dist/Newtype.d.ts +21 -14
- package/dist/Newtype.d.ts.map +1 -1
- package/dist/Newtype.js +15 -13
- package/dist/Newtype.js.map +1 -1
- package/dist/NonEmptyIterable.d.ts +7 -137
- package/dist/NonEmptyIterable.d.ts.map +1 -1
- package/dist/NonEmptyIterable.js +5 -93
- package/dist/NonEmptyIterable.js.map +1 -1
- package/dist/Number.d.ts +196 -233
- package/dist/Number.d.ts.map +1 -1
- package/dist/Number.js +90 -109
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts +97 -189
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +187 -290
- package/dist/Optic.js.map +1 -1
- package/dist/Option.d.ts +447 -812
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +211 -392
- package/dist/Option.js.map +1 -1
- package/dist/Order.d.ts +109 -109
- package/dist/Order.js +91 -91
- package/dist/Order.js.map +1 -1
- package/dist/Ordering.d.ts +20 -23
- package/dist/Ordering.d.ts.map +1 -1
- package/dist/Ordering.js +8 -9
- package/dist/Ordering.js.map +1 -1
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Path.d.ts +38 -41
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +3 -4
- package/dist/Path.js.map +1 -1
- package/dist/Pipeable.d.ts +6 -5
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +2 -2
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +4 -4
- package/dist/PlatformError.js +3 -3
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +4 -2
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +4 -2
- package/dist/Pool.js.map +1 -1
- package/dist/Predicate.d.ts +200 -181
- package/dist/Predicate.d.ts.map +1 -1
- package/dist/Predicate.js +100 -108
- package/dist/Predicate.js.map +1 -1
- package/dist/PrimaryKey.d.ts +7 -7
- package/dist/PrimaryKey.js +5 -5
- package/dist/PrimaryKey.js.map +1 -1
- package/dist/PubSub.d.ts +425 -494
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +373 -362
- package/dist/PubSub.js.map +1 -1
- package/dist/Pull.d.ts +24 -18
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +11 -9
- package/dist/Pull.js.map +1 -1
- package/dist/Queue.d.ts +200 -159
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +162 -132
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +49 -74
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +35 -54
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +121 -63
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +42 -21
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +24 -13
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/RcRef.js +15 -9
- package/dist/RcRef.js.map +1 -1
- package/dist/Record.d.ts +291 -488
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +111 -202
- package/dist/Record.js.map +1 -1
- package/dist/Redactable.d.ts +6 -2
- package/dist/Redactable.d.ts.map +1 -1
- package/dist/Redactable.js +7 -2
- package/dist/Redactable.js.map +1 -1
- package/dist/Redacted.d.ts +25 -25
- package/dist/Redacted.d.ts.map +1 -1
- package/dist/Redacted.js +19 -20
- package/dist/Redacted.js.map +1 -1
- package/dist/Reducer.d.ts +8 -15
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +6 -12
- package/dist/Reducer.js.map +1 -1
- package/dist/Ref.d.ts +95 -165
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +75 -122
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +102 -168
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +102 -168
- package/dist/References.js.map +1 -1
- package/dist/RegExp.d.ts +10 -14
- package/dist/RegExp.d.ts.map +1 -1
- package/dist/RegExp.js +10 -14
- package/dist/RegExp.js.map +1 -1
- package/dist/Request.d.ts +31 -21
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +16 -13
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +201 -90
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +87 -41
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Result.d.ts +302 -470
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +133 -217
- package/dist/Result.js.map +1 -1
- package/dist/Runtime.d.ts +50 -75
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +39 -60
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +290 -1636
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +162 -803
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +5 -5
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +18 -6
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +644 -642
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +491 -527
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +27 -50
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +366 -279
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaError.d.ts +7 -6
- package/dist/SchemaError.d.ts.map +1 -1
- package/dist/SchemaError.js +7 -6
- package/dist/SchemaError.js.map +1 -1
- package/dist/SchemaGetter.d.ts +217 -174
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +218 -185
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +62 -190
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +73 -265
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +2 -2
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +123 -75
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +22 -36
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +20 -26
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +114 -74
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +120 -85
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +123 -151
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +72 -92
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/ScopedRef.d.ts +3 -3
- package/dist/ScopedRef.js +2 -2
- package/dist/ScopedRef.js.map +1 -1
- package/dist/Semaphore.d.ts +96 -10
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +78 -39
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts +117 -107
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +107 -100
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +1 -1
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +2415 -2949
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +1078 -1381
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +262 -308
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +184 -215
- package/dist/String.js.map +1 -1
- package/dist/Struct.d.ts +109 -114
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +41 -50
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +282 -250
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +104 -92
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/Symbol.d.ts +3 -3
- package/dist/Symbol.js +3 -3
- package/dist/Symbol.js.map +1 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Take.js.map +1 -1
- package/dist/Terminal.d.ts +2 -2
- package/dist/Terminal.js +1 -1
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +100 -54
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +41 -24
- package/dist/Tracer.js.map +1 -1
- package/dist/Trie.d.ts +287 -679
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +109 -251
- package/dist/Trie.js.map +1 -1
- package/dist/Tuple.d.ts +92 -127
- package/dist/Tuple.d.ts.map +1 -1
- package/dist/Tuple.js +42 -57
- package/dist/Tuple.js.map +1 -1
- package/dist/TxChunk.d.ts +201 -121
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +85 -56
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +62 -46
- package/dist/TxDeferred.d.ts.map +1 -1
- package/dist/TxDeferred.js +30 -22
- package/dist/TxDeferred.js.map +1 -1
- package/dist/TxHashMap.d.ts +631 -779
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +268 -330
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +297 -236
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +130 -100
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +126 -95
- package/dist/TxPriorityQueue.d.ts.map +1 -1
- package/dist/TxPriorityQueue.js +74 -56
- package/dist/TxPriorityQueue.js.map +1 -1
- package/dist/TxPubSub.d.ts +101 -88
- package/dist/TxPubSub.d.ts.map +1 -1
- package/dist/TxPubSub.js +87 -66
- package/dist/TxPubSub.js.map +1 -1
- package/dist/TxQueue.d.ts +200 -180
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +160 -136
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +97 -66
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +67 -45
- package/dist/TxReentrantLock.js.map +1 -1
- package/dist/TxRef.d.ts +51 -32
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +23 -15
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +129 -95
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +85 -70
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +97 -70
- package/dist/TxSubscriptionRef.d.ts.map +1 -1
- package/dist/TxSubscriptionRef.js +44 -34
- package/dist/TxSubscriptionRef.js.map +1 -1
- package/dist/Types.d.ts +126 -67
- package/dist/Types.d.ts.map +1 -1
- package/dist/UndefinedOr.js.map +1 -1
- package/dist/Unify.d.ts +45 -65
- package/dist/Unify.d.ts.map +1 -1
- package/dist/Unify.js +6 -9
- package/dist/Unify.js.map +1 -1
- package/dist/Utils.d.ts +23 -16
- package/dist/Utils.d.ts.map +1 -1
- package/dist/Utils.js +3 -7
- package/dist/Utils.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/array.js.map +1 -1
- package/dist/internal/core.js +1 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +4 -0
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/doNotation.js.map +1 -1
- package/dist/internal/effect.js +77 -40
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/executionPlan.js.map +1 -1
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hashSet.js.map +1 -1
- package/dist/internal/layer.js.map +1 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/metric.js.map +1 -1
- package/dist/internal/option.js.map +1 -1
- package/dist/internal/persistence.d.ts +2 -0
- package/dist/internal/persistence.d.ts.map +1 -0
- package/dist/internal/persistence.js +3 -0
- package/dist/internal/persistence.js.map +1 -0
- package/dist/internal/random.js.map +1 -1
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/redacted.js.map +1 -1
- package/dist/internal/references.js +3 -0
- package/dist/internal/references.js.map +1 -1
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/result.js.map +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/cause.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +13 -11
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +8 -15
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/parser.d.ts +14 -0
- package/dist/internal/schema/parser.d.ts.map +1 -0
- package/dist/internal/schema/parser.js +13 -0
- package/dist/internal/schema/parser.js.map +1 -0
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/toArbitrary.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toEquivalence.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +48 -6
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +87 -107
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/stackTraceLimit.js.map +1 -1
- package/dist/internal/stream.js.map +1 -1
- package/dist/internal/tracer.js.map +1 -1
- package/dist/internal/trie.js +13 -9
- package/dist/internal/trie.js.map +1 -1
- package/dist/testing/FastCheck.d.ts +8 -7
- package/dist/testing/FastCheck.d.ts.map +1 -1
- package/dist/testing/FastCheck.js +8 -7
- package/dist/testing/FastCheck.js.map +1 -1
- package/dist/testing/TestClock.d.ts +57 -28
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +50 -18
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestConsole.d.ts +32 -31
- package/dist/testing/TestConsole.d.ts.map +1 -1
- package/dist/testing/TestConsole.js +24 -22
- package/dist/testing/TestConsole.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +29 -29
- package/dist/testing/TestSchema.js +25 -25
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +95 -118
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +94 -117
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +132 -97
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +55 -51
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
- package/dist/unstable/ai/IdGenerator.d.ts +32 -28
- package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
- package/dist/unstable/ai/IdGenerator.js +26 -21
- package/dist/unstable/ai/IdGenerator.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +107 -67
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +104 -64
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpProtocol.d.ts +30 -0
- package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/McpProtocol.js +20 -0
- package/dist/unstable/ai/McpProtocol.js.map +1 -0
- package/dist/unstable/ai/McpSchema.d.ts +141 -75
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +58 -50
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +68 -59
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +694 -241
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +8 -19
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +9 -20
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +112 -38
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +53 -17
- package/dist/unstable/ai/Prompt.js.map +1 -1
- package/dist/unstable/ai/Response.d.ts +28 -14
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +9 -4
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
- package/dist/unstable/ai/Telemetry.d.ts +46 -13
- package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
- package/dist/unstable/ai/Telemetry.js +18 -7
- package/dist/unstable/ai/Telemetry.js.map +1 -1
- package/dist/unstable/ai/Tokenizer.d.ts +14 -3
- package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
- package/dist/unstable/ai/Tokenizer.js +10 -2
- package/dist/unstable/ai/Tokenizer.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +59 -44
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +48 -39
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +26 -8
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +18 -4
- package/dist/unstable/ai/Toolkit.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +4 -0
- package/dist/unstable/ai/index.d.ts.map +1 -1
- package/dist/unstable/ai/index.js +4 -0
- package/dist/unstable/ai/index.js.map +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
- package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
- package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
- package/dist/unstable/ai/internal/structured-output.js +14 -15
- package/dist/unstable/ai/internal/structured-output.js.map +1 -1
- package/dist/unstable/cli/Argument.d.ts +273 -69
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js +111 -33
- package/dist/unstable/cli/Argument.js.map +1 -1
- package/dist/unstable/cli/CliConfig.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +69 -76
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +57 -61
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/CliOutput.d.ts +35 -54
- package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
- package/dist/unstable/cli/CliOutput.js +26 -42
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +705 -107
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +238 -42
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/Completions.js.map +1 -1
- package/dist/unstable/cli/Flag.d.ts +418 -138
- package/dist/unstable/cli/Flag.d.ts.map +1 -1
- package/dist/unstable/cli/Flag.js +197 -71
- package/dist/unstable/cli/Flag.js.map +1 -1
- package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
- package/dist/unstable/cli/GlobalFlag.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +12 -4
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Param.d.ts +292 -78
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +128 -46
- package/dist/unstable/cli/Param.js.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts +370 -149
- package/dist/unstable/cli/Primitive.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.js +344 -136
- package/dist/unstable/cli/Primitive.js.map +1 -1
- package/dist/unstable/cli/Prompt.d.ts +23 -14
- package/dist/unstable/cli/Prompt.d.ts.map +1 -1
- package/dist/unstable/cli/Prompt.js +23 -14
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/index.js.map +1 -1
- package/dist/unstable/cli/internal/ansi.js.map +1 -1
- package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
- package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
- package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
- package/dist/unstable/cli/internal/config.js.map +1 -1
- package/dist/unstable/cli/internal/help.js.map +1 -1
- package/dist/unstable/cli/internal/lexer.js +17 -7
- package/dist/unstable/cli/internal/lexer.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +2 -2
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cli/internal/wizard.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterError.js.map +1 -1
- package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
- package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
- package/dist/unstable/cluster/ClusterSchema.js +8 -8
- package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +5 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/DeliverAt.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +10 -10
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +8 -8
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityAddress.js.map +1 -1
- package/dist/unstable/cluster/EntityId.js.map +1 -1
- package/dist/unstable/cluster/EntityProxy.d.ts +4 -2
- package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityProxy.js +4 -2
- package/dist/unstable/cluster/EntityProxy.js.map +1 -1
- package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.js +2 -2
- package/dist/unstable/cluster/EntityResource.js.map +1 -1
- package/dist/unstable/cluster/EntityType.js.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +3 -3
- package/dist/unstable/cluster/Envelope.js +3 -3
- package/dist/unstable/cluster/Envelope.js.map +1 -1
- package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
- package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
- package/dist/unstable/cluster/HttpRunner.js +6 -4
- package/dist/unstable/cluster/HttpRunner.js.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/MachineId.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +9 -9
- package/dist/unstable/cluster/Message.js +6 -6
- package/dist/unstable/cluster/Message.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
- package/dist/unstable/cluster/MessageStorage.js +5 -5
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +4 -4
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/Runner.js.map +1 -1
- package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
- package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
- package/dist/unstable/cluster/RunnerHealth.js +1 -1
- package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
- package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
- package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerServer.js +16 -16
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +2 -2
- package/dist/unstable/cluster/RunnerStorage.js +1 -1
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +6 -6
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +19 -10
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/ShardId.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +3 -2
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +3 -3
- package/dist/unstable/cluster/ShardingConfig.js +3 -3
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
- package/dist/unstable/cluster/SingleRunner.js.map +1 -1
- package/dist/unstable/cluster/Singleton.js.map +1 -1
- package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
- package/dist/unstable/cluster/SingletonAddress.js +1 -1
- package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
- package/dist/unstable/cluster/Snowflake.d.ts +8 -8
- package/dist/unstable/cluster/Snowflake.js +8 -8
- package/dist/unstable/cluster/Snowflake.js.map +1 -1
- package/dist/unstable/cluster/SocketRunner.js.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +20 -5
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/TestRunner.js.map +1 -1
- package/dist/unstable/cluster/index.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +5 -5
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/hash.js.map +1 -1
- package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/cluster/internal/shardLock.js.map +1 -1
- package/dist/unstable/devtools/DevTools.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
- package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
- package/dist/unstable/devtools/index.js.map +1 -1
- package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
- package/dist/unstable/encoding/Msgpack.js +6 -8
- package/dist/unstable/encoding/Msgpack.js.map +1 -1
- package/dist/unstable/encoding/Ndjson.js.map +1 -1
- package/dist/unstable/encoding/Sse.d.ts +72 -8
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js +58 -8
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/encoding/index.js.map +1 -1
- package/dist/unstable/eventlog/Event.d.ts +20 -20
- package/dist/unstable/eventlog/Event.js.map +1 -1
- package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
- package/dist/unstable/eventlog/EventGroup.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +15 -15
- package/dist/unstable/eventlog/EventJournal.js +13 -13
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +3 -3
- package/dist/unstable/eventlog/EventLog.js +3 -3
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +2 -2
- package/dist/unstable/eventlog/EventLogMessage.js +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
- package/dist/unstable/eventlog/EventLogRemote.js +1 -1
- package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
- package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.js +45 -21
- package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.js +13 -5
- package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js +14 -6
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/index.js.map +1 -1
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
- package/dist/unstable/http/Cookies.d.ts +2 -2
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +30 -18
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Etag.d.ts +1 -1
- package/dist/unstable/http/Etag.js +1 -1
- package/dist/unstable/http/Etag.js.map +1 -1
- package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/unstable/http/FetchHttpClient.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +2 -2
- package/dist/unstable/http/Headers.js +2 -2
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +5 -3
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +11 -5
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +51 -44
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +46 -17
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.js.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +2 -0
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
- package/dist/unstable/http/HttpClientResponse.js +2 -2
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +6 -6
- package/dist/unstable/http/HttpEffect.js +3 -3
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +6 -9
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +6 -9
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +164 -39
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpPlatform.d.ts +76 -0
- package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
- package/dist/unstable/http/HttpPlatform.js +32 -0
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +88 -89
- package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
- package/dist/unstable/http/HttpRouter.js +78 -79
- package/dist/unstable/http/HttpRouter.js.map +1 -1
- package/dist/unstable/http/HttpServer.d.ts +13 -13
- package/dist/unstable/http/HttpServer.js +6 -6
- package/dist/unstable/http/HttpServer.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +2 -2
- package/dist/unstable/http/HttpServerError.js +2 -2
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
- package/dist/unstable/http/HttpServerRequest.js +4 -4
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +10 -0
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
- package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/unstable/http/HttpStaticServer.js +35 -7
- package/dist/unstable/http/HttpStaticServer.js.map +1 -1
- package/dist/unstable/http/HttpTraceContext.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +6 -6
- package/dist/unstable/http/Multipart.js +5 -5
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/Template.js.map +1 -1
- package/dist/unstable/http/Url.d.ts +33 -63
- package/dist/unstable/http/Url.d.ts.map +1 -1
- package/dist/unstable/http/Url.js +14 -28
- package/dist/unstable/http/Url.js.map +1 -1
- package/dist/unstable/http/UrlParams.d.ts +10 -18
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +9 -17
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/http/internal/compression.d.ts +2 -0
- package/dist/unstable/http/internal/compression.d.ts.map +1 -0
- package/dist/unstable/http/internal/compression.js +155 -0
- package/dist/unstable/http/internal/compression.js.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +10 -11
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +11 -13
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +42 -42
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +13 -13
- package/dist/unstable/httpapi/HttpApiError.js +13 -13
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -6
- package/dist/unstable/httpapi/HttpApiSchema.js +4 -4
- package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts +13 -13
- package/dist/unstable/httpapi/OpenApi.js +13 -13
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/httpapi/index.js.map +1 -1
- package/dist/unstable/httpapi/internal/html.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
- package/dist/unstable/observability/Otlp.js.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +12 -14
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +17 -4
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
- package/dist/unstable/observability/OtlpResource.d.ts +16 -7
- package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpResource.js +21 -12
- package/dist/unstable/observability/OtlpResource.js.map +1 -1
- package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
- package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.js +10 -3
- package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
- package/dist/unstable/observability/index.js.map +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
- package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/unstable/observability/internal/protobuf.js +3 -0
- package/dist/unstable/observability/internal/protobuf.js.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
- package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +22 -13
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +8 -8
- package/dist/unstable/persistence/Persistable.js.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
- package/dist/unstable/persistence/PersistedQueue.js +6 -6
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +3 -3
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +91 -15
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +26 -15
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +24 -13
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.d.ts +2 -2
- package/dist/unstable/persistence/Redis.js +1 -1
- package/dist/unstable/persistence/Redis.js.map +1 -1
- package/dist/unstable/persistence/index.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +64 -21
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcess.js +14 -5
- package/dist/unstable/process/ChildProcess.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/process/index.js.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
- package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.js +10 -10
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +25 -22
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +14 -13
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRef.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +24 -3
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +4 -1
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +1 -1
- package/dist/unstable/reactivity/Hydration.js +1 -1
- package/dist/unstable/reactivity/Hydration.js.map +1 -1
- package/dist/unstable/reactivity/Reactivity.js.map +1 -1
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +35 -33
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js +4 -2
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +12 -12
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +12 -11
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
- package/dist/unstable/rpc/RpcGroup.js +1 -1
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
- package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMessage.js +6 -6
- package/dist/unstable/rpc/RpcMessage.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
- package/dist/unstable/rpc/RpcMiddleware.js +1 -1
- package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
- package/dist/unstable/rpc/RpcSchema.js +3 -3
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +175 -96
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +13 -13
- package/dist/unstable/rpc/RpcServer.js +17 -13
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/RpcTest.js.map +1 -1
- package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
- package/dist/unstable/rpc/RpcWorker.js +4 -4
- package/dist/unstable/rpc/RpcWorker.js.map +1 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/rpc/index.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +52 -50
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +35 -33
- package/dist/unstable/schema/Model.js.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +5 -5
- package/dist/unstable/schema/VariantSchema.js +2 -2
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/schema/index.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +11 -3
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +9 -4
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.js.map +1 -1
- package/dist/unstable/socket/index.js.map +1 -1
- package/dist/unstable/sql/Migrator.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts +1 -1
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +2 -2
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlConnection.js.map +1 -1
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.js +2 -2
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.d.ts +5 -5
- package/dist/unstable/sql/SqlResolver.js +2 -2
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/SqlStream.js.map +1 -1
- package/dist/unstable/sql/Statement.d.ts +6 -6
- package/dist/unstable/sql/Statement.js +15 -15
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/sql/index.js.map +1 -1
- package/dist/unstable/workers/Transferable.d.ts +1 -1
- package/dist/unstable/workers/Transferable.js +1 -1
- package/dist/unstable/workers/Transferable.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts +2 -2
- package/dist/unstable/workers/Worker.js +2 -2
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workers/WorkerError.d.ts +7 -7
- package/dist/unstable/workers/WorkerError.js +6 -6
- package/dist/unstable/workers/WorkerError.js.map +1 -1
- package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
- package/dist/unstable/workers/WorkerRunner.js +1 -1
- package/dist/unstable/workers/WorkerRunner.js.map +1 -1
- package/dist/unstable/workers/index.js.map +1 -1
- package/dist/unstable/workflow/Activity.d.ts +2 -2
- package/dist/unstable/workflow/Activity.js +2 -2
- package/dist/unstable/workflow/Activity.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +1 -1
- package/dist/unstable/workflow/DurableClock.js +1 -1
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
- package/dist/unstable/workflow/DurableDeferred.js +5 -5
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
- package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableQueue.js +22 -20
- package/dist/unstable/workflow/DurableQueue.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +21 -21
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +13 -14
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
- package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.js +4 -2
- package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
- package/dist/unstable/workflow/index.js.map +1 -1
- package/dist/unstable/workflow/internal/crypto.js.map +1 -1
- package/package.json +5 -6
- package/src/Array.ts +982 -1045
- package/src/BigDecimal.ts +433 -756
- package/src/BigInt.ts +213 -269
- package/src/Boolean.ts +146 -188
- package/src/Cache.ts +409 -255
- package/src/Cause.ts +167 -277
- package/src/Channel.ts +891 -816
- package/src/ChannelSchema.ts +1 -1
- package/src/Chunk.ts +841 -1181
- package/src/Clock.ts +181 -49
- package/src/Combiner.ts +20 -33
- package/src/Config.ts +615 -332
- package/src/ConfigProvider.ts +214 -120
- package/src/Console.ts +289 -39
- package/src/Context.ts +319 -378
- package/src/Cron.ts +68 -77
- package/src/Crypto.ts +13 -15
- package/src/Data.ts +60 -80
- package/src/DateTime.ts +564 -660
- package/src/Deferred.ts +253 -256
- package/src/Duration.ts +216 -308
- package/src/Effect.ts +2893 -3279
- package/src/Encoding.ts +22 -40
- package/src/Equal.ts +49 -39
- package/src/Equivalence.ts +103 -105
- package/src/ErrorReporter.ts +51 -27
- package/src/ExecutionPlan.ts +13 -55
- package/src/Exit.ts +116 -192
- package/src/Fiber.ts +81 -148
- package/src/FiberHandle.ts +152 -105
- package/src/FiberMap.ts +225 -174
- package/src/FiberSet.ts +124 -82
- package/src/FileSystem.ts +155 -263
- package/src/Filter.ts +61 -33
- package/src/Formatter.ts +54 -56
- package/src/Function.ts +76 -145
- package/src/Graph.ts +416 -770
- package/src/HKT.ts +12 -6
- package/src/Hash.ts +52 -83
- package/src/HashMap.ts +319 -411
- package/src/HashRing.ts +1 -0
- package/src/HashSet.ts +177 -284
- package/src/Inspectable.ts +12 -12
- package/src/Iterable.ts +620 -786
- package/src/JsonPatch.ts +58 -112
- package/src/JsonPointer.ts +8 -8
- package/src/JsonSchema.ts +402 -244
- package/src/Latch.ts +23 -35
- package/src/Layer.ts +359 -260
- package/src/LayerMap.ts +49 -29
- package/src/LayerRef.ts +6 -2
- package/src/LogLevel.ts +114 -214
- package/src/Logger.ts +344 -697
- package/src/ManagedRuntime.ts +7 -5
- package/src/Match.ts +217 -252
- package/src/Metric.ts +516 -1089
- package/src/MutableHashMap.ts +218 -255
- package/src/MutableHashSet.ts +84 -89
- package/src/MutableList.ts +73 -370
- package/src/MutableRef.ts +420 -243
- package/src/Newtype.ts +21 -14
- package/src/NonEmptyIterable.ts +7 -137
- package/src/Number.ts +196 -233
- package/src/Optic.ts +243 -383
- package/src/Option.ts +447 -812
- package/src/Order.ts +109 -109
- package/src/Ordering.ts +20 -23
- package/src/Path.ts +38 -41
- package/src/Pipeable.ts +6 -5
- package/src/PlatformError.ts +4 -4
- package/src/Pool.ts +4 -2
- package/src/Predicate.ts +200 -181
- package/src/PrimaryKey.ts +7 -7
- package/src/PubSub.ts +526 -552
- package/src/Pull.ts +24 -18
- package/src/Queue.ts +200 -159
- package/src/Random.ts +49 -74
- package/src/RcMap.ts +121 -63
- package/src/RcRef.ts +24 -13
- package/src/Record.ts +291 -488
- package/src/Redactable.ts +10 -3
- package/src/Redacted.ts +25 -25
- package/src/Reducer.ts +8 -15
- package/src/Ref.ts +221 -361
- package/src/References.ts +102 -168
- package/src/RegExp.ts +10 -14
- package/src/Request.ts +31 -21
- package/src/RequestResolver.ts +202 -91
- package/src/Result.ts +312 -484
- package/src/Runtime.ts +50 -75
- package/src/Schedule.ts +308 -1734
- package/src/Scheduler.ts +20 -7
- package/src/Schema.ts +716 -745
- package/src/SchemaAST.ts +466 -358
- package/src/SchemaError.ts +7 -6
- package/src/SchemaGetter.ts +242 -190
- package/src/SchemaIssue.ts +89 -275
- package/src/SchemaParser.ts +180 -93
- package/src/SchemaRepresentation.ts +22 -40
- package/src/SchemaTransformation.ts +129 -88
- package/src/Scope.ts +123 -151
- package/src/ScopedRef.ts +4 -4
- package/src/Semaphore.ts +152 -51
- package/src/Sink.ts +128 -113
- package/src/Stdio.ts +1 -1
- package/src/Stream.ts +2602 -3123
- package/src/String.ts +275 -312
- package/src/Struct.ts +109 -114
- package/src/SubscriptionRef.ts +284 -252
- package/src/Symbol.ts +3 -3
- package/src/Terminal.ts +2 -2
- package/src/Tracer.ts +102 -55
- package/src/Trie.ts +287 -679
- package/src/Tuple.ts +92 -127
- package/src/TxChunk.ts +201 -121
- package/src/TxDeferred.ts +62 -46
- package/src/TxHashMap.ts +645 -799
- package/src/TxHashSet.ts +443 -356
- package/src/TxPriorityQueue.ts +130 -98
- package/src/TxPubSub.ts +107 -80
- package/src/TxQueue.ts +214 -183
- package/src/TxReentrantLock.ts +97 -66
- package/src/TxRef.ts +51 -32
- package/src/TxSemaphore.ts +129 -95
- package/src/TxSubscriptionRef.ts +97 -70
- package/src/Types.ts +126 -67
- package/src/Unify.ts +45 -65
- package/src/Utils.ts +23 -16
- package/src/internal/core.ts +2 -2
- package/src/internal/dateTime.ts +6 -0
- package/src/internal/effect.ts +93 -48
- package/src/internal/persistence.ts +2 -0
- package/src/internal/references.ts +3 -2
- package/src/internal/schema/fromJsonSchemaDocument.ts +15 -13
- package/src/internal/schema/fromRepresentation.ts +10 -16
- package/src/internal/schema/parser.ts +22 -0
- package/src/internal/schema/toJsonSchemaDocument.ts +60 -6
- package/src/internal/schema/toRepresentation.ts +104 -119
- package/src/internal/trie.ts +10 -11
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +72 -30
- package/src/testing/TestConsole.ts +32 -31
- package/src/testing/TestSchema.ts +29 -29
- package/src/unstable/ai/AiError.ts +95 -118
- package/src/unstable/ai/AnthropicStructuredOutput.ts +1 -1
- package/src/unstable/ai/Chat.ts +132 -97
- package/src/unstable/ai/IdGenerator.ts +32 -28
- package/src/unstable/ai/LanguageModel.ts +107 -67
- package/src/unstable/ai/McpProtocol.ts +48 -0
- package/src/unstable/ai/McpSchema.ts +60 -50
- package/src/unstable/ai/McpServer.ts +930 -304
- package/src/unstable/ai/Model.ts +9 -20
- package/src/unstable/ai/OpenAiStructuredOutput.ts +1 -1
- package/src/unstable/ai/Prompt.ts +145 -43
- package/src/unstable/ai/Response.ts +28 -14
- package/src/unstable/ai/Telemetry.ts +46 -13
- package/src/unstable/ai/Tokenizer.ts +14 -3
- package/src/unstable/ai/Tool.ts +59 -44
- package/src/unstable/ai/Toolkit.ts +26 -8
- package/src/unstable/ai/index.ts +5 -0
- package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
- package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
- package/src/unstable/ai/internal/structured-output.ts +13 -18
- package/src/unstable/cli/Argument.ts +273 -69
- package/src/unstable/cli/CliError.ts +69 -76
- package/src/unstable/cli/CliOutput.ts +44 -58
- package/src/unstable/cli/Command.ts +705 -107
- package/src/unstable/cli/Flag.ts +418 -138
- package/src/unstable/cli/GlobalFlag.ts +1 -1
- package/src/unstable/cli/HelpDoc.ts +12 -4
- package/src/unstable/cli/Param.ts +292 -78
- package/src/unstable/cli/Primitive.ts +370 -149
- package/src/unstable/cli/Prompt.ts +28 -14
- package/src/unstable/cli/internal/lexer.ts +8 -2
- package/src/unstable/cli/internal/parser.ts +2 -2
- package/src/unstable/cluster/ClusterSchema.ts +8 -8
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -1
- package/src/unstable/cluster/Entity.ts +15 -16
- package/src/unstable/cluster/EntityProxy.ts +4 -2
- package/src/unstable/cluster/EntityResource.ts +2 -2
- package/src/unstable/cluster/Envelope.ts +3 -3
- package/src/unstable/cluster/HttpRunner.ts +6 -4
- package/src/unstable/cluster/Message.ts +9 -9
- package/src/unstable/cluster/MessageStorage.ts +15 -15
- package/src/unstable/cluster/Reply.ts +4 -6
- package/src/unstable/cluster/RunnerHealth.ts +1 -1
- package/src/unstable/cluster/RunnerServer.ts +41 -8
- package/src/unstable/cluster/RunnerStorage.ts +2 -2
- package/src/unstable/cluster/Runners.ts +23 -12
- package/src/unstable/cluster/Sharding.ts +7 -8
- package/src/unstable/cluster/ShardingConfig.ts +3 -3
- package/src/unstable/cluster/SingletonAddress.ts +1 -1
- package/src/unstable/cluster/Snowflake.ts +8 -8
- package/src/unstable/cluster/SqlMessageStorage.ts +1 -1
- package/src/unstable/cluster/SqlRunnerStorage.ts +21 -5
- package/src/unstable/cluster/internal/entityManager.ts +11 -15
- package/src/unstable/encoding/Msgpack.ts +6 -8
- package/src/unstable/encoding/Sse.ts +98 -16
- package/src/unstable/eventlog/Event.ts +20 -20
- package/src/unstable/eventlog/EventGroup.ts +4 -4
- package/src/unstable/eventlog/EventJournal.ts +15 -15
- package/src/unstable/eventlog/EventLog.ts +3 -3
- package/src/unstable/eventlog/EventLogEncryption.ts +1 -1
- package/src/unstable/eventlog/EventLogMessage.ts +2 -2
- package/src/unstable/eventlog/EventLogRemote.ts +1 -1
- package/src/unstable/eventlog/EventLogServer.ts +41 -7
- package/src/unstable/eventlog/EventLogServerEncrypted.ts +13 -5
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +14 -6
- package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
- package/src/unstable/http/Cookies.ts +35 -21
- package/src/unstable/http/Etag.ts +1 -1
- package/src/unstable/http/FetchHttpClient.ts +3 -1
- package/src/unstable/http/Headers.ts +2 -2
- package/src/unstable/http/HttpBody.ts +20 -5
- package/src/unstable/http/HttpClient.ts +83 -55
- package/src/unstable/http/HttpClientRequest.ts +2 -0
- package/src/unstable/http/HttpClientResponse.ts +4 -4
- package/src/unstable/http/HttpEffect.ts +8 -8
- package/src/unstable/http/HttpMethod.ts +6 -9
- package/src/unstable/http/HttpMiddleware.ts +202 -39
- package/src/unstable/http/HttpPlatform.ts +95 -0
- package/src/unstable/http/HttpRouter.ts +102 -98
- package/src/unstable/http/HttpServer.ts +13 -13
- package/src/unstable/http/HttpServerError.ts +2 -2
- package/src/unstable/http/HttpServerRequest.ts +4 -4
- package/src/unstable/http/HttpServerResponse.ts +30 -0
- package/src/unstable/http/HttpStaticServer.ts +35 -7
- package/src/unstable/http/Multipart.ts +6 -6
- package/src/unstable/http/Url.ts +33 -63
- package/src/unstable/http/UrlParams.ts +10 -18
- package/src/unstable/http/internal/compression.ts +196 -0
- package/src/unstable/httpapi/HttpApiBuilder.ts +10 -9
- package/src/unstable/httpapi/HttpApiClient.ts +14 -14
- package/src/unstable/httpapi/HttpApiEndpoint.ts +42 -42
- package/src/unstable/httpapi/HttpApiError.ts +13 -13
- package/src/unstable/httpapi/HttpApiGroup.ts +15 -15
- package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
- package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
- package/src/unstable/httpapi/HttpApiSchema.ts +6 -6
- package/src/unstable/httpapi/OpenApi.ts +13 -13
- package/src/unstable/observability/OtlpExporter.ts +31 -19
- package/src/unstable/observability/OtlpMetrics.ts +4 -1
- package/src/unstable/observability/OtlpResource.ts +26 -17
- package/src/unstable/observability/PrometheusMetrics.ts +13 -4
- package/src/unstable/observability/internal/otlpEnv.ts +1 -1
- package/src/unstable/observability/internal/protobuf.ts +3 -0
- package/src/unstable/persistence/KeyValueStore.ts +72 -49
- package/src/unstable/persistence/Persistable.ts +8 -8
- package/src/unstable/persistence/PersistedQueue.ts +6 -6
- package/src/unstable/persistence/Persistence.ts +126 -19
- package/src/unstable/persistence/RateLimiter.ts +26 -15
- package/src/unstable/persistence/Redis.ts +2 -2
- package/src/unstable/process/ChildProcess.ts +64 -21
- package/src/unstable/process/ChildProcessSpawner.ts +21 -10
- package/src/unstable/reactivity/AsyncResult.ts +12 -13
- package/src/unstable/reactivity/Atom.ts +28 -25
- package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
- package/src/unstable/reactivity/AtomRegistry.ts +24 -3
- package/src/unstable/reactivity/AtomRpc.ts +5 -4
- package/src/unstable/reactivity/Hydration.ts +1 -1
- package/src/unstable/rpc/Rpc.ts +35 -33
- package/src/unstable/rpc/RpcClient.ts +16 -15
- package/src/unstable/rpc/RpcGroup.ts +8 -8
- package/src/unstable/rpc/RpcMessage.ts +31 -30
- package/src/unstable/rpc/RpcMiddleware.ts +10 -10
- package/src/unstable/rpc/RpcSchema.ts +4 -4
- package/src/unstable/rpc/RpcSerialization.ts +167 -68
- package/src/unstable/rpc/RpcServer.ts +18 -15
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/schema/Model.ts +52 -50
- package/src/unstable/schema/VariantSchema.ts +5 -5
- package/src/unstable/socket/Socket.ts +17 -4
- package/src/unstable/sql/SqlClient.ts +5 -6
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +5 -5
- package/src/unstable/sql/Statement.ts +24 -23
- package/src/unstable/workers/Transferable.ts +1 -1
- package/src/unstable/workers/Worker.ts +2 -2
- package/src/unstable/workers/WorkerError.ts +7 -7
- package/src/unstable/workers/WorkerRunner.ts +1 -1
- package/src/unstable/workflow/Activity.ts +2 -2
- package/src/unstable/workflow/DurableClock.ts +1 -1
- package/src/unstable/workflow/DurableDeferred.ts +10 -10
- package/src/unstable/workflow/DurableQueue.ts +22 -20
- package/src/unstable/workflow/Workflow.ts +23 -23
- package/src/unstable/workflow/WorkflowEngine.ts +1 -1
- package/src/unstable/workflow/WorkflowProxy.ts +4 -2
- package/dist/internal/version.d.ts +0 -3
- package/dist/internal/version.d.ts.map +0 -1
- package/dist/internal/version.js +0 -2
- package/dist/internal/version.js.map +0 -1
- package/src/internal/version.ts +0 -2
package/src/Config.ts
CHANGED
|
@@ -36,11 +36,11 @@ const TypeId = "~effect/Config"
|
|
|
36
36
|
*
|
|
37
37
|
* **Example** (Checking Config values)
|
|
38
38
|
*
|
|
39
|
-
* ```ts
|
|
39
|
+
* ```ts import.meta.vitest
|
|
40
40
|
* import { Config } from "effect"
|
|
41
41
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
42
|
+
* Config.isConfig(Config.string("HOST")) // => true
|
|
43
|
+
* Config.isConfig("not a config") // => false
|
|
44
44
|
* ```
|
|
45
45
|
*
|
|
46
46
|
* @category guards
|
|
@@ -63,7 +63,7 @@ export const isConfig = (u: unknown): u is Config<unknown> => Predicate.hasPrope
|
|
|
63
63
|
* (wrong type, out of range, missing key, etc.).
|
|
64
64
|
*
|
|
65
65
|
* @see {@link orElse} – recover from a ConfigError
|
|
66
|
-
* @see {@link withDefault} – provide a fallback
|
|
66
|
+
* @see {@link withDefault} – provide a fallback when relevant input is absent
|
|
67
67
|
*
|
|
68
68
|
* @category errors
|
|
69
69
|
* @since 4.0.0
|
|
@@ -94,9 +94,7 @@ export class ConfigError {
|
|
|
94
94
|
* **Details**
|
|
95
95
|
*
|
|
96
96
|
* Key members:
|
|
97
|
-
* - `parse(provider
|
|
98
|
-
* The optional path prefix is the logical scope accumulated from outer
|
|
99
|
-
* `Config.nested` calls.
|
|
97
|
+
* - `parse(provider)` – runs the config against a specific provider.
|
|
100
98
|
* - Yieldable – can be yielded inside `Effect.gen`, which automatically
|
|
101
99
|
* resolves the current `ConfigProvider` from the context.
|
|
102
100
|
* - Pipeable – supports `.pipe(Config.map(...))` etc.
|
|
@@ -108,10 +106,39 @@ export class ConfigError {
|
|
|
108
106
|
*/
|
|
109
107
|
export interface Config<out T> extends Effect.Effect<T, ConfigError> {
|
|
110
108
|
readonly [TypeId]: typeof TypeId
|
|
111
|
-
readonly parse: (
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
109
|
+
readonly parse: (provider: ConfigProvider.ConfigProvider) => Effect.Effect<T, ConfigError>
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Config composition needs to distinguish an absent recipe from a hard failure
|
|
113
|
+
// before the public Effect error channel is finalized. `hasInput` records
|
|
114
|
+
// provider evidence separately from the value, because successful values such
|
|
115
|
+
// as `undefined` and values supplied by defaults are not evidence of input.
|
|
116
|
+
// Hard failures carry the same evidence so recovery cannot erase it.
|
|
117
|
+
interface Resolved<out T> {
|
|
118
|
+
readonly _tag: "Resolved"
|
|
119
|
+
readonly value: T
|
|
120
|
+
readonly hasInput: boolean
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
interface Absent {
|
|
124
|
+
readonly _tag: "Absent"
|
|
125
|
+
readonly error: ConfigError
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
type Resolution<T> = Resolved<T> | Absent
|
|
129
|
+
|
|
130
|
+
interface EvaluationFailure {
|
|
131
|
+
readonly error: ConfigError
|
|
132
|
+
readonly hasInput: boolean
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
type Evaluator<T> = (
|
|
136
|
+
provider: ConfigProvider.ConfigProvider,
|
|
137
|
+
pathPrefix: Path
|
|
138
|
+
) => Effect.Effect<Resolution<T>, EvaluationFailure>
|
|
139
|
+
|
|
140
|
+
interface ConfigImpl<out T> extends Config<T> {
|
|
141
|
+
readonly evaluator: Evaluator<T>
|
|
115
142
|
}
|
|
116
143
|
|
|
117
144
|
const Proto = {
|
|
@@ -130,13 +157,69 @@ const Proto = {
|
|
|
130
157
|
}
|
|
131
158
|
|
|
132
159
|
function make<T>(
|
|
133
|
-
|
|
160
|
+
evaluator: Evaluator<T>
|
|
134
161
|
): Config<T> {
|
|
135
162
|
const self = Object.create(Proto)
|
|
136
|
-
self.
|
|
163
|
+
self.evaluator = evaluator
|
|
164
|
+
self.parse = (provider: ConfigProvider.ConfigProvider) =>
|
|
165
|
+
evaluator(provider, []).pipe(
|
|
166
|
+
Effect.mapErrorEager((failure) => failure.error),
|
|
167
|
+
Effect.flatMapEager((resolution) =>
|
|
168
|
+
resolution._tag === "Resolved" ? Effect.succeed(resolution.value) : Effect.fail(resolution.error)
|
|
169
|
+
)
|
|
170
|
+
)
|
|
137
171
|
return self
|
|
138
172
|
}
|
|
139
173
|
|
|
174
|
+
const evaluateAt = <T>(
|
|
175
|
+
self: Config<T>,
|
|
176
|
+
provider: ConfigProvider.ConfigProvider,
|
|
177
|
+
pathPrefix: Path
|
|
178
|
+
): Effect.Effect<Resolution<T>, EvaluationFailure> => (self as ConfigImpl<T>).evaluator(provider, pathPrefix)
|
|
179
|
+
|
|
180
|
+
const resolved = <T>(value: T, hasInput: boolean): Resolution<T> => ({
|
|
181
|
+
_tag: "Resolved",
|
|
182
|
+
value,
|
|
183
|
+
hasInput
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
const absent = (error: ConfigError): Absent => ({
|
|
187
|
+
_tag: "Absent",
|
|
188
|
+
error
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
const evaluationFailure = (error: ConfigError, hasInput: boolean): EvaluationFailure => ({
|
|
192
|
+
error,
|
|
193
|
+
hasInput
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
const catchSourceError = <A, E, R>(
|
|
197
|
+
self: Effect.Effect<A, E, R>,
|
|
198
|
+
hasInput: boolean
|
|
199
|
+
): Effect.Effect<A, E | EvaluationFailure, R> =>
|
|
200
|
+
self.pipe(
|
|
201
|
+
Effect.catchDefect((defect) =>
|
|
202
|
+
defect instanceof ConfigProvider.SourceError
|
|
203
|
+
? Effect.fail(evaluationFailure(new ConfigError(defect), hasInput))
|
|
204
|
+
: Effect.die(defect)
|
|
205
|
+
)
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
const preserveInputEvidence = <T>(
|
|
209
|
+
self: Effect.Effect<Resolution<T>, EvaluationFailure>,
|
|
210
|
+
hasInput: boolean
|
|
211
|
+
): Effect.Effect<Resolution<T>, EvaluationFailure> => {
|
|
212
|
+
if (!hasInput) return self
|
|
213
|
+
return self.pipe(
|
|
214
|
+
Effect.mapErrorEager((failure) => evaluationFailure(failure.error, true)),
|
|
215
|
+
Effect.flatMapEager((resolution) =>
|
|
216
|
+
resolution._tag === "Resolved"
|
|
217
|
+
? Effect.succeed(resolved(resolution.value, true))
|
|
218
|
+
: Effect.fail(evaluationFailure(resolution.error, true))
|
|
219
|
+
)
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
|
|
140
223
|
/**
|
|
141
224
|
* Transforms the parsed value of a config with a pure function.
|
|
142
225
|
*
|
|
@@ -147,7 +230,7 @@ function make<T>(
|
|
|
147
230
|
*
|
|
148
231
|
* **Example** (Uppercasing a string config)
|
|
149
232
|
*
|
|
150
|
-
* ```ts
|
|
233
|
+
* ```ts import.meta.vitest
|
|
151
234
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
152
235
|
*
|
|
153
236
|
* const upper = Config.string("name").pipe(
|
|
@@ -155,7 +238,7 @@ function make<T>(
|
|
|
155
238
|
* )
|
|
156
239
|
*
|
|
157
240
|
* const provider = ConfigProvider.fromUnknown({ name: "alice" })
|
|
158
|
-
*
|
|
241
|
+
* Effect.runSync(upper.parse(provider)) // => "ALICE"
|
|
159
242
|
* ```
|
|
160
243
|
*
|
|
161
244
|
* @see {@link mapOrFail} – when the transformation can fail
|
|
@@ -174,7 +257,7 @@ export const map: {
|
|
|
174
257
|
*
|
|
175
258
|
* **Example** (Uppercasing a string config)
|
|
176
259
|
*
|
|
177
|
-
* ```ts
|
|
260
|
+
* ```ts import.meta.vitest
|
|
178
261
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
179
262
|
*
|
|
180
263
|
* const upper = Config.string("name").pipe(
|
|
@@ -182,7 +265,7 @@ export const map: {
|
|
|
182
265
|
* )
|
|
183
266
|
*
|
|
184
267
|
* const provider = ConfigProvider.fromUnknown({ name: "alice" })
|
|
185
|
-
*
|
|
268
|
+
* Effect.runSync(upper.parse(provider)) // => "ALICE"
|
|
186
269
|
* ```
|
|
187
270
|
*
|
|
188
271
|
* @see {@link mapOrFail} – when the transformation can fail
|
|
@@ -201,7 +284,7 @@ export const map: {
|
|
|
201
284
|
*
|
|
202
285
|
* **Example** (Uppercasing a string config)
|
|
203
286
|
*
|
|
204
|
-
* ```ts
|
|
287
|
+
* ```ts import.meta.vitest
|
|
205
288
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
206
289
|
*
|
|
207
290
|
* const upper = Config.string("name").pipe(
|
|
@@ -209,7 +292,7 @@ export const map: {
|
|
|
209
292
|
* )
|
|
210
293
|
*
|
|
211
294
|
* const provider = ConfigProvider.fromUnknown({ name: "alice" })
|
|
212
|
-
*
|
|
295
|
+
* Effect.runSync(upper.parse(provider)) // => "ALICE"
|
|
213
296
|
* ```
|
|
214
297
|
*
|
|
215
298
|
* @see {@link mapOrFail} – when the transformation can fail
|
|
@@ -219,7 +302,12 @@ export const map: {
|
|
|
219
302
|
*/
|
|
220
303
|
<A, B>(self: Config<A>, f: (a: A) => B): Config<B>
|
|
221
304
|
} = dual(2, <A, B>(self: Config<A>, f: (a: A) => B): Config<B> => {
|
|
222
|
-
return make((provider, pathPrefix) =>
|
|
305
|
+
return make((provider, pathPrefix) =>
|
|
306
|
+
Effect.map(evaluateAt(self, provider, pathPrefix), (resolution) =>
|
|
307
|
+
resolution._tag === "Resolved"
|
|
308
|
+
? resolved(f(resolution.value), resolution.hasInput)
|
|
309
|
+
: resolution)
|
|
310
|
+
)
|
|
223
311
|
})
|
|
224
312
|
|
|
225
313
|
/**
|
|
@@ -232,12 +320,14 @@ export const map: {
|
|
|
232
320
|
*
|
|
233
321
|
* **Example** (Wrapping a value in an effectful transformation)
|
|
234
322
|
*
|
|
235
|
-
* ```ts
|
|
236
|
-
* import { Config, Effect } from "effect"
|
|
323
|
+
* ```ts import.meta.vitest
|
|
324
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
237
325
|
*
|
|
238
326
|
* const trimmed = Config.string("name").pipe(
|
|
239
327
|
* Config.mapOrFail((s) => Effect.succeed(s.trim()))
|
|
240
328
|
* )
|
|
329
|
+
* const provider = ConfigProvider.fromUnknown({ name: " Alice " })
|
|
330
|
+
* Effect.runSync(trimmed.parse(provider)) // => "Alice"
|
|
241
331
|
* ```
|
|
242
332
|
*
|
|
243
333
|
* @see {@link map} – when the transformation cannot fail
|
|
@@ -256,12 +346,14 @@ export const mapOrFail: {
|
|
|
256
346
|
*
|
|
257
347
|
* **Example** (Wrapping a value in an effectful transformation)
|
|
258
348
|
*
|
|
259
|
-
* ```ts
|
|
260
|
-
* import { Config, Effect } from "effect"
|
|
349
|
+
* ```ts import.meta.vitest
|
|
350
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
261
351
|
*
|
|
262
352
|
* const trimmed = Config.string("name").pipe(
|
|
263
353
|
* Config.mapOrFail((s) => Effect.succeed(s.trim()))
|
|
264
354
|
* )
|
|
355
|
+
* const provider = ConfigProvider.fromUnknown({ name: " Alice " })
|
|
356
|
+
* Effect.runSync(trimmed.parse(provider)) // => "Alice"
|
|
265
357
|
* ```
|
|
266
358
|
*
|
|
267
359
|
* @see {@link map} – when the transformation cannot fail
|
|
@@ -280,12 +372,14 @@ export const mapOrFail: {
|
|
|
280
372
|
*
|
|
281
373
|
* **Example** (Wrapping a value in an effectful transformation)
|
|
282
374
|
*
|
|
283
|
-
* ```ts
|
|
284
|
-
* import { Config, Effect } from "effect"
|
|
375
|
+
* ```ts import.meta.vitest
|
|
376
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
285
377
|
*
|
|
286
378
|
* const trimmed = Config.string("name").pipe(
|
|
287
379
|
* Config.mapOrFail((s) => Effect.succeed(s.trim()))
|
|
288
380
|
* )
|
|
381
|
+
* const provider = ConfigProvider.fromUnknown({ name: " Alice " })
|
|
382
|
+
* Effect.runSync(trimmed.parse(provider)) // => "Alice"
|
|
289
383
|
* ```
|
|
290
384
|
*
|
|
291
385
|
* @see {@link map} – when the transformation cannot fail
|
|
@@ -295,7 +389,15 @@ export const mapOrFail: {
|
|
|
295
389
|
*/
|
|
296
390
|
<A, B>(self: Config<A>, f: (a: A) => Effect.Effect<B, ConfigError>): Config<B>
|
|
297
391
|
} = dual(2, <A, B>(self: Config<A>, f: (a: A) => Effect.Effect<B, ConfigError>): Config<B> => {
|
|
298
|
-
return make((provider, pathPrefix) =>
|
|
392
|
+
return make((provider, pathPrefix) =>
|
|
393
|
+
Effect.flatMap(evaluateAt(self, provider, pathPrefix), (resolution) =>
|
|
394
|
+
resolution._tag === "Resolved"
|
|
395
|
+
? f(resolution.value).pipe(
|
|
396
|
+
Effect.mapEager((value) => resolved(value, resolution.hasInput)),
|
|
397
|
+
Effect.mapErrorEager((error) => evaluationFailure(error, resolution.hasInput))
|
|
398
|
+
)
|
|
399
|
+
: Effect.succeed(resolution))
|
|
400
|
+
)
|
|
299
401
|
})
|
|
300
402
|
|
|
301
403
|
/**
|
|
@@ -308,21 +410,30 @@ export const mapOrFail: {
|
|
|
308
410
|
*
|
|
309
411
|
* **Details**
|
|
310
412
|
*
|
|
311
|
-
* Unlike {@link withDefault}, this
|
|
312
|
-
*
|
|
413
|
+
* Unlike {@link withDefault}, this handles both semantic absence and **all**
|
|
414
|
+
* `ConfigError`s. The fallback function receives the error and returns a new
|
|
313
415
|
* `Config`.
|
|
314
416
|
*
|
|
417
|
+
* **Gotchas**
|
|
418
|
+
*
|
|
419
|
+
* Recovery preserves whether the primary config read provider input. When the
|
|
420
|
+
* recovered config is composed with {@link all}, invalid input in the primary
|
|
421
|
+
* branch still makes the enclosing group partially supplied, so an outer
|
|
422
|
+
* {@link withDefault} or {@link option} does not replace the whole group.
|
|
423
|
+
*
|
|
315
424
|
* **Example** (Falling back to a literal)
|
|
316
425
|
*
|
|
317
|
-
* ```ts
|
|
318
|
-
* import { Config } from "effect"
|
|
426
|
+
* ```ts import.meta.vitest
|
|
427
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
319
428
|
*
|
|
320
429
|
* const hostConfig = Config.string("HOST").pipe(
|
|
321
430
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
322
431
|
* )
|
|
432
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
433
|
+
* Effect.runSync(hostConfig.parse(provider)) // => "localhost"
|
|
323
434
|
* ```
|
|
324
435
|
*
|
|
325
|
-
* @see {@link withDefault} – fallback only on
|
|
436
|
+
* @see {@link withDefault} – fallback only on semantic absence
|
|
326
437
|
*
|
|
327
438
|
* @category combinators
|
|
328
439
|
* @since 2.0.0
|
|
@@ -338,21 +449,30 @@ export const orElse: {
|
|
|
338
449
|
*
|
|
339
450
|
* **Details**
|
|
340
451
|
*
|
|
341
|
-
* Unlike {@link withDefault}, this
|
|
342
|
-
*
|
|
452
|
+
* Unlike {@link withDefault}, this handles both semantic absence and **all**
|
|
453
|
+
* `ConfigError`s. The fallback function receives the error and returns a new
|
|
343
454
|
* `Config`.
|
|
344
455
|
*
|
|
456
|
+
* **Gotchas**
|
|
457
|
+
*
|
|
458
|
+
* Recovery preserves whether the primary config read provider input. When the
|
|
459
|
+
* recovered config is composed with {@link all}, invalid input in the primary
|
|
460
|
+
* branch still makes the enclosing group partially supplied, so an outer
|
|
461
|
+
* {@link withDefault} or {@link option} does not replace the whole group.
|
|
462
|
+
*
|
|
345
463
|
* **Example** (Falling back to a literal)
|
|
346
464
|
*
|
|
347
|
-
* ```ts
|
|
348
|
-
* import { Config } from "effect"
|
|
465
|
+
* ```ts import.meta.vitest
|
|
466
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
349
467
|
*
|
|
350
468
|
* const hostConfig = Config.string("HOST").pipe(
|
|
351
469
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
352
470
|
* )
|
|
471
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
472
|
+
* Effect.runSync(hostConfig.parse(provider)) // => "localhost"
|
|
353
473
|
* ```
|
|
354
474
|
*
|
|
355
|
-
* @see {@link withDefault} – fallback only on
|
|
475
|
+
* @see {@link withDefault} – fallback only on semantic absence
|
|
356
476
|
*
|
|
357
477
|
* @category combinators
|
|
358
478
|
* @since 2.0.0
|
|
@@ -368,30 +488,87 @@ export const orElse: {
|
|
|
368
488
|
*
|
|
369
489
|
* **Details**
|
|
370
490
|
*
|
|
371
|
-
* Unlike {@link withDefault}, this
|
|
372
|
-
*
|
|
491
|
+
* Unlike {@link withDefault}, this handles both semantic absence and **all**
|
|
492
|
+
* `ConfigError`s. The fallback function receives the error and returns a new
|
|
373
493
|
* `Config`.
|
|
374
494
|
*
|
|
495
|
+
* **Gotchas**
|
|
496
|
+
*
|
|
497
|
+
* Recovery preserves whether the primary config read provider input. When the
|
|
498
|
+
* recovered config is composed with {@link all}, invalid input in the primary
|
|
499
|
+
* branch still makes the enclosing group partially supplied, so an outer
|
|
500
|
+
* {@link withDefault} or {@link option} does not replace the whole group.
|
|
501
|
+
*
|
|
375
502
|
* **Example** (Falling back to a literal)
|
|
376
503
|
*
|
|
377
|
-
* ```ts
|
|
378
|
-
* import { Config } from "effect"
|
|
504
|
+
* ```ts import.meta.vitest
|
|
505
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
379
506
|
*
|
|
380
507
|
* const hostConfig = Config.string("HOST").pipe(
|
|
381
508
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
382
509
|
* )
|
|
510
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
511
|
+
* Effect.runSync(hostConfig.parse(provider)) // => "localhost"
|
|
383
512
|
* ```
|
|
384
513
|
*
|
|
385
|
-
* @see {@link withDefault} – fallback only on
|
|
514
|
+
* @see {@link withDefault} – fallback only on semantic absence
|
|
386
515
|
*
|
|
387
516
|
* @category combinators
|
|
388
517
|
* @since 2.0.0
|
|
389
518
|
*/
|
|
390
519
|
<A, A2>(self: Config<A>, that: (error: ConfigError) => Config<A2>): Config<A | A2>
|
|
391
520
|
} = dual(2, <A, A2>(self: Config<A>, that: (error: ConfigError) => Config<A2>): Config<A | A2> => {
|
|
392
|
-
return make
|
|
393
|
-
|
|
394
|
-
|
|
521
|
+
return make</**
|
|
522
|
+
* Provides a fallback config when parsing fails with a `ConfigError`.
|
|
523
|
+
*
|
|
524
|
+
* **When to use**
|
|
525
|
+
*
|
|
526
|
+
* Use when you need to try an alternative config source after the primary one
|
|
527
|
+
* fails.
|
|
528
|
+
*
|
|
529
|
+
* **Details**
|
|
530
|
+
*
|
|
531
|
+
* Unlike {@link withDefault}, this handles both semantic absence and **all**
|
|
532
|
+
* `ConfigError`s. The fallback function receives the error and returns a new
|
|
533
|
+
* `Config`.
|
|
534
|
+
*
|
|
535
|
+
* **Gotchas**
|
|
536
|
+
*
|
|
537
|
+
* Recovery preserves whether the primary config read provider input. When the
|
|
538
|
+
* recovered config is composed with {@link all}, invalid input in the primary
|
|
539
|
+
* branch still makes the enclosing group partially supplied, so an outer
|
|
540
|
+
* {@link withDefault} or {@link option} does not replace the whole group.
|
|
541
|
+
*
|
|
542
|
+
* **Example** (Falling back to a literal)
|
|
543
|
+
*
|
|
544
|
+
* ```ts import.meta.vitest
|
|
545
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
546
|
+
*
|
|
547
|
+
* const hostConfig = Config.string("HOST").pipe(
|
|
548
|
+
* Config.orElse(() => Config.succeed("localhost"))
|
|
549
|
+
* )
|
|
550
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
551
|
+
* Effect.runSync(hostConfig.parse(provider)) // => "localhost"
|
|
552
|
+
* ```
|
|
553
|
+
*
|
|
554
|
+
* @see {@link withDefault} – fallback only on semantic absence
|
|
555
|
+
*
|
|
556
|
+
* @category combinators
|
|
557
|
+
* @since 2.0.0
|
|
558
|
+
*/
|
|
559
|
+
A | A2>((provider, pathPrefix) =>
|
|
560
|
+
Effect.matchEffect(evaluateAt(self, provider, pathPrefix), {
|
|
561
|
+
onFailure: (failure) =>
|
|
562
|
+
preserveInputEvidence(
|
|
563
|
+
evaluateAt(that(failure.error), provider, pathPrefix),
|
|
564
|
+
failure.hasInput
|
|
565
|
+
),
|
|
566
|
+
onSuccess: (resolution): Effect.Effect<Resolution<A | A2>, EvaluationFailure> =>
|
|
567
|
+
resolution._tag === "Absent"
|
|
568
|
+
? evaluateAt(that(resolution.error), provider, pathPrefix)
|
|
569
|
+
: Effect.succeed(resolution)
|
|
570
|
+
})
|
|
571
|
+
);
|
|
395
572
|
})
|
|
396
573
|
|
|
397
574
|
/**
|
|
@@ -406,9 +583,19 @@ export const orElse: {
|
|
|
406
583
|
* Accepts a tuple (preserves positions), an iterable, or a record of configs.
|
|
407
584
|
* Returns a config whose parsed value mirrors the input shape.
|
|
408
585
|
*
|
|
586
|
+
* A combined config is absent when at least one child cannot resolve and none
|
|
587
|
+
* of the other children read provider input. This lets {@link withDefault} and
|
|
588
|
+
* {@link option} handle a wholly absent group. Once any child reads input, a
|
|
589
|
+
* missing sibling makes the group incomplete and parsing fails. Values supplied
|
|
590
|
+
* by child defaults do not count as provider input.
|
|
591
|
+
*
|
|
592
|
+
* Unlike a `Schema.Struct` passed to {@link schema}, `all` only considers input
|
|
593
|
+
* read by its children. An explicitly present but empty parent container does
|
|
594
|
+
* not by itself make the group present.
|
|
595
|
+
*
|
|
409
596
|
* **Example** (Combining configs as a struct)
|
|
410
597
|
*
|
|
411
|
-
* ```ts
|
|
598
|
+
* ```ts import.meta.vitest
|
|
412
599
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
413
600
|
*
|
|
414
601
|
* const dbConfig = Config.all({
|
|
@@ -417,8 +604,7 @@ export const orElse: {
|
|
|
417
604
|
* })
|
|
418
605
|
*
|
|
419
606
|
* const provider = ConfigProvider.fromUnknown({ host: "localhost", port: 5432 })
|
|
420
|
-
*
|
|
421
|
-
* // { host: "localhost", port: 5432 }
|
|
607
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
422
608
|
* ```
|
|
423
609
|
*
|
|
424
610
|
* @category combinators
|
|
@@ -443,46 +629,65 @@ export function all<const Arg extends Iterable<Config<any>> | Record<string, Con
|
|
|
443
629
|
: arg
|
|
444
630
|
if (Array.isArray(configs)) {
|
|
445
631
|
return make((provider, pathPrefix) =>
|
|
446
|
-
Effect.
|
|
632
|
+
Effect.flatMapEager(
|
|
633
|
+
Effect.all(configs.map((config) => evaluateAt(config, provider, pathPrefix))),
|
|
634
|
+
resolveArray
|
|
635
|
+
)
|
|
447
636
|
) as any
|
|
448
637
|
} else {
|
|
449
638
|
return make((provider, pathPrefix) =>
|
|
450
|
-
Effect.
|
|
639
|
+
Effect.flatMapEager(
|
|
640
|
+
Effect.all(Rec.map(configs, (config) => evaluateAt(config, provider, pathPrefix))),
|
|
641
|
+
resolveRecord
|
|
642
|
+
)
|
|
451
643
|
) as any
|
|
452
644
|
}
|
|
453
645
|
}
|
|
454
646
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
647
|
+
const resolveArray = (
|
|
648
|
+
resolutions: ReadonlyArray<Resolution<any>>
|
|
649
|
+
): Effect.Effect<Resolution<Array<any>>, EvaluationFailure> => {
|
|
650
|
+
const values: Array<any> = []
|
|
651
|
+
let firstAbsent: Absent | undefined
|
|
652
|
+
let hasInput = false
|
|
653
|
+
for (const resolution of resolutions) {
|
|
654
|
+
if (resolution._tag === "Absent") {
|
|
655
|
+
firstAbsent ??= resolution
|
|
656
|
+
} else {
|
|
657
|
+
values.push(resolution.value)
|
|
658
|
+
hasInput = hasInput || resolution.hasInput
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
if (firstAbsent !== undefined) {
|
|
662
|
+
return hasInput ? Effect.fail(evaluationFailure(firstAbsent.error, true)) : Effect.succeed(firstAbsent)
|
|
663
|
+
}
|
|
664
|
+
return Effect.succeed(resolved(values, hasInput))
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
const resolveRecord = (
|
|
668
|
+
resolutions: Record<string, Resolution<any>>
|
|
669
|
+
): Effect.Effect<Resolution<Record<string, any>>, EvaluationFailure> => {
|
|
670
|
+
const values: Record<string, any> = {}
|
|
671
|
+
let firstAbsent: Absent | undefined
|
|
672
|
+
let hasInput = false
|
|
673
|
+
for (const key in resolutions) {
|
|
674
|
+
const resolution = resolutions[key]
|
|
675
|
+
if (resolution._tag === "Absent") {
|
|
676
|
+
firstAbsent ??= resolution
|
|
677
|
+
} else {
|
|
678
|
+
InternalRecord.assignProperty(values, key, resolution.value)
|
|
679
|
+
hasInput = hasInput || resolution.hasInput
|
|
680
|
+
}
|
|
481
681
|
}
|
|
682
|
+
if (firstAbsent !== undefined) {
|
|
683
|
+
return hasInput ? Effect.fail(evaluationFailure(firstAbsent.error, true)) : Effect.succeed(firstAbsent)
|
|
684
|
+
}
|
|
685
|
+
return Effect.succeed(resolved(values, hasInput))
|
|
482
686
|
}
|
|
483
687
|
|
|
484
688
|
/**
|
|
485
|
-
* Provides a fallback value when the config
|
|
689
|
+
* Provides a fallback value when the config cannot resolve because none of its
|
|
690
|
+
* relevant input is present.
|
|
486
691
|
*
|
|
487
692
|
* **When to use**
|
|
488
693
|
*
|
|
@@ -490,30 +695,33 @@ function isMissingDataOnly(issue: SchemaIssue.Issue): boolean {
|
|
|
490
695
|
*
|
|
491
696
|
* **Gotchas**
|
|
492
697
|
*
|
|
493
|
-
*
|
|
494
|
-
*
|
|
495
|
-
*
|
|
698
|
+
* Validation errors and partially supplied groups still propagate. A schema
|
|
699
|
+
* that successfully decodes absent input also keeps its decoded value instead
|
|
700
|
+
* of using the default. Schema configs first represent a missing or
|
|
701
|
+
* incompatible provider shape as `undefined`; the default is used only when
|
|
702
|
+
* the schema rejects that value and no relevant input was found.
|
|
496
703
|
*
|
|
497
704
|
* **Example** (Defaulting a missing port)
|
|
498
705
|
*
|
|
499
|
-
* ```ts
|
|
706
|
+
* ```ts import.meta.vitest
|
|
500
707
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
501
708
|
*
|
|
502
709
|
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
503
710
|
*
|
|
504
711
|
* const provider = ConfigProvider.fromUnknown({})
|
|
505
|
-
*
|
|
712
|
+
* Effect.runSync(port.parse(provider)) // => 3000
|
|
506
713
|
* ```
|
|
507
714
|
*
|
|
508
715
|
* @see {@link option} – returns `Option` instead of a default value
|
|
509
|
-
* @see {@link orElse} – catches all errors, not just
|
|
716
|
+
* @see {@link orElse} – catches all errors, not just absent input
|
|
510
717
|
*
|
|
511
718
|
* @category combinators
|
|
512
719
|
* @since 2.0.0
|
|
513
720
|
*/
|
|
514
721
|
export const withDefault: {
|
|
515
722
|
/**
|
|
516
|
-
* Provides a fallback value when the config
|
|
723
|
+
* Provides a fallback value when the config cannot resolve because none of its
|
|
724
|
+
* relevant input is present.
|
|
517
725
|
*
|
|
518
726
|
* **When to use**
|
|
519
727
|
*
|
|
@@ -521,30 +729,33 @@ export const withDefault: {
|
|
|
521
729
|
*
|
|
522
730
|
* **Gotchas**
|
|
523
731
|
*
|
|
524
|
-
*
|
|
525
|
-
*
|
|
526
|
-
*
|
|
732
|
+
* Validation errors and partially supplied groups still propagate. A schema
|
|
733
|
+
* that successfully decodes absent input also keeps its decoded value instead
|
|
734
|
+
* of using the default. Schema configs first represent a missing or
|
|
735
|
+
* incompatible provider shape as `undefined`; the default is used only when
|
|
736
|
+
* the schema rejects that value and no relevant input was found.
|
|
527
737
|
*
|
|
528
738
|
* **Example** (Defaulting a missing port)
|
|
529
739
|
*
|
|
530
|
-
* ```ts
|
|
740
|
+
* ```ts import.meta.vitest
|
|
531
741
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
532
742
|
*
|
|
533
743
|
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
534
744
|
*
|
|
535
745
|
* const provider = ConfigProvider.fromUnknown({})
|
|
536
|
-
*
|
|
746
|
+
* Effect.runSync(port.parse(provider)) // => 3000
|
|
537
747
|
* ```
|
|
538
748
|
*
|
|
539
749
|
* @see {@link option} – returns `Option` instead of a default value
|
|
540
|
-
* @see {@link orElse} – catches all errors, not just
|
|
750
|
+
* @see {@link orElse} – catches all errors, not just absent input
|
|
541
751
|
*
|
|
542
752
|
* @category combinators
|
|
543
753
|
* @since 2.0.0
|
|
544
754
|
*/
|
|
545
755
|
<const A2>(defaultValue: A2): <A>(self: Config<A>) => Config<A2 | A>
|
|
546
756
|
/**
|
|
547
|
-
* Provides a fallback value when the config
|
|
757
|
+
* Provides a fallback value when the config cannot resolve because none of its
|
|
758
|
+
* relevant input is present.
|
|
548
759
|
*
|
|
549
760
|
* **When to use**
|
|
550
761
|
*
|
|
@@ -552,43 +763,75 @@ export const withDefault: {
|
|
|
552
763
|
*
|
|
553
764
|
* **Gotchas**
|
|
554
765
|
*
|
|
555
|
-
*
|
|
556
|
-
*
|
|
557
|
-
*
|
|
766
|
+
* Validation errors and partially supplied groups still propagate. A schema
|
|
767
|
+
* that successfully decodes absent input also keeps its decoded value instead
|
|
768
|
+
* of using the default. Schema configs first represent a missing or
|
|
769
|
+
* incompatible provider shape as `undefined`; the default is used only when
|
|
770
|
+
* the schema rejects that value and no relevant input was found.
|
|
558
771
|
*
|
|
559
772
|
* **Example** (Defaulting a missing port)
|
|
560
773
|
*
|
|
561
|
-
* ```ts
|
|
774
|
+
* ```ts import.meta.vitest
|
|
562
775
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
563
776
|
*
|
|
564
777
|
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
565
778
|
*
|
|
566
779
|
* const provider = ConfigProvider.fromUnknown({})
|
|
567
|
-
*
|
|
780
|
+
* Effect.runSync(port.parse(provider)) // => 3000
|
|
568
781
|
* ```
|
|
569
782
|
*
|
|
570
783
|
* @see {@link option} – returns `Option` instead of a default value
|
|
571
|
-
* @see {@link orElse} – catches all errors, not just
|
|
784
|
+
* @see {@link orElse} – catches all errors, not just absent input
|
|
572
785
|
*
|
|
573
786
|
* @category combinators
|
|
574
787
|
* @since 2.0.0
|
|
575
788
|
*/
|
|
576
789
|
<A, const A2>(self: Config<A>, defaultValue: A2): Config<A | A2>
|
|
577
790
|
} = dual(2, <A, const A2>(self: Config<A>, defaultValue: A2): Config<A | A2> => {
|
|
578
|
-
return
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
791
|
+
return make</**
|
|
792
|
+
* Provides a fallback value when the config cannot resolve because none of its
|
|
793
|
+
* relevant input is present.
|
|
794
|
+
*
|
|
795
|
+
* **When to use**
|
|
796
|
+
*
|
|
797
|
+
* Use when you need to make a config key optional with a sensible default.
|
|
798
|
+
*
|
|
799
|
+
* **Gotchas**
|
|
800
|
+
*
|
|
801
|
+
* Validation errors and partially supplied groups still propagate. A schema
|
|
802
|
+
* that successfully decodes absent input also keeps its decoded value instead
|
|
803
|
+
* of using the default. Schema configs first represent a missing or
|
|
804
|
+
* incompatible provider shape as `undefined`; the default is used only when
|
|
805
|
+
* the schema rejects that value and no relevant input was found.
|
|
806
|
+
*
|
|
807
|
+
* **Example** (Defaulting a missing port)
|
|
808
|
+
*
|
|
809
|
+
* ```ts import.meta.vitest
|
|
810
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
811
|
+
*
|
|
812
|
+
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
813
|
+
*
|
|
814
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
815
|
+
* Effect.runSync(port.parse(provider)) // => 3000
|
|
816
|
+
* ```
|
|
817
|
+
*
|
|
818
|
+
* @see {@link option} – returns `Option` instead of a default value
|
|
819
|
+
* @see {@link orElse} – catches all errors, not just absent input
|
|
820
|
+
*
|
|
821
|
+
* @category combinators
|
|
822
|
+
* @since 2.0.0
|
|
823
|
+
*/
|
|
824
|
+
A | A2>((provider, pathPrefix) =>
|
|
825
|
+
Effect.mapEager(
|
|
826
|
+
evaluateAt(self, provider, pathPrefix),
|
|
827
|
+
(resolution) => resolution._tag === "Absent" ? resolved(defaultValue, false) : resolution
|
|
828
|
+
)
|
|
829
|
+
);
|
|
587
830
|
})
|
|
588
831
|
|
|
589
832
|
/**
|
|
590
|
-
* Makes a config optional: returns `Some(value)` on success and `None` when
|
|
591
|
-
*
|
|
833
|
+
* Makes a config optional: returns `Some(value)` on success and `None` when the
|
|
834
|
+
* config cannot resolve because none of its relevant input is present.
|
|
592
835
|
*
|
|
593
836
|
* **When to use**
|
|
594
837
|
*
|
|
@@ -596,18 +839,21 @@ export const withDefault: {
|
|
|
596
839
|
*
|
|
597
840
|
* **Gotchas**
|
|
598
841
|
*
|
|
599
|
-
*
|
|
600
|
-
*
|
|
842
|
+
* Validation errors and partially supplied groups still propagate. Successful
|
|
843
|
+
* values are always wrapped in `Some`, including `undefined` when the schema
|
|
844
|
+
* explicitly accepts it. Schema configs first represent a missing or
|
|
845
|
+
* incompatible provider shape as `undefined`; `None` is returned only when the
|
|
846
|
+
* schema rejects that value and no relevant input was found.
|
|
601
847
|
*
|
|
602
848
|
* **Example** (Reading optional config)
|
|
603
849
|
*
|
|
604
|
-
* ```ts
|
|
605
|
-
* import { Config, ConfigProvider, Effect } from "effect"
|
|
850
|
+
* ```ts import.meta.vitest
|
|
851
|
+
* import { Config, ConfigProvider, Effect, Option } from "effect"
|
|
606
852
|
*
|
|
607
853
|
* const maybePort = Config.option(Config.number("port"))
|
|
608
854
|
*
|
|
609
855
|
* const provider = ConfigProvider.fromUnknown({})
|
|
610
|
-
*
|
|
856
|
+
* Effect.runSync(maybePort.parse(provider)) // => Option.none()
|
|
611
857
|
* ```
|
|
612
858
|
*
|
|
613
859
|
* @see {@link withDefault} – provide a concrete fallback value instead
|
|
@@ -649,7 +895,7 @@ export type Success<T> = [T] extends [Config<infer A>] ? A : never
|
|
|
649
895
|
*
|
|
650
896
|
* @see {@link unwrap} – construct a `Config` from a `Wrap<T>`
|
|
651
897
|
*
|
|
652
|
-
* @category
|
|
898
|
+
* @category utility types
|
|
653
899
|
* @since 2.0.0
|
|
654
900
|
*/
|
|
655
901
|
export type Wrap<A> = [NonNullable<A>] extends [infer T] ? [IsPlainObject<T>] extends [true] ?
|
|
@@ -677,8 +923,8 @@ type IsPlainObject<A> = [A] extends [Record<string, any>]
|
|
|
677
923
|
*
|
|
678
924
|
* **Example** (Unwrapping a record of configs)
|
|
679
925
|
*
|
|
680
|
-
* ```ts
|
|
681
|
-
* import { Config } from "effect"
|
|
926
|
+
* ```ts import.meta.vitest
|
|
927
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
682
928
|
*
|
|
683
929
|
* interface Options {
|
|
684
930
|
* key: string
|
|
@@ -686,128 +932,158 @@ type IsPlainObject<A> = [A] extends [Record<string, any>]
|
|
|
686
932
|
*
|
|
687
933
|
* const makeConfig = (config: Config.Wrap<Options>): Config.Config<Options> =>
|
|
688
934
|
* Config.unwrap(config)
|
|
935
|
+
*
|
|
936
|
+
* const config = makeConfig({ key: Config.string("key") })
|
|
937
|
+
* const provider = ConfigProvider.fromUnknown({ key: "value" })
|
|
938
|
+
* Effect.runSync(config.parse(provider)) // => { key: "value" }
|
|
689
939
|
* ```
|
|
690
940
|
*
|
|
691
941
|
* @see {@link Wrap} – the utility type accepted by this function
|
|
692
942
|
*
|
|
693
|
-
* @category
|
|
943
|
+
* @category converting
|
|
694
944
|
* @since 2.0.0
|
|
695
945
|
*/
|
|
696
946
|
export const unwrap = <T>(wrapped: Wrap<T>): Config<T> => {
|
|
697
947
|
if (isConfig(wrapped)) return wrapped
|
|
698
|
-
return
|
|
699
|
-
const entries = Object.entries(wrapped)
|
|
700
|
-
const configs = entries.map(([key, config]) =>
|
|
701
|
-
unwrap(config as any).parse(provider, pathPrefix).pipe(Effect.map((value) => [key, value] as const))
|
|
702
|
-
)
|
|
703
|
-
return Effect.all(configs).pipe(Effect.map(Object.fromEntries))
|
|
704
|
-
})
|
|
948
|
+
return all(Rec.map(wrapped as Record<string, Wrap<any>>, (config) => unwrap(config))) as Config<T>
|
|
705
949
|
}
|
|
706
950
|
|
|
707
951
|
// -----------------------------------------------------------------------------
|
|
708
952
|
// schema
|
|
709
953
|
// -----------------------------------------------------------------------------
|
|
710
954
|
|
|
711
|
-
|
|
955
|
+
interface ConfigCursor {
|
|
956
|
+
readonly provider: ConfigProvider.ConfigProvider
|
|
957
|
+
readonly path: Path
|
|
958
|
+
readonly node: ConfigProvider.Node | undefined
|
|
959
|
+
readonly toString: () => string
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
const cursorToString = (): string => "<configuration>"
|
|
963
|
+
|
|
964
|
+
const loadCursor: (
|
|
712
965
|
provider: ConfigProvider.ConfigProvider,
|
|
713
966
|
path: Path
|
|
714
|
-
) => Effect.Effect<
|
|
715
|
-
provider
|
|
716
|
-
|
|
717
|
-
) {
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
967
|
+
) => Effect.Effect<ConfigCursor> = (provider, path) =>
|
|
968
|
+
provider.load(path).pipe(
|
|
969
|
+
Effect.orDie,
|
|
970
|
+
Effect.mapEager((node) => ({ provider, path, node, toString: cursorToString }))
|
|
971
|
+
)
|
|
972
|
+
|
|
973
|
+
const loadChildCursor = (cursor: ConfigCursor, segment: string | number): Effect.Effect<ConfigCursor> =>
|
|
974
|
+
loadCursor(cursor.provider, [...cursor.path, segment])
|
|
975
|
+
|
|
976
|
+
const getScalar = (node: ConfigProvider.Node | undefined): string | undefined => node?.value
|
|
977
|
+
|
|
978
|
+
const decodeFromCursor = (
|
|
979
|
+
ast: SchemaAST.AST,
|
|
980
|
+
decode: (cursor: ConfigCursor) => Effect.Effect<unknown, SchemaIssue.Issue>
|
|
981
|
+
): SchemaAST.AST =>
|
|
982
|
+
SchemaAST.decodeTo(
|
|
983
|
+
SchemaAST.unknown,
|
|
984
|
+
ast,
|
|
985
|
+
new SchemaTransformation.Transformation(
|
|
986
|
+
SchemaGetter.transformOrFail((input: unknown) => decode(input as ConfigCursor)),
|
|
987
|
+
SchemaGetter.passthrough()
|
|
988
|
+
)
|
|
989
|
+
)
|
|
990
|
+
|
|
991
|
+
const isScalarInput = (ast: SchemaAST.AST): boolean => {
|
|
992
|
+
switch (ast._tag) {
|
|
993
|
+
case "Union":
|
|
994
|
+
return ast.types.every(isScalarInput)
|
|
995
|
+
case "Objects":
|
|
996
|
+
case "Arrays":
|
|
997
|
+
case "Suspend":
|
|
998
|
+
return false
|
|
999
|
+
default:
|
|
1000
|
+
return true
|
|
740
1001
|
}
|
|
741
|
-
}
|
|
1002
|
+
}
|
|
742
1003
|
|
|
743
|
-
const
|
|
1004
|
+
const hasProviderInput = (
|
|
744
1005
|
ast: SchemaAST.AST,
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
1006
|
+
node: ConfigProvider.Node | undefined
|
|
1007
|
+
): boolean => {
|
|
1008
|
+
switch (ast._tag) {
|
|
1009
|
+
case "Objects":
|
|
1010
|
+
return node?._tag === "Record"
|
|
1011
|
+
case "Arrays":
|
|
1012
|
+
return node?._tag === "Array"
|
|
1013
|
+
case "Union":
|
|
1014
|
+
return ast.types.some((ast) => hasProviderInput(ast, node))
|
|
1015
|
+
case "Suspend":
|
|
1016
|
+
return hasProviderInput(ast.thunk(), node)
|
|
1017
|
+
default:
|
|
1018
|
+
return getScalar(node) !== undefined
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
const toConfigCursorAST = (root: SchemaAST.AST): SchemaAST.AST => {
|
|
1023
|
+
const seen = new WeakSet<SchemaAST.AST>()
|
|
1024
|
+
const recur = SchemaAST.applyToSelfOrLastLinkEncoding((ast) => {
|
|
1025
|
+
seen.add(ast)
|
|
749
1026
|
switch (ast._tag) {
|
|
750
1027
|
case "Objects": {
|
|
751
|
-
const
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
const name = ps.name
|
|
756
|
-
if (typeof name === "string") {
|
|
757
|
-
const value = yield* recur(ps.type, provider, [...path, name])
|
|
758
|
-
if (value !== undefined) InternalRecord.assignProperty(out, name, value)
|
|
1028
|
+
const matchesIndex = ast.indexSignatures.map((is) => SchemaParser._is(is.parameter))
|
|
1029
|
+
const materialize = Effect.fnUntraced(function*(cursor: ConfigCursor) {
|
|
1030
|
+
if (cursor.node?._tag !== "Record") {
|
|
1031
|
+
return undefined
|
|
759
1032
|
}
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
if (value !== undefined) InternalRecord.assignProperty(out, key, value)
|
|
769
|
-
}
|
|
770
|
-
}
|
|
1033
|
+
const node = cursor.node
|
|
1034
|
+
const keys = new Set<string>()
|
|
1035
|
+
for (const property of ast.propertySignatures) {
|
|
1036
|
+
if (typeof property.name === "string") keys.add(property.name)
|
|
1037
|
+
}
|
|
1038
|
+
if (matchesIndex.length > 0) {
|
|
1039
|
+
for (const key of node.keys) {
|
|
1040
|
+
if (matchesIndex.some((matches) => matches(key))) keys.add(key)
|
|
771
1041
|
}
|
|
772
1042
|
}
|
|
773
|
-
|
|
774
|
-
|
|
1043
|
+
const out: Record<string, ConfigCursor> = {}
|
|
1044
|
+
for (const key of keys) {
|
|
1045
|
+
const child = yield* loadChildCursor(cursor, key)
|
|
1046
|
+
if (child.node !== undefined) InternalRecord.assignProperty(out, key, child)
|
|
1047
|
+
}
|
|
1048
|
+
return out
|
|
1049
|
+
})
|
|
1050
|
+
return decodeFromCursor(ast.recur(recur, (ast) => ast), materialize)
|
|
775
1051
|
}
|
|
776
1052
|
case "Arrays": {
|
|
777
|
-
const
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
if (stat && stat._tag === "Array" && stat.value !== undefined) {
|
|
781
|
-
return stat.value === "" ? [] : stat.value.split(",")
|
|
782
|
-
}
|
|
783
|
-
const out: Array<Schema.StringTree> = []
|
|
784
|
-
const length = stat && stat._tag === "Array" ? stat.length : ast.elements.length
|
|
785
|
-
for (let i = 0; i < length; i++) {
|
|
786
|
-
const element = ast.elements[i] ?? ast.rest[0]
|
|
787
|
-
if (element !== undefined) {
|
|
788
|
-
out.push(yield* recur(element, provider, [...path, i]))
|
|
1053
|
+
const materialize = Effect.fnUntraced(function*(cursor: ConfigCursor) {
|
|
1054
|
+
if (cursor.node?._tag !== "Array") {
|
|
1055
|
+
return undefined
|
|
789
1056
|
}
|
|
790
|
-
|
|
791
|
-
|
|
1057
|
+
const out: Array<ConfigCursor> = []
|
|
1058
|
+
for (let i = 0; i < cursor.node.length; i++) {
|
|
1059
|
+
out.push(yield* loadChildCursor(cursor, i))
|
|
1060
|
+
}
|
|
1061
|
+
return out
|
|
1062
|
+
})
|
|
1063
|
+
return decodeFromCursor(ast.recur(recur), materialize)
|
|
792
1064
|
}
|
|
793
1065
|
case "Union":
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
return
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
if (
|
|
804
|
-
|
|
805
|
-
// Container without a co-located value cannot satisfy a scalar request.
|
|
806
|
-
return undefined
|
|
1066
|
+
for (const member of ast.types) {
|
|
1067
|
+
recur(member)
|
|
1068
|
+
}
|
|
1069
|
+
return isScalarInput(ast)
|
|
1070
|
+
? decodeFromCursor(ast, (cursor) => Effect.succeed(getScalar(cursor.node)))
|
|
1071
|
+
: ast.recur(recur)
|
|
1072
|
+
case "Suspend": {
|
|
1073
|
+
const target = ast.thunk()
|
|
1074
|
+
// Force new branches so opaque encodings fail when the Config is constructed.
|
|
1075
|
+
if (!seen.has(target)) recur(target)
|
|
1076
|
+
return ast.recur(recur)
|
|
807
1077
|
}
|
|
1078
|
+
case "Declaration":
|
|
1079
|
+
case "Any":
|
|
1080
|
+
throw new globalThis.Error("Config.schema does not support opaque StringTree encodings", { cause: ast })
|
|
1081
|
+
default:
|
|
1082
|
+
return decodeFromCursor(ast, (cursor) => Effect.succeed(getScalar(cursor.node)))
|
|
808
1083
|
}
|
|
809
|
-
}
|
|
810
|
-
)
|
|
1084
|
+
})
|
|
1085
|
+
return recur(root)
|
|
1086
|
+
}
|
|
811
1087
|
|
|
812
1088
|
/**
|
|
813
1089
|
* Creates a `Config<T>` from a `Schema.Codec`.
|
|
@@ -826,12 +1102,47 @@ const recur: (
|
|
|
826
1102
|
* Convenience constructors such as `string`, `number`, and `boolean` delegate
|
|
827
1103
|
* to this API.
|
|
828
1104
|
*
|
|
829
|
-
* The codec is
|
|
830
|
-
*
|
|
1105
|
+
* The codec is converted to its canonical `StringTree` form. Its encoded shape
|
|
1106
|
+
* determines how provider data is loaded: scalar schemas read a co-located
|
|
1107
|
+
* scalar value, object schemas read declared properties and matching record
|
|
1108
|
+
* keys, and array schemas read indexed children. A mixed-shape union loads each
|
|
1109
|
+
* member according to that member's shape before applying the union's mode and
|
|
1110
|
+
* checks.
|
|
1111
|
+
*
|
|
1112
|
+
* At the config's lookup path, a missing node or a node that cannot provide the
|
|
1113
|
+
* representation required by the schema is decoded as `undefined`. Missing
|
|
1114
|
+
* object properties remain omitted so the schema's property semantics still
|
|
1115
|
+
* apply. Decoding success always wins, even when no provider input was found.
|
|
1116
|
+
* For example,
|
|
1117
|
+
* `Schema.UndefinedOr(Schema.String)` decodes to `undefined` and is not replaced
|
|
1118
|
+
* by {@link withDefault}. If decoding fails and no relevant representation was
|
|
1119
|
+
* found, the config is absent. Invalid data in a relevant representation is a
|
|
1120
|
+
* validation failure. Provider `SourceError`s are always failures.
|
|
1121
|
+
*
|
|
1122
|
+
* **Gotchas**
|
|
1123
|
+
*
|
|
1124
|
+
* Plain `Schema.Array` and `Schema.Record` schemas use structural provider
|
|
1125
|
+
* input. Use {@link Array} or {@link Record} when a flat separated string must
|
|
1126
|
+
* also be accepted.
|
|
1127
|
+
*
|
|
1128
|
+
* `Schema.Struct` and {@link all} describe different lookup models. An
|
|
1129
|
+
* explicitly present empty object is relevant input for a struct and required
|
|
1130
|
+
* fields are validated. The same empty parent container does not make an
|
|
1131
|
+
* `all` group present when all of its child configs are absent.
|
|
1132
|
+
*
|
|
1133
|
+
* The canonical `StringTree` encoding must expose a concrete scalar, object,
|
|
1134
|
+
* array, or union shape. Opaque encodings such as `Schema.Any`,
|
|
1135
|
+
* `Schema.Unknown`, `Schema.ObjectKeyword`, `Schema.Json`, and
|
|
1136
|
+
* `Schema.MutableJson` are rejected synchronously when this config is
|
|
1137
|
+
* constructed, including when they are nested in another schema. Suspended
|
|
1138
|
+
* recursive schemas remain supported when their eventual shape is concrete.
|
|
1139
|
+
* Declarations such as `Schema.URL` also remain supported when their canonical
|
|
1140
|
+
* encoding has a concrete shape. To read arbitrary JSON from one scalar value,
|
|
1141
|
+
* use `Schema.fromJsonString(Schema.Json)`.
|
|
831
1142
|
*
|
|
832
1143
|
* **Example** (Reading a structured config)
|
|
833
1144
|
*
|
|
834
|
-
* ```ts
|
|
1145
|
+
* ```ts import.meta.vitest
|
|
835
1146
|
* import { Config, ConfigProvider, Effect, Schema } from "effect"
|
|
836
1147
|
*
|
|
837
1148
|
* const DbConfig = Config.schema(
|
|
@@ -846,8 +1157,7 @@ const recur: (
|
|
|
846
1157
|
* db: { host: "localhost", port: 5432 }
|
|
847
1158
|
* })
|
|
848
1159
|
*
|
|
849
|
-
*
|
|
850
|
-
* // { host: "localhost", port: 5432 }
|
|
1160
|
+
* Effect.runSync(DbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
851
1161
|
* ```
|
|
852
1162
|
*
|
|
853
1163
|
* @see {@link string} / {@link number} / {@link boolean} – shortcuts for
|
|
@@ -858,20 +1168,31 @@ const recur: (
|
|
|
858
1168
|
*/
|
|
859
1169
|
export function schema<T>(codec: Schema.ConstraintCodec<T, unknown>, path?: string | ConfigProvider.Path): Config<T> {
|
|
860
1170
|
const codecStringTree = Schema.toCodecStringTree(codec)
|
|
861
|
-
const
|
|
862
|
-
const
|
|
1171
|
+
const encodedAst = SchemaAST.toEncoded(codecStringTree.ast)
|
|
1172
|
+
const decodeCursor = SchemaParser.decodeUnknownEffect(
|
|
1173
|
+
Schema.make<Schema.Codec<T, ConfigCursor>>(toConfigCursorAST(codecStringTree.ast))
|
|
1174
|
+
)
|
|
863
1175
|
const localPath = typeof path === "string" ? [path] : path ?? []
|
|
864
1176
|
return make((provider, pathPrefix) => {
|
|
865
1177
|
const fullPath = [...pathPrefix, ...localPath]
|
|
866
|
-
return
|
|
867
|
-
Effect.flatMapEager((
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
1178
|
+
return catchSourceError(loadCursor(provider, fullPath), false).pipe(
|
|
1179
|
+
Effect.flatMapEager((cursor) => {
|
|
1180
|
+
const hasInput = hasProviderInput(encodedAst, cursor.node)
|
|
1181
|
+
return catchSourceError(
|
|
1182
|
+
decodeCursor(cursor).pipe(
|
|
1183
|
+
Effect.mapEager((value) => resolved(value, hasInput)),
|
|
1184
|
+
Effect.catchEager((issue) => {
|
|
1185
|
+
const error = new ConfigError(
|
|
1186
|
+
new Schema.SchemaError(fullPath.length > 0 ? new SchemaIssue.Pointer(fullPath, issue) : issue)
|
|
1187
|
+
)
|
|
1188
|
+
return hasInput
|
|
1189
|
+
? Effect.fail(evaluationFailure(error, true))
|
|
1190
|
+
: Effect.succeed(absent(error))
|
|
1191
|
+
})
|
|
1192
|
+
),
|
|
1193
|
+
hasInput
|
|
872
1194
|
)
|
|
873
|
-
)
|
|
874
|
-
Effect.mapErrorEager((cause) => new ConfigError(cause))
|
|
1195
|
+
})
|
|
875
1196
|
)
|
|
876
1197
|
})
|
|
877
1198
|
}
|
|
@@ -962,7 +1283,7 @@ export const LogLevel = Schema.Literals(LogLevel_.values)
|
|
|
962
1283
|
*
|
|
963
1284
|
* **Example** (Parsing a comma-separated record)
|
|
964
1285
|
*
|
|
965
|
-
* ```ts
|
|
1286
|
+
* ```ts import.meta.vitest
|
|
966
1287
|
* import { Config, ConfigProvider, Effect, Schema } from "effect"
|
|
967
1288
|
*
|
|
968
1289
|
* const schema = Config.Record(Schema.String, Schema.String)
|
|
@@ -975,14 +1296,14 @@ export const LogLevel = Schema.Literals(LogLevel_.values)
|
|
|
975
1296
|
* }
|
|
976
1297
|
* })
|
|
977
1298
|
*
|
|
978
|
-
*
|
|
979
|
-
* //
|
|
980
|
-
*
|
|
981
|
-
*
|
|
982
|
-
* // 'custom.attribute': 'value'
|
|
983
|
-
* // }
|
|
1299
|
+
* const result = Effect.runSync(config.parse(provider))
|
|
1300
|
+
* result["service.name"] // => "my-service"
|
|
1301
|
+
* result["service.version"] // => "1.0.0"
|
|
1302
|
+
* result["custom.attribute"] // => "value"
|
|
984
1303
|
* ```
|
|
985
1304
|
*
|
|
1305
|
+
* @see {@link Array} for separated or structural array input
|
|
1306
|
+
*
|
|
986
1307
|
* @category schemas
|
|
987
1308
|
* @since 4.0.0
|
|
988
1309
|
*/
|
|
@@ -991,35 +1312,31 @@ export const Record = <K extends Schema.Record.Key, V extends Schema.Constraint>
|
|
|
991
1312
|
readonly keyValueSeparator?: string | undefined
|
|
992
1313
|
}) => {
|
|
993
1314
|
const record = Schema.Record(key, value)
|
|
1315
|
+
const split = SchemaTransformation.splitKeyValue(options)
|
|
994
1316
|
const recordString = Schema.String.pipe(
|
|
995
|
-
Schema.decodeTo(
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1317
|
+
Schema.decodeTo(Schema.toCodecStringTree(record), {
|
|
1318
|
+
decode: split.decode,
|
|
1319
|
+
encode: SchemaGetter.passthrough<Record<string, string>, Schema.StringTree>({ strict: false }).compose(
|
|
1320
|
+
split.encode
|
|
1321
|
+
)
|
|
1322
|
+
})
|
|
1000
1323
|
)
|
|
1001
1324
|
|
|
1002
1325
|
return Schema.Union([record, recordString])
|
|
1003
1326
|
}
|
|
1004
1327
|
|
|
1005
|
-
/**
|
|
1006
|
-
* @category schemas
|
|
1007
|
-
* @since 4.0.0
|
|
1008
|
-
*/
|
|
1009
1328
|
const ArrayConfig = <V extends Schema.Constraint>(value: V, options?: {
|
|
1010
1329
|
readonly separator?: string | undefined
|
|
1011
1330
|
}) => {
|
|
1012
1331
|
const array = Schema.Array(value)
|
|
1013
1332
|
const separator = options?.separator ?? ","
|
|
1014
1333
|
const arrayString = Schema.String.pipe(
|
|
1015
|
-
Schema.decodeTo(
|
|
1016
|
-
|
|
1017
|
-
{
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
),
|
|
1022
|
-
Schema.decodeTo(array)
|
|
1334
|
+
Schema.decodeTo(Schema.toCodecStringTree(array), {
|
|
1335
|
+
decode: SchemaGetter.split(options),
|
|
1336
|
+
encode: SchemaGetter.passthrough<ReadonlyArray<string>, Schema.StringTree>({ strict: false }).compose(
|
|
1337
|
+
SchemaGetter.transform((input) => input.join(separator))
|
|
1338
|
+
)
|
|
1339
|
+
})
|
|
1023
1340
|
)
|
|
1024
1341
|
|
|
1025
1342
|
return Schema.Union([arrayString, array])
|
|
@@ -1039,6 +1356,8 @@ export {
|
|
|
1039
1356
|
* Accepts either a JSON-like array from the provider or a flat string like
|
|
1040
1357
|
* `"a,b,c"`. The `separator` defaults to `","` and can be customized.
|
|
1041
1358
|
*
|
|
1359
|
+
* @see {@link Record} for separated or structural record input
|
|
1360
|
+
*
|
|
1042
1361
|
* @category schemas
|
|
1043
1362
|
* @since 4.0.0
|
|
1044
1363
|
*/
|
|
@@ -1061,7 +1380,7 @@ export {
|
|
|
1061
1380
|
* @since 2.0.0
|
|
1062
1381
|
*/
|
|
1063
1382
|
export function fail(err: SourceError | Schema.SchemaError) {
|
|
1064
|
-
return make(() => Effect.fail(new ConfigError(err)))
|
|
1383
|
+
return make(() => Effect.fail(evaluationFailure(new ConfigError(err), false)))
|
|
1065
1384
|
}
|
|
1066
1385
|
|
|
1067
1386
|
/**
|
|
@@ -1075,19 +1394,21 @@ export function fail(err: SourceError | Schema.SchemaError) {
|
|
|
1075
1394
|
*
|
|
1076
1395
|
* **Example** (Returning a constant fallback)
|
|
1077
1396
|
*
|
|
1078
|
-
* ```ts
|
|
1079
|
-
* import { Config } from "effect"
|
|
1397
|
+
* ```ts import.meta.vitest
|
|
1398
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1080
1399
|
*
|
|
1081
1400
|
* const host = Config.string("HOST").pipe(
|
|
1082
1401
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
1083
1402
|
* )
|
|
1403
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
1404
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1084
1405
|
* ```
|
|
1085
1406
|
*
|
|
1086
1407
|
* @category constructors
|
|
1087
1408
|
* @since 2.0.0
|
|
1088
1409
|
*/
|
|
1089
1410
|
export function succeed<T>(value: T) {
|
|
1090
|
-
return make(() => Effect.succeed(value))
|
|
1411
|
+
return make(() => Effect.succeed(resolved(value, false)))
|
|
1091
1412
|
}
|
|
1092
1413
|
|
|
1093
1414
|
/**
|
|
@@ -1103,13 +1424,13 @@ export function succeed<T>(value: T) {
|
|
|
1103
1424
|
*
|
|
1104
1425
|
* **Example** (Reading a string config)
|
|
1105
1426
|
*
|
|
1106
|
-
* ```ts
|
|
1427
|
+
* ```ts import.meta.vitest
|
|
1107
1428
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1108
1429
|
*
|
|
1109
1430
|
* const host = Config.string("HOST")
|
|
1110
1431
|
*
|
|
1111
1432
|
* const provider = ConfigProvider.fromUnknown({ HOST: "localhost" })
|
|
1112
|
-
*
|
|
1433
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1113
1434
|
* ```
|
|
1114
1435
|
*
|
|
1115
1436
|
* @see {@link nonEmptyString} – rejects empty strings
|
|
@@ -1220,10 +1541,12 @@ export function int(name?: string) {
|
|
|
1220
1541
|
*
|
|
1221
1542
|
* **Example** (Restricting to a literal)
|
|
1222
1543
|
*
|
|
1223
|
-
* ```ts
|
|
1224
|
-
* import { Config } from "effect"
|
|
1544
|
+
* ```ts import.meta.vitest
|
|
1545
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1225
1546
|
*
|
|
1226
1547
|
* const env = Config.literal("production", "ENV")
|
|
1548
|
+
* const provider = ConfigProvider.fromUnknown({ ENV: "production" })
|
|
1549
|
+
* Effect.runSync(env.parse(provider)) // => "production"
|
|
1227
1550
|
* ```
|
|
1228
1551
|
*
|
|
1229
1552
|
* @see {@link literals} – accepts multiple literal values
|
|
@@ -1247,10 +1570,12 @@ export function literal<L extends SchemaAST.LiteralValue>(literal: L, name?: str
|
|
|
1247
1570
|
*
|
|
1248
1571
|
* **Example** (Restricting to a set of literals)
|
|
1249
1572
|
*
|
|
1250
|
-
* ```ts
|
|
1251
|
-
* import { Config } from "effect"
|
|
1573
|
+
* ```ts import.meta.vitest
|
|
1574
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1252
1575
|
*
|
|
1253
1576
|
* const env = Config.literals(["development", "production"], "ENV")
|
|
1577
|
+
* const provider = ConfigProvider.fromUnknown({ ENV: "development" })
|
|
1578
|
+
* Effect.runSync(env.parse(provider)) // => "development"
|
|
1254
1579
|
* ```
|
|
1255
1580
|
*
|
|
1256
1581
|
* @see {@link literal} for accepting one specific literal value
|
|
@@ -1279,13 +1604,10 @@ export function literals<const L extends ReadonlyArray<SchemaAST.LiteralValue>>(
|
|
|
1279
1604
|
*
|
|
1280
1605
|
* **Example** (Reading a boolean flag)
|
|
1281
1606
|
*
|
|
1282
|
-
* ```ts
|
|
1607
|
+
* ```ts import.meta.vitest
|
|
1283
1608
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1284
1609
|
*
|
|
1285
|
-
* const program =
|
|
1286
|
-
* const flag = yield* Config.boolean("FEATURE_FLAG")
|
|
1287
|
-
* console.log(flag)
|
|
1288
|
-
* })
|
|
1610
|
+
* const program = Config.boolean("FEATURE_FLAG")
|
|
1289
1611
|
*
|
|
1290
1612
|
* const provider = ConfigProvider.fromEnv({
|
|
1291
1613
|
* env: {
|
|
@@ -1295,8 +1617,7 @@ export function literals<const L extends ReadonlyArray<SchemaAST.LiteralValue>>(
|
|
|
1295
1617
|
*
|
|
1296
1618
|
* Effect.runSync(
|
|
1297
1619
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1298
|
-
* )
|
|
1299
|
-
* // Output: true
|
|
1620
|
+
* ) // => true
|
|
1300
1621
|
* ```
|
|
1301
1622
|
*
|
|
1302
1623
|
* @see {@link Boolean} for the underlying boolean codec
|
|
@@ -1325,13 +1646,10 @@ export function boolean(name?: string) {
|
|
|
1325
1646
|
*
|
|
1326
1647
|
* **Example** (Reading a duration)
|
|
1327
1648
|
*
|
|
1328
|
-
* ```ts
|
|
1329
|
-
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1649
|
+
* ```ts import.meta.vitest
|
|
1650
|
+
* import { Config, ConfigProvider, Duration, Effect } from "effect"
|
|
1330
1651
|
*
|
|
1331
|
-
* const program = Effect.
|
|
1332
|
-
* const duration = yield* Config.duration("DURATION")
|
|
1333
|
-
* console.log(duration)
|
|
1334
|
-
* })
|
|
1652
|
+
* const program = Config.duration("DURATION").pipe(Effect.map(Duration.toMillis))
|
|
1335
1653
|
*
|
|
1336
1654
|
* const provider = ConfigProvider.fromEnv({
|
|
1337
1655
|
* env: {
|
|
@@ -1341,8 +1659,7 @@ export function boolean(name?: string) {
|
|
|
1341
1659
|
*
|
|
1342
1660
|
* Effect.runSync(
|
|
1343
1661
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1344
|
-
* )
|
|
1345
|
-
* // Output: Duration { _tag: "millis", value: 10000 }
|
|
1662
|
+
* ) // => 10000
|
|
1346
1663
|
* ```
|
|
1347
1664
|
*
|
|
1348
1665
|
* @see {@link schema} for decoding configuration values with a custom codec
|
|
@@ -1367,13 +1684,10 @@ export function duration(name?: string) {
|
|
|
1367
1684
|
*
|
|
1368
1685
|
* **Example** (Reading a port)
|
|
1369
1686
|
*
|
|
1370
|
-
* ```ts
|
|
1687
|
+
* ```ts import.meta.vitest
|
|
1371
1688
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1372
1689
|
*
|
|
1373
|
-
* const program =
|
|
1374
|
-
* const port = yield* Config.port("PORT")
|
|
1375
|
-
* console.log(port)
|
|
1376
|
-
* })
|
|
1690
|
+
* const program = Config.port("PORT")
|
|
1377
1691
|
*
|
|
1378
1692
|
* const provider = ConfigProvider.fromEnv({
|
|
1379
1693
|
* env: {
|
|
@@ -1383,8 +1697,7 @@ export function duration(name?: string) {
|
|
|
1383
1697
|
*
|
|
1384
1698
|
* Effect.runSync(
|
|
1385
1699
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1386
|
-
* )
|
|
1387
|
-
* // Output: 8080
|
|
1700
|
+
* ) // => 8080
|
|
1388
1701
|
* ```
|
|
1389
1702
|
*
|
|
1390
1703
|
* @see {@link int} for integer config values outside the port range
|
|
@@ -1413,13 +1726,10 @@ export function port(name?: string) {
|
|
|
1413
1726
|
*
|
|
1414
1727
|
* **Example** (Reading a log level)
|
|
1415
1728
|
*
|
|
1416
|
-
* ```ts
|
|
1729
|
+
* ```ts import.meta.vitest
|
|
1417
1730
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1418
1731
|
*
|
|
1419
|
-
* const program =
|
|
1420
|
-
* const logLevel = yield* Config.logLevel("LOG_LEVEL")
|
|
1421
|
-
* console.log(logLevel)
|
|
1422
|
-
* })
|
|
1732
|
+
* const program = Config.logLevel("LOG_LEVEL")
|
|
1423
1733
|
*
|
|
1424
1734
|
* const provider = ConfigProvider.fromEnv({
|
|
1425
1735
|
* env: {
|
|
@@ -1429,8 +1739,7 @@ export function port(name?: string) {
|
|
|
1429
1739
|
*
|
|
1430
1740
|
* Effect.runSync(
|
|
1431
1741
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1432
|
-
* )
|
|
1433
|
-
* // Output: "Info"
|
|
1742
|
+
* ) // => "Info"
|
|
1434
1743
|
* ```
|
|
1435
1744
|
*
|
|
1436
1745
|
* @see {@link LogLevel} for the underlying log-level codec
|
|
@@ -1457,13 +1766,10 @@ export function logLevel(name?: string) {
|
|
|
1457
1766
|
*
|
|
1458
1767
|
* **Example** (Reading a secret)
|
|
1459
1768
|
*
|
|
1460
|
-
* ```ts
|
|
1769
|
+
* ```ts import.meta.vitest
|
|
1461
1770
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1462
1771
|
*
|
|
1463
|
-
* const program = Effect.
|
|
1464
|
-
* const apiKey = yield* Config.redacted("API_KEY")
|
|
1465
|
-
* console.log(apiKey)
|
|
1466
|
-
* })
|
|
1772
|
+
* const program = Config.redacted("API_KEY").pipe(Effect.map(String))
|
|
1467
1773
|
*
|
|
1468
1774
|
* const provider = ConfigProvider.fromEnv({
|
|
1469
1775
|
* env: {
|
|
@@ -1473,8 +1779,7 @@ export function logLevel(name?: string) {
|
|
|
1473
1779
|
*
|
|
1474
1780
|
* Effect.runSync(
|
|
1475
1781
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1476
|
-
* )
|
|
1477
|
-
* // Output: <redacted>
|
|
1782
|
+
* ) // => "<redacted>"
|
|
1478
1783
|
* ```
|
|
1479
1784
|
*
|
|
1480
1785
|
* @see {@link string} for non-secret string settings
|
|
@@ -1503,13 +1808,10 @@ export function redacted(name?: string) {
|
|
|
1503
1808
|
*
|
|
1504
1809
|
* **Example** (Reading a URL)
|
|
1505
1810
|
*
|
|
1506
|
-
* ```ts
|
|
1811
|
+
* ```ts import.meta.vitest
|
|
1507
1812
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1508
1813
|
*
|
|
1509
|
-
* const program = Effect.
|
|
1510
|
-
* const url = yield* Config.url("URL")
|
|
1511
|
-
* console.log(url)
|
|
1512
|
-
* })
|
|
1814
|
+
* const program = Config.url("URL").pipe(Effect.map((url) => url.href))
|
|
1513
1815
|
*
|
|
1514
1816
|
* const provider = ConfigProvider.fromEnv({
|
|
1515
1817
|
* env: {
|
|
@@ -1519,22 +1821,7 @@ export function redacted(name?: string) {
|
|
|
1519
1821
|
*
|
|
1520
1822
|
* Effect.runSync(
|
|
1521
1823
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1522
|
-
* )
|
|
1523
|
-
* // Output:
|
|
1524
|
-
* // URL {
|
|
1525
|
-
* // href: 'https://example.com/',
|
|
1526
|
-
* // origin: 'https://example.com',
|
|
1527
|
-
* // protocol: 'https:',
|
|
1528
|
-
* // username: '',
|
|
1529
|
-
* // password: '',
|
|
1530
|
-
* // host: 'example.com',
|
|
1531
|
-
* // hostname: 'example.com',
|
|
1532
|
-
* // port: '',
|
|
1533
|
-
* // pathname: '/',
|
|
1534
|
-
* // search: '',
|
|
1535
|
-
* // searchParams: URLSearchParams {},
|
|
1536
|
-
* // hash: ''
|
|
1537
|
-
* // }
|
|
1824
|
+
* ) // => "https://example.com/"
|
|
1538
1825
|
* ```
|
|
1539
1826
|
*
|
|
1540
1827
|
* @see {@link schema} for decoding configuration values with a custom codec
|
|
@@ -1563,14 +1850,13 @@ export function url(name?: string) {
|
|
|
1563
1850
|
*
|
|
1564
1851
|
* **Example** (Reading a date)
|
|
1565
1852
|
*
|
|
1566
|
-
* ```ts
|
|
1853
|
+
* ```ts import.meta.vitest
|
|
1567
1854
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1568
1855
|
*
|
|
1569
1856
|
* const createdAt = Config.date("CREATED_AT")
|
|
1570
1857
|
*
|
|
1571
1858
|
* const provider = ConfigProvider.fromUnknown({ CREATED_AT: "2024-01-15" })
|
|
1572
|
-
*
|
|
1573
|
-
* // Date("2024-01-15T00:00:00.000Z")
|
|
1859
|
+
* Effect.runSync(createdAt.parse(provider)).toISOString() // => "2024-01-15T00:00:00.000Z"
|
|
1574
1860
|
* ```
|
|
1575
1861
|
*
|
|
1576
1862
|
* @category constructors
|
|
@@ -1598,7 +1884,7 @@ export function date(name?: string) {
|
|
|
1598
1884
|
*
|
|
1599
1885
|
* **Example** (Nesting a struct config under `"database"`)
|
|
1600
1886
|
*
|
|
1601
|
-
* ```ts
|
|
1887
|
+
* ```ts import.meta.vitest
|
|
1602
1888
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1603
1889
|
*
|
|
1604
1890
|
* const dbConfig = Config.all({
|
|
@@ -1609,13 +1895,12 @@ export function date(name?: string) {
|
|
|
1609
1895
|
* const provider = ConfigProvider.fromUnknown({
|
|
1610
1896
|
* database: { host: "localhost", port: "5432" }
|
|
1611
1897
|
* })
|
|
1612
|
-
*
|
|
1613
|
-
* // { host: "localhost", port: 5432 }
|
|
1898
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
1614
1899
|
* ```
|
|
1615
1900
|
*
|
|
1616
1901
|
* **Example** (Reading env vars with a nested prefix)
|
|
1617
1902
|
*
|
|
1618
|
-
* ```ts
|
|
1903
|
+
* ```ts import.meta.vitest
|
|
1619
1904
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1620
1905
|
*
|
|
1621
1906
|
* const host = Config.string("host").pipe(Config.nested("database"))
|
|
@@ -1623,7 +1908,7 @@ export function date(name?: string) {
|
|
|
1623
1908
|
* const provider = ConfigProvider.fromEnv({
|
|
1624
1909
|
* env: { database_host: "localhost" }
|
|
1625
1910
|
* })
|
|
1626
|
-
*
|
|
1911
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1627
1912
|
* ```
|
|
1628
1913
|
*
|
|
1629
1914
|
* @see {@link all} – combine multiple configs into a struct
|
|
@@ -1651,7 +1936,7 @@ export const nested: {
|
|
|
1651
1936
|
*
|
|
1652
1937
|
* **Example** (Nesting a struct config under `"database"`)
|
|
1653
1938
|
*
|
|
1654
|
-
* ```ts
|
|
1939
|
+
* ```ts import.meta.vitest
|
|
1655
1940
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1656
1941
|
*
|
|
1657
1942
|
* const dbConfig = Config.all({
|
|
@@ -1662,13 +1947,12 @@ export const nested: {
|
|
|
1662
1947
|
* const provider = ConfigProvider.fromUnknown({
|
|
1663
1948
|
* database: { host: "localhost", port: "5432" }
|
|
1664
1949
|
* })
|
|
1665
|
-
*
|
|
1666
|
-
* // { host: "localhost", port: 5432 }
|
|
1950
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
1667
1951
|
* ```
|
|
1668
1952
|
*
|
|
1669
1953
|
* **Example** (Reading env vars with a nested prefix)
|
|
1670
1954
|
*
|
|
1671
|
-
* ```ts
|
|
1955
|
+
* ```ts import.meta.vitest
|
|
1672
1956
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1673
1957
|
*
|
|
1674
1958
|
* const host = Config.string("host").pipe(Config.nested("database"))
|
|
@@ -1676,7 +1960,7 @@ export const nested: {
|
|
|
1676
1960
|
* const provider = ConfigProvider.fromEnv({
|
|
1677
1961
|
* env: { database_host: "localhost" }
|
|
1678
1962
|
* })
|
|
1679
|
-
*
|
|
1963
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1680
1964
|
* ```
|
|
1681
1965
|
*
|
|
1682
1966
|
* @see {@link all} – combine multiple configs into a struct
|
|
@@ -1704,7 +1988,7 @@ export const nested: {
|
|
|
1704
1988
|
*
|
|
1705
1989
|
* **Example** (Nesting a struct config under `"database"`)
|
|
1706
1990
|
*
|
|
1707
|
-
* ```ts
|
|
1991
|
+
* ```ts import.meta.vitest
|
|
1708
1992
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1709
1993
|
*
|
|
1710
1994
|
* const dbConfig = Config.all({
|
|
@@ -1715,13 +1999,12 @@ export const nested: {
|
|
|
1715
1999
|
* const provider = ConfigProvider.fromUnknown({
|
|
1716
2000
|
* database: { host: "localhost", port: "5432" }
|
|
1717
2001
|
* })
|
|
1718
|
-
*
|
|
1719
|
-
* // { host: "localhost", port: 5432 }
|
|
2002
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
1720
2003
|
* ```
|
|
1721
2004
|
*
|
|
1722
2005
|
* **Example** (Reading env vars with a nested prefix)
|
|
1723
2006
|
*
|
|
1724
|
-
* ```ts
|
|
2007
|
+
* ```ts import.meta.vitest
|
|
1725
2008
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1726
2009
|
*
|
|
1727
2010
|
* const host = Config.string("host").pipe(Config.nested("database"))
|
|
@@ -1729,7 +2012,7 @@ export const nested: {
|
|
|
1729
2012
|
* const provider = ConfigProvider.fromEnv({
|
|
1730
2013
|
* env: { database_host: "localhost" }
|
|
1731
2014
|
* })
|
|
1732
|
-
*
|
|
2015
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1733
2016
|
* ```
|
|
1734
2017
|
*
|
|
1735
2018
|
* @see {@link all} – combine multiple configs into a struct
|
|
@@ -1742,5 +2025,5 @@ export const nested: {
|
|
|
1742
2025
|
} = dual(
|
|
1743
2026
|
2,
|
|
1744
2027
|
<A>(self: Config<A>, name: string): Config<A> =>
|
|
1745
|
-
make((provider, pathPrefix) => self
|
|
2028
|
+
make((provider, pathPrefix) => evaluateAt(self, provider, [...pathPrefix, name]))
|
|
1746
2029
|
)
|