effect 4.0.0-beta.101 → 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 +462 -412
- 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 +541 -449
- 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 +226 -174
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +339 -267
- 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 +122 -87
- 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 +18 -24
- 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 +2897 -3342
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1383 -1580
- 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 +109 -75
- 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 +230 -307
- 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 +46 -103
- 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 +300 -239
- 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 +207 -452
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +16 -5
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +10 -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 +202 -645
- 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 +190 -292
- 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 +213 -393
- 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.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +1 -4
- 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 +361 -466
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +163 -216
- 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 -213
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +102 -213
- 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 +25 -19
- 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 +135 -218
- 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 +1835 -1060
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +2708 -1050
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +29 -52
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +537 -391
- 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 +8 -7
- package/dist/SchemaError.js.map +1 -1
- package/dist/SchemaGetter.d.ts +230 -185
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +252 -209
- 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 +74 -266
- 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 -86
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +398 -1513
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +290 -2854
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +116 -76
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +123 -88
- 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 +101 -13
- 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 +2430 -2958
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +1124 -1397
- 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 +46 -54
- 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 +127 -70
- 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.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/internal/array.js.map +1 -1
- package/dist/internal/core.js +3 -2
- 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 +141 -61
- 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 +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.d.ts +0 -3
- package/dist/internal/record.d.ts.map +1 -1
- package/dist/internal/record.js +10 -5
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/redacted.js.map +1 -1
- package/dist/internal/references.js +3 -4
- 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 +12 -0
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/cause.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
- package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +745 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
- package/dist/internal/schema/fromRepresentation.d.ts +2 -0
- package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
- package/dist/internal/schema/fromRepresentation.js +245 -0
- package/dist/internal/schema/fromRepresentation.js.map +1 -0
- 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 +28 -40
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/{arbitrary.d.ts → toArbitrary.d.ts} +1 -1
- package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
- package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -9
- package/dist/internal/schema/toArbitrary.js.map +1 -0
- package/dist/internal/schema/toCodeDocument.d.ts +2 -0
- package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
- package/dist/internal/schema/toCodeDocument.js +438 -0
- package/dist/internal/schema/toCodeDocument.js.map +1 -0
- package/dist/internal/schema/toEquivalence.d.ts +2 -0
- package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
- package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
- package/dist/internal/schema/toEquivalence.js.map +1 -0
- package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
- package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
- package/dist/internal/schema/toJsonSchemaDocument.js +508 -0
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
- package/dist/internal/schema/toRepresentation.d.ts +2 -0
- package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
- package/dist/internal/schema/toRepresentation.js +349 -0
- package/dist/internal/schema/toRepresentation.js.map +1 -0
- package/dist/internal/stackTraceLimit.js +3 -6
- 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 +54 -19
- 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 +121 -144
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +99 -121
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +22 -7
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +87 -317
- 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.d.ts +1 -1
- package/dist/unstable/ai/EmbeddingModel.js +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 +111 -68
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +123 -81
- 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 +316 -250
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +71 -63
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +71 -62
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +765 -245
- 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 +33 -11
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +194 -378
- 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 +47 -33
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +23 -18
- 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 +63 -44
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +59 -42
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +35 -9
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +32 -14
- 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 +15 -12
- 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.d.ts +2 -0
- package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
- package/dist/unstable/ai/internal/structured-output.js +315 -0
- package/dist/unstable/ai/internal/structured-output.js.map +1 -0
- 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 +105 -74
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +98 -63
- 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 +252 -47
- 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 +131 -49
- 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 +345 -137
- 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.d.ts +3 -1
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +11 -4
- 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.d.ts +0 -48
- package/dist/unstable/cli/internal/config.d.ts.map +1 -1
- package/dist/unstable/cli/internal/config.js +8 -10
- 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 +6 -2
- 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 +9 -9
- 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.d.ts.map +1 -1
- package/dist/unstable/cluster/Envelope.js +5 -4
- 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 +5 -5
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/Runner.js +1 -1
- package/dist/unstable/cluster/Runner.js.map +1 -1
- package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
- package/dist/unstable/cluster/RunnerAddress.js +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 +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 +128 -26
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +13 -5
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- 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.d.ts +4 -2
- package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
- package/dist/unstable/cluster/SingleRunner.js +2 -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.d.ts +7 -4
- package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +56 -25
- 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 +127 -65
- 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 +24 -12
- 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.d.ts +2 -0
- package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
- package/dist/unstable/cluster/internal/shardLock.js +4 -0
- package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
- package/dist/unstable/devtools/DevTools.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
- package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.js +8 -5
- 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 +16 -16
- package/dist/unstable/eventlog/EventJournal.js +14 -14
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +3 -3
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +18 -14
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +2 -2
- package/dist/unstable/eventlog/EventLogEncryption.js +2 -2
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +6 -6
- package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js +9 -4
- 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 +2 -2
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
- 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 +54 -40
- 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 +10 -10
- 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 +44 -0
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +16 -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.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +9 -8
- 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.d.ts.map +1 -1
- package/dist/unstable/http/Multipart.js +22 -20
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/Template.js +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 +26 -31
- 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 +3 -3
- 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 +16 -18
- 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 +1 -1
- 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.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +50 -37
- 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 +70 -1
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +84 -6
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js +2 -2
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +11 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js +5 -2
- 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.d.ts +4 -3
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js +2 -2
- 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.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistable.js +2 -1
- 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 +28 -17
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +26 -15
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.d.ts +2 -2
- package/dist/unstable/persistence/Redis.d.ts.map +1 -1
- package/dist/unstable/persistence/Redis.js +3 -3
- 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 +4 -2
- 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 +14 -13
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +105 -19
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +44 -12
- 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 +25 -4
- 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 +14 -12
- 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 +6 -7
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +15 -12
- 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 +12 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +10 -5
- 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.d.ts +2 -2
- package/dist/unstable/sql/SqlError.js +2 -2
- 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.d.ts.map +1 -1
- package/dist/unstable/sql/Statement.js +22 -21
- 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 +1068 -1070
- 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 +923 -830
- 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 +618 -334
- package/src/ConfigProvider.ts +221 -127
- 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 +63 -82
- package/src/DateTime.ts +564 -660
- package/src/Deferred.ts +253 -256
- package/src/Duration.ts +216 -308
- package/src/Effect.ts +2958 -3390
- 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 +155 -107
- 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 +622 -787
- package/src/JsonPatch.ts +60 -113
- package/src/JsonPointer.ts +8 -8
- package/src/JsonSchema.ts +405 -249
- 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 +347 -699
- package/src/ManagedRuntime.ts +20 -5
- package/src/Match.ts +217 -252
- package/src/Metric.ts +520 -1092
- 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 +246 -385
- package/src/Option.ts +449 -813
- package/src/Order.ts +109 -109
- package/src/Ordering.ts +20 -23
- package/src/PartitionedSemaphore.ts +1 -4
- 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 +387 -487
- 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 -214
- package/src/RegExp.ts +10 -14
- package/src/Request.ts +36 -28
- package/src/RequestResolver.ts +202 -91
- package/src/Result.ts +314 -485
- package/src/Runtime.ts +50 -75
- package/src/Schedule.ts +308 -1734
- package/src/Scheduler.ts +20 -7
- package/src/Schema.ts +3156 -1634
- package/src/SchemaAST.ts +676 -489
- package/src/SchemaError.ts +8 -7
- package/src/SchemaGetter.ts +277 -218
- package/src/SchemaIssue.ts +90 -276
- package/src/SchemaParser.ts +179 -116
- package/src/SchemaRepresentation.ts +698 -3417
- package/src/SchemaTransformation.ts +132 -91
- package/src/Scope.ts +123 -151
- package/src/ScopedRef.ts +4 -4
- package/src/Semaphore.ts +157 -54
- package/src/Sink.ts +128 -113
- package/src/Stdio.ts +1 -1
- package/src/Stream.ts +2665 -3142
- package/src/String.ts +275 -312
- package/src/Struct.ts +114 -118
- 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 +127 -70
- package/src/Unify.ts +45 -65
- package/src/Utils.ts +23 -16
- package/src/index.ts +0 -5
- package/src/internal/core.ts +5 -4
- package/src/internal/dateTime.ts +6 -0
- package/src/internal/effect.ts +160 -79
- package/src/internal/matcher.ts +1 -1
- package/src/internal/persistence.ts +2 -0
- package/src/internal/record.ts +11 -7
- package/src/internal/references.ts +3 -7
- package/src/internal/schema/annotations.ts +44 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +959 -0
- package/src/internal/schema/fromRepresentation.ts +339 -0
- package/src/internal/schema/parser.ts +22 -0
- package/src/internal/schema/schema.ts +45 -46
- package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +8 -10
- package/src/internal/schema/toCodeDocument.ts +572 -0
- package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
- package/src/internal/schema/toJsonSchemaDocument.ts +529 -0
- package/src/internal/schema/toRepresentation.ts +386 -0
- package/src/internal/stackTraceLimit.ts +3 -7
- package/src/internal/trie.ts +10 -11
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +73 -31
- package/src/testing/TestConsole.ts +32 -31
- package/src/testing/TestSchema.ts +29 -29
- package/src/unstable/ai/AiError.ts +100 -122
- package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
- package/src/unstable/ai/Chat.ts +132 -97
- package/src/unstable/ai/EmbeddingModel.ts +1 -1
- package/src/unstable/ai/IdGenerator.ts +32 -28
- package/src/unstable/ai/LanguageModel.ts +137 -95
- package/src/unstable/ai/McpProtocol.ts +48 -0
- package/src/unstable/ai/McpSchema.ts +75 -65
- package/src/unstable/ai/McpServer.ts +1045 -303
- package/src/unstable/ai/Model.ts +9 -20
- package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
- package/src/unstable/ai/Prompt.ts +145 -43
- package/src/unstable/ai/Response.ts +52 -38
- package/src/unstable/ai/Telemetry.ts +46 -13
- package/src/unstable/ai/Tokenizer.ts +14 -3
- package/src/unstable/ai/Tool.ts +81 -48
- package/src/unstable/ai/Toolkit.ts +45 -15
- package/src/unstable/ai/index.ts +5 -0
- package/src/unstable/ai/internal/codec-transformer.ts +13 -7
- 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 +453 -0
- package/src/unstable/cli/Argument.ts +273 -69
- package/src/unstable/cli/CliError.ts +116 -77
- package/src/unstable/cli/CliOutput.ts +44 -58
- package/src/unstable/cli/Command.ts +709 -111
- 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 +295 -81
- package/src/unstable/cli/Primitive.ts +371 -150
- package/src/unstable/cli/Prompt.ts +28 -14
- package/src/unstable/cli/internal/command.ts +13 -5
- package/src/unstable/cli/internal/config.ts +8 -10
- 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 +8 -4
- package/src/unstable/cluster/Entity.ts +16 -17
- package/src/unstable/cluster/EntityProxy.ts +4 -2
- package/src/unstable/cluster/EntityResource.ts +2 -2
- package/src/unstable/cluster/Envelope.ts +5 -4
- 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 +5 -7
- package/src/unstable/cluster/Runner.ts +1 -1
- package/src/unstable/cluster/RunnerAddress.ts +1 -1
- 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/ShardId.ts +1 -1
- package/src/unstable/cluster/Sharding.ts +168 -42
- package/src/unstable/cluster/ShardingConfig.ts +8 -4
- package/src/unstable/cluster/SingleRunner.ts +4 -2
- package/src/unstable/cluster/SingletonAddress.ts +1 -1
- package/src/unstable/cluster/Snowflake.ts +8 -8
- package/src/unstable/cluster/SqlMessageStorage.ts +84 -36
- package/src/unstable/cluster/SqlRunnerStorage.ts +205 -119
- package/src/unstable/cluster/internal/entityManager.ts +42 -25
- package/src/unstable/cluster/internal/shardLock.ts +9 -0
- package/src/unstable/devtools/DevToolsSchema.ts +10 -5
- 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 +16 -16
- package/src/unstable/eventlog/EventLog.ts +24 -14
- package/src/unstable/eventlog/EventLogEncryption.ts +2 -2
- package/src/unstable/eventlog/EventLogMessage.ts +12 -5
- 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/eventlog/SqlEventJournal.ts +2 -2
- package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
- package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
- package/src/unstable/http/Cookies.ts +64 -45
- package/src/unstable/http/Etag.ts +1 -1
- package/src/unstable/http/FetchHttpClient.ts +3 -1
- package/src/unstable/http/Headers.ts +10 -10
- package/src/unstable/http/HttpBody.ts +20 -5
- package/src/unstable/http/HttpClient.ts +83 -55
- package/src/unstable/http/HttpClientRequest.ts +59 -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 +9 -8
- package/src/unstable/http/HttpServerResponse.ts +30 -0
- package/src/unstable/http/HttpStaticServer.ts +35 -7
- package/src/unstable/http/Multipart.ts +22 -19
- package/src/unstable/http/Template.ts +1 -1
- package/src/unstable/http/Url.ts +33 -63
- package/src/unstable/http/UrlParams.ts +27 -32
- package/src/unstable/http/internal/compression.ts +196 -0
- package/src/unstable/httpapi/HttpApi.ts +3 -3
- package/src/unstable/httpapi/HttpApiBuilder.ts +10 -9
- package/src/unstable/httpapi/HttpApiClient.ts +19 -19
- package/src/unstable/httpapi/HttpApiEndpoint.ts +42 -42
- package/src/unstable/httpapi/HttpApiError.ts +13 -13
- package/src/unstable/httpapi/HttpApiGroup.ts +16 -16
- 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 +65 -41
- package/src/unstable/observability/OtlpExporter.ts +126 -10
- package/src/unstable/observability/OtlpLogger.ts +5 -5
- package/src/unstable/observability/OtlpMetrics.ts +12 -5
- package/src/unstable/observability/OtlpResource.ts +26 -17
- package/src/unstable/observability/OtlpTracer.ts +8 -4
- 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 +11 -10
- package/src/unstable/persistence/PersistedQueue.ts +6 -6
- package/src/unstable/persistence/Persistence.ts +126 -19
- package/src/unstable/persistence/RateLimiter.ts +28 -17
- package/src/unstable/persistence/Redis.ts +4 -4
- package/src/unstable/process/ChildProcess.ts +64 -21
- package/src/unstable/process/ChildProcessSpawner.ts +22 -11
- package/src/unstable/reactivity/AsyncResult.ts +16 -16
- package/src/unstable/reactivity/Atom.ts +117 -22
- package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
- package/src/unstable/reactivity/AtomRegistry.ts +25 -4
- 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 +18 -16
- 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 +19 -29
- package/src/unstable/socket/Socket.ts +18 -5
- package/src/unstable/sql/SqlClient.ts +5 -6
- package/src/unstable/sql/SqlError.ts +2 -2
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +5 -5
- package/src/unstable/sql/Statement.ts +31 -29
- 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/SchemaUtils.d.ts +0 -28
- package/dist/SchemaUtils.d.ts.map +0 -1
- package/dist/SchemaUtils.js +0 -45
- package/dist/SchemaUtils.js.map +0 -1
- package/dist/internal/schema/arbitrary.d.ts.map +0 -1
- package/dist/internal/schema/arbitrary.js.map +0 -1
- package/dist/internal/schema/equivalence.d.ts +0 -2
- package/dist/internal/schema/equivalence.d.ts.map +0 -1
- package/dist/internal/schema/equivalence.js.map +0 -1
- package/dist/internal/schema/representation.d.ts +0 -2
- package/dist/internal/schema/representation.d.ts.map +0 -1
- package/dist/internal/schema/representation.js +0 -865
- package/dist/internal/schema/representation.js.map +0 -1
- 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/SchemaUtils.ts +0 -51
- package/src/internal/schema/representation.ts +0 -795
- package/src/internal/version.ts +0 -2
package/src/Config.ts
CHANGED
|
@@ -12,6 +12,7 @@ import * as ConfigProvider from "./ConfigProvider.ts"
|
|
|
12
12
|
import * as Effect from "./Effect.ts"
|
|
13
13
|
import * as Effectable from "./Effectable.ts"
|
|
14
14
|
import { dual } from "./Function.ts"
|
|
15
|
+
import * as InternalRecord from "./internal/record.ts"
|
|
15
16
|
import * as LogLevel_ from "./LogLevel.ts"
|
|
16
17
|
import * as Option from "./Option.ts"
|
|
17
18
|
import * as Predicate from "./Predicate.ts"
|
|
@@ -35,11 +36,11 @@ const TypeId = "~effect/Config"
|
|
|
35
36
|
*
|
|
36
37
|
* **Example** (Checking Config values)
|
|
37
38
|
*
|
|
38
|
-
* ```ts
|
|
39
|
+
* ```ts import.meta.vitest
|
|
39
40
|
* import { Config } from "effect"
|
|
40
41
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
42
|
+
* Config.isConfig(Config.string("HOST")) // => true
|
|
43
|
+
* Config.isConfig("not a config") // => false
|
|
43
44
|
* ```
|
|
44
45
|
*
|
|
45
46
|
* @category guards
|
|
@@ -62,7 +63,7 @@ export const isConfig = (u: unknown): u is Config<unknown> => Predicate.hasPrope
|
|
|
62
63
|
* (wrong type, out of range, missing key, etc.).
|
|
63
64
|
*
|
|
64
65
|
* @see {@link orElse} – recover from a ConfigError
|
|
65
|
-
* @see {@link withDefault} – provide a fallback
|
|
66
|
+
* @see {@link withDefault} – provide a fallback when relevant input is absent
|
|
66
67
|
*
|
|
67
68
|
* @category errors
|
|
68
69
|
* @since 4.0.0
|
|
@@ -93,9 +94,7 @@ export class ConfigError {
|
|
|
93
94
|
* **Details**
|
|
94
95
|
*
|
|
95
96
|
* Key members:
|
|
96
|
-
* - `parse(provider
|
|
97
|
-
* The optional path prefix is the logical scope accumulated from outer
|
|
98
|
-
* `Config.nested` calls.
|
|
97
|
+
* - `parse(provider)` – runs the config against a specific provider.
|
|
99
98
|
* - Yieldable – can be yielded inside `Effect.gen`, which automatically
|
|
100
99
|
* resolves the current `ConfigProvider` from the context.
|
|
101
100
|
* - Pipeable – supports `.pipe(Config.map(...))` etc.
|
|
@@ -107,10 +106,39 @@ export class ConfigError {
|
|
|
107
106
|
*/
|
|
108
107
|
export interface Config<out T> extends Effect.Effect<T, ConfigError> {
|
|
109
108
|
readonly [TypeId]: typeof TypeId
|
|
110
|
-
readonly parse: (
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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>
|
|
114
142
|
}
|
|
115
143
|
|
|
116
144
|
const Proto = {
|
|
@@ -129,13 +157,69 @@ const Proto = {
|
|
|
129
157
|
}
|
|
130
158
|
|
|
131
159
|
function make<T>(
|
|
132
|
-
|
|
160
|
+
evaluator: Evaluator<T>
|
|
133
161
|
): Config<T> {
|
|
134
162
|
const self = Object.create(Proto)
|
|
135
|
-
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
|
+
)
|
|
136
171
|
return self
|
|
137
172
|
}
|
|
138
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
|
+
|
|
139
223
|
/**
|
|
140
224
|
* Transforms the parsed value of a config with a pure function.
|
|
141
225
|
*
|
|
@@ -146,7 +230,7 @@ function make<T>(
|
|
|
146
230
|
*
|
|
147
231
|
* **Example** (Uppercasing a string config)
|
|
148
232
|
*
|
|
149
|
-
* ```ts
|
|
233
|
+
* ```ts import.meta.vitest
|
|
150
234
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
151
235
|
*
|
|
152
236
|
* const upper = Config.string("name").pipe(
|
|
@@ -154,7 +238,7 @@ function make<T>(
|
|
|
154
238
|
* )
|
|
155
239
|
*
|
|
156
240
|
* const provider = ConfigProvider.fromUnknown({ name: "alice" })
|
|
157
|
-
*
|
|
241
|
+
* Effect.runSync(upper.parse(provider)) // => "ALICE"
|
|
158
242
|
* ```
|
|
159
243
|
*
|
|
160
244
|
* @see {@link mapOrFail} – when the transformation can fail
|
|
@@ -173,7 +257,7 @@ export const map: {
|
|
|
173
257
|
*
|
|
174
258
|
* **Example** (Uppercasing a string config)
|
|
175
259
|
*
|
|
176
|
-
* ```ts
|
|
260
|
+
* ```ts import.meta.vitest
|
|
177
261
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
178
262
|
*
|
|
179
263
|
* const upper = Config.string("name").pipe(
|
|
@@ -181,7 +265,7 @@ export const map: {
|
|
|
181
265
|
* )
|
|
182
266
|
*
|
|
183
267
|
* const provider = ConfigProvider.fromUnknown({ name: "alice" })
|
|
184
|
-
*
|
|
268
|
+
* Effect.runSync(upper.parse(provider)) // => "ALICE"
|
|
185
269
|
* ```
|
|
186
270
|
*
|
|
187
271
|
* @see {@link mapOrFail} – when the transformation can fail
|
|
@@ -200,7 +284,7 @@ export const map: {
|
|
|
200
284
|
*
|
|
201
285
|
* **Example** (Uppercasing a string config)
|
|
202
286
|
*
|
|
203
|
-
* ```ts
|
|
287
|
+
* ```ts import.meta.vitest
|
|
204
288
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
205
289
|
*
|
|
206
290
|
* const upper = Config.string("name").pipe(
|
|
@@ -208,7 +292,7 @@ export const map: {
|
|
|
208
292
|
* )
|
|
209
293
|
*
|
|
210
294
|
* const provider = ConfigProvider.fromUnknown({ name: "alice" })
|
|
211
|
-
*
|
|
295
|
+
* Effect.runSync(upper.parse(provider)) // => "ALICE"
|
|
212
296
|
* ```
|
|
213
297
|
*
|
|
214
298
|
* @see {@link mapOrFail} – when the transformation can fail
|
|
@@ -218,7 +302,12 @@ export const map: {
|
|
|
218
302
|
*/
|
|
219
303
|
<A, B>(self: Config<A>, f: (a: A) => B): Config<B>
|
|
220
304
|
} = dual(2, <A, B>(self: Config<A>, f: (a: A) => B): Config<B> => {
|
|
221
|
-
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
|
+
)
|
|
222
311
|
})
|
|
223
312
|
|
|
224
313
|
/**
|
|
@@ -231,12 +320,14 @@ export const map: {
|
|
|
231
320
|
*
|
|
232
321
|
* **Example** (Wrapping a value in an effectful transformation)
|
|
233
322
|
*
|
|
234
|
-
* ```ts
|
|
235
|
-
* import { Config, Effect } from "effect"
|
|
323
|
+
* ```ts import.meta.vitest
|
|
324
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
236
325
|
*
|
|
237
326
|
* const trimmed = Config.string("name").pipe(
|
|
238
327
|
* Config.mapOrFail((s) => Effect.succeed(s.trim()))
|
|
239
328
|
* )
|
|
329
|
+
* const provider = ConfigProvider.fromUnknown({ name: " Alice " })
|
|
330
|
+
* Effect.runSync(trimmed.parse(provider)) // => "Alice"
|
|
240
331
|
* ```
|
|
241
332
|
*
|
|
242
333
|
* @see {@link map} – when the transformation cannot fail
|
|
@@ -255,12 +346,14 @@ export const mapOrFail: {
|
|
|
255
346
|
*
|
|
256
347
|
* **Example** (Wrapping a value in an effectful transformation)
|
|
257
348
|
*
|
|
258
|
-
* ```ts
|
|
259
|
-
* import { Config, Effect } from "effect"
|
|
349
|
+
* ```ts import.meta.vitest
|
|
350
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
260
351
|
*
|
|
261
352
|
* const trimmed = Config.string("name").pipe(
|
|
262
353
|
* Config.mapOrFail((s) => Effect.succeed(s.trim()))
|
|
263
354
|
* )
|
|
355
|
+
* const provider = ConfigProvider.fromUnknown({ name: " Alice " })
|
|
356
|
+
* Effect.runSync(trimmed.parse(provider)) // => "Alice"
|
|
264
357
|
* ```
|
|
265
358
|
*
|
|
266
359
|
* @see {@link map} – when the transformation cannot fail
|
|
@@ -279,12 +372,14 @@ export const mapOrFail: {
|
|
|
279
372
|
*
|
|
280
373
|
* **Example** (Wrapping a value in an effectful transformation)
|
|
281
374
|
*
|
|
282
|
-
* ```ts
|
|
283
|
-
* import { Config, Effect } from "effect"
|
|
375
|
+
* ```ts import.meta.vitest
|
|
376
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
284
377
|
*
|
|
285
378
|
* const trimmed = Config.string("name").pipe(
|
|
286
379
|
* Config.mapOrFail((s) => Effect.succeed(s.trim()))
|
|
287
380
|
* )
|
|
381
|
+
* const provider = ConfigProvider.fromUnknown({ name: " Alice " })
|
|
382
|
+
* Effect.runSync(trimmed.parse(provider)) // => "Alice"
|
|
288
383
|
* ```
|
|
289
384
|
*
|
|
290
385
|
* @see {@link map} – when the transformation cannot fail
|
|
@@ -294,7 +389,15 @@ export const mapOrFail: {
|
|
|
294
389
|
*/
|
|
295
390
|
<A, B>(self: Config<A>, f: (a: A) => Effect.Effect<B, ConfigError>): Config<B>
|
|
296
391
|
} = dual(2, <A, B>(self: Config<A>, f: (a: A) => Effect.Effect<B, ConfigError>): Config<B> => {
|
|
297
|
-
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
|
+
)
|
|
298
401
|
})
|
|
299
402
|
|
|
300
403
|
/**
|
|
@@ -307,21 +410,30 @@ export const mapOrFail: {
|
|
|
307
410
|
*
|
|
308
411
|
* **Details**
|
|
309
412
|
*
|
|
310
|
-
* Unlike {@link withDefault}, this
|
|
311
|
-
*
|
|
413
|
+
* Unlike {@link withDefault}, this handles both semantic absence and **all**
|
|
414
|
+
* `ConfigError`s. The fallback function receives the error and returns a new
|
|
312
415
|
* `Config`.
|
|
313
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
|
+
*
|
|
314
424
|
* **Example** (Falling back to a literal)
|
|
315
425
|
*
|
|
316
|
-
* ```ts
|
|
317
|
-
* import { Config } from "effect"
|
|
426
|
+
* ```ts import.meta.vitest
|
|
427
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
318
428
|
*
|
|
319
429
|
* const hostConfig = Config.string("HOST").pipe(
|
|
320
430
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
321
431
|
* )
|
|
432
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
433
|
+
* Effect.runSync(hostConfig.parse(provider)) // => "localhost"
|
|
322
434
|
* ```
|
|
323
435
|
*
|
|
324
|
-
* @see {@link withDefault} – fallback only on
|
|
436
|
+
* @see {@link withDefault} – fallback only on semantic absence
|
|
325
437
|
*
|
|
326
438
|
* @category combinators
|
|
327
439
|
* @since 2.0.0
|
|
@@ -337,21 +449,30 @@ export const orElse: {
|
|
|
337
449
|
*
|
|
338
450
|
* **Details**
|
|
339
451
|
*
|
|
340
|
-
* Unlike {@link withDefault}, this
|
|
341
|
-
*
|
|
452
|
+
* Unlike {@link withDefault}, this handles both semantic absence and **all**
|
|
453
|
+
* `ConfigError`s. The fallback function receives the error and returns a new
|
|
342
454
|
* `Config`.
|
|
343
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
|
+
*
|
|
344
463
|
* **Example** (Falling back to a literal)
|
|
345
464
|
*
|
|
346
|
-
* ```ts
|
|
347
|
-
* import { Config } from "effect"
|
|
465
|
+
* ```ts import.meta.vitest
|
|
466
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
348
467
|
*
|
|
349
468
|
* const hostConfig = Config.string("HOST").pipe(
|
|
350
469
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
351
470
|
* )
|
|
471
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
472
|
+
* Effect.runSync(hostConfig.parse(provider)) // => "localhost"
|
|
352
473
|
* ```
|
|
353
474
|
*
|
|
354
|
-
* @see {@link withDefault} – fallback only on
|
|
475
|
+
* @see {@link withDefault} – fallback only on semantic absence
|
|
355
476
|
*
|
|
356
477
|
* @category combinators
|
|
357
478
|
* @since 2.0.0
|
|
@@ -367,30 +488,87 @@ export const orElse: {
|
|
|
367
488
|
*
|
|
368
489
|
* **Details**
|
|
369
490
|
*
|
|
370
|
-
* Unlike {@link withDefault}, this
|
|
371
|
-
*
|
|
491
|
+
* Unlike {@link withDefault}, this handles both semantic absence and **all**
|
|
492
|
+
* `ConfigError`s. The fallback function receives the error and returns a new
|
|
372
493
|
* `Config`.
|
|
373
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
|
+
*
|
|
374
502
|
* **Example** (Falling back to a literal)
|
|
375
503
|
*
|
|
376
|
-
* ```ts
|
|
377
|
-
* import { Config } from "effect"
|
|
504
|
+
* ```ts import.meta.vitest
|
|
505
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
378
506
|
*
|
|
379
507
|
* const hostConfig = Config.string("HOST").pipe(
|
|
380
508
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
381
509
|
* )
|
|
510
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
511
|
+
* Effect.runSync(hostConfig.parse(provider)) // => "localhost"
|
|
382
512
|
* ```
|
|
383
513
|
*
|
|
384
|
-
* @see {@link withDefault} – fallback only on
|
|
514
|
+
* @see {@link withDefault} – fallback only on semantic absence
|
|
385
515
|
*
|
|
386
516
|
* @category combinators
|
|
387
517
|
* @since 2.0.0
|
|
388
518
|
*/
|
|
389
519
|
<A, A2>(self: Config<A>, that: (error: ConfigError) => Config<A2>): Config<A | A2>
|
|
390
520
|
} = dual(2, <A, A2>(self: Config<A>, that: (error: ConfigError) => Config<A2>): Config<A | A2> => {
|
|
391
|
-
return make
|
|
392
|
-
|
|
393
|
-
|
|
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
|
+
);
|
|
394
572
|
})
|
|
395
573
|
|
|
396
574
|
/**
|
|
@@ -405,9 +583,19 @@ export const orElse: {
|
|
|
405
583
|
* Accepts a tuple (preserves positions), an iterable, or a record of configs.
|
|
406
584
|
* Returns a config whose parsed value mirrors the input shape.
|
|
407
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
|
+
*
|
|
408
596
|
* **Example** (Combining configs as a struct)
|
|
409
597
|
*
|
|
410
|
-
* ```ts
|
|
598
|
+
* ```ts import.meta.vitest
|
|
411
599
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
412
600
|
*
|
|
413
601
|
* const dbConfig = Config.all({
|
|
@@ -416,8 +604,7 @@ export const orElse: {
|
|
|
416
604
|
* })
|
|
417
605
|
*
|
|
418
606
|
* const provider = ConfigProvider.fromUnknown({ host: "localhost", port: 5432 })
|
|
419
|
-
*
|
|
420
|
-
* // { host: "localhost", port: 5432 }
|
|
607
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
421
608
|
* ```
|
|
422
609
|
*
|
|
423
610
|
* @category combinators
|
|
@@ -442,46 +629,65 @@ export function all<const Arg extends Iterable<Config<any>> | Record<string, Con
|
|
|
442
629
|
: arg
|
|
443
630
|
if (Array.isArray(configs)) {
|
|
444
631
|
return make((provider, pathPrefix) =>
|
|
445
|
-
Effect.
|
|
632
|
+
Effect.flatMapEager(
|
|
633
|
+
Effect.all(configs.map((config) => evaluateAt(config, provider, pathPrefix))),
|
|
634
|
+
resolveArray
|
|
635
|
+
)
|
|
446
636
|
) as any
|
|
447
637
|
} else {
|
|
448
638
|
return make((provider, pathPrefix) =>
|
|
449
|
-
Effect.
|
|
639
|
+
Effect.flatMapEager(
|
|
640
|
+
Effect.all(Rec.map(configs, (config) => evaluateAt(config, provider, pathPrefix))),
|
|
641
|
+
resolveRecord
|
|
642
|
+
)
|
|
450
643
|
) as any
|
|
451
644
|
}
|
|
452
645
|
}
|
|
453
646
|
|
|
454
|
-
|
|
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
|
-
|
|
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
|
+
}
|
|
480
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))
|
|
481
686
|
}
|
|
482
687
|
|
|
483
688
|
/**
|
|
484
|
-
* 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.
|
|
485
691
|
*
|
|
486
692
|
* **When to use**
|
|
487
693
|
*
|
|
@@ -489,30 +695,33 @@ function isMissingDataOnly(issue: SchemaIssue.Issue): boolean {
|
|
|
489
695
|
*
|
|
490
696
|
* **Gotchas**
|
|
491
697
|
*
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
*
|
|
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.
|
|
495
703
|
*
|
|
496
704
|
* **Example** (Defaulting a missing port)
|
|
497
705
|
*
|
|
498
|
-
* ```ts
|
|
706
|
+
* ```ts import.meta.vitest
|
|
499
707
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
500
708
|
*
|
|
501
709
|
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
502
710
|
*
|
|
503
711
|
* const provider = ConfigProvider.fromUnknown({})
|
|
504
|
-
*
|
|
712
|
+
* Effect.runSync(port.parse(provider)) // => 3000
|
|
505
713
|
* ```
|
|
506
714
|
*
|
|
507
715
|
* @see {@link option} – returns `Option` instead of a default value
|
|
508
|
-
* @see {@link orElse} – catches all errors, not just
|
|
716
|
+
* @see {@link orElse} – catches all errors, not just absent input
|
|
509
717
|
*
|
|
510
718
|
* @category combinators
|
|
511
719
|
* @since 2.0.0
|
|
512
720
|
*/
|
|
513
721
|
export const withDefault: {
|
|
514
722
|
/**
|
|
515
|
-
* 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.
|
|
516
725
|
*
|
|
517
726
|
* **When to use**
|
|
518
727
|
*
|
|
@@ -520,30 +729,33 @@ export const withDefault: {
|
|
|
520
729
|
*
|
|
521
730
|
* **Gotchas**
|
|
522
731
|
*
|
|
523
|
-
*
|
|
524
|
-
*
|
|
525
|
-
*
|
|
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.
|
|
526
737
|
*
|
|
527
738
|
* **Example** (Defaulting a missing port)
|
|
528
739
|
*
|
|
529
|
-
* ```ts
|
|
740
|
+
* ```ts import.meta.vitest
|
|
530
741
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
531
742
|
*
|
|
532
743
|
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
533
744
|
*
|
|
534
745
|
* const provider = ConfigProvider.fromUnknown({})
|
|
535
|
-
*
|
|
746
|
+
* Effect.runSync(port.parse(provider)) // => 3000
|
|
536
747
|
* ```
|
|
537
748
|
*
|
|
538
749
|
* @see {@link option} – returns `Option` instead of a default value
|
|
539
|
-
* @see {@link orElse} – catches all errors, not just
|
|
750
|
+
* @see {@link orElse} – catches all errors, not just absent input
|
|
540
751
|
*
|
|
541
752
|
* @category combinators
|
|
542
753
|
* @since 2.0.0
|
|
543
754
|
*/
|
|
544
755
|
<const A2>(defaultValue: A2): <A>(self: Config<A>) => Config<A2 | A>
|
|
545
756
|
/**
|
|
546
|
-
* 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.
|
|
547
759
|
*
|
|
548
760
|
* **When to use**
|
|
549
761
|
*
|
|
@@ -551,43 +763,75 @@ export const withDefault: {
|
|
|
551
763
|
*
|
|
552
764
|
* **Gotchas**
|
|
553
765
|
*
|
|
554
|
-
*
|
|
555
|
-
*
|
|
556
|
-
*
|
|
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.
|
|
557
771
|
*
|
|
558
772
|
* **Example** (Defaulting a missing port)
|
|
559
773
|
*
|
|
560
|
-
* ```ts
|
|
774
|
+
* ```ts import.meta.vitest
|
|
561
775
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
562
776
|
*
|
|
563
777
|
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
564
778
|
*
|
|
565
779
|
* const provider = ConfigProvider.fromUnknown({})
|
|
566
|
-
*
|
|
780
|
+
* Effect.runSync(port.parse(provider)) // => 3000
|
|
567
781
|
* ```
|
|
568
782
|
*
|
|
569
783
|
* @see {@link option} – returns `Option` instead of a default value
|
|
570
|
-
* @see {@link orElse} – catches all errors, not just
|
|
784
|
+
* @see {@link orElse} – catches all errors, not just absent input
|
|
571
785
|
*
|
|
572
786
|
* @category combinators
|
|
573
787
|
* @since 2.0.0
|
|
574
788
|
*/
|
|
575
789
|
<A, const A2>(self: Config<A>, defaultValue: A2): Config<A | A2>
|
|
576
790
|
} = dual(2, <A, const A2>(self: Config<A>, defaultValue: A2): Config<A | A2> => {
|
|
577
|
-
return
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
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
|
+
);
|
|
586
830
|
})
|
|
587
831
|
|
|
588
832
|
/**
|
|
589
|
-
* Makes a config optional: returns `Some(value)` on success and `None` when
|
|
590
|
-
*
|
|
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.
|
|
591
835
|
*
|
|
592
836
|
* **When to use**
|
|
593
837
|
*
|
|
@@ -595,18 +839,21 @@ export const withDefault: {
|
|
|
595
839
|
*
|
|
596
840
|
* **Gotchas**
|
|
597
841
|
*
|
|
598
|
-
*
|
|
599
|
-
*
|
|
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.
|
|
600
847
|
*
|
|
601
848
|
* **Example** (Reading optional config)
|
|
602
849
|
*
|
|
603
|
-
* ```ts
|
|
604
|
-
* import { Config, ConfigProvider, Effect } from "effect"
|
|
850
|
+
* ```ts import.meta.vitest
|
|
851
|
+
* import { Config, ConfigProvider, Effect, Option } from "effect"
|
|
605
852
|
*
|
|
606
853
|
* const maybePort = Config.option(Config.number("port"))
|
|
607
854
|
*
|
|
608
855
|
* const provider = ConfigProvider.fromUnknown({})
|
|
609
|
-
*
|
|
856
|
+
* Effect.runSync(maybePort.parse(provider)) // => Option.none()
|
|
610
857
|
* ```
|
|
611
858
|
*
|
|
612
859
|
* @see {@link withDefault} – provide a concrete fallback value instead
|
|
@@ -648,7 +895,7 @@ export type Success<T> = [T] extends [Config<infer A>] ? A : never
|
|
|
648
895
|
*
|
|
649
896
|
* @see {@link unwrap} – construct a `Config` from a `Wrap<T>`
|
|
650
897
|
*
|
|
651
|
-
* @category
|
|
898
|
+
* @category utility types
|
|
652
899
|
* @since 2.0.0
|
|
653
900
|
*/
|
|
654
901
|
export type Wrap<A> = [NonNullable<A>] extends [infer T] ? [IsPlainObject<T>] extends [true] ?
|
|
@@ -676,8 +923,8 @@ type IsPlainObject<A> = [A] extends [Record<string, any>]
|
|
|
676
923
|
*
|
|
677
924
|
* **Example** (Unwrapping a record of configs)
|
|
678
925
|
*
|
|
679
|
-
* ```ts
|
|
680
|
-
* import { Config } from "effect"
|
|
926
|
+
* ```ts import.meta.vitest
|
|
927
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
681
928
|
*
|
|
682
929
|
* interface Options {
|
|
683
930
|
* key: string
|
|
@@ -685,128 +932,158 @@ type IsPlainObject<A> = [A] extends [Record<string, any>]
|
|
|
685
932
|
*
|
|
686
933
|
* const makeConfig = (config: Config.Wrap<Options>): Config.Config<Options> =>
|
|
687
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" }
|
|
688
939
|
* ```
|
|
689
940
|
*
|
|
690
941
|
* @see {@link Wrap} – the utility type accepted by this function
|
|
691
942
|
*
|
|
692
|
-
* @category
|
|
943
|
+
* @category converting
|
|
693
944
|
* @since 2.0.0
|
|
694
945
|
*/
|
|
695
946
|
export const unwrap = <T>(wrapped: Wrap<T>): Config<T> => {
|
|
696
947
|
if (isConfig(wrapped)) return wrapped
|
|
697
|
-
return
|
|
698
|
-
const entries = Object.entries(wrapped)
|
|
699
|
-
const configs = entries.map(([key, config]) =>
|
|
700
|
-
unwrap(config as any).parse(provider, pathPrefix).pipe(Effect.map((value) => [key, value] as const))
|
|
701
|
-
)
|
|
702
|
-
return Effect.all(configs).pipe(Effect.map(Object.fromEntries))
|
|
703
|
-
})
|
|
948
|
+
return all(Rec.map(wrapped as Record<string, Wrap<any>>, (config) => unwrap(config))) as Config<T>
|
|
704
949
|
}
|
|
705
950
|
|
|
706
951
|
// -----------------------------------------------------------------------------
|
|
707
952
|
// schema
|
|
708
953
|
// -----------------------------------------------------------------------------
|
|
709
954
|
|
|
710
|
-
|
|
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: (
|
|
711
965
|
provider: ConfigProvider.ConfigProvider,
|
|
712
966
|
path: Path
|
|
713
|
-
) => Effect.Effect<
|
|
714
|
-
provider
|
|
715
|
-
|
|
716
|
-
) {
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
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
|
|
739
1001
|
}
|
|
740
|
-
}
|
|
1002
|
+
}
|
|
741
1003
|
|
|
742
|
-
const
|
|
1004
|
+
const hasProviderInput = (
|
|
743
1005
|
ast: SchemaAST.AST,
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
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)
|
|
748
1026
|
switch (ast._tag) {
|
|
749
1027
|
case "Objects": {
|
|
750
|
-
const
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
const name = ps.name
|
|
755
|
-
if (typeof name === "string") {
|
|
756
|
-
const value = yield* recur(ps.type, provider, [...path, name])
|
|
757
|
-
if (value !== undefined) 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
|
|
758
1032
|
}
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
if (value !== undefined) out[key] = value
|
|
768
|
-
}
|
|
769
|
-
}
|
|
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)
|
|
770
1041
|
}
|
|
771
1042
|
}
|
|
772
|
-
|
|
773
|
-
|
|
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)
|
|
774
1051
|
}
|
|
775
1052
|
case "Arrays": {
|
|
776
|
-
const
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
if (stat && stat._tag === "Array" && stat.value !== undefined) {
|
|
780
|
-
return stat.value === "" ? [] : stat.value.split(",")
|
|
781
|
-
}
|
|
782
|
-
const out: Array<Schema.StringTree> = []
|
|
783
|
-
const length = stat && stat._tag === "Array" ? stat.length : ast.elements.length
|
|
784
|
-
for (let i = 0; i < length; i++) {
|
|
785
|
-
const element = ast.elements[i] ?? ast.rest[0]
|
|
786
|
-
if (element !== undefined) {
|
|
787
|
-
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
|
|
788
1056
|
}
|
|
789
|
-
|
|
790
|
-
|
|
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)
|
|
791
1064
|
}
|
|
792
1065
|
case "Union":
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
return
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
if (
|
|
803
|
-
|
|
804
|
-
// Container without a co-located value cannot satisfy a scalar request.
|
|
805
|
-
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)
|
|
806
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)))
|
|
807
1083
|
}
|
|
808
|
-
}
|
|
809
|
-
)
|
|
1084
|
+
})
|
|
1085
|
+
return recur(root)
|
|
1086
|
+
}
|
|
810
1087
|
|
|
811
1088
|
/**
|
|
812
1089
|
* Creates a `Config<T>` from a `Schema.Codec`.
|
|
@@ -825,12 +1102,47 @@ const recur: (
|
|
|
825
1102
|
* Convenience constructors such as `string`, `number`, and `boolean` delegate
|
|
826
1103
|
* to this API.
|
|
827
1104
|
*
|
|
828
|
-
* The codec is
|
|
829
|
-
*
|
|
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)`.
|
|
830
1142
|
*
|
|
831
1143
|
* **Example** (Reading a structured config)
|
|
832
1144
|
*
|
|
833
|
-
* ```ts
|
|
1145
|
+
* ```ts import.meta.vitest
|
|
834
1146
|
* import { Config, ConfigProvider, Effect, Schema } from "effect"
|
|
835
1147
|
*
|
|
836
1148
|
* const DbConfig = Config.schema(
|
|
@@ -845,8 +1157,7 @@ const recur: (
|
|
|
845
1157
|
* db: { host: "localhost", port: 5432 }
|
|
846
1158
|
* })
|
|
847
1159
|
*
|
|
848
|
-
*
|
|
849
|
-
* // { host: "localhost", port: 5432 }
|
|
1160
|
+
* Effect.runSync(DbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
850
1161
|
* ```
|
|
851
1162
|
*
|
|
852
1163
|
* @see {@link string} / {@link number} / {@link boolean} – shortcuts for
|
|
@@ -857,20 +1168,31 @@ const recur: (
|
|
|
857
1168
|
*/
|
|
858
1169
|
export function schema<T>(codec: Schema.ConstraintCodec<T, unknown>, path?: string | ConfigProvider.Path): Config<T> {
|
|
859
1170
|
const codecStringTree = Schema.toCodecStringTree(codec)
|
|
860
|
-
const
|
|
861
|
-
const
|
|
1171
|
+
const encodedAst = SchemaAST.toEncoded(codecStringTree.ast)
|
|
1172
|
+
const decodeCursor = SchemaParser.decodeUnknownEffect(
|
|
1173
|
+
Schema.make<Schema.Codec<T, ConfigCursor>>(toConfigCursorAST(codecStringTree.ast))
|
|
1174
|
+
)
|
|
862
1175
|
const localPath = typeof path === "string" ? [path] : path ?? []
|
|
863
1176
|
return make((provider, pathPrefix) => {
|
|
864
1177
|
const fullPath = [...pathPrefix, ...localPath]
|
|
865
|
-
return
|
|
866
|
-
Effect.flatMapEager((
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
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
|
|
871
1194
|
)
|
|
872
|
-
)
|
|
873
|
-
Effect.mapErrorEager((cause) => new ConfigError(cause))
|
|
1195
|
+
})
|
|
874
1196
|
)
|
|
875
1197
|
})
|
|
876
1198
|
}
|
|
@@ -961,7 +1283,7 @@ export const LogLevel = Schema.Literals(LogLevel_.values)
|
|
|
961
1283
|
*
|
|
962
1284
|
* **Example** (Parsing a comma-separated record)
|
|
963
1285
|
*
|
|
964
|
-
* ```ts
|
|
1286
|
+
* ```ts import.meta.vitest
|
|
965
1287
|
* import { Config, ConfigProvider, Effect, Schema } from "effect"
|
|
966
1288
|
*
|
|
967
1289
|
* const schema = Config.Record(Schema.String, Schema.String)
|
|
@@ -974,14 +1296,14 @@ export const LogLevel = Schema.Literals(LogLevel_.values)
|
|
|
974
1296
|
* }
|
|
975
1297
|
* })
|
|
976
1298
|
*
|
|
977
|
-
*
|
|
978
|
-
* //
|
|
979
|
-
*
|
|
980
|
-
*
|
|
981
|
-
* // 'custom.attribute': 'value'
|
|
982
|
-
* // }
|
|
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"
|
|
983
1303
|
* ```
|
|
984
1304
|
*
|
|
1305
|
+
* @see {@link Array} for separated or structural array input
|
|
1306
|
+
*
|
|
985
1307
|
* @category schemas
|
|
986
1308
|
* @since 4.0.0
|
|
987
1309
|
*/
|
|
@@ -990,35 +1312,31 @@ export const Record = <K extends Schema.Record.Key, V extends Schema.Constraint>
|
|
|
990
1312
|
readonly keyValueSeparator?: string | undefined
|
|
991
1313
|
}) => {
|
|
992
1314
|
const record = Schema.Record(key, value)
|
|
1315
|
+
const split = SchemaTransformation.splitKeyValue(options)
|
|
993
1316
|
const recordString = Schema.String.pipe(
|
|
994
|
-
Schema.decodeTo(
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
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
|
+
})
|
|
999
1323
|
)
|
|
1000
1324
|
|
|
1001
1325
|
return Schema.Union([record, recordString])
|
|
1002
1326
|
}
|
|
1003
1327
|
|
|
1004
|
-
/**
|
|
1005
|
-
* @category schemas
|
|
1006
|
-
* @since 4.0.0
|
|
1007
|
-
*/
|
|
1008
1328
|
const ArrayConfig = <V extends Schema.Constraint>(value: V, options?: {
|
|
1009
1329
|
readonly separator?: string | undefined
|
|
1010
1330
|
}) => {
|
|
1011
1331
|
const array = Schema.Array(value)
|
|
1012
1332
|
const separator = options?.separator ?? ","
|
|
1013
1333
|
const arrayString = Schema.String.pipe(
|
|
1014
|
-
Schema.decodeTo(
|
|
1015
|
-
|
|
1016
|
-
{
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
),
|
|
1021
|
-
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
|
+
})
|
|
1022
1340
|
)
|
|
1023
1341
|
|
|
1024
1342
|
return Schema.Union([arrayString, array])
|
|
@@ -1038,6 +1356,8 @@ export {
|
|
|
1038
1356
|
* Accepts either a JSON-like array from the provider or a flat string like
|
|
1039
1357
|
* `"a,b,c"`. The `separator` defaults to `","` and can be customized.
|
|
1040
1358
|
*
|
|
1359
|
+
* @see {@link Record} for separated or structural record input
|
|
1360
|
+
*
|
|
1041
1361
|
* @category schemas
|
|
1042
1362
|
* @since 4.0.0
|
|
1043
1363
|
*/
|
|
@@ -1060,7 +1380,7 @@ export {
|
|
|
1060
1380
|
* @since 2.0.0
|
|
1061
1381
|
*/
|
|
1062
1382
|
export function fail(err: SourceError | Schema.SchemaError) {
|
|
1063
|
-
return make(() => Effect.fail(new ConfigError(err)))
|
|
1383
|
+
return make(() => Effect.fail(evaluationFailure(new ConfigError(err), false)))
|
|
1064
1384
|
}
|
|
1065
1385
|
|
|
1066
1386
|
/**
|
|
@@ -1074,19 +1394,21 @@ export function fail(err: SourceError | Schema.SchemaError) {
|
|
|
1074
1394
|
*
|
|
1075
1395
|
* **Example** (Returning a constant fallback)
|
|
1076
1396
|
*
|
|
1077
|
-
* ```ts
|
|
1078
|
-
* import { Config } from "effect"
|
|
1397
|
+
* ```ts import.meta.vitest
|
|
1398
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1079
1399
|
*
|
|
1080
1400
|
* const host = Config.string("HOST").pipe(
|
|
1081
1401
|
* Config.orElse(() => Config.succeed("localhost"))
|
|
1082
1402
|
* )
|
|
1403
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
1404
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1083
1405
|
* ```
|
|
1084
1406
|
*
|
|
1085
1407
|
* @category constructors
|
|
1086
1408
|
* @since 2.0.0
|
|
1087
1409
|
*/
|
|
1088
1410
|
export function succeed<T>(value: T) {
|
|
1089
|
-
return make(() => Effect.succeed(value))
|
|
1411
|
+
return make(() => Effect.succeed(resolved(value, false)))
|
|
1090
1412
|
}
|
|
1091
1413
|
|
|
1092
1414
|
/**
|
|
@@ -1102,13 +1424,13 @@ export function succeed<T>(value: T) {
|
|
|
1102
1424
|
*
|
|
1103
1425
|
* **Example** (Reading a string config)
|
|
1104
1426
|
*
|
|
1105
|
-
* ```ts
|
|
1427
|
+
* ```ts import.meta.vitest
|
|
1106
1428
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1107
1429
|
*
|
|
1108
1430
|
* const host = Config.string("HOST")
|
|
1109
1431
|
*
|
|
1110
1432
|
* const provider = ConfigProvider.fromUnknown({ HOST: "localhost" })
|
|
1111
|
-
*
|
|
1433
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1112
1434
|
* ```
|
|
1113
1435
|
*
|
|
1114
1436
|
* @see {@link nonEmptyString} – rejects empty strings
|
|
@@ -1219,10 +1541,12 @@ export function int(name?: string) {
|
|
|
1219
1541
|
*
|
|
1220
1542
|
* **Example** (Restricting to a literal)
|
|
1221
1543
|
*
|
|
1222
|
-
* ```ts
|
|
1223
|
-
* import { Config } from "effect"
|
|
1544
|
+
* ```ts import.meta.vitest
|
|
1545
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1224
1546
|
*
|
|
1225
1547
|
* const env = Config.literal("production", "ENV")
|
|
1548
|
+
* const provider = ConfigProvider.fromUnknown({ ENV: "production" })
|
|
1549
|
+
* Effect.runSync(env.parse(provider)) // => "production"
|
|
1226
1550
|
* ```
|
|
1227
1551
|
*
|
|
1228
1552
|
* @see {@link literals} – accepts multiple literal values
|
|
@@ -1246,10 +1570,12 @@ export function literal<L extends SchemaAST.LiteralValue>(literal: L, name?: str
|
|
|
1246
1570
|
*
|
|
1247
1571
|
* **Example** (Restricting to a set of literals)
|
|
1248
1572
|
*
|
|
1249
|
-
* ```ts
|
|
1250
|
-
* import { Config } from "effect"
|
|
1573
|
+
* ```ts import.meta.vitest
|
|
1574
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1251
1575
|
*
|
|
1252
1576
|
* const env = Config.literals(["development", "production"], "ENV")
|
|
1577
|
+
* const provider = ConfigProvider.fromUnknown({ ENV: "development" })
|
|
1578
|
+
* Effect.runSync(env.parse(provider)) // => "development"
|
|
1253
1579
|
* ```
|
|
1254
1580
|
*
|
|
1255
1581
|
* @see {@link literal} for accepting one specific literal value
|
|
@@ -1278,13 +1604,10 @@ export function literals<const L extends ReadonlyArray<SchemaAST.LiteralValue>>(
|
|
|
1278
1604
|
*
|
|
1279
1605
|
* **Example** (Reading a boolean flag)
|
|
1280
1606
|
*
|
|
1281
|
-
* ```ts
|
|
1607
|
+
* ```ts import.meta.vitest
|
|
1282
1608
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1283
1609
|
*
|
|
1284
|
-
* const program =
|
|
1285
|
-
* const flag = yield* Config.boolean("FEATURE_FLAG")
|
|
1286
|
-
* console.log(flag)
|
|
1287
|
-
* })
|
|
1610
|
+
* const program = Config.boolean("FEATURE_FLAG")
|
|
1288
1611
|
*
|
|
1289
1612
|
* const provider = ConfigProvider.fromEnv({
|
|
1290
1613
|
* env: {
|
|
@@ -1294,8 +1617,7 @@ export function literals<const L extends ReadonlyArray<SchemaAST.LiteralValue>>(
|
|
|
1294
1617
|
*
|
|
1295
1618
|
* Effect.runSync(
|
|
1296
1619
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1297
|
-
* )
|
|
1298
|
-
* // Output: true
|
|
1620
|
+
* ) // => true
|
|
1299
1621
|
* ```
|
|
1300
1622
|
*
|
|
1301
1623
|
* @see {@link Boolean} for the underlying boolean codec
|
|
@@ -1324,13 +1646,10 @@ export function boolean(name?: string) {
|
|
|
1324
1646
|
*
|
|
1325
1647
|
* **Example** (Reading a duration)
|
|
1326
1648
|
*
|
|
1327
|
-
* ```ts
|
|
1328
|
-
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1649
|
+
* ```ts import.meta.vitest
|
|
1650
|
+
* import { Config, ConfigProvider, Duration, Effect } from "effect"
|
|
1329
1651
|
*
|
|
1330
|
-
* const program = Effect.
|
|
1331
|
-
* const duration = yield* Config.duration("DURATION")
|
|
1332
|
-
* console.log(duration)
|
|
1333
|
-
* })
|
|
1652
|
+
* const program = Config.duration("DURATION").pipe(Effect.map(Duration.toMillis))
|
|
1334
1653
|
*
|
|
1335
1654
|
* const provider = ConfigProvider.fromEnv({
|
|
1336
1655
|
* env: {
|
|
@@ -1340,8 +1659,7 @@ export function boolean(name?: string) {
|
|
|
1340
1659
|
*
|
|
1341
1660
|
* Effect.runSync(
|
|
1342
1661
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1343
|
-
* )
|
|
1344
|
-
* // Output: Duration { _tag: "millis", value: 10000 }
|
|
1662
|
+
* ) // => 10000
|
|
1345
1663
|
* ```
|
|
1346
1664
|
*
|
|
1347
1665
|
* @see {@link schema} for decoding configuration values with a custom codec
|
|
@@ -1366,13 +1684,10 @@ export function duration(name?: string) {
|
|
|
1366
1684
|
*
|
|
1367
1685
|
* **Example** (Reading a port)
|
|
1368
1686
|
*
|
|
1369
|
-
* ```ts
|
|
1687
|
+
* ```ts import.meta.vitest
|
|
1370
1688
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1371
1689
|
*
|
|
1372
|
-
* const program =
|
|
1373
|
-
* const port = yield* Config.port("PORT")
|
|
1374
|
-
* console.log(port)
|
|
1375
|
-
* })
|
|
1690
|
+
* const program = Config.port("PORT")
|
|
1376
1691
|
*
|
|
1377
1692
|
* const provider = ConfigProvider.fromEnv({
|
|
1378
1693
|
* env: {
|
|
@@ -1382,8 +1697,7 @@ export function duration(name?: string) {
|
|
|
1382
1697
|
*
|
|
1383
1698
|
* Effect.runSync(
|
|
1384
1699
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1385
|
-
* )
|
|
1386
|
-
* // Output: 8080
|
|
1700
|
+
* ) // => 8080
|
|
1387
1701
|
* ```
|
|
1388
1702
|
*
|
|
1389
1703
|
* @see {@link int} for integer config values outside the port range
|
|
@@ -1412,13 +1726,10 @@ export function port(name?: string) {
|
|
|
1412
1726
|
*
|
|
1413
1727
|
* **Example** (Reading a log level)
|
|
1414
1728
|
*
|
|
1415
|
-
* ```ts
|
|
1729
|
+
* ```ts import.meta.vitest
|
|
1416
1730
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1417
1731
|
*
|
|
1418
|
-
* const program =
|
|
1419
|
-
* const logLevel = yield* Config.logLevel("LOG_LEVEL")
|
|
1420
|
-
* console.log(logLevel)
|
|
1421
|
-
* })
|
|
1732
|
+
* const program = Config.logLevel("LOG_LEVEL")
|
|
1422
1733
|
*
|
|
1423
1734
|
* const provider = ConfigProvider.fromEnv({
|
|
1424
1735
|
* env: {
|
|
@@ -1428,8 +1739,7 @@ export function port(name?: string) {
|
|
|
1428
1739
|
*
|
|
1429
1740
|
* Effect.runSync(
|
|
1430
1741
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1431
|
-
* )
|
|
1432
|
-
* // Output: "Info"
|
|
1742
|
+
* ) // => "Info"
|
|
1433
1743
|
* ```
|
|
1434
1744
|
*
|
|
1435
1745
|
* @see {@link LogLevel} for the underlying log-level codec
|
|
@@ -1456,13 +1766,10 @@ export function logLevel(name?: string) {
|
|
|
1456
1766
|
*
|
|
1457
1767
|
* **Example** (Reading a secret)
|
|
1458
1768
|
*
|
|
1459
|
-
* ```ts
|
|
1769
|
+
* ```ts import.meta.vitest
|
|
1460
1770
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1461
1771
|
*
|
|
1462
|
-
* const program = Effect.
|
|
1463
|
-
* const apiKey = yield* Config.redacted("API_KEY")
|
|
1464
|
-
* console.log(apiKey)
|
|
1465
|
-
* })
|
|
1772
|
+
* const program = Config.redacted("API_KEY").pipe(Effect.map(String))
|
|
1466
1773
|
*
|
|
1467
1774
|
* const provider = ConfigProvider.fromEnv({
|
|
1468
1775
|
* env: {
|
|
@@ -1472,8 +1779,7 @@ export function logLevel(name?: string) {
|
|
|
1472
1779
|
*
|
|
1473
1780
|
* Effect.runSync(
|
|
1474
1781
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1475
|
-
* )
|
|
1476
|
-
* // Output: <redacted>
|
|
1782
|
+
* ) // => "<redacted>"
|
|
1477
1783
|
* ```
|
|
1478
1784
|
*
|
|
1479
1785
|
* @see {@link string} for non-secret string settings
|
|
@@ -1502,13 +1808,10 @@ export function redacted(name?: string) {
|
|
|
1502
1808
|
*
|
|
1503
1809
|
* **Example** (Reading a URL)
|
|
1504
1810
|
*
|
|
1505
|
-
* ```ts
|
|
1811
|
+
* ```ts import.meta.vitest
|
|
1506
1812
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1507
1813
|
*
|
|
1508
|
-
* const program = Effect.
|
|
1509
|
-
* const url = yield* Config.url("URL")
|
|
1510
|
-
* console.log(url)
|
|
1511
|
-
* })
|
|
1814
|
+
* const program = Config.url("URL").pipe(Effect.map((url) => url.href))
|
|
1512
1815
|
*
|
|
1513
1816
|
* const provider = ConfigProvider.fromEnv({
|
|
1514
1817
|
* env: {
|
|
@@ -1518,22 +1821,7 @@ export function redacted(name?: string) {
|
|
|
1518
1821
|
*
|
|
1519
1822
|
* Effect.runSync(
|
|
1520
1823
|
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1521
|
-
* )
|
|
1522
|
-
* // Output:
|
|
1523
|
-
* // URL {
|
|
1524
|
-
* // href: 'https://example.com/',
|
|
1525
|
-
* // origin: 'https://example.com',
|
|
1526
|
-
* // protocol: 'https:',
|
|
1527
|
-
* // username: '',
|
|
1528
|
-
* // password: '',
|
|
1529
|
-
* // host: 'example.com',
|
|
1530
|
-
* // hostname: 'example.com',
|
|
1531
|
-
* // port: '',
|
|
1532
|
-
* // pathname: '/',
|
|
1533
|
-
* // search: '',
|
|
1534
|
-
* // searchParams: URLSearchParams {},
|
|
1535
|
-
* // hash: ''
|
|
1536
|
-
* // }
|
|
1824
|
+
* ) // => "https://example.com/"
|
|
1537
1825
|
* ```
|
|
1538
1826
|
*
|
|
1539
1827
|
* @see {@link schema} for decoding configuration values with a custom codec
|
|
@@ -1554,7 +1842,7 @@ export function url(name?: string) {
|
|
|
1554
1842
|
*
|
|
1555
1843
|
* **Details**
|
|
1556
1844
|
*
|
|
1557
|
-
* Shortcut for `Config.schema(Schema.
|
|
1845
|
+
* Shortcut for `Config.schema(Schema.Date, name)`.
|
|
1558
1846
|
*
|
|
1559
1847
|
* **Gotchas**
|
|
1560
1848
|
*
|
|
@@ -1562,21 +1850,20 @@ export function url(name?: string) {
|
|
|
1562
1850
|
*
|
|
1563
1851
|
* **Example** (Reading a date)
|
|
1564
1852
|
*
|
|
1565
|
-
* ```ts
|
|
1853
|
+
* ```ts import.meta.vitest
|
|
1566
1854
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1567
1855
|
*
|
|
1568
1856
|
* const createdAt = Config.date("CREATED_AT")
|
|
1569
1857
|
*
|
|
1570
1858
|
* const provider = ConfigProvider.fromUnknown({ CREATED_AT: "2024-01-15" })
|
|
1571
|
-
*
|
|
1572
|
-
* // Date("2024-01-15T00:00:00.000Z")
|
|
1859
|
+
* Effect.runSync(createdAt.parse(provider)).toISOString() // => "2024-01-15T00:00:00.000Z"
|
|
1573
1860
|
* ```
|
|
1574
1861
|
*
|
|
1575
1862
|
* @category constructors
|
|
1576
1863
|
* @since 2.0.0
|
|
1577
1864
|
*/
|
|
1578
1865
|
export function date(name?: string) {
|
|
1579
|
-
return schema(Schema.
|
|
1866
|
+
return schema(Schema.Date, name)
|
|
1580
1867
|
}
|
|
1581
1868
|
|
|
1582
1869
|
/**
|
|
@@ -1597,7 +1884,7 @@ export function date(name?: string) {
|
|
|
1597
1884
|
*
|
|
1598
1885
|
* **Example** (Nesting a struct config under `"database"`)
|
|
1599
1886
|
*
|
|
1600
|
-
* ```ts
|
|
1887
|
+
* ```ts import.meta.vitest
|
|
1601
1888
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1602
1889
|
*
|
|
1603
1890
|
* const dbConfig = Config.all({
|
|
@@ -1608,13 +1895,12 @@ export function date(name?: string) {
|
|
|
1608
1895
|
* const provider = ConfigProvider.fromUnknown({
|
|
1609
1896
|
* database: { host: "localhost", port: "5432" }
|
|
1610
1897
|
* })
|
|
1611
|
-
*
|
|
1612
|
-
* // { host: "localhost", port: 5432 }
|
|
1898
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
1613
1899
|
* ```
|
|
1614
1900
|
*
|
|
1615
1901
|
* **Example** (Reading env vars with a nested prefix)
|
|
1616
1902
|
*
|
|
1617
|
-
* ```ts
|
|
1903
|
+
* ```ts import.meta.vitest
|
|
1618
1904
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1619
1905
|
*
|
|
1620
1906
|
* const host = Config.string("host").pipe(Config.nested("database"))
|
|
@@ -1622,7 +1908,7 @@ export function date(name?: string) {
|
|
|
1622
1908
|
* const provider = ConfigProvider.fromEnv({
|
|
1623
1909
|
* env: { database_host: "localhost" }
|
|
1624
1910
|
* })
|
|
1625
|
-
*
|
|
1911
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1626
1912
|
* ```
|
|
1627
1913
|
*
|
|
1628
1914
|
* @see {@link all} – combine multiple configs into a struct
|
|
@@ -1650,7 +1936,7 @@ export const nested: {
|
|
|
1650
1936
|
*
|
|
1651
1937
|
* **Example** (Nesting a struct config under `"database"`)
|
|
1652
1938
|
*
|
|
1653
|
-
* ```ts
|
|
1939
|
+
* ```ts import.meta.vitest
|
|
1654
1940
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1655
1941
|
*
|
|
1656
1942
|
* const dbConfig = Config.all({
|
|
@@ -1661,13 +1947,12 @@ export const nested: {
|
|
|
1661
1947
|
* const provider = ConfigProvider.fromUnknown({
|
|
1662
1948
|
* database: { host: "localhost", port: "5432" }
|
|
1663
1949
|
* })
|
|
1664
|
-
*
|
|
1665
|
-
* // { host: "localhost", port: 5432 }
|
|
1950
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
1666
1951
|
* ```
|
|
1667
1952
|
*
|
|
1668
1953
|
* **Example** (Reading env vars with a nested prefix)
|
|
1669
1954
|
*
|
|
1670
|
-
* ```ts
|
|
1955
|
+
* ```ts import.meta.vitest
|
|
1671
1956
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1672
1957
|
*
|
|
1673
1958
|
* const host = Config.string("host").pipe(Config.nested("database"))
|
|
@@ -1675,7 +1960,7 @@ export const nested: {
|
|
|
1675
1960
|
* const provider = ConfigProvider.fromEnv({
|
|
1676
1961
|
* env: { database_host: "localhost" }
|
|
1677
1962
|
* })
|
|
1678
|
-
*
|
|
1963
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1679
1964
|
* ```
|
|
1680
1965
|
*
|
|
1681
1966
|
* @see {@link all} – combine multiple configs into a struct
|
|
@@ -1703,7 +1988,7 @@ export const nested: {
|
|
|
1703
1988
|
*
|
|
1704
1989
|
* **Example** (Nesting a struct config under `"database"`)
|
|
1705
1990
|
*
|
|
1706
|
-
* ```ts
|
|
1991
|
+
* ```ts import.meta.vitest
|
|
1707
1992
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1708
1993
|
*
|
|
1709
1994
|
* const dbConfig = Config.all({
|
|
@@ -1714,13 +1999,12 @@ export const nested: {
|
|
|
1714
1999
|
* const provider = ConfigProvider.fromUnknown({
|
|
1715
2000
|
* database: { host: "localhost", port: "5432" }
|
|
1716
2001
|
* })
|
|
1717
|
-
*
|
|
1718
|
-
* // { host: "localhost", port: 5432 }
|
|
2002
|
+
* Effect.runSync(dbConfig.parse(provider)) // => { host: "localhost", port: 5432 }
|
|
1719
2003
|
* ```
|
|
1720
2004
|
*
|
|
1721
2005
|
* **Example** (Reading env vars with a nested prefix)
|
|
1722
2006
|
*
|
|
1723
|
-
* ```ts
|
|
2007
|
+
* ```ts import.meta.vitest
|
|
1724
2008
|
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1725
2009
|
*
|
|
1726
2010
|
* const host = Config.string("host").pipe(Config.nested("database"))
|
|
@@ -1728,7 +2012,7 @@ export const nested: {
|
|
|
1728
2012
|
* const provider = ConfigProvider.fromEnv({
|
|
1729
2013
|
* env: { database_host: "localhost" }
|
|
1730
2014
|
* })
|
|
1731
|
-
*
|
|
2015
|
+
* Effect.runSync(host.parse(provider)) // => "localhost"
|
|
1732
2016
|
* ```
|
|
1733
2017
|
*
|
|
1734
2018
|
* @see {@link all} – combine multiple configs into a struct
|
|
@@ -1741,5 +2025,5 @@ export const nested: {
|
|
|
1741
2025
|
} = dual(
|
|
1742
2026
|
2,
|
|
1743
2027
|
<A>(self: Config<A>, name: string): Config<A> =>
|
|
1744
|
-
make((provider, pathPrefix) => self
|
|
2028
|
+
make((provider, pathPrefix) => evaluateAt(self, provider, [...pathPrefix, name]))
|
|
1745
2029
|
)
|