effect 4.0.0-beta.3 → 4.0.0-beta.30
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 +126 -299
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +102 -62
- package/dist/Array.js.map +1 -1
- package/dist/Brand.d.ts +1 -1
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +1 -1
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +2 -2
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +6 -5
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +2 -2
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Channel.d.ts +116 -30
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +82 -37
- package/dist/Channel.js.map +1 -1
- package/dist/Chunk.d.ts +54 -247
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +36 -67
- package/dist/Chunk.js.map +1 -1
- package/dist/Combiner.d.ts +280 -13
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +198 -7
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +165 -9
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +65 -10
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +1 -1
- package/dist/Cron.d.ts +1 -1
- package/dist/Data.d.ts +535 -366
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +132 -79
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +23 -161
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +6 -51
- package/dist/DateTime.js.map +1 -1
- package/dist/Duration.d.ts +11 -11
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +11 -11
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +1206 -924
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +390 -329
- package/dist/Effect.js.map +1 -1
- package/dist/Encoding.d.ts +194 -0
- package/dist/Encoding.d.ts.map +1 -0
- package/dist/Encoding.js +352 -0
- package/dist/Encoding.js.map +1 -0
- package/dist/Equal.d.ts +276 -109
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +124 -48
- package/dist/Equal.js.map +1 -1
- package/dist/ErrorReporter.d.ts +374 -0
- package/dist/ErrorReporter.d.ts.map +1 -0
- package/dist/ErrorReporter.js +244 -0
- package/dist/ErrorReporter.js.map +1 -0
- package/dist/Exit.d.ts +24 -12
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -4
- package/dist/Exit.js.map +1 -1
- package/dist/Fiber.d.ts +3 -2
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js.map +1 -1
- package/dist/FileSystem.d.ts +1 -1
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +5 -5
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +34 -38
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +15 -13
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +131 -47
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +229 -51
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +1 -9
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +2 -10
- package/dist/Function.js.map +1 -1
- package/dist/Graph.d.ts +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +5 -8
- package/dist/Graph.js.map +1 -1
- package/dist/HashMap.d.ts +15 -14
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +4 -4
- package/dist/HashMap.js.map +1 -1
- package/dist/Iterable.d.ts +39 -39
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +94 -22
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts +299 -10
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +323 -4
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +109 -0
- package/dist/Latch.d.ts.map +1 -0
- package/dist/Latch.js +72 -0
- package/dist/Latch.js.map +1 -0
- package/dist/Layer.d.ts +121 -126
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +43 -44
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +8 -8
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +3 -3
- package/dist/LogLevel.d.ts +32 -0
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +28 -100
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +29 -95
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +2 -3
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +2 -2
- package/dist/ManagedRuntime.js +2 -2
- package/dist/Metric.d.ts +4 -6
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +3 -5
- package/dist/Metric.js.map +1 -1
- package/dist/Newtype.d.ts +291 -0
- package/dist/Newtype.d.ts.map +1 -0
- package/dist/Newtype.js +161 -0
- package/dist/Newtype.js.map +1 -0
- package/dist/Optic.d.ts +947 -18
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +454 -5
- package/dist/Optic.js.map +1 -1
- package/dist/Option.d.ts +23 -16
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +15 -9
- package/dist/Option.js.map +1 -1
- package/dist/Pipeable.d.ts +17 -0
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +19 -1
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +10 -9
- package/dist/PlatformError.d.ts.map +1 -1
- package/dist/PlatformError.js +2 -2
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +6 -4
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +7 -5
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts +3 -2
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +3 -2
- package/dist/PubSub.js.map +1 -1
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +1 -1
- package/dist/Pull.js.map +1 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +0 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +35 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +46 -12
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +2 -2
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +1 -1
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +1 -1
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/Record.d.ts +23 -120
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +21 -41
- package/dist/Record.js.map +1 -1
- package/dist/Reducer.d.ts +166 -7
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +135 -1
- package/dist/Reducer.js.map +1 -1
- package/dist/References.d.ts +9 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +6 -1
- package/dist/References.js.map +1 -1
- package/dist/Request.d.ts +1 -1
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +2 -1
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +25 -45
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +10 -30
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Result.d.ts +1 -1
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +1 -2
- package/dist/Result.js.map +1 -1
- package/dist/Runtime.d.ts +66 -0
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +79 -6
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +191 -102
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +152 -66
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +9 -0
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +11 -0
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +309 -88
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +499 -109
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +129 -23
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +5 -5
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +12 -14
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaParser.d.ts +5 -0
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +10 -0
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +44 -43
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +49 -24
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +107 -3
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +159 -4
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts +2 -2
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +211 -0
- package/dist/Semaphore.d.ts.map +1 -0
- package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
- package/dist/Semaphore.js.map +1 -0
- package/dist/ServiceMap.d.ts +41 -31
- package/dist/ServiceMap.d.ts.map +1 -1
- package/dist/ServiceMap.js +3 -3
- package/dist/ServiceMap.js.map +1 -1
- package/dist/Sink.d.ts +13 -13
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +53 -6
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +16 -4
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +18 -0
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +250 -428
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +137 -82
- package/dist/Stream.js.map +1 -1
- package/dist/Struct.d.ts +16 -0
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +22 -0
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +2 -1
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +2 -1
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/SynchronizedRef.d.ts +2 -1
- package/dist/SynchronizedRef.d.ts.map +1 -1
- package/dist/SynchronizedRef.js +2 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Trie.d.ts +18 -17
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +5 -5
- package/dist/Trie.js.map +1 -1
- package/dist/TxChunk.d.ts +37 -37
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +3 -3
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +328 -0
- package/dist/TxDeferred.d.ts.map +1 -0
- package/dist/TxDeferred.js +196 -0
- package/dist/TxDeferred.js.map +1 -0
- package/dist/TxHashMap.d.ts +84 -83
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +24 -24
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +35 -35
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +14 -14
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +609 -0
- package/dist/TxPriorityQueue.d.ts.map +1 -0
- package/dist/TxPriorityQueue.js +415 -0
- package/dist/TxPriorityQueue.js.map +1 -0
- package/dist/TxPubSub.d.ts +585 -0
- package/dist/TxPubSub.d.ts.map +1 -0
- package/dist/TxPubSub.js +521 -0
- package/dist/TxPubSub.js.map +1 -0
- package/dist/TxQueue.d.ts +32 -32
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +26 -26
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +523 -0
- package/dist/TxReentrantLock.d.ts.map +1 -0
- package/dist/TxReentrantLock.js +504 -0
- package/dist/TxReentrantLock.js.map +1 -0
- package/dist/TxRef.d.ts +34 -34
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +21 -14
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +8 -8
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +7 -7
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +508 -0
- package/dist/TxSubscriptionRef.d.ts.map +1 -0
- package/dist/TxSubscriptionRef.js +293 -0
- package/dist/TxSubscriptionRef.js.map +1 -0
- package/dist/Types.d.ts +80 -23
- package/dist/Types.d.ts.map +1 -1
- package/dist/Utils.d.ts +137 -65
- package/dist/Utils.d.ts.map +1 -1
- package/dist/Utils.js +38 -66
- package/dist/Utils.js.map +1 -1
- package/dist/index.d.ts +718 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +718 -23
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +11 -3
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +3 -11
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +264 -126
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +5 -4
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/random.d.ts +2 -0
- package/dist/internal/random.d.ts.map +1 -0
- package/dist/internal/random.js +13 -0
- package/dist/internal/random.js.map +1 -0
- package/dist/internal/rcRef.js +3 -2
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/request.js +2 -2
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schema/annotations.js +2 -0
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/representation.js +47 -106
- package/dist/internal/schema/representation.js.map +1 -1
- package/dist/internal/schema/schema.js +1 -0
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/to-codec.js +7 -10
- package/dist/internal/schema/to-codec.js.map +1 -1
- package/dist/internal/trie.js +5 -4
- package/dist/internal/trie.js.map +1 -1
- package/dist/testing/TestClock.d.ts +8 -7
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +6 -4
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +266 -32
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +296 -23
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/testing/index.d.ts +64 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +64 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +134 -51
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +19 -16
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +5 -5
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +38 -44
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +16 -30
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +97 -37
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +183 -88
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +57 -12
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +66 -13
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +193 -51
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +25 -7
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +22 -6
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +20 -20
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Response.d.ts +26 -26
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +1 -1
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +20 -4
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +14 -9
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +1 -1
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +4 -11
- package/dist/unstable/ai/Toolkit.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +1 -1
- package/dist/unstable/ai/index.js +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js +0 -5
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +27 -60
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +25 -57
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/CliOutput.js +59 -6
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +368 -56
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +325 -64
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
- package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
- package/dist/unstable/cli/GlobalFlag.js +118 -0
- package/dist/unstable/cli/GlobalFlag.js.map +1 -0
- package/dist/unstable/cli/HelpDoc.d.ts +70 -2
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts +1 -1
- package/dist/unstable/cli/Primitive.js +1 -1
- package/dist/unstable/cli/Prompt.js +35 -8
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/index.d.ts +4 -0
- package/dist/unstable/cli/index.d.ts.map +1 -1
- package/dist/unstable/cli/index.js +4 -0
- package/dist/unstable/cli/index.js.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +40 -14
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +72 -46
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
- package/dist/unstable/cli/internal/config.js +42 -0
- package/dist/unstable/cli/internal/config.js.map +1 -1
- package/dist/unstable/cli/internal/help.d.ts +33 -0
- package/dist/unstable/cli/internal/help.d.ts.map +1 -0
- package/dist/unstable/cli/internal/help.js +125 -0
- package/dist/unstable/cli/internal/help.js.map +1 -0
- package/dist/unstable/cli/internal/parser.js +55 -42
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +4 -3
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +7 -6
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +4 -4
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +10 -10
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +2 -1
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +6 -6
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +4 -3
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts +2 -2
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +9 -7
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js +20 -20
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +5 -4
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js +2 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +2 -1
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
- package/dist/unstable/encoding/Msgpack.d.ts +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts +1 -1
- package/dist/unstable/encoding/Sse.d.ts +4 -4
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js +1 -1
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +2 -1
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
- package/dist/unstable/http/Cookies.d.ts +47 -3
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +24 -2
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +16 -0
- package/dist/unstable/http/Headers.d.ts.map +1 -1
- package/dist/unstable/http/Headers.js +38 -10
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +3 -3
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +6 -6
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +117 -15
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +189 -12
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.d.ts +7 -7
- package/dist/unstable/http/HttpClientRequest.d.ts +16 -11
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +31 -20
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +2 -1
- package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientResponse.js +4 -0
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +7 -5
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +46 -54
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +4 -4
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +3 -3
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +8 -17
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +20 -33
- package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerError.js +37 -44
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +12 -1
- package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +291 -1
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
- package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.js +5 -5
- package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +50 -3
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +234 -1
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/HttpStaticServer.d.ts +69 -0
- package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -0
- package/dist/unstable/http/HttpStaticServer.js +353 -0
- package/dist/unstable/http/HttpStaticServer.js.map +1 -0
- package/dist/unstable/http/Multipart.d.ts +3 -3
- package/dist/unstable/http/UrlParams.d.ts +14 -6
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +1 -1
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/http/index.d.ts +4 -0
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +4 -0
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
- package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js +10 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
- package/dist/unstable/httpapi/HttpApi.d.ts +4 -4
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts +11 -5
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +28 -18
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +66 -6
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +40 -3
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +41 -54
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +17 -26
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +16 -14
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +44 -29
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +4 -3
- package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +4 -4
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +32 -21
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/observability/Otlp.d.ts +12 -12
- package/dist/unstable/observability/Otlp.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +1 -1
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js +7 -4
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +6 -6
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +2 -2
- package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
- package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js +2 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +12 -11
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +1 -1
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +2 -2
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +1 -1
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +5 -128
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcess.js +1 -65
- package/dist/unstable/process/ChildProcess.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -7
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +21 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +73 -12
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +107 -20
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +10 -12
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +42 -12
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
- package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +50 -9
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +9 -9
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +47 -21
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +39 -0
- package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
- package/dist/unstable/reactivity/Hydration.js +76 -0
- package/dist/unstable/reactivity/Hydration.js.map +1 -0
- package/dist/unstable/reactivity/index.d.ts +4 -0
- package/dist/unstable/reactivity/index.d.ts.map +1 -1
- package/dist/unstable/reactivity/index.js +4 -0
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +5 -5
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +5 -26
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +6 -13
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +2 -2
- package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +8 -8
- package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts +13 -0
- package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSchema.js +14 -0
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +34 -9
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +5 -9
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +17 -17
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/Utils.d.ts.map +1 -1
- package/dist/unstable/rpc/Utils.js +3 -2
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +22 -1
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +15 -0
- package/dist/unstable/schema/Model.js.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +5 -5
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +6 -6
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +4 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +6 -5
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.d.ts +3 -3
- package/dist/unstable/sql/Migrator.d.ts +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/SqlError.d.ts +14 -14
- package/dist/unstable/sql/SqlError.d.ts.map +1 -1
- package/dist/unstable/sql/SqlError.js +9 -3
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlModel.js +3 -3
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +17 -8
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/SqlSchema.d.ts +17 -6
- package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.js +17 -7
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/Statement.js +0 -1
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +2 -1
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +3 -3
- package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableClock.js +3 -3
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +2 -2
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +3 -3
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +1 -1
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +12 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +137 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +2 -2
- package/src/Array.ts +192 -342
- package/src/Brand.ts +1 -1
- package/src/Cache.ts +9 -8
- package/src/Cause.ts +2 -2
- package/src/Channel.ts +554 -138
- package/src/Chunk.ts +81 -268
- package/src/Combiner.ts +280 -13
- package/src/Config.ts +186 -24
- package/src/Data.ts +539 -376
- package/src/DateTime.ts +24 -164
- package/src/Duration.ts +13 -13
- package/src/Effect.ts +1477 -1126
- package/src/Encoding.ts +879 -0
- package/src/Equal.ts +278 -111
- package/src/ErrorReporter.ts +457 -0
- package/src/Exit.ts +24 -12
- package/src/Fiber.ts +10 -2
- package/src/FileSystem.ts +7 -8
- package/src/Filter.ts +52 -63
- package/src/Formatter.ts +253 -51
- package/src/Function.ts +2 -10
- package/src/Graph.ts +24 -11
- package/src/HashMap.ts +15 -14
- package/src/Iterable.ts +104 -50
- package/src/JsonSchema.ts +383 -10
- package/src/Latch.ts +112 -0
- package/src/Layer.ts +123 -132
- package/src/LayerMap.ts +9 -9
- package/src/LogLevel.ts +37 -0
- package/src/Logger.ts +33 -100
- package/src/ManagedRuntime.ts +2 -2
- package/src/Metric.ts +6 -8
- package/src/Newtype.ts +308 -0
- package/src/Optic.ts +948 -19
- package/src/Option.ts +32 -24
- package/src/Pipeable.ts +32 -1
- package/src/PlatformError.ts +5 -5
- package/src/Pool.ts +13 -11
- package/src/PubSub.ts +10 -9
- package/src/Pull.ts +1 -1
- package/src/Queue.ts +0 -1
- package/src/Random.ts +51 -14
- package/src/RcMap.ts +5 -5
- package/src/RcRef.ts +1 -1
- package/src/Record.ts +42 -152
- package/src/Reducer.ts +166 -7
- package/src/References.ts +10 -5
- package/src/Request.ts +3 -2
- package/src/RequestResolver.ts +29 -49
- package/src/Result.ts +2 -4
- package/src/Runtime.ts +102 -6
- package/src/Schedule.ts +462 -242
- package/src/Scheduler.ts +12 -0
- package/src/Schema.ts +796 -194
- package/src/SchemaAST.ts +164 -31
- package/src/SchemaGetter.ts +15 -17
- package/src/SchemaParser.ts +11 -0
- package/src/SchemaRepresentation.ts +49 -24
- package/src/SchemaTransformation.ts +189 -4
- package/src/ScopedCache.ts +3 -3
- package/src/Semaphore.ts +356 -0
- package/src/ServiceMap.ts +50 -40
- package/src/Sink.ts +78 -26
- package/src/Stdio.ts +27 -4
- package/src/Stream.ts +586 -608
- package/src/Struct.ts +26 -0
- package/src/SubscriptionRef.ts +3 -2
- package/src/SynchronizedRef.ts +3 -2
- package/src/Trie.ts +18 -17
- package/src/TxChunk.ts +72 -53
- package/src/TxDeferred.ts +394 -0
- package/src/TxHashMap.ts +332 -285
- package/src/TxHashSet.ts +111 -116
- package/src/TxPriorityQueue.ts +767 -0
- package/src/TxPubSub.ts +789 -0
- package/src/TxQueue.ts +241 -251
- package/src/TxReentrantLock.ts +753 -0
- package/src/TxRef.ts +50 -38
- package/src/TxSemaphore.ts +29 -32
- package/src/TxSubscriptionRef.ts +639 -0
- package/src/Types.ts +73 -19
- package/src/Utils.ts +137 -111
- package/src/index.ts +728 -24
- package/src/internal/core.ts +12 -5
- package/src/internal/dateTime.ts +9 -30
- package/src/internal/effect.ts +774 -301
- package/src/internal/hashMap.ts +8 -7
- package/src/internal/random.ts +20 -0
- package/src/internal/rcRef.ts +4 -3
- package/src/internal/request.ts +2 -2
- package/src/internal/schema/annotations.ts +2 -0
- package/src/internal/schema/representation.ts +45 -94
- package/src/internal/schema/schema.ts +1 -0
- package/src/internal/schema/to-codec.ts +7 -17
- package/src/internal/trie.ts +15 -9
- package/src/testing/TestClock.ts +13 -11
- package/src/testing/TestSchema.ts +332 -35
- package/src/testing/index.ts +64 -1
- package/src/unstable/ai/AiError.ts +105 -48
- package/src/unstable/ai/Chat.ts +47 -61
- package/src/unstable/ai/LanguageModel.ts +153 -68
- package/src/unstable/ai/McpSchema.ts +73 -13
- package/src/unstable/ai/McpServer.ts +271 -61
- package/src/unstable/ai/Model.ts +40 -9
- package/src/unstable/ai/Prompt.ts +37 -37
- package/src/unstable/ai/Response.ts +25 -25
- package/src/unstable/ai/Tool.ts +20 -14
- package/src/unstable/ai/Toolkit.ts +5 -14
- package/src/unstable/ai/index.ts +1 -1
- package/src/unstable/ai/internal/codec-transformer.ts +0 -7
- package/src/unstable/cli/CliError.ts +47 -59
- package/src/unstable/cli/CliOutput.ts +75 -6
- package/src/unstable/cli/Command.ts +796 -187
- package/src/unstable/cli/GlobalFlag.ts +243 -0
- package/src/unstable/cli/HelpDoc.ts +80 -2
- package/src/unstable/cli/Primitive.ts +1 -1
- package/src/unstable/cli/Prompt.ts +31 -9
- package/src/unstable/cli/index.ts +5 -0
- package/src/unstable/cli/internal/command.ts +109 -63
- package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
- package/src/unstable/cli/internal/config.ts +49 -0
- package/src/unstable/cli/internal/help.ts +171 -0
- package/src/unstable/cli/internal/parser.ts +66 -61
- package/src/unstable/cluster/ClusterCron.ts +2 -2
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +5 -4
- package/src/unstable/cluster/Entity.ts +11 -10
- package/src/unstable/cluster/EntityResource.ts +4 -4
- package/src/unstable/cluster/Envelope.ts +1 -1
- package/src/unstable/cluster/K8sHttpClient.ts +5 -5
- package/src/unstable/cluster/MessageStorage.ts +3 -5
- package/src/unstable/cluster/Runners.ts +6 -5
- package/src/unstable/cluster/Sharding.ts +12 -10
- package/src/unstable/cluster/ShardingConfig.ts +30 -31
- package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
- package/src/unstable/cluster/internal/entityManager.ts +9 -8
- package/src/unstable/cluster/internal/entityReaper.ts +2 -1
- package/src/unstable/cluster/internal/resourceRef.ts +2 -1
- package/src/unstable/encoding/Sse.ts +3 -5
- package/src/unstable/eventlog/EventLog.ts +2 -1
- package/src/unstable/http/Cookies.ts +87 -3
- package/src/unstable/http/Headers.ts +62 -13
- package/src/unstable/http/HttpBody.ts +6 -6
- package/src/unstable/http/HttpClient.ts +374 -33
- package/src/unstable/http/HttpClientRequest.ts +38 -30
- package/src/unstable/http/HttpClientResponse.ts +7 -2
- package/src/unstable/http/HttpEffect.ts +54 -68
- package/src/unstable/http/HttpMethod.ts +16 -4
- package/src/unstable/http/HttpMiddleware.ts +9 -24
- package/src/unstable/http/HttpServerError.ts +42 -45
- package/src/unstable/http/HttpServerRequest.ts +389 -2
- package/src/unstable/http/HttpServerRespondable.ts +6 -6
- package/src/unstable/http/HttpServerResponse.ts +337 -4
- package/src/unstable/http/HttpStaticServer.ts +456 -0
- package/src/unstable/http/Multipart.ts +2 -2
- package/src/unstable/http/UrlParams.ts +20 -5
- package/src/unstable/http/index.ts +5 -0
- package/src/unstable/http/internal/preResponseHandler.ts +15 -0
- package/src/unstable/httpapi/HttpApi.ts +6 -6
- package/src/unstable/httpapi/HttpApiBuilder.ts +81 -28
- package/src/unstable/httpapi/HttpApiClient.ts +100 -11
- package/src/unstable/httpapi/HttpApiEndpoint.ts +71 -87
- package/src/unstable/httpapi/HttpApiError.ts +51 -28
- package/src/unstable/httpapi/HttpApiGroup.ts +7 -6
- package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -4
- package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
- package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
- package/src/unstable/httpapi/OpenApi.ts +41 -23
- package/src/unstable/observability/Otlp.ts +12 -12
- package/src/unstable/observability/OtlpExporter.ts +3 -3
- package/src/unstable/observability/OtlpLogger.ts +13 -9
- package/src/unstable/observability/OtlpMetrics.ts +4 -4
- package/src/unstable/observability/OtlpTracer.ts +4 -4
- package/src/unstable/persistence/KeyValueStore.ts +6 -6
- package/src/unstable/persistence/Persistable.ts +2 -2
- package/src/unstable/persistence/PersistedCache.ts +20 -9
- package/src/unstable/persistence/PersistedQueue.ts +25 -24
- package/src/unstable/persistence/Persistence.ts +3 -3
- package/src/unstable/persistence/RateLimiter.ts +4 -4
- package/src/unstable/process/ChildProcess.ts +6 -208
- package/src/unstable/process/ChildProcessSpawner.ts +75 -14
- package/src/unstable/reactivity/Atom.ts +211 -50
- package/src/unstable/reactivity/AtomHttpApi.ts +66 -31
- package/src/unstable/reactivity/AtomRegistry.ts +61 -9
- package/src/unstable/reactivity/AtomRpc.ts +51 -20
- package/src/unstable/reactivity/Hydration.ts +112 -0
- package/src/unstable/reactivity/index.ts +5 -0
- package/src/unstable/rpc/Rpc.ts +7 -9
- package/src/unstable/rpc/RpcClient.ts +12 -54
- package/src/unstable/rpc/RpcGroup.ts +4 -4
- package/src/unstable/rpc/RpcMiddleware.ts +15 -9
- package/src/unstable/rpc/RpcSchema.ts +17 -0
- package/src/unstable/rpc/RpcSerialization.ts +44 -9
- package/src/unstable/rpc/RpcServer.ts +28 -32
- package/src/unstable/rpc/Utils.ts +3 -2
- package/src/unstable/schema/Model.ts +31 -0
- package/src/unstable/schema/VariantSchema.ts +9 -9
- package/src/unstable/socket/Socket.ts +16 -17
- package/src/unstable/sql/SqlClient.ts +1 -1
- package/src/unstable/sql/SqlError.ts +11 -9
- package/src/unstable/sql/SqlModel.ts +5 -5
- package/src/unstable/sql/SqlResolver.ts +17 -7
- package/src/unstable/sql/SqlSchema.ts +42 -26
- package/src/unstable/sql/Statement.ts +0 -1
- package/src/unstable/workers/Worker.ts +2 -1
- package/src/unstable/workflow/DurableClock.ts +8 -8
- package/src/unstable/workflow/DurableDeferred.ts +2 -2
- package/src/unstable/workflow/Workflow.ts +6 -2
- package/src/unstable/workflow/WorkflowEngine.ts +185 -2
- package/dist/PartitionedSemaphore.d.ts +0 -52
- package/dist/PartitionedSemaphore.d.ts.map +0 -1
- package/dist/PartitionedSemaphore.js.map +0 -1
- package/dist/encoding/Base64.d.ts +0 -67
- package/dist/encoding/Base64.d.ts.map +0 -1
- package/dist/encoding/Base64.js +0 -146
- package/dist/encoding/Base64.js.map +0 -1
- package/dist/encoding/Base64Url.d.ts +0 -60
- package/dist/encoding/Base64Url.d.ts.map +0 -1
- package/dist/encoding/Base64Url.js +0 -89
- package/dist/encoding/Base64Url.js.map +0 -1
- package/dist/encoding/EncodingError.d.ts +0 -31
- package/dist/encoding/EncodingError.d.ts.map +0 -1
- package/dist/encoding/EncodingError.js +0 -22
- package/dist/encoding/EncodingError.js.map +0 -1
- package/dist/encoding/Hex.d.ts +0 -61
- package/dist/encoding/Hex.d.ts.map +0 -1
- package/dist/encoding/Hex.js +0 -115
- package/dist/encoding/Hex.js.map +0 -1
- package/dist/encoding/index.d.ts +0 -26
- package/dist/encoding/index.d.ts.map +0 -1
- package/dist/encoding/index.js +0 -27
- package/dist/encoding/index.js.map +0 -1
- package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
- package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
- package/dist/unstable/cli/internal/builtInFlags.js +0 -44
- package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
- package/src/PartitionedSemaphore.ts +0 -182
- package/src/encoding/Base64.ts +0 -366
- package/src/encoding/Base64Url.ts +0 -104
- package/src/encoding/EncodingError.ts +0 -35
- package/src/encoding/Hex.ts +0 -390
- package/src/encoding/index.ts +0 -31
- package/src/unstable/cli/internal/builtInFlags.ts +0 -78
package/src/Schedule.ts
CHANGED
|
@@ -36,8 +36,9 @@ import * as Duration from "./Duration.ts"
|
|
|
36
36
|
import type { Effect } from "./Effect.ts"
|
|
37
37
|
import type { LazyArg } from "./Function.ts"
|
|
38
38
|
import { constant, dual, identity } from "./Function.ts"
|
|
39
|
-
|
|
39
|
+
import { isEffect } from "./internal/core.ts"
|
|
40
40
|
import * as effect from "./internal/effect.ts"
|
|
41
|
+
import * as random from "./internal/random.ts"
|
|
41
42
|
import { type Pipeable, pipeArguments } from "./Pipeable.ts"
|
|
42
43
|
import { hasProperty } from "./Predicate.ts"
|
|
43
44
|
import * as Pull from "./Pull.ts"
|
|
@@ -47,6 +48,8 @@ import type { Contravariant, Covariant, Mutable } from "./Types.ts"
|
|
|
47
48
|
|
|
48
49
|
const TypeId = "~effect/Schedule"
|
|
49
50
|
|
|
51
|
+
const randomNext: Effect<number> = random.Random.useSync((random) => random.nextDoubleUnsafe())
|
|
52
|
+
|
|
50
53
|
/**
|
|
51
54
|
* A Schedule defines a strategy for repeating or retrying effects based on some policy.
|
|
52
55
|
*
|
|
@@ -69,7 +72,7 @@ const TypeId = "~effect/Schedule"
|
|
|
69
72
|
* const program = Effect.gen(function*() {
|
|
70
73
|
* // Using retry schedule
|
|
71
74
|
* const result1 = yield* Effect.retry(
|
|
72
|
-
* Effect.fail("temporary error"),
|
|
75
|
+
* Effect.suspend(() => Math.random() > 0.5 ? Effect.fail("temporary error") : Effect.succeed("Success")),
|
|
73
76
|
* retrySchedule
|
|
74
77
|
* )
|
|
75
78
|
*
|
|
@@ -197,7 +200,7 @@ export const CurrentMetadata = ServiceMap.Reference<Metadata>("effect/Schedule/C
|
|
|
197
200
|
* Effect.gen(function*() {
|
|
198
201
|
* attempt++
|
|
199
202
|
* if (attempt < 3) {
|
|
200
|
-
* yield* Effect.fail(`Attempt ${attempt} failed`)
|
|
203
|
+
* return yield* Effect.fail(`Attempt ${attempt} failed`)
|
|
201
204
|
* }
|
|
202
205
|
* return `Success on attempt ${attempt}`
|
|
203
206
|
* }),
|
|
@@ -346,7 +349,7 @@ export const fromStep = <Input, Output, EnvX, Error, ErrorX, Env>(
|
|
|
346
349
|
Error,
|
|
347
350
|
Env
|
|
348
351
|
>
|
|
349
|
-
): Schedule<Output, Input, Error | ErrorX
|
|
352
|
+
): Schedule<Output, Input, Error | Pull.ExcludeDone<ErrorX>, Env | EnvX> => {
|
|
350
353
|
const self = Object.create(ScheduleProto)
|
|
351
354
|
self.step = step
|
|
352
355
|
return self
|
|
@@ -395,7 +398,7 @@ export const fromStepWithMetadata = <Input, Output, EnvX, ErrorX, Error, Env>(
|
|
|
395
398
|
Error,
|
|
396
399
|
Env
|
|
397
400
|
>
|
|
398
|
-
): Schedule<Output, Input, Error | ErrorX
|
|
401
|
+
): Schedule<Output, Input, Error | Pull.ExcludeDone<ErrorX>, Env | EnvX> =>
|
|
399
402
|
fromStep(effect.map(step, (f) => {
|
|
400
403
|
const meta = metadataFn()
|
|
401
404
|
return (now, input) => f(meta(now, input))
|
|
@@ -520,7 +523,9 @@ export const toStepWithSleep = <Output, Input, Error, Env>(
|
|
|
520
523
|
*
|
|
521
524
|
* @example
|
|
522
525
|
* ```ts
|
|
523
|
-
* import { Console, Duration, Effect, Schedule } from "effect"
|
|
526
|
+
* import { Console, Data, Duration, Effect, Schedule } from "effect"
|
|
527
|
+
*
|
|
528
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
524
529
|
*
|
|
525
530
|
* // Add random jitter to schedule delays
|
|
526
531
|
* const jitteredSchedule = Schedule.addDelay(
|
|
@@ -616,7 +621,7 @@ export const toStepWithSleep = <Output, Input, Error, Env>(
|
|
|
616
621
|
* Effect.gen(function*() {
|
|
617
622
|
* attempt++
|
|
618
623
|
* if (attempt < 5) {
|
|
619
|
-
* yield* Effect.fail(new
|
|
624
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
620
625
|
* }
|
|
621
626
|
* return `Success on attempt ${attempt}`
|
|
622
627
|
* }),
|
|
@@ -637,7 +642,9 @@ export const addDelay: {
|
|
|
637
642
|
*
|
|
638
643
|
* @example
|
|
639
644
|
* ```ts
|
|
640
|
-
* import { Console, Duration, Effect, Schedule } from "effect"
|
|
645
|
+
* import { Console, Data, Duration, Effect, Schedule } from "effect"
|
|
646
|
+
*
|
|
647
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
641
648
|
*
|
|
642
649
|
* // Add random jitter to schedule delays
|
|
643
650
|
* const jitteredSchedule = Schedule.addDelay(
|
|
@@ -733,7 +740,7 @@ export const addDelay: {
|
|
|
733
740
|
* Effect.gen(function*() {
|
|
734
741
|
* attempt++
|
|
735
742
|
* if (attempt < 5) {
|
|
736
|
-
* yield* Effect.fail(new
|
|
743
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
737
744
|
* }
|
|
738
745
|
* return `Success on attempt ${attempt}`
|
|
739
746
|
* }),
|
|
@@ -747,7 +754,7 @@ export const addDelay: {
|
|
|
747
754
|
* @since 2.0.0
|
|
748
755
|
* @category utils
|
|
749
756
|
*/
|
|
750
|
-
<Output, Error2 = never, Env2 = never>(f: (output: Output) => Effect<Duration.
|
|
757
|
+
<Output, Error2 = never, Env2 = never>(f: (output: Output) => Effect<Duration.Input, Error2, Env2>): <Input, Error, Env>(
|
|
751
758
|
self: Schedule<Output, Input, Error, Env>
|
|
752
759
|
) => Schedule<Output, Input, Error | Error2, Env | Env2>
|
|
753
760
|
/**
|
|
@@ -756,7 +763,9 @@ export const addDelay: {
|
|
|
756
763
|
*
|
|
757
764
|
* @example
|
|
758
765
|
* ```ts
|
|
759
|
-
* import { Console, Duration, Effect, Schedule } from "effect"
|
|
766
|
+
* import { Console, Data, Duration, Effect, Schedule } from "effect"
|
|
767
|
+
*
|
|
768
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
760
769
|
*
|
|
761
770
|
* // Add random jitter to schedule delays
|
|
762
771
|
* const jitteredSchedule = Schedule.addDelay(
|
|
@@ -852,7 +861,7 @@ export const addDelay: {
|
|
|
852
861
|
* Effect.gen(function*() {
|
|
853
862
|
* attempt++
|
|
854
863
|
* if (attempt < 5) {
|
|
855
|
-
* yield* Effect.fail(new
|
|
864
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
856
865
|
* }
|
|
857
866
|
* return `Success on attempt ${attempt}`
|
|
858
867
|
* }),
|
|
@@ -868,17 +877,16 @@ export const addDelay: {
|
|
|
868
877
|
*/
|
|
869
878
|
<Output, Input, Error, Env, Error2 = never, Env2 = never>(
|
|
870
879
|
self: Schedule<Output, Input, Error, Env>,
|
|
871
|
-
f: (output: Output) => Effect<Duration.
|
|
880
|
+
f: (output: Output) => Effect<Duration.Input, Error2, Env2>
|
|
872
881
|
): Schedule<Output, Input, Error | Error2, Env | Env2>
|
|
873
882
|
} = dual(2, <Output, Input, Error, Env, Error2 = never, Env2 = never>(
|
|
874
883
|
self: Schedule<Output, Input, Error, Env>,
|
|
875
|
-
f: (output: Output) => Effect<Duration.
|
|
884
|
+
f: (output: Output) => Effect<Duration.Input, Error2, Env2>
|
|
876
885
|
): Schedule<Output, Input, Error | Error2, Env | Env2> =>
|
|
877
886
|
modifyDelay(
|
|
878
887
|
self,
|
|
879
888
|
(output, delay) =>
|
|
880
|
-
effect.map(f(output), (d) =>
|
|
881
|
-
Duration.sum(Duration.fromDurationInputUnsafe(d), Duration.fromDurationInputUnsafe(delay)))
|
|
889
|
+
effect.map(f(output), (d) => Duration.sum(Duration.fromInputUnsafe(d), Duration.fromInputUnsafe(delay)))
|
|
882
890
|
))
|
|
883
891
|
|
|
884
892
|
/**
|
|
@@ -888,7 +896,9 @@ export const addDelay: {
|
|
|
888
896
|
*
|
|
889
897
|
* @example
|
|
890
898
|
* ```ts
|
|
891
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
899
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
900
|
+
*
|
|
901
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
892
902
|
*
|
|
893
903
|
* // First retry 3 times quickly, then switch to slower retries
|
|
894
904
|
* const quickRetries = Schedule.exponential("100 millis").pipe(
|
|
@@ -907,7 +917,7 @@ export const addDelay: {
|
|
|
907
917
|
* attempt++
|
|
908
918
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
909
919
|
* if (attempt < 6) {
|
|
910
|
-
* yield* Effect.fail(new
|
|
920
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Failure ${attempt}` }))
|
|
911
921
|
* }
|
|
912
922
|
* return `Success on attempt ${attempt}`
|
|
913
923
|
* }),
|
|
@@ -927,7 +937,9 @@ export const andThen: {
|
|
|
927
937
|
*
|
|
928
938
|
* @example
|
|
929
939
|
* ```ts
|
|
930
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
940
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
941
|
+
*
|
|
942
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
931
943
|
*
|
|
932
944
|
* // First retry 3 times quickly, then switch to slower retries
|
|
933
945
|
* const quickRetries = Schedule.exponential("100 millis").pipe(
|
|
@@ -946,7 +958,7 @@ export const andThen: {
|
|
|
946
958
|
* attempt++
|
|
947
959
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
948
960
|
* if (attempt < 6) {
|
|
949
|
-
* yield* Effect.fail(new
|
|
961
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Failure ${attempt}` }))
|
|
950
962
|
* }
|
|
951
963
|
* return `Success on attempt ${attempt}`
|
|
952
964
|
* }),
|
|
@@ -968,7 +980,9 @@ export const andThen: {
|
|
|
968
980
|
*
|
|
969
981
|
* @example
|
|
970
982
|
* ```ts
|
|
971
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
983
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
984
|
+
*
|
|
985
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
972
986
|
*
|
|
973
987
|
* // First retry 3 times quickly, then switch to slower retries
|
|
974
988
|
* const quickRetries = Schedule.exponential("100 millis").pipe(
|
|
@@ -987,7 +1001,7 @@ export const andThen: {
|
|
|
987
1001
|
* attempt++
|
|
988
1002
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
989
1003
|
* if (attempt < 6) {
|
|
990
|
-
* yield* Effect.fail(new
|
|
1004
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Failure ${attempt}` }))
|
|
991
1005
|
* }
|
|
992
1006
|
* return `Success on attempt ${attempt}`
|
|
993
1007
|
* }),
|
|
@@ -1140,116 +1154,211 @@ export const andThenResult: {
|
|
|
1140
1154
|
} = dual(2, <Output, Input, Error, Env, Output2, Input2, Error2, Env2>(
|
|
1141
1155
|
self: Schedule<Output, Input, Error, Env>,
|
|
1142
1156
|
other: Schedule<Output2, Input2, Error2, Env2>
|
|
1143
|
-
): Schedule<Result.Result<
|
|
1144
|
-
fromStep(effect.
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1157
|
+
): Schedule<Result.Result<Output, Output2>, Input & Input2, Error | Error2, Env | Env2> =>
|
|
1158
|
+
fromStep(effect.sync(() => {
|
|
1159
|
+
let currentSide = 0
|
|
1160
|
+
let currentStep:
|
|
1161
|
+
| undefined
|
|
1162
|
+
| ((now: number, input: Input & Input2) => Pull.Pull<
|
|
1163
|
+
[Result.Result<Output, Output2>, Duration.Duration],
|
|
1149
1164
|
Error | Error2,
|
|
1150
|
-
Output
|
|
1165
|
+
Result.Result<Output, Output2>,
|
|
1151
1166
|
Env | Env2
|
|
1152
|
-
>
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1167
|
+
>)
|
|
1168
|
+
const left = map(self, Result.succeed)
|
|
1169
|
+
const right = map(other, Result.fail)
|
|
1170
|
+
return function recur(
|
|
1171
|
+
now,
|
|
1172
|
+
input
|
|
1173
|
+
): Pull.Pull<
|
|
1174
|
+
[Result.Result<Output, Output2>, Duration.Duration],
|
|
1175
|
+
Error | Error2,
|
|
1176
|
+
Result.Result<Output, Output2>,
|
|
1177
|
+
Env | Env2
|
|
1178
|
+
> {
|
|
1179
|
+
if (currentStep) return currentStep(now, input)
|
|
1180
|
+
return toStep<
|
|
1181
|
+
/**
|
|
1182
|
+
* Returns a new `Schedule` that will first execute the left (i.e. `self`)
|
|
1183
|
+
* schedule to completion. Once the left schedule is complete, the right (i.e.
|
|
1184
|
+
* `other`) schedule will be executed to completion.
|
|
1185
|
+
*
|
|
1186
|
+
* The output of the resulting schedule is a `Result` where outputs of the
|
|
1187
|
+
* left schedule are emitted as `Result.Err<Output>` and outputs of the right
|
|
1188
|
+
* schedule are emitted as `Result.Ok<Output>`.
|
|
1189
|
+
*
|
|
1190
|
+
* @example
|
|
1191
|
+
* ```ts
|
|
1192
|
+
* import { Console, Effect, Result, Schedule } from "effect"
|
|
1193
|
+
*
|
|
1194
|
+
* // Track which phase of the schedule we're in
|
|
1195
|
+
* const phaseTracker = Schedule.andThenResult(
|
|
1196
|
+
* Schedule.exponential("100 millis").pipe(Schedule.take(2)),
|
|
1197
|
+
* Schedule.spaced("500 millis").pipe(Schedule.take(2))
|
|
1198
|
+
* )
|
|
1199
|
+
*
|
|
1200
|
+
* const program = Effect.gen(function*() {
|
|
1201
|
+
* yield* Effect.repeat(
|
|
1202
|
+
* Effect.gen(function*() {
|
|
1203
|
+
* yield* Console.log("Task executed")
|
|
1204
|
+
* return "task-result"
|
|
1205
|
+
* }),
|
|
1206
|
+
* phaseTracker.pipe(
|
|
1207
|
+
* Schedule.tapOutput((result) =>
|
|
1208
|
+
* Result.match(result, {
|
|
1209
|
+
* onFailure: (phase1Output) => Console.log(`Phase 1: ${phase1Output}`),
|
|
1210
|
+
* onSuccess: (phase2Output) => Console.log(`Phase 2: ${phase2Output}`)
|
|
1211
|
+
* })
|
|
1212
|
+
* )
|
|
1213
|
+
* )
|
|
1214
|
+
* )
|
|
1215
|
+
* })
|
|
1216
|
+
* ```
|
|
1217
|
+
*
|
|
1218
|
+
* @since 2.0.0
|
|
1219
|
+
* @category sequencing
|
|
1220
|
+
*/
|
|
1221
|
+
Result.Result<Output, Output2>,
|
|
1222
|
+
/**
|
|
1223
|
+
* Returns a new `Schedule` that will first execute the left (i.e. `self`)
|
|
1224
|
+
* schedule to completion. Once the left schedule is complete, the right (i.e.
|
|
1225
|
+
* `other`) schedule will be executed to completion.
|
|
1226
|
+
*
|
|
1227
|
+
* The output of the resulting schedule is a `Result` where outputs of the
|
|
1228
|
+
* left schedule are emitted as `Result.Err<Output>` and outputs of the right
|
|
1229
|
+
* schedule are emitted as `Result.Ok<Output>`.
|
|
1230
|
+
*
|
|
1231
|
+
* @example
|
|
1232
|
+
* ```ts
|
|
1233
|
+
* import { Console, Effect, Result, Schedule } from "effect"
|
|
1234
|
+
*
|
|
1235
|
+
* // Track which phase of the schedule we're in
|
|
1236
|
+
* const phaseTracker = Schedule.andThenResult(
|
|
1237
|
+
* Schedule.exponential("100 millis").pipe(Schedule.take(2)),
|
|
1238
|
+
* Schedule.spaced("500 millis").pipe(Schedule.take(2))
|
|
1239
|
+
* )
|
|
1240
|
+
*
|
|
1241
|
+
* const program = Effect.gen(function*() {
|
|
1242
|
+
* yield* Effect.repeat(
|
|
1243
|
+
* Effect.gen(function*() {
|
|
1244
|
+
* yield* Console.log("Task executed")
|
|
1245
|
+
* return "task-result"
|
|
1246
|
+
* }),
|
|
1247
|
+
* phaseTracker.pipe(
|
|
1248
|
+
* Schedule.tapOutput((result) =>
|
|
1249
|
+
* Result.match(result, {
|
|
1250
|
+
* onFailure: (phase1Output) => Console.log(`Phase 1: ${phase1Output}`),
|
|
1251
|
+
* onSuccess: (phase2Output) => Console.log(`Phase 2: ${phase2Output}`)
|
|
1252
|
+
* })
|
|
1253
|
+
* )
|
|
1254
|
+
* )
|
|
1255
|
+
* )
|
|
1256
|
+
* })
|
|
1257
|
+
* ```
|
|
1258
|
+
*
|
|
1259
|
+
* @since 2.0.0
|
|
1260
|
+
* @category sequencing
|
|
1261
|
+
*/
|
|
1262
|
+
Input & Input2,
|
|
1263
|
+
/**
|
|
1264
|
+
* Returns a new `Schedule` that will first execute the left (i.e. `self`)
|
|
1265
|
+
* schedule to completion. Once the left schedule is complete, the right (i.e.
|
|
1266
|
+
* `other`) schedule will be executed to completion.
|
|
1267
|
+
*
|
|
1268
|
+
* The output of the resulting schedule is a `Result` where outputs of the
|
|
1269
|
+
* left schedule are emitted as `Result.Err<Output>` and outputs of the right
|
|
1270
|
+
* schedule are emitted as `Result.Ok<Output>`.
|
|
1271
|
+
*
|
|
1272
|
+
* @example
|
|
1273
|
+
* ```ts
|
|
1274
|
+
* import { Console, Effect, Result, Schedule } from "effect"
|
|
1275
|
+
*
|
|
1276
|
+
* // Track which phase of the schedule we're in
|
|
1277
|
+
* const phaseTracker = Schedule.andThenResult(
|
|
1278
|
+
* Schedule.exponential("100 millis").pipe(Schedule.take(2)),
|
|
1279
|
+
* Schedule.spaced("500 millis").pipe(Schedule.take(2))
|
|
1280
|
+
* )
|
|
1281
|
+
*
|
|
1282
|
+
* const program = Effect.gen(function*() {
|
|
1283
|
+
* yield* Effect.repeat(
|
|
1284
|
+
* Effect.gen(function*() {
|
|
1285
|
+
* yield* Console.log("Task executed")
|
|
1286
|
+
* return "task-result"
|
|
1287
|
+
* }),
|
|
1288
|
+
* phaseTracker.pipe(
|
|
1289
|
+
* Schedule.tapOutput((result) =>
|
|
1290
|
+
* Result.match(result, {
|
|
1291
|
+
* onFailure: (phase1Output) => Console.log(`Phase 1: ${phase1Output}`),
|
|
1292
|
+
* onSuccess: (phase2Output) => Console.log(`Phase 2: ${phase2Output}`)
|
|
1293
|
+
* })
|
|
1294
|
+
* )
|
|
1295
|
+
* )
|
|
1296
|
+
* )
|
|
1297
|
+
* })
|
|
1298
|
+
* ```
|
|
1299
|
+
*
|
|
1300
|
+
* @since 2.0.0
|
|
1301
|
+
* @category sequencing
|
|
1302
|
+
*/
|
|
1303
|
+
Error | Error2,
|
|
1304
|
+
/**
|
|
1305
|
+
* Returns a new `Schedule` that will first execute the left (i.e. `self`)
|
|
1306
|
+
* schedule to completion. Once the left schedule is complete, the right (i.e.
|
|
1307
|
+
* `other`) schedule will be executed to completion.
|
|
1308
|
+
*
|
|
1309
|
+
* The output of the resulting schedule is a `Result` where outputs of the
|
|
1310
|
+
* left schedule are emitted as `Result.Err<Output>` and outputs of the right
|
|
1311
|
+
* schedule are emitted as `Result.Ok<Output>`.
|
|
1312
|
+
*
|
|
1313
|
+
* @example
|
|
1314
|
+
* ```ts
|
|
1315
|
+
* import { Console, Effect, Result, Schedule } from "effect"
|
|
1316
|
+
*
|
|
1317
|
+
* // Track which phase of the schedule we're in
|
|
1318
|
+
* const phaseTracker = Schedule.andThenResult(
|
|
1319
|
+
* Schedule.exponential("100 millis").pipe(Schedule.take(2)),
|
|
1320
|
+
* Schedule.spaced("500 millis").pipe(Schedule.take(2))
|
|
1321
|
+
* )
|
|
1322
|
+
*
|
|
1323
|
+
* const program = Effect.gen(function*() {
|
|
1324
|
+
* yield* Effect.repeat(
|
|
1325
|
+
* Effect.gen(function*() {
|
|
1326
|
+
* yield* Console.log("Task executed")
|
|
1327
|
+
* return "task-result"
|
|
1328
|
+
* }),
|
|
1329
|
+
* phaseTracker.pipe(
|
|
1330
|
+
* Schedule.tapOutput((result) =>
|
|
1331
|
+
* Result.match(result, {
|
|
1332
|
+
* onFailure: (phase1Output) => Console.log(`Phase 1: ${phase1Output}`),
|
|
1333
|
+
* onSuccess: (phase2Output) => Console.log(`Phase 2: ${phase2Output}`)
|
|
1334
|
+
* })
|
|
1335
|
+
* )
|
|
1336
|
+
* )
|
|
1337
|
+
* )
|
|
1338
|
+
* })
|
|
1339
|
+
* ```
|
|
1340
|
+
*
|
|
1341
|
+
* @since 2.0.0
|
|
1342
|
+
* @category sequencing
|
|
1343
|
+
*/
|
|
1344
|
+
Env | Env2
|
|
1345
|
+
>(currentSide === 0 ? left : right).pipe(
|
|
1346
|
+
effect.flatMap((step) => {
|
|
1347
|
+
currentSide++
|
|
1348
|
+
if (currentSide === 1) {
|
|
1349
|
+
currentStep = (now, input) =>
|
|
1350
|
+
Pull.catchDone(step(now, input), (_) => {
|
|
1351
|
+
currentStep = undefined
|
|
1352
|
+
return recur(now, input)
|
|
1353
|
+
})
|
|
1354
|
+
return currentStep(now, input)
|
|
1355
|
+
}
|
|
1356
|
+
currentStep = step
|
|
1357
|
+
return currentStep(now, input)
|
|
1358
|
+
})
|
|
1359
|
+
);
|
|
1360
|
+
};
|
|
1361
|
+
})))
|
|
1253
1362
|
|
|
1254
1363
|
/**
|
|
1255
1364
|
* Combines two `Schedule`s by recurring if both of the two schedules want
|
|
@@ -1258,7 +1367,9 @@ export const andThenResult: {
|
|
|
1258
1367
|
*
|
|
1259
1368
|
* @example
|
|
1260
1369
|
* ```ts
|
|
1261
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
1370
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
1371
|
+
*
|
|
1372
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1262
1373
|
*
|
|
1263
1374
|
* // Both schedules must want to continue for the combined schedule to continue
|
|
1264
1375
|
* const timeLimit = Schedule.spaced("1 second").pipe(Schedule.take(5)) // max 5 times
|
|
@@ -1300,7 +1411,7 @@ export const andThenResult: {
|
|
|
1300
1411
|
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
1301
1412
|
*
|
|
1302
1413
|
* if (attempt < 3) {
|
|
1303
|
-
* yield* Effect.fail(new
|
|
1414
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1304
1415
|
* }
|
|
1305
1416
|
*
|
|
1306
1417
|
* return `Success on attempt ${attempt}`
|
|
@@ -1326,7 +1437,9 @@ export const both: {
|
|
|
1326
1437
|
*
|
|
1327
1438
|
* @example
|
|
1328
1439
|
* ```ts
|
|
1329
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
1440
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
1441
|
+
*
|
|
1442
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1330
1443
|
*
|
|
1331
1444
|
* // Both schedules must want to continue for the combined schedule to continue
|
|
1332
1445
|
* const timeLimit = Schedule.spaced("1 second").pipe(Schedule.take(5)) // max 5 times
|
|
@@ -1368,7 +1481,7 @@ export const both: {
|
|
|
1368
1481
|
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
1369
1482
|
*
|
|
1370
1483
|
* if (attempt < 3) {
|
|
1371
|
-
* yield* Effect.fail(new
|
|
1484
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1372
1485
|
* }
|
|
1373
1486
|
*
|
|
1374
1487
|
* return `Success on attempt ${attempt}`
|
|
@@ -1396,7 +1509,9 @@ export const both: {
|
|
|
1396
1509
|
*
|
|
1397
1510
|
* @example
|
|
1398
1511
|
* ```ts
|
|
1399
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
1512
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
1513
|
+
*
|
|
1514
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1400
1515
|
*
|
|
1401
1516
|
* // Both schedules must want to continue for the combined schedule to continue
|
|
1402
1517
|
* const timeLimit = Schedule.spaced("1 second").pipe(Schedule.take(5)) // max 5 times
|
|
@@ -1438,7 +1553,7 @@ export const both: {
|
|
|
1438
1553
|
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
1439
1554
|
*
|
|
1440
1555
|
* if (attempt < 3) {
|
|
1441
|
-
* yield* Effect.fail(new
|
|
1556
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1442
1557
|
* }
|
|
1443
1558
|
*
|
|
1444
1559
|
* return `Success on attempt ${attempt}`
|
|
@@ -1845,7 +1960,9 @@ export const bothWith: {
|
|
|
1845
1960
|
*
|
|
1846
1961
|
* @example
|
|
1847
1962
|
* ```ts
|
|
1848
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
1963
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
1964
|
+
*
|
|
1965
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1849
1966
|
*
|
|
1850
1967
|
* // Compose a quick retry phase followed by slower retry phase
|
|
1851
1968
|
* const fastRetries = Schedule.exponential("100 millis").pipe(
|
|
@@ -1869,7 +1986,7 @@ export const bothWith: {
|
|
|
1869
1986
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
1870
1987
|
*
|
|
1871
1988
|
* if (attempt < 7) { // Needs both phases to succeed
|
|
1872
|
-
* yield* Effect.fail(new
|
|
1989
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1873
1990
|
* }
|
|
1874
1991
|
*
|
|
1875
1992
|
* return `Success on attempt ${attempt}`
|
|
@@ -1908,7 +2025,9 @@ export const compose: {
|
|
|
1908
2025
|
*
|
|
1909
2026
|
* @example
|
|
1910
2027
|
* ```ts
|
|
1911
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
2028
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
2029
|
+
*
|
|
2030
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1912
2031
|
*
|
|
1913
2032
|
* // Compose a quick retry phase followed by slower retry phase
|
|
1914
2033
|
* const fastRetries = Schedule.exponential("100 millis").pipe(
|
|
@@ -1932,7 +2051,7 @@ export const compose: {
|
|
|
1932
2051
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
1933
2052
|
*
|
|
1934
2053
|
* if (attempt < 7) { // Needs both phases to succeed
|
|
1935
|
-
* yield* Effect.fail(new
|
|
2054
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
1936
2055
|
* }
|
|
1937
2056
|
*
|
|
1938
2057
|
* return `Success on attempt ${attempt}`
|
|
@@ -1973,7 +2092,9 @@ export const compose: {
|
|
|
1973
2092
|
*
|
|
1974
2093
|
* @example
|
|
1975
2094
|
* ```ts
|
|
1976
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
2095
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
2096
|
+
*
|
|
2097
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
1977
2098
|
*
|
|
1978
2099
|
* // Compose a quick retry phase followed by slower retry phase
|
|
1979
2100
|
* const fastRetries = Schedule.exponential("100 millis").pipe(
|
|
@@ -1997,7 +2118,7 @@ export const compose: {
|
|
|
1997
2118
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
1998
2119
|
*
|
|
1999
2120
|
* if (attempt < 7) { // Needs both phases to succeed
|
|
2000
|
-
* yield* Effect.fail(new
|
|
2121
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
2001
2122
|
* }
|
|
2002
2123
|
*
|
|
2003
2124
|
* return `Success on attempt ${attempt}`
|
|
@@ -2313,7 +2434,7 @@ export const collectWhile: {
|
|
|
2313
2434
|
<Input, Output, Error2 = never, Env2 = never>(
|
|
2314
2435
|
predicate: (
|
|
2315
2436
|
metadata: Metadata<Output, Input>
|
|
2316
|
-
) => Effect<boolean, Error2, Env2>
|
|
2437
|
+
) => boolean | Effect<boolean, Error2, Env2>
|
|
2317
2438
|
): <Error, Env>(
|
|
2318
2439
|
self: Schedule<Output, Input, Error, Env>
|
|
2319
2440
|
) => Schedule<Array<Output>, Input, Error | Error2, Env | Env2>
|
|
@@ -2425,19 +2546,18 @@ export const collectWhile: {
|
|
|
2425
2546
|
self: Schedule<Output, Input, Error, Env>,
|
|
2426
2547
|
predicate: (
|
|
2427
2548
|
metadata: Metadata<Output, Input>
|
|
2428
|
-
) => Effect<boolean, Error2, Env2>
|
|
2549
|
+
) => boolean | Effect<boolean, Error2, Env2>
|
|
2429
2550
|
): Schedule<Array<Output>, Input, Error | Error2, Env | Env2>
|
|
2430
2551
|
} = dual(2, <Output, Input, Error, Env, Error2 = never, Env2 = never>(
|
|
2431
2552
|
self: Schedule<Output, Input, Error, Env>,
|
|
2432
2553
|
predicate: (
|
|
2433
2554
|
metadata: Metadata<Output, Input>
|
|
2434
|
-
) => Effect<boolean, Error2, Env2>
|
|
2555
|
+
) => boolean | Effect<boolean, Error2, Env2>
|
|
2435
2556
|
): Schedule<Array<Output>, Input, Error | Error2, Env | Env2> =>
|
|
2436
|
-
reduce(while_(self, predicate), () => [] as Array<Output>, (outputs, output) =>
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
})())))
|
|
2557
|
+
reduce(while_(self, predicate), () => [] as Array<Output>, (outputs, output) => {
|
|
2558
|
+
outputs.push(output)
|
|
2559
|
+
return outputs
|
|
2560
|
+
}))
|
|
2441
2561
|
|
|
2442
2562
|
/**
|
|
2443
2563
|
* Returns a new `Schedule` that recurs on the specified `Cron` schedule and
|
|
@@ -2445,7 +2565,9 @@ export const collectWhile: {
|
|
|
2445
2565
|
*
|
|
2446
2566
|
* @example
|
|
2447
2567
|
* ```ts
|
|
2448
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
2568
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
2569
|
+
*
|
|
2570
|
+
* class ScheduledTaskError extends Data.TaggedError("ScheduledTaskError")<{ readonly message: string }> {}
|
|
2449
2571
|
*
|
|
2450
2572
|
* // Run every minute
|
|
2451
2573
|
* const everyMinute = Schedule.cron("* * * * *")
|
|
@@ -2546,7 +2668,7 @@ export const collectWhile: {
|
|
|
2546
2668
|
* yield* Console.log("Complex scheduled task...")
|
|
2547
2669
|
* // Simulate occasional failures
|
|
2548
2670
|
* if (Math.random() < 0.3) {
|
|
2549
|
-
* yield* Effect.fail(new
|
|
2671
|
+
* return yield* Effect.fail(new ScheduledTaskError({ message: "Scheduled task failed" }))
|
|
2550
2672
|
* }
|
|
2551
2673
|
* return "success"
|
|
2552
2674
|
* }),
|
|
@@ -2569,7 +2691,9 @@ export const cron: {
|
|
|
2569
2691
|
*
|
|
2570
2692
|
* @example
|
|
2571
2693
|
* ```ts
|
|
2572
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
2694
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
2695
|
+
*
|
|
2696
|
+
* class ScheduledTaskError extends Data.TaggedError("ScheduledTaskError")<{ readonly message: string }> {}
|
|
2573
2697
|
*
|
|
2574
2698
|
* // Run every minute
|
|
2575
2699
|
* const everyMinute = Schedule.cron("* * * * *")
|
|
@@ -2670,7 +2794,7 @@ export const cron: {
|
|
|
2670
2794
|
* yield* Console.log("Complex scheduled task...")
|
|
2671
2795
|
* // Simulate occasional failures
|
|
2672
2796
|
* if (Math.random() < 0.3) {
|
|
2673
|
-
* yield* Effect.fail(new
|
|
2797
|
+
* return yield* Effect.fail(new ScheduledTaskError({ message: "Scheduled task failed" }))
|
|
2674
2798
|
* }
|
|
2675
2799
|
* return "success"
|
|
2676
2800
|
* }),
|
|
@@ -2693,7 +2817,9 @@ export const cron: {
|
|
|
2693
2817
|
*
|
|
2694
2818
|
* @example
|
|
2695
2819
|
* ```ts
|
|
2696
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
2820
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
2821
|
+
*
|
|
2822
|
+
* class ScheduledTaskError extends Data.TaggedError("ScheduledTaskError")<{ readonly message: string }> {}
|
|
2697
2823
|
*
|
|
2698
2824
|
* // Run every minute
|
|
2699
2825
|
* const everyMinute = Schedule.cron("* * * * *")
|
|
@@ -2794,7 +2920,7 @@ export const cron: {
|
|
|
2794
2920
|
* yield* Console.log("Complex scheduled task...")
|
|
2795
2921
|
* // Simulate occasional failures
|
|
2796
2922
|
* if (Math.random() < 0.3) {
|
|
2797
|
-
* yield* Effect.fail(new
|
|
2923
|
+
* return yield* Effect.fail(new ScheduledTaskError({ message: "Scheduled task failed" }))
|
|
2798
2924
|
* }
|
|
2799
2925
|
* return "success"
|
|
2800
2926
|
* }),
|
|
@@ -2916,13 +3042,33 @@ export const delays = <Out, In, E, R>(self: Schedule<Out, In, E, R>): Schedule<D
|
|
|
2916
3042
|
)
|
|
2917
3043
|
)
|
|
2918
3044
|
|
|
3045
|
+
/**
|
|
3046
|
+
* Returns a schedule that recurs once after the specified duration.
|
|
3047
|
+
*
|
|
3048
|
+
* The schedule outputs the configured duration for its first recurrence and
|
|
3049
|
+
* then completes.
|
|
3050
|
+
*
|
|
3051
|
+
* @since 2.0.0
|
|
3052
|
+
* @category constructors
|
|
3053
|
+
*/
|
|
3054
|
+
export const duration = (durationInput: Duration.Input): Schedule<Duration.Duration> => {
|
|
3055
|
+
const duration = Duration.fromInputUnsafe(durationInput)
|
|
3056
|
+
return fromStepWithMetadata(effect.succeed((meta) =>
|
|
3057
|
+
meta.attempt === 1
|
|
3058
|
+
? effect.succeed([duration, duration])
|
|
3059
|
+
: Cause.done(Duration.zero)
|
|
3060
|
+
))
|
|
3061
|
+
}
|
|
3062
|
+
|
|
2919
3063
|
/**
|
|
2920
3064
|
* Returns a new `Schedule` that will always recur, but only during the
|
|
2921
3065
|
* specified `duration` of time.
|
|
2922
3066
|
*
|
|
2923
3067
|
* @example
|
|
2924
3068
|
* ```ts
|
|
2925
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
3069
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
3070
|
+
*
|
|
3071
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
2926
3072
|
*
|
|
2927
3073
|
* // Run a task for exactly 5 seconds, regardless of how many iterations
|
|
2928
3074
|
* const fiveSecondSchedule = Schedule.during("5 seconds")
|
|
@@ -2984,7 +3130,7 @@ export const delays = <Out, In, E, R>(self: Schedule<Out, In, E, R>): Schedule<D
|
|
|
2984
3130
|
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
2985
3131
|
*
|
|
2986
3132
|
* if (Math.random() < 0.8) { // 80% failure rate
|
|
2987
|
-
* yield* Effect.fail(new
|
|
3133
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
2988
3134
|
* }
|
|
2989
3135
|
*
|
|
2990
3136
|
* return `Success on attempt ${attempt}`
|
|
@@ -3001,10 +3147,10 @@ export const delays = <Out, In, E, R>(self: Schedule<Out, In, E, R>): Schedule<D
|
|
|
3001
3147
|
* @since 4.0.0
|
|
3002
3148
|
* @category constructors
|
|
3003
3149
|
*/
|
|
3004
|
-
export const during = (duration: Duration.
|
|
3150
|
+
export const during = (duration: Duration.Input): Schedule<Duration.Duration> =>
|
|
3005
3151
|
while_(
|
|
3006
3152
|
elapsed,
|
|
3007
|
-
({ output }) => effect.succeed(Duration.isLessThanOrEqualTo(output, Duration.
|
|
3153
|
+
({ output }) => effect.succeed(Duration.isLessThanOrEqualTo(output, Duration.fromInputUnsafe(duration)))
|
|
3008
3154
|
)
|
|
3009
3155
|
|
|
3010
3156
|
/**
|
|
@@ -3014,7 +3160,9 @@ export const during = (duration: Duration.DurationInput): Schedule<Duration.Dura
|
|
|
3014
3160
|
*
|
|
3015
3161
|
* @example
|
|
3016
3162
|
* ```ts
|
|
3017
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
3163
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
3164
|
+
*
|
|
3165
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
3018
3166
|
*
|
|
3019
3167
|
* // Either continues as long as at least one schedule wants to continue
|
|
3020
3168
|
* const timeBasedSchedule = Schedule.spaced("2 seconds").pipe(Schedule.take(3))
|
|
@@ -3058,7 +3206,7 @@ export const during = (duration: Duration.DurationInput): Schedule<Duration.Dura
|
|
|
3058
3206
|
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
3059
3207
|
*
|
|
3060
3208
|
* if (attempt < 6) {
|
|
3061
|
-
* yield* Effect.fail(new
|
|
3209
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
3062
3210
|
* }
|
|
3063
3211
|
*
|
|
3064
3212
|
* return `Success on attempt ${attempt}`
|
|
@@ -3084,7 +3232,9 @@ export const either: {
|
|
|
3084
3232
|
*
|
|
3085
3233
|
* @example
|
|
3086
3234
|
* ```ts
|
|
3087
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
3235
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
3236
|
+
*
|
|
3237
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
3088
3238
|
*
|
|
3089
3239
|
* // Either continues as long as at least one schedule wants to continue
|
|
3090
3240
|
* const timeBasedSchedule = Schedule.spaced("2 seconds").pipe(Schedule.take(3))
|
|
@@ -3128,7 +3278,7 @@ export const either: {
|
|
|
3128
3278
|
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
3129
3279
|
*
|
|
3130
3280
|
* if (attempt < 6) {
|
|
3131
|
-
* yield* Effect.fail(new
|
|
3281
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
3132
3282
|
* }
|
|
3133
3283
|
*
|
|
3134
3284
|
* return `Success on attempt ${attempt}`
|
|
@@ -3156,7 +3306,9 @@ export const either: {
|
|
|
3156
3306
|
*
|
|
3157
3307
|
* @example
|
|
3158
3308
|
* ```ts
|
|
3159
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
3309
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
3310
|
+
*
|
|
3311
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
3160
3312
|
*
|
|
3161
3313
|
* // Either continues as long as at least one schedule wants to continue
|
|
3162
3314
|
* const timeBasedSchedule = Schedule.spaced("2 seconds").pipe(Schedule.take(3))
|
|
@@ -3200,7 +3352,7 @@ export const either: {
|
|
|
3200
3352
|
* yield* Console.log(`Retry attempt ${attempt}`)
|
|
3201
3353
|
*
|
|
3202
3354
|
* if (attempt < 6) {
|
|
3203
|
-
* yield* Effect.fail(new
|
|
3355
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
3204
3356
|
* }
|
|
3205
3357
|
*
|
|
3206
3358
|
* return `Success on attempt ${attempt}`
|
|
@@ -3704,7 +3856,9 @@ export const elapsed: Schedule<Duration.Duration> = fromStepWithMetadata(
|
|
|
3704
3856
|
*
|
|
3705
3857
|
* @example
|
|
3706
3858
|
* ```ts
|
|
3707
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
3859
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
3860
|
+
*
|
|
3861
|
+
* class RetryFailure extends Data.TaggedError("RetryFailure")<{ readonly message: string }> {}
|
|
3708
3862
|
*
|
|
3709
3863
|
* // Basic exponential backoff with default factor of 2
|
|
3710
3864
|
* const basicExponential = Schedule.exponential("100 millis")
|
|
@@ -3727,7 +3881,7 @@ export const elapsed: Schedule<Duration.Duration> = fromStepWithMetadata(
|
|
|
3727
3881
|
* attempt++
|
|
3728
3882
|
* if (attempt < 4) {
|
|
3729
3883
|
* yield* Console.log(`Attempt ${attempt} failed, retrying...`)
|
|
3730
|
-
* yield* Effect.fail(new
|
|
3884
|
+
* return yield* Effect.fail(new RetryFailure({ message: `Failure ${attempt}` }))
|
|
3731
3885
|
* }
|
|
3732
3886
|
* return `Success on attempt ${attempt}`
|
|
3733
3887
|
* }),
|
|
@@ -3744,10 +3898,10 @@ export const elapsed: Schedule<Duration.Duration> = fromStepWithMetadata(
|
|
|
3744
3898
|
* @category constructors
|
|
3745
3899
|
*/
|
|
3746
3900
|
export const exponential = (
|
|
3747
|
-
base: Duration.
|
|
3901
|
+
base: Duration.Input,
|
|
3748
3902
|
factor: number = 2
|
|
3749
3903
|
): Schedule<Duration.Duration> => {
|
|
3750
|
-
const baseMillis = Duration.toMillis(Duration.
|
|
3904
|
+
const baseMillis = Duration.toMillis(Duration.fromInputUnsafe(base))
|
|
3751
3905
|
return fromStepWithMetadata(effect.succeed((meta) => {
|
|
3752
3906
|
const duration = Duration.millis(baseMillis * Math.pow(factor, meta.attempt - 1))
|
|
3753
3907
|
return effect.succeed([duration, duration])
|
|
@@ -3761,7 +3915,9 @@ export const exponential = (
|
|
|
3761
3915
|
*
|
|
3762
3916
|
* @example
|
|
3763
3917
|
* ```ts
|
|
3764
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
3918
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
3919
|
+
*
|
|
3920
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
3765
3921
|
*
|
|
3766
3922
|
* // Basic fibonacci schedule starting with 100ms
|
|
3767
3923
|
* const fibSchedule = Schedule.fibonacci("100 millis")
|
|
@@ -3777,7 +3933,7 @@ export const exponential = (
|
|
|
3777
3933
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
3778
3934
|
*
|
|
3779
3935
|
* if (attempt < 5) {
|
|
3780
|
-
* yield* Effect.fail(new
|
|
3936
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
3781
3937
|
* }
|
|
3782
3938
|
*
|
|
3783
3939
|
* return `Success on attempt ${attempt}`
|
|
@@ -3818,8 +3974,8 @@ export const exponential = (
|
|
|
3818
3974
|
* @since 2.0.0
|
|
3819
3975
|
* @category constructors
|
|
3820
3976
|
*/
|
|
3821
|
-
export const fibonacci = (one: Duration.
|
|
3822
|
-
const oneMillis = Duration.toMillis(Duration.
|
|
3977
|
+
export const fibonacci = (one: Duration.Input): Schedule<Duration.Duration> => {
|
|
3978
|
+
const oneMillis = Duration.toMillis(Duration.fromInputUnsafe(one))
|
|
3823
3979
|
return fromStep(effect.sync(() => {
|
|
3824
3980
|
let a = 0
|
|
3825
3981
|
let b = oneMillis
|
|
@@ -3895,12 +4051,12 @@ export const fibonacci = (one: Duration.DurationInput): Schedule<Duration.Durati
|
|
|
3895
4051
|
* @since 2.0.0
|
|
3896
4052
|
* @category constructors
|
|
3897
4053
|
*/
|
|
3898
|
-
export const fixed = (interval: Duration.
|
|
3899
|
-
const window = Duration.toMillis(Duration.
|
|
4054
|
+
export const fixed = (interval: Duration.Input): Schedule<number> => {
|
|
4055
|
+
const window = Duration.toMillis(Duration.fromInputUnsafe(interval))
|
|
3900
4056
|
return fromStepWithMetadata(effect.succeed((meta) =>
|
|
3901
4057
|
effect.succeed([
|
|
3902
4058
|
meta.attempt - 1,
|
|
3903
|
-
window === 0
|
|
4059
|
+
window === 0
|
|
3904
4060
|
? Duration.zero
|
|
3905
4061
|
: Duration.millis(window - (meta.elapsed % window))
|
|
3906
4062
|
])
|
|
@@ -4032,7 +4188,7 @@ export const map: {
|
|
|
4032
4188
|
* @since 2.0.0
|
|
4033
4189
|
* @category mapping
|
|
4034
4190
|
*/
|
|
4035
|
-
<Output, Output2, Error2 = never, Env2 = never>(f: (output: Output) => Effect<Output2, Error2, Env2>): <Input, Error, Env>(
|
|
4191
|
+
<Output, Output2, Error2 = never, Env2 = never>(f: (output: Output) => Output2 | Effect<Output2, Error2, Env2>): <Input, Error, Env>(
|
|
4036
4192
|
self: Schedule<Output, Input, Error, Env>
|
|
4037
4193
|
) => Schedule<Output2, Input, Error | Error2, Env | Env2>
|
|
4038
4194
|
/**
|
|
@@ -4099,17 +4255,24 @@ export const map: {
|
|
|
4099
4255
|
*/
|
|
4100
4256
|
<Output, Input, Error, Env, Output2, Error2 = never, Env2 = never>(
|
|
4101
4257
|
self: Schedule<Output, Input, Error, Env>,
|
|
4102
|
-
f: (output: Output) => Effect<Output2, Error2, Env2>
|
|
4258
|
+
f: (output: Output) => Output2 | Effect<Output2, Error2, Env2>
|
|
4103
4259
|
): Schedule<Output2, Input, Error | Error2, Env | Env2>
|
|
4104
4260
|
} = dual(2, <Output, Input, Error, Env, Output2, Error2 = never, Env2 = never>(
|
|
4105
4261
|
self: Schedule<Output, Input, Error, Env>,
|
|
4106
|
-
f: (output: Output) => Effect<Output2, Error2, Env2>
|
|
4262
|
+
f: (output: Output) => Output2 | Effect<Output2, Error2, Env2>
|
|
4107
4263
|
): Schedule<Output2, Input, Error | Error2, Env | Env2> => {
|
|
4108
4264
|
const handle = Pull.matchEffect({
|
|
4109
|
-
onSuccess: ([output, duration]: [Output, Duration.Duration]) =>
|
|
4110
|
-
|
|
4265
|
+
onSuccess: ([output, duration]: [Output, Duration.Duration]) => {
|
|
4266
|
+
const result = f(output)
|
|
4267
|
+
if (!isEffect(result)) return effect.succeed([result, duration] as [Output2, Duration.Duration])
|
|
4268
|
+
return effect.map(result, (output) => [output, duration] as [Output2, Duration.Duration])
|
|
4269
|
+
},
|
|
4111
4270
|
onFailure: effect.failCause<Error>,
|
|
4112
|
-
onDone: (output: Output) =>
|
|
4271
|
+
onDone: (output: Output) => {
|
|
4272
|
+
const result = f(output)
|
|
4273
|
+
if (!isEffect(result)) return Cause.done(result as Output2)
|
|
4274
|
+
return effect.flatMap(result, Cause.done)
|
|
4275
|
+
}
|
|
4113
4276
|
})
|
|
4114
4277
|
return fromStep(effect.map(toStep(self), (step) => (now, input) => handle(step(now, input))))
|
|
4115
4278
|
})
|
|
@@ -4183,7 +4346,7 @@ export const modifyDelay: {
|
|
|
4183
4346
|
f: (
|
|
4184
4347
|
output: Output,
|
|
4185
4348
|
delay: Duration.Duration
|
|
4186
|
-
) => Effect<Duration.
|
|
4349
|
+
) => Effect<Duration.Input, Error2, Env2>
|
|
4187
4350
|
): <Input, Error, Env>(
|
|
4188
4351
|
self: Schedule<Output, Input, Error, Env>
|
|
4189
4352
|
) => Schedule<Output, Input, Error | Error2, Env | Env2>
|
|
@@ -4223,22 +4386,39 @@ export const modifyDelay: {
|
|
|
4223
4386
|
self: Schedule<Output, Input, Error, Env>,
|
|
4224
4387
|
f: (
|
|
4225
4388
|
output: Output,
|
|
4226
|
-
delay: Duration.
|
|
4227
|
-
) => Effect<Duration.
|
|
4389
|
+
delay: Duration.Input
|
|
4390
|
+
) => Effect<Duration.Input, Error2, Env2>
|
|
4228
4391
|
): Schedule<Output, Input, Error | Error2, Env | Env2>
|
|
4229
4392
|
} = dual(2, <Output, Input, Error, Env, Error2 = never, Env2 = never>(
|
|
4230
4393
|
self: Schedule<Output, Input, Error, Env>,
|
|
4231
4394
|
f: (
|
|
4232
4395
|
output: Output,
|
|
4233
|
-
delay: Duration.
|
|
4234
|
-
) => Effect<Duration.
|
|
4396
|
+
delay: Duration.Input
|
|
4397
|
+
) => Effect<Duration.Input, Error2, Env2>
|
|
4235
4398
|
): Schedule<Output, Input, Error | Error2, Env | Env2> =>
|
|
4236
4399
|
fromStep(effect.map(toStep(self), (step) => (now, input) =>
|
|
4237
4400
|
effect.flatMap(
|
|
4238
4401
|
step(now, input),
|
|
4239
|
-
([output, delay]) => effect.map(f(output, delay), (delay) => [output, Duration.
|
|
4402
|
+
([output, delay]) => effect.map(f(output, delay), (delay) => [output, Duration.fromInputUnsafe(delay)])
|
|
4240
4403
|
))))
|
|
4241
4404
|
|
|
4405
|
+
/**
|
|
4406
|
+
* Returns a new `Schedule` that randomly adjusts each recurrence delay.
|
|
4407
|
+
*
|
|
4408
|
+
* Delays are jittered between `80%` and `120%` of the original delay.
|
|
4409
|
+
*
|
|
4410
|
+
* @since 2.0.0
|
|
4411
|
+
* @category utilities
|
|
4412
|
+
*/
|
|
4413
|
+
export const jittered = <Output, Input, Error, Env>(
|
|
4414
|
+
self: Schedule<Output, Input, Error, Env>
|
|
4415
|
+
): Schedule<Output, Input, Error, Env> =>
|
|
4416
|
+
modifyDelay(self, (_, delay) =>
|
|
4417
|
+
effect.map(randomNext, (random) => {
|
|
4418
|
+
const millis = Duration.toMillis(Duration.fromInputUnsafe(delay))
|
|
4419
|
+
return Duration.millis(millis * 0.8 * (1 - random) + millis * 1.2 * random)
|
|
4420
|
+
}))
|
|
4421
|
+
|
|
4242
4422
|
/**
|
|
4243
4423
|
* Returns a new `Schedule` that outputs the inputs of the specified schedule.
|
|
4244
4424
|
*
|
|
@@ -4283,7 +4463,9 @@ export const passthrough = <Output, Input, Error, Env>(
|
|
|
4283
4463
|
*
|
|
4284
4464
|
* @example
|
|
4285
4465
|
* ```ts
|
|
4286
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
4466
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
4467
|
+
*
|
|
4468
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
4287
4469
|
*
|
|
4288
4470
|
* // Basic recurs - retry at most 3 times
|
|
4289
4471
|
* const maxThreeAttempts = Schedule.recurs(3)
|
|
@@ -4298,7 +4480,7 @@ export const passthrough = <Output, Input, Error, Env>(
|
|
|
4298
4480
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
4299
4481
|
*
|
|
4300
4482
|
* if (attempt < 4) {
|
|
4301
|
-
* yield* Effect.fail(new
|
|
4483
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
4302
4484
|
* }
|
|
4303
4485
|
*
|
|
4304
4486
|
* return `Success on attempt ${attempt}`
|
|
@@ -4559,7 +4741,7 @@ export const reduce: {
|
|
|
4559
4741
|
*/
|
|
4560
4742
|
<State, Output, Error2 = never, Env2 = never>(
|
|
4561
4743
|
initial: LazyArg<State>,
|
|
4562
|
-
combine: (state: State, output: Output) => Effect<State, Error2, Env2>
|
|
4744
|
+
combine: (state: State, output: Output) => State | Effect<State, Error2, Env2>
|
|
4563
4745
|
): <Input, Error, Env>(
|
|
4564
4746
|
self: Schedule<Output, Input, Error, Env>
|
|
4565
4747
|
) => Schedule<State, Input, Error | Error2, Env | Env2>
|
|
@@ -4677,24 +4859,33 @@ export const reduce: {
|
|
|
4677
4859
|
<Output, Input, Error, Env, State, Error2 = never, Env2 = never>(
|
|
4678
4860
|
self: Schedule<Output, Input, Error, Env>,
|
|
4679
4861
|
initial: LazyArg<State>,
|
|
4680
|
-
combine: (state: State, output: Output) => Effect<State, Error2, Env2>
|
|
4862
|
+
combine: (state: State, output: Output) => State | Effect<State, Error2, Env2>
|
|
4681
4863
|
): Schedule<State, Input, Error | Error2, Env | Env2>
|
|
4682
4864
|
} = dual(3, <Output, Input, Error, Env, State, Error2 = never, Env2 = never>(
|
|
4683
4865
|
self: Schedule<Output, Input, Error, Env>,
|
|
4684
4866
|
initial: LazyArg<State>,
|
|
4685
|
-
combine: (state: State, output: Output) => Effect<State, Error2, Env2>
|
|
4867
|
+
combine: (state: State, output: Output) => State | Effect<State, Error2, Env2>
|
|
4686
4868
|
): Schedule<State, Input, Error | Error2, Env | Env2> =>
|
|
4687
4869
|
fromStep(effect.map(toStep(self), (step) => {
|
|
4688
4870
|
let state = initial()
|
|
4689
4871
|
return (now, input) =>
|
|
4690
4872
|
Pull.matchEffect(step(now, input), {
|
|
4691
|
-
onSuccess
|
|
4692
|
-
|
|
4873
|
+
onSuccess([output, delay]) {
|
|
4874
|
+
const next = combine(state, output)
|
|
4875
|
+
if (!isEffect(next)) {
|
|
4876
|
+
state = next
|
|
4877
|
+
return effect.succeed([next, delay] as [State, Duration.Duration])
|
|
4878
|
+
}
|
|
4879
|
+
return effect.map(next, (nextState) => {
|
|
4693
4880
|
state = nextState
|
|
4694
4881
|
return [nextState, delay]
|
|
4695
|
-
})
|
|
4882
|
+
})
|
|
4883
|
+
},
|
|
4696
4884
|
onFailure: effect.failCause,
|
|
4697
|
-
onDone
|
|
4885
|
+
onDone(output) {
|
|
4886
|
+
const next = combine(state, output)
|
|
4887
|
+
return isEffect(next) ? effect.flatMap(next, Cause.done) : Cause.done(next)
|
|
4888
|
+
}
|
|
4698
4889
|
})
|
|
4699
4890
|
})))
|
|
4700
4891
|
|
|
@@ -4747,8 +4938,8 @@ export const reduce: {
|
|
|
4747
4938
|
* @since 2.0.0
|
|
4748
4939
|
* @category constructors
|
|
4749
4940
|
*/
|
|
4750
|
-
export const spaced = (duration: Duration.
|
|
4751
|
-
const decoded = Duration.
|
|
4941
|
+
export const spaced = (duration: Duration.Input): Schedule<number> => {
|
|
4942
|
+
const decoded = Duration.fromInputUnsafe(duration)
|
|
4752
4943
|
return fromStepWithMetadata(effect.succeed((meta) => effect.succeed([meta.attempt - 1, decoded])))
|
|
4753
4944
|
}
|
|
4754
4945
|
|
|
@@ -4759,12 +4950,14 @@ export const spaced = (duration: Duration.DurationInput): Schedule<number> => {
|
|
|
4759
4950
|
*
|
|
4760
4951
|
* @example
|
|
4761
4952
|
* ```ts
|
|
4762
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
4953
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
4954
|
+
*
|
|
4955
|
+
* class RetryError extends Data.TaggedError("RetryError")<{ readonly message: string }> {}
|
|
4763
4956
|
*
|
|
4764
4957
|
* // Log retry errors for debugging
|
|
4765
4958
|
* const errorLoggingSchedule = Schedule.exponential("100 millis").pipe(
|
|
4766
4959
|
* Schedule.take(3),
|
|
4767
|
-
* Schedule.tapInput((error:
|
|
4960
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
4768
4961
|
* Console.log(`Retry triggered by error: ${String(error)}`)
|
|
4769
4962
|
* )
|
|
4770
4963
|
* )
|
|
@@ -4776,7 +4969,7 @@ export const spaced = (duration: Duration.DurationInput): Schedule<number> => {
|
|
|
4776
4969
|
* Effect.gen(function*() {
|
|
4777
4970
|
* attempt++
|
|
4778
4971
|
* if (attempt < 4) {
|
|
4779
|
-
* yield* Effect.fail(new
|
|
4972
|
+
* return yield* Effect.fail(new RetryError({ message: `Network timeout on attempt ${attempt}` }))
|
|
4780
4973
|
* }
|
|
4781
4974
|
* return `Success on attempt ${attempt}`
|
|
4782
4975
|
* }),
|
|
@@ -4825,7 +5018,7 @@ export const spaced = (duration: Duration.DurationInput): Schedule<number> => {
|
|
|
4825
5018
|
* // Conditional alerting based on input
|
|
4826
5019
|
* const alertingSchedule = Schedule.exponential("200 millis").pipe(
|
|
4827
5020
|
* Schedule.take(6),
|
|
4828
|
-
* Schedule.tapInput((error:
|
|
5021
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
4829
5022
|
* Effect.gen(function*() {
|
|
4830
5023
|
* if (String(error).includes("critical")) {
|
|
4831
5024
|
* yield* Console.log(`🚨 CRITICAL ERROR: ${String(error)}`)
|
|
@@ -4847,7 +5040,7 @@ export const spaced = (duration: Duration.DurationInput): Schedule<number> => {
|
|
|
4847
5040
|
* const errorType = isCritical
|
|
4848
5041
|
* ? "critical database failure"
|
|
4849
5042
|
* : "temporary network issue"
|
|
4850
|
-
* yield* Effect.fail(new
|
|
5043
|
+
* return yield* Effect.fail(new RetryError({ message: errorType }))
|
|
4851
5044
|
* }),
|
|
4852
5045
|
* alertingSchedule
|
|
4853
5046
|
* ).pipe(
|
|
@@ -4860,10 +5053,10 @@ export const spaced = (duration: Duration.DurationInput): Schedule<number> => {
|
|
|
4860
5053
|
* // Chain multiple input taps for different purposes
|
|
4861
5054
|
* const comprehensiveSchedule = Schedule.fibonacci("100 millis").pipe(
|
|
4862
5055
|
* Schedule.take(5),
|
|
4863
|
-
* Schedule.tapInput((error:
|
|
4864
|
-
* Console.log(`Error occurred: ${error.
|
|
5056
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
5057
|
+
* Console.log(`Error occurred: ${error._tag}`)
|
|
4865
5058
|
* ),
|
|
4866
|
-
* Schedule.tapInput((error:
|
|
5059
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
4867
5060
|
* String(error).length > 20
|
|
4868
5061
|
* ? Console.log("📝 Long error message detected")
|
|
4869
5062
|
* : Effect.void
|
|
@@ -4882,12 +5075,14 @@ export const tapInput: {
|
|
|
4882
5075
|
*
|
|
4883
5076
|
* @example
|
|
4884
5077
|
* ```ts
|
|
4885
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5078
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5079
|
+
*
|
|
5080
|
+
* class RetryError extends Data.TaggedError("RetryError")<{ readonly message: string }> {}
|
|
4886
5081
|
*
|
|
4887
5082
|
* // Log retry errors for debugging
|
|
4888
5083
|
* const errorLoggingSchedule = Schedule.exponential("100 millis").pipe(
|
|
4889
5084
|
* Schedule.take(3),
|
|
4890
|
-
* Schedule.tapInput((error:
|
|
5085
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
4891
5086
|
* Console.log(`Retry triggered by error: ${String(error)}`)
|
|
4892
5087
|
* )
|
|
4893
5088
|
* )
|
|
@@ -4899,7 +5094,7 @@ export const tapInput: {
|
|
|
4899
5094
|
* Effect.gen(function*() {
|
|
4900
5095
|
* attempt++
|
|
4901
5096
|
* if (attempt < 4) {
|
|
4902
|
-
* yield* Effect.fail(new
|
|
5097
|
+
* return yield* Effect.fail(new RetryError({ message: `Network timeout on attempt ${attempt}` }))
|
|
4903
5098
|
* }
|
|
4904
5099
|
* return `Success on attempt ${attempt}`
|
|
4905
5100
|
* }),
|
|
@@ -4948,7 +5143,7 @@ export const tapInput: {
|
|
|
4948
5143
|
* // Conditional alerting based on input
|
|
4949
5144
|
* const alertingSchedule = Schedule.exponential("200 millis").pipe(
|
|
4950
5145
|
* Schedule.take(6),
|
|
4951
|
-
* Schedule.tapInput((error:
|
|
5146
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
4952
5147
|
* Effect.gen(function*() {
|
|
4953
5148
|
* if (String(error).includes("critical")) {
|
|
4954
5149
|
* yield* Console.log(`🚨 CRITICAL ERROR: ${String(error)}`)
|
|
@@ -4970,7 +5165,7 @@ export const tapInput: {
|
|
|
4970
5165
|
* const errorType = isCritical
|
|
4971
5166
|
* ? "critical database failure"
|
|
4972
5167
|
* : "temporary network issue"
|
|
4973
|
-
* yield* Effect.fail(new
|
|
5168
|
+
* return yield* Effect.fail(new RetryError({ message: errorType }))
|
|
4974
5169
|
* }),
|
|
4975
5170
|
* alertingSchedule
|
|
4976
5171
|
* ).pipe(
|
|
@@ -4983,10 +5178,10 @@ export const tapInput: {
|
|
|
4983
5178
|
* // Chain multiple input taps for different purposes
|
|
4984
5179
|
* const comprehensiveSchedule = Schedule.fibonacci("100 millis").pipe(
|
|
4985
5180
|
* Schedule.take(5),
|
|
4986
|
-
* Schedule.tapInput((error:
|
|
4987
|
-
* Console.log(`Error occurred: ${error.
|
|
5181
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
5182
|
+
* Console.log(`Error occurred: ${error._tag}`)
|
|
4988
5183
|
* ),
|
|
4989
|
-
* Schedule.tapInput((error:
|
|
5184
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
4990
5185
|
* String(error).length > 20
|
|
4991
5186
|
* ? Console.log("📝 Long error message detected")
|
|
4992
5187
|
* : Effect.void
|
|
@@ -5007,12 +5202,14 @@ export const tapInput: {
|
|
|
5007
5202
|
*
|
|
5008
5203
|
* @example
|
|
5009
5204
|
* ```ts
|
|
5010
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5205
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5206
|
+
*
|
|
5207
|
+
* class RetryError extends Data.TaggedError("RetryError")<{ readonly message: string }> {}
|
|
5011
5208
|
*
|
|
5012
5209
|
* // Log retry errors for debugging
|
|
5013
5210
|
* const errorLoggingSchedule = Schedule.exponential("100 millis").pipe(
|
|
5014
5211
|
* Schedule.take(3),
|
|
5015
|
-
* Schedule.tapInput((error:
|
|
5212
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
5016
5213
|
* Console.log(`Retry triggered by error: ${String(error)}`)
|
|
5017
5214
|
* )
|
|
5018
5215
|
* )
|
|
@@ -5024,7 +5221,7 @@ export const tapInput: {
|
|
|
5024
5221
|
* Effect.gen(function*() {
|
|
5025
5222
|
* attempt++
|
|
5026
5223
|
* if (attempt < 4) {
|
|
5027
|
-
* yield* Effect.fail(new
|
|
5224
|
+
* return yield* Effect.fail(new RetryError({ message: `Network timeout on attempt ${attempt}` }))
|
|
5028
5225
|
* }
|
|
5029
5226
|
* return `Success on attempt ${attempt}`
|
|
5030
5227
|
* }),
|
|
@@ -5073,7 +5270,7 @@ export const tapInput: {
|
|
|
5073
5270
|
* // Conditional alerting based on input
|
|
5074
5271
|
* const alertingSchedule = Schedule.exponential("200 millis").pipe(
|
|
5075
5272
|
* Schedule.take(6),
|
|
5076
|
-
* Schedule.tapInput((error:
|
|
5273
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
5077
5274
|
* Effect.gen(function*() {
|
|
5078
5275
|
* if (String(error).includes("critical")) {
|
|
5079
5276
|
* yield* Console.log(`🚨 CRITICAL ERROR: ${String(error)}`)
|
|
@@ -5095,7 +5292,7 @@ export const tapInput: {
|
|
|
5095
5292
|
* const errorType = isCritical
|
|
5096
5293
|
* ? "critical database failure"
|
|
5097
5294
|
* : "temporary network issue"
|
|
5098
|
-
* yield* Effect.fail(new
|
|
5295
|
+
* return yield* Effect.fail(new RetryError({ message: errorType }))
|
|
5099
5296
|
* }),
|
|
5100
5297
|
* alertingSchedule
|
|
5101
5298
|
* ).pipe(
|
|
@@ -5108,10 +5305,10 @@ export const tapInput: {
|
|
|
5108
5305
|
* // Chain multiple input taps for different purposes
|
|
5109
5306
|
* const comprehensiveSchedule = Schedule.fibonacci("100 millis").pipe(
|
|
5110
5307
|
* Schedule.take(5),
|
|
5111
|
-
* Schedule.tapInput((error:
|
|
5112
|
-
* Console.log(`Error occurred: ${error.
|
|
5308
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
5309
|
+
* Console.log(`Error occurred: ${error._tag}`)
|
|
5113
5310
|
* ),
|
|
5114
|
-
* Schedule.tapInput((error:
|
|
5311
|
+
* Schedule.tapInput((error: RetryError) =>
|
|
5115
5312
|
* String(error).length > 20
|
|
5116
5313
|
* ? Console.log("📝 Long error message detected")
|
|
5117
5314
|
* : Effect.void
|
|
@@ -5142,7 +5339,9 @@ export const tapInput: {
|
|
|
5142
5339
|
*
|
|
5143
5340
|
* @example
|
|
5144
5341
|
* ```ts
|
|
5145
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5342
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5343
|
+
*
|
|
5344
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
5146
5345
|
*
|
|
5147
5346
|
* // Log schedule outputs for debugging/monitoring
|
|
5148
5347
|
* const monitoredSchedule = Schedule.exponential("100 millis").pipe(
|
|
@@ -5157,7 +5356,7 @@ export const tapInput: {
|
|
|
5157
5356
|
* Effect.gen(function*() {
|
|
5158
5357
|
* attempt++
|
|
5159
5358
|
* if (attempt < 4) {
|
|
5160
|
-
* yield* Effect.fail(new
|
|
5359
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
5161
5360
|
* }
|
|
5162
5361
|
* return `Success on attempt ${attempt}`
|
|
5163
5362
|
* }),
|
|
@@ -5226,7 +5425,9 @@ export const tapOutput: {
|
|
|
5226
5425
|
*
|
|
5227
5426
|
* @example
|
|
5228
5427
|
* ```ts
|
|
5229
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5428
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5429
|
+
*
|
|
5430
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
5230
5431
|
*
|
|
5231
5432
|
* // Log schedule outputs for debugging/monitoring
|
|
5232
5433
|
* const monitoredSchedule = Schedule.exponential("100 millis").pipe(
|
|
@@ -5241,7 +5442,7 @@ export const tapOutput: {
|
|
|
5241
5442
|
* Effect.gen(function*() {
|
|
5242
5443
|
* attempt++
|
|
5243
5444
|
* if (attempt < 4) {
|
|
5244
|
-
* yield* Effect.fail(new
|
|
5445
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
5245
5446
|
* }
|
|
5246
5447
|
* return `Success on attempt ${attempt}`
|
|
5247
5448
|
* }),
|
|
@@ -5312,7 +5513,9 @@ export const tapOutput: {
|
|
|
5312
5513
|
*
|
|
5313
5514
|
* @example
|
|
5314
5515
|
* ```ts
|
|
5315
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5516
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5517
|
+
*
|
|
5518
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
5316
5519
|
*
|
|
5317
5520
|
* // Log schedule outputs for debugging/monitoring
|
|
5318
5521
|
* const monitoredSchedule = Schedule.exponential("100 millis").pipe(
|
|
@@ -5327,7 +5530,7 @@ export const tapOutput: {
|
|
|
5327
5530
|
* Effect.gen(function*() {
|
|
5328
5531
|
* attempt++
|
|
5329
5532
|
* if (attempt < 4) {
|
|
5330
|
-
* yield* Effect.fail(new
|
|
5533
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
5331
5534
|
* }
|
|
5332
5535
|
* return `Success on attempt ${attempt}`
|
|
5333
5536
|
* }),
|
|
@@ -5408,7 +5611,9 @@ export const tapOutput: {
|
|
|
5408
5611
|
*
|
|
5409
5612
|
* @example
|
|
5410
5613
|
* ```ts
|
|
5411
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5614
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5615
|
+
*
|
|
5616
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
5412
5617
|
*
|
|
5413
5618
|
* // Limit an infinite schedule to run only 5 times
|
|
5414
5619
|
* const limitedHeartbeat = Schedule.spaced("1 second").pipe(
|
|
@@ -5441,7 +5646,7 @@ export const tapOutput: {
|
|
|
5441
5646
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
5442
5647
|
*
|
|
5443
5648
|
* if (attempt < 5) { // Will fail more than 3 times
|
|
5444
|
-
* yield* Effect.fail(new
|
|
5649
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
5445
5650
|
* }
|
|
5446
5651
|
*
|
|
5447
5652
|
* return `Success on attempt ${attempt}`
|
|
@@ -5487,7 +5692,9 @@ export const take: {
|
|
|
5487
5692
|
*
|
|
5488
5693
|
* @example
|
|
5489
5694
|
* ```ts
|
|
5490
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5695
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5696
|
+
*
|
|
5697
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
5491
5698
|
*
|
|
5492
5699
|
* // Limit an infinite schedule to run only 5 times
|
|
5493
5700
|
* const limitedHeartbeat = Schedule.spaced("1 second").pipe(
|
|
@@ -5520,7 +5727,7 @@ export const take: {
|
|
|
5520
5727
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
5521
5728
|
*
|
|
5522
5729
|
* if (attempt < 5) { // Will fail more than 3 times
|
|
5523
|
-
* yield* Effect.fail(new
|
|
5730
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
5524
5731
|
* }
|
|
5525
5732
|
*
|
|
5526
5733
|
* return `Success on attempt ${attempt}`
|
|
@@ -5568,7 +5775,9 @@ export const take: {
|
|
|
5568
5775
|
*
|
|
5569
5776
|
* @example
|
|
5570
5777
|
* ```ts
|
|
5571
|
-
* import { Console, Effect, Schedule } from "effect"
|
|
5778
|
+
* import { Console, Data, Effect, Schedule } from "effect"
|
|
5779
|
+
*
|
|
5780
|
+
* class RetryAttemptError extends Data.TaggedError("RetryAttemptError")<{ readonly message: string }> {}
|
|
5572
5781
|
*
|
|
5573
5782
|
* // Limit an infinite schedule to run only 5 times
|
|
5574
5783
|
* const limitedHeartbeat = Schedule.spaced("1 second").pipe(
|
|
@@ -5601,7 +5810,7 @@ export const take: {
|
|
|
5601
5810
|
* yield* Console.log(`Attempt ${attempt}`)
|
|
5602
5811
|
*
|
|
5603
5812
|
* if (attempt < 5) { // Will fail more than 3 times
|
|
5604
|
-
* yield* Effect.fail(new
|
|
5813
|
+
* return yield* Effect.fail(new RetryAttemptError({ message: `Attempt ${attempt} failed` }))
|
|
5605
5814
|
* }
|
|
5606
5815
|
*
|
|
5607
5816
|
* return `Success on attempt ${attempt}`
|
|
@@ -5761,7 +5970,7 @@ const while_: {
|
|
|
5761
5970
|
<Input, Output, Error2 = never, Env2 = never>(
|
|
5762
5971
|
predicate: (
|
|
5763
5972
|
metadata: Metadata<Output, Input>
|
|
5764
|
-
) => Effect<boolean, Error2, Env2>
|
|
5973
|
+
) => boolean | Effect<boolean, Error2, Env2>
|
|
5765
5974
|
): <Error, Env>(
|
|
5766
5975
|
self: Schedule<Output, Input, Error, Env>
|
|
5767
5976
|
) => Schedule<Output, Input, Error | Error2, Env | Env2>
|
|
@@ -5769,21 +5978,22 @@ const while_: {
|
|
|
5769
5978
|
self: Schedule<Output, Input, Error, Env>,
|
|
5770
5979
|
predicate: (
|
|
5771
5980
|
metadata: Metadata<Output, Input>
|
|
5772
|
-
) => Effect<boolean, Error2, Env2>
|
|
5981
|
+
) => boolean | Effect<boolean, Error2, Env2>
|
|
5773
5982
|
): Schedule<Output, Input, Error | Error2, Env | Env2>
|
|
5774
5983
|
} = dual(2, <Output, Input, Error, Env, Error2 = never, Env2 = never>(
|
|
5775
5984
|
self: Schedule<Output, Input, Error, Env>,
|
|
5776
5985
|
predicate: (
|
|
5777
5986
|
metadata: Metadata<Output, Input>
|
|
5778
|
-
) => Effect<boolean, Error2, Env2>
|
|
5987
|
+
) => boolean | Effect<boolean, Error2, Env2>
|
|
5779
5988
|
): Schedule<Output, Input, Error | Error2, Env | Env2> =>
|
|
5780
5989
|
fromStep(effect.map(toStep(self), (step) => {
|
|
5781
5990
|
const meta = metadataFn()
|
|
5782
5991
|
return (now, input) =>
|
|
5783
5992
|
effect.flatMap(step(now, input), (result) => {
|
|
5784
5993
|
const [output, duration] = result
|
|
5994
|
+
const eff = predicate({ ...meta(now, input), output, duration })
|
|
5785
5995
|
return effect.flatMap(
|
|
5786
|
-
|
|
5996
|
+
isEffect(eff) ? eff : effect.succeed(eff),
|
|
5787
5997
|
(check) => (check ? effect.succeed(result) : Cause.done(output))
|
|
5788
5998
|
)
|
|
5789
5999
|
})
|
|
@@ -5838,8 +6048,8 @@ export {
|
|
|
5838
6048
|
* @since 2.0.0
|
|
5839
6049
|
* @category constructors
|
|
5840
6050
|
*/
|
|
5841
|
-
export const windowed = (interval: Duration.
|
|
5842
|
-
const window = Duration.toMillis(Duration.
|
|
6051
|
+
export const windowed = (interval: Duration.Input): Schedule<number> => {
|
|
6052
|
+
const window = Duration.toMillis(Duration.fromInputUnsafe(interval))
|
|
5843
6053
|
return fromStepWithMetadata(effect.succeed((meta) =>
|
|
5844
6054
|
effect.sync(() => [
|
|
5845
6055
|
meta.attempt - 1,
|
|
@@ -5929,6 +6139,16 @@ export const satisfiesInputType = <T>() =>
|
|
|
5929
6139
|
self: Schedule<Output, Input, Error, Env>
|
|
5930
6140
|
): Schedule<Output, Input, Error, Env> => self
|
|
5931
6141
|
|
|
6142
|
+
/**
|
|
6143
|
+
* Sets the input type of the provided schedule to a specified type, without
|
|
6144
|
+
* altering the schedule's behavior.
|
|
6145
|
+
*
|
|
6146
|
+
* @since 2.0.0
|
|
6147
|
+
* @category ensuring types
|
|
6148
|
+
*/
|
|
6149
|
+
export const setInputType =
|
|
6150
|
+
<T>() => <Output, Error, Env>(self: Schedule<Output, T, Error, Env>): Schedule<Output, T, Error, Env> => self
|
|
6151
|
+
|
|
5932
6152
|
/**
|
|
5933
6153
|
* Ensures that the provided schedule respects a specified output type.
|
|
5934
6154
|
*
|