effect 4.0.0-beta.1 → 4.0.0-beta.11
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/Cache.d.ts +2 -2
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +1 -1
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +1 -1
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Channel.d.ts +7 -7
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +6 -4
- package/dist/Channel.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 +3 -3
- package/dist/Config.js +3 -3
- 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 +534 -365
- 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 +12 -12
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +12 -12
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +342 -248
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +119 -119
- 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 +376 -0
- package/dist/ErrorReporter.d.ts.map +1 -0
- package/dist/ErrorReporter.js +246 -0
- package/dist/ErrorReporter.js.map +1 -0
- 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 +30 -1
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +15 -0
- 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/Graph.d.ts +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +2 -2
- package/dist/Graph.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/LayerMap.d.ts +4 -4
- package/dist/LayerMap.d.ts.map +1 -1
- 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/Metric.d.ts +2 -2
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +1 -1
- package/dist/Metric.js.map +1 -1
- 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/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/Queue.d.ts.map +1 -1
- package/dist/Queue.js +0 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +18 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +29 -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/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 +3 -3
- package/dist/References.d.ts.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 +6 -26
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +0 -20
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Result.d.ts +12 -0
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +12 -0
- package/dist/Result.js.map +1 -1
- package/dist/Schedule.d.ts +33 -14
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +65 -24
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +199 -49
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +386 -72
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +2 -1
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +2 -2
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +12 -14
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +44 -43
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +43 -24
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +37 -0
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +80 -0
- 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/Stream.d.ts +24 -24
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +12 -11
- 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/Types.d.ts +14 -6
- package/dist/Types.d.ts.map +1 -1
- package/dist/index.d.ts +503 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +503 -19
- 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 +85 -26
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +2 -2
- 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/testing/TestClock.d.ts +7 -6
- 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 +6 -6
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +48 -48
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +3 -3
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +4 -3
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +2 -2
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +41 -0
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +51 -51
- package/dist/unstable/ai/McpServer.d.ts +1 -1
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.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/cli/CliError.d.ts +5 -5
- package/dist/unstable/cli/CliOutput.js +37 -6
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +199 -7
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +116 -6
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +60 -2
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +11 -1
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +33 -8
- 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/parser.js +10 -2
- 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 +2 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +5 -4
- 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 +1 -1
- 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 +8 -6
- 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.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.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 +3 -3
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +2 -2
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts.map +1 -1
- package/dist/unstable/http/Headers.js +27 -10
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +17 -2
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +28 -1
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +11 -11
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +4 -4
- 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 +27 -11
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +15 -3
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +30 -33
- 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 +4 -9
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +14 -32
- package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerError.js +11 -27
- package/dist/unstable/http/HttpServerError.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 +2 -1
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +3 -1
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- 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/httpapi/HttpApiBuilder.js +6 -6
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +3 -3
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +11 -0
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +29 -9
- package/dist/unstable/httpapi/HttpApiError.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/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +18 -16
- 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 +2 -2
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +6 -6
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +15 -12
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
- 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 +22 -1
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +1 -1
- 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 +2 -2
- package/dist/unstable/rpc/Rpc.d.ts.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/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +9 -3
- 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 +2 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +4 -4
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +2 -2
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +13 -2
- 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 +3 -2
- 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/SqlError.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.d.ts +24 -1
- package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.js +24 -3
- 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 +2 -2
- package/dist/unstable/workflow/WorkflowEngine.d.ts +8 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +133 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +2 -2
- package/src/Cache.ts +3 -3
- package/src/Cause.ts +1 -1
- package/src/Channel.ts +15 -13
- package/src/Combiner.ts +280 -13
- package/src/Config.ts +3 -3
- package/src/Data.ts +538 -374
- package/src/DateTime.ts +24 -164
- package/src/Duration.ts +15 -15
- package/src/Effect.ts +378 -269
- package/src/Encoding.ts +879 -0
- package/src/Equal.ts +278 -111
- package/src/ErrorReporter.ts +459 -0
- package/src/FileSystem.ts +7 -8
- package/src/Filter.ts +48 -1
- package/src/Formatter.ts +253 -51
- package/src/Graph.ts +8 -5
- package/src/JsonSchema.ts +383 -10
- package/src/Latch.ts +112 -0
- package/src/LayerMap.ts +5 -5
- package/src/LogLevel.ts +37 -0
- package/src/Logger.ts +33 -100
- package/src/Metric.ts +4 -4
- package/src/Optic.ts +948 -19
- 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/Queue.ts +0 -1
- package/src/Random.ts +33 -14
- package/src/RcMap.ts +5 -5
- package/src/RcRef.ts +1 -1
- package/src/Reducer.ts +166 -7
- package/src/References.ts +4 -4
- package/src/Request.ts +3 -2
- package/src/RequestResolver.ts +9 -29
- package/src/Result.ts +13 -0
- package/src/Schedule.ts +279 -140
- package/src/Schema.ts +575 -113
- package/src/SchemaAST.ts +2 -1
- package/src/SchemaGetter.ts +12 -14
- package/src/SchemaRepresentation.ts +43 -24
- package/src/SchemaTransformation.ts +104 -0
- package/src/ScopedCache.ts +3 -3
- package/src/Semaphore.ts +356 -0
- package/src/Stream.ts +50 -49
- package/src/Struct.ts +26 -0
- package/src/SubscriptionRef.ts +3 -2
- package/src/SynchronizedRef.ts +3 -2
- package/src/Types.ts +12 -2
- package/src/index.ts +507 -20
- package/src/internal/core.ts +12 -5
- package/src/internal/dateTime.ts +9 -30
- package/src/internal/effect.ts +194 -51
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/random.ts +20 -0
- package/src/internal/rcRef.ts +4 -3
- package/src/testing/TestClock.ts +13 -11
- package/src/testing/TestSchema.ts +8 -8
- package/src/unstable/ai/AiError.ts +2 -2
- package/src/unstable/ai/Chat.ts +12 -11
- package/src/unstable/ai/LanguageModel.ts +74 -3
- package/src/unstable/ai/McpServer.ts +2 -2
- package/src/unstable/ai/Prompt.ts +37 -37
- package/src/unstable/ai/Response.ts +25 -25
- package/src/unstable/cli/CliOutput.ts +45 -6
- package/src/unstable/cli/Command.ts +298 -11
- package/src/unstable/cli/HelpDoc.ts +68 -2
- package/src/unstable/cli/internal/command.ts +47 -11
- package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
- package/src/unstable/cli/internal/parser.ts +11 -3
- package/src/unstable/cluster/ClusterCron.ts +2 -2
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
- package/src/unstable/cluster/Entity.ts +7 -6
- package/src/unstable/cluster/EntityResource.ts +4 -4
- package/src/unstable/cluster/Envelope.ts +1 -1
- package/src/unstable/cluster/K8sHttpClient.ts +1 -1
- package/src/unstable/cluster/MessageStorage.ts +3 -5
- package/src/unstable/cluster/Runners.ts +6 -5
- package/src/unstable/cluster/Sharding.ts +11 -9
- package/src/unstable/cluster/ShardingConfig.ts +10 -11
- 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 +2 -4
- package/src/unstable/eventlog/EventLog.ts +2 -1
- package/src/unstable/http/Cookies.ts +3 -3
- package/src/unstable/http/Headers.ts +28 -13
- package/src/unstable/http/HttpBody.ts +42 -1
- package/src/unstable/http/HttpClient.ts +19 -19
- package/src/unstable/http/HttpClientRequest.ts +38 -13
- package/src/unstable/http/HttpEffect.ts +27 -30
- package/src/unstable/http/HttpMethod.ts +16 -4
- package/src/unstable/http/HttpMiddleware.ts +5 -10
- package/src/unstable/http/HttpServerError.ts +13 -27
- package/src/unstable/http/HttpServerRespondable.ts +6 -6
- package/src/unstable/http/HttpServerResponse.ts +4 -2
- package/src/unstable/http/Multipart.ts +2 -2
- package/src/unstable/http/UrlParams.ts +20 -5
- package/src/unstable/httpapi/HttpApiBuilder.ts +6 -5
- package/src/unstable/httpapi/HttpApiClient.ts +3 -3
- package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
- package/src/unstable/httpapi/HttpApiError.ts +30 -9
- package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
- package/src/unstable/httpapi/OpenApi.ts +18 -16
- 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 +2 -2
- package/src/unstable/process/ChildProcessSpawner.ts +6 -0
- package/src/unstable/reactivity/Atom.ts +20 -18
- package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
- package/src/unstable/reactivity/AtomRegistry.ts +29 -1
- package/src/unstable/reactivity/AtomRpc.ts +3 -3
- package/src/unstable/reactivity/Hydration.ts +112 -0
- package/src/unstable/reactivity/index.ts +5 -0
- package/src/unstable/rpc/Rpc.ts +3 -3
- package/src/unstable/rpc/RpcClient.ts +12 -54
- package/src/unstable/rpc/RpcServer.ts +10 -4
- package/src/unstable/rpc/Utils.ts +2 -1
- package/src/unstable/schema/VariantSchema.ts +36 -7
- package/src/unstable/socket/Socket.ts +7 -6
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlSchema.ts +62 -13
- 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/WorkflowEngine.ts +181 -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/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/Effect.ts
CHANGED
|
@@ -84,7 +84,7 @@ import * as internalRequest from "./internal/request.ts"
|
|
|
84
84
|
import * as internalSchedule from "./internal/schedule.ts"
|
|
85
85
|
import type * as Layer from "./Layer.ts"
|
|
86
86
|
import type { Logger } from "./Logger.ts"
|
|
87
|
-
import type {
|
|
87
|
+
import type { Severity } from "./LogLevel.ts"
|
|
88
88
|
import * as Metric from "./Metric.ts"
|
|
89
89
|
import type { Option } from "./Option.ts"
|
|
90
90
|
import type { Pipeable } from "./Pipeable.ts"
|
|
@@ -119,6 +119,7 @@ import type {
|
|
|
119
119
|
NoInfer,
|
|
120
120
|
ReasonOf,
|
|
121
121
|
ReasonTags,
|
|
122
|
+
Simplify,
|
|
122
123
|
Tags,
|
|
123
124
|
unassigned
|
|
124
125
|
} from "./Types.ts"
|
|
@@ -852,6 +853,214 @@ export const partition: {
|
|
|
852
853
|
): Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
|
|
853
854
|
} = internal.partition
|
|
854
855
|
|
|
856
|
+
/**
|
|
857
|
+
* Applies an effectful function to each element and accumulates all failures.
|
|
858
|
+
*
|
|
859
|
+
* This function always evaluates every element. If at least one effect fails,
|
|
860
|
+
* all failures are returned as a non-empty array and successes are discarded.
|
|
861
|
+
* If all effects succeed, it returns all collected successes.
|
|
862
|
+
*
|
|
863
|
+
* Use `discard: true` to ignore successful values while still validating all
|
|
864
|
+
* elements.
|
|
865
|
+
*
|
|
866
|
+
* @example
|
|
867
|
+
* ```ts
|
|
868
|
+
* import { Effect } from "effect"
|
|
869
|
+
*
|
|
870
|
+
* const program = Effect.validate([0, 1, 2, 3], (n) =>
|
|
871
|
+
* n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
|
|
872
|
+
* )
|
|
873
|
+
*
|
|
874
|
+
* Effect.runPromiseExit(program).then(console.log)
|
|
875
|
+
* // {
|
|
876
|
+
* // _id: 'Exit',
|
|
877
|
+
* // _tag: 'Failure',
|
|
878
|
+
* // cause: {
|
|
879
|
+
* // _id: 'Cause',
|
|
880
|
+
* // reasons: [
|
|
881
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
|
|
882
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
|
|
883
|
+
* // ]
|
|
884
|
+
* // }
|
|
885
|
+
* // }
|
|
886
|
+
* ```
|
|
887
|
+
*
|
|
888
|
+
* @since 4.0.0
|
|
889
|
+
* @category Error Accumulation
|
|
890
|
+
*/
|
|
891
|
+
export const validate: {
|
|
892
|
+
/**
|
|
893
|
+
* Applies an effectful function to each element and accumulates all failures.
|
|
894
|
+
*
|
|
895
|
+
* This function always evaluates every element. If at least one effect fails,
|
|
896
|
+
* all failures are returned as a non-empty array and successes are discarded.
|
|
897
|
+
* If all effects succeed, it returns all collected successes.
|
|
898
|
+
*
|
|
899
|
+
* Use `discard: true` to ignore successful values while still validating all
|
|
900
|
+
* elements.
|
|
901
|
+
*
|
|
902
|
+
* @example
|
|
903
|
+
* ```ts
|
|
904
|
+
* import { Effect } from "effect"
|
|
905
|
+
*
|
|
906
|
+
* const program = Effect.validate([0, 1, 2, 3], (n) =>
|
|
907
|
+
* n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
|
|
908
|
+
* )
|
|
909
|
+
*
|
|
910
|
+
* Effect.runPromiseExit(program).then(console.log)
|
|
911
|
+
* // {
|
|
912
|
+
* // _id: 'Exit',
|
|
913
|
+
* // _tag: 'Failure',
|
|
914
|
+
* // cause: {
|
|
915
|
+
* // _id: 'Cause',
|
|
916
|
+
* // reasons: [
|
|
917
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
|
|
918
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
|
|
919
|
+
* // ]
|
|
920
|
+
* // }
|
|
921
|
+
* // }
|
|
922
|
+
* ```
|
|
923
|
+
*
|
|
924
|
+
* @since 4.0.0
|
|
925
|
+
* @category Error Accumulation
|
|
926
|
+
*/
|
|
927
|
+
<A, B, E, R>(
|
|
928
|
+
f: (a: A, i: number) => Effect<B, E, R>,
|
|
929
|
+
options?: {
|
|
930
|
+
readonly concurrency?: Concurrency | undefined
|
|
931
|
+
readonly discard?: false | undefined
|
|
932
|
+
} | undefined
|
|
933
|
+
): (elements: Iterable<A>) => Effect<Array<B>, Arr.NonEmptyArray<E>, R>
|
|
934
|
+
/**
|
|
935
|
+
* Applies an effectful function to each element and accumulates all failures.
|
|
936
|
+
*
|
|
937
|
+
* This function always evaluates every element. If at least one effect fails,
|
|
938
|
+
* all failures are returned as a non-empty array and successes are discarded.
|
|
939
|
+
* If all effects succeed, it returns all collected successes.
|
|
940
|
+
*
|
|
941
|
+
* Use `discard: true` to ignore successful values while still validating all
|
|
942
|
+
* elements.
|
|
943
|
+
*
|
|
944
|
+
* @example
|
|
945
|
+
* ```ts
|
|
946
|
+
* import { Effect } from "effect"
|
|
947
|
+
*
|
|
948
|
+
* const program = Effect.validate([0, 1, 2, 3], (n) =>
|
|
949
|
+
* n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
|
|
950
|
+
* )
|
|
951
|
+
*
|
|
952
|
+
* Effect.runPromiseExit(program).then(console.log)
|
|
953
|
+
* // {
|
|
954
|
+
* // _id: 'Exit',
|
|
955
|
+
* // _tag: 'Failure',
|
|
956
|
+
* // cause: {
|
|
957
|
+
* // _id: 'Cause',
|
|
958
|
+
* // reasons: [
|
|
959
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
|
|
960
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
|
|
961
|
+
* // ]
|
|
962
|
+
* // }
|
|
963
|
+
* // }
|
|
964
|
+
* ```
|
|
965
|
+
*
|
|
966
|
+
* @since 4.0.0
|
|
967
|
+
* @category Error Accumulation
|
|
968
|
+
*/
|
|
969
|
+
<A, B, E, R>(
|
|
970
|
+
f: (a: A, i: number) => Effect<B, E, R>,
|
|
971
|
+
options: {
|
|
972
|
+
readonly concurrency?: Concurrency | undefined
|
|
973
|
+
readonly discard: true
|
|
974
|
+
}
|
|
975
|
+
): (elements: Iterable<A>) => Effect<void, Arr.NonEmptyArray<E>, R>
|
|
976
|
+
/**
|
|
977
|
+
* Applies an effectful function to each element and accumulates all failures.
|
|
978
|
+
*
|
|
979
|
+
* This function always evaluates every element. If at least one effect fails,
|
|
980
|
+
* all failures are returned as a non-empty array and successes are discarded.
|
|
981
|
+
* If all effects succeed, it returns all collected successes.
|
|
982
|
+
*
|
|
983
|
+
* Use `discard: true` to ignore successful values while still validating all
|
|
984
|
+
* elements.
|
|
985
|
+
*
|
|
986
|
+
* @example
|
|
987
|
+
* ```ts
|
|
988
|
+
* import { Effect } from "effect"
|
|
989
|
+
*
|
|
990
|
+
* const program = Effect.validate([0, 1, 2, 3], (n) =>
|
|
991
|
+
* n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
|
|
992
|
+
* )
|
|
993
|
+
*
|
|
994
|
+
* Effect.runPromiseExit(program).then(console.log)
|
|
995
|
+
* // {
|
|
996
|
+
* // _id: 'Exit',
|
|
997
|
+
* // _tag: 'Failure',
|
|
998
|
+
* // cause: {
|
|
999
|
+
* // _id: 'Cause',
|
|
1000
|
+
* // reasons: [
|
|
1001
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
|
|
1002
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
|
|
1003
|
+
* // ]
|
|
1004
|
+
* // }
|
|
1005
|
+
* // }
|
|
1006
|
+
* ```
|
|
1007
|
+
*
|
|
1008
|
+
* @since 4.0.0
|
|
1009
|
+
* @category Error Accumulation
|
|
1010
|
+
*/
|
|
1011
|
+
<A, B, E, R>(
|
|
1012
|
+
elements: Iterable<A>,
|
|
1013
|
+
f: (a: A, i: number) => Effect<B, E, R>,
|
|
1014
|
+
options?: {
|
|
1015
|
+
readonly concurrency?: Concurrency | undefined
|
|
1016
|
+
readonly discard?: false | undefined
|
|
1017
|
+
} | undefined
|
|
1018
|
+
): Effect<Array<B>, Arr.NonEmptyArray<E>, R>
|
|
1019
|
+
/**
|
|
1020
|
+
* Applies an effectful function to each element and accumulates all failures.
|
|
1021
|
+
*
|
|
1022
|
+
* This function always evaluates every element. If at least one effect fails,
|
|
1023
|
+
* all failures are returned as a non-empty array and successes are discarded.
|
|
1024
|
+
* If all effects succeed, it returns all collected successes.
|
|
1025
|
+
*
|
|
1026
|
+
* Use `discard: true` to ignore successful values while still validating all
|
|
1027
|
+
* elements.
|
|
1028
|
+
*
|
|
1029
|
+
* @example
|
|
1030
|
+
* ```ts
|
|
1031
|
+
* import { Effect } from "effect"
|
|
1032
|
+
*
|
|
1033
|
+
* const program = Effect.validate([0, 1, 2, 3], (n) =>
|
|
1034
|
+
* n % 2 === 0 ? Effect.fail(`${n} is even`) : Effect.succeed(n)
|
|
1035
|
+
* )
|
|
1036
|
+
*
|
|
1037
|
+
* Effect.runPromiseExit(program).then(console.log)
|
|
1038
|
+
* // {
|
|
1039
|
+
* // _id: 'Exit',
|
|
1040
|
+
* // _tag: 'Failure',
|
|
1041
|
+
* // cause: {
|
|
1042
|
+
* // _id: 'Cause',
|
|
1043
|
+
* // reasons: [
|
|
1044
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '0 is even' },
|
|
1045
|
+
* // { _id: 'Reason', _tag: 'Fail', error: '2 is even' }
|
|
1046
|
+
* // ]
|
|
1047
|
+
* // }
|
|
1048
|
+
* // }
|
|
1049
|
+
* ```
|
|
1050
|
+
*
|
|
1051
|
+
* @since 4.0.0
|
|
1052
|
+
* @category Error Accumulation
|
|
1053
|
+
*/
|
|
1054
|
+
<A, B, E, R>(
|
|
1055
|
+
elements: Iterable<A>,
|
|
1056
|
+
f: (a: A, i: number) => Effect<B, E, R>,
|
|
1057
|
+
options: {
|
|
1058
|
+
readonly concurrency?: Concurrency | undefined
|
|
1059
|
+
readonly discard: true
|
|
1060
|
+
}
|
|
1061
|
+
): Effect<void, Arr.NonEmptyArray<E>, R>
|
|
1062
|
+
} = internal.validate
|
|
1063
|
+
|
|
855
1064
|
/**
|
|
856
1065
|
* Executes an effectful operation for each element in an `Iterable`.
|
|
857
1066
|
*
|
|
@@ -1511,6 +1720,103 @@ export const callback: <A, E = never, R = never>(
|
|
|
1511
1720
|
*/
|
|
1512
1721
|
export const never: Effect<never> = internal.never
|
|
1513
1722
|
|
|
1723
|
+
/**
|
|
1724
|
+
* An `Effect` containing an empty record `{}`, used as the starting point for
|
|
1725
|
+
* do notation chains.
|
|
1726
|
+
*
|
|
1727
|
+
* @example
|
|
1728
|
+
* ```ts
|
|
1729
|
+
* import { Effect } from "effect"
|
|
1730
|
+
* import { pipe } from "effect/Function"
|
|
1731
|
+
*
|
|
1732
|
+
* const program = pipe(
|
|
1733
|
+
* Effect.Do,
|
|
1734
|
+
* Effect.bind("x", () => Effect.succeed(2)),
|
|
1735
|
+
* Effect.bind("y", ({ x }) => Effect.succeed(x + 1)),
|
|
1736
|
+
* Effect.let("sum", ({ x, y }) => x + y)
|
|
1737
|
+
* )
|
|
1738
|
+
* ```
|
|
1739
|
+
*
|
|
1740
|
+
* @since 4.0.0
|
|
1741
|
+
* @category Do notation
|
|
1742
|
+
*/
|
|
1743
|
+
export const Do: Effect<{}> = internal.Do
|
|
1744
|
+
|
|
1745
|
+
/**
|
|
1746
|
+
* Gives a name to the success value of an `Effect`, creating a single-key
|
|
1747
|
+
* record used in do notation pipelines.
|
|
1748
|
+
*
|
|
1749
|
+
* @since 4.0.0
|
|
1750
|
+
* @category Do notation
|
|
1751
|
+
*/
|
|
1752
|
+
export const bindTo: {
|
|
1753
|
+
/**
|
|
1754
|
+
* Gives a name to the success value of an `Effect`, creating a single-key
|
|
1755
|
+
* record used in do notation pipelines.
|
|
1756
|
+
*
|
|
1757
|
+
* @since 4.0.0
|
|
1758
|
+
* @category Do notation
|
|
1759
|
+
*/
|
|
1760
|
+
<N extends string>(name: N): <A, E, R>(self: Effect<A, E, R>) => Effect<{ [K in N]: A }, E, R>
|
|
1761
|
+
/**
|
|
1762
|
+
* Gives a name to the success value of an `Effect`, creating a single-key
|
|
1763
|
+
* record used in do notation pipelines.
|
|
1764
|
+
*
|
|
1765
|
+
* @since 4.0.0
|
|
1766
|
+
* @category Do notation
|
|
1767
|
+
*/
|
|
1768
|
+
<A, E, R, N extends string>(self: Effect<A, E, R>, name: N): Effect<{ [K in N]: A }, E, R>
|
|
1769
|
+
} = internal.bindTo
|
|
1770
|
+
|
|
1771
|
+
const let_: {
|
|
1772
|
+
<N extends string, A extends Record<string, any>, B>(
|
|
1773
|
+
name: N,
|
|
1774
|
+
f: (a: NoInfer<A>) => B
|
|
1775
|
+
): <E, R>(
|
|
1776
|
+
self: Effect<A, E, R>
|
|
1777
|
+
) => Effect<Simplify<Omit<A, N> & Record<N, B>>, E, R>
|
|
1778
|
+
<A extends Record<string, any>, E, R, B, N extends string>(
|
|
1779
|
+
self: Effect<A, E, R>,
|
|
1780
|
+
name: N,
|
|
1781
|
+
f: (a: NoInfer<A>) => B
|
|
1782
|
+
): Effect<Simplify<Omit<A, N> & Record<N, B>>, E, R>
|
|
1783
|
+
} = internal.let
|
|
1784
|
+
|
|
1785
|
+
export {
|
|
1786
|
+
/**
|
|
1787
|
+
* Adds a computed plain value to the do notation record.
|
|
1788
|
+
*
|
|
1789
|
+
* @since 4.0.0
|
|
1790
|
+
* @category Do notation
|
|
1791
|
+
*/
|
|
1792
|
+
let_ as let
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
/**
|
|
1796
|
+
* Adds an `Effect` value to the do notation record under a given name.
|
|
1797
|
+
*
|
|
1798
|
+
* @since 4.0.0
|
|
1799
|
+
* @category Do notation
|
|
1800
|
+
*/
|
|
1801
|
+
export const bind: {
|
|
1802
|
+
/**
|
|
1803
|
+
* Adds an `Effect` value to the do notation record under a given name.
|
|
1804
|
+
*
|
|
1805
|
+
* @since 4.0.0
|
|
1806
|
+
* @category Do notation
|
|
1807
|
+
*/
|
|
1808
|
+
<N extends string, A extends Record<string, any>, B, E2, R2>(name: N, f: (a: NoInfer<A>) => Effect<B, E2, R2>): <E, R>(
|
|
1809
|
+
self: Effect<A, E, R>
|
|
1810
|
+
) => Effect<Simplify<Omit<A, N> & Record<N, B>>, E | E2, R | R2>
|
|
1811
|
+
/**
|
|
1812
|
+
* Adds an `Effect` value to the do notation record under a given name.
|
|
1813
|
+
*
|
|
1814
|
+
* @since 4.0.0
|
|
1815
|
+
* @category Do notation
|
|
1816
|
+
*/
|
|
1817
|
+
<A extends Record<string, any>, E, R, B, E2, R2, N extends string>(self: Effect<A, E, R>, name: N, f: (a: NoInfer<A>) => Effect<B, E2, R2>): Effect<Simplify<Omit<A, N> & Record<N, B>>, E | E2, R | R2>
|
|
1818
|
+
} = internal.bind
|
|
1819
|
+
|
|
1514
1820
|
/**
|
|
1515
1821
|
* Provides a way to write effectful code using generator functions, simplifying
|
|
1516
1822
|
* control flow and error handling.
|
|
@@ -5124,6 +5430,36 @@ export const catchIf: {
|
|
|
5124
5430
|
): Effect<A | A2 | A3, E2 | E3, R | R2 | R3>
|
|
5125
5431
|
} = internal.catchIf
|
|
5126
5432
|
|
|
5433
|
+
/**
|
|
5434
|
+
* Catches `NoSuchElementError` failures and converts them to `Option.none`.
|
|
5435
|
+
*
|
|
5436
|
+
* Success values become `Option.some`, `NoSuchElementError` becomes
|
|
5437
|
+
* `Option.none`, and all other errors are preserved.
|
|
5438
|
+
*
|
|
5439
|
+
* @example
|
|
5440
|
+
* ```ts
|
|
5441
|
+
* import { Effect, Option } from "effect"
|
|
5442
|
+
*
|
|
5443
|
+
* const some = Effect.fromNullishOr(1).pipe(Effect.catchNoSuchElement)
|
|
5444
|
+
* const none = Effect.fromNullishOr(null).pipe(Effect.catchNoSuchElement)
|
|
5445
|
+
*
|
|
5446
|
+
* Effect.runPromise(some).then(console.log) // { _id: 'Option', _tag: 'Some', value: 1 }
|
|
5447
|
+
* Effect.runPromise(none).then(console.log) // { _id: 'Option', _tag: 'None' }
|
|
5448
|
+
* ```
|
|
5449
|
+
*
|
|
5450
|
+
* **Previously Known As**
|
|
5451
|
+
*
|
|
5452
|
+
* This API replaces the following from Effect 3.x:
|
|
5453
|
+
*
|
|
5454
|
+
* - `Effect.optionFromOptional`
|
|
5455
|
+
*
|
|
5456
|
+
* @since 2.0.0
|
|
5457
|
+
* @category Error Handling
|
|
5458
|
+
*/
|
|
5459
|
+
export const catchNoSuchElement: <A, E, R>(
|
|
5460
|
+
self: Effect<A, E, R>
|
|
5461
|
+
) => Effect<Option<A>, Exclude<E, Cause.NoSuchElementError>, R> = internal.catchNoSuchElement
|
|
5462
|
+
|
|
5127
5463
|
/**
|
|
5128
5464
|
* Recovers from specific failures based on a predicate.
|
|
5129
5465
|
*
|
|
@@ -6807,14 +7143,14 @@ export const sandbox: <A, E, R>(
|
|
|
6807
7143
|
*/
|
|
6808
7144
|
export const ignore: <
|
|
6809
7145
|
Arg extends Effect<any, any, any> | {
|
|
6810
|
-
readonly log?: boolean |
|
|
7146
|
+
readonly log?: boolean | Severity | undefined
|
|
6811
7147
|
} | undefined = {
|
|
6812
|
-
readonly log?: boolean |
|
|
7148
|
+
readonly log?: boolean | Severity | undefined
|
|
6813
7149
|
}
|
|
6814
7150
|
>(
|
|
6815
7151
|
effectOrOptions?: Arg,
|
|
6816
7152
|
options?: {
|
|
6817
|
-
readonly log?: boolean |
|
|
7153
|
+
readonly log?: boolean | Severity | undefined
|
|
6818
7154
|
} | undefined
|
|
6819
7155
|
) => [Arg] extends [Effect<infer _A, infer _E, infer _R>] ? Effect<void, never, _R>
|
|
6820
7156
|
: <A, E, R>(self: Effect<A, E, R>) => Effect<void, never, R> = internal.ignore
|
|
@@ -6839,14 +7175,14 @@ export const ignore: <
|
|
|
6839
7175
|
*/
|
|
6840
7176
|
export const ignoreCause: <
|
|
6841
7177
|
Arg extends Effect<any, any, any> | {
|
|
6842
|
-
readonly log?: boolean |
|
|
7178
|
+
readonly log?: boolean | Severity | undefined
|
|
6843
7179
|
} | undefined = {
|
|
6844
|
-
readonly log?: boolean |
|
|
7180
|
+
readonly log?: boolean | Severity | undefined
|
|
6845
7181
|
}
|
|
6846
7182
|
>(
|
|
6847
7183
|
effectOrOptions?: Arg,
|
|
6848
7184
|
options?: {
|
|
6849
|
-
readonly log?: boolean |
|
|
7185
|
+
readonly log?: boolean | Severity | undefined
|
|
6850
7186
|
} | undefined
|
|
6851
7187
|
) => [Arg] extends [Effect<infer _A, infer _E, infer _R>] ? Effect<void, never, _R>
|
|
6852
7188
|
: <A, E, R>(self: Effect<A, E, R>) => Effect<void, never, R> = internal.ignoreCause
|
|
@@ -6953,6 +7289,25 @@ export const withExecutionPlan: {
|
|
|
6953
7289
|
): Effect<A, E | PlanE, Exclude<R, Provides> | PlanR>
|
|
6954
7290
|
} = internalExecutionPlan.withExecutionPlan
|
|
6955
7291
|
|
|
7292
|
+
/**
|
|
7293
|
+
* Runs an effect and reports any errors to the configured `ErrorReporter`s.
|
|
7294
|
+
*
|
|
7295
|
+
* If the `defectsOnly` option is set to `true`, only defects (unrecoverable
|
|
7296
|
+
* errors) will be reported, while regular failures will be ignored.
|
|
7297
|
+
*
|
|
7298
|
+
* @since 4.0.0
|
|
7299
|
+
* @category Error Handling
|
|
7300
|
+
*/
|
|
7301
|
+
export const withErrorReporting: <
|
|
7302
|
+
Arg extends Effect<any, any, any> | { readonly defectsOnly?: boolean | undefined } | undefined = {
|
|
7303
|
+
readonly defectsOnly?: boolean | undefined
|
|
7304
|
+
}
|
|
7305
|
+
>(
|
|
7306
|
+
effectOrOptions: Arg,
|
|
7307
|
+
options?: { readonly defectsOnly?: boolean | undefined } | undefined
|
|
7308
|
+
) => [Arg] extends [Effect<infer _A, infer _E, infer _R>] ? Arg : <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R> =
|
|
7309
|
+
internal.withErrorReporting
|
|
7310
|
+
|
|
6956
7311
|
// -----------------------------------------------------------------------------
|
|
6957
7312
|
// Fallback
|
|
6958
7313
|
// -----------------------------------------------------------------------------
|
|
@@ -7194,7 +7549,7 @@ export const timeout: {
|
|
|
7194
7549
|
* @since 2.0.0
|
|
7195
7550
|
* @category Delays & Timeouts
|
|
7196
7551
|
*/
|
|
7197
|
-
(duration: Duration.
|
|
7552
|
+
(duration: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | Cause.TimeoutError, R>
|
|
7198
7553
|
// -----------------------------------------------------------------------------
|
|
7199
7554
|
// Delays & timeouts
|
|
7200
7555
|
// -----------------------------------------------------------------------------
|
|
@@ -7245,7 +7600,7 @@ export const timeout: {
|
|
|
7245
7600
|
* @since 2.0.0
|
|
7246
7601
|
* @category Delays & Timeouts
|
|
7247
7602
|
*/
|
|
7248
|
-
<A, E, R>(self: Effect<A, E, R>, duration: Duration.
|
|
7603
|
+
<A, E, R>(self: Effect<A, E, R>, duration: Duration.Input): Effect<A, E | Cause.TimeoutError, R>
|
|
7249
7604
|
} = internal.timeout
|
|
7250
7605
|
|
|
7251
7606
|
/**
|
|
@@ -7347,7 +7702,7 @@ export const timeoutOption: {
|
|
|
7347
7702
|
* @since 3.1.0
|
|
7348
7703
|
* @category Delays & Timeouts
|
|
7349
7704
|
*/
|
|
7350
|
-
(duration: Duration.
|
|
7705
|
+
(duration: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<Option<A>, E, R>
|
|
7351
7706
|
/**
|
|
7352
7707
|
* Handles timeouts by returning an `Option` that represents either the result
|
|
7353
7708
|
* or a timeout.
|
|
@@ -7397,7 +7752,7 @@ export const timeoutOption: {
|
|
|
7397
7752
|
* @since 3.1.0
|
|
7398
7753
|
* @category Delays & Timeouts
|
|
7399
7754
|
*/
|
|
7400
|
-
<A, E, R>(self: Effect<A, E, R>, duration: Duration.
|
|
7755
|
+
<A, E, R>(self: Effect<A, E, R>, duration: Duration.Input): Effect<Option<A>, E, R>
|
|
7401
7756
|
} = internal.timeoutOption
|
|
7402
7757
|
|
|
7403
7758
|
/**
|
|
@@ -7475,7 +7830,7 @@ export const timeoutOrElse: {
|
|
|
7475
7830
|
*/
|
|
7476
7831
|
<A2, E2, R2>(
|
|
7477
7832
|
options: {
|
|
7478
|
-
readonly duration: Duration.
|
|
7833
|
+
readonly duration: Duration.Input
|
|
7479
7834
|
readonly onTimeout: LazyArg<Effect<A2, E2, R2>>
|
|
7480
7835
|
}
|
|
7481
7836
|
): <A, E, R>(self: Effect<A, E, R>) => Effect<A | A2, E | E2, R | R2>
|
|
@@ -7518,7 +7873,7 @@ export const timeoutOrElse: {
|
|
|
7518
7873
|
<A, E, R, A2, E2, R2>(
|
|
7519
7874
|
self: Effect<A, E, R>,
|
|
7520
7875
|
options: {
|
|
7521
|
-
readonly duration: Duration.
|
|
7876
|
+
readonly duration: Duration.Input
|
|
7522
7877
|
readonly onTimeout: LazyArg<Effect<A2, E2, R2>>
|
|
7523
7878
|
}
|
|
7524
7879
|
): Effect<A | A2, E | E2, R | R2>
|
|
@@ -7565,7 +7920,7 @@ export const delay: {
|
|
|
7565
7920
|
* @since 2.0.0
|
|
7566
7921
|
* @category Delays & Timeouts
|
|
7567
7922
|
*/
|
|
7568
|
-
(duration: Duration.
|
|
7923
|
+
(duration: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
|
|
7569
7924
|
/**
|
|
7570
7925
|
* Returns an effect that is delayed from this effect by the specified
|
|
7571
7926
|
* `Duration`.
|
|
@@ -7586,7 +7941,7 @@ export const delay: {
|
|
|
7586
7941
|
* @since 2.0.0
|
|
7587
7942
|
* @category Delays & Timeouts
|
|
7588
7943
|
*/
|
|
7589
|
-
<A, E, R>(self: Effect<A, E, R>, duration: Duration.
|
|
7944
|
+
<A, E, R>(self: Effect<A, E, R>, duration: Duration.Input): Effect<A, E, R>
|
|
7590
7945
|
} = internal.delay
|
|
7591
7946
|
|
|
7592
7947
|
/**
|
|
@@ -7611,7 +7966,7 @@ export const delay: {
|
|
|
7611
7966
|
* @since 2.0.0
|
|
7612
7967
|
* @category Delays & Timeouts
|
|
7613
7968
|
*/
|
|
7614
|
-
export const sleep: (duration: Duration.
|
|
7969
|
+
export const sleep: (duration: Duration.Input) => Effect<void> = internal.sleep
|
|
7615
7970
|
|
|
7616
7971
|
/**
|
|
7617
7972
|
* Measures the runtime of an effect and returns the duration with its result.
|
|
@@ -12242,7 +12597,7 @@ export const cachedWithTTL: {
|
|
|
12242
12597
|
* @since 2.0.0
|
|
12243
12598
|
* @category Caching
|
|
12244
12599
|
*/
|
|
12245
|
-
(timeToLive: Duration.
|
|
12600
|
+
(timeToLive: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<Effect<A, E, R>>
|
|
12246
12601
|
/**
|
|
12247
12602
|
* Returns an effect that caches its result for a specified `Duration`,
|
|
12248
12603
|
* known as "timeToLive" (TTL).
|
|
@@ -12309,7 +12664,7 @@ export const cachedWithTTL: {
|
|
|
12309
12664
|
* @since 2.0.0
|
|
12310
12665
|
* @category Caching
|
|
12311
12666
|
*/
|
|
12312
|
-
<A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.
|
|
12667
|
+
<A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.Input): Effect<Effect<A, E, R>>
|
|
12313
12668
|
} = internal.cachedWithTTL
|
|
12314
12669
|
|
|
12315
12670
|
/**
|
|
@@ -12451,7 +12806,7 @@ export const cachedInvalidateWithTTL: {
|
|
|
12451
12806
|
* @since 2.0.0
|
|
12452
12807
|
* @category Caching
|
|
12453
12808
|
*/
|
|
12454
|
-
(timeToLive: Duration.
|
|
12809
|
+
(timeToLive: Duration.Input): <A, E, R>(self: Effect<A, E, R>) => Effect<[Effect<A, E, R>, Effect<void>]>
|
|
12455
12810
|
/**
|
|
12456
12811
|
* Caches an effect's result for a specified duration and allows manual
|
|
12457
12812
|
* invalidation before expiration.
|
|
@@ -12521,7 +12876,7 @@ export const cachedInvalidateWithTTL: {
|
|
|
12521
12876
|
* @since 2.0.0
|
|
12522
12877
|
* @category Caching
|
|
12523
12878
|
*/
|
|
12524
|
-
<A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.
|
|
12879
|
+
<A, E, R>(self: Effect<A, E, R>, timeToLive: Duration.Input): Effect<[Effect<A, E, R>, Effect<void>]>
|
|
12525
12880
|
} = internal.cachedInvalidateWithTTL
|
|
12526
12881
|
|
|
12527
12882
|
// -----------------------------------------------------------------------------
|
|
@@ -12747,252 +13102,6 @@ export const interruptibleMask: <A, E, R>(
|
|
|
12747
13102
|
) => Effect<A, E, R>
|
|
12748
13103
|
) => Effect<A, E, R> = internal.interruptibleMask
|
|
12749
13104
|
|
|
12750
|
-
// -----------------------------------------------------------------------------
|
|
12751
|
-
// Semaphore
|
|
12752
|
-
// -----------------------------------------------------------------------------
|
|
12753
|
-
|
|
12754
|
-
/**
|
|
12755
|
-
* @category Semaphore
|
|
12756
|
-
* @since 2.0.0
|
|
12757
|
-
* @example
|
|
12758
|
-
* ```ts
|
|
12759
|
-
* import { Effect } from "effect"
|
|
12760
|
-
*
|
|
12761
|
-
* // Create and use a semaphore for controlling concurrent access
|
|
12762
|
-
* const program = Effect.gen(function*() {
|
|
12763
|
-
* const semaphore = yield* Effect.makeSemaphore(2)
|
|
12764
|
-
*
|
|
12765
|
-
* return yield* semaphore.withPermits(1)(
|
|
12766
|
-
* Effect.succeed("Resource accessed")
|
|
12767
|
-
* )
|
|
12768
|
-
* })
|
|
12769
|
-
* ```
|
|
12770
|
-
*/
|
|
12771
|
-
export interface Semaphore {
|
|
12772
|
-
/**
|
|
12773
|
-
* Adjusts the number of permits available in the semaphore.
|
|
12774
|
-
*/
|
|
12775
|
-
resize(permits: number): Effect<void>
|
|
12776
|
-
|
|
12777
|
-
/**
|
|
12778
|
-
* Runs an effect with the given number of permits and releases the permits
|
|
12779
|
-
* when the effect completes.
|
|
12780
|
-
*
|
|
12781
|
-
* **Details**
|
|
12782
|
-
*
|
|
12783
|
-
* This function acquires the specified number of permits before executing
|
|
12784
|
-
* the provided effect. Once the effect finishes, the permits are released.
|
|
12785
|
-
* If insufficient permits are available, the function will wait until they
|
|
12786
|
-
* are released by other tasks.
|
|
12787
|
-
*/
|
|
12788
|
-
withPermits(permits: number): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
|
|
12789
|
-
|
|
12790
|
-
/**
|
|
12791
|
-
* Runs an effect with the given number of permits and releases the permits
|
|
12792
|
-
* when the effect completes.
|
|
12793
|
-
*
|
|
12794
|
-
* **Details**
|
|
12795
|
-
*
|
|
12796
|
-
* This function acquires the specified number of permits before executing
|
|
12797
|
-
* the provided effect. Once the effect finishes, the permits are released.
|
|
12798
|
-
* If insufficient permits are available, the function will wait until they
|
|
12799
|
-
* are released by other tasks.
|
|
12800
|
-
*/
|
|
12801
|
-
withPermit<A, E, R>(self: Effect<A, E, R>): Effect<A, E, R>
|
|
12802
|
-
|
|
12803
|
-
/**
|
|
12804
|
-
* Runs an effect only if the specified number of permits are immediately
|
|
12805
|
-
* available.
|
|
12806
|
-
*
|
|
12807
|
-
* **Details**
|
|
12808
|
-
*
|
|
12809
|
-
* This function attempts to acquire the specified number of permits. If they
|
|
12810
|
-
* are available, it runs the effect and releases the permits after the effect
|
|
12811
|
-
* completes. If permits are not available, the effect does not execute, and
|
|
12812
|
-
* the result is `Option.none`.
|
|
12813
|
-
*/
|
|
12814
|
-
withPermitsIfAvailable(permits: number): <A, E, R>(self: Effect<A, E, R>) => Effect<Option<A>, E, R>
|
|
12815
|
-
|
|
12816
|
-
/**
|
|
12817
|
-
* Acquires the specified number of permits and returns the resulting
|
|
12818
|
-
* available permits, suspending the task if they are not yet available.
|
|
12819
|
-
* Concurrent pending `take` calls are processed in a first-in, first-out manner.
|
|
12820
|
-
*/
|
|
12821
|
-
take(permits: number): Effect<number>
|
|
12822
|
-
|
|
12823
|
-
/**
|
|
12824
|
-
* Releases the specified number of permits and returns the resulting
|
|
12825
|
-
* available permits.
|
|
12826
|
-
*/
|
|
12827
|
-
release(permits: number): Effect<number>
|
|
12828
|
-
|
|
12829
|
-
/**
|
|
12830
|
-
* Releases all permits held by this semaphore and returns the resulting available permits.
|
|
12831
|
-
*/
|
|
12832
|
-
releaseAll: Effect<number>
|
|
12833
|
-
}
|
|
12834
|
-
|
|
12835
|
-
/**
|
|
12836
|
-
* Unsafely creates a new Semaphore.
|
|
12837
|
-
*
|
|
12838
|
-
* @example
|
|
12839
|
-
* ```ts
|
|
12840
|
-
* import { Effect } from "effect"
|
|
12841
|
-
*
|
|
12842
|
-
* const semaphore = Effect.makeSemaphoreUnsafe(3)
|
|
12843
|
-
*
|
|
12844
|
-
* const task = (id: number) =>
|
|
12845
|
-
* semaphore.withPermits(1)(
|
|
12846
|
-
* Effect.gen(function*() {
|
|
12847
|
-
* yield* Effect.log(`Task ${id} started`)
|
|
12848
|
-
* yield* Effect.sleep("1 second")
|
|
12849
|
-
* yield* Effect.log(`Task ${id} completed`)
|
|
12850
|
-
* })
|
|
12851
|
-
* )
|
|
12852
|
-
*
|
|
12853
|
-
* // Only 3 tasks can run concurrently
|
|
12854
|
-
* const program = Effect.all([
|
|
12855
|
-
* task(1),
|
|
12856
|
-
* task(2),
|
|
12857
|
-
* task(3),
|
|
12858
|
-
* task(4),
|
|
12859
|
-
* task(5)
|
|
12860
|
-
* ], { concurrency: "unbounded" })
|
|
12861
|
-
* ```
|
|
12862
|
-
*
|
|
12863
|
-
* @since 2.0.0
|
|
12864
|
-
* @category Semaphore
|
|
12865
|
-
*/
|
|
12866
|
-
export const makeSemaphoreUnsafe: (permits: number) => Semaphore = internal.makeSemaphoreUnsafe
|
|
12867
|
-
|
|
12868
|
-
/**
|
|
12869
|
-
* Creates a new Semaphore.
|
|
12870
|
-
*
|
|
12871
|
-
* @example
|
|
12872
|
-
* ```ts
|
|
12873
|
-
* import { Effect } from "effect"
|
|
12874
|
-
*
|
|
12875
|
-
* const program = Effect.gen(function*() {
|
|
12876
|
-
* const semaphore = yield* Effect.makeSemaphore(2)
|
|
12877
|
-
*
|
|
12878
|
-
* const task = (id: number) =>
|
|
12879
|
-
* semaphore.withPermits(1)(
|
|
12880
|
-
* Effect.gen(function*() {
|
|
12881
|
-
* yield* Effect.log(`Task ${id} acquired permit`)
|
|
12882
|
-
* yield* Effect.sleep("1 second")
|
|
12883
|
-
* yield* Effect.log(`Task ${id} releasing permit`)
|
|
12884
|
-
* })
|
|
12885
|
-
* )
|
|
12886
|
-
*
|
|
12887
|
-
* // Run 4 tasks, but only 2 can run concurrently
|
|
12888
|
-
* yield* Effect.all([task(1), task(2), task(3), task(4)])
|
|
12889
|
-
* })
|
|
12890
|
-
* ```
|
|
12891
|
-
*
|
|
12892
|
-
* @since 2.0.0
|
|
12893
|
-
* @category Semaphore
|
|
12894
|
-
*/
|
|
12895
|
-
export const makeSemaphore: (permits: number) => Effect<Semaphore> = internal.makeSemaphore
|
|
12896
|
-
|
|
12897
|
-
// -----------------------------------------------------------------------------
|
|
12898
|
-
// Latch
|
|
12899
|
-
// -----------------------------------------------------------------------------
|
|
12900
|
-
|
|
12901
|
-
/**
|
|
12902
|
-
* @category Latch
|
|
12903
|
-
* @since 3.8.0
|
|
12904
|
-
* @example
|
|
12905
|
-
* ```ts
|
|
12906
|
-
* import { Effect } from "effect"
|
|
12907
|
-
*
|
|
12908
|
-
* // Create and use a latch for coordination between fibers
|
|
12909
|
-
* const program = Effect.gen(function*() {
|
|
12910
|
-
* const latch = yield* Effect.makeLatch()
|
|
12911
|
-
*
|
|
12912
|
-
* // Wait for the latch to be opened
|
|
12913
|
-
* yield* latch.await
|
|
12914
|
-
*
|
|
12915
|
-
* return "Latch was opened!"
|
|
12916
|
-
* })
|
|
12917
|
-
* ```
|
|
12918
|
-
*/
|
|
12919
|
-
export interface Latch {
|
|
12920
|
-
/** open the latch, releasing all fibers waiting on it */
|
|
12921
|
-
readonly open: Effect<boolean>
|
|
12922
|
-
/** open the latch, releasing all fibers waiting on it */
|
|
12923
|
-
readonly openUnsafe: () => boolean
|
|
12924
|
-
/** release all fibers waiting on the latch, without opening it */
|
|
12925
|
-
readonly release: Effect<boolean>
|
|
12926
|
-
/** wait for the latch to be opened */
|
|
12927
|
-
readonly await: Effect<void>
|
|
12928
|
-
/** close the latch */
|
|
12929
|
-
readonly close: Effect<boolean>
|
|
12930
|
-
/** close the latch */
|
|
12931
|
-
readonly closeUnsafe: () => boolean
|
|
12932
|
-
/** only run the given effect when the latch is open */
|
|
12933
|
-
readonly whenOpen: <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
|
|
12934
|
-
}
|
|
12935
|
-
|
|
12936
|
-
/**
|
|
12937
|
-
* Creates a new Latch.
|
|
12938
|
-
*
|
|
12939
|
-
* @example
|
|
12940
|
-
* ```ts
|
|
12941
|
-
* import { Effect } from "effect"
|
|
12942
|
-
*
|
|
12943
|
-
* const latch = Effect.makeLatchUnsafe(false)
|
|
12944
|
-
*
|
|
12945
|
-
* const waiter = Effect.gen(function*() {
|
|
12946
|
-
* yield* Effect.log("Waiting for latch to open...")
|
|
12947
|
-
* yield* latch.await
|
|
12948
|
-
* yield* Effect.log("Latch opened! Continuing...")
|
|
12949
|
-
* })
|
|
12950
|
-
*
|
|
12951
|
-
* const opener = Effect.gen(function*() {
|
|
12952
|
-
* yield* Effect.sleep("2 seconds")
|
|
12953
|
-
* yield* Effect.log("Opening latch...")
|
|
12954
|
-
* yield* latch.open
|
|
12955
|
-
* })
|
|
12956
|
-
*
|
|
12957
|
-
* const program = Effect.all([waiter, opener])
|
|
12958
|
-
* ```
|
|
12959
|
-
*
|
|
12960
|
-
* @category Latch
|
|
12961
|
-
* @since 3.8.0
|
|
12962
|
-
*/
|
|
12963
|
-
export const makeLatchUnsafe: (open?: boolean | undefined) => Latch = internal.makeLatchUnsafe
|
|
12964
|
-
|
|
12965
|
-
/**
|
|
12966
|
-
* Creates a new Latch.
|
|
12967
|
-
*
|
|
12968
|
-
* @example
|
|
12969
|
-
* ```ts
|
|
12970
|
-
* import { Effect } from "effect"
|
|
12971
|
-
*
|
|
12972
|
-
* const program = Effect.gen(function*() {
|
|
12973
|
-
* const latch = yield* Effect.makeLatch(false)
|
|
12974
|
-
*
|
|
12975
|
-
* const waiter = Effect.gen(function*() {
|
|
12976
|
-
* yield* Effect.log("Waiting for latch to open...")
|
|
12977
|
-
* yield* latch.await
|
|
12978
|
-
* yield* Effect.log("Latch opened! Continuing...")
|
|
12979
|
-
* })
|
|
12980
|
-
*
|
|
12981
|
-
* const opener = Effect.gen(function*() {
|
|
12982
|
-
* yield* Effect.sleep("2 seconds")
|
|
12983
|
-
* yield* Effect.log("Opening latch...")
|
|
12984
|
-
* yield* latch.open
|
|
12985
|
-
* })
|
|
12986
|
-
*
|
|
12987
|
-
* yield* Effect.all([waiter, opener])
|
|
12988
|
-
* })
|
|
12989
|
-
* ```
|
|
12990
|
-
*
|
|
12991
|
-
* @category Latch
|
|
12992
|
-
* @since 3.8.0
|
|
12993
|
-
*/
|
|
12994
|
-
export const makeLatch: (open?: boolean | undefined) => Effect<Latch> = internal.makeLatch
|
|
12995
|
-
|
|
12996
13105
|
// -----------------------------------------------------------------------------
|
|
12997
13106
|
// Repetition & Recursion
|
|
12998
13107
|
// -----------------------------------------------------------------------------
|
|
@@ -20309,7 +20418,7 @@ export const clockWith: <A, E, R>(
|
|
|
20309
20418
|
* @since 2.0.0
|
|
20310
20419
|
* @category Logging
|
|
20311
20420
|
*/
|
|
20312
|
-
export const logWithLevel: (level?:
|
|
20421
|
+
export const logWithLevel: (level?: Severity) => (...message: ReadonlyArray<any>) => Effect<void> =
|
|
20313
20422
|
internal.logWithLevel
|
|
20314
20423
|
|
|
20315
20424
|
/**
|
|
@@ -22121,8 +22230,8 @@ export const trackDuration: {
|
|
|
22121
22230
|
return onExit(self, () => {
|
|
22122
22231
|
const endTime = clock.currentTimeNanosUnsafe()
|
|
22123
22232
|
const duration = Duration.subtract(
|
|
22124
|
-
Duration.
|
|
22125
|
-
Duration.
|
|
22233
|
+
Duration.fromInputUnsafe(endTime),
|
|
22234
|
+
Duration.fromInputUnsafe(startTime)
|
|
22126
22235
|
)
|
|
22127
22236
|
const input = f === undefined ? duration : internalCall(() => f(duration))
|
|
22128
22237
|
return Metric.update(metric, input as any)
|