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/dist/Schedule.d.ts
CHANGED
|
@@ -24,42 +24,17 @@ declare const TypeId = "~effect/Schedule";
|
|
|
24
24
|
*
|
|
25
25
|
* **Example** (Defining retry and repeat schedules)
|
|
26
26
|
*
|
|
27
|
-
* ```ts
|
|
28
|
-
* import {
|
|
29
|
-
*
|
|
30
|
-
* class NetworkError extends Data.TaggedError("NetworkError")<{
|
|
31
|
-
* readonly attempt: number
|
|
32
|
-
* }> {}
|
|
33
|
-
*
|
|
34
|
-
* // Basic retry schedule - retry up to 3 times with exponential backoff
|
|
35
|
-
* const retrySchedule = Schedule.max([
|
|
36
|
-
* Schedule.exponential("100 millis"),
|
|
37
|
-
* Schedule.recurs(3)
|
|
38
|
-
* ])
|
|
27
|
+
* ```ts import.meta.vitest
|
|
28
|
+
* import { Effect, Schedule } from "effect"
|
|
29
|
+
* import { TestClock } from "effect/testing"
|
|
39
30
|
*
|
|
40
|
-
*
|
|
41
|
-
* const
|
|
42
|
-
* .
|
|
31
|
+
* const executions: Array<number> = []
|
|
32
|
+
* const program = Effect.sync(() => executions.push(executions.length + 1)).pipe(
|
|
33
|
+
* Effect.repeat(Schedule.recurs(2)),
|
|
34
|
+
* Effect.as(executions)
|
|
35
|
+
* )
|
|
43
36
|
*
|
|
44
|
-
*
|
|
45
|
-
* let attempts = 0
|
|
46
|
-
*
|
|
47
|
-
* const result1 = yield* Effect.retry(
|
|
48
|
-
* Effect.gen(function*() {
|
|
49
|
-
* attempts++
|
|
50
|
-
* if (attempts < 3) {
|
|
51
|
-
* return yield* Effect.fail(new NetworkError({ attempt: attempts }))
|
|
52
|
-
* }
|
|
53
|
-
* return "Success"
|
|
54
|
-
* }),
|
|
55
|
-
* retrySchedule
|
|
56
|
-
* )
|
|
57
|
-
* console.log(result1) // "Success"
|
|
58
|
-
*
|
|
59
|
-
* yield* Console.log("heartbeat").pipe(
|
|
60
|
-
* Effect.repeat(repeatSchedule.pipe(Schedule.upTo({ times: 5 })))
|
|
61
|
-
* )
|
|
62
|
-
* })
|
|
37
|
+
* await Effect.runPromise(Effect.provide(program, TestClock.layer())) // => [1, 2, 3]
|
|
63
38
|
* ```
|
|
64
39
|
*
|
|
65
40
|
* @category models
|
|
@@ -101,7 +76,7 @@ export interface Metadata<Output = unknown, Input = unknown> extends InputMetada
|
|
|
101
76
|
* input and output values, zero duration, and zeroed timing fields before any
|
|
102
77
|
* schedule step has produced metadata.
|
|
103
78
|
*
|
|
104
|
-
* @category
|
|
79
|
+
* @category services
|
|
105
80
|
* @since 4.0.0
|
|
106
81
|
*/
|
|
107
82
|
export declare const CurrentMetadata: Context.Reference<Metadata<unknown, unknown>>;
|
|
@@ -116,27 +91,11 @@ export declare namespace Schedule {
|
|
|
116
91
|
*
|
|
117
92
|
* **Example** (Understanding schedule variance)
|
|
118
93
|
*
|
|
119
|
-
* ```ts
|
|
120
|
-
* import {
|
|
121
|
-
*
|
|
122
|
-
* // Understanding Schedule variance:
|
|
123
|
-
* // - Output: covariant (can be a subtype)
|
|
124
|
-
* // - Input: contravariant (can accept supertypes)
|
|
125
|
-
* // - Error: covariant (can be a subtype)
|
|
126
|
-
* // - Env: covariant (can be a subtype)
|
|
127
|
-
*
|
|
128
|
-
* // Schedule that produces strings, accepts any input
|
|
129
|
-
* const stringSchedule = Schedule.spaced("1 second").pipe(
|
|
130
|
-
* Schedule.map(() => Effect.succeed("tick"))
|
|
131
|
-
* )
|
|
94
|
+
* ```ts import.meta.vitest
|
|
95
|
+
* import { Schedule } from "effect"
|
|
132
96
|
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
* Schedule.upTo({ times: 5 })
|
|
136
|
-
* )
|
|
137
|
-
*
|
|
138
|
-
* // Schedule requiring a service environment
|
|
139
|
-
* const serviceSchedule = Schedule.spaced("5 seconds")
|
|
97
|
+
* const schedule: Schedule.Schedule<number, unknown, never, never> = Schedule.recurs(2)
|
|
98
|
+
* Schedule.isSchedule(schedule) // => true
|
|
140
99
|
* ```
|
|
141
100
|
*
|
|
142
101
|
* @category models
|
|
@@ -167,28 +126,28 @@ export declare namespace Schedule {
|
|
|
167
126
|
/**
|
|
168
127
|
* Extracts the output type from a `Schedule`.
|
|
169
128
|
*
|
|
170
|
-
* @category
|
|
129
|
+
* @category utility types
|
|
171
130
|
* @since 4.0.0
|
|
172
131
|
*/
|
|
173
132
|
export type Output<S> = S extends Schedule<infer Output, any, any, any> ? Output : never;
|
|
174
133
|
/**
|
|
175
134
|
* Extracts the input type from a `Schedule`.
|
|
176
135
|
*
|
|
177
|
-
* @category
|
|
136
|
+
* @category utility types
|
|
178
137
|
* @since 4.0.0
|
|
179
138
|
*/
|
|
180
139
|
export type Input<S> = S extends Schedule<any, infer Input, any, any> ? Input : never;
|
|
181
140
|
/**
|
|
182
141
|
* Extracts the error type from a `Schedule`.
|
|
183
142
|
*
|
|
184
|
-
* @category
|
|
143
|
+
* @category utility types
|
|
185
144
|
* @since 4.0.0
|
|
186
145
|
*/
|
|
187
146
|
export type Error<S> = S extends Schedule<any, any, infer Error, any> ? Error : never;
|
|
188
147
|
/**
|
|
189
148
|
* Extracts the service requirements from a `Schedule`.
|
|
190
149
|
*
|
|
191
|
-
* @category
|
|
150
|
+
* @category utility types
|
|
192
151
|
* @since 4.0.0
|
|
193
152
|
*/
|
|
194
153
|
export type Env<S> = S extends Schedule<any, any, any, infer Env> ? Env : never;
|
|
@@ -197,16 +156,16 @@ export type Env<S> = S extends Schedule<any, any, any, infer Env> ? Env : never;
|
|
|
197
156
|
*
|
|
198
157
|
* **Example** (Checking for schedules)
|
|
199
158
|
*
|
|
200
|
-
* ```ts
|
|
159
|
+
* ```ts import.meta.vitest
|
|
201
160
|
* import { Schedule } from "effect"
|
|
202
161
|
*
|
|
203
162
|
* const schedule = Schedule.exponential("100 millis")
|
|
204
163
|
* const notSchedule = { foo: "bar" }
|
|
205
164
|
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
165
|
+
* Schedule.isSchedule(schedule) // => true
|
|
166
|
+
* Schedule.isSchedule(notSchedule) // => false
|
|
167
|
+
* Schedule.isSchedule(null) // => false
|
|
168
|
+
* Schedule.isSchedule(undefined) // => false
|
|
210
169
|
* ```
|
|
211
170
|
*
|
|
212
171
|
* @category guards
|
|
@@ -218,7 +177,7 @@ export declare const isSchedule: (u: unknown) => u is Schedule<unknown, never, u
|
|
|
218
177
|
*
|
|
219
178
|
* **Example** (Creating a custom schedule from a step function)
|
|
220
179
|
*
|
|
221
|
-
* ```ts
|
|
180
|
+
* ```ts import.meta.vitest
|
|
222
181
|
* import { Cause, Duration, Effect, Schedule } from "effect"
|
|
223
182
|
*
|
|
224
183
|
* const schedule = Schedule.fromStep(Effect.sync(() => {
|
|
@@ -231,6 +190,14 @@ export declare const isSchedule: (u: unknown) => u is Schedule<unknown, never, u
|
|
|
231
190
|
* return Effect.succeed([count++, Duration.millis(100)] as [number, Duration.Duration])
|
|
232
191
|
* }
|
|
233
192
|
* }))
|
|
193
|
+
*
|
|
194
|
+
* const program = Effect.gen(function*() {
|
|
195
|
+
* const step = yield* Schedule.toStep(schedule)
|
|
196
|
+
* const [output] = yield* step(0, "input")
|
|
197
|
+
* return output
|
|
198
|
+
* })
|
|
199
|
+
*
|
|
200
|
+
* await Effect.runPromise(program) // => 0
|
|
234
201
|
* ```
|
|
235
202
|
*
|
|
236
203
|
* @category constructors
|
|
@@ -242,7 +209,7 @@ export declare const fromStep: <Input, Output, EnvX, Error, ErrorX, Env>(step: E
|
|
|
242
209
|
*
|
|
243
210
|
* **Example** (Creating a metadata-aware schedule)
|
|
244
211
|
*
|
|
245
|
-
* ```ts
|
|
212
|
+
* ```ts import.meta.vitest
|
|
246
213
|
* import { Cause, Duration, Effect, Schedule } from "effect"
|
|
247
214
|
*
|
|
248
215
|
* const firstThreeInputs = Schedule.fromStepWithMetadata(Effect.succeed((metadata: Schedule.InputMetadata<string>) => {
|
|
@@ -255,6 +222,14 @@ export declare const fromStep: <Input, Output, EnvX, Error, ErrorX, Env>(step: E
|
|
|
255
222
|
* Duration.millis(250)
|
|
256
223
|
* ] as [string, Duration.Duration])
|
|
257
224
|
* }))
|
|
225
|
+
*
|
|
226
|
+
* const program = Effect.gen(function*() {
|
|
227
|
+
* const step = yield* Schedule.toStep(firstThreeInputs)
|
|
228
|
+
* const [output] = yield* step(0, "input")
|
|
229
|
+
* return output
|
|
230
|
+
* })
|
|
231
|
+
*
|
|
232
|
+
* await Effect.runPromise(program) // => "attempt 1: input"
|
|
258
233
|
* ```
|
|
259
234
|
*
|
|
260
235
|
* @category constructors
|
|
@@ -266,8 +241,8 @@ export declare const fromStepWithMetadata: <Input, Output, EnvX, ErrorX, Error,
|
|
|
266
241
|
*
|
|
267
242
|
* **Example** (Extracting a schedule step function)
|
|
268
243
|
*
|
|
269
|
-
* ```ts
|
|
270
|
-
* import { Effect, Schedule } from "effect"
|
|
244
|
+
* ```ts import.meta.vitest
|
|
245
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
271
246
|
*
|
|
272
247
|
* // Extract step function from an existing schedule
|
|
273
248
|
* const schedule = Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 3 }))
|
|
@@ -278,10 +253,10 @@ export declare const fromStepWithMetadata: <Input, Output, EnvX, ErrorX, Error,
|
|
|
278
253
|
* // Use the step function directly for custom logic. The timestamp is
|
|
279
254
|
* // supplied by the caller, so tests can pass a deterministic value.
|
|
280
255
|
* const now = 0
|
|
281
|
-
*
|
|
282
|
-
*
|
|
283
|
-
* console.log(`Step result: ${result}`)
|
|
256
|
+
* return yield* stepFn(now, "input")
|
|
284
257
|
* })
|
|
258
|
+
*
|
|
259
|
+
* await Effect.runPromise(program) // => [Duration.millis(100), Duration.millis(100)]
|
|
285
260
|
* ```
|
|
286
261
|
*
|
|
287
262
|
* @category destructors
|
|
@@ -315,26 +290,19 @@ export declare const toStepWithMetadata: <Output, Input, Error, Env>(schedule: S
|
|
|
315
290
|
*
|
|
316
291
|
* **Example** (Extracting a sleeping step function)
|
|
317
292
|
*
|
|
318
|
-
* ```ts
|
|
293
|
+
* ```ts import.meta.vitest
|
|
319
294
|
* import { Effect, Schedule } from "effect"
|
|
295
|
+
* import { TestClock } from "effect/testing"
|
|
320
296
|
*
|
|
321
|
-
*
|
|
322
|
-
* const schedule = Schedule.spaced("1 second").pipe(Schedule.upTo({ times: 3 }))
|
|
297
|
+
* const schedule = Schedule.recurs(3)
|
|
323
298
|
*
|
|
324
299
|
* const program = Effect.gen(function*() {
|
|
325
300
|
* const stepWithSleep = yield* Schedule.toStepWithSleep(schedule)
|
|
326
301
|
*
|
|
327
|
-
*
|
|
328
|
-
* console.log("Starting...")
|
|
329
|
-
* const result1 = yield* stepWithSleep("first")
|
|
330
|
-
* console.log(`First result: ${result1}`)
|
|
331
|
-
*
|
|
332
|
-
* const result2 = yield* stepWithSleep("second")
|
|
333
|
-
* console.log(`Second result: ${result2}`)
|
|
334
|
-
*
|
|
335
|
-
* const result3 = yield* stepWithSleep("third")
|
|
336
|
-
* console.log(`Third result: ${result3}`)
|
|
302
|
+
* return [yield* stepWithSleep("first"), yield* stepWithSleep("second")]
|
|
337
303
|
* })
|
|
304
|
+
*
|
|
305
|
+
* await Effect.runPromise(Effect.provide(program, TestClock.layer())) // => [0, 1]
|
|
338
306
|
* ```
|
|
339
307
|
*
|
|
340
308
|
* @category destructors
|
|
@@ -347,94 +315,19 @@ export declare const toStepWithSleep: <Output, Input, Error, Env>(schedule: Sche
|
|
|
347
315
|
*
|
|
348
316
|
* **Example** (Adding extra delay to a schedule)
|
|
349
317
|
*
|
|
350
|
-
* ```ts
|
|
351
|
-
* import {
|
|
352
|
-
*
|
|
353
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
318
|
+
* ```ts import.meta.vitest
|
|
319
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
354
320
|
*
|
|
355
|
-
*
|
|
356
|
-
*
|
|
357
|
-
* Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 5 })),
|
|
358
|
-
* ({ output }) =>
|
|
359
|
-
* Effect.succeed(Duration.millis(Duration.toMillis(output) * 0.25))
|
|
360
|
-
* )
|
|
361
|
-
*
|
|
362
|
-
* const repeatProgram = Effect.gen(function*() {
|
|
363
|
-
* yield* Effect.repeat(
|
|
364
|
-
* Effect.succeed("delayed task"),
|
|
365
|
-
* delayedSchedule.pipe(
|
|
366
|
-
* Schedule.tap(({ output: delay }) =>
|
|
367
|
-
* Console.log(`Base delay: ${delay}`)
|
|
368
|
-
* )
|
|
369
|
-
* )
|
|
370
|
-
* )
|
|
371
|
-
* })
|
|
372
|
-
*
|
|
373
|
-
* // Add adaptive delay based on execution count
|
|
374
|
-
* const adaptiveSchedule = Schedule.addDelay(
|
|
375
|
-
* Schedule.recurs(6),
|
|
376
|
-
* ({ output: executionCount }) =>
|
|
377
|
-
* // Increase delay as execution count grows
|
|
378
|
-
* Effect.succeed(Duration.millis(executionCount * 200))
|
|
379
|
-
* )
|
|
380
|
-
*
|
|
381
|
-
* const adaptiveProgram = Effect.gen(function*() {
|
|
382
|
-
* yield* Effect.repeat(
|
|
383
|
-
* Effect.gen(function*() {
|
|
384
|
-
* yield* Console.log("Adaptive delay task")
|
|
385
|
-
* return "adaptive"
|
|
386
|
-
* }),
|
|
387
|
-
* adaptiveSchedule.pipe(
|
|
388
|
-
* Schedule.tap(({ output: count }) =>
|
|
389
|
-
* Console.log(`Execution ${count + 1} with adaptive delay`)
|
|
390
|
-
* )
|
|
391
|
-
* )
|
|
392
|
-
* )
|
|
393
|
-
* })
|
|
394
|
-
*
|
|
395
|
-
* // Add effectful delay computation from deterministic service data
|
|
396
|
-
* const loadByExecution = [1, 3, 2, 4] as const
|
|
397
|
-
*
|
|
398
|
-
* const dynamicSchedule = Schedule.addDelay(
|
|
399
|
-
* Schedule.spaced("1 second").pipe(Schedule.upTo({ times: 4 })),
|
|
400
|
-
* ({ output: executionNumber }) => {
|
|
401
|
-
* const load = loadByExecution[executionNumber] ?? 1
|
|
402
|
-
* return Effect.succeed(Duration.millis(load * 100))
|
|
403
|
-
* }
|
|
321
|
+
* const schedule = Schedule.recurs(1).pipe(
|
|
322
|
+
* Schedule.addDelay(() => Effect.succeed("25 millis"))
|
|
404
323
|
* )
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
* yield*
|
|
408
|
-
*
|
|
409
|
-
* yield* Console.log("Dynamic delay task")
|
|
410
|
-
* return "dynamic"
|
|
411
|
-
* }),
|
|
412
|
-
* dynamicSchedule
|
|
413
|
-
* )
|
|
324
|
+
* const program = Effect.gen(function*() {
|
|
325
|
+
* const step = yield* Schedule.toStep(schedule)
|
|
326
|
+
* const [, delay] = yield* step(0, undefined)
|
|
327
|
+
* return delay
|
|
414
328
|
* })
|
|
415
329
|
*
|
|
416
|
-
*
|
|
417
|
-
* const progressiveRetrySchedule = Schedule.addDelay(
|
|
418
|
-
* Schedule.exponential("50 millis").pipe(Schedule.upTo({ times: 4 })),
|
|
419
|
-
* () => Effect.succeed(Duration.millis(100)) // Fixed additional delay
|
|
420
|
-
* )
|
|
421
|
-
*
|
|
422
|
-
* const retryProgram = Effect.gen(function*() {
|
|
423
|
-
* let attempt = 0
|
|
424
|
-
*
|
|
425
|
-
* const result = yield* Effect.retry(
|
|
426
|
-
* Effect.gen(function*() {
|
|
427
|
-
* attempt++
|
|
428
|
-
* if (attempt < 5) {
|
|
429
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
430
|
-
* }
|
|
431
|
-
* return `Success on attempt ${attempt}`
|
|
432
|
-
* }),
|
|
433
|
-
* progressiveRetrySchedule
|
|
434
|
-
* )
|
|
435
|
-
*
|
|
436
|
-
* yield* Console.log(`Final result: ${result}`)
|
|
437
|
-
* })
|
|
330
|
+
* await Effect.runPromise(program) // => Duration.millis(25)
|
|
438
331
|
* ```
|
|
439
332
|
*
|
|
440
333
|
* @category delays & timeouts
|
|
@@ -447,94 +340,19 @@ export declare const addDelay: {
|
|
|
447
340
|
*
|
|
448
341
|
* **Example** (Adding extra delay to a schedule)
|
|
449
342
|
*
|
|
450
|
-
* ```ts
|
|
451
|
-
* import {
|
|
452
|
-
*
|
|
453
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
343
|
+
* ```ts import.meta.vitest
|
|
344
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
454
345
|
*
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
* Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 5 })),
|
|
458
|
-
* ({ output }) =>
|
|
459
|
-
* Effect.succeed(Duration.millis(Duration.toMillis(output) * 0.25))
|
|
346
|
+
* const schedule = Schedule.recurs(1).pipe(
|
|
347
|
+
* Schedule.addDelay(() => Effect.succeed("25 millis"))
|
|
460
348
|
* )
|
|
461
|
-
*
|
|
462
|
-
*
|
|
463
|
-
* yield*
|
|
464
|
-
*
|
|
465
|
-
* delayedSchedule.pipe(
|
|
466
|
-
* Schedule.tap(({ output: delay }) =>
|
|
467
|
-
* Console.log(`Base delay: ${delay}`)
|
|
468
|
-
* )
|
|
469
|
-
* )
|
|
470
|
-
* )
|
|
471
|
-
* })
|
|
472
|
-
*
|
|
473
|
-
* // Add adaptive delay based on execution count
|
|
474
|
-
* const adaptiveSchedule = Schedule.addDelay(
|
|
475
|
-
* Schedule.recurs(6),
|
|
476
|
-
* ({ output: executionCount }) =>
|
|
477
|
-
* // Increase delay as execution count grows
|
|
478
|
-
* Effect.succeed(Duration.millis(executionCount * 200))
|
|
479
|
-
* )
|
|
480
|
-
*
|
|
481
|
-
* const adaptiveProgram = Effect.gen(function*() {
|
|
482
|
-
* yield* Effect.repeat(
|
|
483
|
-
* Effect.gen(function*() {
|
|
484
|
-
* yield* Console.log("Adaptive delay task")
|
|
485
|
-
* return "adaptive"
|
|
486
|
-
* }),
|
|
487
|
-
* adaptiveSchedule.pipe(
|
|
488
|
-
* Schedule.tap(({ output: count }) =>
|
|
489
|
-
* Console.log(`Execution ${count + 1} with adaptive delay`)
|
|
490
|
-
* )
|
|
491
|
-
* )
|
|
492
|
-
* )
|
|
493
|
-
* })
|
|
494
|
-
*
|
|
495
|
-
* // Add effectful delay computation from deterministic service data
|
|
496
|
-
* const loadByExecution = [1, 3, 2, 4] as const
|
|
497
|
-
*
|
|
498
|
-
* const dynamicSchedule = Schedule.addDelay(
|
|
499
|
-
* Schedule.spaced("1 second").pipe(Schedule.upTo({ times: 4 })),
|
|
500
|
-
* ({ output: executionNumber }) => {
|
|
501
|
-
* const load = loadByExecution[executionNumber] ?? 1
|
|
502
|
-
* return Effect.succeed(Duration.millis(load * 100))
|
|
503
|
-
* }
|
|
504
|
-
* )
|
|
505
|
-
*
|
|
506
|
-
* const dynamicProgram = Effect.gen(function*() {
|
|
507
|
-
* yield* Effect.repeat(
|
|
508
|
-
* Effect.gen(function*() {
|
|
509
|
-
* yield* Console.log("Dynamic delay task")
|
|
510
|
-
* return "dynamic"
|
|
511
|
-
* }),
|
|
512
|
-
* dynamicSchedule
|
|
513
|
-
* )
|
|
349
|
+
* const program = Effect.gen(function*() {
|
|
350
|
+
* const step = yield* Schedule.toStep(schedule)
|
|
351
|
+
* const [, delay] = yield* step(0, undefined)
|
|
352
|
+
* return delay
|
|
514
353
|
* })
|
|
515
354
|
*
|
|
516
|
-
*
|
|
517
|
-
* const progressiveRetrySchedule = Schedule.addDelay(
|
|
518
|
-
* Schedule.exponential("50 millis").pipe(Schedule.upTo({ times: 4 })),
|
|
519
|
-
* () => Effect.succeed(Duration.millis(100)) // Fixed additional delay
|
|
520
|
-
* )
|
|
521
|
-
*
|
|
522
|
-
* const retryProgram = Effect.gen(function*() {
|
|
523
|
-
* let attempt = 0
|
|
524
|
-
*
|
|
525
|
-
* const result = yield* Effect.retry(
|
|
526
|
-
* Effect.gen(function*() {
|
|
527
|
-
* attempt++
|
|
528
|
-
* if (attempt < 5) {
|
|
529
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
530
|
-
* }
|
|
531
|
-
* return `Success on attempt ${attempt}`
|
|
532
|
-
* }),
|
|
533
|
-
* progressiveRetrySchedule
|
|
534
|
-
* )
|
|
535
|
-
*
|
|
536
|
-
* yield* Console.log(`Final result: ${result}`)
|
|
537
|
-
* })
|
|
355
|
+
* await Effect.runPromise(program) // => Duration.millis(25)
|
|
538
356
|
* ```
|
|
539
357
|
*
|
|
540
358
|
* @category delays & timeouts
|
|
@@ -547,94 +365,19 @@ export declare const addDelay: {
|
|
|
547
365
|
*
|
|
548
366
|
* **Example** (Adding extra delay to a schedule)
|
|
549
367
|
*
|
|
550
|
-
* ```ts
|
|
551
|
-
* import {
|
|
552
|
-
*
|
|
553
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
368
|
+
* ```ts import.meta.vitest
|
|
369
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
554
370
|
*
|
|
555
|
-
*
|
|
556
|
-
*
|
|
557
|
-
* Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 5 })),
|
|
558
|
-
* ({ output }) =>
|
|
559
|
-
* Effect.succeed(Duration.millis(Duration.toMillis(output) * 0.25))
|
|
371
|
+
* const schedule = Schedule.recurs(1).pipe(
|
|
372
|
+
* Schedule.addDelay(() => Effect.succeed("25 millis"))
|
|
560
373
|
* )
|
|
561
|
-
*
|
|
562
|
-
*
|
|
563
|
-
* yield*
|
|
564
|
-
*
|
|
565
|
-
* delayedSchedule.pipe(
|
|
566
|
-
* Schedule.tap(({ output: delay }) =>
|
|
567
|
-
* Console.log(`Base delay: ${delay}`)
|
|
568
|
-
* )
|
|
569
|
-
* )
|
|
570
|
-
* )
|
|
571
|
-
* })
|
|
572
|
-
*
|
|
573
|
-
* // Add adaptive delay based on execution count
|
|
574
|
-
* const adaptiveSchedule = Schedule.addDelay(
|
|
575
|
-
* Schedule.recurs(6),
|
|
576
|
-
* ({ output: executionCount }) =>
|
|
577
|
-
* // Increase delay as execution count grows
|
|
578
|
-
* Effect.succeed(Duration.millis(executionCount * 200))
|
|
579
|
-
* )
|
|
580
|
-
*
|
|
581
|
-
* const adaptiveProgram = Effect.gen(function*() {
|
|
582
|
-
* yield* Effect.repeat(
|
|
583
|
-
* Effect.gen(function*() {
|
|
584
|
-
* yield* Console.log("Adaptive delay task")
|
|
585
|
-
* return "adaptive"
|
|
586
|
-
* }),
|
|
587
|
-
* adaptiveSchedule.pipe(
|
|
588
|
-
* Schedule.tap(({ output: count }) =>
|
|
589
|
-
* Console.log(`Execution ${count + 1} with adaptive delay`)
|
|
590
|
-
* )
|
|
591
|
-
* )
|
|
592
|
-
* )
|
|
593
|
-
* })
|
|
594
|
-
*
|
|
595
|
-
* // Add effectful delay computation from deterministic service data
|
|
596
|
-
* const loadByExecution = [1, 3, 2, 4] as const
|
|
597
|
-
*
|
|
598
|
-
* const dynamicSchedule = Schedule.addDelay(
|
|
599
|
-
* Schedule.spaced("1 second").pipe(Schedule.upTo({ times: 4 })),
|
|
600
|
-
* ({ output: executionNumber }) => {
|
|
601
|
-
* const load = loadByExecution[executionNumber] ?? 1
|
|
602
|
-
* return Effect.succeed(Duration.millis(load * 100))
|
|
603
|
-
* }
|
|
604
|
-
* )
|
|
605
|
-
*
|
|
606
|
-
* const dynamicProgram = Effect.gen(function*() {
|
|
607
|
-
* yield* Effect.repeat(
|
|
608
|
-
* Effect.gen(function*() {
|
|
609
|
-
* yield* Console.log("Dynamic delay task")
|
|
610
|
-
* return "dynamic"
|
|
611
|
-
* }),
|
|
612
|
-
* dynamicSchedule
|
|
613
|
-
* )
|
|
374
|
+
* const program = Effect.gen(function*() {
|
|
375
|
+
* const step = yield* Schedule.toStep(schedule)
|
|
376
|
+
* const [, delay] = yield* step(0, undefined)
|
|
377
|
+
* return delay
|
|
614
378
|
* })
|
|
615
379
|
*
|
|
616
|
-
*
|
|
617
|
-
* const progressiveRetrySchedule = Schedule.addDelay(
|
|
618
|
-
* Schedule.exponential("50 millis").pipe(Schedule.upTo({ times: 4 })),
|
|
619
|
-
* () => Effect.succeed(Duration.millis(100)) // Fixed additional delay
|
|
620
|
-
* )
|
|
621
|
-
*
|
|
622
|
-
* const retryProgram = Effect.gen(function*() {
|
|
623
|
-
* let attempt = 0
|
|
624
|
-
*
|
|
625
|
-
* const result = yield* Effect.retry(
|
|
626
|
-
* Effect.gen(function*() {
|
|
627
|
-
* attempt++
|
|
628
|
-
* if (attempt < 5) {
|
|
629
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
630
|
-
* }
|
|
631
|
-
* return `Success on attempt ${attempt}`
|
|
632
|
-
* }),
|
|
633
|
-
* progressiveRetrySchedule
|
|
634
|
-
* )
|
|
635
|
-
*
|
|
636
|
-
* yield* Console.log(`Final result: ${result}`)
|
|
637
|
-
* })
|
|
380
|
+
* await Effect.runPromise(program) // => Duration.millis(25)
|
|
638
381
|
* ```
|
|
639
382
|
*
|
|
640
383
|
* @category delays & timeouts
|
|
@@ -648,35 +391,11 @@ export declare const addDelay: {
|
|
|
648
391
|
*
|
|
649
392
|
* **Example** (Sequencing quick and slow retries)
|
|
650
393
|
*
|
|
651
|
-
* ```ts
|
|
652
|
-
* import {
|
|
653
|
-
*
|
|
654
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
655
|
-
*
|
|
656
|
-
* // First retry 3 times quickly, then switch to slower retries
|
|
657
|
-
* const quickRetries = Schedule.exponential("100 millis").pipe(
|
|
658
|
-
* Schedule.upTo({ times: 3 })
|
|
659
|
-
* )
|
|
660
|
-
* const slowRetries = Schedule.exponential("1 second").pipe(
|
|
661
|
-
* Schedule.upTo({ times: 2 })
|
|
662
|
-
* )
|
|
663
|
-
*
|
|
664
|
-
* const combinedRetries = Schedule.andThen(quickRetries, slowRetries)
|
|
394
|
+
* ```ts import.meta.vitest
|
|
395
|
+
* import { Schedule } from "effect"
|
|
665
396
|
*
|
|
666
|
-
* const
|
|
667
|
-
*
|
|
668
|
-
* yield* Effect.retry(
|
|
669
|
-
* Effect.gen(function*() {
|
|
670
|
-
* attempt++
|
|
671
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
672
|
-
* if (attempt < 6) {
|
|
673
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Failure ${attempt}` }))
|
|
674
|
-
* }
|
|
675
|
-
* return `Success on attempt ${attempt}`
|
|
676
|
-
* }),
|
|
677
|
-
* combinedRetries
|
|
678
|
-
* )
|
|
679
|
-
* })
|
|
397
|
+
* const schedule = Schedule.andThen(Schedule.recurs(1), Schedule.recurs(2))
|
|
398
|
+
* Schedule.isSchedule(schedule) // => true
|
|
680
399
|
* ```
|
|
681
400
|
*
|
|
682
401
|
* @category sequencing
|
|
@@ -689,35 +408,11 @@ export declare const andThen: {
|
|
|
689
408
|
*
|
|
690
409
|
* **Example** (Sequencing quick and slow retries)
|
|
691
410
|
*
|
|
692
|
-
* ```ts
|
|
693
|
-
* import {
|
|
694
|
-
*
|
|
695
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
696
|
-
*
|
|
697
|
-
* // First retry 3 times quickly, then switch to slower retries
|
|
698
|
-
* const quickRetries = Schedule.exponential("100 millis").pipe(
|
|
699
|
-
* Schedule.upTo({ times: 3 })
|
|
700
|
-
* )
|
|
701
|
-
* const slowRetries = Schedule.exponential("1 second").pipe(
|
|
702
|
-
* Schedule.upTo({ times: 2 })
|
|
703
|
-
* )
|
|
411
|
+
* ```ts import.meta.vitest
|
|
412
|
+
* import { Schedule } from "effect"
|
|
704
413
|
*
|
|
705
|
-
* const
|
|
706
|
-
*
|
|
707
|
-
* const program = Effect.gen(function*() {
|
|
708
|
-
* let attempt = 0
|
|
709
|
-
* yield* Effect.retry(
|
|
710
|
-
* Effect.gen(function*() {
|
|
711
|
-
* attempt++
|
|
712
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
713
|
-
* if (attempt < 6) {
|
|
714
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Failure ${attempt}` }))
|
|
715
|
-
* }
|
|
716
|
-
* return `Success on attempt ${attempt}`
|
|
717
|
-
* }),
|
|
718
|
-
* combinedRetries
|
|
719
|
-
* )
|
|
720
|
-
* })
|
|
414
|
+
* const schedule = Schedule.andThen(Schedule.recurs(1), Schedule.recurs(2))
|
|
415
|
+
* Schedule.isSchedule(schedule) // => true
|
|
721
416
|
* ```
|
|
722
417
|
*
|
|
723
418
|
* @category sequencing
|
|
@@ -730,35 +425,11 @@ export declare const andThen: {
|
|
|
730
425
|
*
|
|
731
426
|
* **Example** (Sequencing quick and slow retries)
|
|
732
427
|
*
|
|
733
|
-
* ```ts
|
|
734
|
-
* import {
|
|
428
|
+
* ```ts import.meta.vitest
|
|
429
|
+
* import { Schedule } from "effect"
|
|
735
430
|
*
|
|
736
|
-
*
|
|
737
|
-
*
|
|
738
|
-
* // First retry 3 times quickly, then switch to slower retries
|
|
739
|
-
* const quickRetries = Schedule.exponential("100 millis").pipe(
|
|
740
|
-
* Schedule.upTo({ times: 3 })
|
|
741
|
-
* )
|
|
742
|
-
* const slowRetries = Schedule.exponential("1 second").pipe(
|
|
743
|
-
* Schedule.upTo({ times: 2 })
|
|
744
|
-
* )
|
|
745
|
-
*
|
|
746
|
-
* const combinedRetries = Schedule.andThen(quickRetries, slowRetries)
|
|
747
|
-
*
|
|
748
|
-
* const program = Effect.gen(function*() {
|
|
749
|
-
* let attempt = 0
|
|
750
|
-
* yield* Effect.retry(
|
|
751
|
-
* Effect.gen(function*() {
|
|
752
|
-
* attempt++
|
|
753
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
754
|
-
* if (attempt < 6) {
|
|
755
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Failure ${attempt}` }))
|
|
756
|
-
* }
|
|
757
|
-
* return `Success on attempt ${attempt}`
|
|
758
|
-
* }),
|
|
759
|
-
* combinedRetries
|
|
760
|
-
* )
|
|
761
|
-
* })
|
|
431
|
+
* const schedule = Schedule.andThen(Schedule.recurs(1), Schedule.recurs(2))
|
|
432
|
+
* Schedule.isSchedule(schedule) // => true
|
|
762
433
|
* ```
|
|
763
434
|
*
|
|
764
435
|
* @category sequencing
|
|
@@ -778,31 +449,11 @@ export declare const andThen: {
|
|
|
778
449
|
*
|
|
779
450
|
* **Example** (Tracking sequential schedule phases)
|
|
780
451
|
*
|
|
781
|
-
* ```ts
|
|
782
|
-
* import {
|
|
783
|
-
*
|
|
784
|
-
* // Track which phase of the schedule we're in
|
|
785
|
-
* const phaseTracker = Schedule.andThenResult(
|
|
786
|
-
* Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 2 })),
|
|
787
|
-
* Schedule.spaced("500 millis").pipe(Schedule.upTo({ times: 2 }))
|
|
788
|
-
* )
|
|
452
|
+
* ```ts import.meta.vitest
|
|
453
|
+
* import { Schedule } from "effect"
|
|
789
454
|
*
|
|
790
|
-
* const
|
|
791
|
-
*
|
|
792
|
-
* Effect.gen(function*() {
|
|
793
|
-
* yield* Console.log("Task executed")
|
|
794
|
-
* return "task-result"
|
|
795
|
-
* }),
|
|
796
|
-
* phaseTracker.pipe(
|
|
797
|
-
* Schedule.tap(({ output: result }) =>
|
|
798
|
-
* Result.match(result, {
|
|
799
|
-
* onFailure: (phase1Output) => Console.log(`Phase 1: ${phase1Output}`),
|
|
800
|
-
* onSuccess: (phase2Output) => Console.log(`Phase 2: ${phase2Output}`)
|
|
801
|
-
* })
|
|
802
|
-
* )
|
|
803
|
-
* )
|
|
804
|
-
* )
|
|
805
|
-
* })
|
|
455
|
+
* const schedule = Schedule.andThenResult(Schedule.recurs(1), Schedule.recurs(2))
|
|
456
|
+
* Schedule.isSchedule(schedule) // => true
|
|
806
457
|
* ```
|
|
807
458
|
*
|
|
808
459
|
* @category sequencing
|
|
@@ -821,31 +472,11 @@ export declare const andThenResult: {
|
|
|
821
472
|
*
|
|
822
473
|
* **Example** (Tracking sequential schedule phases)
|
|
823
474
|
*
|
|
824
|
-
* ```ts
|
|
825
|
-
* import {
|
|
475
|
+
* ```ts import.meta.vitest
|
|
476
|
+
* import { Schedule } from "effect"
|
|
826
477
|
*
|
|
827
|
-
*
|
|
828
|
-
*
|
|
829
|
-
* Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 2 })),
|
|
830
|
-
* Schedule.spaced("500 millis").pipe(Schedule.upTo({ times: 2 }))
|
|
831
|
-
* )
|
|
832
|
-
*
|
|
833
|
-
* const program = Effect.gen(function*() {
|
|
834
|
-
* yield* Effect.repeat(
|
|
835
|
-
* Effect.gen(function*() {
|
|
836
|
-
* yield* Console.log("Task executed")
|
|
837
|
-
* return "task-result"
|
|
838
|
-
* }),
|
|
839
|
-
* phaseTracker.pipe(
|
|
840
|
-
* Schedule.tap(({ output: result }) =>
|
|
841
|
-
* Result.match(result, {
|
|
842
|
-
* onFailure: (phase1Output) => Console.log(`Phase 1: ${phase1Output}`),
|
|
843
|
-
* onSuccess: (phase2Output) => Console.log(`Phase 2: ${phase2Output}`)
|
|
844
|
-
* })
|
|
845
|
-
* )
|
|
846
|
-
* )
|
|
847
|
-
* )
|
|
848
|
-
* })
|
|
478
|
+
* const schedule = Schedule.andThenResult(Schedule.recurs(1), Schedule.recurs(2))
|
|
479
|
+
* Schedule.isSchedule(schedule) // => true
|
|
849
480
|
* ```
|
|
850
481
|
*
|
|
851
482
|
* @category sequencing
|
|
@@ -864,31 +495,11 @@ export declare const andThenResult: {
|
|
|
864
495
|
*
|
|
865
496
|
* **Example** (Tracking sequential schedule phases)
|
|
866
497
|
*
|
|
867
|
-
* ```ts
|
|
868
|
-
* import {
|
|
869
|
-
*
|
|
870
|
-
* // Track which phase of the schedule we're in
|
|
871
|
-
* const phaseTracker = Schedule.andThenResult(
|
|
872
|
-
* Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 2 })),
|
|
873
|
-
* Schedule.spaced("500 millis").pipe(Schedule.upTo({ times: 2 }))
|
|
874
|
-
* )
|
|
498
|
+
* ```ts import.meta.vitest
|
|
499
|
+
* import { Schedule } from "effect"
|
|
875
500
|
*
|
|
876
|
-
* const
|
|
877
|
-
*
|
|
878
|
-
* Effect.gen(function*() {
|
|
879
|
-
* yield* Console.log("Task executed")
|
|
880
|
-
* return "task-result"
|
|
881
|
-
* }),
|
|
882
|
-
* phaseTracker.pipe(
|
|
883
|
-
* Schedule.tap(({ output: result }) =>
|
|
884
|
-
* Result.match(result, {
|
|
885
|
-
* onFailure: (phase1Output) => Console.log(`Phase 1: ${phase1Output}`),
|
|
886
|
-
* onSuccess: (phase2Output) => Console.log(`Phase 2: ${phase2Output}`)
|
|
887
|
-
* })
|
|
888
|
-
* )
|
|
889
|
-
* )
|
|
890
|
-
* )
|
|
891
|
-
* })
|
|
501
|
+
* const schedule = Schedule.andThenResult(Schedule.recurs(1), Schedule.recurs(2))
|
|
502
|
+
* Schedule.isSchedule(schedule) // => true
|
|
892
503
|
* ```
|
|
893
504
|
*
|
|
894
505
|
* @category sequencing
|
|
@@ -907,36 +518,11 @@ export declare const andThenResult: {
|
|
|
907
518
|
*
|
|
908
519
|
* **Example** (Combining retry schedules by their maximum delay)
|
|
909
520
|
*
|
|
910
|
-
* ```ts
|
|
911
|
-
* import {
|
|
912
|
-
*
|
|
913
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
914
|
-
*
|
|
915
|
-
* const retrySchedule = Schedule.max([
|
|
916
|
-
* Schedule.fixed("5 seconds"),
|
|
917
|
-
* Schedule.exponential("5 seconds"),
|
|
918
|
-
* Schedule.spaced("10 seconds")
|
|
919
|
-
* ])
|
|
521
|
+
* ```ts import.meta.vitest
|
|
522
|
+
* import { Schedule } from "effect"
|
|
920
523
|
*
|
|
921
|
-
* const
|
|
922
|
-
*
|
|
923
|
-
*
|
|
924
|
-
* yield* Effect.retry(
|
|
925
|
-
* Effect.gen(function*() {
|
|
926
|
-
* attempt++
|
|
927
|
-
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
928
|
-
* if (attempt < 3) {
|
|
929
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
930
|
-
* }
|
|
931
|
-
* return "success"
|
|
932
|
-
* }),
|
|
933
|
-
* retrySchedule.pipe(
|
|
934
|
-
* Schedule.tap(({ output: duration }) =>
|
|
935
|
-
* Console.log(`Waiting for the slowest schedule: ${duration}`)
|
|
936
|
-
* )
|
|
937
|
-
* )
|
|
938
|
-
* )
|
|
939
|
-
* })
|
|
524
|
+
* const schedule = Schedule.max([Schedule.fixed("5 seconds"), Schedule.spaced("10 seconds")])
|
|
525
|
+
* Schedule.isSchedule(schedule) // => true
|
|
940
526
|
* ```
|
|
941
527
|
*
|
|
942
528
|
* @category combining
|
|
@@ -949,126 +535,11 @@ export declare const max: <const Schedules extends NonEmptyReadonlyArray<Schedul
|
|
|
949
535
|
*
|
|
950
536
|
* **Example** (Scheduling work with cron expressions)
|
|
951
537
|
*
|
|
952
|
-
* ```ts
|
|
953
|
-
* import {
|
|
954
|
-
*
|
|
955
|
-
* class ScheduledTaskError extends Data.TaggedError("ScheduledTaskError")<{ readonly message: string }> {}
|
|
538
|
+
* ```ts import.meta.vitest
|
|
539
|
+
* import { Schedule } from "effect"
|
|
956
540
|
*
|
|
957
|
-
* // Run every minute
|
|
958
541
|
* const everyMinute = Schedule.cron("* * * * *")
|
|
959
|
-
*
|
|
960
|
-
* const minutelyProgram = Effect.gen(function*() {
|
|
961
|
-
* yield* Effect.repeat(
|
|
962
|
-
* Effect.gen(function*() {
|
|
963
|
-
* yield* Console.log("Running minutely task")
|
|
964
|
-
* return "minute"
|
|
965
|
-
* }),
|
|
966
|
-
* everyMinute.pipe(
|
|
967
|
-
* Schedule.upTo({ times: 3 }), // Run only 3 times for demo
|
|
968
|
-
* Schedule.tap(({ output: duration }) =>
|
|
969
|
-
* Console.log(`Next execution in: ${duration}`)
|
|
970
|
-
* )
|
|
971
|
-
* )
|
|
972
|
-
* )
|
|
973
|
-
* })
|
|
974
|
-
*
|
|
975
|
-
* // Run every day at 2:30 AM
|
|
976
|
-
* const dailyBackup = Schedule.cron("30 2 * * *")
|
|
977
|
-
*
|
|
978
|
-
* const backupProgram = Effect.gen(function*() {
|
|
979
|
-
* yield* Effect.repeat(
|
|
980
|
-
* Effect.gen(function*() {
|
|
981
|
-
* yield* Console.log("Running daily backup...")
|
|
982
|
-
* // Simulate backup process
|
|
983
|
-
* yield* Effect.sleep("2 seconds")
|
|
984
|
-
* yield* Console.log("Backup completed")
|
|
985
|
-
* return "backup-done"
|
|
986
|
-
* }),
|
|
987
|
-
* dailyBackup.pipe(
|
|
988
|
-
* Schedule.upTo({ times: 2 }) // Run 2 times for demo
|
|
989
|
-
* )
|
|
990
|
-
* )
|
|
991
|
-
* })
|
|
992
|
-
*
|
|
993
|
-
* // Run every Monday at 9:00 AM with timezone
|
|
994
|
-
* const weeklyReport = Schedule.cron("0 9 * * 1", "America/New_York")
|
|
995
|
-
*
|
|
996
|
-
* const reportProgram = Effect.gen(function*() {
|
|
997
|
-
* yield* Effect.repeat(
|
|
998
|
-
* Effect.gen(function*() {
|
|
999
|
-
* yield* Console.log("Generating weekly report...")
|
|
1000
|
-
* const report = {
|
|
1001
|
-
* week: 42,
|
|
1002
|
-
* status: "ready" as const
|
|
1003
|
-
* }
|
|
1004
|
-
* yield* Console.log(`Report generated: ${JSON.stringify(report)}`)
|
|
1005
|
-
* return report
|
|
1006
|
-
* }),
|
|
1007
|
-
* weeklyReport.pipe(Schedule.upTo({ times: 1 }))
|
|
1008
|
-
* )
|
|
1009
|
-
* })
|
|
1010
|
-
*
|
|
1011
|
-
* // Run every 15 minutes during business hours (9 AM - 5 PM)
|
|
1012
|
-
* const businessHoursCheck = Schedule.cron("0,15,30,45 9-17 * * 1-5")
|
|
1013
|
-
*
|
|
1014
|
-
* const businessProgram = Effect.gen(function*() {
|
|
1015
|
-
* const statuses = ["healthy", "healthy", "degraded", "healthy"] as const
|
|
1016
|
-
* let index = 0
|
|
1017
|
-
*
|
|
1018
|
-
* yield* Effect.repeat(
|
|
1019
|
-
* Effect.gen(function*() {
|
|
1020
|
-
* yield* Console.log("Business hours health check...")
|
|
1021
|
-
* const status = statuses[index++]
|
|
1022
|
-
* yield* Console.log(`System status: ${status}`)
|
|
1023
|
-
* return status
|
|
1024
|
-
* }),
|
|
1025
|
-
* businessHoursCheck.pipe(
|
|
1026
|
-
* Schedule.upTo({ times: 4 }) // Demo with 4 checks
|
|
1027
|
-
* )
|
|
1028
|
-
* )
|
|
1029
|
-
* })
|
|
1030
|
-
*
|
|
1031
|
-
* // Run on specific days of the month
|
|
1032
|
-
* const monthlyInvoice = Schedule.cron("0 10 1,15 * *") // 1st and 15th at 10 AM
|
|
1033
|
-
*
|
|
1034
|
-
* const invoiceProgram = Effect.gen(function*() {
|
|
1035
|
-
* yield* Effect.repeat(
|
|
1036
|
-
* Effect.gen(function*() {
|
|
1037
|
-
* yield* Console.log("Processing monthly invoices...")
|
|
1038
|
-
* const invoiceCount = 72
|
|
1039
|
-
* yield* Console.log(`Processed ${invoiceCount} invoices`)
|
|
1040
|
-
* return { count: invoiceCount, batch: "2024-01-a" }
|
|
1041
|
-
* }),
|
|
1042
|
-
* monthlyInvoice.pipe(Schedule.upTo({ times: 1 }))
|
|
1043
|
-
* )
|
|
1044
|
-
* })
|
|
1045
|
-
*
|
|
1046
|
-
* // Complex cron with error handling
|
|
1047
|
-
* const complexCron = Schedule.cron("0 2,4,6 * * *").pipe(
|
|
1048
|
-
* Schedule.tap(({ output: duration }) =>
|
|
1049
|
-
* Console.log(`Scheduled to run again in ${duration}`)
|
|
1050
|
-
* )
|
|
1051
|
-
* )
|
|
1052
|
-
*
|
|
1053
|
-
* const robustProgram = Effect.gen(function*() {
|
|
1054
|
-
* let attempt = 0
|
|
1055
|
-
*
|
|
1056
|
-
* yield* Effect.repeat(
|
|
1057
|
-
* Effect.gen(function*() {
|
|
1058
|
-
* attempt++
|
|
1059
|
-
* yield* Console.log("Complex scheduled task...")
|
|
1060
|
-
* if (attempt === 1) {
|
|
1061
|
-
* return yield* Effect.fail(new ScheduledTaskError({ message: "Scheduled task failed" }))
|
|
1062
|
-
* }
|
|
1063
|
-
* return "success"
|
|
1064
|
-
* }),
|
|
1065
|
-
* complexCron.pipe(Schedule.upTo({ times: 3 }))
|
|
1066
|
-
* ).pipe(
|
|
1067
|
-
* Effect.catch((error: unknown) =>
|
|
1068
|
-
* Console.log(`Cron task error: ${String(error)}`)
|
|
1069
|
-
* )
|
|
1070
|
-
* )
|
|
1071
|
-
* })
|
|
542
|
+
* Schedule.isSchedule(everyMinute) // => true
|
|
1072
543
|
* ```
|
|
1073
544
|
*
|
|
1074
545
|
* @category constructors
|
|
@@ -1081,126 +552,11 @@ export declare const cron: {
|
|
|
1081
552
|
*
|
|
1082
553
|
* **Example** (Scheduling work with cron expressions)
|
|
1083
554
|
*
|
|
1084
|
-
* ```ts
|
|
1085
|
-
* import {
|
|
1086
|
-
*
|
|
1087
|
-
* class ScheduledTaskError extends Data.TaggedError("ScheduledTaskError")<{ readonly message: string }> {}
|
|
555
|
+
* ```ts import.meta.vitest
|
|
556
|
+
* import { Schedule } from "effect"
|
|
1088
557
|
*
|
|
1089
|
-
* // Run every minute
|
|
1090
558
|
* const everyMinute = Schedule.cron("* * * * *")
|
|
1091
|
-
*
|
|
1092
|
-
* const minutelyProgram = Effect.gen(function*() {
|
|
1093
|
-
* yield* Effect.repeat(
|
|
1094
|
-
* Effect.gen(function*() {
|
|
1095
|
-
* yield* Console.log("Running minutely task")
|
|
1096
|
-
* return "minute"
|
|
1097
|
-
* }),
|
|
1098
|
-
* everyMinute.pipe(
|
|
1099
|
-
* Schedule.upTo({ times: 3 }), // Run only 3 times for demo
|
|
1100
|
-
* Schedule.tap(({ output: duration }) =>
|
|
1101
|
-
* Console.log(`Next execution in: ${duration}`)
|
|
1102
|
-
* )
|
|
1103
|
-
* )
|
|
1104
|
-
* )
|
|
1105
|
-
* })
|
|
1106
|
-
*
|
|
1107
|
-
* // Run every day at 2:30 AM
|
|
1108
|
-
* const dailyBackup = Schedule.cron("30 2 * * *")
|
|
1109
|
-
*
|
|
1110
|
-
* const backupProgram = Effect.gen(function*() {
|
|
1111
|
-
* yield* Effect.repeat(
|
|
1112
|
-
* Effect.gen(function*() {
|
|
1113
|
-
* yield* Console.log("Running daily backup...")
|
|
1114
|
-
* // Simulate backup process
|
|
1115
|
-
* yield* Effect.sleep("2 seconds")
|
|
1116
|
-
* yield* Console.log("Backup completed")
|
|
1117
|
-
* return "backup-done"
|
|
1118
|
-
* }),
|
|
1119
|
-
* dailyBackup.pipe(
|
|
1120
|
-
* Schedule.upTo({ times: 2 }) // Run 2 times for demo
|
|
1121
|
-
* )
|
|
1122
|
-
* )
|
|
1123
|
-
* })
|
|
1124
|
-
*
|
|
1125
|
-
* // Run every Monday at 9:00 AM with timezone
|
|
1126
|
-
* const weeklyReport = Schedule.cron("0 9 * * 1", "America/New_York")
|
|
1127
|
-
*
|
|
1128
|
-
* const reportProgram = Effect.gen(function*() {
|
|
1129
|
-
* yield* Effect.repeat(
|
|
1130
|
-
* Effect.gen(function*() {
|
|
1131
|
-
* yield* Console.log("Generating weekly report...")
|
|
1132
|
-
* const report = {
|
|
1133
|
-
* week: 42,
|
|
1134
|
-
* status: "ready" as const
|
|
1135
|
-
* }
|
|
1136
|
-
* yield* Console.log(`Report generated: ${JSON.stringify(report)}`)
|
|
1137
|
-
* return report
|
|
1138
|
-
* }),
|
|
1139
|
-
* weeklyReport.pipe(Schedule.upTo({ times: 1 }))
|
|
1140
|
-
* )
|
|
1141
|
-
* })
|
|
1142
|
-
*
|
|
1143
|
-
* // Run every 15 minutes during business hours (9 AM - 5 PM)
|
|
1144
|
-
* const businessHoursCheck = Schedule.cron("0,15,30,45 9-17 * * 1-5")
|
|
1145
|
-
*
|
|
1146
|
-
* const businessProgram = Effect.gen(function*() {
|
|
1147
|
-
* const statuses = ["healthy", "healthy", "degraded", "healthy"] as const
|
|
1148
|
-
* let index = 0
|
|
1149
|
-
*
|
|
1150
|
-
* yield* Effect.repeat(
|
|
1151
|
-
* Effect.gen(function*() {
|
|
1152
|
-
* yield* Console.log("Business hours health check...")
|
|
1153
|
-
* const status = statuses[index++]
|
|
1154
|
-
* yield* Console.log(`System status: ${status}`)
|
|
1155
|
-
* return status
|
|
1156
|
-
* }),
|
|
1157
|
-
* businessHoursCheck.pipe(
|
|
1158
|
-
* Schedule.upTo({ times: 4 }) // Demo with 4 checks
|
|
1159
|
-
* )
|
|
1160
|
-
* )
|
|
1161
|
-
* })
|
|
1162
|
-
*
|
|
1163
|
-
* // Run on specific days of the month
|
|
1164
|
-
* const monthlyInvoice = Schedule.cron("0 10 1,15 * *") // 1st and 15th at 10 AM
|
|
1165
|
-
*
|
|
1166
|
-
* const invoiceProgram = Effect.gen(function*() {
|
|
1167
|
-
* yield* Effect.repeat(
|
|
1168
|
-
* Effect.gen(function*() {
|
|
1169
|
-
* yield* Console.log("Processing monthly invoices...")
|
|
1170
|
-
* const invoiceCount = 72
|
|
1171
|
-
* yield* Console.log(`Processed ${invoiceCount} invoices`)
|
|
1172
|
-
* return { count: invoiceCount, batch: "2024-01-a" }
|
|
1173
|
-
* }),
|
|
1174
|
-
* monthlyInvoice.pipe(Schedule.upTo({ times: 1 }))
|
|
1175
|
-
* )
|
|
1176
|
-
* })
|
|
1177
|
-
*
|
|
1178
|
-
* // Complex cron with error handling
|
|
1179
|
-
* const complexCron = Schedule.cron("0 2,4,6 * * *").pipe(
|
|
1180
|
-
* Schedule.tap(({ output: duration }) =>
|
|
1181
|
-
* Console.log(`Scheduled to run again in ${duration}`)
|
|
1182
|
-
* )
|
|
1183
|
-
* )
|
|
1184
|
-
*
|
|
1185
|
-
* const robustProgram = Effect.gen(function*() {
|
|
1186
|
-
* let attempt = 0
|
|
1187
|
-
*
|
|
1188
|
-
* yield* Effect.repeat(
|
|
1189
|
-
* Effect.gen(function*() {
|
|
1190
|
-
* attempt++
|
|
1191
|
-
* yield* Console.log("Complex scheduled task...")
|
|
1192
|
-
* if (attempt === 1) {
|
|
1193
|
-
* return yield* Effect.fail(new ScheduledTaskError({ message: "Scheduled task failed" }))
|
|
1194
|
-
* }
|
|
1195
|
-
* return "success"
|
|
1196
|
-
* }),
|
|
1197
|
-
* complexCron.pipe(Schedule.upTo({ times: 3 }))
|
|
1198
|
-
* ).pipe(
|
|
1199
|
-
* Effect.catch((error: unknown) =>
|
|
1200
|
-
* Console.log(`Cron task error: ${String(error)}`)
|
|
1201
|
-
* )
|
|
1202
|
-
* )
|
|
1203
|
-
* })
|
|
559
|
+
* Schedule.isSchedule(everyMinute) // => true
|
|
1204
560
|
* ```
|
|
1205
561
|
*
|
|
1206
562
|
* @category constructors
|
|
@@ -1213,126 +569,11 @@ export declare const cron: {
|
|
|
1213
569
|
*
|
|
1214
570
|
* **Example** (Scheduling work with cron expressions)
|
|
1215
571
|
*
|
|
1216
|
-
* ```ts
|
|
1217
|
-
* import {
|
|
1218
|
-
*
|
|
1219
|
-
* class ScheduledTaskError extends Data.TaggedError("ScheduledTaskError")<{ readonly message: string }> {}
|
|
572
|
+
* ```ts import.meta.vitest
|
|
573
|
+
* import { Schedule } from "effect"
|
|
1220
574
|
*
|
|
1221
|
-
* // Run every minute
|
|
1222
575
|
* const everyMinute = Schedule.cron("* * * * *")
|
|
1223
|
-
*
|
|
1224
|
-
* const minutelyProgram = Effect.gen(function*() {
|
|
1225
|
-
* yield* Effect.repeat(
|
|
1226
|
-
* Effect.gen(function*() {
|
|
1227
|
-
* yield* Console.log("Running minutely task")
|
|
1228
|
-
* return "minute"
|
|
1229
|
-
* }),
|
|
1230
|
-
* everyMinute.pipe(
|
|
1231
|
-
* Schedule.upTo({ times: 3 }), // Run only 3 times for demo
|
|
1232
|
-
* Schedule.tap(({ output: duration }) =>
|
|
1233
|
-
* Console.log(`Next execution in: ${duration}`)
|
|
1234
|
-
* )
|
|
1235
|
-
* )
|
|
1236
|
-
* )
|
|
1237
|
-
* })
|
|
1238
|
-
*
|
|
1239
|
-
* // Run every day at 2:30 AM
|
|
1240
|
-
* const dailyBackup = Schedule.cron("30 2 * * *")
|
|
1241
|
-
*
|
|
1242
|
-
* const backupProgram = Effect.gen(function*() {
|
|
1243
|
-
* yield* Effect.repeat(
|
|
1244
|
-
* Effect.gen(function*() {
|
|
1245
|
-
* yield* Console.log("Running daily backup...")
|
|
1246
|
-
* // Simulate backup process
|
|
1247
|
-
* yield* Effect.sleep("2 seconds")
|
|
1248
|
-
* yield* Console.log("Backup completed")
|
|
1249
|
-
* return "backup-done"
|
|
1250
|
-
* }),
|
|
1251
|
-
* dailyBackup.pipe(
|
|
1252
|
-
* Schedule.upTo({ times: 2 }) // Run 2 times for demo
|
|
1253
|
-
* )
|
|
1254
|
-
* )
|
|
1255
|
-
* })
|
|
1256
|
-
*
|
|
1257
|
-
* // Run every Monday at 9:00 AM with timezone
|
|
1258
|
-
* const weeklyReport = Schedule.cron("0 9 * * 1", "America/New_York")
|
|
1259
|
-
*
|
|
1260
|
-
* const reportProgram = Effect.gen(function*() {
|
|
1261
|
-
* yield* Effect.repeat(
|
|
1262
|
-
* Effect.gen(function*() {
|
|
1263
|
-
* yield* Console.log("Generating weekly report...")
|
|
1264
|
-
* const report = {
|
|
1265
|
-
* week: 42,
|
|
1266
|
-
* status: "ready" as const
|
|
1267
|
-
* }
|
|
1268
|
-
* yield* Console.log(`Report generated: ${JSON.stringify(report)}`)
|
|
1269
|
-
* return report
|
|
1270
|
-
* }),
|
|
1271
|
-
* weeklyReport.pipe(Schedule.upTo({ times: 1 }))
|
|
1272
|
-
* )
|
|
1273
|
-
* })
|
|
1274
|
-
*
|
|
1275
|
-
* // Run every 15 minutes during business hours (9 AM - 5 PM)
|
|
1276
|
-
* const businessHoursCheck = Schedule.cron("0,15,30,45 9-17 * * 1-5")
|
|
1277
|
-
*
|
|
1278
|
-
* const businessProgram = Effect.gen(function*() {
|
|
1279
|
-
* const statuses = ["healthy", "healthy", "degraded", "healthy"] as const
|
|
1280
|
-
* let index = 0
|
|
1281
|
-
*
|
|
1282
|
-
* yield* Effect.repeat(
|
|
1283
|
-
* Effect.gen(function*() {
|
|
1284
|
-
* yield* Console.log("Business hours health check...")
|
|
1285
|
-
* const status = statuses[index++]
|
|
1286
|
-
* yield* Console.log(`System status: ${status}`)
|
|
1287
|
-
* return status
|
|
1288
|
-
* }),
|
|
1289
|
-
* businessHoursCheck.pipe(
|
|
1290
|
-
* Schedule.upTo({ times: 4 }) // Demo with 4 checks
|
|
1291
|
-
* )
|
|
1292
|
-
* )
|
|
1293
|
-
* })
|
|
1294
|
-
*
|
|
1295
|
-
* // Run on specific days of the month
|
|
1296
|
-
* const monthlyInvoice = Schedule.cron("0 10 1,15 * *") // 1st and 15th at 10 AM
|
|
1297
|
-
*
|
|
1298
|
-
* const invoiceProgram = Effect.gen(function*() {
|
|
1299
|
-
* yield* Effect.repeat(
|
|
1300
|
-
* Effect.gen(function*() {
|
|
1301
|
-
* yield* Console.log("Processing monthly invoices...")
|
|
1302
|
-
* const invoiceCount = 72
|
|
1303
|
-
* yield* Console.log(`Processed ${invoiceCount} invoices`)
|
|
1304
|
-
* return { count: invoiceCount, batch: "2024-01-a" }
|
|
1305
|
-
* }),
|
|
1306
|
-
* monthlyInvoice.pipe(Schedule.upTo({ times: 1 }))
|
|
1307
|
-
* )
|
|
1308
|
-
* })
|
|
1309
|
-
*
|
|
1310
|
-
* // Complex cron with error handling
|
|
1311
|
-
* const complexCron = Schedule.cron("0 2,4,6 * * *").pipe(
|
|
1312
|
-
* Schedule.tap(({ output: duration }) =>
|
|
1313
|
-
* Console.log(`Scheduled to run again in ${duration}`)
|
|
1314
|
-
* )
|
|
1315
|
-
* )
|
|
1316
|
-
*
|
|
1317
|
-
* const robustProgram = Effect.gen(function*() {
|
|
1318
|
-
* let attempt = 0
|
|
1319
|
-
*
|
|
1320
|
-
* yield* Effect.repeat(
|
|
1321
|
-
* Effect.gen(function*() {
|
|
1322
|
-
* attempt++
|
|
1323
|
-
* yield* Console.log("Complex scheduled task...")
|
|
1324
|
-
* if (attempt === 1) {
|
|
1325
|
-
* return yield* Effect.fail(new ScheduledTaskError({ message: "Scheduled task failed" }))
|
|
1326
|
-
* }
|
|
1327
|
-
* return "success"
|
|
1328
|
-
* }),
|
|
1329
|
-
* complexCron.pipe(Schedule.upTo({ times: 3 }))
|
|
1330
|
-
* ).pipe(
|
|
1331
|
-
* Effect.catch((error: unknown) =>
|
|
1332
|
-
* Console.log(`Cron task error: ${String(error)}`)
|
|
1333
|
-
* )
|
|
1334
|
-
* )
|
|
1335
|
-
* })
|
|
576
|
+
* Schedule.isSchedule(everyMinute) // => true
|
|
1336
577
|
* ```
|
|
1337
578
|
*
|
|
1338
579
|
* @category constructors
|
|
@@ -1354,13 +595,10 @@ export declare const cron: {
|
|
|
1354
595
|
*
|
|
1355
596
|
* **Example** (Recurring once after a duration)
|
|
1356
597
|
*
|
|
1357
|
-
* ```ts
|
|
1358
|
-
* import {
|
|
598
|
+
* ```ts import.meta.vitest
|
|
599
|
+
* import { Schedule } from "effect"
|
|
1359
600
|
*
|
|
1360
|
-
*
|
|
1361
|
-
* Console.log("runs again after one second"),
|
|
1362
|
-
* Schedule.duration("1 second")
|
|
1363
|
-
* )
|
|
601
|
+
* Schedule.isSchedule(Schedule.duration("1 second")) // => true
|
|
1364
602
|
* ```
|
|
1365
603
|
*
|
|
1366
604
|
* @see {@link during} for recurring until a duration has elapsed
|
|
@@ -1379,82 +617,10 @@ export declare const duration: (durationInput: Duration.Input) => Schedule<Durat
|
|
|
1379
617
|
*
|
|
1380
618
|
* **Example** (Repeating work during a duration)
|
|
1381
619
|
*
|
|
1382
|
-
* ```ts
|
|
1383
|
-
* import {
|
|
1384
|
-
*
|
|
1385
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1386
|
-
*
|
|
1387
|
-
* // Run a task for exactly 5 seconds, regardless of how many iterations
|
|
1388
|
-
* const fiveSecondSchedule = Schedule.during("5 seconds")
|
|
1389
|
-
*
|
|
1390
|
-
* const timedProgram = Effect.gen(function*() {
|
|
1391
|
-
* yield* Effect.repeat(
|
|
1392
|
-
* Effect.gen(function*() {
|
|
1393
|
-
* yield* Console.log("Task executed inside the time window")
|
|
1394
|
-
* yield* Effect.sleep("500 millis") // Each task takes 500ms
|
|
1395
|
-
* return "task done"
|
|
1396
|
-
* }),
|
|
1397
|
-
* fiveSecondSchedule.pipe(
|
|
1398
|
-
* Schedule.tap(({ output: elapsedDuration }) =>
|
|
1399
|
-
* Console.log(`Total elapsed: ${elapsedDuration}`)
|
|
1400
|
-
* )
|
|
1401
|
-
* )
|
|
1402
|
-
* )
|
|
1403
|
-
*
|
|
1404
|
-
* yield* Console.log("Time limit reached!")
|
|
1405
|
-
* })
|
|
1406
|
-
*
|
|
1407
|
-
* // Combine with other schedules for time-bounded execution
|
|
1408
|
-
* const timeAndCountLimited = Schedule.max([
|
|
1409
|
-
* Schedule.spaced("1 second"),
|
|
1410
|
-
* Schedule.during("10 seconds"), // Stop after 10 seconds OR
|
|
1411
|
-
* Schedule.recurs(15) // 15 attempts, whichever comes first
|
|
1412
|
-
* ])
|
|
1413
|
-
*
|
|
1414
|
-
* // Burst execution within time window
|
|
1415
|
-
* const burstWindow = Schedule.during("3 seconds")
|
|
1416
|
-
*
|
|
1417
|
-
* const burstProgram = Effect.gen(function*() {
|
|
1418
|
-
* yield* Console.log("Starting burst execution...")
|
|
1419
|
-
*
|
|
1420
|
-
* yield* Effect.repeat(
|
|
1421
|
-
* Effect.gen(function*() {
|
|
1422
|
-
* yield* Console.log("Burst task")
|
|
1423
|
-
* return "burst"
|
|
1424
|
-
* }),
|
|
1425
|
-
* burstWindow
|
|
1426
|
-
* )
|
|
1427
|
-
*
|
|
1428
|
-
* yield* Console.log("Burst window completed")
|
|
1429
|
-
* })
|
|
1430
|
-
*
|
|
1431
|
-
* // Timed retry window - retry for up to 30 seconds
|
|
1432
|
-
* const timedRetry = Schedule.max([
|
|
1433
|
-
* Schedule.exponential("200 millis"),
|
|
1434
|
-
* Schedule.during("30 seconds")
|
|
1435
|
-
* ])
|
|
1436
|
-
*
|
|
1437
|
-
* const retryProgram = Effect.gen(function*() {
|
|
1438
|
-
* let attempt = 0
|
|
1439
|
-
*
|
|
1440
|
-
* const result = yield* Effect.retry(
|
|
1441
|
-
* Effect.gen(function*() {
|
|
1442
|
-
* attempt++
|
|
1443
|
-
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
1444
|
-
*
|
|
1445
|
-
* if (attempt < 4) {
|
|
1446
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1447
|
-
* }
|
|
1448
|
-
*
|
|
1449
|
-
* return `Success on attempt ${attempt}`
|
|
1450
|
-
* }),
|
|
1451
|
-
* timedRetry
|
|
1452
|
-
* )
|
|
620
|
+
* ```ts import.meta.vitest
|
|
621
|
+
* import { Schedule } from "effect"
|
|
1453
622
|
*
|
|
1454
|
-
*
|
|
1455
|
-
* }).pipe(
|
|
1456
|
-
* Effect.catch((error: unknown) => Console.log(`Timed out: ${String(error)}`))
|
|
1457
|
-
* )
|
|
623
|
+
* Schedule.isSchedule(Schedule.during("5 seconds")) // => true
|
|
1458
624
|
* ```
|
|
1459
625
|
*
|
|
1460
626
|
* @see {@link duration} for one delayed recurrence
|
|
@@ -1474,36 +640,11 @@ export declare const during: (duration: Duration.Input) => Schedule<Duration.Dur
|
|
|
1474
640
|
*
|
|
1475
641
|
* **Example** (Combining retry schedules by their minimum delay)
|
|
1476
642
|
*
|
|
1477
|
-
* ```ts
|
|
1478
|
-
* import {
|
|
1479
|
-
*
|
|
1480
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1481
|
-
*
|
|
1482
|
-
* const retrySchedule = Schedule.min([
|
|
1483
|
-
* Schedule.fixed("5 seconds"),
|
|
1484
|
-
* Schedule.exponential("5 seconds"),
|
|
1485
|
-
* Schedule.spaced("10 seconds")
|
|
1486
|
-
* ])
|
|
643
|
+
* ```ts import.meta.vitest
|
|
644
|
+
* import { Schedule } from "effect"
|
|
1487
645
|
*
|
|
1488
|
-
* const
|
|
1489
|
-
*
|
|
1490
|
-
*
|
|
1491
|
-
* yield* Effect.retry(
|
|
1492
|
-
* Effect.gen(function*() {
|
|
1493
|
-
* attempt++
|
|
1494
|
-
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
1495
|
-
* if (attempt < 3) {
|
|
1496
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1497
|
-
* }
|
|
1498
|
-
* return "success"
|
|
1499
|
-
* }),
|
|
1500
|
-
* retrySchedule.pipe(
|
|
1501
|
-
* Schedule.tap(({ output: duration }) =>
|
|
1502
|
-
* Console.log(`Waiting for the fastest schedule: ${duration}`)
|
|
1503
|
-
* )
|
|
1504
|
-
* )
|
|
1505
|
-
* )
|
|
1506
|
-
* })
|
|
646
|
+
* const schedule = Schedule.min([Schedule.fixed("5 seconds"), Schedule.spaced("10 seconds")])
|
|
647
|
+
* Schedule.isSchedule(schedule) // => true
|
|
1507
648
|
* ```
|
|
1508
649
|
*
|
|
1509
650
|
* @category combining
|
|
@@ -1517,44 +658,15 @@ export declare const min: <const Schedules extends NonEmptyReadonlyArray<Schedul
|
|
|
1517
658
|
*
|
|
1518
659
|
* **Example** (Retrying with exponential backoff)
|
|
1519
660
|
*
|
|
1520
|
-
* ```ts
|
|
1521
|
-
* import {
|
|
1522
|
-
*
|
|
1523
|
-
* class RetryFailure extends Data.TaggedError("RetryFailure")<{ readonly message: string }> {}
|
|
1524
|
-
*
|
|
1525
|
-
* // Basic exponential backoff with default factor of 2
|
|
1526
|
-
* const basicExponential = Schedule.exponential("100 millis")
|
|
1527
|
-
* // Delays: 100ms, 200ms, 400ms, 800ms, 1600ms, ...
|
|
1528
|
-
*
|
|
1529
|
-
* // Custom exponential backoff with factor 1.5
|
|
1530
|
-
* const gentleExponential = Schedule.exponential("200 millis", 1.5)
|
|
1531
|
-
* // Delays: 200ms, 300ms, 450ms, 675ms, 1012ms, ...
|
|
1532
|
-
*
|
|
1533
|
-
* // Retry with exponential backoff (limited to 5 attempts)
|
|
1534
|
-
* const retryPolicy = Schedule.max([
|
|
1535
|
-
* Schedule.exponential("50 millis"),
|
|
1536
|
-
* Schedule.recurs(5)
|
|
1537
|
-
* ])
|
|
661
|
+
* ```ts import.meta.vitest
|
|
662
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
1538
663
|
*
|
|
1539
664
|
* const program = Effect.gen(function*() {
|
|
1540
|
-
*
|
|
1541
|
-
*
|
|
1542
|
-
* const result = yield* Effect.retry(
|
|
1543
|
-
* Effect.gen(function*() {
|
|
1544
|
-
* attempt++
|
|
1545
|
-
* if (attempt < 4) {
|
|
1546
|
-
* yield* Console.log(`Attempt ${attempt} failed, retrying...`)
|
|
1547
|
-
* return yield* Effect.fail(new RetryFailure({ message: `Failure ${attempt}` }))
|
|
1548
|
-
* }
|
|
1549
|
-
* return `Success on attempt ${attempt}`
|
|
1550
|
-
* }),
|
|
1551
|
-
* retryPolicy
|
|
1552
|
-
* )
|
|
1553
|
-
*
|
|
1554
|
-
* yield* Console.log(`Final result: ${result}`)
|
|
665
|
+
* const step = yield* Schedule.toStep(Schedule.exponential("100 millis"))
|
|
666
|
+
* return yield* step(0, undefined)
|
|
1555
667
|
* })
|
|
1556
668
|
*
|
|
1557
|
-
*
|
|
669
|
+
* await Effect.runPromise(program) // => [Duration.millis(100), Duration.millis(100)]
|
|
1558
670
|
* ```
|
|
1559
671
|
*
|
|
1560
672
|
* @category constructors
|
|
@@ -1568,63 +680,15 @@ export declare const exponential: (base: Duration.Input, factor?: number) => Sch
|
|
|
1568
680
|
*
|
|
1569
681
|
* **Example** (Retrying with Fibonacci backoff)
|
|
1570
682
|
*
|
|
1571
|
-
* ```ts
|
|
1572
|
-
* import {
|
|
1573
|
-
*
|
|
1574
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1575
|
-
*
|
|
1576
|
-
* // Basic Fibonacci schedule starting with 100ms
|
|
1577
|
-
* const fibSchedule = Schedule.fibonacci("100 millis")
|
|
1578
|
-
* // Delays: 100ms, 100ms, 200ms, 300ms, 500ms, 800ms, 1300ms, ...
|
|
1579
|
-
*
|
|
1580
|
-
* // Retry with Fibonacci backoff for gradual increase
|
|
1581
|
-
* const retryWithFib = Effect.gen(function*() {
|
|
1582
|
-
* let attempt = 0
|
|
1583
|
-
*
|
|
1584
|
-
* const result = yield* Effect.retry(
|
|
1585
|
-
* Effect.gen(function*() {
|
|
1586
|
-
* attempt++
|
|
1587
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
1588
|
-
*
|
|
1589
|
-
* if (attempt < 5) {
|
|
1590
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1591
|
-
* }
|
|
683
|
+
* ```ts import.meta.vitest
|
|
684
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
1592
685
|
*
|
|
1593
|
-
*
|
|
1594
|
-
*
|
|
1595
|
-
*
|
|
1596
|
-
* Schedule.fibonacci("50 millis"),
|
|
1597
|
-
* Schedule.recurs(6) // Maximum 6 retries
|
|
1598
|
-
* ]).pipe(
|
|
1599
|
-
* Schedule.tap(({ output: delay }) => Console.log(`Next retry in ${delay}`))
|
|
1600
|
-
* )
|
|
1601
|
-
* )
|
|
1602
|
-
*
|
|
1603
|
-
* yield* Console.log(`Final result: ${result}`)
|
|
686
|
+
* const program = Effect.gen(function*() {
|
|
687
|
+
* const step = yield* Schedule.toStep(Schedule.fibonacci("100 millis"))
|
|
688
|
+
* return yield* step(0, undefined)
|
|
1604
689
|
* })
|
|
1605
690
|
*
|
|
1606
|
-
*
|
|
1607
|
-
* const adaptiveHeartbeat = Effect.gen(function*() {
|
|
1608
|
-
* yield* Console.log("Heartbeat")
|
|
1609
|
-
* return "pulse"
|
|
1610
|
-
* }).pipe(
|
|
1611
|
-
* Effect.repeat(
|
|
1612
|
-
* Schedule.fibonacci("200 millis").pipe(
|
|
1613
|
-
* Schedule.upTo({ times: 8 }) // First 8 heartbeats
|
|
1614
|
-
* )
|
|
1615
|
-
* )
|
|
1616
|
-
* )
|
|
1617
|
-
*
|
|
1618
|
-
* // Fibonacci vs exponential comparison
|
|
1619
|
-
* const compareSchedules = Effect.gen(function*() {
|
|
1620
|
-
* yield* Console.log("=== Fibonacci Delays ===")
|
|
1621
|
-
* // 100ms, 100ms, 200ms, 300ms, 500ms, 800ms
|
|
1622
|
-
*
|
|
1623
|
-
* yield* Console.log("=== Exponential Delays ===")
|
|
1624
|
-
* // 100ms, 200ms, 400ms, 800ms, 1600ms, 3200ms
|
|
1625
|
-
*
|
|
1626
|
-
* // Fibonacci grows more slowly than exponential
|
|
1627
|
-
* })
|
|
691
|
+
* await Effect.runPromise(program) // => [Duration.millis(100), Duration.millis(100)]
|
|
1628
692
|
* ```
|
|
1629
693
|
*
|
|
1630
694
|
* @category constructors
|
|
@@ -1651,50 +715,15 @@ export declare const fibonacci: (one: Duration.Input) => Schedule<Duration.Durat
|
|
|
1651
715
|
*
|
|
1652
716
|
* **Example** (Repeating on fixed intervals)
|
|
1653
717
|
*
|
|
1654
|
-
* ```ts
|
|
1655
|
-
* import {
|
|
1656
|
-
*
|
|
1657
|
-
* // Fixed interval schedule - recurs on a one-second cadence
|
|
1658
|
-
* const everySecond = Schedule.fixed("1 second")
|
|
1659
|
-
*
|
|
1660
|
-
* // Health check that runs at fixed intervals
|
|
1661
|
-
* const healthCheck = Effect.gen(function*() {
|
|
1662
|
-
* yield* Console.log("Health check")
|
|
1663
|
-
* yield* Effect.sleep("200 millis") // simulate health check work
|
|
1664
|
-
* return "healthy"
|
|
1665
|
-
* }).pipe(
|
|
1666
|
-
* Effect.repeat(Schedule.fixed("2 seconds").pipe(Schedule.upTo({ times: 5 })))
|
|
1667
|
-
* )
|
|
1668
|
-
*
|
|
1669
|
-
* // Difference between fixed and spaced:
|
|
1670
|
-
* // - fixed: maintains constant rate regardless of action duration
|
|
1671
|
-
* // - spaced: waits for the duration AFTER each action completes
|
|
1672
|
-
*
|
|
1673
|
-
* const longRunningTask = Effect.gen(function*() {
|
|
1674
|
-
* yield* Console.log("Task started")
|
|
1675
|
-
* yield* Effect.sleep("1.5 seconds") // Longer than interval
|
|
1676
|
-
* yield* Console.log("Task completed")
|
|
1677
|
-
* return "done"
|
|
1678
|
-
* })
|
|
1679
|
-
*
|
|
1680
|
-
* // Fixed schedule: if task takes 1.5s but interval is 1s,
|
|
1681
|
-
* // next execution happens immediately (no pile-up)
|
|
1682
|
-
* const fixedSchedule = longRunningTask.pipe(
|
|
1683
|
-
* Effect.repeat(Schedule.fixed("1 second").pipe(Schedule.upTo({ times: 3 })))
|
|
1684
|
-
* )
|
|
1685
|
-
*
|
|
1686
|
-
* // Comparing with spaced (waits 1s AFTER each task)
|
|
1687
|
-
* const spacedSchedule = longRunningTask.pipe(
|
|
1688
|
-
* Effect.repeat(Schedule.spaced("1 second").pipe(Schedule.upTo({ times: 3 })))
|
|
1689
|
-
* )
|
|
718
|
+
* ```ts import.meta.vitest
|
|
719
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
1690
720
|
*
|
|
1691
721
|
* const program = Effect.gen(function*() {
|
|
1692
|
-
* yield*
|
|
1693
|
-
* yield*
|
|
1694
|
-
*
|
|
1695
|
-
* yield* Console.log("=== Spaced Schedule Demo ===")
|
|
1696
|
-
* yield* spacedSchedule
|
|
722
|
+
* const step = yield* Schedule.toStep(Schedule.fixed("1 second"))
|
|
723
|
+
* return yield* step(0, undefined)
|
|
1697
724
|
* })
|
|
725
|
+
*
|
|
726
|
+
* await Effect.runPromise(program) // => [0, Duration.seconds(1)]
|
|
1698
727
|
* ```
|
|
1699
728
|
*
|
|
1700
729
|
* @see {@link spaced} for delaying after each action completes
|
|
@@ -1715,59 +744,19 @@ export declare const fixed: (interval: Duration.Input) => Schedule<number>;
|
|
|
1715
744
|
*
|
|
1716
745
|
* **Example** (Mapping schedule outputs)
|
|
1717
746
|
*
|
|
1718
|
-
* ```ts
|
|
1719
|
-
* import {
|
|
747
|
+
* ```ts import.meta.vitest
|
|
748
|
+
* import { Effect, Schedule } from "effect"
|
|
1720
749
|
*
|
|
1721
|
-
* // Transform schedule output from number to string
|
|
1722
750
|
* const countSchedule = Schedule.recurs(5).pipe(
|
|
1723
751
|
* Schedule.map(({ output: count }) => Effect.succeed(`Execution #${count + 1}`))
|
|
1724
752
|
* )
|
|
1725
|
-
*
|
|
1726
|
-
* // Map schedule delays to human-readable format
|
|
1727
|
-
* const readableDelays = Schedule.exponential("100 millis").pipe(
|
|
1728
|
-
* Schedule.map(({ output: delay }) => Effect.succeed(`Next retry in ${delay}`))
|
|
1729
|
-
* )
|
|
1730
|
-
*
|
|
1731
|
-
* // Transform numeric output to structured data
|
|
1732
|
-
* const structuredSchedule = Schedule.spaced("1 second").pipe(
|
|
1733
|
-
* Schedule.map(({ output: recurrence }) => Effect.succeed({
|
|
1734
|
-
* iteration: recurrence + 1,
|
|
1735
|
-
* phase: recurrence < 5 ? "warmup" as const : "steady" as const
|
|
1736
|
-
* }))
|
|
1737
|
-
* )
|
|
1738
|
-
*
|
|
1739
753
|
* const program = Effect.gen(function*() {
|
|
1740
|
-
* const
|
|
1741
|
-
*
|
|
1742
|
-
*
|
|
1743
|
-
* Schedule.upTo({ times: 8 }),
|
|
1744
|
-
* Schedule.tap(({ output: info }) =>
|
|
1745
|
-
* Console.log(
|
|
1746
|
-
* `${info.phase} phase - iteration ${info.iteration}`
|
|
1747
|
-
* )
|
|
1748
|
-
* )
|
|
1749
|
-
* )
|
|
1750
|
-
* )
|
|
1751
|
-
*
|
|
1752
|
-
* yield* Console.log(`Completed iterations`)
|
|
754
|
+
* const step = yield* Schedule.toStep(countSchedule)
|
|
755
|
+
* const [output] = yield* step(0, undefined)
|
|
756
|
+
* return output
|
|
1753
757
|
* })
|
|
1754
758
|
*
|
|
1755
|
-
* //
|
|
1756
|
-
* const effectfulMap = Schedule.fixed("2 seconds").pipe(
|
|
1757
|
-
* Schedule.map(({ output: count }) =>
|
|
1758
|
-
* Effect.gen(function*() {
|
|
1759
|
-
* yield* Console.log(`Processing count: ${count}`)
|
|
1760
|
-
* return count * 10
|
|
1761
|
-
* })
|
|
1762
|
-
* )
|
|
1763
|
-
* )
|
|
1764
|
-
*
|
|
1765
|
-
* // Use timing metadata in the mapped output
|
|
1766
|
-
* const complexSchedule = Schedule.fibonacci("100 millis").pipe(
|
|
1767
|
-
* Schedule.map(({ output: delay, attempt }) =>
|
|
1768
|
-
* Effect.succeed(`Attempt ${attempt} delay: ${delay}`)
|
|
1769
|
-
* )
|
|
1770
|
-
* )
|
|
759
|
+
* await Effect.runPromise(program) // => "Execution #1"
|
|
1771
760
|
* ```
|
|
1772
761
|
*
|
|
1773
762
|
* @category mapping
|
|
@@ -1786,59 +775,19 @@ export declare const map: {
|
|
|
1786
775
|
*
|
|
1787
776
|
* **Example** (Mapping schedule outputs)
|
|
1788
777
|
*
|
|
1789
|
-
* ```ts
|
|
1790
|
-
* import {
|
|
778
|
+
* ```ts import.meta.vitest
|
|
779
|
+
* import { Effect, Schedule } from "effect"
|
|
1791
780
|
*
|
|
1792
|
-
* // Transform schedule output from number to string
|
|
1793
781
|
* const countSchedule = Schedule.recurs(5).pipe(
|
|
1794
782
|
* Schedule.map(({ output: count }) => Effect.succeed(`Execution #${count + 1}`))
|
|
1795
783
|
* )
|
|
1796
|
-
*
|
|
1797
|
-
* // Map schedule delays to human-readable format
|
|
1798
|
-
* const readableDelays = Schedule.exponential("100 millis").pipe(
|
|
1799
|
-
* Schedule.map(({ output: delay }) => Effect.succeed(`Next retry in ${delay}`))
|
|
1800
|
-
* )
|
|
1801
|
-
*
|
|
1802
|
-
* // Transform numeric output to structured data
|
|
1803
|
-
* const structuredSchedule = Schedule.spaced("1 second").pipe(
|
|
1804
|
-
* Schedule.map(({ output: recurrence }) => Effect.succeed({
|
|
1805
|
-
* iteration: recurrence + 1,
|
|
1806
|
-
* phase: recurrence < 5 ? "warmup" as const : "steady" as const
|
|
1807
|
-
* }))
|
|
1808
|
-
* )
|
|
1809
|
-
*
|
|
1810
784
|
* const program = Effect.gen(function*() {
|
|
1811
|
-
* const
|
|
1812
|
-
*
|
|
1813
|
-
*
|
|
1814
|
-
* Schedule.upTo({ times: 8 }),
|
|
1815
|
-
* Schedule.tap(({ output: info }) =>
|
|
1816
|
-
* Console.log(
|
|
1817
|
-
* `${info.phase} phase - iteration ${info.iteration}`
|
|
1818
|
-
* )
|
|
1819
|
-
* )
|
|
1820
|
-
* )
|
|
1821
|
-
* )
|
|
1822
|
-
*
|
|
1823
|
-
* yield* Console.log(`Completed iterations`)
|
|
785
|
+
* const step = yield* Schedule.toStep(countSchedule)
|
|
786
|
+
* const [output] = yield* step(0, undefined)
|
|
787
|
+
* return output
|
|
1824
788
|
* })
|
|
1825
789
|
*
|
|
1826
|
-
* //
|
|
1827
|
-
* const effectfulMap = Schedule.fixed("2 seconds").pipe(
|
|
1828
|
-
* Schedule.map(({ output: count }) =>
|
|
1829
|
-
* Effect.gen(function*() {
|
|
1830
|
-
* yield* Console.log(`Processing count: ${count}`)
|
|
1831
|
-
* return count * 10
|
|
1832
|
-
* })
|
|
1833
|
-
* )
|
|
1834
|
-
* )
|
|
1835
|
-
*
|
|
1836
|
-
* // Use timing metadata in the mapped output
|
|
1837
|
-
* const complexSchedule = Schedule.fibonacci("100 millis").pipe(
|
|
1838
|
-
* Schedule.map(({ output: delay, attempt }) =>
|
|
1839
|
-
* Effect.succeed(`Attempt ${attempt} delay: ${delay}`)
|
|
1840
|
-
* )
|
|
1841
|
-
* )
|
|
790
|
+
* await Effect.runPromise(program) // => "Execution #1"
|
|
1842
791
|
* ```
|
|
1843
792
|
*
|
|
1844
793
|
* @category mapping
|
|
@@ -1857,59 +806,19 @@ export declare const map: {
|
|
|
1857
806
|
*
|
|
1858
807
|
* **Example** (Mapping schedule outputs)
|
|
1859
808
|
*
|
|
1860
|
-
* ```ts
|
|
1861
|
-
* import {
|
|
809
|
+
* ```ts import.meta.vitest
|
|
810
|
+
* import { Effect, Schedule } from "effect"
|
|
1862
811
|
*
|
|
1863
|
-
* // Transform schedule output from number to string
|
|
1864
812
|
* const countSchedule = Schedule.recurs(5).pipe(
|
|
1865
813
|
* Schedule.map(({ output: count }) => Effect.succeed(`Execution #${count + 1}`))
|
|
1866
814
|
* )
|
|
1867
|
-
*
|
|
1868
|
-
* // Map schedule delays to human-readable format
|
|
1869
|
-
* const readableDelays = Schedule.exponential("100 millis").pipe(
|
|
1870
|
-
* Schedule.map(({ output: delay }) => Effect.succeed(`Next retry in ${delay}`))
|
|
1871
|
-
* )
|
|
1872
|
-
*
|
|
1873
|
-
* // Transform numeric output to structured data
|
|
1874
|
-
* const structuredSchedule = Schedule.spaced("1 second").pipe(
|
|
1875
|
-
* Schedule.map(({ output: recurrence }) => Effect.succeed({
|
|
1876
|
-
* iteration: recurrence + 1,
|
|
1877
|
-
* phase: recurrence < 5 ? "warmup" as const : "steady" as const
|
|
1878
|
-
* }))
|
|
1879
|
-
* )
|
|
1880
|
-
*
|
|
1881
815
|
* const program = Effect.gen(function*() {
|
|
1882
|
-
* const
|
|
1883
|
-
*
|
|
1884
|
-
*
|
|
1885
|
-
* Schedule.upTo({ times: 8 }),
|
|
1886
|
-
* Schedule.tap(({ output: info }) =>
|
|
1887
|
-
* Console.log(
|
|
1888
|
-
* `${info.phase} phase - iteration ${info.iteration}`
|
|
1889
|
-
* )
|
|
1890
|
-
* )
|
|
1891
|
-
* )
|
|
1892
|
-
* )
|
|
1893
|
-
*
|
|
1894
|
-
* yield* Console.log(`Completed iterations`)
|
|
816
|
+
* const step = yield* Schedule.toStep(countSchedule)
|
|
817
|
+
* const [output] = yield* step(0, undefined)
|
|
818
|
+
* return output
|
|
1895
819
|
* })
|
|
1896
820
|
*
|
|
1897
|
-
* //
|
|
1898
|
-
* const effectfulMap = Schedule.fixed("2 seconds").pipe(
|
|
1899
|
-
* Schedule.map(({ output: count }) =>
|
|
1900
|
-
* Effect.gen(function*() {
|
|
1901
|
-
* yield* Console.log(`Processing count: ${count}`)
|
|
1902
|
-
* return count * 10
|
|
1903
|
-
* })
|
|
1904
|
-
* )
|
|
1905
|
-
* )
|
|
1906
|
-
*
|
|
1907
|
-
* // Use timing metadata in the mapped output
|
|
1908
|
-
* const complexSchedule = Schedule.fibonacci("100 millis").pipe(
|
|
1909
|
-
* Schedule.map(({ output: delay, attempt }) =>
|
|
1910
|
-
* Effect.succeed(`Attempt ${attempt} delay: ${delay}`)
|
|
1911
|
-
* )
|
|
1912
|
-
* )
|
|
821
|
+
* await Effect.runPromise(program) // => "Execution #1"
|
|
1913
822
|
* ```
|
|
1914
823
|
*
|
|
1915
824
|
* @category mapping
|
|
@@ -1923,28 +832,19 @@ export declare const map: {
|
|
|
1923
832
|
*
|
|
1924
833
|
* **Example** (Modifying delays from schedule metadata)
|
|
1925
834
|
*
|
|
1926
|
-
* ```ts
|
|
1927
|
-
* import {
|
|
835
|
+
* ```ts import.meta.vitest
|
|
836
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
1928
837
|
*
|
|
1929
|
-
*
|
|
1930
|
-
*
|
|
1931
|
-
* Schedule.modifyDelay(({ output, duration }) => {
|
|
1932
|
-
* // Double the delay if we're seeing high iteration counts
|
|
1933
|
-
* return Effect.succeed(output > 5 ? Duration.times(duration, 2) : duration)
|
|
1934
|
-
* })
|
|
838
|
+
* const schedule = Schedule.spaced("10 millis").pipe(
|
|
839
|
+
* Schedule.modifyDelay(({ duration }) => Effect.succeed(Duration.times(duration, 2)))
|
|
1935
840
|
* )
|
|
1936
|
-
*
|
|
1937
841
|
* const program = Effect.gen(function*() {
|
|
1938
|
-
*
|
|
1939
|
-
* yield*
|
|
1940
|
-
*
|
|
1941
|
-
* counter++
|
|
1942
|
-
* yield* Console.log(`Attempt ${counter}`)
|
|
1943
|
-
* return counter
|
|
1944
|
-
* }),
|
|
1945
|
-
* adaptiveDelay.pipe(Schedule.upTo({ times: 8 }))
|
|
1946
|
-
* )
|
|
842
|
+
* const step = yield* Schedule.toStep(schedule)
|
|
843
|
+
* const [, delay] = yield* step(0, undefined)
|
|
844
|
+
* return delay
|
|
1947
845
|
* })
|
|
846
|
+
*
|
|
847
|
+
* await Effect.runPromise(program) // => Duration.millis(20)
|
|
1948
848
|
* ```
|
|
1949
849
|
*
|
|
1950
850
|
* @category delays & timeouts
|
|
@@ -1957,28 +857,19 @@ export declare const modifyDelay: {
|
|
|
1957
857
|
*
|
|
1958
858
|
* **Example** (Modifying delays from schedule metadata)
|
|
1959
859
|
*
|
|
1960
|
-
* ```ts
|
|
1961
|
-
* import {
|
|
860
|
+
* ```ts import.meta.vitest
|
|
861
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
1962
862
|
*
|
|
1963
|
-
*
|
|
1964
|
-
*
|
|
1965
|
-
* Schedule.modifyDelay(({ output, duration }) => {
|
|
1966
|
-
* // Double the delay if we're seeing high iteration counts
|
|
1967
|
-
* return Effect.succeed(output > 5 ? Duration.times(duration, 2) : duration)
|
|
1968
|
-
* })
|
|
863
|
+
* const schedule = Schedule.spaced("10 millis").pipe(
|
|
864
|
+
* Schedule.modifyDelay(({ duration }) => Effect.succeed(Duration.times(duration, 2)))
|
|
1969
865
|
* )
|
|
1970
|
-
*
|
|
1971
866
|
* const program = Effect.gen(function*() {
|
|
1972
|
-
*
|
|
1973
|
-
* yield*
|
|
1974
|
-
*
|
|
1975
|
-
* counter++
|
|
1976
|
-
* yield* Console.log(`Attempt ${counter}`)
|
|
1977
|
-
* return counter
|
|
1978
|
-
* }),
|
|
1979
|
-
* adaptiveDelay.pipe(Schedule.upTo({ times: 8 }))
|
|
1980
|
-
* )
|
|
867
|
+
* const step = yield* Schedule.toStep(schedule)
|
|
868
|
+
* const [, delay] = yield* step(0, undefined)
|
|
869
|
+
* return delay
|
|
1981
870
|
* })
|
|
871
|
+
*
|
|
872
|
+
* await Effect.runPromise(program) // => Duration.millis(20)
|
|
1982
873
|
* ```
|
|
1983
874
|
*
|
|
1984
875
|
* @category delays & timeouts
|
|
@@ -1991,28 +882,19 @@ export declare const modifyDelay: {
|
|
|
1991
882
|
*
|
|
1992
883
|
* **Example** (Modifying delays from schedule metadata)
|
|
1993
884
|
*
|
|
1994
|
-
* ```ts
|
|
1995
|
-
* import {
|
|
885
|
+
* ```ts import.meta.vitest
|
|
886
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
1996
887
|
*
|
|
1997
|
-
*
|
|
1998
|
-
*
|
|
1999
|
-
* Schedule.modifyDelay(({ output, duration }) => {
|
|
2000
|
-
* // Double the delay if we're seeing high iteration counts
|
|
2001
|
-
* return Effect.succeed(output > 5 ? Duration.times(duration, 2) : duration)
|
|
2002
|
-
* })
|
|
888
|
+
* const schedule = Schedule.spaced("10 millis").pipe(
|
|
889
|
+
* Schedule.modifyDelay(({ duration }) => Effect.succeed(Duration.times(duration, 2)))
|
|
2003
890
|
* )
|
|
2004
|
-
*
|
|
2005
891
|
* const program = Effect.gen(function*() {
|
|
2006
|
-
*
|
|
2007
|
-
* yield*
|
|
2008
|
-
*
|
|
2009
|
-
* counter++
|
|
2010
|
-
* yield* Console.log(`Attempt ${counter}`)
|
|
2011
|
-
* return counter
|
|
2012
|
-
* }),
|
|
2013
|
-
* adaptiveDelay.pipe(Schedule.upTo({ times: 8 }))
|
|
2014
|
-
* )
|
|
892
|
+
* const step = yield* Schedule.toStep(schedule)
|
|
893
|
+
* const [, delay] = yield* step(0, undefined)
|
|
894
|
+
* return delay
|
|
2015
895
|
* })
|
|
896
|
+
*
|
|
897
|
+
* await Effect.runPromise(program) // => Duration.millis(20)
|
|
2016
898
|
* ```
|
|
2017
899
|
*
|
|
2018
900
|
* @category delays & timeouts
|
|
@@ -2043,25 +925,19 @@ export declare const jittered: <Output, Input, Error, Env>(self: Schedule<Output
|
|
|
2043
925
|
*
|
|
2044
926
|
* **Example** (Passing inputs through as outputs)
|
|
2045
927
|
*
|
|
2046
|
-
* ```ts
|
|
2047
|
-
* import {
|
|
928
|
+
* ```ts import.meta.vitest
|
|
929
|
+
* import { Effect, Schedule } from "effect"
|
|
2048
930
|
*
|
|
2049
|
-
* // Create a schedule that outputs the inputs instead of original outputs
|
|
2050
931
|
* const inputSchedule = Schedule.passthrough(
|
|
2051
932
|
* Schedule.exponential("100 millis").pipe(Schedule.upTo({ times: 3 }))
|
|
2052
933
|
* )
|
|
2053
|
-
*
|
|
2054
934
|
* const program = Effect.gen(function*() {
|
|
2055
|
-
*
|
|
2056
|
-
* yield*
|
|
2057
|
-
*
|
|
2058
|
-
* counter++
|
|
2059
|
-
* yield* Console.log(`Task ${counter} executed`)
|
|
2060
|
-
* return `result-${counter}`
|
|
2061
|
-
* }),
|
|
2062
|
-
* inputSchedule
|
|
2063
|
-
* )
|
|
935
|
+
* const step = yield* Schedule.toStep(inputSchedule)
|
|
936
|
+
* const [output] = yield* step(0, "input")
|
|
937
|
+
* return output
|
|
2064
938
|
* })
|
|
939
|
+
*
|
|
940
|
+
* await Effect.runPromise(program) // => "input"
|
|
2065
941
|
* ```
|
|
2066
942
|
*
|
|
2067
943
|
* @category mapping
|
|
@@ -2084,53 +960,17 @@ export declare const passthrough: <Output, Input, Error, Env>(self: Schedule<Out
|
|
|
2084
960
|
*
|
|
2085
961
|
* **Example** (Limiting recurrences)
|
|
2086
962
|
*
|
|
2087
|
-
* ```ts
|
|
2088
|
-
* import {
|
|
2089
|
-
*
|
|
2090
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
2091
|
-
*
|
|
2092
|
-
* // Basic recurs - retry at most 3 times
|
|
2093
|
-
* const maxThreeAttempts = Schedule.recurs(3)
|
|
2094
|
-
*
|
|
2095
|
-
* // Retry a failing operation at most 5 times
|
|
2096
|
-
* const program = Effect.gen(function*() {
|
|
2097
|
-
* let attempt = 0
|
|
2098
|
-
*
|
|
2099
|
-
* const result = yield* Effect.retry(
|
|
2100
|
-
* Effect.gen(function*() {
|
|
2101
|
-
* attempt++
|
|
2102
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
2103
|
-
*
|
|
2104
|
-
* if (attempt < 4) {
|
|
2105
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
2106
|
-
* }
|
|
2107
|
-
*
|
|
2108
|
-
* return `Success on attempt ${attempt}`
|
|
2109
|
-
* }),
|
|
2110
|
-
* Schedule.recurs(5) // Will retry up to 5 times
|
|
2111
|
-
* )
|
|
2112
|
-
*
|
|
2113
|
-
* yield* Console.log(`Final result: ${result}`)
|
|
2114
|
-
* })
|
|
963
|
+
* ```ts import.meta.vitest
|
|
964
|
+
* import { Effect, Schedule } from "effect"
|
|
965
|
+
* import { TestClock } from "effect/testing"
|
|
2115
966
|
*
|
|
2116
|
-
*
|
|
2117
|
-
* const
|
|
2118
|
-
* Schedule.
|
|
2119
|
-
*
|
|
2120
|
-
* ])
|
|
2121
|
-
*
|
|
2122
|
-
* // Allow ten recurrences after the initial run
|
|
2123
|
-
* const tenRecurrences = Effect.gen(function*() {
|
|
2124
|
-
* yield* Console.log("Executing task...")
|
|
2125
|
-
* return "completed"
|
|
2126
|
-
* }).pipe(
|
|
2127
|
-
* Effect.repeat(Schedule.recurs(10))
|
|
967
|
+
* const executions: Array<number> = []
|
|
968
|
+
* const program = Effect.sync(() => executions.push(executions.length + 1)).pipe(
|
|
969
|
+
* Effect.repeat(Schedule.recurs(3)),
|
|
970
|
+
* Effect.as(executions)
|
|
2128
971
|
* )
|
|
2129
972
|
*
|
|
2130
|
-
*
|
|
2131
|
-
* const countingSchedule = Schedule.recurs(3).pipe(
|
|
2132
|
-
* Schedule.tap(({ output: count }) => Console.log(`Execution #${count + 1}`))
|
|
2133
|
-
* )
|
|
973
|
+
* await Effect.runPromise(Effect.provide(program, TestClock.layer())) // => [1, 2, 3, 4]
|
|
2134
974
|
* ```
|
|
2135
975
|
*
|
|
2136
976
|
* @see {@link upTo} for limiting an existing schedule
|
|
@@ -2149,46 +989,15 @@ export declare const recurs: (times: number) => Schedule<number>;
|
|
|
2149
989
|
*
|
|
2150
990
|
* **Example** (Repeating with fixed spacing)
|
|
2151
991
|
*
|
|
2152
|
-
* ```ts
|
|
2153
|
-
* import {
|
|
2154
|
-
*
|
|
2155
|
-
* // Basic spaced schedule - runs every 2 seconds
|
|
2156
|
-
* const everyTwoSeconds = Schedule.spaced("2 seconds")
|
|
2157
|
-
*
|
|
2158
|
-
* // Heartbeat that runs indefinitely with fixed spacing
|
|
2159
|
-
* const heartbeat = Effect.gen(function*() {
|
|
2160
|
-
* yield* Console.log("Heartbeat")
|
|
2161
|
-
* }).pipe(
|
|
2162
|
-
* Effect.repeat(everyTwoSeconds)
|
|
2163
|
-
* )
|
|
2164
|
-
*
|
|
2165
|
-
* // Limited repeat - run only 5 times with 1-second spacing
|
|
2166
|
-
* const limitedTask = Effect.gen(function*() {
|
|
2167
|
-
* yield* Console.log("Executing scheduled task...")
|
|
2168
|
-
* yield* Effect.sleep("500 millis") // simulate work
|
|
2169
|
-
* return "Task completed"
|
|
2170
|
-
* }).pipe(
|
|
2171
|
-
* Effect.repeat(
|
|
2172
|
-
* Schedule.spaced("1 second").pipe(Schedule.upTo({ times: 5 }))
|
|
2173
|
-
* )
|
|
2174
|
-
* )
|
|
2175
|
-
*
|
|
2176
|
-
* // Simple spaced schedule with limited repetitions
|
|
2177
|
-
* const limitedSpaced = Schedule.max([
|
|
2178
|
-
* Schedule.spaced("100 millis"),
|
|
2179
|
-
* Schedule.recurs(5) // at most 5 times
|
|
2180
|
-
* ])
|
|
992
|
+
* ```ts import.meta.vitest
|
|
993
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
2181
994
|
*
|
|
2182
995
|
* const program = Effect.gen(function*() {
|
|
2183
|
-
* yield*
|
|
2184
|
-
*
|
|
2185
|
-
* yield* Effect.repeat(
|
|
2186
|
-
* Effect.succeed("work item"),
|
|
2187
|
-
* limitedSpaced
|
|
2188
|
-
* )
|
|
2189
|
-
*
|
|
2190
|
-
* yield* Console.log("Completed executions")
|
|
996
|
+
* const step = yield* Schedule.toStep(Schedule.spaced("2 seconds"))
|
|
997
|
+
* return yield* step(0, undefined)
|
|
2191
998
|
* })
|
|
999
|
+
*
|
|
1000
|
+
* await Effect.runPromise(program) // => [0, Duration.seconds(2)]
|
|
2192
1001
|
* ```
|
|
2193
1002
|
*
|
|
2194
1003
|
* @see {@link fixed} for recurrence aligned to a regular cadence
|
|
@@ -2209,23 +1018,20 @@ export declare const spaced: (duration: Duration.Input) => Schedule<number>;
|
|
|
2209
1018
|
*
|
|
2210
1019
|
* **Example** (Tapping schedule metadata)
|
|
2211
1020
|
*
|
|
2212
|
-
* ```ts
|
|
2213
|
-
* import {
|
|
2214
|
-
*
|
|
2215
|
-
* const monitoredSchedule = Schedule.exponential("100 millis").pipe(
|
|
2216
|
-
* Schedule.upTo({ times: 5 }),
|
|
2217
|
-
* Schedule.tap((metadata) =>
|
|
2218
|
-
* Console.log(
|
|
2219
|
-
* `Attempt ${metadata.attempt} produced ${metadata.output} ` +
|
|
2220
|
-
* `after ${metadata.elapsed}ms; next delay is ${metadata.duration}`
|
|
2221
|
-
* )
|
|
2222
|
-
* )
|
|
2223
|
-
* )
|
|
1021
|
+
* ```ts import.meta.vitest
|
|
1022
|
+
* import { Effect, Schedule } from "effect"
|
|
2224
1023
|
*
|
|
2225
|
-
* const
|
|
2226
|
-
*
|
|
2227
|
-
*
|
|
1024
|
+
* const attempts: Array<number> = []
|
|
1025
|
+
* const monitoredSchedule = Schedule.recurs(2).pipe(
|
|
1026
|
+
* Schedule.tap((metadata) => Effect.sync(() => attempts.push(metadata.attempt)))
|
|
2228
1027
|
* )
|
|
1028
|
+
* const program = Effect.gen(function*() {
|
|
1029
|
+
* const step = yield* Schedule.toStep(monitoredSchedule)
|
|
1030
|
+
* const [output] = yield* step(0, undefined)
|
|
1031
|
+
* return { attempts, output }
|
|
1032
|
+
* })
|
|
1033
|
+
*
|
|
1034
|
+
* await Effect.runPromise(program) // => { attempts: [1], output: 0 }
|
|
2229
1035
|
* ```
|
|
2230
1036
|
*
|
|
2231
1037
|
* @category sequencing
|
|
@@ -2244,23 +1050,20 @@ export declare const tap: {
|
|
|
2244
1050
|
*
|
|
2245
1051
|
* **Example** (Tapping schedule metadata)
|
|
2246
1052
|
*
|
|
2247
|
-
* ```ts
|
|
2248
|
-
* import {
|
|
2249
|
-
*
|
|
2250
|
-
* const monitoredSchedule = Schedule.exponential("100 millis").pipe(
|
|
2251
|
-
* Schedule.upTo({ times: 5 }),
|
|
2252
|
-
* Schedule.tap((metadata) =>
|
|
2253
|
-
* Console.log(
|
|
2254
|
-
* `Attempt ${metadata.attempt} produced ${metadata.output} ` +
|
|
2255
|
-
* `after ${metadata.elapsed}ms; next delay is ${metadata.duration}`
|
|
2256
|
-
* )
|
|
2257
|
-
* )
|
|
2258
|
-
* )
|
|
1053
|
+
* ```ts import.meta.vitest
|
|
1054
|
+
* import { Effect, Schedule } from "effect"
|
|
2259
1055
|
*
|
|
2260
|
-
* const
|
|
2261
|
-
*
|
|
2262
|
-
*
|
|
1056
|
+
* const attempts: Array<number> = []
|
|
1057
|
+
* const monitoredSchedule = Schedule.recurs(2).pipe(
|
|
1058
|
+
* Schedule.tap((metadata) => Effect.sync(() => attempts.push(metadata.attempt)))
|
|
2263
1059
|
* )
|
|
1060
|
+
* const program = Effect.gen(function*() {
|
|
1061
|
+
* const step = yield* Schedule.toStep(monitoredSchedule)
|
|
1062
|
+
* const [output] = yield* step(0, undefined)
|
|
1063
|
+
* return { attempts, output }
|
|
1064
|
+
* })
|
|
1065
|
+
*
|
|
1066
|
+
* await Effect.runPromise(program) // => { attempts: [1], output: 0 }
|
|
2264
1067
|
* ```
|
|
2265
1068
|
*
|
|
2266
1069
|
* @category sequencing
|
|
@@ -2279,23 +1082,20 @@ export declare const tap: {
|
|
|
2279
1082
|
*
|
|
2280
1083
|
* **Example** (Tapping schedule metadata)
|
|
2281
1084
|
*
|
|
2282
|
-
* ```ts
|
|
2283
|
-
* import {
|
|
2284
|
-
*
|
|
2285
|
-
* const monitoredSchedule = Schedule.exponential("100 millis").pipe(
|
|
2286
|
-
* Schedule.upTo({ times: 5 }),
|
|
2287
|
-
* Schedule.tap((metadata) =>
|
|
2288
|
-
* Console.log(
|
|
2289
|
-
* `Attempt ${metadata.attempt} produced ${metadata.output} ` +
|
|
2290
|
-
* `after ${metadata.elapsed}ms; next delay is ${metadata.duration}`
|
|
2291
|
-
* )
|
|
2292
|
-
* )
|
|
2293
|
-
* )
|
|
1085
|
+
* ```ts import.meta.vitest
|
|
1086
|
+
* import { Effect, Schedule } from "effect"
|
|
2294
1087
|
*
|
|
2295
|
-
* const
|
|
2296
|
-
*
|
|
2297
|
-
*
|
|
1088
|
+
* const attempts: Array<number> = []
|
|
1089
|
+
* const monitoredSchedule = Schedule.recurs(2).pipe(
|
|
1090
|
+
* Schedule.tap((metadata) => Effect.sync(() => attempts.push(metadata.attempt)))
|
|
2298
1091
|
* )
|
|
1092
|
+
* const program = Effect.gen(function*() {
|
|
1093
|
+
* const step = yield* Schedule.toStep(monitoredSchedule)
|
|
1094
|
+
* const [output] = yield* step(0, undefined)
|
|
1095
|
+
* return { attempts, output }
|
|
1096
|
+
* })
|
|
1097
|
+
*
|
|
1098
|
+
* await Effect.runPromise(program) // => { attempts: [1], output: 0 }
|
|
2299
1099
|
* ```
|
|
2300
1100
|
*
|
|
2301
1101
|
* @category sequencing
|
|
@@ -2326,64 +1126,18 @@ export declare const tap: {
|
|
|
2326
1126
|
*
|
|
2327
1127
|
* **Example** (Limiting by duration and recurrence count)
|
|
2328
1128
|
*
|
|
2329
|
-
* ```ts
|
|
2330
|
-
* import {
|
|
2331
|
-
*
|
|
2332
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
2333
|
-
*
|
|
2334
|
-
* // Limit an infinite schedule to five recurrences
|
|
2335
|
-
* const limitedHeartbeat = Schedule.spaced("1 second").pipe(
|
|
2336
|
-
* Schedule.upTo({ times: 5 })
|
|
2337
|
-
* )
|
|
2338
|
-
*
|
|
2339
|
-
* const heartbeatProgram = Effect.gen(function*() {
|
|
2340
|
-
* yield* Effect.repeat(
|
|
2341
|
-
* Effect.gen(function*() {
|
|
2342
|
-
* yield* Console.log("Heartbeat")
|
|
2343
|
-
* return "pulse"
|
|
2344
|
-
* }),
|
|
2345
|
-
* limitedHeartbeat
|
|
2346
|
-
* )
|
|
2347
|
-
*
|
|
2348
|
-
* yield* Console.log("Heartbeat sequence completed")
|
|
2349
|
-
* })
|
|
2350
|
-
*
|
|
2351
|
-
* // Limit retry attempts by both count and elapsed time
|
|
2352
|
-
* const limitedRetry = Schedule.exponential("100 millis").pipe(
|
|
2353
|
-
* Schedule.upTo({
|
|
2354
|
-
* duration: "5 seconds",
|
|
2355
|
-
* times: 3
|
|
2356
|
-
* })
|
|
2357
|
-
* )
|
|
2358
|
-
*
|
|
2359
|
-
* const retryProgram = Effect.gen(function*() {
|
|
2360
|
-
* let attempt = 0
|
|
2361
|
-
*
|
|
2362
|
-
* const result = yield* Effect.retry(
|
|
2363
|
-
* Effect.gen(function*() {
|
|
2364
|
-
* attempt++
|
|
2365
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
2366
|
-
*
|
|
2367
|
-
* if (attempt < 5) { // Will fail more than 3 times
|
|
2368
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
2369
|
-
* }
|
|
2370
|
-
*
|
|
2371
|
-
* return `Success on attempt ${attempt}`
|
|
2372
|
-
* }),
|
|
2373
|
-
* limitedRetry
|
|
2374
|
-
* )
|
|
1129
|
+
* ```ts import.meta.vitest
|
|
1130
|
+
* import { Effect, Schedule } from "effect"
|
|
1131
|
+
* import { TestClock } from "effect/testing"
|
|
2375
1132
|
*
|
|
2376
|
-
*
|
|
2377
|
-
*
|
|
2378
|
-
*
|
|
2379
|
-
*
|
|
2380
|
-
* )
|
|
1133
|
+
* const executions: Array<number> = []
|
|
1134
|
+
* const schedule = Schedule.forever.pipe(Schedule.upTo({ times: 2 }))
|
|
1135
|
+
* const program = Effect.sync(() => executions.push(executions.length + 1)).pipe(
|
|
1136
|
+
* Effect.repeat(schedule),
|
|
1137
|
+
* Effect.as(executions)
|
|
2381
1138
|
* )
|
|
2382
1139
|
*
|
|
2383
|
-
*
|
|
2384
|
-
* const unchanged = Schedule.fixed("500 millis").pipe(
|
|
2385
|
-
* Schedule.upTo({})
|
|
2386
|
-
* )
|
|
1140
|
+
* await Effect.runPromise(Effect.provide(program, TestClock.layer())) // => [1, 2, 3]
|
|
2387
1141
|
* ```
|
|
2388
1142
|
*
|
|
2389
1143
|
* @category filtering
|
|
@@ -2413,64 +1167,18 @@ export declare const upTo: {
|
|
|
2413
1167
|
*
|
|
2414
1168
|
* **Example** (Limiting by duration and recurrence count)
|
|
2415
1169
|
*
|
|
2416
|
-
* ```ts
|
|
2417
|
-
* import {
|
|
2418
|
-
*
|
|
2419
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
2420
|
-
*
|
|
2421
|
-
* // Limit an infinite schedule to five recurrences
|
|
2422
|
-
* const limitedHeartbeat = Schedule.spaced("1 second").pipe(
|
|
2423
|
-
* Schedule.upTo({ times: 5 })
|
|
2424
|
-
* )
|
|
2425
|
-
*
|
|
2426
|
-
* const heartbeatProgram = Effect.gen(function*() {
|
|
2427
|
-
* yield* Effect.repeat(
|
|
2428
|
-
* Effect.gen(function*() {
|
|
2429
|
-
* yield* Console.log("Heartbeat")
|
|
2430
|
-
* return "pulse"
|
|
2431
|
-
* }),
|
|
2432
|
-
* limitedHeartbeat
|
|
2433
|
-
* )
|
|
2434
|
-
*
|
|
2435
|
-
* yield* Console.log("Heartbeat sequence completed")
|
|
2436
|
-
* })
|
|
2437
|
-
*
|
|
2438
|
-
* // Limit retry attempts by both count and elapsed time
|
|
2439
|
-
* const limitedRetry = Schedule.exponential("100 millis").pipe(
|
|
2440
|
-
* Schedule.upTo({
|
|
2441
|
-
* duration: "5 seconds",
|
|
2442
|
-
* times: 3
|
|
2443
|
-
* })
|
|
2444
|
-
* )
|
|
2445
|
-
*
|
|
2446
|
-
* const retryProgram = Effect.gen(function*() {
|
|
2447
|
-
* let attempt = 0
|
|
2448
|
-
*
|
|
2449
|
-
* const result = yield* Effect.retry(
|
|
2450
|
-
* Effect.gen(function*() {
|
|
2451
|
-
* attempt++
|
|
2452
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
2453
|
-
*
|
|
2454
|
-
* if (attempt < 5) { // Will fail more than 3 times
|
|
2455
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
2456
|
-
* }
|
|
2457
|
-
*
|
|
2458
|
-
* return `Success on attempt ${attempt}`
|
|
2459
|
-
* }),
|
|
2460
|
-
* limitedRetry
|
|
2461
|
-
* )
|
|
1170
|
+
* ```ts import.meta.vitest
|
|
1171
|
+
* import { Effect, Schedule } from "effect"
|
|
1172
|
+
* import { TestClock } from "effect/testing"
|
|
2462
1173
|
*
|
|
2463
|
-
*
|
|
2464
|
-
*
|
|
2465
|
-
*
|
|
2466
|
-
*
|
|
2467
|
-
* )
|
|
1174
|
+
* const executions: Array<number> = []
|
|
1175
|
+
* const schedule = Schedule.forever.pipe(Schedule.upTo({ times: 2 }))
|
|
1176
|
+
* const program = Effect.sync(() => executions.push(executions.length + 1)).pipe(
|
|
1177
|
+
* Effect.repeat(schedule),
|
|
1178
|
+
* Effect.as(executions)
|
|
2468
1179
|
* )
|
|
2469
1180
|
*
|
|
2470
|
-
*
|
|
2471
|
-
* const unchanged = Schedule.fixed("500 millis").pipe(
|
|
2472
|
-
* Schedule.upTo({})
|
|
2473
|
-
* )
|
|
1181
|
+
* await Effect.runPromise(Effect.provide(program, TestClock.layer())) // => [1, 2, 3]
|
|
2474
1182
|
* ```
|
|
2475
1183
|
*
|
|
2476
1184
|
* @category filtering
|
|
@@ -2503,64 +1211,18 @@ export declare const upTo: {
|
|
|
2503
1211
|
*
|
|
2504
1212
|
* **Example** (Limiting by duration and recurrence count)
|
|
2505
1213
|
*
|
|
2506
|
-
* ```ts
|
|
2507
|
-
* import {
|
|
2508
|
-
*
|
|
2509
|
-
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
2510
|
-
*
|
|
2511
|
-
* // Limit an infinite schedule to five recurrences
|
|
2512
|
-
* const limitedHeartbeat = Schedule.spaced("1 second").pipe(
|
|
2513
|
-
* Schedule.upTo({ times: 5 })
|
|
2514
|
-
* )
|
|
2515
|
-
*
|
|
2516
|
-
* const heartbeatProgram = Effect.gen(function*() {
|
|
2517
|
-
* yield* Effect.repeat(
|
|
2518
|
-
* Effect.gen(function*() {
|
|
2519
|
-
* yield* Console.log("Heartbeat")
|
|
2520
|
-
* return "pulse"
|
|
2521
|
-
* }),
|
|
2522
|
-
* limitedHeartbeat
|
|
2523
|
-
* )
|
|
2524
|
-
*
|
|
2525
|
-
* yield* Console.log("Heartbeat sequence completed")
|
|
2526
|
-
* })
|
|
2527
|
-
*
|
|
2528
|
-
* // Limit retry attempts by both count and elapsed time
|
|
2529
|
-
* const limitedRetry = Schedule.exponential("100 millis").pipe(
|
|
2530
|
-
* Schedule.upTo({
|
|
2531
|
-
* duration: "5 seconds",
|
|
2532
|
-
* times: 3
|
|
2533
|
-
* })
|
|
2534
|
-
* )
|
|
2535
|
-
*
|
|
2536
|
-
* const retryProgram = Effect.gen(function*() {
|
|
2537
|
-
* let attempt = 0
|
|
2538
|
-
*
|
|
2539
|
-
* const result = yield* Effect.retry(
|
|
2540
|
-
* Effect.gen(function*() {
|
|
2541
|
-
* attempt++
|
|
2542
|
-
* yield* Console.log(`Attempt ${attempt}`)
|
|
2543
|
-
*
|
|
2544
|
-
* if (attempt < 5) { // Will fail more than 3 times
|
|
2545
|
-
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
2546
|
-
* }
|
|
2547
|
-
*
|
|
2548
|
-
* return `Success on attempt ${attempt}`
|
|
2549
|
-
* }),
|
|
2550
|
-
* limitedRetry
|
|
2551
|
-
* )
|
|
1214
|
+
* ```ts import.meta.vitest
|
|
1215
|
+
* import { Effect, Schedule } from "effect"
|
|
1216
|
+
* import { TestClock } from "effect/testing"
|
|
2552
1217
|
*
|
|
2553
|
-
*
|
|
2554
|
-
*
|
|
2555
|
-
*
|
|
2556
|
-
*
|
|
2557
|
-
* )
|
|
1218
|
+
* const executions: Array<number> = []
|
|
1219
|
+
* const schedule = Schedule.forever.pipe(Schedule.upTo({ times: 2 }))
|
|
1220
|
+
* const program = Effect.sync(() => executions.push(executions.length + 1)).pipe(
|
|
1221
|
+
* Effect.repeat(schedule),
|
|
1222
|
+
* Effect.as(executions)
|
|
2558
1223
|
* )
|
|
2559
1224
|
*
|
|
2560
|
-
*
|
|
2561
|
-
* const unchanged = Schedule.fixed("500 millis").pipe(
|
|
2562
|
-
* Schedule.upTo({})
|
|
2563
|
-
* )
|
|
1225
|
+
* await Effect.runPromise(Effect.provide(program, TestClock.layer())) // => [1, 2, 3]
|
|
2564
1226
|
* ```
|
|
2565
1227
|
*
|
|
2566
1228
|
* @category filtering
|
|
@@ -2613,21 +1275,15 @@ while_ as while };
|
|
|
2613
1275
|
*
|
|
2614
1276
|
* **Example** (Repeating on aligned windows)
|
|
2615
1277
|
*
|
|
2616
|
-
* ```ts
|
|
2617
|
-
* import {
|
|
2618
|
-
*
|
|
2619
|
-
* // Execute tasks at regular intervals aligned to window boundaries
|
|
2620
|
-
* const windowSchedule = Schedule.windowed("5 seconds")
|
|
1278
|
+
* ```ts import.meta.vitest
|
|
1279
|
+
* import { Duration, Effect, Schedule } from "effect"
|
|
2621
1280
|
*
|
|
2622
1281
|
* const program = Effect.gen(function*() {
|
|
2623
|
-
* yield*
|
|
2624
|
-
*
|
|
2625
|
-
* yield* Console.log("Window task executed")
|
|
2626
|
-
* return "window-task"
|
|
2627
|
-
* }),
|
|
2628
|
-
* windowSchedule.pipe(Schedule.upTo({ times: 4 }))
|
|
2629
|
-
* )
|
|
1282
|
+
* const step = yield* Schedule.toStep(Schedule.windowed("5 seconds"))
|
|
1283
|
+
* return yield* step(0, undefined)
|
|
2630
1284
|
* })
|
|
1285
|
+
*
|
|
1286
|
+
* await Effect.runPromise(program) // => [0, Duration.seconds(5)]
|
|
2631
1287
|
* ```
|
|
2632
1288
|
*
|
|
2633
1289
|
* @category constructors
|
|
@@ -2644,21 +1300,18 @@ export declare const windowed: (interval: Duration.Input) => Schedule<number>;
|
|
|
2644
1300
|
*
|
|
2645
1301
|
* **Example** (Repeating forever)
|
|
2646
1302
|
*
|
|
2647
|
-
* ```ts
|
|
2648
|
-
* import {
|
|
1303
|
+
* ```ts import.meta.vitest
|
|
1304
|
+
* import { Effect, Schedule } from "effect"
|
|
1305
|
+
* import { TestClock } from "effect/testing"
|
|
2649
1306
|
*
|
|
2650
|
-
*
|
|
2651
|
-
* const
|
|
1307
|
+
* const executions: Array<number> = []
|
|
1308
|
+
* const schedule = Schedule.forever.pipe(Schedule.upTo({ times: 2 }))
|
|
1309
|
+
* const program = Effect.sync(() => executions.push(executions.length + 1)).pipe(
|
|
1310
|
+
* Effect.repeat(schedule),
|
|
1311
|
+
* Effect.as(executions)
|
|
1312
|
+
* )
|
|
2652
1313
|
*
|
|
2653
|
-
*
|
|
2654
|
-
* yield* Effect.repeat(
|
|
2655
|
-
* Effect.gen(function*() {
|
|
2656
|
-
* yield* Console.log("Running forever...")
|
|
2657
|
-
* return "continuous-task"
|
|
2658
|
-
* }),
|
|
2659
|
-
* infiniteSchedule.pipe(Schedule.upTo({ times: 5 })) // Limit for demo
|
|
2660
|
-
* )
|
|
2661
|
-
* })
|
|
1314
|
+
* await Effect.runPromise(Effect.provide(program, TestClock.layer())) // => [1, 2, 3]
|
|
2662
1315
|
* ```
|
|
2663
1316
|
*
|
|
2664
1317
|
* @category constructors
|
|
@@ -2700,12 +1353,13 @@ identity_ as identity };
|
|
|
2700
1353
|
*
|
|
2701
1354
|
* **Example** (Setting a schedule input type)
|
|
2702
1355
|
*
|
|
2703
|
-
* ```ts
|
|
1356
|
+
* ```ts import.meta.vitest
|
|
2704
1357
|
* import { Schedule } from "effect"
|
|
2705
1358
|
*
|
|
2706
1359
|
* const schedule = Schedule.recurs(3).pipe(
|
|
2707
1360
|
* Schedule.setInputType<string>()
|
|
2708
1361
|
* )
|
|
1362
|
+
* Schedule.isSchedule(schedule) // => true
|
|
2709
1363
|
* ```
|
|
2710
1364
|
*
|
|
2711
1365
|
* @category utility types
|