effect 4.0.0-beta.102 → 4.0.0-beta.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Array.d.ts +971 -1037
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +381 -407
- package/dist/Array.js.map +1 -1
- package/dist/BigDecimal.d.ts +433 -756
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +200 -325
- package/dist/BigDecimal.js.map +1 -1
- package/dist/BigInt.d.ts +207 -267
- package/dist/BigInt.d.ts.map +1 -1
- package/dist/BigInt.js +107 -135
- package/dist/BigInt.js.map +1 -1
- package/dist/Boolean.d.ts +146 -188
- package/dist/Boolean.d.ts.map +1 -1
- package/dist/Boolean.js +64 -84
- package/dist/Boolean.js.map +1 -1
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +405 -254
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +166 -101
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +167 -277
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Cause.js +122 -176
- package/dist/Cause.js.map +1 -1
- package/dist/Channel.d.ts +729 -768
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +514 -440
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +834 -1173
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +326 -439
- package/dist/Chunk.js.map +1 -1
- package/dist/Clock.d.ts +180 -49
- package/dist/Clock.d.ts.map +1 -1
- package/dist/Clock.js +96 -31
- package/dist/Clock.js.map +1 -1
- package/dist/Combiner.d.ts +20 -33
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +18 -30
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +225 -173
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +336 -265
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +194 -68
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +115 -80
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Console.d.ts +233 -33
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +232 -32
- package/dist/Console.js.map +1 -1
- package/dist/Context.d.ts +151 -274
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +171 -214
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +68 -77
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +57 -66
- package/dist/Cron.js.map +1 -1
- package/dist/Crypto.d.ts +13 -15
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +9 -10
- package/dist/Crypto.js.map +1 -1
- package/dist/Data.d.ts +60 -80
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +16 -23
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +562 -660
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +307 -362
- package/dist/DateTime.js.map +1 -1
- package/dist/Deferred.d.ts +253 -256
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/Deferred.js +104 -96
- package/dist/Deferred.js.map +1 -1
- package/dist/Duration.d.ts +216 -308
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +132 -186
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +2841 -3247
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1322 -1546
- package/dist/Effect.js.map +1 -1
- package/dist/Effectable.js.map +1 -1
- package/dist/Encoding.d.ts +22 -40
- package/dist/Encoding.d.ts.map +1 -1
- package/dist/Encoding.js +22 -40
- package/dist/Encoding.js.map +1 -1
- package/dist/Equal.d.ts +33 -37
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +29 -21
- package/dist/Equal.js.map +1 -1
- package/dist/Equivalence.d.ts +103 -105
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +77 -79
- package/dist/Equivalence.js.map +1 -1
- package/dist/ErrorReporter.d.ts +51 -27
- package/dist/ErrorReporter.d.ts.map +1 -1
- package/dist/ErrorReporter.js +50 -26
- package/dist/ErrorReporter.js.map +1 -1
- package/dist/ExecutionPlan.d.ts +13 -55
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +7 -28
- package/dist/ExecutionPlan.js.map +1 -1
- package/dist/Exit.d.ts +116 -192
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +82 -130
- package/dist/Exit.js.map +1 -1
- package/dist/Fiber.d.ts +82 -146
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js +48 -87
- package/dist/Fiber.js.map +1 -1
- package/dist/FiberHandle.d.ts +152 -105
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +106 -73
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +213 -168
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +114 -89
- package/dist/FiberMap.js.map +1 -1
- package/dist/FiberSet.d.ts +123 -81
- package/dist/FiberSet.d.ts.map +1 -1
- package/dist/FiberSet.js +85 -59
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +153 -264
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +42 -147
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +61 -33
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +26 -15
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +25 -33
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +48 -49
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +76 -145
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +40 -57
- package/dist/Function.js.map +1 -1
- package/dist/Graph.d.ts +360 -714
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +168 -297
- package/dist/Graph.js.map +1 -1
- package/dist/HKT.d.ts +12 -6
- package/dist/HKT.d.ts.map +1 -1
- package/dist/Hash.d.ts +47 -83
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +46 -68
- package/dist/Hash.js.map +1 -1
- package/dist/HashMap.d.ts +319 -411
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +122 -166
- package/dist/HashMap.js.map +1 -1
- package/dist/HashRing.d.ts.map +1 -1
- package/dist/HashRing.js +1 -0
- package/dist/HashRing.js.map +1 -1
- package/dist/HashSet.d.ts +177 -284
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js +68 -109
- package/dist/HashSet.js.map +1 -1
- package/dist/Inspectable.d.ts +12 -12
- package/dist/Inspectable.js +8 -8
- package/dist/Inspectable.js.map +1 -1
- package/dist/Iterable.d.ts +620 -786
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +228 -306
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonPatch.d.ts +11 -13
- package/dist/JsonPatch.d.ts.map +1 -1
- package/dist/JsonPatch.js +44 -102
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonPointer.d.ts +8 -8
- package/dist/JsonPointer.js +8 -8
- package/dist/JsonPointer.js.map +1 -1
- package/dist/JsonSchema.d.ts +98 -44
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +297 -234
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +23 -35
- package/dist/Latch.d.ts.map +1 -1
- package/dist/Latch.js +16 -28
- package/dist/Latch.js.map +1 -1
- package/dist/Layer.d.ts +359 -260
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +195 -175
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +42 -29
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +31 -21
- package/dist/LayerMap.js.map +1 -1
- package/dist/LayerRef.d.ts +6 -2
- package/dist/LayerRef.d.ts.map +1 -1
- package/dist/LayerRef.js +6 -2
- package/dist/LayerRef.js.map +1 -1
- package/dist/LogLevel.d.ts +114 -214
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +41 -76
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +218 -467
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +204 -450
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +7 -5
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +7 -5
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Match.d.ts +217 -252
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +150 -183
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +442 -993
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +198 -642
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts +144 -173
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js +68 -79
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/MutableHashSet.d.ts +84 -89
- package/dist/MutableHashSet.d.ts.map +1 -1
- package/dist/MutableHashSet.js +44 -47
- package/dist/MutableHashSet.js.map +1 -1
- package/dist/MutableList.d.ts +71 -370
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +59 -284
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts +420 -243
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +209 -120
- package/dist/MutableRef.js.map +1 -1
- package/dist/Newtype.d.ts +21 -14
- package/dist/Newtype.d.ts.map +1 -1
- package/dist/Newtype.js +15 -13
- package/dist/Newtype.js.map +1 -1
- package/dist/NonEmptyIterable.d.ts +7 -137
- package/dist/NonEmptyIterable.d.ts.map +1 -1
- package/dist/NonEmptyIterable.js +5 -93
- package/dist/NonEmptyIterable.js.map +1 -1
- package/dist/Number.d.ts +196 -233
- package/dist/Number.d.ts.map +1 -1
- package/dist/Number.js +90 -109
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts +97 -189
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +187 -290
- package/dist/Optic.js.map +1 -1
- package/dist/Option.d.ts +447 -812
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +211 -392
- package/dist/Option.js.map +1 -1
- package/dist/Order.d.ts +109 -109
- package/dist/Order.js +91 -91
- package/dist/Order.js.map +1 -1
- package/dist/Ordering.d.ts +20 -23
- package/dist/Ordering.d.ts.map +1 -1
- package/dist/Ordering.js +8 -9
- package/dist/Ordering.js.map +1 -1
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Path.d.ts +38 -41
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +3 -4
- package/dist/Path.js.map +1 -1
- package/dist/Pipeable.d.ts +6 -5
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +2 -2
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +4 -4
- package/dist/PlatformError.js +3 -3
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +4 -2
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +4 -2
- package/dist/Pool.js.map +1 -1
- package/dist/Predicate.d.ts +200 -181
- package/dist/Predicate.d.ts.map +1 -1
- package/dist/Predicate.js +100 -108
- package/dist/Predicate.js.map +1 -1
- package/dist/PrimaryKey.d.ts +7 -7
- package/dist/PrimaryKey.js +5 -5
- package/dist/PrimaryKey.js.map +1 -1
- package/dist/PubSub.d.ts +425 -494
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +373 -362
- package/dist/PubSub.js.map +1 -1
- package/dist/Pull.d.ts +24 -18
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +11 -9
- package/dist/Pull.js.map +1 -1
- package/dist/Queue.d.ts +200 -159
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +162 -132
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +49 -74
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +35 -54
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +121 -63
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +42 -21
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +24 -13
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/RcRef.js +15 -9
- package/dist/RcRef.js.map +1 -1
- package/dist/Record.d.ts +291 -488
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +111 -202
- package/dist/Record.js.map +1 -1
- package/dist/Redactable.d.ts +6 -2
- package/dist/Redactable.d.ts.map +1 -1
- package/dist/Redactable.js +7 -2
- package/dist/Redactable.js.map +1 -1
- package/dist/Redacted.d.ts +25 -25
- package/dist/Redacted.d.ts.map +1 -1
- package/dist/Redacted.js +19 -20
- package/dist/Redacted.js.map +1 -1
- package/dist/Reducer.d.ts +8 -15
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +6 -12
- package/dist/Reducer.js.map +1 -1
- package/dist/Ref.d.ts +95 -165
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +75 -122
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +102 -168
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +102 -168
- package/dist/References.js.map +1 -1
- package/dist/RegExp.d.ts +10 -14
- package/dist/RegExp.d.ts.map +1 -1
- package/dist/RegExp.js +10 -14
- package/dist/RegExp.js.map +1 -1
- package/dist/Request.d.ts +31 -21
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +16 -13
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +201 -90
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +87 -41
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Result.d.ts +302 -470
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +133 -217
- package/dist/Result.js.map +1 -1
- package/dist/Runtime.d.ts +50 -75
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +39 -60
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +290 -1636
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +162 -803
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +5 -5
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +18 -6
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +644 -642
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +491 -527
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +27 -50
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +366 -279
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaError.d.ts +7 -6
- package/dist/SchemaError.d.ts.map +1 -1
- package/dist/SchemaError.js +7 -6
- package/dist/SchemaError.js.map +1 -1
- package/dist/SchemaGetter.d.ts +217 -174
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +218 -185
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +62 -190
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +73 -265
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +2 -2
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +123 -75
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +22 -36
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +20 -26
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +114 -74
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +120 -85
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +123 -151
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +72 -92
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/ScopedRef.d.ts +3 -3
- package/dist/ScopedRef.js +2 -2
- package/dist/ScopedRef.js.map +1 -1
- package/dist/Semaphore.d.ts +96 -10
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +78 -39
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts +117 -107
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +107 -100
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +1 -1
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +2415 -2949
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +1078 -1381
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +262 -308
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +184 -215
- package/dist/String.js.map +1 -1
- package/dist/Struct.d.ts +109 -114
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +41 -50
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +282 -250
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +104 -92
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/Symbol.d.ts +3 -3
- package/dist/Symbol.js +3 -3
- package/dist/Symbol.js.map +1 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Take.js.map +1 -1
- package/dist/Terminal.d.ts +2 -2
- package/dist/Terminal.js +1 -1
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +100 -54
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +41 -24
- package/dist/Tracer.js.map +1 -1
- package/dist/Trie.d.ts +287 -679
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +109 -251
- package/dist/Trie.js.map +1 -1
- package/dist/Tuple.d.ts +92 -127
- package/dist/Tuple.d.ts.map +1 -1
- package/dist/Tuple.js +42 -57
- package/dist/Tuple.js.map +1 -1
- package/dist/TxChunk.d.ts +201 -121
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +85 -56
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +62 -46
- package/dist/TxDeferred.d.ts.map +1 -1
- package/dist/TxDeferred.js +30 -22
- package/dist/TxDeferred.js.map +1 -1
- package/dist/TxHashMap.d.ts +631 -779
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +268 -330
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +297 -236
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +130 -100
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +126 -95
- package/dist/TxPriorityQueue.d.ts.map +1 -1
- package/dist/TxPriorityQueue.js +74 -56
- package/dist/TxPriorityQueue.js.map +1 -1
- package/dist/TxPubSub.d.ts +101 -88
- package/dist/TxPubSub.d.ts.map +1 -1
- package/dist/TxPubSub.js +87 -66
- package/dist/TxPubSub.js.map +1 -1
- package/dist/TxQueue.d.ts +200 -180
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +160 -136
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +97 -66
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +67 -45
- package/dist/TxReentrantLock.js.map +1 -1
- package/dist/TxRef.d.ts +51 -32
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +23 -15
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +129 -95
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +85 -70
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +97 -70
- package/dist/TxSubscriptionRef.d.ts.map +1 -1
- package/dist/TxSubscriptionRef.js +44 -34
- package/dist/TxSubscriptionRef.js.map +1 -1
- package/dist/Types.d.ts +126 -67
- package/dist/Types.d.ts.map +1 -1
- package/dist/UndefinedOr.js.map +1 -1
- package/dist/Unify.d.ts +45 -65
- package/dist/Unify.d.ts.map +1 -1
- package/dist/Unify.js +6 -9
- package/dist/Unify.js.map +1 -1
- package/dist/Utils.d.ts +23 -16
- package/dist/Utils.d.ts.map +1 -1
- package/dist/Utils.js +3 -7
- package/dist/Utils.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/array.js.map +1 -1
- package/dist/internal/core.js +1 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +4 -0
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/doNotation.js.map +1 -1
- package/dist/internal/effect.js +77 -40
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/executionPlan.js.map +1 -1
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hashSet.js.map +1 -1
- package/dist/internal/layer.js.map +1 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/metric.js.map +1 -1
- package/dist/internal/option.js.map +1 -1
- package/dist/internal/persistence.d.ts +2 -0
- package/dist/internal/persistence.d.ts.map +1 -0
- package/dist/internal/persistence.js +3 -0
- package/dist/internal/persistence.js.map +1 -0
- package/dist/internal/random.js.map +1 -1
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/redacted.js.map +1 -1
- package/dist/internal/references.js +3 -0
- package/dist/internal/references.js.map +1 -1
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/result.js.map +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/cause.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +13 -11
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +8 -15
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/parser.d.ts +14 -0
- package/dist/internal/schema/parser.d.ts.map +1 -0
- package/dist/internal/schema/parser.js +13 -0
- package/dist/internal/schema/parser.js.map +1 -0
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/toArbitrary.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toEquivalence.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +48 -6
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +87 -107
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/stackTraceLimit.js.map +1 -1
- package/dist/internal/stream.js.map +1 -1
- package/dist/internal/tracer.js.map +1 -1
- package/dist/internal/trie.js +13 -9
- package/dist/internal/trie.js.map +1 -1
- package/dist/testing/FastCheck.d.ts +8 -7
- package/dist/testing/FastCheck.d.ts.map +1 -1
- package/dist/testing/FastCheck.js +8 -7
- package/dist/testing/FastCheck.js.map +1 -1
- package/dist/testing/TestClock.d.ts +57 -28
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +50 -18
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestConsole.d.ts +32 -31
- package/dist/testing/TestConsole.d.ts.map +1 -1
- package/dist/testing/TestConsole.js +24 -22
- package/dist/testing/TestConsole.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +29 -29
- package/dist/testing/TestSchema.js +25 -25
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +95 -118
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +94 -117
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +132 -97
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +55 -51
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
- package/dist/unstable/ai/IdGenerator.d.ts +32 -28
- package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
- package/dist/unstable/ai/IdGenerator.js +26 -21
- package/dist/unstable/ai/IdGenerator.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +107 -67
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +104 -64
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpProtocol.d.ts +30 -0
- package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/McpProtocol.js +20 -0
- package/dist/unstable/ai/McpProtocol.js.map +1 -0
- package/dist/unstable/ai/McpSchema.d.ts +141 -75
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +58 -50
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +68 -59
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +694 -241
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +8 -19
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +9 -20
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +112 -38
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +53 -17
- package/dist/unstable/ai/Prompt.js.map +1 -1
- package/dist/unstable/ai/Response.d.ts +28 -14
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +9 -4
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
- package/dist/unstable/ai/Telemetry.d.ts +46 -13
- package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
- package/dist/unstable/ai/Telemetry.js +18 -7
- package/dist/unstable/ai/Telemetry.js.map +1 -1
- package/dist/unstable/ai/Tokenizer.d.ts +14 -3
- package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
- package/dist/unstable/ai/Tokenizer.js +10 -2
- package/dist/unstable/ai/Tokenizer.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +59 -44
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +48 -39
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +26 -8
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +18 -4
- package/dist/unstable/ai/Toolkit.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +4 -0
- package/dist/unstable/ai/index.d.ts.map +1 -1
- package/dist/unstable/ai/index.js +4 -0
- package/dist/unstable/ai/index.js.map +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
- package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
- package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
- package/dist/unstable/ai/internal/structured-output.js +14 -15
- package/dist/unstable/ai/internal/structured-output.js.map +1 -1
- package/dist/unstable/cli/Argument.d.ts +273 -69
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js +111 -33
- package/dist/unstable/cli/Argument.js.map +1 -1
- package/dist/unstable/cli/CliConfig.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +69 -76
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +57 -61
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/CliOutput.d.ts +35 -54
- package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
- package/dist/unstable/cli/CliOutput.js +26 -42
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +705 -107
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +238 -42
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/Completions.js.map +1 -1
- package/dist/unstable/cli/Flag.d.ts +418 -138
- package/dist/unstable/cli/Flag.d.ts.map +1 -1
- package/dist/unstable/cli/Flag.js +197 -71
- package/dist/unstable/cli/Flag.js.map +1 -1
- package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
- package/dist/unstable/cli/GlobalFlag.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +12 -4
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Param.d.ts +292 -78
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +128 -46
- package/dist/unstable/cli/Param.js.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts +370 -149
- package/dist/unstable/cli/Primitive.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.js +344 -136
- package/dist/unstable/cli/Primitive.js.map +1 -1
- package/dist/unstable/cli/Prompt.d.ts +23 -14
- package/dist/unstable/cli/Prompt.d.ts.map +1 -1
- package/dist/unstable/cli/Prompt.js +23 -14
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/index.js.map +1 -1
- package/dist/unstable/cli/internal/ansi.js.map +1 -1
- package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
- package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
- package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
- package/dist/unstable/cli/internal/config.js.map +1 -1
- package/dist/unstable/cli/internal/help.js.map +1 -1
- package/dist/unstable/cli/internal/lexer.js +17 -7
- package/dist/unstable/cli/internal/lexer.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +2 -2
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cli/internal/wizard.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterError.js.map +1 -1
- package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
- package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
- package/dist/unstable/cluster/ClusterSchema.js +8 -8
- package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +5 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/DeliverAt.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +10 -10
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +8 -8
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityAddress.js.map +1 -1
- package/dist/unstable/cluster/EntityId.js.map +1 -1
- package/dist/unstable/cluster/EntityProxy.d.ts +4 -2
- package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityProxy.js +4 -2
- package/dist/unstable/cluster/EntityProxy.js.map +1 -1
- package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.js +2 -2
- package/dist/unstable/cluster/EntityResource.js.map +1 -1
- package/dist/unstable/cluster/EntityType.js.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +3 -3
- package/dist/unstable/cluster/Envelope.js +3 -3
- package/dist/unstable/cluster/Envelope.js.map +1 -1
- package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
- package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
- package/dist/unstable/cluster/HttpRunner.js +6 -4
- package/dist/unstable/cluster/HttpRunner.js.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/MachineId.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +9 -9
- package/dist/unstable/cluster/Message.js +6 -6
- package/dist/unstable/cluster/Message.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
- package/dist/unstable/cluster/MessageStorage.js +5 -5
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +4 -4
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/Runner.js.map +1 -1
- package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
- package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
- package/dist/unstable/cluster/RunnerHealth.js +1 -1
- package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
- package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
- package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerServer.js +16 -16
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +2 -2
- package/dist/unstable/cluster/RunnerStorage.js +1 -1
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +6 -6
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +19 -10
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/ShardId.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +3 -2
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +3 -3
- package/dist/unstable/cluster/ShardingConfig.js +3 -3
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
- package/dist/unstable/cluster/SingleRunner.js.map +1 -1
- package/dist/unstable/cluster/Singleton.js.map +1 -1
- package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
- package/dist/unstable/cluster/SingletonAddress.js +1 -1
- package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
- package/dist/unstable/cluster/Snowflake.d.ts +8 -8
- package/dist/unstable/cluster/Snowflake.js +8 -8
- package/dist/unstable/cluster/Snowflake.js.map +1 -1
- package/dist/unstable/cluster/SocketRunner.js.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +20 -5
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/TestRunner.js.map +1 -1
- package/dist/unstable/cluster/index.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +5 -5
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/hash.js.map +1 -1
- package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/cluster/internal/shardLock.js.map +1 -1
- package/dist/unstable/devtools/DevTools.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
- package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
- package/dist/unstable/devtools/index.js.map +1 -1
- package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
- package/dist/unstable/encoding/Msgpack.js +6 -8
- package/dist/unstable/encoding/Msgpack.js.map +1 -1
- package/dist/unstable/encoding/Ndjson.js.map +1 -1
- package/dist/unstable/encoding/Sse.d.ts +72 -8
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js +58 -8
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/encoding/index.js.map +1 -1
- package/dist/unstable/eventlog/Event.d.ts +20 -20
- package/dist/unstable/eventlog/Event.js.map +1 -1
- package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
- package/dist/unstable/eventlog/EventGroup.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +15 -15
- package/dist/unstable/eventlog/EventJournal.js +13 -13
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +3 -3
- package/dist/unstable/eventlog/EventLog.js +3 -3
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +2 -2
- package/dist/unstable/eventlog/EventLogMessage.js +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
- package/dist/unstable/eventlog/EventLogRemote.js +1 -1
- package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
- package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.js +45 -21
- package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.js +13 -5
- package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js +14 -6
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/index.js.map +1 -1
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
- package/dist/unstable/http/Cookies.d.ts +2 -2
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +30 -18
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Etag.d.ts +1 -1
- package/dist/unstable/http/Etag.js +1 -1
- package/dist/unstable/http/Etag.js.map +1 -1
- package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/unstable/http/FetchHttpClient.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +2 -2
- package/dist/unstable/http/Headers.js +2 -2
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +5 -3
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +11 -5
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +51 -44
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +46 -17
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.js.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +2 -0
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
- package/dist/unstable/http/HttpClientResponse.js +2 -2
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +6 -6
- package/dist/unstable/http/HttpEffect.js +3 -3
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +6 -9
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +6 -9
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +164 -39
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpPlatform.d.ts +76 -0
- package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
- package/dist/unstable/http/HttpPlatform.js +32 -0
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +88 -89
- package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
- package/dist/unstable/http/HttpRouter.js +78 -79
- package/dist/unstable/http/HttpRouter.js.map +1 -1
- package/dist/unstable/http/HttpServer.d.ts +13 -13
- package/dist/unstable/http/HttpServer.js +6 -6
- package/dist/unstable/http/HttpServer.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +2 -2
- package/dist/unstable/http/HttpServerError.js +2 -2
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
- package/dist/unstable/http/HttpServerRequest.js +4 -4
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +10 -0
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
- package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/unstable/http/HttpStaticServer.js +35 -7
- package/dist/unstable/http/HttpStaticServer.js.map +1 -1
- package/dist/unstable/http/HttpTraceContext.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +6 -6
- package/dist/unstable/http/Multipart.js +5 -5
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/Template.js.map +1 -1
- package/dist/unstable/http/Url.d.ts +33 -63
- package/dist/unstable/http/Url.d.ts.map +1 -1
- package/dist/unstable/http/Url.js +14 -28
- package/dist/unstable/http/Url.js.map +1 -1
- package/dist/unstable/http/UrlParams.d.ts +10 -18
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +9 -17
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/http/internal/compression.d.ts +2 -0
- package/dist/unstable/http/internal/compression.d.ts.map +1 -0
- package/dist/unstable/http/internal/compression.js +155 -0
- package/dist/unstable/http/internal/compression.js.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +10 -11
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +11 -13
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +42 -42
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +13 -13
- package/dist/unstable/httpapi/HttpApiError.js +13 -13
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -6
- package/dist/unstable/httpapi/HttpApiSchema.js +4 -4
- package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts +13 -13
- package/dist/unstable/httpapi/OpenApi.js +13 -13
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/httpapi/index.js.map +1 -1
- package/dist/unstable/httpapi/internal/html.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
- package/dist/unstable/observability/Otlp.js.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +12 -14
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +17 -4
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
- package/dist/unstable/observability/OtlpResource.d.ts +16 -7
- package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpResource.js +21 -12
- package/dist/unstable/observability/OtlpResource.js.map +1 -1
- package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
- package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.js +10 -3
- package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
- package/dist/unstable/observability/index.js.map +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
- package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/unstable/observability/internal/protobuf.js +3 -0
- package/dist/unstable/observability/internal/protobuf.js.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
- package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +22 -13
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +8 -8
- package/dist/unstable/persistence/Persistable.js.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
- package/dist/unstable/persistence/PersistedQueue.js +6 -6
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +3 -3
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +91 -15
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +26 -15
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +24 -13
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.d.ts +2 -2
- package/dist/unstable/persistence/Redis.js +1 -1
- package/dist/unstable/persistence/Redis.js.map +1 -1
- package/dist/unstable/persistence/index.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +64 -21
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcess.js +14 -5
- package/dist/unstable/process/ChildProcess.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/process/index.js.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
- package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.js +10 -10
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +25 -22
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +14 -13
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRef.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +24 -3
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +4 -1
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +1 -1
- package/dist/unstable/reactivity/Hydration.js +1 -1
- package/dist/unstable/reactivity/Hydration.js.map +1 -1
- package/dist/unstable/reactivity/Reactivity.js.map +1 -1
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +35 -33
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js +4 -2
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +12 -12
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +12 -11
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
- package/dist/unstable/rpc/RpcGroup.js +1 -1
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
- package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMessage.js +6 -6
- package/dist/unstable/rpc/RpcMessage.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
- package/dist/unstable/rpc/RpcMiddleware.js +1 -1
- package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
- package/dist/unstable/rpc/RpcSchema.js +3 -3
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +175 -96
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +13 -13
- package/dist/unstable/rpc/RpcServer.js +17 -13
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/RpcTest.js.map +1 -1
- package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
- package/dist/unstable/rpc/RpcWorker.js +4 -4
- package/dist/unstable/rpc/RpcWorker.js.map +1 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/rpc/index.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +52 -50
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +35 -33
- package/dist/unstable/schema/Model.js.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +5 -5
- package/dist/unstable/schema/VariantSchema.js +2 -2
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/schema/index.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +11 -3
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +9 -4
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.js.map +1 -1
- package/dist/unstable/socket/index.js.map +1 -1
- package/dist/unstable/sql/Migrator.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts +1 -1
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +2 -2
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlConnection.js.map +1 -1
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.js +2 -2
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.d.ts +5 -5
- package/dist/unstable/sql/SqlResolver.js +2 -2
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/SqlStream.js.map +1 -1
- package/dist/unstable/sql/Statement.d.ts +6 -6
- package/dist/unstable/sql/Statement.js +15 -15
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/sql/index.js.map +1 -1
- package/dist/unstable/workers/Transferable.d.ts +1 -1
- package/dist/unstable/workers/Transferable.js +1 -1
- package/dist/unstable/workers/Transferable.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts +2 -2
- package/dist/unstable/workers/Worker.js +2 -2
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workers/WorkerError.d.ts +7 -7
- package/dist/unstable/workers/WorkerError.js +6 -6
- package/dist/unstable/workers/WorkerError.js.map +1 -1
- package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
- package/dist/unstable/workers/WorkerRunner.js +1 -1
- package/dist/unstable/workers/WorkerRunner.js.map +1 -1
- package/dist/unstable/workers/index.js.map +1 -1
- package/dist/unstable/workflow/Activity.d.ts +2 -2
- package/dist/unstable/workflow/Activity.js +2 -2
- package/dist/unstable/workflow/Activity.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +1 -1
- package/dist/unstable/workflow/DurableClock.js +1 -1
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
- package/dist/unstable/workflow/DurableDeferred.js +5 -5
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
- package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableQueue.js +22 -20
- package/dist/unstable/workflow/DurableQueue.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +21 -21
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +13 -14
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
- package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.js +4 -2
- package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
- package/dist/unstable/workflow/index.js.map +1 -1
- package/dist/unstable/workflow/internal/crypto.js.map +1 -1
- package/package.json +5 -6
- package/src/Array.ts +982 -1045
- package/src/BigDecimal.ts +433 -756
- package/src/BigInt.ts +213 -269
- package/src/Boolean.ts +146 -188
- package/src/Cache.ts +409 -255
- package/src/Cause.ts +167 -277
- package/src/Channel.ts +891 -816
- package/src/ChannelSchema.ts +1 -1
- package/src/Chunk.ts +841 -1181
- package/src/Clock.ts +181 -49
- package/src/Combiner.ts +20 -33
- package/src/Config.ts +615 -332
- package/src/ConfigProvider.ts +214 -120
- package/src/Console.ts +289 -39
- package/src/Context.ts +319 -378
- package/src/Cron.ts +68 -77
- package/src/Crypto.ts +13 -15
- package/src/Data.ts +60 -80
- package/src/DateTime.ts +564 -660
- package/src/Deferred.ts +253 -256
- package/src/Duration.ts +216 -308
- package/src/Effect.ts +2893 -3279
- package/src/Encoding.ts +22 -40
- package/src/Equal.ts +49 -39
- package/src/Equivalence.ts +103 -105
- package/src/ErrorReporter.ts +51 -27
- package/src/ExecutionPlan.ts +13 -55
- package/src/Exit.ts +116 -192
- package/src/Fiber.ts +81 -148
- package/src/FiberHandle.ts +152 -105
- package/src/FiberMap.ts +225 -174
- package/src/FiberSet.ts +124 -82
- package/src/FileSystem.ts +155 -263
- package/src/Filter.ts +61 -33
- package/src/Formatter.ts +54 -56
- package/src/Function.ts +76 -145
- package/src/Graph.ts +416 -770
- package/src/HKT.ts +12 -6
- package/src/Hash.ts +52 -83
- package/src/HashMap.ts +319 -411
- package/src/HashRing.ts +1 -0
- package/src/HashSet.ts +177 -284
- package/src/Inspectable.ts +12 -12
- package/src/Iterable.ts +620 -786
- package/src/JsonPatch.ts +58 -112
- package/src/JsonPointer.ts +8 -8
- package/src/JsonSchema.ts +402 -244
- package/src/Latch.ts +23 -35
- package/src/Layer.ts +359 -260
- package/src/LayerMap.ts +49 -29
- package/src/LayerRef.ts +6 -2
- package/src/LogLevel.ts +114 -214
- package/src/Logger.ts +344 -697
- package/src/ManagedRuntime.ts +7 -5
- package/src/Match.ts +217 -252
- package/src/Metric.ts +516 -1089
- package/src/MutableHashMap.ts +218 -255
- package/src/MutableHashSet.ts +84 -89
- package/src/MutableList.ts +73 -370
- package/src/MutableRef.ts +420 -243
- package/src/Newtype.ts +21 -14
- package/src/NonEmptyIterable.ts +7 -137
- package/src/Number.ts +196 -233
- package/src/Optic.ts +243 -383
- package/src/Option.ts +447 -812
- package/src/Order.ts +109 -109
- package/src/Ordering.ts +20 -23
- package/src/Path.ts +38 -41
- package/src/Pipeable.ts +6 -5
- package/src/PlatformError.ts +4 -4
- package/src/Pool.ts +4 -2
- package/src/Predicate.ts +200 -181
- package/src/PrimaryKey.ts +7 -7
- package/src/PubSub.ts +526 -552
- package/src/Pull.ts +24 -18
- package/src/Queue.ts +200 -159
- package/src/Random.ts +49 -74
- package/src/RcMap.ts +121 -63
- package/src/RcRef.ts +24 -13
- package/src/Record.ts +291 -488
- package/src/Redactable.ts +10 -3
- package/src/Redacted.ts +25 -25
- package/src/Reducer.ts +8 -15
- package/src/Ref.ts +221 -361
- package/src/References.ts +102 -168
- package/src/RegExp.ts +10 -14
- package/src/Request.ts +31 -21
- package/src/RequestResolver.ts +202 -91
- package/src/Result.ts +312 -484
- package/src/Runtime.ts +50 -75
- package/src/Schedule.ts +308 -1734
- package/src/Scheduler.ts +20 -7
- package/src/Schema.ts +716 -745
- package/src/SchemaAST.ts +466 -358
- package/src/SchemaError.ts +7 -6
- package/src/SchemaGetter.ts +242 -190
- package/src/SchemaIssue.ts +89 -275
- package/src/SchemaParser.ts +180 -93
- package/src/SchemaRepresentation.ts +22 -40
- package/src/SchemaTransformation.ts +129 -88
- package/src/Scope.ts +123 -151
- package/src/ScopedRef.ts +4 -4
- package/src/Semaphore.ts +152 -51
- package/src/Sink.ts +128 -113
- package/src/Stdio.ts +1 -1
- package/src/Stream.ts +2602 -3123
- package/src/String.ts +275 -312
- package/src/Struct.ts +109 -114
- package/src/SubscriptionRef.ts +284 -252
- package/src/Symbol.ts +3 -3
- package/src/Terminal.ts +2 -2
- package/src/Tracer.ts +102 -55
- package/src/Trie.ts +287 -679
- package/src/Tuple.ts +92 -127
- package/src/TxChunk.ts +201 -121
- package/src/TxDeferred.ts +62 -46
- package/src/TxHashMap.ts +645 -799
- package/src/TxHashSet.ts +443 -356
- package/src/TxPriorityQueue.ts +130 -98
- package/src/TxPubSub.ts +107 -80
- package/src/TxQueue.ts +214 -183
- package/src/TxReentrantLock.ts +97 -66
- package/src/TxRef.ts +51 -32
- package/src/TxSemaphore.ts +129 -95
- package/src/TxSubscriptionRef.ts +97 -70
- package/src/Types.ts +126 -67
- package/src/Unify.ts +45 -65
- package/src/Utils.ts +23 -16
- package/src/internal/core.ts +2 -2
- package/src/internal/dateTime.ts +6 -0
- package/src/internal/effect.ts +93 -48
- package/src/internal/persistence.ts +2 -0
- package/src/internal/references.ts +3 -2
- package/src/internal/schema/fromJsonSchemaDocument.ts +15 -13
- package/src/internal/schema/fromRepresentation.ts +10 -16
- package/src/internal/schema/parser.ts +22 -0
- package/src/internal/schema/toJsonSchemaDocument.ts +60 -6
- package/src/internal/schema/toRepresentation.ts +104 -119
- package/src/internal/trie.ts +10 -11
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +72 -30
- package/src/testing/TestConsole.ts +32 -31
- package/src/testing/TestSchema.ts +29 -29
- package/src/unstable/ai/AiError.ts +95 -118
- package/src/unstable/ai/AnthropicStructuredOutput.ts +1 -1
- package/src/unstable/ai/Chat.ts +132 -97
- package/src/unstable/ai/IdGenerator.ts +32 -28
- package/src/unstable/ai/LanguageModel.ts +107 -67
- package/src/unstable/ai/McpProtocol.ts +48 -0
- package/src/unstable/ai/McpSchema.ts +60 -50
- package/src/unstable/ai/McpServer.ts +930 -304
- package/src/unstable/ai/Model.ts +9 -20
- package/src/unstable/ai/OpenAiStructuredOutput.ts +1 -1
- package/src/unstable/ai/Prompt.ts +145 -43
- package/src/unstable/ai/Response.ts +28 -14
- package/src/unstable/ai/Telemetry.ts +46 -13
- package/src/unstable/ai/Tokenizer.ts +14 -3
- package/src/unstable/ai/Tool.ts +59 -44
- package/src/unstable/ai/Toolkit.ts +26 -8
- package/src/unstable/ai/index.ts +5 -0
- package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
- package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
- package/src/unstable/ai/internal/structured-output.ts +13 -18
- package/src/unstable/cli/Argument.ts +273 -69
- package/src/unstable/cli/CliError.ts +69 -76
- package/src/unstable/cli/CliOutput.ts +44 -58
- package/src/unstable/cli/Command.ts +705 -107
- package/src/unstable/cli/Flag.ts +418 -138
- package/src/unstable/cli/GlobalFlag.ts +1 -1
- package/src/unstable/cli/HelpDoc.ts +12 -4
- package/src/unstable/cli/Param.ts +292 -78
- package/src/unstable/cli/Primitive.ts +370 -149
- package/src/unstable/cli/Prompt.ts +28 -14
- package/src/unstable/cli/internal/lexer.ts +8 -2
- package/src/unstable/cli/internal/parser.ts +2 -2
- package/src/unstable/cluster/ClusterSchema.ts +8 -8
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -1
- package/src/unstable/cluster/Entity.ts +15 -16
- package/src/unstable/cluster/EntityProxy.ts +4 -2
- package/src/unstable/cluster/EntityResource.ts +2 -2
- package/src/unstable/cluster/Envelope.ts +3 -3
- package/src/unstable/cluster/HttpRunner.ts +6 -4
- package/src/unstable/cluster/Message.ts +9 -9
- package/src/unstable/cluster/MessageStorage.ts +15 -15
- package/src/unstable/cluster/Reply.ts +4 -6
- package/src/unstable/cluster/RunnerHealth.ts +1 -1
- package/src/unstable/cluster/RunnerServer.ts +41 -8
- package/src/unstable/cluster/RunnerStorage.ts +2 -2
- package/src/unstable/cluster/Runners.ts +23 -12
- package/src/unstable/cluster/Sharding.ts +7 -8
- package/src/unstable/cluster/ShardingConfig.ts +3 -3
- package/src/unstable/cluster/SingletonAddress.ts +1 -1
- package/src/unstable/cluster/Snowflake.ts +8 -8
- package/src/unstable/cluster/SqlMessageStorage.ts +1 -1
- package/src/unstable/cluster/SqlRunnerStorage.ts +21 -5
- package/src/unstable/cluster/internal/entityManager.ts +11 -15
- package/src/unstable/encoding/Msgpack.ts +6 -8
- package/src/unstable/encoding/Sse.ts +98 -16
- package/src/unstable/eventlog/Event.ts +20 -20
- package/src/unstable/eventlog/EventGroup.ts +4 -4
- package/src/unstable/eventlog/EventJournal.ts +15 -15
- package/src/unstable/eventlog/EventLog.ts +3 -3
- package/src/unstable/eventlog/EventLogEncryption.ts +1 -1
- package/src/unstable/eventlog/EventLogMessage.ts +2 -2
- package/src/unstable/eventlog/EventLogRemote.ts +1 -1
- package/src/unstable/eventlog/EventLogServer.ts +41 -7
- package/src/unstable/eventlog/EventLogServerEncrypted.ts +13 -5
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +14 -6
- package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
- package/src/unstable/http/Cookies.ts +35 -21
- package/src/unstable/http/Etag.ts +1 -1
- package/src/unstable/http/FetchHttpClient.ts +3 -1
- package/src/unstable/http/Headers.ts +2 -2
- package/src/unstable/http/HttpBody.ts +20 -5
- package/src/unstable/http/HttpClient.ts +83 -55
- package/src/unstable/http/HttpClientRequest.ts +2 -0
- package/src/unstable/http/HttpClientResponse.ts +4 -4
- package/src/unstable/http/HttpEffect.ts +8 -8
- package/src/unstable/http/HttpMethod.ts +6 -9
- package/src/unstable/http/HttpMiddleware.ts +202 -39
- package/src/unstable/http/HttpPlatform.ts +95 -0
- package/src/unstable/http/HttpRouter.ts +102 -98
- package/src/unstable/http/HttpServer.ts +13 -13
- package/src/unstable/http/HttpServerError.ts +2 -2
- package/src/unstable/http/HttpServerRequest.ts +4 -4
- package/src/unstable/http/HttpServerResponse.ts +30 -0
- package/src/unstable/http/HttpStaticServer.ts +35 -7
- package/src/unstable/http/Multipart.ts +6 -6
- package/src/unstable/http/Url.ts +33 -63
- package/src/unstable/http/UrlParams.ts +10 -18
- package/src/unstable/http/internal/compression.ts +196 -0
- package/src/unstable/httpapi/HttpApiBuilder.ts +10 -9
- package/src/unstable/httpapi/HttpApiClient.ts +14 -14
- package/src/unstable/httpapi/HttpApiEndpoint.ts +42 -42
- package/src/unstable/httpapi/HttpApiError.ts +13 -13
- package/src/unstable/httpapi/HttpApiGroup.ts +15 -15
- package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
- package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
- package/src/unstable/httpapi/HttpApiSchema.ts +6 -6
- package/src/unstable/httpapi/OpenApi.ts +13 -13
- package/src/unstable/observability/OtlpExporter.ts +31 -19
- package/src/unstable/observability/OtlpMetrics.ts +4 -1
- package/src/unstable/observability/OtlpResource.ts +26 -17
- package/src/unstable/observability/PrometheusMetrics.ts +13 -4
- package/src/unstable/observability/internal/otlpEnv.ts +1 -1
- package/src/unstable/observability/internal/protobuf.ts +3 -0
- package/src/unstable/persistence/KeyValueStore.ts +72 -49
- package/src/unstable/persistence/Persistable.ts +8 -8
- package/src/unstable/persistence/PersistedQueue.ts +6 -6
- package/src/unstable/persistence/Persistence.ts +126 -19
- package/src/unstable/persistence/RateLimiter.ts +26 -15
- package/src/unstable/persistence/Redis.ts +2 -2
- package/src/unstable/process/ChildProcess.ts +64 -21
- package/src/unstable/process/ChildProcessSpawner.ts +21 -10
- package/src/unstable/reactivity/AsyncResult.ts +12 -13
- package/src/unstable/reactivity/Atom.ts +28 -25
- package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
- package/src/unstable/reactivity/AtomRegistry.ts +24 -3
- package/src/unstable/reactivity/AtomRpc.ts +5 -4
- package/src/unstable/reactivity/Hydration.ts +1 -1
- package/src/unstable/rpc/Rpc.ts +35 -33
- package/src/unstable/rpc/RpcClient.ts +16 -15
- package/src/unstable/rpc/RpcGroup.ts +8 -8
- package/src/unstable/rpc/RpcMessage.ts +31 -30
- package/src/unstable/rpc/RpcMiddleware.ts +10 -10
- package/src/unstable/rpc/RpcSchema.ts +4 -4
- package/src/unstable/rpc/RpcSerialization.ts +167 -68
- package/src/unstable/rpc/RpcServer.ts +18 -15
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/schema/Model.ts +52 -50
- package/src/unstable/schema/VariantSchema.ts +5 -5
- package/src/unstable/socket/Socket.ts +17 -4
- package/src/unstable/sql/SqlClient.ts +5 -6
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +5 -5
- package/src/unstable/sql/Statement.ts +24 -23
- package/src/unstable/workers/Transferable.ts +1 -1
- package/src/unstable/workers/Worker.ts +2 -2
- package/src/unstable/workers/WorkerError.ts +7 -7
- package/src/unstable/workers/WorkerRunner.ts +1 -1
- package/src/unstable/workflow/Activity.ts +2 -2
- package/src/unstable/workflow/DurableClock.ts +1 -1
- package/src/unstable/workflow/DurableDeferred.ts +10 -10
- package/src/unstable/workflow/DurableQueue.ts +22 -20
- package/src/unstable/workflow/Workflow.ts +23 -23
- package/src/unstable/workflow/WorkflowEngine.ts +1 -1
- package/src/unstable/workflow/WorkflowProxy.ts +4 -2
- package/dist/internal/version.d.ts +0 -3
- package/dist/internal/version.d.ts.map +0 -1
- package/dist/internal/version.js +0 -2
- package/dist/internal/version.js.map +0 -1
- package/src/internal/version.ts +0 -2
package/src/Context.ts
CHANGED
|
@@ -81,7 +81,7 @@ export interface Key<out Identifier, out Shape> extends Effect<Shape, never, Ide
|
|
|
81
81
|
*
|
|
82
82
|
* **Example** (Defining a service key)
|
|
83
83
|
*
|
|
84
|
-
* ```ts
|
|
84
|
+
* ```ts import.meta.vitest
|
|
85
85
|
* import { Context } from "effect"
|
|
86
86
|
*
|
|
87
87
|
* // Define an identifier for a database service
|
|
@@ -91,9 +91,10 @@ export interface Key<out Identifier, out Shape> extends Effect<Shape, never, Ide
|
|
|
91
91
|
*
|
|
92
92
|
* // The key can be used to store and retrieve services
|
|
93
93
|
* const context = Context.make(Database, { query: (sql) => `Result: ${sql}` })
|
|
94
|
+
* Context.get(context, Database).query("SELECT 1") // => "Result: SELECT 1"
|
|
94
95
|
* ```
|
|
95
96
|
*
|
|
96
|
-
* @category
|
|
97
|
+
* @category services
|
|
97
98
|
* @since 4.0.0
|
|
98
99
|
*/
|
|
99
100
|
export interface Service<in out Identifier, in out Shape> extends Key<Identifier, Shape> {
|
|
@@ -118,7 +119,7 @@ export interface Service<in out Identifier, in out Shape> extends Key<Identifier
|
|
|
118
119
|
*
|
|
119
120
|
* @see {@link Service} for creating function-style keys or class-style service keys
|
|
120
121
|
*
|
|
121
|
-
* @category
|
|
122
|
+
* @category services
|
|
122
123
|
* @since 4.0.0
|
|
123
124
|
*/
|
|
124
125
|
export interface ServiceClass<in out Self, in out Identifier extends string, in out Shape>
|
|
@@ -139,7 +140,7 @@ export declare namespace ServiceClass {
|
|
|
139
140
|
* Runtime and type-level metadata carried by a class-style service key,
|
|
140
141
|
* including its service type identifier, string key, and service shape.
|
|
141
142
|
*
|
|
142
|
-
* @category
|
|
143
|
+
* @category services
|
|
143
144
|
* @since 4.0.0
|
|
144
145
|
*/
|
|
145
146
|
export interface Shape<Identifier extends string, Service> {
|
|
@@ -172,7 +173,7 @@ export declare namespace ServiceClass {
|
|
|
172
173
|
*
|
|
173
174
|
* **Example** (Creating service keys)
|
|
174
175
|
*
|
|
175
|
-
* ```ts
|
|
176
|
+
* ```ts import.meta.vitest
|
|
176
177
|
* import { Context } from "effect"
|
|
177
178
|
*
|
|
178
179
|
* // Create a simple service
|
|
@@ -190,11 +191,13 @@ export declare namespace ServiceClass {
|
|
|
190
191
|
* query: (sql) => `Result: ${sql}`
|
|
191
192
|
* })
|
|
192
193
|
* const config = Context.make(Config, { port: 8080 })
|
|
194
|
+
* Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
|
|
195
|
+
* Context.get(config, Config).port // => 8080
|
|
193
196
|
* ```
|
|
194
197
|
*
|
|
195
198
|
* @see {@link Reference} for service keys with default values
|
|
196
199
|
*
|
|
197
|
-
* @category
|
|
200
|
+
* @category services
|
|
198
201
|
* @since 4.0.0
|
|
199
202
|
*/
|
|
200
203
|
export const Service: {
|
|
@@ -221,7 +224,7 @@ export const Service: {
|
|
|
221
224
|
*
|
|
222
225
|
* **Example** (Creating service keys)
|
|
223
226
|
*
|
|
224
|
-
* ```ts
|
|
227
|
+
* ```ts import.meta.vitest
|
|
225
228
|
* import { Context } from "effect"
|
|
226
229
|
*
|
|
227
230
|
* // Create a simple service
|
|
@@ -239,14 +242,22 @@ export const Service: {
|
|
|
239
242
|
* query: (sql) => `Result: ${sql}`
|
|
240
243
|
* })
|
|
241
244
|
* const config = Context.make(Config, { port: 8080 })
|
|
245
|
+
* Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
|
|
246
|
+
* Context.get(config, Config).port // => 8080
|
|
242
247
|
* ```
|
|
243
248
|
*
|
|
244
249
|
* @see {@link Reference} for service keys with default values
|
|
245
250
|
*
|
|
246
|
-
* @category
|
|
251
|
+
* @category services
|
|
247
252
|
* @since 4.0.0
|
|
248
253
|
*/
|
|
249
|
-
<Identifier, Shape = Identifier>(
|
|
254
|
+
<Identifier, Shape = Identifier>(
|
|
255
|
+
key: string,
|
|
256
|
+
options?: {
|
|
257
|
+
/** @internal */
|
|
258
|
+
readonly fiberCached?: boolean | undefined
|
|
259
|
+
} | undefined
|
|
260
|
+
): Service<Identifier, Shape>
|
|
250
261
|
/**
|
|
251
262
|
* Creates a `Context` service key.
|
|
252
263
|
*
|
|
@@ -270,7 +281,7 @@ export const Service: {
|
|
|
270
281
|
*
|
|
271
282
|
* **Example** (Creating service keys)
|
|
272
283
|
*
|
|
273
|
-
* ```ts
|
|
284
|
+
* ```ts import.meta.vitest
|
|
274
285
|
* import { Context } from "effect"
|
|
275
286
|
*
|
|
276
287
|
* // Create a simple service
|
|
@@ -288,11 +299,13 @@ export const Service: {
|
|
|
288
299
|
* query: (sql) => `Result: ${sql}`
|
|
289
300
|
* })
|
|
290
301
|
* const config = Context.make(Config, { port: 8080 })
|
|
302
|
+
* Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
|
|
303
|
+
* Context.get(config, Config).port // => 8080
|
|
291
304
|
* ```
|
|
292
305
|
*
|
|
293
306
|
* @see {@link Reference} for service keys with default values
|
|
294
307
|
*
|
|
295
|
-
* @category
|
|
308
|
+
* @category services
|
|
296
309
|
* @since 4.0.0
|
|
297
310
|
*/
|
|
298
311
|
<Self, Shape>(): <
|
|
@@ -303,7 +316,9 @@ export const Service: {
|
|
|
303
316
|
>(
|
|
304
317
|
id: Identifier,
|
|
305
318
|
options?: {
|
|
306
|
-
readonly make
|
|
319
|
+
readonly make?: ((...args: Args) => Effect<Shape, E, R>) | Effect<Shape, E, R> | undefined
|
|
320
|
+
/** @internal */
|
|
321
|
+
readonly fiberCached?: boolean | undefined
|
|
307
322
|
} | undefined
|
|
308
323
|
) =>
|
|
309
324
|
& ServiceClass<Self, Identifier, Shape>
|
|
@@ -332,7 +347,7 @@ export const Service: {
|
|
|
332
347
|
*
|
|
333
348
|
* **Example** (Creating service keys)
|
|
334
349
|
*
|
|
335
|
-
* ```ts
|
|
350
|
+
* ```ts import.meta.vitest
|
|
336
351
|
* import { Context } from "effect"
|
|
337
352
|
*
|
|
338
353
|
* // Create a simple service
|
|
@@ -350,11 +365,13 @@ export const Service: {
|
|
|
350
365
|
* query: (sql) => `Result: ${sql}`
|
|
351
366
|
* })
|
|
352
367
|
* const config = Context.make(Config, { port: 8080 })
|
|
368
|
+
* Context.get(db, Database).query("SELECT 1") // => "Result: SELECT 1"
|
|
369
|
+
* Context.get(config, Config).port // => 8080
|
|
353
370
|
* ```
|
|
354
371
|
*
|
|
355
372
|
* @see {@link Reference} for service keys with default values
|
|
356
373
|
*
|
|
357
|
-
* @category
|
|
374
|
+
* @category services
|
|
358
375
|
* @since 4.0.0
|
|
359
376
|
*/
|
|
360
377
|
<Self>(): <
|
|
@@ -364,6 +381,8 @@ export const Service: {
|
|
|
364
381
|
id: Identifier,
|
|
365
382
|
options: {
|
|
366
383
|
readonly make: Make
|
|
384
|
+
/** @internal */
|
|
385
|
+
readonly fiberCached?: boolean | undefined
|
|
367
386
|
}
|
|
368
387
|
) =>
|
|
369
388
|
& ServiceClass<
|
|
@@ -388,23 +407,25 @@ export const Service: {
|
|
|
388
407
|
return err.stack
|
|
389
408
|
}
|
|
390
409
|
})
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
if (arguments[1]?.defaultValue) {
|
|
394
|
-
self[ReferenceTypeId] = ReferenceTypeId
|
|
395
|
-
self.defaultValue = arguments[1].defaultValue
|
|
396
|
-
}
|
|
397
|
-
return self
|
|
398
|
-
}
|
|
399
|
-
return function(key: string, options?: {
|
|
410
|
+
const init = (key: string, options?: {
|
|
411
|
+
readonly defaultValue?: any
|
|
400
412
|
readonly make?: any
|
|
401
|
-
|
|
413
|
+
readonly fiberCached?: boolean
|
|
414
|
+
}) => {
|
|
402
415
|
self.key = key
|
|
416
|
+
if (options?.defaultValue) {
|
|
417
|
+
self[ReferenceTypeId] = ReferenceTypeId
|
|
418
|
+
self.defaultValue = options.defaultValue
|
|
419
|
+
}
|
|
403
420
|
if (options?.make) {
|
|
404
421
|
;(self as any).make = options.make
|
|
405
422
|
}
|
|
423
|
+
if (options?.fiberCached) {
|
|
424
|
+
cacheKeys.add(key)
|
|
425
|
+
}
|
|
406
426
|
return self
|
|
407
427
|
}
|
|
428
|
+
return arguments.length > 0 ? init(arguments[0], arguments[1]) : init
|
|
408
429
|
} as any
|
|
409
430
|
|
|
410
431
|
const ServiceProto: any = {
|
|
@@ -439,6 +460,8 @@ const ServiceProto: any = {
|
|
|
439
460
|
}
|
|
440
461
|
}
|
|
441
462
|
|
|
463
|
+
const cacheKeys = new Set<string>()
|
|
464
|
+
|
|
442
465
|
const ReferenceTypeId = "~effect/Context/Reference" as const
|
|
443
466
|
|
|
444
467
|
/**
|
|
@@ -452,21 +475,24 @@ const ReferenceTypeId = "~effect/Context/Reference" as const
|
|
|
452
475
|
*
|
|
453
476
|
* **Example** (Defining a reference with a default value)
|
|
454
477
|
*
|
|
455
|
-
* ```ts
|
|
478
|
+
* ```ts import.meta.vitest
|
|
456
479
|
* import { Context } from "effect"
|
|
457
480
|
*
|
|
458
481
|
* // Define a reference with a default value
|
|
482
|
+
* const messages: Array<string> = []
|
|
459
483
|
* const LoggerRef: Context.Reference<{ log: (msg: string) => void }> =
|
|
460
484
|
* Context.Reference("Logger", {
|
|
461
|
-
* defaultValue: () => ({ log: (msg
|
|
485
|
+
* defaultValue: () => ({ log: (msg) => { messages.push(msg) } })
|
|
462
486
|
* })
|
|
463
487
|
*
|
|
464
488
|
* // The reference can be used without explicit provision
|
|
465
489
|
* const context = Context.empty()
|
|
466
490
|
* const logger = Context.get(context, LoggerRef) // Uses default value
|
|
491
|
+
* logger.log("default logger")
|
|
492
|
+
* messages // => ["default logger"]
|
|
467
493
|
* ```
|
|
468
494
|
*
|
|
469
|
-
* @category
|
|
495
|
+
* @category services
|
|
470
496
|
* @since 3.11.0
|
|
471
497
|
*/
|
|
472
498
|
export interface Reference<in out Shape> extends Service<never, Shape> {
|
|
@@ -481,7 +507,7 @@ export interface Reference<in out Shape> extends Service<never, Shape> {
|
|
|
481
507
|
*
|
|
482
508
|
* **Example** (Extracting service types)
|
|
483
509
|
*
|
|
484
|
-
* ```ts
|
|
510
|
+
* ```ts import.meta.vitest
|
|
485
511
|
* import { Context } from "effect"
|
|
486
512
|
*
|
|
487
513
|
* const Database = Context.Service<{
|
|
@@ -493,6 +519,8 @@ export interface Reference<in out Shape> extends Service<never, Shape> {
|
|
|
493
519
|
*
|
|
494
520
|
* // Extract identifier type from a key
|
|
495
521
|
* type DatabaseId = Context.Service.Identifier<typeof Database>
|
|
522
|
+
*
|
|
523
|
+
* Database.key // => "Database"
|
|
496
524
|
* ```
|
|
497
525
|
*
|
|
498
526
|
* @since 2.0.0
|
|
@@ -504,7 +532,7 @@ export declare namespace Service {
|
|
|
504
532
|
*
|
|
505
533
|
* **Example** (Typing any service key)
|
|
506
534
|
*
|
|
507
|
-
* ```ts
|
|
535
|
+
* ```ts import.meta.vitest
|
|
508
536
|
* import { Context } from "effect"
|
|
509
537
|
*
|
|
510
538
|
* // Any represents any possible service type
|
|
@@ -512,9 +540,10 @@ export declare namespace Service {
|
|
|
512
540
|
* Context.Service<{ log: (msg: string) => void }>("Logger"),
|
|
513
541
|
* Context.Service<{ query: (sql: string) => string }>("Database")
|
|
514
542
|
* ]
|
|
543
|
+
* services.map((service) => service.key) // => ["Logger", "Database"]
|
|
515
544
|
* ```
|
|
516
545
|
*
|
|
517
|
-
* @category
|
|
546
|
+
* @category utility types
|
|
518
547
|
* @since 4.0.0
|
|
519
548
|
*/
|
|
520
549
|
export type Any = Key<never, any> | Key<any, any>
|
|
@@ -525,7 +554,7 @@ export declare namespace Service {
|
|
|
525
554
|
*
|
|
526
555
|
* **Example** (Extracting a service shape)
|
|
527
556
|
*
|
|
528
|
-
* ```ts
|
|
557
|
+
* ```ts import.meta.vitest
|
|
529
558
|
* import { Context } from "effect"
|
|
530
559
|
*
|
|
531
560
|
* const Database = Context.Service<{ query: (sql: string) => string }>(
|
|
@@ -535,9 +564,10 @@ export declare namespace Service {
|
|
|
535
564
|
* // Extract the service shape from the service
|
|
536
565
|
* type DatabaseService = Context.Service.Shape<typeof Database>
|
|
537
566
|
* // DatabaseService is { query: (sql: string) => string }
|
|
567
|
+
* Database.key // => "Database"
|
|
538
568
|
* ```
|
|
539
569
|
*
|
|
540
|
-
* @category
|
|
570
|
+
* @category utility types
|
|
541
571
|
* @since 4.0.0
|
|
542
572
|
*/
|
|
543
573
|
export type Shape<T> = T extends Key<infer _I, infer S> ? S : never
|
|
@@ -548,7 +578,7 @@ export declare namespace Service {
|
|
|
548
578
|
*
|
|
549
579
|
* **Example** (Extracting a service identifier)
|
|
550
580
|
*
|
|
551
|
-
* ```ts
|
|
581
|
+
* ```ts import.meta.vitest
|
|
552
582
|
* import { Context } from "effect"
|
|
553
583
|
*
|
|
554
584
|
* const Database = Context.Service<{ query: (sql: string) => string }>(
|
|
@@ -558,9 +588,10 @@ export declare namespace Service {
|
|
|
558
588
|
* // Extract the identifier type from a key
|
|
559
589
|
* type DatabaseId = Context.Service.Identifier<typeof Database>
|
|
560
590
|
* // DatabaseId is the identifier type
|
|
591
|
+
* Database.key // => "Database"
|
|
561
592
|
* ```
|
|
562
593
|
*
|
|
563
|
-
* @category
|
|
594
|
+
* @category utility types
|
|
564
595
|
* @since 2.0.0
|
|
565
596
|
*/
|
|
566
597
|
export type Identifier<T> = T extends Key<infer I, infer _S> ? I : never
|
|
@@ -579,7 +610,7 @@ const TypeId = "~effect/Context" as const
|
|
|
579
610
|
*
|
|
580
611
|
* **Example** (Creating a context with multiple services)
|
|
581
612
|
*
|
|
582
|
-
* ```ts
|
|
613
|
+
* ```ts import.meta.vitest
|
|
583
614
|
* import { Context } from "effect"
|
|
584
615
|
*
|
|
585
616
|
* // Create a context with multiple services
|
|
@@ -588,10 +619,9 @@ const TypeId = "~effect/Context" as const
|
|
|
588
619
|
* "Database"
|
|
589
620
|
* )
|
|
590
621
|
*
|
|
591
|
-
* const context = Context.make(Logger, {
|
|
592
|
-
* log: (msg: string) => console.log(msg)
|
|
593
|
-
* })
|
|
622
|
+
* const context = Context.make(Logger, { log: (_msg: string) => {} })
|
|
594
623
|
* .pipe(Context.add(Database, { query: (sql) => `Result: ${sql}` }))
|
|
624
|
+
* Context.get(context, Database).query("SELECT 1") // => "Result: SELECT 1"
|
|
595
625
|
* ```
|
|
596
626
|
*
|
|
597
627
|
* @category models
|
|
@@ -602,7 +632,81 @@ export interface Context<in Services> extends Equal.Equal, Pipeable, Inspectable
|
|
|
602
632
|
readonly _Services: Types.Contravariant<Services>
|
|
603
633
|
}
|
|
604
634
|
readonly mapUnsafe: ReadonlyMap<string, any>
|
|
605
|
-
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
interface ContextImpl<in Services> extends Context<Services> {
|
|
638
|
+
cacheRoot: ContextImpl<any> | undefined
|
|
639
|
+
base: ReadonlyMap<string, any>
|
|
640
|
+
baseHits: number
|
|
641
|
+
overlay: Overlay | undefined
|
|
642
|
+
depth: number
|
|
643
|
+
_flat: ReadonlyMap<string, any> | undefined
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
interface Overlay {
|
|
647
|
+
readonly key: string
|
|
648
|
+
readonly value: unknown
|
|
649
|
+
readonly parent: Overlay | undefined
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
const MaxDepth = 8
|
|
653
|
+
const FlattenAfterBaseHits = 8
|
|
654
|
+
|
|
655
|
+
const makeImpl = <Services>(
|
|
656
|
+
cacheRoot: ContextImpl<any> | undefined,
|
|
657
|
+
base: ReadonlyMap<string, any>,
|
|
658
|
+
overlay: Overlay | undefined,
|
|
659
|
+
depth: number
|
|
660
|
+
): ContextImpl<Services> => {
|
|
661
|
+
const self: ContextImpl<Services> = Object.create(Proto)
|
|
662
|
+
self.cacheRoot = cacheRoot ?? self
|
|
663
|
+
self.base = base
|
|
664
|
+
self.overlay = overlay
|
|
665
|
+
self.depth = depth
|
|
666
|
+
self._flat = undefined
|
|
667
|
+
self.baseHits = 0
|
|
668
|
+
return self
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
const applyOverlays = (map: Map<string, any>, overlay: Overlay | undefined): void => {
|
|
672
|
+
if (!overlay) return
|
|
673
|
+
applyOverlays(map, overlay.parent)
|
|
674
|
+
map.set(overlay.key, overlay.value)
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
const flatten = (self: ContextImpl<any>): ReadonlyMap<string, any> => {
|
|
678
|
+
if (self._flat) return self._flat
|
|
679
|
+
if (!self.overlay) return self._flat = self.base
|
|
680
|
+
const map = new Map(self.base)
|
|
681
|
+
applyOverlays(map, self.overlay)
|
|
682
|
+
return self._flat = map
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
const withFlat = <B>(self: Context<any>, f: (map: Map<string, any>) => void): Context<B> => {
|
|
686
|
+
const map = new Map(self.mapUnsafe)
|
|
687
|
+
f(map)
|
|
688
|
+
return makeUnsafe(map)
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
// A private symbol so user code cannot forge a value that reads as absent
|
|
692
|
+
const notFound = Symbol()
|
|
693
|
+
|
|
694
|
+
const lookup = (self: Context<any>, key: string): unknown => {
|
|
695
|
+
const impl = self as ContextImpl<any>
|
|
696
|
+
for (let overlay = impl.overlay; overlay; overlay = overlay.parent) {
|
|
697
|
+
if (overlay.key === key) return overlay.value
|
|
698
|
+
}
|
|
699
|
+
const value = impl.base.get(key)
|
|
700
|
+
// Misses must not advance the counter: reference-default lookups miss the
|
|
701
|
+
// base on every fiber cache refresh, which would flatten every short-lived
|
|
702
|
+
// request context and reintroduce the O(services) per-request cost
|
|
703
|
+
if (value === undefined && !impl.base.has(key)) return notFound
|
|
704
|
+
if (impl.overlay && ++impl.baseHits >= FlattenAfterBaseHits) {
|
|
705
|
+
impl.base = flatten(impl)
|
|
706
|
+
impl.overlay = undefined
|
|
707
|
+
impl.depth = 0
|
|
708
|
+
}
|
|
709
|
+
return value
|
|
606
710
|
}
|
|
607
711
|
|
|
608
712
|
/**
|
|
@@ -615,38 +719,41 @@ export interface Context<in Services> extends Equal.Equal, Pipeable, Inspectable
|
|
|
615
719
|
*
|
|
616
720
|
* **Gotchas**
|
|
617
721
|
*
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
*
|
|
722
|
+
* The provided map is retained without copying and must not be mutated after
|
|
723
|
+
* construction. Prefer `empty`, `make`, `add`, or `merge` for normal Context
|
|
724
|
+
* construction.
|
|
621
725
|
*
|
|
622
726
|
* **Example** (Creating a context from a map)
|
|
623
727
|
*
|
|
624
|
-
* ```ts
|
|
728
|
+
* ```ts import.meta.vitest
|
|
625
729
|
* import { Context } from "effect"
|
|
626
730
|
*
|
|
627
731
|
* // Create a context from a Map (unsafe)
|
|
628
732
|
* const map = new Map([
|
|
629
|
-
* ["Logger", { log: (
|
|
733
|
+
* ["Logger", { log: (_msg: string) => {} }]
|
|
630
734
|
* ])
|
|
631
735
|
*
|
|
632
736
|
* const context = Context.makeUnsafe(map)
|
|
737
|
+
* context.mapUnsafe.size // => 1
|
|
633
738
|
* ```
|
|
634
739
|
*
|
|
635
740
|
* @category constructors
|
|
636
741
|
* @since 4.0.0
|
|
637
742
|
*/
|
|
638
|
-
export const makeUnsafe = <Services = never>(mapUnsafe: ReadonlyMap<string, any>): Context<Services> =>
|
|
639
|
-
|
|
640
|
-
self.mapUnsafe = mapUnsafe
|
|
641
|
-
self.mutable = false
|
|
642
|
-
return self
|
|
643
|
-
}
|
|
743
|
+
export const makeUnsafe = <Services = never>(mapUnsafe: ReadonlyMap<string, any>): Context<Services> =>
|
|
744
|
+
makeImpl(undefined, mapUnsafe, undefined, 0)
|
|
644
745
|
|
|
645
|
-
const Proto: Omit<
|
|
746
|
+
const Proto: Omit<
|
|
747
|
+
ContextImpl<never>,
|
|
748
|
+
"cacheRoot" | "base" | "overlay" | "depth" | "_flat" | "baseHits"
|
|
749
|
+
> = {
|
|
646
750
|
...PipeInspectableProto,
|
|
647
751
|
[TypeId]: {
|
|
648
752
|
_Services: (_: never) => _
|
|
649
753
|
},
|
|
754
|
+
get mapUnsafe() {
|
|
755
|
+
return flatten(this as any as ContextImpl<any>)
|
|
756
|
+
},
|
|
650
757
|
toJSON(this: Context<never>) {
|
|
651
758
|
return {
|
|
652
759
|
_id: "Context",
|
|
@@ -654,17 +761,12 @@ const Proto: Omit<Context<never>, "mapUnsafe" | "mutable"> = {
|
|
|
654
761
|
}
|
|
655
762
|
},
|
|
656
763
|
[Equal.symbol]<A>(this: Context<A>, that: unknown): boolean {
|
|
657
|
-
if (
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
) return false
|
|
661
|
-
for (const
|
|
662
|
-
if (
|
|
663
|
-
!that.mapUnsafe.has(k) ||
|
|
664
|
-
!Equal.equals(this.mapUnsafe.get(k), that.mapUnsafe.get(k))
|
|
665
|
-
) {
|
|
666
|
-
return false
|
|
667
|
-
}
|
|
764
|
+
if (!isContext(that)) return false
|
|
765
|
+
const self = this.mapUnsafe
|
|
766
|
+
const other = that.mapUnsafe
|
|
767
|
+
if (self.size !== other.size) return false
|
|
768
|
+
for (const [key, value] of self) {
|
|
769
|
+
if (!other.has(key) || !Equal.equals(value, other.get(key))) return false
|
|
668
770
|
}
|
|
669
771
|
return true
|
|
670
772
|
},
|
|
@@ -673,6 +775,12 @@ const Proto: Omit<Context<never>, "mapUnsafe" | "mutable"> = {
|
|
|
673
775
|
}
|
|
674
776
|
}
|
|
675
777
|
|
|
778
|
+
/** @internal */
|
|
779
|
+
export const hasSameCache = <Services, Services2>(
|
|
780
|
+
self: Context<Services>,
|
|
781
|
+
that: Context<Services2>
|
|
782
|
+
): boolean => (self as ContextImpl<Services>).cacheRoot === (that as ContextImpl<Services2>).cacheRoot
|
|
783
|
+
|
|
676
784
|
/**
|
|
677
785
|
* Checks whether the provided argument is a `Context`.
|
|
678
786
|
*
|
|
@@ -693,11 +801,9 @@ const Proto: Omit<Context<never>, "mapUnsafe" | "mutable"> = {
|
|
|
693
801
|
*
|
|
694
802
|
* **Example** (Checking for contexts)
|
|
695
803
|
*
|
|
696
|
-
* ```ts
|
|
804
|
+
* ```ts import.meta.vitest
|
|
697
805
|
* import { Context } from "effect"
|
|
698
|
-
*
|
|
699
|
-
*
|
|
700
|
-
* assert.strictEqual(Context.isContext(Context.empty()), true)
|
|
806
|
+
* Context.isContext(Context.empty()) // => true
|
|
701
807
|
* ```
|
|
702
808
|
*
|
|
703
809
|
* @see {@link isKey} for checking service keys
|
|
@@ -713,11 +819,9 @@ export const isContext = (u: unknown): u is Context<never> => hasProperty(u, Typ
|
|
|
713
819
|
*
|
|
714
820
|
* **Example** (Checking for keys)
|
|
715
821
|
*
|
|
716
|
-
* ```ts
|
|
822
|
+
* ```ts import.meta.vitest
|
|
717
823
|
* import { Context } from "effect"
|
|
718
|
-
*
|
|
719
|
-
*
|
|
720
|
-
* assert.strictEqual(Context.isKey(Context.Service("Service")), true)
|
|
824
|
+
* Context.isKey(Context.Service("Service")) // => true
|
|
721
825
|
* ```
|
|
722
826
|
*
|
|
723
827
|
* @category guards
|
|
@@ -730,33 +834,30 @@ export const isKey = (u: unknown): u is Key<any, any> => hasProperty(u, ServiceT
|
|
|
730
834
|
*
|
|
731
835
|
* **Example** (Checking for references)
|
|
732
836
|
*
|
|
733
|
-
* ```ts
|
|
837
|
+
* ```ts import.meta.vitest
|
|
734
838
|
* import { Context } from "effect"
|
|
735
|
-
* import * as assert from "node:assert"
|
|
736
839
|
*
|
|
737
840
|
* const LoggerRef = Context.Reference("Logger", {
|
|
738
|
-
* defaultValue: () => ({ log: (
|
|
841
|
+
* defaultValue: () => ({ log: (_msg: string) => {} })
|
|
739
842
|
* })
|
|
740
843
|
*
|
|
741
|
-
*
|
|
742
|
-
*
|
|
844
|
+
* Context.isReference(LoggerRef) // => true
|
|
845
|
+
* Context.isReference(Context.Service("Key")) // => false
|
|
743
846
|
* ```
|
|
744
847
|
*
|
|
745
848
|
* @category guards
|
|
746
849
|
* @since 3.11.0
|
|
747
850
|
*/
|
|
748
|
-
export const isReference = (u:
|
|
851
|
+
export const isReference = <I, S>(u: Key<I, S>): u is Reference<S> => !!(u as Reference<S>)[ReferenceTypeId]
|
|
749
852
|
|
|
750
853
|
/**
|
|
751
854
|
* Returns an empty `Context`.
|
|
752
855
|
*
|
|
753
856
|
* **Example** (Creating an empty context)
|
|
754
857
|
*
|
|
755
|
-
* ```ts
|
|
858
|
+
* ```ts import.meta.vitest
|
|
756
859
|
* import { Context } from "effect"
|
|
757
|
-
*
|
|
758
|
-
*
|
|
759
|
-
* assert.strictEqual(Context.isContext(Context.empty()), true)
|
|
860
|
+
* Context.empty().mapUnsafe.size // => 0
|
|
760
861
|
* ```
|
|
761
862
|
*
|
|
762
863
|
* @category constructors
|
|
@@ -770,15 +871,14 @@ const emptyContext = makeUnsafe(new Map())
|
|
|
770
871
|
*
|
|
771
872
|
* **Example** (Creating a context with one service)
|
|
772
873
|
*
|
|
773
|
-
* ```ts
|
|
874
|
+
* ```ts import.meta.vitest
|
|
774
875
|
* import { Context } from "effect"
|
|
775
|
-
* import * as assert from "node:assert"
|
|
776
876
|
*
|
|
777
877
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
778
878
|
*
|
|
779
879
|
* const context = Context.make(Port, { PORT: 8080 })
|
|
780
880
|
*
|
|
781
|
-
*
|
|
881
|
+
* Context.get(context, Port).PORT // => 8080
|
|
782
882
|
* ```
|
|
783
883
|
*
|
|
784
884
|
* @category constructors
|
|
@@ -803,9 +903,8 @@ export const make = <I, S>(
|
|
|
803
903
|
*
|
|
804
904
|
* **Example** (Adding a service to a context)
|
|
805
905
|
*
|
|
806
|
-
* ```ts
|
|
906
|
+
* ```ts import.meta.vitest
|
|
807
907
|
* import { Context, pipe } from "effect"
|
|
808
|
-
* import * as assert from "node:assert"
|
|
809
908
|
*
|
|
810
909
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
811
910
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -817,13 +916,13 @@ export const make = <I, S>(
|
|
|
817
916
|
* Context.add(Timeout, { TIMEOUT: 5000 })
|
|
818
917
|
* )
|
|
819
918
|
*
|
|
820
|
-
*
|
|
821
|
-
*
|
|
919
|
+
* const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
|
|
920
|
+
* values // => [8080, 5000]
|
|
822
921
|
* ```
|
|
823
922
|
*
|
|
824
923
|
* @see {@link addOrOmit} for adding or removing a service from an `Option`
|
|
825
924
|
*
|
|
826
|
-
* @category
|
|
925
|
+
* @category combining
|
|
827
926
|
* @since 2.0.0
|
|
828
927
|
*/
|
|
829
928
|
export const add: {
|
|
@@ -841,9 +940,8 @@ export const add: {
|
|
|
841
940
|
*
|
|
842
941
|
* **Example** (Adding a service to a context)
|
|
843
942
|
*
|
|
844
|
-
* ```ts
|
|
943
|
+
* ```ts import.meta.vitest
|
|
845
944
|
* import { Context, pipe } from "effect"
|
|
846
|
-
* import * as assert from "node:assert"
|
|
847
945
|
*
|
|
848
946
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
849
947
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -855,13 +953,13 @@ export const add: {
|
|
|
855
953
|
* Context.add(Timeout, { TIMEOUT: 5000 })
|
|
856
954
|
* )
|
|
857
955
|
*
|
|
858
|
-
*
|
|
859
|
-
*
|
|
956
|
+
* const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
|
|
957
|
+
* values // => [8080, 5000]
|
|
860
958
|
* ```
|
|
861
959
|
*
|
|
862
960
|
* @see {@link addOrOmit} for adding or removing a service from an `Option`
|
|
863
961
|
*
|
|
864
|
-
* @category
|
|
962
|
+
* @category combining
|
|
865
963
|
* @since 2.0.0
|
|
866
964
|
*/
|
|
867
965
|
<I, S>(key: Key<I, S>, service: Types.NoInfer<S>): <Services>(self: Context<Services>) => Context<Services | I>
|
|
@@ -879,9 +977,8 @@ export const add: {
|
|
|
879
977
|
*
|
|
880
978
|
* **Example** (Adding a service to a context)
|
|
881
979
|
*
|
|
882
|
-
* ```ts
|
|
980
|
+
* ```ts import.meta.vitest
|
|
883
981
|
* import { Context, pipe } from "effect"
|
|
884
|
-
* import * as assert from "node:assert"
|
|
885
982
|
*
|
|
886
983
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
887
984
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -893,13 +990,13 @@ export const add: {
|
|
|
893
990
|
* Context.add(Timeout, { TIMEOUT: 5000 })
|
|
894
991
|
* )
|
|
895
992
|
*
|
|
896
|
-
*
|
|
897
|
-
*
|
|
993
|
+
* const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
|
|
994
|
+
* values // => [8080, 5000]
|
|
898
995
|
* ```
|
|
899
996
|
*
|
|
900
997
|
* @see {@link addOrOmit} for adding or removing a service from an `Option`
|
|
901
998
|
*
|
|
902
|
-
* @category
|
|
999
|
+
* @category combining
|
|
903
1000
|
* @since 2.0.0
|
|
904
1001
|
*/
|
|
905
1002
|
<Services, I, S>(self: Context<Services>, key: Key<I, S>, service: Types.NoInfer<S>): Context<Services | I>
|
|
@@ -907,10 +1004,24 @@ export const add: {
|
|
|
907
1004
|
self: Context<Services>,
|
|
908
1005
|
key: Key<I, S>,
|
|
909
1006
|
service: Types.NoInfer<S>
|
|
910
|
-
): Context<Services | I> =>
|
|
911
|
-
|
|
1007
|
+
): Context<Services | I> => {
|
|
1008
|
+
const impl = self as ContextImpl<Services>
|
|
1009
|
+
const cacheRoot = cacheKeys.has(key.key) ? undefined : impl.cacheRoot
|
|
1010
|
+
if (impl.depth >= MaxDepth) {
|
|
1011
|
+
// Rebase the overlay chain into a flat map, keeping the cacheRoot so a
|
|
1012
|
+
// rebase on an ordinary key does not invalidate fiber caches
|
|
1013
|
+
const map = new Map(impl.mapUnsafe)
|
|
912
1014
|
map.set(key.key, service)
|
|
913
|
-
|
|
1015
|
+
return makeImpl(cacheRoot, map, undefined, 0)
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
return makeImpl(
|
|
1019
|
+
cacheRoot,
|
|
1020
|
+
impl.base,
|
|
1021
|
+
{ key: key.key, value: service, parent: impl.overlay },
|
|
1022
|
+
impl.depth + 1
|
|
1023
|
+
)
|
|
1024
|
+
})
|
|
914
1025
|
|
|
915
1026
|
/**
|
|
916
1027
|
* Adds or removes a service depending on an `Option`.
|
|
@@ -926,7 +1037,7 @@ export const add: {
|
|
|
926
1037
|
*
|
|
927
1038
|
* **Example** (Adding optional services)
|
|
928
1039
|
*
|
|
929
|
-
* ```ts
|
|
1040
|
+
* ```ts import.meta.vitest
|
|
930
1041
|
* import { Context, Option } from "effect"
|
|
931
1042
|
*
|
|
932
1043
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
@@ -938,11 +1049,13 @@ export const add: {
|
|
|
938
1049
|
* const withoutPort = withPort.pipe(
|
|
939
1050
|
* Context.addOrOmit(Port, Option.none())
|
|
940
1051
|
* )
|
|
1052
|
+
* Context.getOption(withPort, Port) // => Option.some({ PORT: 8080 })
|
|
1053
|
+
* Context.getOption(withoutPort, Port) // => Option.none()
|
|
941
1054
|
* ```
|
|
942
1055
|
*
|
|
943
1056
|
* @see {@link add} for always storing a service value
|
|
944
1057
|
*
|
|
945
|
-
* @category
|
|
1058
|
+
* @category combining
|
|
946
1059
|
* @since 4.0.0
|
|
947
1060
|
*/
|
|
948
1061
|
export const addOrOmit: {
|
|
@@ -960,7 +1073,7 @@ export const addOrOmit: {
|
|
|
960
1073
|
*
|
|
961
1074
|
* **Example** (Adding optional services)
|
|
962
1075
|
*
|
|
963
|
-
* ```ts
|
|
1076
|
+
* ```ts import.meta.vitest
|
|
964
1077
|
* import { Context, Option } from "effect"
|
|
965
1078
|
*
|
|
966
1079
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
@@ -972,11 +1085,13 @@ export const addOrOmit: {
|
|
|
972
1085
|
* const withoutPort = withPort.pipe(
|
|
973
1086
|
* Context.addOrOmit(Port, Option.none())
|
|
974
1087
|
* )
|
|
1088
|
+
* Context.getOption(withPort, Port) // => Option.some({ PORT: 8080 })
|
|
1089
|
+
* Context.getOption(withoutPort, Port) // => Option.none()
|
|
975
1090
|
* ```
|
|
976
1091
|
*
|
|
977
1092
|
* @see {@link add} for always storing a service value
|
|
978
1093
|
*
|
|
979
|
-
* @category
|
|
1094
|
+
* @category combining
|
|
980
1095
|
* @since 4.0.0
|
|
981
1096
|
*/
|
|
982
1097
|
<I, S>(key: Key<I, S>, service: Option.Option<Types.NoInfer<S>>): <Services>(self: Context<Services>) => Context<Services | I>
|
|
@@ -994,7 +1109,7 @@ export const addOrOmit: {
|
|
|
994
1109
|
*
|
|
995
1110
|
* **Example** (Adding optional services)
|
|
996
1111
|
*
|
|
997
|
-
* ```ts
|
|
1112
|
+
* ```ts import.meta.vitest
|
|
998
1113
|
* import { Context, Option } from "effect"
|
|
999
1114
|
*
|
|
1000
1115
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
@@ -1006,11 +1121,13 @@ export const addOrOmit: {
|
|
|
1006
1121
|
* const withoutPort = withPort.pipe(
|
|
1007
1122
|
* Context.addOrOmit(Port, Option.none())
|
|
1008
1123
|
* )
|
|
1124
|
+
* Context.getOption(withPort, Port) // => Option.some({ PORT: 8080 })
|
|
1125
|
+
* Context.getOption(withoutPort, Port) // => Option.none()
|
|
1009
1126
|
* ```
|
|
1010
1127
|
*
|
|
1011
1128
|
* @see {@link add} for always storing a service value
|
|
1012
1129
|
*
|
|
1013
|
-
* @category
|
|
1130
|
+
* @category combining
|
|
1014
1131
|
* @since 4.0.0
|
|
1015
1132
|
*/
|
|
1016
1133
|
<Services, I, S>(
|
|
@@ -1023,13 +1140,9 @@ export const addOrOmit: {
|
|
|
1023
1140
|
key: Key<I, S>,
|
|
1024
1141
|
service: Option.Option<Types.NoInfer<S>>
|
|
1025
1142
|
): Context<Services | I> =>
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
} else {
|
|
1030
|
-
map.set(key.key, service.value)
|
|
1031
|
-
}
|
|
1032
|
-
}))
|
|
1143
|
+
service._tag === "None"
|
|
1144
|
+
? omit(key)(self) as any
|
|
1145
|
+
: add(self, key, service.value))
|
|
1033
1146
|
|
|
1034
1147
|
/**
|
|
1035
1148
|
* Gets the service for a key, or evaluates the fallback when a non-reference
|
|
@@ -1052,7 +1165,7 @@ export const addOrOmit: {
|
|
|
1052
1165
|
*
|
|
1053
1166
|
* **Example** (Falling back for missing services)
|
|
1054
1167
|
*
|
|
1055
|
-
* ```ts
|
|
1168
|
+
* ```ts import.meta.vitest
|
|
1056
1169
|
* import { Context } from "effect"
|
|
1057
1170
|
*
|
|
1058
1171
|
* const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
|
|
@@ -1060,9 +1173,7 @@ export const addOrOmit: {
|
|
|
1060
1173
|
* "Database"
|
|
1061
1174
|
* )
|
|
1062
1175
|
*
|
|
1063
|
-
* const context = Context.make(Logger, {
|
|
1064
|
-
* log: (msg: string) => console.log(msg)
|
|
1065
|
-
* })
|
|
1176
|
+
* const context = Context.make(Logger, { log: (_msg: string) => {} })
|
|
1066
1177
|
*
|
|
1067
1178
|
* const logger = Context.getOrElse(context, Logger, () => ({ log: () => {} }))
|
|
1068
1179
|
* const database = Context.getOrElse(
|
|
@@ -1071,8 +1182,8 @@ export const addOrOmit: {
|
|
|
1071
1182
|
* () => ({ query: () => "fallback" })
|
|
1072
1183
|
* )
|
|
1073
1184
|
*
|
|
1074
|
-
*
|
|
1075
|
-
*
|
|
1185
|
+
* logger === Context.get(context, Logger) // => true
|
|
1186
|
+
* database.query("SELECT 1") // => "fallback"
|
|
1076
1187
|
* ```
|
|
1077
1188
|
*
|
|
1078
1189
|
* @see {@link getOption} for returning `Option.none` when a non-reference key is missing
|
|
@@ -1102,7 +1213,7 @@ export const getOrElse: {
|
|
|
1102
1213
|
*
|
|
1103
1214
|
* **Example** (Falling back for missing services)
|
|
1104
1215
|
*
|
|
1105
|
-
* ```ts
|
|
1216
|
+
* ```ts import.meta.vitest
|
|
1106
1217
|
* import { Context } from "effect"
|
|
1107
1218
|
*
|
|
1108
1219
|
* const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
|
|
@@ -1110,9 +1221,7 @@ export const getOrElse: {
|
|
|
1110
1221
|
* "Database"
|
|
1111
1222
|
* )
|
|
1112
1223
|
*
|
|
1113
|
-
* const context = Context.make(Logger, {
|
|
1114
|
-
* log: (msg: string) => console.log(msg)
|
|
1115
|
-
* })
|
|
1224
|
+
* const context = Context.make(Logger, { log: (_msg: string) => {} })
|
|
1116
1225
|
*
|
|
1117
1226
|
* const logger = Context.getOrElse(context, Logger, () => ({ log: () => {} }))
|
|
1118
1227
|
* const database = Context.getOrElse(
|
|
@@ -1121,8 +1230,8 @@ export const getOrElse: {
|
|
|
1121
1230
|
* () => ({ query: () => "fallback" })
|
|
1122
1231
|
* )
|
|
1123
1232
|
*
|
|
1124
|
-
*
|
|
1125
|
-
*
|
|
1233
|
+
* logger === Context.get(context, Logger) // => true
|
|
1234
|
+
* database.query("SELECT 1") // => "fallback"
|
|
1126
1235
|
* ```
|
|
1127
1236
|
*
|
|
1128
1237
|
* @see {@link getOption} for returning `Option.none` when a non-reference key is missing
|
|
@@ -1152,7 +1261,7 @@ export const getOrElse: {
|
|
|
1152
1261
|
*
|
|
1153
1262
|
* **Example** (Falling back for missing services)
|
|
1154
1263
|
*
|
|
1155
|
-
* ```ts
|
|
1264
|
+
* ```ts import.meta.vitest
|
|
1156
1265
|
* import { Context } from "effect"
|
|
1157
1266
|
*
|
|
1158
1267
|
* const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
|
|
@@ -1160,9 +1269,7 @@ export const getOrElse: {
|
|
|
1160
1269
|
* "Database"
|
|
1161
1270
|
* )
|
|
1162
1271
|
*
|
|
1163
|
-
* const context = Context.make(Logger, {
|
|
1164
|
-
* log: (msg: string) => console.log(msg)
|
|
1165
|
-
* })
|
|
1272
|
+
* const context = Context.make(Logger, { log: (_msg: string) => {} })
|
|
1166
1273
|
*
|
|
1167
1274
|
* const logger = Context.getOrElse(context, Logger, () => ({ log: () => {} }))
|
|
1168
1275
|
* const database = Context.getOrElse(
|
|
@@ -1171,8 +1278,8 @@ export const getOrElse: {
|
|
|
1171
1278
|
* () => ({ query: () => "fallback" })
|
|
1172
1279
|
* )
|
|
1173
1280
|
*
|
|
1174
|
-
*
|
|
1175
|
-
*
|
|
1281
|
+
* logger === Context.get(context, Logger) // => true
|
|
1282
|
+
* database.query("SELECT 1") // => "fallback"
|
|
1176
1283
|
* ```
|
|
1177
1284
|
*
|
|
1178
1285
|
* @see {@link getOption} for returning `Option.none` when a non-reference key is missing
|
|
@@ -1182,9 +1289,8 @@ export const getOrElse: {
|
|
|
1182
1289
|
*/
|
|
1183
1290
|
<Services, S, I, B>(self: Context<Services>, key: Key<I, S>, orElse: LazyArg<B>): S | B
|
|
1184
1291
|
} = dual(3, <Services, S, I, B>(self: Context<Services>, key: Key<I, S>, orElse: LazyArg<B>): S | B => {
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
}
|
|
1292
|
+
const value = lookup(self, key.key)
|
|
1293
|
+
if (value !== notFound) return value as any
|
|
1188
1294
|
return isReference(key) ? getDefaultValue(key) : orElse()
|
|
1189
1295
|
})
|
|
1190
1296
|
|
|
@@ -1250,9 +1356,15 @@ export const getOrUndefined: {
|
|
|
1250
1356
|
<Services, S, I>(self: Context<Services>, key: Key<I, S>): S | undefined
|
|
1251
1357
|
} = dual(
|
|
1252
1358
|
2,
|
|
1253
|
-
<Services, S, I>(self: Context<Services>, key: Key<I, S>): S | undefined => self
|
|
1359
|
+
<Services, S, I>(self: Context<Services>, key: Key<I, S>): S | undefined => getOrUndefinedUnsafe(self, key.key)
|
|
1254
1360
|
)
|
|
1255
1361
|
|
|
1362
|
+
/** @internal */
|
|
1363
|
+
export const getOrUndefinedUnsafe = <A, Services = never>(self: Context<Services>, key: string): A | undefined => {
|
|
1364
|
+
const value = lookup(self, key)
|
|
1365
|
+
return value === notFound ? undefined : value as A
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1256
1368
|
/**
|
|
1257
1369
|
* Gets the service for a key, throwing if an absent non-reference key cannot be
|
|
1258
1370
|
* resolved.
|
|
@@ -1270,17 +1382,16 @@ export const getOrUndefined: {
|
|
|
1270
1382
|
*
|
|
1271
1383
|
* **Example** (Getting services unsafely)
|
|
1272
1384
|
*
|
|
1273
|
-
* ```ts
|
|
1274
|
-
* import { Context } from "effect"
|
|
1275
|
-
* import * as assert from "node:assert"
|
|
1385
|
+
* ```ts import.meta.vitest
|
|
1386
|
+
* import { Context, Option } from "effect"
|
|
1276
1387
|
*
|
|
1277
1388
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1278
1389
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
1279
1390
|
*
|
|
1280
1391
|
* const context = Context.make(Port, { PORT: 8080 })
|
|
1281
1392
|
*
|
|
1282
|
-
*
|
|
1283
|
-
*
|
|
1393
|
+
* Context.getUnsafe(context, Port).PORT // => 8080
|
|
1394
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1284
1395
|
* ```
|
|
1285
1396
|
*
|
|
1286
1397
|
* @see {@link get} for type-checked service access
|
|
@@ -1307,17 +1418,16 @@ export const getUnsafe: {
|
|
|
1307
1418
|
*
|
|
1308
1419
|
* **Example** (Getting services unsafely)
|
|
1309
1420
|
*
|
|
1310
|
-
* ```ts
|
|
1311
|
-
* import { Context } from "effect"
|
|
1312
|
-
* import * as assert from "node:assert"
|
|
1421
|
+
* ```ts import.meta.vitest
|
|
1422
|
+
* import { Context, Option } from "effect"
|
|
1313
1423
|
*
|
|
1314
1424
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1315
1425
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
1316
1426
|
*
|
|
1317
1427
|
* const context = Context.make(Port, { PORT: 8080 })
|
|
1318
1428
|
*
|
|
1319
|
-
*
|
|
1320
|
-
*
|
|
1429
|
+
* Context.getUnsafe(context, Port).PORT // => 8080
|
|
1430
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1321
1431
|
* ```
|
|
1322
1432
|
*
|
|
1323
1433
|
* @see {@link get} for type-checked service access
|
|
@@ -1344,17 +1454,16 @@ export const getUnsafe: {
|
|
|
1344
1454
|
*
|
|
1345
1455
|
* **Example** (Getting services unsafely)
|
|
1346
1456
|
*
|
|
1347
|
-
* ```ts
|
|
1348
|
-
* import { Context } from "effect"
|
|
1349
|
-
* import * as assert from "node:assert"
|
|
1457
|
+
* ```ts import.meta.vitest
|
|
1458
|
+
* import { Context, Option } from "effect"
|
|
1350
1459
|
*
|
|
1351
1460
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1352
1461
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
1353
1462
|
*
|
|
1354
1463
|
* const context = Context.make(Port, { PORT: 8080 })
|
|
1355
1464
|
*
|
|
1356
|
-
*
|
|
1357
|
-
*
|
|
1465
|
+
* Context.getUnsafe(context, Port).PORT // => 8080
|
|
1466
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1358
1467
|
* ```
|
|
1359
1468
|
*
|
|
1360
1469
|
* @see {@link get} for type-checked service access
|
|
@@ -1367,11 +1476,12 @@ export const getUnsafe: {
|
|
|
1367
1476
|
} = dual(
|
|
1368
1477
|
2,
|
|
1369
1478
|
<Services, I extends Services, S>(self: Context<Services>, service: Key<I, S>): S => {
|
|
1370
|
-
|
|
1371
|
-
|
|
1479
|
+
const value = lookup(self, service.key)
|
|
1480
|
+
if (value === notFound) {
|
|
1481
|
+
if (isReference(service)) return getDefaultValue(service as any)
|
|
1372
1482
|
throw serviceNotFoundError(service)
|
|
1373
1483
|
}
|
|
1374
|
-
return
|
|
1484
|
+
return value as any
|
|
1375
1485
|
}
|
|
1376
1486
|
)
|
|
1377
1487
|
|
|
@@ -1385,9 +1495,8 @@ export const getUnsafe: {
|
|
|
1385
1495
|
*
|
|
1386
1496
|
* **Example** (Getting a service from a context)
|
|
1387
1497
|
*
|
|
1388
|
-
* ```ts
|
|
1498
|
+
* ```ts import.meta.vitest
|
|
1389
1499
|
* import { Context, pipe } from "effect"
|
|
1390
|
-
* import * as assert from "node:assert"
|
|
1391
1500
|
*
|
|
1392
1501
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1393
1502
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1397,7 +1506,7 @@ export const getUnsafe: {
|
|
|
1397
1506
|
* Context.add(Timeout, { TIMEOUT: 5000 })
|
|
1398
1507
|
* )
|
|
1399
1508
|
*
|
|
1400
|
-
*
|
|
1509
|
+
* Context.get(context, Timeout).TIMEOUT // => 5000
|
|
1401
1510
|
* ```
|
|
1402
1511
|
*
|
|
1403
1512
|
* @see {@link getOption} for optional service access
|
|
@@ -1417,9 +1526,8 @@ export const get: {
|
|
|
1417
1526
|
*
|
|
1418
1527
|
* **Example** (Getting a service from a context)
|
|
1419
1528
|
*
|
|
1420
|
-
* ```ts
|
|
1529
|
+
* ```ts import.meta.vitest
|
|
1421
1530
|
* import { Context, pipe } from "effect"
|
|
1422
|
-
* import * as assert from "node:assert"
|
|
1423
1531
|
*
|
|
1424
1532
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1425
1533
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1429,7 +1537,7 @@ export const get: {
|
|
|
1429
1537
|
* Context.add(Timeout, { TIMEOUT: 5000 })
|
|
1430
1538
|
* )
|
|
1431
1539
|
*
|
|
1432
|
-
*
|
|
1540
|
+
* Context.get(context, Timeout).TIMEOUT // => 5000
|
|
1433
1541
|
* ```
|
|
1434
1542
|
*
|
|
1435
1543
|
* @see {@link getOption} for optional service access
|
|
@@ -1449,9 +1557,8 @@ export const get: {
|
|
|
1449
1557
|
*
|
|
1450
1558
|
* **Example** (Getting a service from a context)
|
|
1451
1559
|
*
|
|
1452
|
-
* ```ts
|
|
1560
|
+
* ```ts import.meta.vitest
|
|
1453
1561
|
* import { Context, pipe } from "effect"
|
|
1454
|
-
* import * as assert from "node:assert"
|
|
1455
1562
|
*
|
|
1456
1563
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1457
1564
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1461,7 +1568,7 @@ export const get: {
|
|
|
1461
1568
|
* Context.add(Timeout, { TIMEOUT: 5000 })
|
|
1462
1569
|
* )
|
|
1463
1570
|
*
|
|
1464
|
-
*
|
|
1571
|
+
* Context.get(context, Timeout).TIMEOUT // => 5000
|
|
1465
1572
|
* ```
|
|
1466
1573
|
*
|
|
1467
1574
|
* @see {@link getOption} for optional service access
|
|
@@ -1473,54 +1580,6 @@ export const get: {
|
|
|
1473
1580
|
<Services, I extends Services, S>(self: Context<Services>, service: Key<I, S>): S
|
|
1474
1581
|
} = getUnsafe
|
|
1475
1582
|
|
|
1476
|
-
/**
|
|
1477
|
-
* Gets the value for a `Context.Reference`, returning its cached default when
|
|
1478
|
-
* the context does not contain an override.
|
|
1479
|
-
*
|
|
1480
|
-
* **When to use**
|
|
1481
|
-
*
|
|
1482
|
-
* Use when you need a `Context.Reference` value resolved from either a stored
|
|
1483
|
-
* override or the reference's default value.
|
|
1484
|
-
*
|
|
1485
|
-
* **Details**
|
|
1486
|
-
*
|
|
1487
|
-
* Stored overrides take precedence. If no override is present, the reference's
|
|
1488
|
-
* default value is computed lazily and cached on the reference itself.
|
|
1489
|
-
*
|
|
1490
|
-
* **Gotchas**
|
|
1491
|
-
*
|
|
1492
|
-
* Mutable default values can be shared across contexts unless an override is
|
|
1493
|
-
* provided, because the default is cached on the `Context.Reference`.
|
|
1494
|
-
*
|
|
1495
|
-
* **Example** (Getting reference defaults unsafely)
|
|
1496
|
-
*
|
|
1497
|
-
* ```ts
|
|
1498
|
-
* import { Context } from "effect"
|
|
1499
|
-
*
|
|
1500
|
-
* const LoggerRef = Context.Reference("Logger", {
|
|
1501
|
-
* defaultValue: () => ({ log: (msg: string) => console.log(msg) })
|
|
1502
|
-
* })
|
|
1503
|
-
*
|
|
1504
|
-
* const context = Context.empty()
|
|
1505
|
-
* const logger = Context.getReferenceUnsafe(context, LoggerRef)
|
|
1506
|
-
*
|
|
1507
|
-
* console.log(typeof logger.log) // "function"
|
|
1508
|
-
* ```
|
|
1509
|
-
*
|
|
1510
|
-
* @see {@link getUnsafe} for unsafe access with any service key
|
|
1511
|
-
* @see {@link get} for type-checked reference-aware access
|
|
1512
|
-
* @see {@link getOption} for optional access to non-reference keys
|
|
1513
|
-
*
|
|
1514
|
-
* @category unsafe
|
|
1515
|
-
* @since 4.0.0
|
|
1516
|
-
*/
|
|
1517
|
-
export const getReferenceUnsafe = <Services, S>(self: Context<Services>, service: Reference<S>): S => {
|
|
1518
|
-
if (!self.mapUnsafe.has(service.key)) {
|
|
1519
|
-
return getDefaultValue(service as any)
|
|
1520
|
-
}
|
|
1521
|
-
return self.mapUnsafe.get(service.key)! as any
|
|
1522
|
-
}
|
|
1523
|
-
|
|
1524
1583
|
const defaultValueCacheKey = "~effect/Context/defaultValue" as const
|
|
1525
1584
|
|
|
1526
1585
|
const getDefaultValue = (ref: Reference<any>) => {
|
|
@@ -1567,20 +1626,16 @@ const serviceNotFoundError = (service: Key<any, any>) => {
|
|
|
1567
1626
|
*
|
|
1568
1627
|
* **Example** (Getting optional services)
|
|
1569
1628
|
*
|
|
1570
|
-
* ```ts
|
|
1629
|
+
* ```ts import.meta.vitest
|
|
1571
1630
|
* import { Context, Option } from "effect"
|
|
1572
|
-
* import * as assert from "node:assert"
|
|
1573
1631
|
*
|
|
1574
1632
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1575
1633
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
1576
1634
|
*
|
|
1577
1635
|
* const context = Context.make(Port, { PORT: 8080 })
|
|
1578
1636
|
*
|
|
1579
|
-
*
|
|
1580
|
-
*
|
|
1581
|
-
* Option.some({ PORT: 8080 })
|
|
1582
|
-
* )
|
|
1583
|
-
* assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
|
|
1637
|
+
* Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
|
|
1638
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1584
1639
|
* ```
|
|
1585
1640
|
*
|
|
1586
1641
|
* @see {@link getOrElse} for returning a fallback value directly
|
|
@@ -1605,20 +1660,16 @@ export const getOption: {
|
|
|
1605
1660
|
*
|
|
1606
1661
|
* **Example** (Getting optional services)
|
|
1607
1662
|
*
|
|
1608
|
-
* ```ts
|
|
1663
|
+
* ```ts import.meta.vitest
|
|
1609
1664
|
* import { Context, Option } from "effect"
|
|
1610
|
-
* import * as assert from "node:assert"
|
|
1611
1665
|
*
|
|
1612
1666
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1613
1667
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
1614
1668
|
*
|
|
1615
1669
|
* const context = Context.make(Port, { PORT: 8080 })
|
|
1616
1670
|
*
|
|
1617
|
-
*
|
|
1618
|
-
*
|
|
1619
|
-
* Option.some({ PORT: 8080 })
|
|
1620
|
-
* )
|
|
1621
|
-
* assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
|
|
1671
|
+
* Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
|
|
1672
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1622
1673
|
* ```
|
|
1623
1674
|
*
|
|
1624
1675
|
* @see {@link getOrElse} for returning a fallback value directly
|
|
@@ -1643,20 +1694,16 @@ export const getOption: {
|
|
|
1643
1694
|
*
|
|
1644
1695
|
* **Example** (Getting optional services)
|
|
1645
1696
|
*
|
|
1646
|
-
* ```ts
|
|
1697
|
+
* ```ts import.meta.vitest
|
|
1647
1698
|
* import { Context, Option } from "effect"
|
|
1648
|
-
* import * as assert from "node:assert"
|
|
1649
1699
|
*
|
|
1650
1700
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1651
1701
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
1652
1702
|
*
|
|
1653
1703
|
* const context = Context.make(Port, { PORT: 8080 })
|
|
1654
1704
|
*
|
|
1655
|
-
*
|
|
1656
|
-
*
|
|
1657
|
-
* Option.some({ PORT: 8080 })
|
|
1658
|
-
* )
|
|
1659
|
-
* assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
|
|
1705
|
+
* Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
|
|
1706
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1660
1707
|
* ```
|
|
1661
1708
|
*
|
|
1662
1709
|
* @see {@link getOrElse} for returning a fallback value directly
|
|
@@ -1666,9 +1713,8 @@ export const getOption: {
|
|
|
1666
1713
|
*/
|
|
1667
1714
|
<Services, S, I>(self: Context<Services>, service: Key<I, S>): Option.Option<S>
|
|
1668
1715
|
} = dual(2, <Services, I extends Services, S>(self: Context<Services>, service: Key<I, S>): Option.Option<S> => {
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
}
|
|
1716
|
+
const value = lookup(self, service.key)
|
|
1717
|
+
if (value !== notFound) return Option.some(value as any)
|
|
1672
1718
|
return isReference(service) ? Option.some(getDefaultValue(service as any)) : Option.none()
|
|
1673
1719
|
})
|
|
1674
1720
|
|
|
@@ -1686,9 +1732,8 @@ export const getOption: {
|
|
|
1686
1732
|
*
|
|
1687
1733
|
* **Example** (Merging two contexts)
|
|
1688
1734
|
*
|
|
1689
|
-
* ```ts
|
|
1735
|
+
* ```ts import.meta.vitest
|
|
1690
1736
|
* import { Context } from "effect"
|
|
1691
|
-
* import * as assert from "node:assert"
|
|
1692
1737
|
*
|
|
1693
1738
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1694
1739
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1698,8 +1743,8 @@ export const getOption: {
|
|
|
1698
1743
|
*
|
|
1699
1744
|
* const context = Context.merge(firstContext, secondContext)
|
|
1700
1745
|
*
|
|
1701
|
-
*
|
|
1702
|
-
*
|
|
1746
|
+
* const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
|
|
1747
|
+
* values // => [8080, 5000]
|
|
1703
1748
|
* ```
|
|
1704
1749
|
*
|
|
1705
1750
|
* @see {@link mergeAll} for merging more than two contexts at once
|
|
@@ -1722,9 +1767,8 @@ export const merge: {
|
|
|
1722
1767
|
*
|
|
1723
1768
|
* **Example** (Merging two contexts)
|
|
1724
1769
|
*
|
|
1725
|
-
* ```ts
|
|
1770
|
+
* ```ts import.meta.vitest
|
|
1726
1771
|
* import { Context } from "effect"
|
|
1727
|
-
* import * as assert from "node:assert"
|
|
1728
1772
|
*
|
|
1729
1773
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1730
1774
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1734,8 +1778,8 @@ export const merge: {
|
|
|
1734
1778
|
*
|
|
1735
1779
|
* const context = Context.merge(firstContext, secondContext)
|
|
1736
1780
|
*
|
|
1737
|
-
*
|
|
1738
|
-
*
|
|
1781
|
+
* const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
|
|
1782
|
+
* values // => [8080, 5000]
|
|
1739
1783
|
* ```
|
|
1740
1784
|
*
|
|
1741
1785
|
* @see {@link mergeAll} for merging more than two contexts at once
|
|
@@ -1758,9 +1802,8 @@ export const merge: {
|
|
|
1758
1802
|
*
|
|
1759
1803
|
* **Example** (Merging two contexts)
|
|
1760
1804
|
*
|
|
1761
|
-
* ```ts
|
|
1805
|
+
* ```ts import.meta.vitest
|
|
1762
1806
|
* import { Context } from "effect"
|
|
1763
|
-
* import * as assert from "node:assert"
|
|
1764
1807
|
*
|
|
1765
1808
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1766
1809
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1770,8 +1813,8 @@ export const merge: {
|
|
|
1770
1813
|
*
|
|
1771
1814
|
* const context = Context.merge(firstContext, secondContext)
|
|
1772
1815
|
*
|
|
1773
|
-
*
|
|
1774
|
-
*
|
|
1816
|
+
* const values = [Context.get(context, Port).PORT, Context.get(context, Timeout).TIMEOUT]
|
|
1817
|
+
* values // => [8080, 5000]
|
|
1775
1818
|
* ```
|
|
1776
1819
|
*
|
|
1777
1820
|
* @see {@link mergeAll} for merging more than two contexts at once
|
|
@@ -1783,9 +1826,7 @@ export const merge: {
|
|
|
1783
1826
|
} = dual(2, <Services, R1>(self: Context<Services>, that: Context<R1>): Context<Services | R1> => {
|
|
1784
1827
|
if (self.mapUnsafe.size === 0) return that as any
|
|
1785
1828
|
if (that.mapUnsafe.size === 0) return self as any
|
|
1786
|
-
return
|
|
1787
|
-
that.mapUnsafe.forEach((value, key) => map.set(key, value))
|
|
1788
|
-
})
|
|
1829
|
+
return withFlat(self, (map) => that.mapUnsafe.forEach((value, key) => map.set(key, value)))
|
|
1789
1830
|
})
|
|
1790
1831
|
|
|
1791
1832
|
/**
|
|
@@ -1802,9 +1843,8 @@ export const merge: {
|
|
|
1802
1843
|
*
|
|
1803
1844
|
* **Example** (Merging multiple contexts)
|
|
1804
1845
|
*
|
|
1805
|
-
* ```ts
|
|
1846
|
+
* ```ts import.meta.vitest
|
|
1806
1847
|
* import { Context } from "effect"
|
|
1807
|
-
* import * as assert from "node:assert"
|
|
1808
1848
|
*
|
|
1809
1849
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1810
1850
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1820,9 +1860,7 @@ export const merge: {
|
|
|
1820
1860
|
* thirdContext
|
|
1821
1861
|
* )
|
|
1822
1862
|
*
|
|
1823
|
-
*
|
|
1824
|
-
* assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
|
|
1825
|
-
* assert.deepStrictEqual(Context.get(context, Host), { HOST: "localhost" })
|
|
1863
|
+
* context.mapUnsafe.size // => 3
|
|
1826
1864
|
* ```
|
|
1827
1865
|
*
|
|
1828
1866
|
* @see {@link merge} for merging two contexts
|
|
@@ -1851,9 +1889,8 @@ export const mergeAll = <T extends Array<unknown>>(
|
|
|
1851
1889
|
*
|
|
1852
1890
|
* **Example** (Picking services from a context)
|
|
1853
1891
|
*
|
|
1854
|
-
* ```ts
|
|
1892
|
+
* ```ts import.meta.vitest
|
|
1855
1893
|
* import { Context, Option, pipe } from "effect"
|
|
1856
|
-
* import * as assert from "node:assert"
|
|
1857
1894
|
*
|
|
1858
1895
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1859
1896
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1865,11 +1902,8 @@ export const mergeAll = <T extends Array<unknown>>(
|
|
|
1865
1902
|
*
|
|
1866
1903
|
* const context = pipe(someContext, Context.pick(Port))
|
|
1867
1904
|
*
|
|
1868
|
-
*
|
|
1869
|
-
*
|
|
1870
|
-
* Option.some({ PORT: 8080 })
|
|
1871
|
-
* )
|
|
1872
|
-
* assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
|
|
1905
|
+
* Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
|
|
1906
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1873
1907
|
* ```
|
|
1874
1908
|
*
|
|
1875
1909
|
* @see {@link omit} for removing selected services
|
|
@@ -1880,14 +1914,13 @@ export const mergeAll = <T extends Array<unknown>>(
|
|
|
1880
1914
|
export const pick = <S extends ReadonlyArray<Key<any, any>>>(
|
|
1881
1915
|
...services: S
|
|
1882
1916
|
) =>
|
|
1883
|
-
<Services>(self: Context<Services>): Context<Services & Service.Identifier<S[number]>> =>
|
|
1884
|
-
|
|
1885
|
-
|
|
1917
|
+
<Services>(self: Context<Services>): Context<Services & Service.Identifier<S[number]>> => {
|
|
1918
|
+
const keep = new Set(services.map((key) => key.key))
|
|
1919
|
+
return withFlat(self, (map) =>
|
|
1886
1920
|
map.forEach((_, key) => {
|
|
1887
|
-
if (
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
})
|
|
1921
|
+
if (!keep.has(key)) map.delete(key)
|
|
1922
|
+
}))
|
|
1923
|
+
}
|
|
1891
1924
|
|
|
1892
1925
|
/**
|
|
1893
1926
|
* Returns a new `Context` with the specified service keys removed.
|
|
@@ -1898,9 +1931,8 @@ export const pick = <S extends ReadonlyArray<Key<any, any>>>(
|
|
|
1898
1931
|
*
|
|
1899
1932
|
* **Example** (Omitting services from a context)
|
|
1900
1933
|
*
|
|
1901
|
-
* ```ts
|
|
1934
|
+
* ```ts import.meta.vitest
|
|
1902
1935
|
* import { Context, Option, pipe } from "effect"
|
|
1903
|
-
* import * as assert from "node:assert"
|
|
1904
1936
|
*
|
|
1905
1937
|
* const Port = Context.Service<{ PORT: number }>("Port")
|
|
1906
1938
|
* const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
|
|
@@ -1912,11 +1944,8 @@ export const pick = <S extends ReadonlyArray<Key<any, any>>>(
|
|
|
1912
1944
|
*
|
|
1913
1945
|
* const context = pipe(someContext, Context.omit(Timeout))
|
|
1914
1946
|
*
|
|
1915
|
-
*
|
|
1916
|
-
*
|
|
1917
|
-
* Option.some({ PORT: 8080 })
|
|
1918
|
-
* )
|
|
1919
|
-
* assert.deepStrictEqual(Context.getOption(context, Timeout), Option.none())
|
|
1947
|
+
* Context.getOption(context, Port) // => Option.some({ PORT: 8080 })
|
|
1948
|
+
* Context.getOption(context, Timeout) // => Option.none()
|
|
1920
1949
|
* ```
|
|
1921
1950
|
*
|
|
1922
1951
|
* @see {@link pick} for keeping selected services
|
|
@@ -1928,108 +1957,12 @@ export const omit = <S extends ReadonlyArray<Key<any, any>>>(
|
|
|
1928
1957
|
...keys: S
|
|
1929
1958
|
) =>
|
|
1930
1959
|
<Services>(self: Context<Services>): Context<Exclude<Services, Service.Identifier<S[number]>>> =>
|
|
1931
|
-
|
|
1960
|
+
withFlat(self, (map) => {
|
|
1932
1961
|
for (let i = 0; i < keys.length; i++) {
|
|
1933
1962
|
map.delete(keys[i].key)
|
|
1934
1963
|
}
|
|
1935
1964
|
})
|
|
1936
1965
|
|
|
1937
|
-
/**
|
|
1938
|
-
* Performs a series of mutations on a `Context`. Prevents unnecessary copying
|
|
1939
|
-
* of the underlying map when multiple mutations are needed.
|
|
1940
|
-
*
|
|
1941
|
-
* **When to use**
|
|
1942
|
-
*
|
|
1943
|
-
* Use to apply several `Context` transformations in one callback while copying
|
|
1944
|
-
* the underlying service map only once.
|
|
1945
|
-
*
|
|
1946
|
-
* @see {@link add} for adding or replacing a service
|
|
1947
|
-
* @see {@link addOrOmit} for adding or removing a service from an `Option`
|
|
1948
|
-
* @see {@link merge} for combining two contexts
|
|
1949
|
-
* @see {@link pick} for keeping selected services
|
|
1950
|
-
* @see {@link omit} for removing selected services
|
|
1951
|
-
*
|
|
1952
|
-
* @category mutations
|
|
1953
|
-
* @since 4.0.0
|
|
1954
|
-
*/
|
|
1955
|
-
export const mutate: {
|
|
1956
|
-
/**
|
|
1957
|
-
* Performs a series of mutations on a `Context`. Prevents unnecessary copying
|
|
1958
|
-
* of the underlying map when multiple mutations are needed.
|
|
1959
|
-
*
|
|
1960
|
-
* **When to use**
|
|
1961
|
-
*
|
|
1962
|
-
* Use to apply several `Context` transformations in one callback while copying
|
|
1963
|
-
* the underlying service map only once.
|
|
1964
|
-
*
|
|
1965
|
-
* @see {@link add} for adding or replacing a service
|
|
1966
|
-
* @see {@link addOrOmit} for adding or removing a service from an `Option`
|
|
1967
|
-
* @see {@link merge} for combining two contexts
|
|
1968
|
-
* @see {@link pick} for keeping selected services
|
|
1969
|
-
* @see {@link omit} for removing selected services
|
|
1970
|
-
*
|
|
1971
|
-
* @category mutations
|
|
1972
|
-
* @since 4.0.0
|
|
1973
|
-
*/
|
|
1974
|
-
<Services, B>(f: (context: Context<Services>) => Context<B>): <Services>(self: Context<Services>) => Context<B>
|
|
1975
|
-
/**
|
|
1976
|
-
* Performs a series of mutations on a `Context`. Prevents unnecessary copying
|
|
1977
|
-
* of the underlying map when multiple mutations are needed.
|
|
1978
|
-
*
|
|
1979
|
-
* **When to use**
|
|
1980
|
-
*
|
|
1981
|
-
* Use to apply several `Context` transformations in one callback while copying
|
|
1982
|
-
* the underlying service map only once.
|
|
1983
|
-
*
|
|
1984
|
-
* @see {@link add} for adding or replacing a service
|
|
1985
|
-
* @see {@link addOrOmit} for adding or removing a service from an `Option`
|
|
1986
|
-
* @see {@link merge} for combining two contexts
|
|
1987
|
-
* @see {@link pick} for keeping selected services
|
|
1988
|
-
* @see {@link omit} for removing selected services
|
|
1989
|
-
*
|
|
1990
|
-
* @category mutations
|
|
1991
|
-
* @since 4.0.0
|
|
1992
|
-
*/
|
|
1993
|
-
<Services, B>(self: Context<Services>, f: (context: Context<Services>) => Context<B>): Context<B>
|
|
1994
|
-
} = dual(
|
|
1995
|
-
2,
|
|
1996
|
-
<Services, B>(self: Context<Services>, f: (context: Context<Services>) => Context<B>): Context<B> => {
|
|
1997
|
-
const next = makeUnsafe</**
|
|
1998
|
-
* Performs a series of mutations on a `Context`. Prevents unnecessary copying
|
|
1999
|
-
* of the underlying map when multiple mutations are needed.
|
|
2000
|
-
*
|
|
2001
|
-
* **When to use**
|
|
2002
|
-
*
|
|
2003
|
-
* Use to apply several `Context` transformations in one callback while copying
|
|
2004
|
-
* the underlying service map only once.
|
|
2005
|
-
*
|
|
2006
|
-
* @see {@link add} for adding or replacing a service
|
|
2007
|
-
* @see {@link addOrOmit} for adding or removing a service from an `Option`
|
|
2008
|
-
* @see {@link merge} for combining two contexts
|
|
2009
|
-
* @see {@link pick} for keeping selected services
|
|
2010
|
-
* @see {@link omit} for removing selected services
|
|
2011
|
-
*
|
|
2012
|
-
* @category mutations
|
|
2013
|
-
* @since 4.0.0
|
|
2014
|
-
*/
|
|
2015
|
-
Services>(new Map(self.mapUnsafe))
|
|
2016
|
-
next.mutable = true
|
|
2017
|
-
const result = f(next)
|
|
2018
|
-
result.mutable = false
|
|
2019
|
-
return result
|
|
2020
|
-
}
|
|
2021
|
-
)
|
|
2022
|
-
|
|
2023
|
-
const withMapUnsafe = <Services, B>(self: Context<Services>, f: (map: Map<string, any>) => void): Context<B> => {
|
|
2024
|
-
if (self.mutable) {
|
|
2025
|
-
f(self.mapUnsafe as any)
|
|
2026
|
-
return self as any
|
|
2027
|
-
}
|
|
2028
|
-
const map = new Map(self.mapUnsafe)
|
|
2029
|
-
f(map)
|
|
2030
|
-
return makeUnsafe(map)
|
|
2031
|
-
}
|
|
2032
|
-
|
|
2033
1966
|
/**
|
|
2034
1967
|
* Creates a context key with a default value.
|
|
2035
1968
|
*
|
|
@@ -2048,12 +1981,13 @@ const withMapUnsafe = <Services, B>(self: Context<Services>, f: (map: Map<string
|
|
|
2048
1981
|
*
|
|
2049
1982
|
* **Example** (Creating references with default values)
|
|
2050
1983
|
*
|
|
2051
|
-
* ```ts
|
|
1984
|
+
* ```ts import.meta.vitest
|
|
2052
1985
|
* import { Context } from "effect"
|
|
2053
1986
|
*
|
|
2054
1987
|
* // Create a reference with a default value
|
|
1988
|
+
* const messages: Array<string> = []
|
|
2055
1989
|
* const LoggerRef = Context.Reference("Logger", {
|
|
2056
|
-
* defaultValue: () => ({ log: (msg: string) =>
|
|
1990
|
+
* defaultValue: () => ({ log: (msg: string) => messages.push(`Default: ${msg}`) })
|
|
2057
1991
|
* })
|
|
2058
1992
|
*
|
|
2059
1993
|
* // The reference provides the default value when accessed from an empty context
|
|
@@ -2062,17 +1996,24 @@ const withMapUnsafe = <Services, B>(self: Context<Services>, f: (map: Map<string
|
|
|
2062
1996
|
*
|
|
2063
1997
|
* // You can also override the default value
|
|
2064
1998
|
* const customContext = Context.make(LoggerRef, {
|
|
2065
|
-
* log: (msg: string) => `Custom: ${msg}`
|
|
1999
|
+
* log: (msg: string) => messages.push(`Custom: ${msg}`)
|
|
2066
2000
|
* })
|
|
2067
2001
|
* const customLogger = Context.get(customContext, LoggerRef)
|
|
2002
|
+
* logger.log("default")
|
|
2003
|
+
* customLogger.log("message")
|
|
2004
|
+
* messages // => ["Default: default", "Custom: message"]
|
|
2068
2005
|
* ```
|
|
2069
2006
|
*
|
|
2070
2007
|
* @see {@link Service} for required services without default values
|
|
2071
2008
|
*
|
|
2072
|
-
* @category
|
|
2009
|
+
* @category services
|
|
2073
2010
|
* @since 3.11.0
|
|
2074
2011
|
*/
|
|
2075
2012
|
export const Reference: <Service>(
|
|
2076
2013
|
key: string,
|
|
2077
|
-
options: {
|
|
2014
|
+
options: {
|
|
2015
|
+
readonly defaultValue: () => Service
|
|
2016
|
+
/** @internal */
|
|
2017
|
+
readonly fiberCached?: boolean | undefined
|
|
2018
|
+
}
|
|
2078
2019
|
) => Reference<Service> = Service as any
|