effect 4.0.0-beta.42 → 4.0.0-beta.44
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 +12 -43
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +15 -42
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +21 -21
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Cause.js +89 -10
- package/dist/Cause.js.map +1 -1
- package/dist/Channel.d.ts +42 -19
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +86 -46
- package/dist/Channel.js.map +1 -1
- package/dist/Clock.d.ts +2 -2
- package/dist/Clock.d.ts.map +1 -1
- package/dist/Clock.js.map +1 -1
- package/dist/Config.d.ts +2 -2
- package/dist/ConfigProvider.d.ts +5 -5
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +5 -5
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Console.d.ts +2 -2
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js.map +1 -1
- package/dist/Context.d.ts +1150 -0
- package/dist/Context.d.ts.map +1 -0
- package/dist/{ServiceMap.js → Context.js} +139 -139
- package/dist/Context.js.map +1 -0
- package/dist/DateTime.d.ts +2 -2
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +2 -2
- package/dist/DateTime.js.map +1 -1
- package/dist/Effect.d.ts +177 -177
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +81 -81
- package/dist/Effect.js.map +1 -1
- package/dist/ErrorReporter.d.ts +3 -3
- package/dist/ErrorReporter.d.ts.map +1 -1
- package/dist/ErrorReporter.js +1 -1
- package/dist/ErrorReporter.js.map +1 -1
- package/dist/ExecutionPlan.d.ts +6 -6
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +4 -4
- package/dist/ExecutionPlan.js.map +1 -1
- package/dist/Fiber.d.ts +7 -7
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js.map +1 -1
- package/dist/FiberHandle.d.ts +2 -2
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +4 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +2 -2
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +4 -4
- package/dist/FiberMap.js.map +1 -1
- package/dist/FiberSet.d.ts +2 -2
- package/dist/FiberSet.d.ts.map +1 -1
- package/dist/FiberSet.js +4 -4
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +3 -3
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +3 -3
- package/dist/FileSystem.js.map +1 -1
- package/dist/Layer.d.ts +309 -266
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +156 -132
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +18 -18
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +18 -15
- package/dist/LayerMap.js.map +1 -1
- package/dist/Logger.d.ts +3 -3
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +6 -6
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +18 -21
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Metric.d.ts +19 -19
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +21 -21
- package/dist/Metric.js.map +1 -1
- package/dist/Path.d.ts +2 -2
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +2 -2
- package/dist/Path.js.map +1 -1
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +4 -4
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +3 -3
- package/dist/PubSub.js.map +1 -1
- package/dist/Random.d.ts +2 -2
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +0 -23
- 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 +12 -12
- package/dist/RcMap.js.map +1 -1
- package/dist/Redactable.d.ts +139 -62
- package/dist/Redactable.d.ts.map +1 -1
- package/dist/Redactable.js +59 -55
- package/dist/Redactable.js.map +1 -1
- package/dist/References.d.ts +26 -14
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +0 -12
- package/dist/References.js.map +1 -1
- package/dist/Request.d.ts +5 -5
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +6 -7
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.d.ts +0 -3
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +3 -3
- package/dist/Resource.js.map +1 -1
- package/dist/Schedule.d.ts +2 -2
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +2 -2
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +4 -4
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +7 -4
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +531 -214
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +304 -103
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +5 -15
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +49 -5
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +64 -5
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +145 -0
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +146 -0
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +2 -2
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +4 -4
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Sink.d.ts +6 -6
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +1 -1
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +2 -2
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +2 -2
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +187 -117
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +133 -57
- package/dist/Stream.js.map +1 -1
- package/dist/Terminal.d.ts +3 -3
- package/dist/Terminal.d.ts.map +1 -1
- package/dist/Terminal.js +2 -2
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +16 -16
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +11 -8
- package/dist/Tracer.js.map +1 -1
- package/dist/Unify.d.ts +8 -2
- package/dist/Unify.d.ts.map +1 -1
- package/dist/Unify.js.map +1 -1
- package/dist/index.d.ts +81 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -15
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/effect.js +74 -74
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/layer.js +3 -3
- package/dist/internal/layer.js.map +1 -1
- package/dist/internal/random.js +2 -2
- package/dist/internal/random.js.map +1 -1
- package/dist/internal/rcRef.js +9 -9
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/references.js +13 -13
- package/dist/internal/references.js.map +1 -1
- package/dist/internal/request.js +6 -6
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schedule.js +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/representation.js +11 -1
- package/dist/internal/schema/representation.js.map +1 -1
- package/dist/internal/schema/schema.d.ts +10 -1
- package/dist/internal/schema/schema.d.ts.map +1 -1
- package/dist/internal/schema/schema.js +21 -1
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +3 -3
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +19 -19
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +2 -1
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +5 -2
- package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +4 -4
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +3 -3
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.d.ts +6 -6
- package/dist/unstable/ai/EmbeddingModel.d.ts.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.js +3 -3
- package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
- package/dist/unstable/ai/IdGenerator.d.ts +2 -2
- package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
- package/dist/unstable/ai/IdGenerator.js +2 -2
- package/dist/unstable/ai/IdGenerator.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 +2 -2
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +54 -54
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +15 -8
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +22 -22
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +25 -25
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +3 -3
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +5 -5
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +2 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +6 -9
- package/dist/unstable/ai/Prompt.js.map +1 -1
- package/dist/unstable/ai/Response.d.ts +1 -1
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +6 -7
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/ai/ResponseIdTracker.d.ts +2 -2
- package/dist/unstable/ai/ResponseIdTracker.d.ts.map +1 -1
- package/dist/unstable/ai/ResponseIdTracker.js +2 -2
- package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
- package/dist/unstable/ai/Telemetry.d.ts +35 -2
- package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
- package/dist/unstable/ai/Telemetry.js +2 -2
- package/dist/unstable/ai/Telemetry.js.map +1 -1
- package/dist/unstable/ai/Tokenizer.d.ts +2 -2
- package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
- package/dist/unstable/ai/Tokenizer.js +2 -2
- package/dist/unstable/ai/Tokenizer.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +16 -16
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +41 -13
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +3 -3
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +10 -10
- package/dist/unstable/ai/Toolkit.js.map +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js +5 -2
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/cli/Argument.d.ts +2 -3
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +29 -8
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +8 -1
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/CliOutput.d.ts +2 -2
- package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
- package/dist/unstable/cli/CliOutput.js +2 -2
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +14 -14
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +11 -10
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/Flag.d.ts +2 -3
- package/dist/unstable/cli/Flag.d.ts.map +1 -1
- package/dist/unstable/cli/Flag.js.map +1 -1
- package/dist/unstable/cli/GlobalFlag.d.ts +2 -2
- package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/unstable/cli/GlobalFlag.js +2 -2
- package/dist/unstable/cli/GlobalFlag.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +8 -8
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Param.d.ts +30 -2
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +17 -7
- package/dist/unstable/cli/Param.js.map +1 -1
- package/dist/unstable/cli/Prompt.js +8 -2
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +5 -5
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +3 -3
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +94 -15
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cluster/ClusterError.d.ts +7 -7
- package/dist/unstable/cluster/ClusterSchema.d.ts +12 -9
- package/dist/unstable/cluster/ClusterSchema.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterSchema.js +9 -9
- package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +1 -0
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +68 -40
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +10 -10
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +25 -20
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityAddress.d.ts +2 -2
- package/dist/unstable/cluster/EntityProxy.js +3 -3
- package/dist/unstable/cluster/EntityProxy.js.map +1 -1
- package/dist/unstable/cluster/EntityProxyServer.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityProxyServer.js +4 -4
- package/dist/unstable/cluster/EntityProxyServer.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/EntityResource.js +2 -2
- package/dist/unstable/cluster/EntityResource.js.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +3 -3
- package/dist/unstable/cluster/HttpRunner.js +2 -2
- package/dist/unstable/cluster/HttpRunner.js.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.d.ts +4 -4
- package/dist/unstable/cluster/K8sHttpClient.d.ts.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +2 -2
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +7 -4
- package/dist/unstable/cluster/Message.d.ts.map +1 -1
- package/dist/unstable/cluster/Message.js +5 -5
- package/dist/unstable/cluster/Message.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.d.ts +14 -14
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +8 -8
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +2 -2
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +5 -5
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
- package/dist/unstable/cluster/RunnerHealth.d.ts +2 -2
- package/dist/unstable/cluster/RunnerHealth.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerHealth.js +2 -2
- package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
- package/dist/unstable/cluster/RunnerServer.js +1 -1
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +12 -12
- package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.js +3 -3
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +3 -3
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +7 -7
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/ShardId.d.ts +35 -49
- package/dist/unstable/cluster/ShardId.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardId.js +65 -67
- package/dist/unstable/cluster/ShardId.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 +21 -21
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +2 -2
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js +5 -5
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/SingletonAddress.d.ts +2 -2
- package/dist/unstable/cluster/Snowflake.d.ts +2 -2
- package/dist/unstable/cluster/Snowflake.d.ts.map +1 -1
- package/dist/unstable/cluster/Snowflake.js +2 -2
- package/dist/unstable/cluster/Snowflake.js.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +15 -14
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js +2 -2
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceMap.js +3 -3
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.d.ts +2 -2
- package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js +5 -5
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +4 -4
- package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventJournal.js +2 -2
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +5 -5
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +18 -18
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +2 -2
- package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +2 -2
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -12
- package/dist/unstable/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.js +2 -2
- package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.d.ts +3 -3
- package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.js +2 -2
- package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
- package/dist/unstable/http/Etag.d.ts +2 -2
- package/dist/unstable/http/Etag.d.ts.map +1 -1
- package/dist/unstable/http/Etag.js +2 -2
- package/dist/unstable/http/Etag.js.map +1 -1
- package/dist/unstable/http/FetchHttpClient.d.ts +6 -3
- package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/unstable/http/FetchHttpClient.js +5 -5
- package/dist/unstable/http/FetchHttpClient.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +5 -2
- package/dist/unstable/http/Headers.d.ts.map +1 -1
- package/dist/unstable/http/Headers.js +3 -3
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +8 -6
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +6 -6
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.d.ts +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts +2 -2
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +4 -4
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +6 -6
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +24 -24
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.d.ts +2 -2
- package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.js +2 -2
- package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +3 -3
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +26 -14
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpPlatform.d.ts +2 -2
- package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
- package/dist/unstable/http/HttpPlatform.js +2 -2
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +7 -7
- package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
- package/dist/unstable/http/HttpRouter.js +29 -29
- package/dist/unstable/http/HttpRouter.js.map +1 -1
- package/dist/unstable/http/HttpServer.d.ts +2 -2
- package/dist/unstable/http/HttpServer.d.ts.map +1 -1
- package/dist/unstable/http/HttpServer.js +2 -2
- package/dist/unstable/http/HttpServer.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +3 -3
- package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerError.js +3 -3
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
- package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +6 -6
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +2 -2
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +6 -6
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +6 -6
- package/dist/unstable/http/Multipart.d.ts.map +1 -1
- package/dist/unstable/http/Multipart.js +7 -7
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.d.ts +9 -9
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js +8 -8
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts +0 -3
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +20 -20
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +7 -7
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +4 -4
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +13 -13
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +8 -8
- package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.js +4 -4
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +6 -6
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js +5 -5
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts +9 -6
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js +6 -6
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts +15 -15
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +23 -23
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +5 -5
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js +1 -1
- package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
- package/dist/unstable/observability/OtlpSerialization.d.ts +2 -2
- package/dist/unstable/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpSerialization.js +2 -2
- package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.d.ts +3 -3
- package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.js +4 -33
- package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +23 -2
- package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +144 -2
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/PersistedCache.d.ts +1 -2
- package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js +10 -11
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +4 -4
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +3 -3
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +4 -4
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +3 -3
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +6 -6
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +3 -3
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.d.ts +3 -3
- package/dist/unstable/persistence/Redis.d.ts.map +1 -1
- package/dist/unstable/persistence/Redis.js +2 -2
- package/dist/unstable/persistence/Redis.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -2
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +2 -2
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +36 -36
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +9 -9
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +3 -3
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +2 -2
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.d.ts +2 -2
- package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +3 -3
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +3 -3
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +2 -2
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Reactivity.d.ts +2 -2
- package/dist/unstable/reactivity/Reactivity.d.ts.map +1 -1
- package/dist/unstable/reactivity/Reactivity.js +6 -6
- package/dist/unstable/reactivity/Reactivity.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +11 -11
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js +4 -4
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +18 -8
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +27 -18
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.d.ts +2 -2
- package/dist/unstable/rpc/RpcGroup.d.ts +7 -7
- package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcGroup.js +20 -20
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +6 -6
- package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.js +5 -5
- package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts +3 -3
- package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSchema.js +3 -3
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts +2 -2
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +7 -7
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +2 -2
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +18 -18
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/RpcWorker.d.ts +2 -2
- package/dist/unstable/rpc/RpcWorker.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcWorker.js +4 -4
- package/dist/unstable/rpc/RpcWorker.js.map +1 -1
- package/dist/unstable/rpc/Utils.d.ts +0 -3
- package/dist/unstable/rpc/Utils.d.ts.map +1 -1
- package/dist/unstable/rpc/Utils.js +2 -5
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +10 -10
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +9 -9
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.d.ts +5 -2
- package/dist/unstable/socket/SocketServer.d.ts.map +1 -1
- package/dist/unstable/socket/SocketServer.js +2 -2
- package/dist/unstable/socket/SocketServer.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts +5 -5
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +7 -7
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlConnection.d.ts +2 -2
- package/dist/unstable/sql/SqlConnection.d.ts.map +1 -1
- package/dist/unstable/sql/SqlConnection.js +5 -2
- package/dist/unstable/sql/SqlConnection.js.map +1 -1
- package/dist/unstable/sql/SqlError.d.ts +12 -12
- package/dist/unstable/sql/SqlModel.d.ts +8 -9
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlModel.js +9 -35
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +11 -11
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/Statement.d.ts +2 -2
- package/dist/unstable/sql/Statement.d.ts.map +1 -1
- package/dist/unstable/sql/Statement.js +2 -2
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/workers/Transferable.d.ts +2 -2
- package/dist/unstable/workers/Transferable.d.ts.map +1 -1
- package/dist/unstable/workers/Transferable.js +6 -6
- package/dist/unstable/workers/Transferable.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts +3 -3
- package/dist/unstable/workers/Worker.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +6 -3
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workers/WorkerError.d.ts +5 -5
- package/dist/unstable/workers/WorkerRunner.d.ts +2 -2
- package/dist/unstable/workers/WorkerRunner.d.ts.map +1 -1
- package/dist/unstable/workers/WorkerRunner.js +5 -2
- package/dist/unstable/workers/WorkerRunner.js.map +1 -1
- package/dist/unstable/workflow/Activity.d.ts +7 -7
- package/dist/unstable/workflow/Activity.d.ts.map +1 -1
- package/dist/unstable/workflow/Activity.js +7 -7
- package/dist/unstable/workflow/Activity.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +0 -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.d.ts +1 -1
- package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +7 -7
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +9 -9
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +18 -18
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +9 -3
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +14 -5
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxyServer.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowProxyServer.js +4 -4
- package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
- package/package.json +1 -1
- package/src/Cache.ts +18 -46
- package/src/Cause.ts +21 -21
- package/src/Channel.ts +120 -79
- package/src/Clock.ts +2 -2
- package/src/Config.ts +2 -2
- package/src/ConfigProvider.ts +5 -5
- package/src/Console.ts +2 -2
- package/src/{ServiceMap.ts → Context.ts} +337 -340
- package/src/DateTime.ts +2 -2
- package/src/Effect.ts +182 -184
- package/src/ErrorReporter.ts +3 -3
- package/src/ExecutionPlan.ts +8 -9
- package/src/Fiber.ts +7 -7
- package/src/FiberHandle.ts +5 -5
- package/src/FiberMap.ts +5 -5
- package/src/FiberSet.ts +5 -5
- package/src/FileSystem.ts +3 -3
- package/src/Layer.ts +358 -305
- package/src/LayerMap.ts +27 -26
- package/src/Logger.ts +3 -3
- package/src/ManagedRuntime.ts +32 -32
- package/src/Metric.ts +58 -58
- package/src/Path.ts +2 -2
- package/src/Pool.ts +5 -5
- package/src/PubSub.ts +3 -3
- package/src/Random.ts +2 -2
- package/src/RcMap.ts +14 -14
- package/src/Redactable.ts +146 -72
- package/src/References.ts +14 -14
- package/src/Request.ts +5 -5
- package/src/RequestResolver.ts +6 -7
- package/src/Resource.ts +4 -4
- package/src/Schedule.ts +2 -2
- package/src/Scheduler.ts +4 -4
- package/src/Schema.ts +837 -397
- package/src/SchemaAST.ts +5 -14
- package/src/SchemaGetter.ts +69 -11
- package/src/SchemaTransformation.ts +166 -0
- package/src/Scope.ts +2 -2
- package/src/ScopedCache.ts +5 -5
- package/src/Sink.ts +9 -9
- package/src/Stdio.ts +2 -2
- package/src/Stream.ts +234 -158
- package/src/Terminal.ts +3 -3
- package/src/Tracer.ts +17 -17
- package/src/Unify.ts +26 -2
- package/src/index.ts +82 -16
- package/src/internal/core.ts +7 -7
- package/src/internal/effect.ts +106 -106
- package/src/internal/layer.ts +7 -7
- package/src/internal/random.ts +2 -2
- package/src/internal/rcRef.ts +10 -10
- package/src/internal/references.ts +13 -13
- package/src/internal/request.ts +8 -8
- package/src/internal/schedule.ts +3 -1
- package/src/internal/schema/representation.ts +8 -1
- package/src/internal/schema/schema.ts +24 -1
- package/src/testing/TestSchema.ts +3 -3
- package/src/unstable/ai/AiError.ts +3 -2
- package/src/unstable/ai/AnthropicStructuredOutput.ts +3 -3
- package/src/unstable/ai/Chat.ts +3 -3
- package/src/unstable/ai/EmbeddingModel.ts +3 -3
- package/src/unstable/ai/IdGenerator.ts +2 -2
- package/src/unstable/ai/LanguageModel.ts +2 -2
- package/src/unstable/ai/McpSchema.ts +11 -9
- package/src/unstable/ai/McpServer.ts +44 -44
- package/src/unstable/ai/Model.ts +8 -8
- package/src/unstable/ai/OpenAiStructuredOutput.ts +2 -2
- package/src/unstable/ai/Prompt.ts +6 -12
- package/src/unstable/ai/Response.ts +6 -8
- package/src/unstable/ai/ResponseIdTracker.ts +2 -4
- package/src/unstable/ai/Telemetry.ts +2 -2
- package/src/unstable/ai/Tokenizer.ts +2 -2
- package/src/unstable/ai/Tool.ts +25 -25
- package/src/unstable/ai/Toolkit.ts +12 -12
- package/src/unstable/ai/internal/codec-transformer.ts +3 -2
- package/src/unstable/cli/Argument.ts +3 -4
- package/src/unstable/cli/CliError.ts +22 -9
- package/src/unstable/cli/CliOutput.ts +2 -2
- package/src/unstable/cli/Command.ts +36 -30
- package/src/unstable/cli/Flag.ts +3 -4
- package/src/unstable/cli/GlobalFlag.ts +3 -3
- package/src/unstable/cli/HelpDoc.ts +8 -8
- package/src/unstable/cli/Param.ts +39 -16
- package/src/unstable/cli/Prompt.ts +13 -6
- package/src/unstable/cli/internal/command.ts +7 -7
- package/src/unstable/cli/internal/parser.ts +130 -21
- package/src/unstable/cluster/ClusterSchema.ts +12 -12
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +91 -53
- package/src/unstable/cluster/Entity.ts +43 -32
- package/src/unstable/cluster/EntityProxy.ts +3 -3
- package/src/unstable/cluster/EntityProxyServer.ts +4 -4
- package/src/unstable/cluster/EntityResource.ts +2 -2
- package/src/unstable/cluster/HttpRunner.ts +2 -2
- package/src/unstable/cluster/K8sHttpClient.ts +2 -2
- package/src/unstable/cluster/Message.ts +8 -8
- package/src/unstable/cluster/MessageStorage.ts +11 -11
- package/src/unstable/cluster/Reply.ts +7 -7
- package/src/unstable/cluster/RunnerHealth.ts +2 -2
- package/src/unstable/cluster/RunnerServer.ts +1 -1
- package/src/unstable/cluster/RunnerStorage.ts +9 -9
- package/src/unstable/cluster/Runners.ts +7 -7
- package/src/unstable/cluster/ShardId.ts +84 -74
- package/src/unstable/cluster/Sharding.ts +26 -26
- package/src/unstable/cluster/ShardingConfig.ts +5 -5
- package/src/unstable/cluster/Snowflake.ts +2 -2
- package/src/unstable/cluster/SqlMessageStorage.ts +1 -1
- package/src/unstable/cluster/internal/entityManager.ts +27 -23
- package/src/unstable/cluster/internal/entityReaper.ts +2 -2
- package/src/unstable/cluster/internal/resourceMap.ts +3 -3
- package/src/unstable/devtools/DevToolsClient.ts +5 -5
- package/src/unstable/eventlog/EventJournal.ts +2 -2
- package/src/unstable/eventlog/EventLog.ts +21 -21
- package/src/unstable/eventlog/EventLogEncryption.ts +2 -2
- package/src/unstable/eventlog/EventLogRemote.ts +2 -2
- package/src/unstable/eventlog/EventLogServer.ts +2 -2
- package/src/unstable/http/Etag.ts +2 -2
- package/src/unstable/http/FetchHttpClient.ts +5 -5
- package/src/unstable/http/Headers.ts +4 -4
- package/src/unstable/http/HttpClient.ts +9 -8
- package/src/unstable/http/HttpClientRequest.ts +5 -5
- package/src/unstable/http/HttpEffect.ts +35 -35
- package/src/unstable/http/HttpIncomingMessage.ts +2 -2
- package/src/unstable/http/HttpMiddleware.ts +28 -14
- package/src/unstable/http/HttpPlatform.ts +2 -2
- package/src/unstable/http/HttpRouter.ts +37 -37
- package/src/unstable/http/HttpServer.ts +2 -2
- package/src/unstable/http/HttpServerError.ts +4 -4
- package/src/unstable/http/HttpServerRequest.ts +7 -7
- package/src/unstable/http/HttpServerResponse.ts +8 -8
- package/src/unstable/http/Multipart.ts +8 -8
- package/src/unstable/httpapi/HttpApi.ts +18 -18
- package/src/unstable/httpapi/HttpApiBuilder.ts +20 -20
- package/src/unstable/httpapi/HttpApiClient.ts +4 -4
- package/src/unstable/httpapi/HttpApiEndpoint.ts +14 -14
- package/src/unstable/httpapi/HttpApiGroup.ts +16 -16
- package/src/unstable/httpapi/HttpApiMiddleware.ts +14 -14
- package/src/unstable/httpapi/HttpApiSecurity.ts +13 -13
- package/src/unstable/httpapi/OpenApi.ts +29 -31
- package/src/unstable/observability/OtlpExporter.ts +5 -5
- package/src/unstable/observability/OtlpMetrics.ts +1 -1
- package/src/unstable/observability/OtlpSerialization.ts +2 -2
- package/src/unstable/observability/OtlpTracer.ts +2 -2
- package/src/unstable/observability/PrometheusMetrics.ts +5 -5
- package/src/unstable/persistence/KeyValueStore.ts +226 -3
- package/src/unstable/persistence/PersistedCache.ts +20 -17
- package/src/unstable/persistence/PersistedQueue.ts +3 -3
- package/src/unstable/persistence/Persistence.ts +4 -4
- package/src/unstable/persistence/RateLimiter.ts +3 -3
- package/src/unstable/persistence/Redis.ts +2 -2
- package/src/unstable/process/ChildProcessSpawner.ts +46 -2
- package/src/unstable/reactivity/Atom.ts +79 -79
- package/src/unstable/reactivity/AtomHttpApi.ts +4 -4
- package/src/unstable/reactivity/AtomRegistry.ts +4 -4
- package/src/unstable/reactivity/AtomRpc.ts +4 -4
- package/src/unstable/reactivity/Reactivity.ts +6 -6
- package/src/unstable/rpc/Rpc.ts +17 -17
- package/src/unstable/rpc/RpcClient.ts +44 -30
- package/src/unstable/rpc/RpcGroup.ts +30 -30
- package/src/unstable/rpc/RpcMiddleware.ts +14 -14
- package/src/unstable/rpc/RpcSchema.ts +4 -4
- package/src/unstable/rpc/RpcSerialization.ts +7 -7
- package/src/unstable/rpc/RpcServer.ts +19 -19
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/rpc/Utils.ts +4 -4
- package/src/unstable/socket/Socket.ts +9 -9
- package/src/unstable/socket/SocketServer.ts +2 -2
- package/src/unstable/sql/SqlClient.ts +11 -11
- package/src/unstable/sql/SqlConnection.ts +2 -2
- package/src/unstable/sql/SqlModel.ts +54 -82
- package/src/unstable/sql/SqlResolver.ts +11 -11
- package/src/unstable/sql/Statement.ts +2 -2
- package/src/unstable/workers/Transferable.ts +6 -6
- package/src/unstable/workers/Worker.ts +4 -4
- package/src/unstable/workers/WorkerRunner.ts +2 -2
- package/src/unstable/workflow/Activity.ts +14 -14
- package/src/unstable/workflow/DurableClock.ts +3 -3
- package/src/unstable/workflow/DurableDeferred.ts +8 -8
- package/src/unstable/workflow/Workflow.ts +23 -23
- package/src/unstable/workflow/WorkflowEngine.ts +28 -6
- package/src/unstable/workflow/WorkflowProxyServer.ts +4 -4
- package/dist/ServiceMap.d.ts +0 -1150
- package/dist/ServiceMap.d.ts.map +0 -1
- package/dist/ServiceMap.js.map +0 -1
package/src/Layer.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import type { NonEmptyArray, NonEmptyReadonlyArray } from "./Array.ts"
|
|
21
21
|
import type * as Cause from "./Cause.ts"
|
|
22
22
|
import type * as Channel from "./Channel.ts"
|
|
23
|
+
import * as Context from "./Context.ts"
|
|
23
24
|
import * as Deferred from "./Deferred.ts"
|
|
24
25
|
import type { Effect } from "./Effect.ts"
|
|
25
26
|
import type * as Exit from "./Exit.ts"
|
|
@@ -33,10 +34,10 @@ import { type Pipeable, pipeArguments } from "./Pipeable.ts"
|
|
|
33
34
|
import { hasProperty } from "./Predicate.ts"
|
|
34
35
|
import { CurrentStackFrame } from "./References.ts"
|
|
35
36
|
import * as Scope from "./Scope.ts"
|
|
36
|
-
import * as ServiceMap from "./ServiceMap.ts"
|
|
37
37
|
import type * as Stream from "./Stream.ts"
|
|
38
38
|
import * as Tracer from "./Tracer.ts"
|
|
39
39
|
import type * as Types from "./Types.ts"
|
|
40
|
+
import type * as Unify from "./Unify.ts"
|
|
40
41
|
|
|
41
42
|
const TypeId = "~effect/Layer"
|
|
42
43
|
|
|
@@ -53,9 +54,31 @@ const TypeId = "~effect/Layer"
|
|
|
53
54
|
*/
|
|
54
55
|
export interface Layer<in ROut, out E = never, out RIn = never> extends Variance<ROut, E, RIn>, Pipeable {
|
|
55
56
|
/** @internal */
|
|
56
|
-
build(memoMap: MemoMap, scope: Scope.Scope): Effect<
|
|
57
|
+
build(memoMap: MemoMap, scope: Scope.Scope): Effect<Context.Context<ROut>, E, RIn>
|
|
58
|
+
[Unify.typeSymbol]?: unknown
|
|
59
|
+
[Unify.unifySymbol]?: LayerUnify<this>
|
|
60
|
+
[Unify.ignoreSymbol]?: LayerUnifyIgnore
|
|
57
61
|
}
|
|
58
62
|
|
|
63
|
+
/**
|
|
64
|
+
* @since 4.0.0
|
|
65
|
+
* @category models
|
|
66
|
+
*/
|
|
67
|
+
export interface LayerUnify<A extends { [Unify.typeSymbol]?: any }> {
|
|
68
|
+
Layer?: () => A[Unify.typeSymbol] extends Layer<any, any, any> | infer _ ? Layer<
|
|
69
|
+
Success<Extract<A[Unify.typeSymbol], Any>>,
|
|
70
|
+
Error<Extract<A[Unify.typeSymbol], Any>>,
|
|
71
|
+
Services<Extract<A[Unify.typeSymbol], Any>>
|
|
72
|
+
>
|
|
73
|
+
: never
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @since 4.0.0
|
|
78
|
+
* @category models
|
|
79
|
+
*/
|
|
80
|
+
export interface LayerUnifyIgnore {}
|
|
81
|
+
|
|
59
82
|
/**
|
|
60
83
|
* The variance interface for Layer type parameters.
|
|
61
84
|
*
|
|
@@ -119,9 +142,9 @@ const MemoMapTypeId = "~effect/Layer/MemoMap"
|
|
|
119
142
|
*
|
|
120
143
|
* @example
|
|
121
144
|
* ```ts
|
|
122
|
-
* import { Effect, Layer,
|
|
145
|
+
* import { Effect, Layer, Context } from "effect"
|
|
123
146
|
*
|
|
124
|
-
* class Database extends
|
|
147
|
+
* class Database extends Context.Service<Database, {
|
|
125
148
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
126
149
|
* }>()("Database") {}
|
|
127
150
|
*
|
|
@@ -133,9 +156,9 @@ const MemoMapTypeId = "~effect/Layer/MemoMap"
|
|
|
133
156
|
* const dbLayer = Layer.succeed(Database)({
|
|
134
157
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
135
158
|
* })
|
|
136
|
-
* const
|
|
159
|
+
* const context = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
|
|
137
160
|
*
|
|
138
|
-
* return
|
|
161
|
+
* return Context.get(context, Database)
|
|
139
162
|
* })
|
|
140
163
|
* ```
|
|
141
164
|
*
|
|
@@ -147,8 +170,8 @@ export interface MemoMap {
|
|
|
147
170
|
readonly getOrElseMemoize: <RIn, E, ROut>(
|
|
148
171
|
layer: Layer<ROut, E, RIn>,
|
|
149
172
|
scope: Scope.Scope,
|
|
150
|
-
build: (memoMap: MemoMap, scope: Scope.Scope) => Effect<
|
|
151
|
-
) => Effect<
|
|
173
|
+
build: (memoMap: MemoMap, scope: Scope.Scope) => Effect<Context.Context<ROut>, E, RIn>
|
|
174
|
+
) => Effect<Context.Context<ROut>, E, RIn>
|
|
152
175
|
}
|
|
153
176
|
|
|
154
177
|
/**
|
|
@@ -156,9 +179,9 @@ export interface MemoMap {
|
|
|
156
179
|
*
|
|
157
180
|
* @example
|
|
158
181
|
* ```ts
|
|
159
|
-
* import { Effect, Layer,
|
|
182
|
+
* import { Effect, Layer, Context } from "effect"
|
|
160
183
|
*
|
|
161
|
-
* class Database extends
|
|
184
|
+
* class Database extends Context.Service<Database, {
|
|
162
185
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
163
186
|
* }>()("Database") {}
|
|
164
187
|
*
|
|
@@ -191,7 +214,7 @@ const fromBuildUnsafe = <ROut, E, RIn>(
|
|
|
191
214
|
build: (
|
|
192
215
|
memoMap: MemoMap,
|
|
193
216
|
scope: Scope.Scope
|
|
194
|
-
) => Effect<
|
|
217
|
+
) => Effect<Context.Context<ROut>, E, RIn>
|
|
195
218
|
): Layer<ROut, E, RIn> => {
|
|
196
219
|
const self = Object.create(LayerProto)
|
|
197
220
|
self.build = build
|
|
@@ -206,15 +229,15 @@ const fromBuildUnsafe = <ROut, E, RIn>(
|
|
|
206
229
|
*
|
|
207
230
|
* @example
|
|
208
231
|
* ```ts
|
|
209
|
-
* import { Effect, Layer,
|
|
232
|
+
* import { Effect, Layer, Context } from "effect"
|
|
210
233
|
*
|
|
211
|
-
* class Database extends
|
|
234
|
+
* class Database extends Context.Service<Database, {
|
|
212
235
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
213
236
|
* }>()("Database") {}
|
|
214
237
|
*
|
|
215
238
|
* const databaseLayer = Layer.fromBuild(() =>
|
|
216
239
|
* Effect.sync(() =>
|
|
217
|
-
*
|
|
240
|
+
* Context.make(Database, {
|
|
218
241
|
* query: (sql: string) => Effect.succeed("result")
|
|
219
242
|
* })
|
|
220
243
|
* )
|
|
@@ -228,7 +251,7 @@ export const fromBuild = <ROut, E, RIn>(
|
|
|
228
251
|
build: (
|
|
229
252
|
memoMap: MemoMap,
|
|
230
253
|
scope: Scope.Scope
|
|
231
|
-
) => Effect<
|
|
254
|
+
) => Effect<Context.Context<ROut>, E, RIn>
|
|
232
255
|
): Layer<ROut, E, RIn> =>
|
|
233
256
|
fromBuildUnsafe((memoMap: MemoMap, scope: Scope.Scope) => {
|
|
234
257
|
const layerScope = Scope.forkUnsafe(scope)
|
|
@@ -247,15 +270,15 @@ export const fromBuild = <ROut, E, RIn>(
|
|
|
247
270
|
*
|
|
248
271
|
* @example
|
|
249
272
|
* ```ts
|
|
250
|
-
* import { Effect, Layer,
|
|
273
|
+
* import { Effect, Layer, Context } from "effect"
|
|
251
274
|
*
|
|
252
|
-
* class Database extends
|
|
275
|
+
* class Database extends Context.Service<Database, {
|
|
253
276
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
254
277
|
* }>()("Database") {}
|
|
255
278
|
*
|
|
256
279
|
* const databaseLayer = Layer.fromBuildMemo(() =>
|
|
257
280
|
* Effect.sync(() =>
|
|
258
|
-
*
|
|
281
|
+
* Context.make(Database, {
|
|
259
282
|
* query: (sql: string) => Effect.succeed("result")
|
|
260
283
|
* })
|
|
261
284
|
* )
|
|
@@ -269,7 +292,7 @@ export const fromBuildMemo = <ROut, E, RIn>(
|
|
|
269
292
|
build: (
|
|
270
293
|
memoMap: MemoMap,
|
|
271
294
|
scope: Scope.Scope
|
|
272
|
-
) => Effect<
|
|
295
|
+
) => Effect<Context.Context<ROut>, E, RIn>
|
|
273
296
|
): Layer<ROut, E, RIn> => {
|
|
274
297
|
const self: Layer<ROut, E, RIn> = fromBuild((memoMap, scope) => memoMap.getOrElseMemoize(self, scope, build))
|
|
275
298
|
return self
|
|
@@ -282,15 +305,15 @@ class MemoMapImpl implements MemoMap {
|
|
|
282
305
|
|
|
283
306
|
readonly map = new Map<Layer<any, any, any>, {
|
|
284
307
|
observers: number
|
|
285
|
-
effect: Effect<
|
|
308
|
+
effect: Effect<Context.Context<any>, any>
|
|
286
309
|
readonly finalizer: (exit: Exit.Exit<unknown, unknown>) => Effect<void>
|
|
287
310
|
}>()
|
|
288
311
|
|
|
289
312
|
getOrElseMemoize<RIn, E, ROut>(
|
|
290
313
|
layer: Layer<ROut, E, RIn>,
|
|
291
314
|
scope: Scope.Scope,
|
|
292
|
-
build: (memoMap: MemoMap, scope: Scope.Scope) => Effect<
|
|
293
|
-
): Effect<
|
|
315
|
+
build: (memoMap: MemoMap, scope: Scope.Scope) => Effect<Context.Context<ROut>, E, RIn>
|
|
316
|
+
): Effect<Context.Context<ROut>, E, RIn> {
|
|
294
317
|
if (this.map.has(layer)) {
|
|
295
318
|
const entry = this.map.get(layer)!
|
|
296
319
|
entry.observers++
|
|
@@ -300,7 +323,7 @@ class MemoMapImpl implements MemoMap {
|
|
|
300
323
|
)
|
|
301
324
|
}
|
|
302
325
|
const layerScope = Scope.makeUnsafe()
|
|
303
|
-
const deferred = Deferred.makeUnsafe<
|
|
326
|
+
const deferred = Deferred.makeUnsafe<Context.Context<ROut>, E>()
|
|
304
327
|
const entry = {
|
|
305
328
|
observers: 1,
|
|
306
329
|
effect: Deferred.await(deferred),
|
|
@@ -330,9 +353,9 @@ class MemoMapImpl implements MemoMap {
|
|
|
330
353
|
*
|
|
331
354
|
* @example
|
|
332
355
|
* ```ts
|
|
333
|
-
* import { Effect, Layer,
|
|
356
|
+
* import { Effect, Layer, Context } from "effect"
|
|
334
357
|
*
|
|
335
|
-
* class Database extends
|
|
358
|
+
* class Database extends Context.Service<Database, {
|
|
336
359
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
337
360
|
* }>()("Database") {}
|
|
338
361
|
*
|
|
@@ -344,9 +367,9 @@ class MemoMapImpl implements MemoMap {
|
|
|
344
367
|
* const dbLayer = Layer.succeed(Database)({
|
|
345
368
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
346
369
|
* })
|
|
347
|
-
* const
|
|
370
|
+
* const context = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
|
|
348
371
|
*
|
|
349
|
-
* return
|
|
372
|
+
* return Context.get(context, Database)
|
|
350
373
|
* })
|
|
351
374
|
* ```
|
|
352
375
|
*
|
|
@@ -360,9 +383,9 @@ export const makeMemoMapUnsafe = (): MemoMap => new MemoMapImpl()
|
|
|
360
383
|
*
|
|
361
384
|
* @example
|
|
362
385
|
* ```ts
|
|
363
|
-
* import { Effect, Layer,
|
|
386
|
+
* import { Effect, Layer, Context } from "effect"
|
|
364
387
|
*
|
|
365
|
-
* class Database extends
|
|
388
|
+
* class Database extends Context.Service<Database, {
|
|
366
389
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
367
390
|
* }>()("Database") {}
|
|
368
391
|
*
|
|
@@ -374,9 +397,9 @@ export const makeMemoMapUnsafe = (): MemoMap => new MemoMapImpl()
|
|
|
374
397
|
* const dbLayer = Layer.succeed(Database)({
|
|
375
398
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
376
399
|
* })
|
|
377
|
-
* const
|
|
400
|
+
* const context = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
|
|
378
401
|
*
|
|
379
|
-
* return
|
|
402
|
+
* return Context.get(context, Database)
|
|
380
403
|
* })
|
|
381
404
|
* ```
|
|
382
405
|
*
|
|
@@ -394,8 +417,8 @@ export const makeMemoMap: Effect<MemoMap> = internalEffect.sync(makeMemoMapUnsaf
|
|
|
394
417
|
* @since 3.13.0
|
|
395
418
|
* @category models
|
|
396
419
|
*/
|
|
397
|
-
export class CurrentMemoMap extends
|
|
398
|
-
static getOrCreate: <Services>(self:
|
|
420
|
+
export class CurrentMemoMap extends Context.Service<CurrentMemoMap, MemoMap>()("effect/Layer/CurrentMemoMap") {
|
|
421
|
+
static getOrCreate: <Services>(self: Context.Context<Services>) => MemoMap = Context.getOrElse(
|
|
399
422
|
this,
|
|
400
423
|
makeMemoMapUnsafe
|
|
401
424
|
)
|
|
@@ -407,13 +430,13 @@ export class CurrentMemoMap extends ServiceMap.Service<CurrentMemoMap, MemoMap>(
|
|
|
407
430
|
*
|
|
408
431
|
* @example
|
|
409
432
|
* ```ts
|
|
410
|
-
* import { Effect, Layer,
|
|
433
|
+
* import { Effect, Layer, Context } from "effect"
|
|
411
434
|
*
|
|
412
|
-
* class Database extends
|
|
435
|
+
* class Database extends Context.Service<Database, {
|
|
413
436
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
414
437
|
* }>()("Database") {}
|
|
415
438
|
*
|
|
416
|
-
* class Logger extends
|
|
439
|
+
* class Logger extends Context.Service<Logger, {
|
|
417
440
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
418
441
|
* }>()("Logger") {}
|
|
419
442
|
*
|
|
@@ -426,21 +449,21 @@ export class CurrentMemoMap extends ServiceMap.Service<CurrentMemoMap, MemoMap>(
|
|
|
426
449
|
* const dbLayer = Layer.succeed(Database)({
|
|
427
450
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
428
451
|
* })
|
|
429
|
-
* const
|
|
452
|
+
* const dbContext = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
|
|
430
453
|
*
|
|
431
454
|
* // Build logger layer with same memoization (reuses memo if same layer)
|
|
432
455
|
* const loggerLayer = Layer.succeed(Logger)({
|
|
433
456
|
* log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
|
|
434
457
|
* })
|
|
435
|
-
* const
|
|
458
|
+
* const loggerContext = yield* Layer.buildWithMemoMap(
|
|
436
459
|
* loggerLayer,
|
|
437
460
|
* memoMap,
|
|
438
461
|
* scope
|
|
439
462
|
* )
|
|
440
463
|
*
|
|
441
464
|
* return {
|
|
442
|
-
* database:
|
|
443
|
-
* logger:
|
|
465
|
+
* database: Context.get(dbContext, Database),
|
|
466
|
+
* logger: Context.get(loggerContext, Logger)
|
|
444
467
|
* }
|
|
445
468
|
* })
|
|
446
469
|
* ```
|
|
@@ -455,13 +478,13 @@ export const buildWithMemoMap: {
|
|
|
455
478
|
*
|
|
456
479
|
* @example
|
|
457
480
|
* ```ts
|
|
458
|
-
* import { Effect, Layer,
|
|
481
|
+
* import { Effect, Layer, Context } from "effect"
|
|
459
482
|
*
|
|
460
|
-
* class Database extends
|
|
483
|
+
* class Database extends Context.Service<Database, {
|
|
461
484
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
462
485
|
* }>()("Database") {}
|
|
463
486
|
*
|
|
464
|
-
* class Logger extends
|
|
487
|
+
* class Logger extends Context.Service<Logger, {
|
|
465
488
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
466
489
|
* }>()("Logger") {}
|
|
467
490
|
*
|
|
@@ -474,21 +497,21 @@ export const buildWithMemoMap: {
|
|
|
474
497
|
* const dbLayer = Layer.succeed(Database)({
|
|
475
498
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
476
499
|
* })
|
|
477
|
-
* const
|
|
500
|
+
* const dbContext = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
|
|
478
501
|
*
|
|
479
502
|
* // Build logger layer with same memoization (reuses memo if same layer)
|
|
480
503
|
* const loggerLayer = Layer.succeed(Logger)({
|
|
481
504
|
* log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
|
|
482
505
|
* })
|
|
483
|
-
* const
|
|
506
|
+
* const loggerContext = yield* Layer.buildWithMemoMap(
|
|
484
507
|
* loggerLayer,
|
|
485
508
|
* memoMap,
|
|
486
509
|
* scope
|
|
487
510
|
* )
|
|
488
511
|
*
|
|
489
512
|
* return {
|
|
490
|
-
* database:
|
|
491
|
-
* logger:
|
|
513
|
+
* database: Context.get(dbContext, Database),
|
|
514
|
+
* logger: Context.get(loggerContext, Logger)
|
|
492
515
|
* }
|
|
493
516
|
* })
|
|
494
517
|
* ```
|
|
@@ -496,20 +519,20 @@ export const buildWithMemoMap: {
|
|
|
496
519
|
* @since 2.0.0
|
|
497
520
|
* @category memo map
|
|
498
521
|
*/
|
|
499
|
-
(memoMap: MemoMap, scope: Scope.Scope): <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect<
|
|
522
|
+
(memoMap: MemoMap, scope: Scope.Scope): <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect<Context.Context<ROut>, E, RIn>
|
|
500
523
|
/**
|
|
501
524
|
* Builds a layer into an `Effect` value, using the specified `MemoMap` to memoize
|
|
502
525
|
* the layer construction.
|
|
503
526
|
*
|
|
504
527
|
* @example
|
|
505
528
|
* ```ts
|
|
506
|
-
* import { Effect, Layer,
|
|
529
|
+
* import { Effect, Layer, Context } from "effect"
|
|
507
530
|
*
|
|
508
|
-
* class Database extends
|
|
531
|
+
* class Database extends Context.Service<Database, {
|
|
509
532
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
510
533
|
* }>()("Database") {}
|
|
511
534
|
*
|
|
512
|
-
* class Logger extends
|
|
535
|
+
* class Logger extends Context.Service<Logger, {
|
|
513
536
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
514
537
|
* }>()("Logger") {}
|
|
515
538
|
*
|
|
@@ -522,21 +545,21 @@ export const buildWithMemoMap: {
|
|
|
522
545
|
* const dbLayer = Layer.succeed(Database)({
|
|
523
546
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
524
547
|
* })
|
|
525
|
-
* const
|
|
548
|
+
* const dbContext = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
|
|
526
549
|
*
|
|
527
550
|
* // Build logger layer with same memoization (reuses memo if same layer)
|
|
528
551
|
* const loggerLayer = Layer.succeed(Logger)({
|
|
529
552
|
* log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
|
|
530
553
|
* })
|
|
531
|
-
* const
|
|
554
|
+
* const loggerContext = yield* Layer.buildWithMemoMap(
|
|
532
555
|
* loggerLayer,
|
|
533
556
|
* memoMap,
|
|
534
557
|
* scope
|
|
535
558
|
* )
|
|
536
559
|
*
|
|
537
560
|
* return {
|
|
538
|
-
* database:
|
|
539
|
-
* logger:
|
|
561
|
+
* database: Context.get(dbContext, Database),
|
|
562
|
+
* logger: Context.get(loggerContext, Logger)
|
|
540
563
|
* }
|
|
541
564
|
* })
|
|
542
565
|
* ```
|
|
@@ -544,14 +567,14 @@ export const buildWithMemoMap: {
|
|
|
544
567
|
* @since 2.0.0
|
|
545
568
|
* @category memo map
|
|
546
569
|
*/
|
|
547
|
-
<RIn, E, ROut>(self: Layer<ROut, E, RIn>, memoMap: MemoMap, scope: Scope.Scope): Effect<
|
|
570
|
+
<RIn, E, ROut>(self: Layer<ROut, E, RIn>, memoMap: MemoMap, scope: Scope.Scope): Effect<Context.Context<ROut>, E, RIn>
|
|
548
571
|
} = dual(3, <RIn, E, ROut>(
|
|
549
572
|
self: Layer<ROut, E, RIn>,
|
|
550
573
|
memoMap: MemoMap,
|
|
551
574
|
scope: Scope.Scope
|
|
552
|
-
): Effect<
|
|
575
|
+
): Effect<Context.Context<ROut>, E, RIn> =>
|
|
553
576
|
internalEffect.provideService(
|
|
554
|
-
internalEffect.map(self.build(memoMap, scope),
|
|
577
|
+
internalEffect.map(self.build(memoMap, scope), Context.add(CurrentMemoMap, memoMap)),
|
|
555
578
|
CurrentMemoMap,
|
|
556
579
|
memoMap
|
|
557
580
|
))
|
|
@@ -561,9 +584,9 @@ export const buildWithMemoMap: {
|
|
|
561
584
|
*
|
|
562
585
|
* @example
|
|
563
586
|
* ```ts
|
|
564
|
-
* import { Effect, Layer,
|
|
587
|
+
* import { Effect, Layer, Context } from "effect"
|
|
565
588
|
*
|
|
566
|
-
* class Database extends
|
|
589
|
+
* class Database extends Context.Service<Database, {
|
|
567
590
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
568
591
|
* }>()("Database") {}
|
|
569
592
|
*
|
|
@@ -573,11 +596,11 @@ export const buildWithMemoMap: {
|
|
|
573
596
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
574
597
|
* })
|
|
575
598
|
*
|
|
576
|
-
* // Build the layer into
|
|
577
|
-
* const
|
|
599
|
+
* // Build the layer into Context - automatically manages scope and memoization
|
|
600
|
+
* const context = yield* Layer.build(dbLayer)
|
|
578
601
|
*
|
|
579
602
|
* // Extract the specific service from the built layer
|
|
580
|
-
* const database =
|
|
603
|
+
* const database = Context.get(context, Database)
|
|
581
604
|
*
|
|
582
605
|
* return yield* database.query("SELECT * FROM users")
|
|
583
606
|
* })
|
|
@@ -588,12 +611,12 @@ export const buildWithMemoMap: {
|
|
|
588
611
|
*/
|
|
589
612
|
export const build = <RIn, E, ROut>(
|
|
590
613
|
self: Layer<ROut, E, RIn>
|
|
591
|
-
): Effect<
|
|
614
|
+
): Effect<Context.Context<ROut>, E, RIn | Scope.Scope> =>
|
|
592
615
|
core.withFiber((fiber) =>
|
|
593
616
|
buildWithMemoMap(
|
|
594
617
|
self,
|
|
595
|
-
CurrentMemoMap.getOrCreate(fiber.
|
|
596
|
-
|
|
618
|
+
CurrentMemoMap.getOrCreate(fiber.context),
|
|
619
|
+
Context.getUnsafe(fiber.context, Scope.Scope)
|
|
597
620
|
)
|
|
598
621
|
)
|
|
599
622
|
|
|
@@ -606,9 +629,9 @@ export const build = <RIn, E, ROut>(
|
|
|
606
629
|
*
|
|
607
630
|
* @example
|
|
608
631
|
* ```ts
|
|
609
|
-
* import { Effect, Layer, Scope,
|
|
632
|
+
* import { Effect, Layer, Scope, Context } from "effect"
|
|
610
633
|
*
|
|
611
|
-
* class Database extends
|
|
634
|
+
* class Database extends Context.Service<Database, {
|
|
612
635
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
613
636
|
* }>()("Database") {}
|
|
614
637
|
*
|
|
@@ -626,8 +649,8 @@ export const build = <RIn, E, ROut>(
|
|
|
626
649
|
* }))
|
|
627
650
|
*
|
|
628
651
|
* // Build with specific scope - resources tied to this scope
|
|
629
|
-
* const
|
|
630
|
-
* const database =
|
|
652
|
+
* const context = yield* Layer.buildWithScope(dbLayer, scope)
|
|
653
|
+
* const database = Context.get(context, Database)
|
|
631
654
|
*
|
|
632
655
|
* return yield* database.query("SELECT * FROM users")
|
|
633
656
|
* // Database will be closed when scope is closed
|
|
@@ -647,9 +670,9 @@ export const buildWithScope: {
|
|
|
647
670
|
*
|
|
648
671
|
* @example
|
|
649
672
|
* ```ts
|
|
650
|
-
* import { Effect, Layer, Scope,
|
|
673
|
+
* import { Effect, Layer, Scope, Context } from "effect"
|
|
651
674
|
*
|
|
652
|
-
* class Database extends
|
|
675
|
+
* class Database extends Context.Service<Database, {
|
|
653
676
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
654
677
|
* }>()("Database") {}
|
|
655
678
|
*
|
|
@@ -667,8 +690,8 @@ export const buildWithScope: {
|
|
|
667
690
|
* }))
|
|
668
691
|
*
|
|
669
692
|
* // Build with specific scope - resources tied to this scope
|
|
670
|
-
* const
|
|
671
|
-
* const database =
|
|
693
|
+
* const context = yield* Layer.buildWithScope(dbLayer, scope)
|
|
694
|
+
* const database = Context.get(context, Database)
|
|
672
695
|
*
|
|
673
696
|
* return yield* database.query("SELECT * FROM users")
|
|
674
697
|
* // Database will be closed when scope is closed
|
|
@@ -678,7 +701,7 @@ export const buildWithScope: {
|
|
|
678
701
|
* @since 2.0.0
|
|
679
702
|
* @category destructors
|
|
680
703
|
*/
|
|
681
|
-
(scope: Scope.Scope): <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect<
|
|
704
|
+
(scope: Scope.Scope): <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect<Context.Context<ROut>, E, RIn>
|
|
682
705
|
/**
|
|
683
706
|
* Builds a layer into an `Effect` value. Any resources associated with this
|
|
684
707
|
* layer will be released when the specified scope is closed unless their scope
|
|
@@ -688,9 +711,9 @@ export const buildWithScope: {
|
|
|
688
711
|
*
|
|
689
712
|
* @example
|
|
690
713
|
* ```ts
|
|
691
|
-
* import { Effect, Layer, Scope,
|
|
714
|
+
* import { Effect, Layer, Scope, Context } from "effect"
|
|
692
715
|
*
|
|
693
|
-
* class Database extends
|
|
716
|
+
* class Database extends Context.Service<Database, {
|
|
694
717
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
695
718
|
* }>()("Database") {}
|
|
696
719
|
*
|
|
@@ -708,8 +731,8 @@ export const buildWithScope: {
|
|
|
708
731
|
* }))
|
|
709
732
|
*
|
|
710
733
|
* // Build with specific scope - resources tied to this scope
|
|
711
|
-
* const
|
|
712
|
-
* const database =
|
|
734
|
+
* const context = yield* Layer.buildWithScope(dbLayer, scope)
|
|
735
|
+
* const database = Context.get(context, Database)
|
|
713
736
|
*
|
|
714
737
|
* return yield* database.query("SELECT * FROM users")
|
|
715
738
|
* // Database will be closed when scope is closed
|
|
@@ -719,15 +742,15 @@ export const buildWithScope: {
|
|
|
719
742
|
* @since 2.0.0
|
|
720
743
|
* @category destructors
|
|
721
744
|
*/
|
|
722
|
-
<RIn, E, ROut>(self: Layer<ROut, E, RIn>, scope: Scope.Scope): Effect<
|
|
745
|
+
<RIn, E, ROut>(self: Layer<ROut, E, RIn>, scope: Scope.Scope): Effect<Context.Context<ROut>, E, RIn>
|
|
723
746
|
} = dual(2, <RIn, E, ROut>(
|
|
724
747
|
self: Layer<ROut, E, RIn>,
|
|
725
748
|
scope: Scope.Scope
|
|
726
|
-
): Effect<
|
|
749
|
+
): Effect<Context.Context<ROut>, E, RIn> =>
|
|
727
750
|
core.withFiber((fiber) =>
|
|
728
751
|
buildWithMemoMap(
|
|
729
752
|
self,
|
|
730
|
-
CurrentMemoMap.getOrCreate(fiber.
|
|
753
|
+
CurrentMemoMap.getOrCreate(fiber.context),
|
|
731
754
|
scope
|
|
732
755
|
)
|
|
733
756
|
))
|
|
@@ -737,13 +760,13 @@ export const buildWithScope: {
|
|
|
737
760
|
*
|
|
738
761
|
* @example
|
|
739
762
|
* ```ts
|
|
740
|
-
* import { Effect, Layer,
|
|
763
|
+
* import { Effect, Layer, Context } from "effect"
|
|
741
764
|
*
|
|
742
|
-
* class Database extends
|
|
765
|
+
* class Database extends Context.Service<Database, {
|
|
743
766
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
744
767
|
* }>()("Database") {}
|
|
745
768
|
*
|
|
746
|
-
* class Logger extends
|
|
769
|
+
* class Logger extends Context.Service<Logger, {
|
|
747
770
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
748
771
|
* }>()("Logger") {}
|
|
749
772
|
*
|
|
@@ -780,13 +803,13 @@ export const succeed: {
|
|
|
780
803
|
*
|
|
781
804
|
* @example
|
|
782
805
|
* ```ts
|
|
783
|
-
* import { Effect, Layer,
|
|
806
|
+
* import { Effect, Layer, Context } from "effect"
|
|
784
807
|
*
|
|
785
|
-
* class Database extends
|
|
808
|
+
* class Database extends Context.Service<Database, {
|
|
786
809
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
787
810
|
* }>()("Database") {}
|
|
788
811
|
*
|
|
789
|
-
* class Logger extends
|
|
812
|
+
* class Logger extends Context.Service<Logger, {
|
|
790
813
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
791
814
|
* }>()("Logger") {}
|
|
792
815
|
*
|
|
@@ -817,19 +840,19 @@ export const succeed: {
|
|
|
817
840
|
* @since 2.0.0
|
|
818
841
|
* @category constructors
|
|
819
842
|
*/
|
|
820
|
-
<I, S>(service:
|
|
843
|
+
<I, S>(service: Context.Key<I, S>): (resource: S) => Layer<I>
|
|
821
844
|
/**
|
|
822
845
|
* Constructs a layer from the specified value.
|
|
823
846
|
*
|
|
824
847
|
* @example
|
|
825
848
|
* ```ts
|
|
826
|
-
* import { Effect, Layer,
|
|
849
|
+
* import { Effect, Layer, Context } from "effect"
|
|
827
850
|
*
|
|
828
|
-
* class Database extends
|
|
851
|
+
* class Database extends Context.Service<Database, {
|
|
829
852
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
830
853
|
* }>()("Database") {}
|
|
831
854
|
*
|
|
832
|
-
* class Logger extends
|
|
855
|
+
* class Logger extends Context.Service<Logger, {
|
|
833
856
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
834
857
|
* }>()("Logger") {}
|
|
835
858
|
*
|
|
@@ -860,12 +883,12 @@ export const succeed: {
|
|
|
860
883
|
* @since 2.0.0
|
|
861
884
|
* @category constructors
|
|
862
885
|
*/
|
|
863
|
-
<I, S>(service:
|
|
886
|
+
<I, S>(service: Context.Key<I, S>, resource: Types.NoInfer<S>): Layer<I>
|
|
864
887
|
} = function() {
|
|
865
888
|
if (arguments.length === 1) {
|
|
866
|
-
return (resource: any) =>
|
|
889
|
+
return (resource: any) => succeedContext(Context.make(arguments[0], resource))
|
|
867
890
|
}
|
|
868
|
-
return
|
|
891
|
+
return succeedContext(Context.make(arguments[0], arguments[1]))
|
|
869
892
|
} as any
|
|
870
893
|
|
|
871
894
|
/**
|
|
@@ -873,40 +896,39 @@ export const succeed: {
|
|
|
873
896
|
* services.
|
|
874
897
|
*
|
|
875
898
|
* This is a more general version of `succeed` that allows you to provide multiple
|
|
876
|
-
* services at once through a `
|
|
899
|
+
* services at once through a `Context`.
|
|
877
900
|
*
|
|
878
901
|
* @example
|
|
879
902
|
* ```ts
|
|
880
|
-
* import { Effect, Layer,
|
|
903
|
+
* import { Effect, Layer, Context } from "effect"
|
|
881
904
|
*
|
|
882
|
-
* class Database extends
|
|
905
|
+
* class Database extends Context.Service<Database, {
|
|
883
906
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
884
907
|
* }>()("Database") {}
|
|
885
908
|
*
|
|
886
|
-
* class Logger extends
|
|
909
|
+
* class Logger extends Context.Service<Logger, {
|
|
887
910
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
888
911
|
* }>()("Logger") {}
|
|
889
912
|
*
|
|
890
|
-
* const
|
|
913
|
+
* const context = Context.make(Database, {
|
|
891
914
|
* query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
|
|
892
|
-
* })
|
|
893
|
-
* .
|
|
894
|
-
*
|
|
895
|
-
*
|
|
896
|
-
*
|
|
897
|
-
* )
|
|
915
|
+
* }).pipe(
|
|
916
|
+
* Context.add(Logger, {
|
|
917
|
+
* log: (msg: string) => Effect.sync(() => console.log(msg))
|
|
918
|
+
* })
|
|
919
|
+
* )
|
|
898
920
|
*
|
|
899
|
-
* const layer = Layer.
|
|
921
|
+
* const layer = Layer.succeedContext(context)
|
|
900
922
|
* ```
|
|
901
923
|
*
|
|
902
924
|
* @since 2.0.0
|
|
903
925
|
* @category constructors
|
|
904
926
|
*/
|
|
905
|
-
export const
|
|
906
|
-
fromBuildUnsafe(constant(internalEffect.succeed(
|
|
927
|
+
export const succeedContext = <A>(context: Context.Context<A>): Layer<A> =>
|
|
928
|
+
fromBuildUnsafe(constant(internalEffect.succeed(context)))
|
|
907
929
|
|
|
908
930
|
/**
|
|
909
|
-
* A Layer that constructs an empty
|
|
931
|
+
* A Layer that constructs an empty Context.
|
|
910
932
|
*
|
|
911
933
|
* This layer provides no services and can be used as a neutral element
|
|
912
934
|
* in layer composition or as a starting point for building layers.
|
|
@@ -921,7 +943,7 @@ export const succeedServices = <A>(services: ServiceMap.ServiceMap<A>): Layer<A>
|
|
|
921
943
|
* @since 2.0.0
|
|
922
944
|
* @category constructors
|
|
923
945
|
*/
|
|
924
|
-
export const empty: Layer<never> =
|
|
946
|
+
export const empty: Layer<never> = succeedContext(Context.empty())
|
|
925
947
|
|
|
926
948
|
/**
|
|
927
949
|
* Lazily constructs a layer from the specified value.
|
|
@@ -931,9 +953,9 @@ export const empty: Layer<never> = succeedServices(ServiceMap.empty())
|
|
|
931
953
|
*
|
|
932
954
|
* @example
|
|
933
955
|
* ```ts
|
|
934
|
-
* import { Effect, Layer,
|
|
956
|
+
* import { Effect, Layer, Context } from "effect"
|
|
935
957
|
*
|
|
936
|
-
* class Database extends
|
|
958
|
+
* class Database extends Context.Service<Database, {
|
|
937
959
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
938
960
|
* }>()("Database") {}
|
|
939
961
|
*
|
|
@@ -954,9 +976,9 @@ export const sync: {
|
|
|
954
976
|
*
|
|
955
977
|
* @example
|
|
956
978
|
* ```ts
|
|
957
|
-
* import { Effect, Layer,
|
|
979
|
+
* import { Effect, Layer, Context } from "effect"
|
|
958
980
|
*
|
|
959
|
-
* class Database extends
|
|
981
|
+
* class Database extends Context.Service<Database, {
|
|
960
982
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
961
983
|
* }>()("Database") {}
|
|
962
984
|
*
|
|
@@ -968,7 +990,7 @@ export const sync: {
|
|
|
968
990
|
* @since 2.0.0
|
|
969
991
|
* @category constructors
|
|
970
992
|
*/
|
|
971
|
-
<I, S>(service:
|
|
993
|
+
<I, S>(service: Context.Key<I, S>): (evaluate: LazyArg<S>) => Layer<I>
|
|
972
994
|
/**
|
|
973
995
|
* Lazily constructs a layer from the specified value.
|
|
974
996
|
*
|
|
@@ -977,9 +999,9 @@ export const sync: {
|
|
|
977
999
|
*
|
|
978
1000
|
* @example
|
|
979
1001
|
* ```ts
|
|
980
|
-
* import { Effect, Layer,
|
|
1002
|
+
* import { Effect, Layer, Context } from "effect"
|
|
981
1003
|
*
|
|
982
|
-
* class Database extends
|
|
1004
|
+
* class Database extends Context.Service<Database, {
|
|
983
1005
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
984
1006
|
* }>()("Database") {}
|
|
985
1007
|
*
|
|
@@ -991,31 +1013,31 @@ export const sync: {
|
|
|
991
1013
|
* @since 2.0.0
|
|
992
1014
|
* @category constructors
|
|
993
1015
|
*/
|
|
994
|
-
<I, S>(service:
|
|
1016
|
+
<I, S>(service: Context.Key<I, S>, evaluate: LazyArg<Types.NoInfer<S>>): Layer<I>
|
|
995
1017
|
} = function() {
|
|
996
1018
|
if (arguments.length === 1) {
|
|
997
|
-
return (evaluate: LazyArg<any>) =>
|
|
1019
|
+
return (evaluate: LazyArg<any>) => syncContext(() => Context.make(arguments[0], evaluate()))
|
|
998
1020
|
}
|
|
999
|
-
return
|
|
1021
|
+
return syncContext(() => Context.make(arguments[0], arguments[1]()))
|
|
1000
1022
|
} as any
|
|
1001
1023
|
|
|
1002
1024
|
/**
|
|
1003
1025
|
* Lazily constructs a layer from the specified value, which must return one or more
|
|
1004
1026
|
* services.
|
|
1005
1027
|
*
|
|
1006
|
-
* This is a lazy version of `
|
|
1028
|
+
* This is a lazy version of `succeedContext` where the Context is computed
|
|
1007
1029
|
* synchronously only when the layer is built.
|
|
1008
1030
|
*
|
|
1009
1031
|
* @example
|
|
1010
1032
|
* ```ts
|
|
1011
|
-
* import { Effect, Layer,
|
|
1033
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1012
1034
|
*
|
|
1013
|
-
* class Database extends
|
|
1035
|
+
* class Database extends Context.Service<Database, {
|
|
1014
1036
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1015
1037
|
* }>()("Database") {}
|
|
1016
1038
|
*
|
|
1017
|
-
* const layer = Layer.
|
|
1018
|
-
*
|
|
1039
|
+
* const layer = Layer.syncContext(() =>
|
|
1040
|
+
* Context.make(Database, {
|
|
1019
1041
|
* query: (sql: string) => Effect.succeed(`Query: ${sql}`)
|
|
1020
1042
|
* })
|
|
1021
1043
|
* )
|
|
@@ -1024,7 +1046,7 @@ export const sync: {
|
|
|
1024
1046
|
* @since 2.0.0
|
|
1025
1047
|
* @category constructors
|
|
1026
1048
|
*/
|
|
1027
|
-
export const
|
|
1049
|
+
export const syncContext = <A>(evaluate: LazyArg<Context.Context<A>>): Layer<A> =>
|
|
1028
1050
|
fromBuildMemo(constant(internalEffect.sync(evaluate)))
|
|
1029
1051
|
|
|
1030
1052
|
/**
|
|
@@ -1042,9 +1064,9 @@ export const syncServices = <A>(evaluate: LazyArg<ServiceMap.ServiceMap<A>>): La
|
|
|
1042
1064
|
*
|
|
1043
1065
|
* @example
|
|
1044
1066
|
* ```ts
|
|
1045
|
-
* import { Effect, Layer,
|
|
1067
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1046
1068
|
*
|
|
1047
|
-
* class Database extends
|
|
1069
|
+
* class Database extends Context.Service<Database, {
|
|
1048
1070
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1049
1071
|
* }>()("Database") {}
|
|
1050
1072
|
*
|
|
@@ -1074,9 +1096,9 @@ export const effect: {
|
|
|
1074
1096
|
*
|
|
1075
1097
|
* @example
|
|
1076
1098
|
* ```ts
|
|
1077
|
-
* import { Effect, Layer,
|
|
1099
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1078
1100
|
*
|
|
1079
|
-
* class Database extends
|
|
1101
|
+
* class Database extends Context.Service<Database, {
|
|
1080
1102
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1081
1103
|
* }>()("Database") {}
|
|
1082
1104
|
*
|
|
@@ -1090,7 +1112,7 @@ export const effect: {
|
|
|
1090
1112
|
* @since 2.0.0
|
|
1091
1113
|
* @category constructors
|
|
1092
1114
|
*/
|
|
1093
|
-
<I, S>(service:
|
|
1115
|
+
<I, S>(service: Context.Key<I, S>): <E, R>(
|
|
1094
1116
|
effect: Effect<S, E, R>
|
|
1095
1117
|
) => Layer<I, E, Exclude<R, Scope.Scope>>
|
|
1096
1118
|
/**
|
|
@@ -1108,9 +1130,9 @@ export const effect: {
|
|
|
1108
1130
|
*
|
|
1109
1131
|
* @example
|
|
1110
1132
|
* ```ts
|
|
1111
|
-
* import { Effect, Layer,
|
|
1133
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1112
1134
|
*
|
|
1113
|
-
* class Database extends
|
|
1135
|
+
* class Database extends Context.Service<Database, {
|
|
1114
1136
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1115
1137
|
* }>()("Database") {}
|
|
1116
1138
|
*
|
|
@@ -1124,7 +1146,7 @@ export const effect: {
|
|
|
1124
1146
|
* @since 2.0.0
|
|
1125
1147
|
* @category constructors
|
|
1126
1148
|
*/
|
|
1127
|
-
<I, S, E, R>(service:
|
|
1149
|
+
<I, S, E, R>(service: Context.Key<I, S>, effect: Effect<Types.NoInfer<S>, E, R>): Layer<I, E, Exclude<R, Scope.Scope>>
|
|
1128
1150
|
} = function() {
|
|
1129
1151
|
if (arguments.length === 1) {
|
|
1130
1152
|
return (effect: any) => effectImpl(arguments[0], effect)
|
|
@@ -1133,10 +1155,10 @@ export const effect: {
|
|
|
1133
1155
|
} as any
|
|
1134
1156
|
|
|
1135
1157
|
const effectImpl = <I, S, E, R>(
|
|
1136
|
-
service:
|
|
1158
|
+
service: Context.Key<I, S>,
|
|
1137
1159
|
effect: Effect<S, E, R>
|
|
1138
1160
|
): Layer<I, E, Exclude<R, Scope.Scope>> =>
|
|
1139
|
-
|
|
1161
|
+
effectContext(internalEffect.map(effect, (value) => Context.make(service, value)))
|
|
1140
1162
|
|
|
1141
1163
|
/**
|
|
1142
1164
|
* Constructs a layer from the specified scoped effect, which must return one
|
|
@@ -1147,15 +1169,15 @@ const effectImpl = <I, S, E, R>(
|
|
|
1147
1169
|
*
|
|
1148
1170
|
* @example
|
|
1149
1171
|
* ```ts
|
|
1150
|
-
* import { Effect, Layer,
|
|
1172
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1151
1173
|
*
|
|
1152
|
-
* class Database extends
|
|
1174
|
+
* class Database extends Context.Service<
|
|
1153
1175
|
* Database,
|
|
1154
1176
|
* { readonly query: (sql: string) => Effect.Effect<string> }
|
|
1155
1177
|
* >()("Database") {}
|
|
1156
1178
|
*
|
|
1157
|
-
* const layer = Layer.
|
|
1158
|
-
* Effect.succeed(
|
|
1179
|
+
* const layer = Layer.effectContext(
|
|
1180
|
+
* Effect.succeed(Context.make(Database, {
|
|
1159
1181
|
* query: (sql: string) => Effect.succeed(`Query: ${sql}`)
|
|
1160
1182
|
* }))
|
|
1161
1183
|
* )
|
|
@@ -1164,8 +1186,8 @@ const effectImpl = <I, S, E, R>(
|
|
|
1164
1186
|
* @since 2.0.0
|
|
1165
1187
|
* @category constructors
|
|
1166
1188
|
*/
|
|
1167
|
-
export const
|
|
1168
|
-
effect: Effect<
|
|
1189
|
+
export const effectContext = <A, E, R>(
|
|
1190
|
+
effect: Effect<Context.Context<A>, E, R>
|
|
1169
1191
|
): Layer<A, E, Exclude<R, Scope.Scope>> => fromBuildMemo((_, scope) => Scope.provide(effect, scope))
|
|
1170
1192
|
|
|
1171
1193
|
/**
|
|
@@ -1195,7 +1217,34 @@ export const effectServices = <A, E, R>(
|
|
|
1195
1217
|
* @category constructors
|
|
1196
1218
|
*/
|
|
1197
1219
|
export const effectDiscard = <X, E, R>(effect: Effect<X, E, R>): Layer<never, E, Exclude<R, Scope.Scope>> =>
|
|
1198
|
-
|
|
1220
|
+
effectContext(internalEffect.as(effect, Context.empty()))
|
|
1221
|
+
|
|
1222
|
+
/**
|
|
1223
|
+
* Lazily constructs a layer using the specified factory.
|
|
1224
|
+
*
|
|
1225
|
+
* The factory is evaluated only when the suspended layer is first built, and
|
|
1226
|
+
* the result is memoized with normal layer sharing semantics.
|
|
1227
|
+
*
|
|
1228
|
+
* @example
|
|
1229
|
+
* ```ts
|
|
1230
|
+
* import { Layer, Context } from "effect"
|
|
1231
|
+
*
|
|
1232
|
+
* class Config extends Context.Service<Config, string>()("Config") {}
|
|
1233
|
+
*
|
|
1234
|
+
* const useProd = true
|
|
1235
|
+
*
|
|
1236
|
+
* const layer = Layer.suspend(() =>
|
|
1237
|
+
* useProd
|
|
1238
|
+
* ? Layer.succeed(Config)("https://api.example.com")
|
|
1239
|
+
* : Layer.succeed(Config)("http://localhost:3000")
|
|
1240
|
+
* )
|
|
1241
|
+
* ```
|
|
1242
|
+
*
|
|
1243
|
+
* @since 4.0.0
|
|
1244
|
+
* @category constructors
|
|
1245
|
+
*/
|
|
1246
|
+
export const suspend = <A, E, R>(evaluate: LazyArg<Layer<A, E, R>>): Layer<A, E, R> =>
|
|
1247
|
+
fromBuildMemo((memoMap, scope) => internalEffect.suspend(() => evaluate().build(memoMap, scope)))
|
|
1199
1248
|
|
|
1200
1249
|
/**
|
|
1201
1250
|
* Unwraps a Layer from an Effect, flattening the nested structure.
|
|
@@ -1206,9 +1255,9 @@ export const effectDiscard = <X, E, R>(effect: Effect<X, E, R>): Layer<never, E,
|
|
|
1206
1255
|
*
|
|
1207
1256
|
* @example
|
|
1208
1257
|
* ```ts
|
|
1209
|
-
* import { Effect, Layer,
|
|
1258
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1210
1259
|
*
|
|
1211
|
-
* class Database extends
|
|
1260
|
+
* class Database extends Context.Service<Database, {
|
|
1212
1261
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1213
1262
|
* }>()("Database") {}
|
|
1214
1263
|
*
|
|
@@ -1225,8 +1274,8 @@ export const effectDiscard = <X, E, R>(effect: Effect<X, E, R>): Layer<never, E,
|
|
|
1225
1274
|
export const unwrap = <A, E1, R1, E, R>(
|
|
1226
1275
|
self: Effect<Layer<A, E1, R1>, E, R>
|
|
1227
1276
|
): Layer<A, E | E1, R1 | Exclude<R, Scope.Scope>> => {
|
|
1228
|
-
const service =
|
|
1229
|
-
return flatMap(effect(service)(self),
|
|
1277
|
+
const service = Context.Service<Layer<A, E1, R1>>("effect/Layer/unwrap")
|
|
1278
|
+
return flatMap(effect(service)(self), Context.get(service))
|
|
1230
1279
|
}
|
|
1231
1280
|
|
|
1232
1281
|
const mergeAllEffect = <Layers extends [Layer<never, any, any>, ...Array<Layer<never, any, any>>]>(
|
|
@@ -1234,7 +1283,7 @@ const mergeAllEffect = <Layers extends [Layer<never, any, any>, ...Array<Layer<n
|
|
|
1234
1283
|
memoMap: MemoMap,
|
|
1235
1284
|
scope: Scope.Scope
|
|
1236
1285
|
): Effect<
|
|
1237
|
-
|
|
1286
|
+
Context.Context<{ [k in keyof Layers]: Success<Layers[k]> }[number]>,
|
|
1238
1287
|
{ [k in keyof Layers]: Error<Layers[k]> }[number],
|
|
1239
1288
|
{ [k in keyof Layers]: Services<Layers[k]> }[number]
|
|
1240
1289
|
> => {
|
|
@@ -1242,7 +1291,7 @@ const mergeAllEffect = <Layers extends [Layer<never, any, any>, ...Array<Layer<n
|
|
|
1242
1291
|
return internalEffect.forEach(layers, (layer) => layer.build(memoMap, Scope.forkUnsafe(parentScope, "sequential")), {
|
|
1243
1292
|
concurrency: layers.length
|
|
1244
1293
|
}).pipe(
|
|
1245
|
-
internalEffect.map((
|
|
1294
|
+
internalEffect.map((context) => Context.mergeAll(...(context as any)))
|
|
1246
1295
|
)
|
|
1247
1296
|
}
|
|
1248
1297
|
|
|
@@ -1254,13 +1303,13 @@ const mergeAllEffect = <Layers extends [Layer<never, any, any>, ...Array<Layer<n
|
|
|
1254
1303
|
*
|
|
1255
1304
|
* @example
|
|
1256
1305
|
* ```ts
|
|
1257
|
-
* import { Effect, Layer,
|
|
1306
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1258
1307
|
*
|
|
1259
|
-
* class Database extends
|
|
1308
|
+
* class Database extends Context.Service<Database, {
|
|
1260
1309
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1261
1310
|
* }>()("Database") {}
|
|
1262
1311
|
*
|
|
1263
|
-
* class Logger extends
|
|
1312
|
+
* class Logger extends Context.Service<Logger, {
|
|
1264
1313
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1265
1314
|
* }>()("Logger") {}
|
|
1266
1315
|
*
|
|
@@ -1293,13 +1342,13 @@ export const mergeAll = <Layers extends [Layer<never, any, any>, ...Array<Layer<
|
|
|
1293
1342
|
*
|
|
1294
1343
|
* @example
|
|
1295
1344
|
* ```ts
|
|
1296
|
-
* import { Effect, Layer,
|
|
1345
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1297
1346
|
*
|
|
1298
|
-
* class Database extends
|
|
1347
|
+
* class Database extends Context.Service<Database, {
|
|
1299
1348
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1300
1349
|
* }>()("Database") {}
|
|
1301
1350
|
*
|
|
1302
|
-
* class Logger extends
|
|
1351
|
+
* class Logger extends Context.Service<Logger, {
|
|
1303
1352
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1304
1353
|
* }>()("Logger") {}
|
|
1305
1354
|
*
|
|
@@ -1325,13 +1374,13 @@ export const merge: {
|
|
|
1325
1374
|
*
|
|
1326
1375
|
* @example
|
|
1327
1376
|
* ```ts
|
|
1328
|
-
* import { Effect, Layer,
|
|
1377
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1329
1378
|
*
|
|
1330
|
-
* class Database extends
|
|
1379
|
+
* class Database extends Context.Service<Database, {
|
|
1331
1380
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1332
1381
|
* }>()("Database") {}
|
|
1333
1382
|
*
|
|
1334
|
-
* class Logger extends
|
|
1383
|
+
* class Logger extends Context.Service<Logger, {
|
|
1335
1384
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1336
1385
|
* }>()("Logger") {}
|
|
1337
1386
|
*
|
|
@@ -1357,13 +1406,13 @@ export const merge: {
|
|
|
1357
1406
|
*
|
|
1358
1407
|
* @example
|
|
1359
1408
|
* ```ts
|
|
1360
|
-
* import { Effect, Layer,
|
|
1409
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1361
1410
|
*
|
|
1362
|
-
* class Database extends
|
|
1411
|
+
* class Database extends Context.Service<Database, {
|
|
1363
1412
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1364
1413
|
* }>()("Database") {}
|
|
1365
1414
|
*
|
|
1366
|
-
* class Logger extends
|
|
1415
|
+
* class Logger extends Context.Service<Logger, {
|
|
1367
1416
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1368
1417
|
* }>()("Logger") {}
|
|
1369
1418
|
*
|
|
@@ -1396,13 +1445,13 @@ export const merge: {
|
|
|
1396
1445
|
*
|
|
1397
1446
|
* @example
|
|
1398
1447
|
* ```ts
|
|
1399
|
-
* import { Effect, Layer,
|
|
1448
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1400
1449
|
*
|
|
1401
|
-
* class Database extends
|
|
1450
|
+
* class Database extends Context.Service<Database, {
|
|
1402
1451
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1403
1452
|
* }>()("Database") {}
|
|
1404
1453
|
*
|
|
1405
|
-
* class Logger extends
|
|
1454
|
+
* class Logger extends Context.Service<Logger, {
|
|
1406
1455
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1407
1456
|
* }>()("Logger") {}
|
|
1408
1457
|
*
|
|
@@ -1428,13 +1477,13 @@ export const merge: {
|
|
|
1428
1477
|
*
|
|
1429
1478
|
* @example
|
|
1430
1479
|
* ```ts
|
|
1431
|
-
* import { Effect, Layer,
|
|
1480
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1432
1481
|
*
|
|
1433
|
-
* class Database extends
|
|
1482
|
+
* class Database extends Context.Service<Database, {
|
|
1434
1483
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1435
1484
|
* }>()("Database") {}
|
|
1436
1485
|
*
|
|
1437
|
-
* class Logger extends
|
|
1486
|
+
* class Logger extends Context.Service<Logger, {
|
|
1438
1487
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1439
1488
|
* }>()("Logger") {}
|
|
1440
1489
|
*
|
|
@@ -1466,9 +1515,9 @@ const provideWith = (
|
|
|
1466
1515
|
self: Layer<any, any, any>,
|
|
1467
1516
|
that: Layer<any, any, any> | ReadonlyArray<Layer<any, any, any>>,
|
|
1468
1517
|
f: (
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
) =>
|
|
1518
|
+
selfContext: Context.Context<any>,
|
|
1519
|
+
thatContext: Context.Context<any>
|
|
1520
|
+
) => Context.Context<any>
|
|
1472
1521
|
) =>
|
|
1473
1522
|
fromBuild((memoMap, scope) =>
|
|
1474
1523
|
internalEffect.flatMap(
|
|
@@ -1477,7 +1526,7 @@ const provideWith = (
|
|
|
1477
1526
|
: (that as Layer<any, any, any>).build(memoMap, scope),
|
|
1478
1527
|
(context) =>
|
|
1479
1528
|
self.build(memoMap, scope).pipe(
|
|
1480
|
-
internalEffect.
|
|
1529
|
+
internalEffect.provideContext(context),
|
|
1481
1530
|
internalEffect.map((merged) => f(merged, context))
|
|
1482
1531
|
)
|
|
1483
1532
|
)
|
|
@@ -1490,20 +1539,20 @@ const provideWith = (
|
|
|
1490
1539
|
*
|
|
1491
1540
|
* @example
|
|
1492
1541
|
* ```ts
|
|
1493
|
-
* import { Effect, Layer,
|
|
1542
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1494
1543
|
*
|
|
1495
|
-
* class Database extends
|
|
1544
|
+
* class Database extends Context.Service<Database, {
|
|
1496
1545
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1497
1546
|
* }>()("Database") {}
|
|
1498
1547
|
*
|
|
1499
|
-
* class UserService extends
|
|
1548
|
+
* class UserService extends Context.Service<UserService, {
|
|
1500
1549
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
1501
1550
|
* id: string
|
|
1502
1551
|
* name: string
|
|
1503
1552
|
* }>
|
|
1504
1553
|
* }>()("UserService") {}
|
|
1505
1554
|
*
|
|
1506
|
-
* class Logger extends
|
|
1555
|
+
* class Logger extends Context.Service<Logger, {
|
|
1507
1556
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1508
1557
|
* }>()("Logger") {}
|
|
1509
1558
|
*
|
|
@@ -1557,20 +1606,20 @@ export const provide: {
|
|
|
1557
1606
|
*
|
|
1558
1607
|
* @example
|
|
1559
1608
|
* ```ts
|
|
1560
|
-
* import { Effect, Layer,
|
|
1609
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1561
1610
|
*
|
|
1562
|
-
* class Database extends
|
|
1611
|
+
* class Database extends Context.Service<Database, {
|
|
1563
1612
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1564
1613
|
* }>()("Database") {}
|
|
1565
1614
|
*
|
|
1566
|
-
* class UserService extends
|
|
1615
|
+
* class UserService extends Context.Service<UserService, {
|
|
1567
1616
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
1568
1617
|
* id: string
|
|
1569
1618
|
* name: string
|
|
1570
1619
|
* }>
|
|
1571
1620
|
* }>()("UserService") {}
|
|
1572
1621
|
*
|
|
1573
|
-
* class Logger extends
|
|
1622
|
+
* class Logger extends Context.Service<Logger, {
|
|
1574
1623
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1575
1624
|
* }>()("Logger") {}
|
|
1576
1625
|
*
|
|
@@ -1624,20 +1673,20 @@ export const provide: {
|
|
|
1624
1673
|
*
|
|
1625
1674
|
* @example
|
|
1626
1675
|
* ```ts
|
|
1627
|
-
* import { Effect, Layer,
|
|
1676
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1628
1677
|
*
|
|
1629
|
-
* class Database extends
|
|
1678
|
+
* class Database extends Context.Service<Database, {
|
|
1630
1679
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1631
1680
|
* }>()("Database") {}
|
|
1632
1681
|
*
|
|
1633
|
-
* class UserService extends
|
|
1682
|
+
* class UserService extends Context.Service<UserService, {
|
|
1634
1683
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
1635
1684
|
* id: string
|
|
1636
1685
|
* name: string
|
|
1637
1686
|
* }>
|
|
1638
1687
|
* }>()("UserService") {}
|
|
1639
1688
|
*
|
|
1640
|
-
* class Logger extends
|
|
1689
|
+
* class Logger extends Context.Service<Logger, {
|
|
1641
1690
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1642
1691
|
* }>()("Logger") {}
|
|
1643
1692
|
*
|
|
@@ -1698,20 +1747,20 @@ export const provide: {
|
|
|
1698
1747
|
*
|
|
1699
1748
|
* @example
|
|
1700
1749
|
* ```ts
|
|
1701
|
-
* import { Effect, Layer,
|
|
1750
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1702
1751
|
*
|
|
1703
|
-
* class Database extends
|
|
1752
|
+
* class Database extends Context.Service<Database, {
|
|
1704
1753
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1705
1754
|
* }>()("Database") {}
|
|
1706
1755
|
*
|
|
1707
|
-
* class UserService extends
|
|
1756
|
+
* class UserService extends Context.Service<UserService, {
|
|
1708
1757
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
1709
1758
|
* id: string
|
|
1710
1759
|
* name: string
|
|
1711
1760
|
* }>
|
|
1712
1761
|
* }>()("UserService") {}
|
|
1713
1762
|
*
|
|
1714
|
-
* class Logger extends
|
|
1763
|
+
* class Logger extends Context.Service<Logger, {
|
|
1715
1764
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1716
1765
|
* }>()("Logger") {}
|
|
1717
1766
|
*
|
|
@@ -1765,20 +1814,20 @@ export const provide: {
|
|
|
1765
1814
|
*
|
|
1766
1815
|
* @example
|
|
1767
1816
|
* ```ts
|
|
1768
|
-
* import { Effect, Layer,
|
|
1817
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1769
1818
|
*
|
|
1770
|
-
* class Database extends
|
|
1819
|
+
* class Database extends Context.Service<Database, {
|
|
1771
1820
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1772
1821
|
* }>()("Database") {}
|
|
1773
1822
|
*
|
|
1774
|
-
* class UserService extends
|
|
1823
|
+
* class UserService extends Context.Service<UserService, {
|
|
1775
1824
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
1776
1825
|
* id: string
|
|
1777
1826
|
* name: string
|
|
1778
1827
|
* }>
|
|
1779
1828
|
* }>()("UserService") {}
|
|
1780
1829
|
*
|
|
1781
|
-
* class Logger extends
|
|
1830
|
+
* class Logger extends Context.Service<Logger, {
|
|
1782
1831
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1783
1832
|
* }>()("Logger") {}
|
|
1784
1833
|
*
|
|
@@ -1842,17 +1891,17 @@ export const provide: {
|
|
|
1842
1891
|
*
|
|
1843
1892
|
* @example
|
|
1844
1893
|
* ```ts
|
|
1845
|
-
* import { Effect, Layer,
|
|
1894
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1846
1895
|
*
|
|
1847
|
-
* class Database extends
|
|
1896
|
+
* class Database extends Context.Service<Database, {
|
|
1848
1897
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1849
1898
|
* }>()("Database") {}
|
|
1850
1899
|
*
|
|
1851
|
-
* class Logger extends
|
|
1900
|
+
* class Logger extends Context.Service<Logger, {
|
|
1852
1901
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1853
1902
|
* }>()("Logger") {}
|
|
1854
1903
|
*
|
|
1855
|
-
* class UserService extends
|
|
1904
|
+
* class UserService extends Context.Service<UserService, {
|
|
1856
1905
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
1857
1906
|
* id: string
|
|
1858
1907
|
* name: string
|
|
@@ -1915,17 +1964,17 @@ export const provideMerge: {
|
|
|
1915
1964
|
*
|
|
1916
1965
|
* @example
|
|
1917
1966
|
* ```ts
|
|
1918
|
-
* import { Effect, Layer,
|
|
1967
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1919
1968
|
*
|
|
1920
|
-
* class Database extends
|
|
1969
|
+
* class Database extends Context.Service<Database, {
|
|
1921
1970
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1922
1971
|
* }>()("Database") {}
|
|
1923
1972
|
*
|
|
1924
|
-
* class Logger extends
|
|
1973
|
+
* class Logger extends Context.Service<Logger, {
|
|
1925
1974
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1926
1975
|
* }>()("Logger") {}
|
|
1927
1976
|
*
|
|
1928
|
-
* class UserService extends
|
|
1977
|
+
* class UserService extends Context.Service<UserService, {
|
|
1929
1978
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
1930
1979
|
* id: string
|
|
1931
1980
|
* name: string
|
|
@@ -1988,17 +2037,17 @@ export const provideMerge: {
|
|
|
1988
2037
|
*
|
|
1989
2038
|
* @example
|
|
1990
2039
|
* ```ts
|
|
1991
|
-
* import { Effect, Layer,
|
|
2040
|
+
* import { Effect, Layer, Context } from "effect"
|
|
1992
2041
|
*
|
|
1993
|
-
* class Database extends
|
|
2042
|
+
* class Database extends Context.Service<Database, {
|
|
1994
2043
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
1995
2044
|
* }>()("Database") {}
|
|
1996
2045
|
*
|
|
1997
|
-
* class Logger extends
|
|
2046
|
+
* class Logger extends Context.Service<Logger, {
|
|
1998
2047
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
1999
2048
|
* }>()("Logger") {}
|
|
2000
2049
|
*
|
|
2001
|
-
* class UserService extends
|
|
2050
|
+
* class UserService extends Context.Service<UserService, {
|
|
2002
2051
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
2003
2052
|
* id: string
|
|
2004
2053
|
* name: string
|
|
@@ -2068,17 +2117,17 @@ export const provideMerge: {
|
|
|
2068
2117
|
*
|
|
2069
2118
|
* @example
|
|
2070
2119
|
* ```ts
|
|
2071
|
-
* import { Effect, Layer,
|
|
2120
|
+
* import { Effect, Layer, Context } from "effect"
|
|
2072
2121
|
*
|
|
2073
|
-
* class Database extends
|
|
2122
|
+
* class Database extends Context.Service<Database, {
|
|
2074
2123
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2075
2124
|
* }>()("Database") {}
|
|
2076
2125
|
*
|
|
2077
|
-
* class Logger extends
|
|
2126
|
+
* class Logger extends Context.Service<Logger, {
|
|
2078
2127
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2079
2128
|
* }>()("Logger") {}
|
|
2080
2129
|
*
|
|
2081
|
-
* class UserService extends
|
|
2130
|
+
* class UserService extends Context.Service<UserService, {
|
|
2082
2131
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
2083
2132
|
* id: string
|
|
2084
2133
|
* name: string
|
|
@@ -2141,17 +2190,17 @@ export const provideMerge: {
|
|
|
2141
2190
|
*
|
|
2142
2191
|
* @example
|
|
2143
2192
|
* ```ts
|
|
2144
|
-
* import { Effect, Layer,
|
|
2193
|
+
* import { Effect, Layer, Context } from "effect"
|
|
2145
2194
|
*
|
|
2146
|
-
* class Database extends
|
|
2195
|
+
* class Database extends Context.Service<Database, {
|
|
2147
2196
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2148
2197
|
* }>()("Database") {}
|
|
2149
2198
|
*
|
|
2150
|
-
* class Logger extends
|
|
2199
|
+
* class Logger extends Context.Service<Logger, {
|
|
2151
2200
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2152
2201
|
* }>()("Logger") {}
|
|
2153
2202
|
*
|
|
2154
|
-
* class UserService extends
|
|
2203
|
+
* class UserService extends Context.Service<UserService, {
|
|
2155
2204
|
* readonly getUser: (id: string) => Effect.Effect<{
|
|
2156
2205
|
* id: string
|
|
2157
2206
|
* name: string
|
|
@@ -2219,7 +2268,7 @@ export const provideMerge: {
|
|
|
2219
2268
|
provideWith(
|
|
2220
2269
|
self,
|
|
2221
2270
|
that,
|
|
2222
|
-
(self, that) =>
|
|
2271
|
+
(self, that) => Context.merge(that, self)
|
|
2223
2272
|
))
|
|
2224
2273
|
|
|
2225
2274
|
/**
|
|
@@ -2227,18 +2276,18 @@ export const provideMerge: {
|
|
|
2227
2276
|
*
|
|
2228
2277
|
* @example
|
|
2229
2278
|
* ```ts
|
|
2230
|
-
* import { Effect, Layer,
|
|
2279
|
+
* import { Effect, Layer, Context } from "effect"
|
|
2231
2280
|
*
|
|
2232
|
-
* class Config extends
|
|
2281
|
+
* class Config extends Context.Service<Config, {
|
|
2233
2282
|
* readonly dbUrl: string
|
|
2234
2283
|
* readonly logLevel: string
|
|
2235
2284
|
* }>()("Config") {}
|
|
2236
2285
|
*
|
|
2237
|
-
* class Database extends
|
|
2286
|
+
* class Database extends Context.Service<Database, {
|
|
2238
2287
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2239
2288
|
* }>()("Database") {}
|
|
2240
2289
|
*
|
|
2241
|
-
* class Logger extends
|
|
2290
|
+
* class Logger extends Context.Service<Logger, {
|
|
2242
2291
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2243
2292
|
* }>()("Logger") {}
|
|
2244
2293
|
*
|
|
@@ -2250,8 +2299,8 @@ export const provideMerge: {
|
|
|
2250
2299
|
*
|
|
2251
2300
|
* // Dynamically create services based on config
|
|
2252
2301
|
* const dynamicServiceLayer = configLayer.pipe(
|
|
2253
|
-
* Layer.flatMap((
|
|
2254
|
-
* const config =
|
|
2302
|
+
* Layer.flatMap((context) => {
|
|
2303
|
+
* const config = Context.get(context, Config)
|
|
2255
2304
|
*
|
|
2256
2305
|
* // Create database layer based on config
|
|
2257
2306
|
* const dbLayer = Layer.succeed(Database)({
|
|
@@ -2298,18 +2347,18 @@ export const flatMap: {
|
|
|
2298
2347
|
*
|
|
2299
2348
|
* @example
|
|
2300
2349
|
* ```ts
|
|
2301
|
-
* import { Effect, Layer,
|
|
2350
|
+
* import { Effect, Layer, Context } from "effect"
|
|
2302
2351
|
*
|
|
2303
|
-
* class Config extends
|
|
2352
|
+
* class Config extends Context.Service<Config, {
|
|
2304
2353
|
* readonly dbUrl: string
|
|
2305
2354
|
* readonly logLevel: string
|
|
2306
2355
|
* }>()("Config") {}
|
|
2307
2356
|
*
|
|
2308
|
-
* class Database extends
|
|
2357
|
+
* class Database extends Context.Service<Database, {
|
|
2309
2358
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2310
2359
|
* }>()("Database") {}
|
|
2311
2360
|
*
|
|
2312
|
-
* class Logger extends
|
|
2361
|
+
* class Logger extends Context.Service<Logger, {
|
|
2313
2362
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2314
2363
|
* }>()("Logger") {}
|
|
2315
2364
|
*
|
|
@@ -2321,8 +2370,8 @@ export const flatMap: {
|
|
|
2321
2370
|
*
|
|
2322
2371
|
* // Dynamically create services based on config
|
|
2323
2372
|
* const dynamicServiceLayer = configLayer.pipe(
|
|
2324
|
-
* Layer.flatMap((
|
|
2325
|
-
* const config =
|
|
2373
|
+
* Layer.flatMap((context) => {
|
|
2374
|
+
* const config = Context.get(context, Config)
|
|
2326
2375
|
*
|
|
2327
2376
|
* // Create database layer based on config
|
|
2328
2377
|
* const dbLayer = Layer.succeed(Database)({
|
|
@@ -2363,24 +2412,24 @@ export const flatMap: {
|
|
|
2363
2412
|
* @since 2.0.0
|
|
2364
2413
|
* @category sequencing
|
|
2365
2414
|
*/
|
|
2366
|
-
<A, A2, E2, R2>(f: (context:
|
|
2415
|
+
<A, A2, E2, R2>(f: (context: Context.Context<A>) => Layer<A2, E2, R2>): <E, R>(self: Layer<A, E, R>) => Layer<A2, E2 | E, R2 | R>
|
|
2367
2416
|
/**
|
|
2368
2417
|
* Constructs a layer dynamically based on the output of this layer.
|
|
2369
2418
|
*
|
|
2370
2419
|
* @example
|
|
2371
2420
|
* ```ts
|
|
2372
|
-
* import { Effect, Layer,
|
|
2421
|
+
* import { Effect, Layer, Context } from "effect"
|
|
2373
2422
|
*
|
|
2374
|
-
* class Config extends
|
|
2423
|
+
* class Config extends Context.Service<Config, {
|
|
2375
2424
|
* readonly dbUrl: string
|
|
2376
2425
|
* readonly logLevel: string
|
|
2377
2426
|
* }>()("Config") {}
|
|
2378
2427
|
*
|
|
2379
|
-
* class Database extends
|
|
2428
|
+
* class Database extends Context.Service<Database, {
|
|
2380
2429
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2381
2430
|
* }>()("Database") {}
|
|
2382
2431
|
*
|
|
2383
|
-
* class Logger extends
|
|
2432
|
+
* class Logger extends Context.Service<Logger, {
|
|
2384
2433
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2385
2434
|
* }>()("Logger") {}
|
|
2386
2435
|
*
|
|
@@ -2392,8 +2441,8 @@ export const flatMap: {
|
|
|
2392
2441
|
*
|
|
2393
2442
|
* // Dynamically create services based on config
|
|
2394
2443
|
* const dynamicServiceLayer = configLayer.pipe(
|
|
2395
|
-
* Layer.flatMap((
|
|
2396
|
-
* const config =
|
|
2444
|
+
* Layer.flatMap((context) => {
|
|
2445
|
+
* const config = Context.get(context, Config)
|
|
2397
2446
|
*
|
|
2398
2447
|
* // Create database layer based on config
|
|
2399
2448
|
* const dbLayer = Layer.succeed(Database)({
|
|
@@ -2436,11 +2485,11 @@ export const flatMap: {
|
|
|
2436
2485
|
*/
|
|
2437
2486
|
<A, E, R, A2, E2, R2>(
|
|
2438
2487
|
self: Layer<A, E, R>,
|
|
2439
|
-
f: (context:
|
|
2488
|
+
f: (context: Context.Context<A>) => Layer<A2, E2, R2>
|
|
2440
2489
|
): Layer<A2, E | E2, R | R2>
|
|
2441
2490
|
} = dual(2, <A, E, R, A2, E2, R2>(
|
|
2442
2491
|
self: Layer<A, E, R>,
|
|
2443
|
-
f: (context:
|
|
2492
|
+
f: (context: Context.Context<A>) => Layer<A2, E2, R2>
|
|
2444
2493
|
): Layer<A2, E | E2, R | R2> =>
|
|
2445
2494
|
fromBuild((memoMap, scope) =>
|
|
2446
2495
|
internalEffect.flatMap(
|
|
@@ -2462,7 +2511,7 @@ export const tap: {
|
|
|
2462
2511
|
* @since 4.0.0
|
|
2463
2512
|
* @category sequencing
|
|
2464
2513
|
*/
|
|
2465
|
-
<ROut, XR extends ROut, RIn2, E2, X>(f: (context:
|
|
2514
|
+
<ROut, XR extends ROut, RIn2, E2, X>(f: (context: Context.Context<XR>) => Effect<X, E2, RIn2>): <RIn, E>(self: Layer<ROut, E, RIn>) => Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2466
2515
|
/**
|
|
2467
2516
|
* Performs the specified effect if this layer succeeds.
|
|
2468
2517
|
*
|
|
@@ -2471,16 +2520,16 @@ export const tap: {
|
|
|
2471
2520
|
*/
|
|
2472
2521
|
<RIn, E, ROut, XR extends ROut, RIn2, E2, X>(
|
|
2473
2522
|
self: Layer<ROut, E, RIn>,
|
|
2474
|
-
f: (context:
|
|
2523
|
+
f: (context: Context.Context<XR>) => Effect<X, E2, RIn2>
|
|
2475
2524
|
): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2476
2525
|
} = dual(2, <RIn, E, ROut, XR extends ROut, RIn2, E2, X>(
|
|
2477
2526
|
self: Layer<ROut, E, RIn>,
|
|
2478
|
-
f: (context:
|
|
2527
|
+
f: (context: Context.Context<XR>) => Effect<X, E2, RIn2>
|
|
2479
2528
|
): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>> =>
|
|
2480
2529
|
fromBuild((memoMap, scope) =>
|
|
2481
2530
|
internalEffect.flatMap(
|
|
2482
2531
|
self.build(memoMap, scope),
|
|
2483
|
-
(context) => Scope.provide(internalEffect.as(f(context as
|
|
2532
|
+
(context) => Scope.provide(internalEffect.as(f(context as Context.Context<XR>), context), scope)
|
|
2484
2533
|
)
|
|
2485
2534
|
))
|
|
2486
2535
|
|
|
@@ -2576,13 +2625,13 @@ export const tapCause: {
|
|
|
2576
2625
|
*
|
|
2577
2626
|
* @example
|
|
2578
2627
|
* ```ts
|
|
2579
|
-
* import { Data, Effect, Layer,
|
|
2628
|
+
* import { Data, Effect, Layer, Context } from "effect"
|
|
2580
2629
|
*
|
|
2581
2630
|
* class DatabaseError extends Data.TaggedError("DatabaseError")<{
|
|
2582
2631
|
* message: string
|
|
2583
2632
|
* }> {}
|
|
2584
2633
|
*
|
|
2585
|
-
* class Database extends
|
|
2634
|
+
* class Database extends Context.Service<Database, {
|
|
2586
2635
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2587
2636
|
* }>()("Database") {}
|
|
2588
2637
|
*
|
|
@@ -2652,11 +2701,11 @@ export {
|
|
|
2652
2701
|
*
|
|
2653
2702
|
* @example
|
|
2654
2703
|
* ```ts
|
|
2655
|
-
* import { Data, Effect, Layer,
|
|
2704
|
+
* import { Data, Effect, Layer, Context } from "effect"
|
|
2656
2705
|
*
|
|
2657
2706
|
* class ConfigError extends Data.TaggedError("ConfigError") {}
|
|
2658
2707
|
*
|
|
2659
|
-
* class Config extends
|
|
2708
|
+
* class Config extends Context.Service<Config, {
|
|
2660
2709
|
* readonly apiUrl: string
|
|
2661
2710
|
* }>()("Config") {}
|
|
2662
2711
|
*
|
|
@@ -2678,11 +2727,11 @@ export const catchTag: {
|
|
|
2678
2727
|
*
|
|
2679
2728
|
* @example
|
|
2680
2729
|
* ```ts
|
|
2681
|
-
* import { Data, Effect, Layer,
|
|
2730
|
+
* import { Data, Effect, Layer, Context } from "effect"
|
|
2682
2731
|
*
|
|
2683
2732
|
* class ConfigError extends Data.TaggedError("ConfigError") {}
|
|
2684
2733
|
*
|
|
2685
|
-
* class Config extends
|
|
2734
|
+
* class Config extends Context.Service<Config, {
|
|
2686
2735
|
* readonly apiUrl: string
|
|
2687
2736
|
* }>()("Config") {}
|
|
2688
2737
|
*
|
|
@@ -2715,11 +2764,11 @@ export const catchTag: {
|
|
|
2715
2764
|
*
|
|
2716
2765
|
* @example
|
|
2717
2766
|
* ```ts
|
|
2718
|
-
* import { Data, Effect, Layer,
|
|
2767
|
+
* import { Data, Effect, Layer, Context } from "effect"
|
|
2719
2768
|
*
|
|
2720
2769
|
* class ConfigError extends Data.TaggedError("ConfigError") {}
|
|
2721
2770
|
*
|
|
2722
|
-
* class Config extends
|
|
2771
|
+
* class Config extends Context.Service<Config, {
|
|
2723
2772
|
* readonly apiUrl: string
|
|
2724
2773
|
* }>()("Config") {}
|
|
2725
2774
|
*
|
|
@@ -2778,7 +2827,7 @@ export const catchTag: {
|
|
|
2778
2827
|
*
|
|
2779
2828
|
* @example
|
|
2780
2829
|
* ```ts
|
|
2781
|
-
* import { Data, Effect, Layer,
|
|
2830
|
+
* import { Data, Effect, Layer, Context } from "effect"
|
|
2782
2831
|
*
|
|
2783
2832
|
* class DatabaseError extends Data.TaggedError("DatabaseError")<{
|
|
2784
2833
|
* message: string
|
|
@@ -2788,11 +2837,11 @@ export const catchTag: {
|
|
|
2788
2837
|
* reason: string
|
|
2789
2838
|
* }> {}
|
|
2790
2839
|
*
|
|
2791
|
-
* class Database extends
|
|
2840
|
+
* class Database extends Context.Service<Database, {
|
|
2792
2841
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2793
2842
|
* }>()("Database") {}
|
|
2794
2843
|
*
|
|
2795
|
-
* class Logger extends
|
|
2844
|
+
* class Logger extends Context.Service<Logger, {
|
|
2796
2845
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2797
2846
|
* }>()("Logger") {}
|
|
2798
2847
|
*
|
|
@@ -2836,7 +2885,7 @@ export const catchCause: {
|
|
|
2836
2885
|
*
|
|
2837
2886
|
* @example
|
|
2838
2887
|
* ```ts
|
|
2839
|
-
* import { Data, Effect, Layer,
|
|
2888
|
+
* import { Data, Effect, Layer, Context } from "effect"
|
|
2840
2889
|
*
|
|
2841
2890
|
* class DatabaseError extends Data.TaggedError("DatabaseError")<{
|
|
2842
2891
|
* message: string
|
|
@@ -2846,11 +2895,11 @@ export const catchCause: {
|
|
|
2846
2895
|
* reason: string
|
|
2847
2896
|
* }> {}
|
|
2848
2897
|
*
|
|
2849
|
-
* class Database extends
|
|
2898
|
+
* class Database extends Context.Service<Database, {
|
|
2850
2899
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2851
2900
|
* }>()("Database") {}
|
|
2852
2901
|
*
|
|
2853
|
-
* class Logger extends
|
|
2902
|
+
* class Logger extends Context.Service<Logger, {
|
|
2854
2903
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2855
2904
|
* }>()("Logger") {}
|
|
2856
2905
|
*
|
|
@@ -2894,7 +2943,7 @@ export const catchCause: {
|
|
|
2894
2943
|
*
|
|
2895
2944
|
* @example
|
|
2896
2945
|
* ```ts
|
|
2897
|
-
* import { Data, Effect, Layer,
|
|
2946
|
+
* import { Data, Effect, Layer, Context } from "effect"
|
|
2898
2947
|
*
|
|
2899
2948
|
* class DatabaseError extends Data.TaggedError("DatabaseError")<{
|
|
2900
2949
|
* message: string
|
|
@@ -2904,11 +2953,11 @@ export const catchCause: {
|
|
|
2904
2953
|
* reason: string
|
|
2905
2954
|
* }> {}
|
|
2906
2955
|
*
|
|
2907
|
-
* class Database extends
|
|
2956
|
+
* class Database extends Context.Service<Database, {
|
|
2908
2957
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
2909
2958
|
* }>()("Database") {}
|
|
2910
2959
|
*
|
|
2911
|
-
* class Logger extends
|
|
2960
|
+
* class Logger extends Context.Service<Logger, {
|
|
2912
2961
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
2913
2962
|
* }>()("Logger") {}
|
|
2914
2963
|
*
|
|
@@ -2998,7 +3047,7 @@ export const updateService: {
|
|
|
2998
3047
|
* @since 3.13.0
|
|
2999
3048
|
* @category utils
|
|
3000
3049
|
*/
|
|
3001
|
-
<I, A>(service:
|
|
3050
|
+
<I, A>(service: Context.Key<I, A>, f: (a: Types.NoInfer<A>) => A): <A1, E1, R1>(layer: Layer<A1, E1, R1>) => Layer<A1, E1, I | R1>
|
|
3002
3051
|
/**
|
|
3003
3052
|
* Updates a service in the context with a new implementation.
|
|
3004
3053
|
*
|
|
@@ -3017,13 +3066,17 @@ export const updateService: {
|
|
|
3017
3066
|
* @since 3.13.0
|
|
3018
3067
|
* @category utils
|
|
3019
3068
|
*/
|
|
3020
|
-
<A1, E1, R1, I, A>(
|
|
3069
|
+
<A1, E1, R1, I, A>(
|
|
3070
|
+
layer: Layer<A1, E1, R1>,
|
|
3071
|
+
service: Context.Key<I, A>,
|
|
3072
|
+
f: (a: Types.NoInfer<A>) => A
|
|
3073
|
+
): Layer<A1, E1, I | R1>
|
|
3021
3074
|
} = dual(
|
|
3022
3075
|
3,
|
|
3023
3076
|
<A1, E1, R1, I, A>(
|
|
3024
3077
|
layer: Layer<A1, E1, R1>,
|
|
3025
|
-
service:
|
|
3026
|
-
f: (a: A) => A
|
|
3078
|
+
service: Context.Key<I, A>,
|
|
3079
|
+
f: (a: Types.NoInfer<A>) => A
|
|
3027
3080
|
): Layer<A1, E1, I | R1> => provide(layer, effect(service, internalEffect.map(service.asEffect(), f)))
|
|
3028
3081
|
)
|
|
3029
3082
|
|
|
@@ -3032,9 +3085,9 @@ export const updateService: {
|
|
|
3032
3085
|
*
|
|
3033
3086
|
* @example
|
|
3034
3087
|
* ```ts
|
|
3035
|
-
* import { Effect, Layer, Ref,
|
|
3088
|
+
* import { Effect, Layer, Ref, Context } from "effect"
|
|
3036
3089
|
*
|
|
3037
|
-
* class Counter extends
|
|
3090
|
+
* class Counter extends Context.Service<Counter, {
|
|
3038
3091
|
* readonly count: number
|
|
3039
3092
|
* readonly increment: () => Effect.Effect<number>
|
|
3040
3093
|
* }>()("Counter") {}
|
|
@@ -3087,14 +3140,14 @@ export const fresh = <A, E, R>(self: Layer<A, E, R>): Layer<A, E, R> =>
|
|
|
3087
3140
|
*
|
|
3088
3141
|
* @example
|
|
3089
3142
|
* ```ts
|
|
3090
|
-
* import { Console, Effect, Layer,
|
|
3143
|
+
* import { Console, Effect, Layer, Context } from "effect"
|
|
3091
3144
|
*
|
|
3092
|
-
* class HttpServer extends
|
|
3145
|
+
* class HttpServer extends Context.Service<HttpServer, {
|
|
3093
3146
|
* readonly start: () => Effect.Effect<string>
|
|
3094
3147
|
* readonly stop: () => Effect.Effect<string>
|
|
3095
3148
|
* }>()("HttpServer") {}
|
|
3096
3149
|
*
|
|
3097
|
-
* class Logger extends
|
|
3150
|
+
* class Logger extends Context.Service<Logger, {
|
|
3098
3151
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
3099
3152
|
* }>()("Logger") {}
|
|
3100
3153
|
*
|
|
@@ -3172,9 +3225,9 @@ type AnyEffectOrStream =
|
|
|
3172
3225
|
*
|
|
3173
3226
|
* @example
|
|
3174
3227
|
* ```ts
|
|
3175
|
-
* import { Effect, Layer,
|
|
3228
|
+
* import { Effect, Layer, Context } from "effect"
|
|
3176
3229
|
*
|
|
3177
|
-
* class UserService extends
|
|
3230
|
+
* class UserService extends Context.Service<UserService, {
|
|
3178
3231
|
* readonly config: { apiUrl: string }
|
|
3179
3232
|
* readonly getUser: (
|
|
3180
3233
|
* id: string
|
|
@@ -3219,9 +3272,9 @@ export const mock: {
|
|
|
3219
3272
|
*
|
|
3220
3273
|
* @example
|
|
3221
3274
|
* ```ts
|
|
3222
|
-
* import { Effect, Layer,
|
|
3275
|
+
* import { Effect, Layer, Context } from "effect"
|
|
3223
3276
|
*
|
|
3224
|
-
* class UserService extends
|
|
3277
|
+
* class UserService extends Context.Service<UserService, {
|
|
3225
3278
|
* readonly config: { apiUrl: string }
|
|
3226
3279
|
* readonly getUser: (
|
|
3227
3280
|
* id: string
|
|
@@ -3258,7 +3311,7 @@ export const mock: {
|
|
|
3258
3311
|
* @since 4.0.0
|
|
3259
3312
|
* @category Testing
|
|
3260
3313
|
*/
|
|
3261
|
-
<I, S extends object>(service:
|
|
3314
|
+
<I, S extends object>(service: Context.Key<I, S>): (implementation: PartialEffectful<S>) => Layer<I>
|
|
3262
3315
|
/**
|
|
3263
3316
|
* Creates a mock layer for testing purposes. You can provide a partial
|
|
3264
3317
|
* implementation of the service, and any methods not provided will
|
|
@@ -3266,9 +3319,9 @@ export const mock: {
|
|
|
3266
3319
|
*
|
|
3267
3320
|
* @example
|
|
3268
3321
|
* ```ts
|
|
3269
|
-
* import { Effect, Layer,
|
|
3322
|
+
* import { Effect, Layer, Context } from "effect"
|
|
3270
3323
|
*
|
|
3271
|
-
* class UserService extends
|
|
3324
|
+
* class UserService extends Context.Service<UserService, {
|
|
3272
3325
|
* readonly config: { apiUrl: string }
|
|
3273
3326
|
* readonly getUser: (
|
|
3274
3327
|
* id: string
|
|
@@ -3306,7 +3359,7 @@ export const mock: {
|
|
|
3306
3359
|
* @category Testing
|
|
3307
3360
|
*/
|
|
3308
3361
|
<I, S extends object>(
|
|
3309
|
-
service:
|
|
3362
|
+
service: Context.Key<I, S>,
|
|
3310
3363
|
implementation: Types.NoInfer<PartialEffectful<S>>
|
|
3311
3364
|
): Layer<I>
|
|
3312
3365
|
} = function() {
|
|
@@ -3316,7 +3369,7 @@ export const mock: {
|
|
|
3316
3369
|
return mockImpl(arguments[0], arguments[1])
|
|
3317
3370
|
} as any
|
|
3318
3371
|
|
|
3319
|
-
const mockImpl = <I, S extends object>(service:
|
|
3372
|
+
const mockImpl = <I, S extends object>(service: Context.Key<I, S>, implementation: PartialEffectful<S>): Layer<I> =>
|
|
3320
3373
|
succeed(service)(
|
|
3321
3374
|
new Proxy({ ...implementation as object } as S, {
|
|
3322
3375
|
get(target, prop, _receiver) {
|
|
@@ -3488,9 +3541,9 @@ export interface SpanOptions extends Tracer.SpanOptions {
|
|
|
3488
3541
|
*
|
|
3489
3542
|
* @example
|
|
3490
3543
|
* ```ts
|
|
3491
|
-
* import { Console, Effect, Layer,
|
|
3544
|
+
* import { Console, Effect, Layer, Context, type Tracer } from "effect"
|
|
3492
3545
|
*
|
|
3493
|
-
* class Database extends
|
|
3546
|
+
* class Database extends Context.Service<Database, {
|
|
3494
3547
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3495
3548
|
* }>()("Database") {}
|
|
3496
3549
|
*
|
|
@@ -3549,9 +3602,9 @@ export const span = (
|
|
|
3549
3602
|
*
|
|
3550
3603
|
* @example
|
|
3551
3604
|
* ```ts
|
|
3552
|
-
* import { Console, Effect, Layer,
|
|
3605
|
+
* import { Console, Effect, Layer, Context, Tracer } from "effect"
|
|
3553
3606
|
*
|
|
3554
|
-
* class Database extends
|
|
3607
|
+
* class Database extends Context.Service<Database, {
|
|
3555
3608
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3556
3609
|
* }>()("Database") {}
|
|
3557
3610
|
*
|
|
@@ -3578,7 +3631,7 @@ export const span = (
|
|
|
3578
3631
|
* @category tracing
|
|
3579
3632
|
*/
|
|
3580
3633
|
export const parentSpan = (span: Tracer.AnySpan): Layer<Tracer.ParentSpan> =>
|
|
3581
|
-
|
|
3634
|
+
succeedContext(Tracer.ParentSpan.context(span))
|
|
3582
3635
|
|
|
3583
3636
|
/**
|
|
3584
3637
|
* Wraps a Layer with a new tracing span, making all operations in the layer
|
|
@@ -3590,13 +3643,13 @@ export const parentSpan = (span: Tracer.AnySpan): Layer<Tracer.ParentSpan> =>
|
|
|
3590
3643
|
*
|
|
3591
3644
|
* @example
|
|
3592
3645
|
* ```ts
|
|
3593
|
-
* import { Effect, Layer,
|
|
3646
|
+
* import { Effect, Layer, Context } from "effect"
|
|
3594
3647
|
*
|
|
3595
|
-
* class Database extends
|
|
3648
|
+
* class Database extends Context.Service<Database, {
|
|
3596
3649
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3597
3650
|
* }>()("Database") {}
|
|
3598
3651
|
*
|
|
3599
|
-
* class Logger extends
|
|
3652
|
+
* class Logger extends Context.Service<Logger, {
|
|
3600
3653
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
3601
3654
|
* }>()("Logger") {}
|
|
3602
3655
|
*
|
|
@@ -3649,13 +3702,13 @@ export const withSpan: {
|
|
|
3649
3702
|
*
|
|
3650
3703
|
* @example
|
|
3651
3704
|
* ```ts
|
|
3652
|
-
* import { Effect, Layer,
|
|
3705
|
+
* import { Effect, Layer, Context } from "effect"
|
|
3653
3706
|
*
|
|
3654
|
-
* class Database extends
|
|
3707
|
+
* class Database extends Context.Service<Database, {
|
|
3655
3708
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3656
3709
|
* }>()("Database") {}
|
|
3657
3710
|
*
|
|
3658
|
-
* class Logger extends
|
|
3711
|
+
* class Logger extends Context.Service<Logger, {
|
|
3659
3712
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
3660
3713
|
* }>()("Logger") {}
|
|
3661
3714
|
*
|
|
@@ -3710,13 +3763,13 @@ export const withSpan: {
|
|
|
3710
3763
|
*
|
|
3711
3764
|
* @example
|
|
3712
3765
|
* ```ts
|
|
3713
|
-
* import { Effect, Layer,
|
|
3766
|
+
* import { Effect, Layer, Context } from "effect"
|
|
3714
3767
|
*
|
|
3715
|
-
* class Database extends
|
|
3768
|
+
* class Database extends Context.Service<Database, {
|
|
3716
3769
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3717
3770
|
* }>()("Database") {}
|
|
3718
3771
|
*
|
|
3719
|
-
* class Logger extends
|
|
3772
|
+
* class Logger extends Context.Service<Logger, {
|
|
3720
3773
|
* readonly log: (msg: string) => Effect.Effect<void>
|
|
3721
3774
|
* }>()("Logger") {}
|
|
3722
3775
|
*
|
|
@@ -3800,13 +3853,13 @@ export const withSpan: {
|
|
|
3800
3853
|
*
|
|
3801
3854
|
* @example
|
|
3802
3855
|
* ```ts
|
|
3803
|
-
* import { Effect, Layer,
|
|
3856
|
+
* import { Effect, Layer, Context, Tracer } from "effect"
|
|
3804
3857
|
*
|
|
3805
|
-
* class Database extends
|
|
3858
|
+
* class Database extends Context.Service<Database, {
|
|
3806
3859
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3807
3860
|
* }>()("Database") {}
|
|
3808
3861
|
*
|
|
3809
|
-
* class Cache extends
|
|
3862
|
+
* class Cache extends Context.Service<Cache, {
|
|
3810
3863
|
* readonly get: (key: string) => Effect.Effect<string | null>
|
|
3811
3864
|
* }>()("Cache") {}
|
|
3812
3865
|
*
|
|
@@ -3835,9 +3888,9 @@ export const withSpan: {
|
|
|
3835
3888
|
* Layer.withParentSpan(parentSpan)
|
|
3836
3889
|
* )
|
|
3837
3890
|
*
|
|
3838
|
-
* const
|
|
3839
|
-
* const database =
|
|
3840
|
-
* const cache =
|
|
3891
|
+
* const context = yield* Layer.build(AppLayer)
|
|
3892
|
+
* const database = Context.get(context, Database)
|
|
3893
|
+
* const cache = Context.get(context, Cache)
|
|
3841
3894
|
*
|
|
3842
3895
|
* const dbResult = yield* database.query("SELECT * FROM users")
|
|
3843
3896
|
* const cacheResult = yield* cache.get("user:123")
|
|
@@ -3860,13 +3913,13 @@ export const withParentSpan: {
|
|
|
3860
3913
|
*
|
|
3861
3914
|
* @example
|
|
3862
3915
|
* ```ts
|
|
3863
|
-
* import { Effect, Layer,
|
|
3916
|
+
* import { Effect, Layer, Context, Tracer } from "effect"
|
|
3864
3917
|
*
|
|
3865
|
-
* class Database extends
|
|
3918
|
+
* class Database extends Context.Service<Database, {
|
|
3866
3919
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3867
3920
|
* }>()("Database") {}
|
|
3868
3921
|
*
|
|
3869
|
-
* class Cache extends
|
|
3922
|
+
* class Cache extends Context.Service<Cache, {
|
|
3870
3923
|
* readonly get: (key: string) => Effect.Effect<string | null>
|
|
3871
3924
|
* }>()("Cache") {}
|
|
3872
3925
|
*
|
|
@@ -3895,9 +3948,9 @@ export const withParentSpan: {
|
|
|
3895
3948
|
* Layer.withParentSpan(parentSpan)
|
|
3896
3949
|
* )
|
|
3897
3950
|
*
|
|
3898
|
-
* const
|
|
3899
|
-
* const database =
|
|
3900
|
-
* const cache =
|
|
3951
|
+
* const context = yield* Layer.build(AppLayer)
|
|
3952
|
+
* const database = Context.get(context, Database)
|
|
3953
|
+
* const cache = Context.get(context, Cache)
|
|
3901
3954
|
*
|
|
3902
3955
|
* const dbResult = yield* database.query("SELECT * FROM users")
|
|
3903
3956
|
* const cacheResult = yield* cache.get("user:123")
|
|
@@ -3922,13 +3975,13 @@ export const withParentSpan: {
|
|
|
3922
3975
|
*
|
|
3923
3976
|
* @example
|
|
3924
3977
|
* ```ts
|
|
3925
|
-
* import { Effect, Layer,
|
|
3978
|
+
* import { Effect, Layer, Context, Tracer } from "effect"
|
|
3926
3979
|
*
|
|
3927
|
-
* class Database extends
|
|
3980
|
+
* class Database extends Context.Service<Database, {
|
|
3928
3981
|
* readonly query: (sql: string) => Effect.Effect<string>
|
|
3929
3982
|
* }>()("Database") {}
|
|
3930
3983
|
*
|
|
3931
|
-
* class Cache extends
|
|
3984
|
+
* class Cache extends Context.Service<Cache, {
|
|
3932
3985
|
* readonly get: (key: string) => Effect.Effect<string | null>
|
|
3933
3986
|
* }>()("Cache") {}
|
|
3934
3987
|
*
|
|
@@ -3957,9 +4010,9 @@ export const withParentSpan: {
|
|
|
3957
4010
|
* Layer.withParentSpan(parentSpan)
|
|
3958
4011
|
* )
|
|
3959
4012
|
*
|
|
3960
|
-
* const
|
|
3961
|
-
* const database =
|
|
3962
|
-
* const cache =
|
|
4013
|
+
* const context = yield* Layer.build(AppLayer)
|
|
4014
|
+
* const database = Context.get(context, Database)
|
|
4015
|
+
* const cache = Context.get(context, Cache)
|
|
3963
4016
|
*
|
|
3964
4017
|
* const dbResult = yield* database.query("SELECT * FROM users")
|
|
3965
4018
|
* const cacheResult = yield* cache.get("user:123")
|