effect 4.0.0-beta.1 → 4.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Cache.d.ts +2 -2
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +1 -1
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +1 -1
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Channel.d.ts +7 -7
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +6 -4
- package/dist/Channel.js.map +1 -1
- package/dist/Combiner.d.ts +280 -13
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +198 -7
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +3 -3
- package/dist/Config.js +3 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +1 -1
- package/dist/Cron.d.ts +1 -1
- package/dist/Data.d.ts +534 -365
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +132 -79
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +23 -161
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +6 -51
- package/dist/DateTime.js.map +1 -1
- package/dist/Duration.d.ts +12 -12
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +12 -12
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +342 -248
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +119 -119
- package/dist/Effect.js.map +1 -1
- package/dist/Encoding.d.ts +194 -0
- package/dist/Encoding.d.ts.map +1 -0
- package/dist/Encoding.js +352 -0
- package/dist/Encoding.js.map +1 -0
- package/dist/Equal.d.ts +276 -109
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +124 -48
- package/dist/Equal.js.map +1 -1
- package/dist/ErrorReporter.d.ts +376 -0
- package/dist/ErrorReporter.d.ts.map +1 -0
- package/dist/ErrorReporter.js +246 -0
- package/dist/ErrorReporter.js.map +1 -0
- package/dist/FileSystem.d.ts +1 -1
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +5 -5
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +30 -1
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +15 -0
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +131 -47
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +229 -51
- package/dist/Formatter.js.map +1 -1
- package/dist/Graph.d.ts +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +2 -2
- package/dist/Graph.js.map +1 -1
- package/dist/JsonSchema.d.ts +299 -10
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +323 -4
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +109 -0
- package/dist/Latch.d.ts.map +1 -0
- package/dist/Latch.js +72 -0
- package/dist/Latch.js.map +1 -0
- package/dist/LayerMap.d.ts +4 -4
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LogLevel.d.ts +32 -0
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +28 -100
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +29 -95
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +2 -3
- package/dist/Logger.js.map +1 -1
- package/dist/Metric.d.ts +2 -2
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +1 -1
- package/dist/Metric.js.map +1 -1
- package/dist/Optic.d.ts +947 -18
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +454 -5
- package/dist/Optic.js.map +1 -1
- package/dist/Pipeable.d.ts +17 -0
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +19 -1
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +10 -9
- package/dist/PlatformError.d.ts.map +1 -1
- package/dist/PlatformError.js +2 -2
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +6 -4
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +7 -5
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts +3 -2
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +3 -2
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +0 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +18 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +29 -12
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +2 -2
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +1 -1
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +1 -1
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/Reducer.d.ts +166 -7
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +135 -1
- package/dist/Reducer.js.map +1 -1
- package/dist/References.d.ts +3 -3
- package/dist/References.d.ts.map +1 -1
- package/dist/Request.d.ts +1 -1
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +2 -1
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +6 -26
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +0 -20
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Result.d.ts +12 -0
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +12 -0
- package/dist/Result.js.map +1 -1
- package/dist/Schedule.d.ts +33 -14
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +65 -24
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +199 -49
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +386 -72
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +2 -1
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +2 -2
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +12 -14
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +44 -43
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +43 -24
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +37 -0
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +80 -0
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts +2 -2
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +211 -0
- package/dist/Semaphore.d.ts.map +1 -0
- package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
- package/dist/Semaphore.js.map +1 -0
- package/dist/Stream.d.ts +24 -24
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +12 -11
- package/dist/Stream.js.map +1 -1
- package/dist/Struct.d.ts +16 -0
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +22 -0
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +2 -1
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +2 -1
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/SynchronizedRef.d.ts +2 -1
- package/dist/SynchronizedRef.d.ts.map +1 -1
- package/dist/SynchronizedRef.js +2 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Types.d.ts +14 -6
- package/dist/Types.d.ts.map +1 -1
- package/dist/index.d.ts +503 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +503 -19
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +11 -3
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +3 -11
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +85 -26
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +2 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/random.d.ts +2 -0
- package/dist/internal/random.d.ts.map +1 -0
- package/dist/internal/random.js +13 -0
- package/dist/internal/random.js.map +1 -0
- package/dist/internal/rcRef.js +3 -2
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/testing/TestClock.d.ts +7 -6
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +6 -4
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +6 -6
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +48 -48
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +3 -3
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +4 -3
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +2 -2
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +41 -0
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +51 -51
- package/dist/unstable/ai/McpServer.d.ts +1 -1
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +20 -20
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Response.d.ts +26 -26
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +1 -1
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +5 -5
- package/dist/unstable/cli/CliOutput.js +37 -6
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +199 -7
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +116 -6
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +60 -2
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +11 -1
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +33 -8
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js +7 -2
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +10 -2
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +5 -4
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +10 -10
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +2 -1
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +6 -6
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +4 -3
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts +2 -2
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +8 -6
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +5 -4
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js +2 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +2 -1
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
- package/dist/unstable/encoding/Msgpack.d.ts +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts +1 -1
- package/dist/unstable/encoding/Sse.d.ts +4 -4
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +2 -1
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
- package/dist/unstable/http/Cookies.d.ts +3 -3
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +2 -2
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts.map +1 -1
- package/dist/unstable/http/Headers.js +27 -10
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +17 -2
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +28 -1
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +11 -11
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +4 -4
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.d.ts +7 -7
- package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +15 -3
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +30 -33
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +4 -4
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +3 -3
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +4 -9
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +14 -32
- package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerError.js +11 -27
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
- package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.js +5 -5
- package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +2 -1
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +3 -1
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +3 -3
- package/dist/unstable/http/UrlParams.d.ts +14 -6
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +1 -1
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +6 -6
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +3 -3
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +11 -0
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +29 -9
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +18 -16
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/observability/Otlp.d.ts +12 -12
- package/dist/unstable/observability/Otlp.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +1 -1
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js +7 -4
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +6 -6
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +2 -2
- package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
- package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js +2 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +12 -11
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +1 -1
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +2 -2
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +1 -1
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +2 -2
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +6 -6
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +15 -12
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
- package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +22 -1
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +1 -1
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +39 -0
- package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
- package/dist/unstable/reactivity/Hydration.js +76 -0
- package/dist/unstable/reactivity/Hydration.js.map +1 -0
- package/dist/unstable/reactivity/index.d.ts +4 -0
- package/dist/unstable/reactivity/index.d.ts.map +1 -1
- package/dist/unstable/reactivity/index.js +4 -0
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +2 -2
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +5 -26
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +6 -13
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +9 -3
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/Utils.d.ts.map +1 -1
- package/dist/unstable/rpc/Utils.js +2 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +4 -4
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +2 -2
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +13 -2
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +4 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +3 -2
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.d.ts +3 -3
- package/dist/unstable/sql/Migrator.d.ts +1 -1
- package/dist/unstable/sql/SqlError.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.d.ts +24 -1
- package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.js +24 -3
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/Statement.js +0 -1
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +2 -1
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +3 -3
- package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableClock.js +3 -3
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +2 -2
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +2 -2
- package/dist/unstable/workflow/WorkflowEngine.d.ts +8 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +133 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +2 -2
- package/src/Cache.ts +3 -3
- package/src/Cause.ts +1 -1
- package/src/Channel.ts +15 -13
- package/src/Combiner.ts +280 -13
- package/src/Config.ts +3 -3
- package/src/Data.ts +538 -374
- package/src/DateTime.ts +24 -164
- package/src/Duration.ts +15 -15
- package/src/Effect.ts +378 -269
- package/src/Encoding.ts +879 -0
- package/src/Equal.ts +278 -111
- package/src/ErrorReporter.ts +459 -0
- package/src/FileSystem.ts +7 -8
- package/src/Filter.ts +48 -1
- package/src/Formatter.ts +253 -51
- package/src/Graph.ts +8 -5
- package/src/JsonSchema.ts +383 -10
- package/src/Latch.ts +112 -0
- package/src/LayerMap.ts +5 -5
- package/src/LogLevel.ts +37 -0
- package/src/Logger.ts +33 -100
- package/src/Metric.ts +4 -4
- package/src/Optic.ts +948 -19
- package/src/Pipeable.ts +32 -1
- package/src/PlatformError.ts +5 -5
- package/src/Pool.ts +13 -11
- package/src/PubSub.ts +10 -9
- package/src/Queue.ts +0 -1
- package/src/Random.ts +33 -14
- package/src/RcMap.ts +5 -5
- package/src/RcRef.ts +1 -1
- package/src/Reducer.ts +166 -7
- package/src/References.ts +4 -4
- package/src/Request.ts +3 -2
- package/src/RequestResolver.ts +9 -29
- package/src/Result.ts +13 -0
- package/src/Schedule.ts +279 -140
- package/src/Schema.ts +575 -113
- package/src/SchemaAST.ts +2 -1
- package/src/SchemaGetter.ts +12 -14
- package/src/SchemaRepresentation.ts +43 -24
- package/src/SchemaTransformation.ts +104 -0
- package/src/ScopedCache.ts +3 -3
- package/src/Semaphore.ts +356 -0
- package/src/Stream.ts +50 -49
- package/src/Struct.ts +26 -0
- package/src/SubscriptionRef.ts +3 -2
- package/src/SynchronizedRef.ts +3 -2
- package/src/Types.ts +12 -2
- package/src/index.ts +507 -20
- package/src/internal/core.ts +12 -5
- package/src/internal/dateTime.ts +9 -30
- package/src/internal/effect.ts +194 -51
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/random.ts +20 -0
- package/src/internal/rcRef.ts +4 -3
- package/src/testing/TestClock.ts +13 -11
- package/src/testing/TestSchema.ts +8 -8
- package/src/unstable/ai/AiError.ts +2 -2
- package/src/unstable/ai/Chat.ts +12 -11
- package/src/unstable/ai/LanguageModel.ts +74 -3
- package/src/unstable/ai/McpServer.ts +2 -2
- package/src/unstable/ai/Prompt.ts +37 -37
- package/src/unstable/ai/Response.ts +25 -25
- package/src/unstable/cli/CliOutput.ts +45 -6
- package/src/unstable/cli/Command.ts +298 -11
- package/src/unstable/cli/HelpDoc.ts +68 -2
- package/src/unstable/cli/internal/command.ts +47 -11
- package/src/unstable/cli/internal/completions/CommandDescriptor.ts +7 -2
- package/src/unstable/cli/internal/parser.ts +11 -3
- package/src/unstable/cluster/ClusterCron.ts +2 -2
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
- package/src/unstable/cluster/Entity.ts +7 -6
- package/src/unstable/cluster/EntityResource.ts +4 -4
- package/src/unstable/cluster/Envelope.ts +1 -1
- package/src/unstable/cluster/K8sHttpClient.ts +1 -1
- package/src/unstable/cluster/MessageStorage.ts +3 -5
- package/src/unstable/cluster/Runners.ts +6 -5
- package/src/unstable/cluster/Sharding.ts +11 -9
- package/src/unstable/cluster/ShardingConfig.ts +10 -11
- package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
- package/src/unstable/cluster/internal/entityManager.ts +9 -8
- package/src/unstable/cluster/internal/entityReaper.ts +2 -1
- package/src/unstable/cluster/internal/resourceRef.ts +2 -1
- package/src/unstable/encoding/Sse.ts +2 -4
- package/src/unstable/eventlog/EventLog.ts +2 -1
- package/src/unstable/http/Cookies.ts +3 -3
- package/src/unstable/http/Headers.ts +28 -13
- package/src/unstable/http/HttpBody.ts +42 -1
- package/src/unstable/http/HttpClient.ts +19 -19
- package/src/unstable/http/HttpClientRequest.ts +38 -13
- package/src/unstable/http/HttpEffect.ts +27 -30
- package/src/unstable/http/HttpMethod.ts +16 -4
- package/src/unstable/http/HttpMiddleware.ts +5 -10
- package/src/unstable/http/HttpServerError.ts +13 -27
- package/src/unstable/http/HttpServerRespondable.ts +6 -6
- package/src/unstable/http/HttpServerResponse.ts +4 -2
- package/src/unstable/http/Multipart.ts +2 -2
- package/src/unstable/http/UrlParams.ts +20 -5
- package/src/unstable/httpapi/HttpApiBuilder.ts +6 -5
- package/src/unstable/httpapi/HttpApiClient.ts +3 -3
- package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
- package/src/unstable/httpapi/HttpApiError.ts +30 -9
- package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
- package/src/unstable/httpapi/OpenApi.ts +18 -16
- package/src/unstable/observability/Otlp.ts +12 -12
- package/src/unstable/observability/OtlpExporter.ts +3 -3
- package/src/unstable/observability/OtlpLogger.ts +13 -9
- package/src/unstable/observability/OtlpMetrics.ts +4 -4
- package/src/unstable/observability/OtlpTracer.ts +4 -4
- package/src/unstable/persistence/KeyValueStore.ts +6 -6
- package/src/unstable/persistence/Persistable.ts +2 -2
- package/src/unstable/persistence/PersistedCache.ts +20 -9
- package/src/unstable/persistence/PersistedQueue.ts +25 -24
- package/src/unstable/persistence/Persistence.ts +3 -3
- package/src/unstable/persistence/RateLimiter.ts +4 -4
- package/src/unstable/process/ChildProcess.ts +2 -2
- package/src/unstable/process/ChildProcessSpawner.ts +6 -0
- package/src/unstable/reactivity/Atom.ts +20 -18
- package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
- package/src/unstable/reactivity/AtomRegistry.ts +29 -1
- package/src/unstable/reactivity/AtomRpc.ts +3 -3
- package/src/unstable/reactivity/Hydration.ts +112 -0
- package/src/unstable/reactivity/index.ts +5 -0
- package/src/unstable/rpc/Rpc.ts +3 -3
- package/src/unstable/rpc/RpcClient.ts +12 -54
- package/src/unstable/rpc/RpcServer.ts +10 -4
- package/src/unstable/rpc/Utils.ts +2 -1
- package/src/unstable/schema/VariantSchema.ts +36 -7
- package/src/unstable/socket/Socket.ts +7 -6
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlSchema.ts +62 -13
- package/src/unstable/sql/Statement.ts +0 -1
- package/src/unstable/workers/Worker.ts +2 -1
- package/src/unstable/workflow/DurableClock.ts +8 -8
- package/src/unstable/workflow/DurableDeferred.ts +2 -2
- package/src/unstable/workflow/WorkflowEngine.ts +181 -2
- package/dist/PartitionedSemaphore.d.ts +0 -52
- package/dist/PartitionedSemaphore.d.ts.map +0 -1
- package/dist/PartitionedSemaphore.js.map +0 -1
- package/dist/encoding/Base64.d.ts +0 -67
- package/dist/encoding/Base64.d.ts.map +0 -1
- package/dist/encoding/Base64.js +0 -146
- package/dist/encoding/Base64.js.map +0 -1
- package/dist/encoding/Base64Url.d.ts +0 -60
- package/dist/encoding/Base64Url.d.ts.map +0 -1
- package/dist/encoding/Base64Url.js +0 -89
- package/dist/encoding/Base64Url.js.map +0 -1
- package/dist/encoding/EncodingError.d.ts +0 -31
- package/dist/encoding/EncodingError.d.ts.map +0 -1
- package/dist/encoding/EncodingError.js +0 -22
- package/dist/encoding/EncodingError.js.map +0 -1
- package/dist/encoding/Hex.d.ts +0 -61
- package/dist/encoding/Hex.d.ts.map +0 -1
- package/dist/encoding/Hex.js +0 -115
- package/dist/encoding/Hex.js.map +0 -1
- package/dist/encoding/index.d.ts +0 -26
- package/dist/encoding/index.d.ts.map +0 -1
- package/dist/encoding/index.js +0 -27
- package/dist/encoding/index.js.map +0 -1
- package/src/PartitionedSemaphore.ts +0 -182
- package/src/encoding/Base64.ts +0 -366
- package/src/encoding/Base64Url.ts +0 -104
- package/src/encoding/EncodingError.ts +0 -35
- package/src/encoding/Hex.ts +0 -390
- package/src/encoding/index.ts +0 -31
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Config from "../../Config.ts"
|
|
5
5
|
import * as ConfigProvider from "../../ConfigProvider.ts"
|
|
6
|
-
import type { DurationInput } from "../../Duration.ts"
|
|
7
6
|
import * as Duration from "../../Duration.ts"
|
|
8
7
|
import * as Effect from "../../Effect.ts"
|
|
9
8
|
import * as Layer from "../../Layer.ts"
|
|
@@ -58,11 +57,11 @@ export class ShardingConfig extends ServiceMap.Service<ShardingConfig, {
|
|
|
58
57
|
/**
|
|
59
58
|
* Shard lock refresh interval.
|
|
60
59
|
*/
|
|
61
|
-
readonly shardLockRefreshInterval:
|
|
60
|
+
readonly shardLockRefreshInterval: Duration.Input
|
|
62
61
|
/**
|
|
63
62
|
* Shard lock expiration duration.
|
|
64
63
|
*/
|
|
65
|
-
readonly shardLockExpiration:
|
|
64
|
+
readonly shardLockExpiration: Duration.Input
|
|
66
65
|
/**
|
|
67
66
|
* Disable the use of advisory locks for shard locking.
|
|
68
67
|
*/
|
|
@@ -81,41 +80,41 @@ export class ShardingConfig extends ServiceMap.Service<ShardingConfig, {
|
|
|
81
80
|
* The maximum duration of inactivity (i.e. without receiving a message)
|
|
82
81
|
* after which an entity will be interrupted.
|
|
83
82
|
*/
|
|
84
|
-
readonly entityMaxIdleTime:
|
|
83
|
+
readonly entityMaxIdleTime: Duration.Input
|
|
85
84
|
/**
|
|
86
85
|
* If an entity does not register itself within this time after a message is
|
|
87
86
|
* sent to it, the message will be marked as failed.
|
|
88
87
|
*
|
|
89
88
|
* Defaults to 1 minute.
|
|
90
89
|
*/
|
|
91
|
-
readonly entityRegistrationTimeout:
|
|
90
|
+
readonly entityRegistrationTimeout: Duration.Input
|
|
92
91
|
/**
|
|
93
92
|
* The maximum duration of time to wait for an entity to terminate.
|
|
94
93
|
*
|
|
95
94
|
* By default this is set to 15 seconds to stay within kubernetes defaults.
|
|
96
95
|
*/
|
|
97
|
-
readonly entityTerminationTimeout:
|
|
96
|
+
readonly entityTerminationTimeout: Duration.Input
|
|
98
97
|
/**
|
|
99
98
|
* The interval at which to poll for unprocessed messages from storage.
|
|
100
99
|
*/
|
|
101
|
-
readonly entityMessagePollInterval:
|
|
100
|
+
readonly entityMessagePollInterval: Duration.Input
|
|
102
101
|
/**
|
|
103
102
|
* The interval at which to poll for client replies from storage.
|
|
104
103
|
*/
|
|
105
|
-
readonly entityReplyPollInterval:
|
|
104
|
+
readonly entityReplyPollInterval: Duration.Input
|
|
106
105
|
/**
|
|
107
106
|
* The interval at which to poll for new runners and refresh shard
|
|
108
107
|
* assignments.
|
|
109
108
|
*/
|
|
110
|
-
readonly refreshAssignmentsInterval:
|
|
109
|
+
readonly refreshAssignmentsInterval: Duration.Input
|
|
111
110
|
/**
|
|
112
111
|
* The interval to retry a send if EntityNotAssignedToRunner is returned.
|
|
113
112
|
*/
|
|
114
|
-
readonly sendRetryInterval:
|
|
113
|
+
readonly sendRetryInterval: Duration.Input
|
|
115
114
|
/**
|
|
116
115
|
* The interval at which to check for unhealthy runners and report them
|
|
117
116
|
*/
|
|
118
|
-
readonly runnerHealthCheckInterval:
|
|
117
|
+
readonly runnerHealthCheckInterval: Duration.Input
|
|
119
118
|
/**
|
|
120
119
|
* Simulate serialization and deserialization to remote runners for local
|
|
121
120
|
* entities.
|
|
@@ -166,7 +166,7 @@ export const make = Effect.fnUntraced(function*(options: {
|
|
|
166
166
|
|
|
167
167
|
const expiresSeconds = sql.literal(
|
|
168
168
|
Math.ceil(Duration.toSeconds(
|
|
169
|
-
Duration.
|
|
169
|
+
Duration.fromInputUnsafe(config.shardLockExpiration)
|
|
170
170
|
)).toString()
|
|
171
171
|
)
|
|
172
172
|
const lockExpiresAt = sql.onDialectOrElse({
|
|
@@ -2,12 +2,13 @@ import * as Arr from "../../../Array.ts"
|
|
|
2
2
|
import * as Cause from "../../../Cause.ts"
|
|
3
3
|
import { Clock } from "../../../Clock.ts"
|
|
4
4
|
import * as Duration from "../../../Duration.ts"
|
|
5
|
-
import type {
|
|
5
|
+
import type { Input } from "../../../Duration.ts"
|
|
6
6
|
import * as Effect from "../../../Effect.ts"
|
|
7
7
|
import * as Equal from "../../../Equal.ts"
|
|
8
8
|
import * as Exit from "../../../Exit.ts"
|
|
9
9
|
import * as Fiber from "../../../Fiber.ts"
|
|
10
10
|
import { identity } from "../../../Function.ts"
|
|
11
|
+
import * as Latch from "../../../Latch.ts"
|
|
11
12
|
import * as Metric from "../../../Metric.ts"
|
|
12
13
|
import * as Option from "../../../Option.ts"
|
|
13
14
|
import { CurrentLogAnnotations } from "../../../References.ts"
|
|
@@ -75,7 +76,7 @@ export type EntityState = {
|
|
|
75
76
|
}>
|
|
76
77
|
lastActiveCheck: number
|
|
77
78
|
write: RpcServer.RpcServer<any>["write"]
|
|
78
|
-
readonly keepAliveLatch:
|
|
79
|
+
readonly keepAliveLatch: Latch.Latch
|
|
79
80
|
keepAliveEnabled: boolean
|
|
80
81
|
}
|
|
81
82
|
|
|
@@ -92,7 +93,7 @@ export const make = Effect.fnUntraced(function*<
|
|
|
92
93
|
readonly sharding: Sharding["Service"]
|
|
93
94
|
readonly storage: MessageStorage.MessageStorage["Service"]
|
|
94
95
|
readonly runnerAddress: RunnerAddress
|
|
95
|
-
readonly maxIdleTime?:
|
|
96
|
+
readonly maxIdleTime?: Input | undefined
|
|
96
97
|
readonly concurrency?: number | "unbounded" | undefined
|
|
97
98
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
98
99
|
readonly disableFatalDefects?: boolean | undefined
|
|
@@ -116,7 +117,7 @@ export const make = Effect.fnUntraced(function*<
|
|
|
116
117
|
entityRpcs.set(KeepAliveRpc._tag, KeepAliveRpc as any)
|
|
117
118
|
|
|
118
119
|
const activeServers = new Map<EntityId, EntityState>()
|
|
119
|
-
const serverCloseLatches = new Map<EntityAddress,
|
|
120
|
+
const serverCloseLatches = new Map<EntityAddress, Latch.Latch>()
|
|
120
121
|
const processedRequestIds = new Set<Snowflake.Snowflake>()
|
|
121
122
|
|
|
122
123
|
const entities: ResourceMap<
|
|
@@ -129,8 +130,8 @@ export const make = Effect.fnUntraced(function*<
|
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
const scope = yield* Effect.scope
|
|
132
|
-
const endLatch =
|
|
133
|
-
const keepAliveLatch =
|
|
133
|
+
const endLatch = Latch.makeUnsafe()
|
|
134
|
+
const keepAliveLatch = Latch.makeUnsafe()
|
|
134
135
|
|
|
135
136
|
// on shutdown, reset the storage for the entity
|
|
136
137
|
yield* Scope.addFinalizerExit(
|
|
@@ -336,7 +337,7 @@ export const make = Effect.fnUntraced(function*<
|
|
|
336
337
|
scope,
|
|
337
338
|
Effect.withFiber((fiber) => {
|
|
338
339
|
activeServers.delete(address.entityId)
|
|
339
|
-
serverCloseLatches.set(address,
|
|
340
|
+
serverCloseLatches.set(address, Latch.makeUnsafe())
|
|
340
341
|
internalInterruptors.add(fiber.id)
|
|
341
342
|
return state.write(0, { _tag: "Eof" }).pipe(
|
|
342
343
|
Effect.andThen(Effect.interruptible(endLatch.await)),
|
|
@@ -351,7 +352,7 @@ export const make = Effect.fnUntraced(function*<
|
|
|
351
352
|
|
|
352
353
|
const reaper = yield* EntityReaper
|
|
353
354
|
const maxIdleTime = Duration.toMillis(
|
|
354
|
-
Duration.
|
|
355
|
+
Duration.fromInputUnsafe(options.maxIdleTime ?? config.entityMaxIdleTime)
|
|
355
356
|
)
|
|
356
357
|
if (Number.isFinite(maxIdleTime)) {
|
|
357
358
|
yield* reaper.register({
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Clock } from "../../../Clock.ts"
|
|
2
2
|
import * as Effect from "../../../Effect.ts"
|
|
3
|
+
import * as Latch from "../../../Latch.ts"
|
|
3
4
|
import * as Layer from "../../../Layer.ts"
|
|
4
5
|
import * as ServiceMap from "../../../ServiceMap.ts"
|
|
5
6
|
import type { EntityNotAssignedToRunner } from "../ClusterError.ts"
|
|
@@ -17,7 +18,7 @@ export class EntityReaper extends ServiceMap.Service<EntityReaper>()("effect/clu
|
|
|
17
18
|
readonly servers: Map<EntityId, EntityState>
|
|
18
19
|
readonly entities: ResourceMap<EntityAddress, EntityState, EntityNotAssignedToRunner>
|
|
19
20
|
}> = []
|
|
20
|
-
const latch = yield*
|
|
21
|
+
const latch = yield* Latch.make()
|
|
21
22
|
|
|
22
23
|
const register = (options: {
|
|
23
24
|
readonly maxIdleTime: number
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Effect from "../../../Effect.ts"
|
|
2
2
|
import * as Exit from "../../../Exit.ts"
|
|
3
|
+
import * as Latch from "../../../Latch.ts"
|
|
3
4
|
import * as MutableRef from "../../../MutableRef.ts"
|
|
4
5
|
import * as Option from "../../../Option.ts"
|
|
5
6
|
import * as Scope from "../../../Scope.ts"
|
|
@@ -53,7 +54,7 @@ export class ResourceRef<A, E = never> {
|
|
|
53
54
|
this.acquire = acquire
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
latch =
|
|
57
|
+
latch = Latch.makeUnsafe(true)
|
|
57
58
|
|
|
58
59
|
getUnsafe(): Option.Option<A> {
|
|
59
60
|
if (this.state.current._tag === "Acquired") {
|
|
@@ -326,11 +326,9 @@ export const encode = <IE, Done>(): Channel.Channel<
|
|
|
326
326
|
* @category Encoding
|
|
327
327
|
*/
|
|
328
328
|
export const encodeSchema = <
|
|
329
|
-
S extends Schema.
|
|
330
|
-
any,
|
|
329
|
+
S extends Schema.Encoder<
|
|
331
330
|
{ readonly id?: string | undefined; readonly event: string; readonly data: string },
|
|
332
|
-
|
|
333
|
-
any
|
|
331
|
+
unknown
|
|
334
332
|
>,
|
|
335
333
|
IE,
|
|
336
334
|
Done
|
|
@@ -14,6 +14,7 @@ import type * as Record from "../../Record.ts"
|
|
|
14
14
|
import * as Redacted from "../../Redacted.ts"
|
|
15
15
|
import * as Schema from "../../Schema.ts"
|
|
16
16
|
import type * as Scope from "../../Scope.ts"
|
|
17
|
+
import * as Semaphore from "../../Semaphore.ts"
|
|
17
18
|
import * as ServiceMap from "../../ServiceMap.ts"
|
|
18
19
|
import type { Covariant } from "../../Types.ts"
|
|
19
20
|
import { Reactivity } from "../reactivity/Reactivity.ts"
|
|
@@ -481,7 +482,7 @@ const make = Effect.gen(function*() {
|
|
|
481
482
|
readonly write: (entry: Entry) => Effect.Effect<void>
|
|
482
483
|
}) => Effect.Effect<void>
|
|
483
484
|
}>()
|
|
484
|
-
const journalSemaphore = yield*
|
|
485
|
+
const journalSemaphore = yield* Semaphore.make(1)
|
|
485
486
|
|
|
486
487
|
const reactivity = yield* Reactivity
|
|
487
488
|
const reactivityKeys: Record<string, ReadonlyArray<string>> = {}
|
|
@@ -86,7 +86,7 @@ export interface Cookie extends Inspectable.Inspectable {
|
|
|
86
86
|
readonly options?: {
|
|
87
87
|
readonly domain?: string | undefined
|
|
88
88
|
readonly expires?: Date | undefined
|
|
89
|
-
readonly maxAge?: Duration.
|
|
89
|
+
readonly maxAge?: Duration.Input | undefined
|
|
90
90
|
readonly path?: string | undefined
|
|
91
91
|
readonly priority?: "low" | "medium" | "high" | undefined
|
|
92
92
|
readonly httpOnly?: boolean | undefined
|
|
@@ -418,7 +418,7 @@ export function makeCookie(
|
|
|
418
418
|
return Result.fail(CookiesError.fromReason("InvalidCookiePath"))
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
-
if (options.maxAge !== undefined && !Duration.isFinite(Duration.
|
|
421
|
+
if (options.maxAge !== undefined && !Duration.isFinite(Duration.fromInputUnsafe(options.maxAge))) {
|
|
422
422
|
return Result.fail(CookiesError.fromReason("CookieInfinityMaxAge"))
|
|
423
423
|
}
|
|
424
424
|
}
|
|
@@ -763,7 +763,7 @@ export function serializeCookie(self: Cookie): string {
|
|
|
763
763
|
const options = self.options
|
|
764
764
|
|
|
765
765
|
if (options.maxAge !== undefined) {
|
|
766
|
-
const maxAge = Duration.toSeconds(Duration.
|
|
766
|
+
const maxAge = Duration.toSeconds(Duration.fromInputUnsafe(options.maxAge))
|
|
767
767
|
str += "; Max-Age=" + Math.trunc(maxAge)
|
|
768
768
|
}
|
|
769
769
|
|
|
@@ -44,22 +44,37 @@ export interface Headers extends Redactable.Redactable {
|
|
|
44
44
|
readonly [key: string]: string
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
const Proto = Object.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
const Proto = Object.create(null)
|
|
48
|
+
|
|
49
|
+
Object.defineProperties(Proto, {
|
|
50
|
+
[TypeId]: {
|
|
51
|
+
value: TypeId
|
|
52
|
+
},
|
|
53
|
+
[Redactable.symbolRedactable]: {
|
|
54
|
+
value(this: Headers, context: ServiceMap.ServiceMap<never>): Record<string, string | Redacted.Redacted<string>> {
|
|
55
|
+
return redact(this, ServiceMap.get(context, CurrentRedactedNames))
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
toJSON: {
|
|
59
|
+
value(this: Headers) {
|
|
60
|
+
return Redactable.redact(this)
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
[Equal.symbol]: {
|
|
64
|
+
value(this: Headers, that: Headers): boolean {
|
|
65
|
+
return Equivalence(this, that)
|
|
66
|
+
}
|
|
54
67
|
},
|
|
55
|
-
|
|
56
|
-
|
|
68
|
+
[Hash.symbol]: {
|
|
69
|
+
value(this: Headers): number {
|
|
70
|
+
return Hash.structure(this)
|
|
71
|
+
}
|
|
57
72
|
},
|
|
58
|
-
|
|
59
|
-
|
|
73
|
+
toString: {
|
|
74
|
+
value: Inspectable.BaseProto.toString
|
|
60
75
|
},
|
|
61
|
-
[
|
|
62
|
-
|
|
76
|
+
[Inspectable.NodeInspectSymbol]: {
|
|
77
|
+
value: Inspectable.BaseProto[Inspectable.NodeInspectSymbol]
|
|
63
78
|
}
|
|
64
79
|
})
|
|
65
80
|
|
|
@@ -279,7 +279,48 @@ export class FormData extends Proto {
|
|
|
279
279
|
* @since 4.0.0
|
|
280
280
|
* @category constructors
|
|
281
281
|
*/
|
|
282
|
-
export const
|
|
282
|
+
export const formData = (body: globalThis.FormData): FormData => new FormData(body)
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* @since 4.0.0
|
|
286
|
+
* @category models
|
|
287
|
+
*/
|
|
288
|
+
export type FormDataInput = Record<string, FormDataCoercible | ReadonlyArray<FormDataCoercible>>
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* @since 4.0.0
|
|
292
|
+
* @category models
|
|
293
|
+
*/
|
|
294
|
+
export type FormDataCoercible = string | number | boolean | globalThis.File | globalThis.Blob | null | undefined
|
|
295
|
+
|
|
296
|
+
const appendFormDataValue = (formData: globalThis.FormData, key: string, value: FormDataCoercible): void => {
|
|
297
|
+
if (value == null) {
|
|
298
|
+
return
|
|
299
|
+
}
|
|
300
|
+
if (typeof value === "object") {
|
|
301
|
+
formData.append(key, value)
|
|
302
|
+
return
|
|
303
|
+
}
|
|
304
|
+
formData.append(key, String(value))
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* @since 4.0.0
|
|
309
|
+
* @category constructors
|
|
310
|
+
*/
|
|
311
|
+
export const formDataRecord = (entries: FormDataInput): FormData => {
|
|
312
|
+
const data = new globalThis.FormData()
|
|
313
|
+
for (const [key, value] of Object.entries(entries)) {
|
|
314
|
+
if (Array.isArray(value)) {
|
|
315
|
+
for (const item of value) {
|
|
316
|
+
appendFormDataValue(data, key, item)
|
|
317
|
+
}
|
|
318
|
+
} else {
|
|
319
|
+
appendFormDataValue(data, key, value as FormDataCoercible)
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return formData(data)
|
|
323
|
+
}
|
|
283
324
|
|
|
284
325
|
/**
|
|
285
326
|
* @since 4.0.0
|
|
@@ -61,11 +61,11 @@ export declare namespace HttpClient {
|
|
|
61
61
|
|
|
62
62
|
readonly get: (
|
|
63
63
|
url: string | URL,
|
|
64
|
-
options?: HttpClientRequest.Options.
|
|
64
|
+
options?: HttpClientRequest.Options.NoUrl
|
|
65
65
|
) => Effect.Effect<HttpClientResponse.HttpClientResponse, E, R>
|
|
66
66
|
readonly head: (
|
|
67
67
|
url: string | URL,
|
|
68
|
-
options?: HttpClientRequest.Options.
|
|
68
|
+
options?: HttpClientRequest.Options.NoUrl
|
|
69
69
|
) => Effect.Effect<HttpClientResponse.HttpClientResponse, E, R>
|
|
70
70
|
readonly post: (
|
|
71
71
|
url: string | URL,
|
|
@@ -132,7 +132,7 @@ export const execute: (
|
|
|
132
132
|
* @since 4.0.0
|
|
133
133
|
* @category accessors
|
|
134
134
|
*/
|
|
135
|
-
export const get: (url: string | URL, options?: HttpClientRequest.Options.
|
|
135
|
+
export const get: (url: string | URL, options?: HttpClientRequest.Options.NoUrl | undefined) => Effect.Effect<
|
|
136
136
|
HttpClientResponse.HttpClientResponse,
|
|
137
137
|
Error.HttpClientError,
|
|
138
138
|
HttpClient
|
|
@@ -142,7 +142,7 @@ export const get: (url: string | URL, options?: HttpClientRequest.Options.NoBody
|
|
|
142
142
|
* @since 4.0.0
|
|
143
143
|
* @category accessors
|
|
144
144
|
*/
|
|
145
|
-
export const head: (url: string | URL, options?: HttpClientRequest.Options.
|
|
145
|
+
export const head: (url: string | URL, options?: HttpClientRequest.Options.NoUrl | undefined) => Effect.Effect<
|
|
146
146
|
HttpClientResponse.HttpClientResponse,
|
|
147
147
|
Error.HttpClientError,
|
|
148
148
|
HttpClient
|
|
@@ -928,7 +928,7 @@ export const retry: {
|
|
|
928
928
|
/**
|
|
929
929
|
* Retries common transient errors, such as rate limiting, timeouts or network issues.
|
|
930
930
|
*
|
|
931
|
-
* Use `
|
|
931
|
+
* Use `retryOn` to focus on retrying errors, transient responses, or both.
|
|
932
932
|
*
|
|
933
933
|
* Specifying a `while` predicate allows you to consider other errors as
|
|
934
934
|
* transient, and is ignored in "response-only" mode.
|
|
@@ -940,7 +940,7 @@ export const retryTransient: {
|
|
|
940
940
|
/**
|
|
941
941
|
* Retries common transient errors, such as rate limiting, timeouts or network issues.
|
|
942
942
|
*
|
|
943
|
-
* Use `
|
|
943
|
+
* Use `retryOn` to focus on retrying errors, transient responses, or both.
|
|
944
944
|
*
|
|
945
945
|
* Specifying a `while` predicate allows you to consider other errors as
|
|
946
946
|
* transient, and is ignored in "response-only" mode.
|
|
@@ -953,13 +953,13 @@ export const retryTransient: {
|
|
|
953
953
|
E,
|
|
954
954
|
ES = never,
|
|
955
955
|
R1 = never,
|
|
956
|
-
const
|
|
957
|
-
Input = "errors-only" extends
|
|
958
|
-
: "response-only" extends
|
|
956
|
+
const RetryOn extends "errors-only" | "response-only" | "errors-and-responses" = never,
|
|
957
|
+
Input = "errors-only" extends RetryOn ? E
|
|
958
|
+
: "response-only" extends RetryOn ? HttpClientResponse.HttpClientResponse
|
|
959
959
|
: HttpClientResponse.HttpClientResponse | E
|
|
960
960
|
>(
|
|
961
961
|
options: {
|
|
962
|
-
readonly
|
|
962
|
+
readonly retryOn?: RetryOn | undefined
|
|
963
963
|
readonly while?: Predicate.Predicate<NoInfer<E | ES>>
|
|
964
964
|
readonly schedule?: Schedule.Schedule<B, NoInfer<Input>, ES, R1>
|
|
965
965
|
readonly times?: number
|
|
@@ -968,7 +968,7 @@ export const retryTransient: {
|
|
|
968
968
|
/**
|
|
969
969
|
* Retries common transient errors, such as rate limiting, timeouts or network issues.
|
|
970
970
|
*
|
|
971
|
-
* Use `
|
|
971
|
+
* Use `retryOn` to focus on retrying errors, transient responses, or both.
|
|
972
972
|
*
|
|
973
973
|
* Specifying a `while` predicate allows you to consider other errors as
|
|
974
974
|
* transient, and is ignored in "response-only" mode.
|
|
@@ -982,14 +982,14 @@ export const retryTransient: {
|
|
|
982
982
|
B,
|
|
983
983
|
ES = never,
|
|
984
984
|
R1 = never,
|
|
985
|
-
const
|
|
986
|
-
Input = "errors-only" extends
|
|
987
|
-
: "response-only" extends
|
|
985
|
+
const RetryOn extends "errors-only" | "response-only" | "errors-and-responses" = never,
|
|
986
|
+
Input = "errors-only" extends RetryOn ? E
|
|
987
|
+
: "response-only" extends RetryOn ? HttpClientResponse.HttpClientResponse
|
|
988
988
|
: HttpClientResponse.HttpClientResponse | E
|
|
989
989
|
>(
|
|
990
990
|
self: HttpClient.With<E, R>,
|
|
991
991
|
options: {
|
|
992
|
-
readonly
|
|
992
|
+
readonly retryOn?: RetryOn | undefined
|
|
993
993
|
readonly while?: Predicate.Predicate<NoInfer<E | ES>>
|
|
994
994
|
readonly schedule?: Schedule.Schedule<B, NoInfer<Input>, ES, R1>
|
|
995
995
|
readonly times?: number
|
|
@@ -1006,26 +1006,26 @@ export const retryTransient: {
|
|
|
1006
1006
|
>(
|
|
1007
1007
|
self: HttpClient.With<E, R>,
|
|
1008
1008
|
options: {
|
|
1009
|
-
readonly
|
|
1009
|
+
readonly retryOn?: "errors-only" | "response-only" | "errors-and-responses" | undefined
|
|
1010
1010
|
readonly while?: Predicate.Predicate<E | ES>
|
|
1011
1011
|
readonly schedule?: Schedule.Schedule<B, any, ES, R1>
|
|
1012
1012
|
readonly times?: number
|
|
1013
1013
|
} | Schedule.Schedule<B, any, ES, R1>
|
|
1014
1014
|
): HttpClient.With<E | ES, R1 | R> => {
|
|
1015
1015
|
const isOnlySchedule = Schedule.isSchedule(options)
|
|
1016
|
-
const
|
|
1016
|
+
const retryOn = isOnlySchedule ? "errors-and-responses" : options.retryOn ?? "errors-and-responses"
|
|
1017
1017
|
const schedule = isOnlySchedule ? options : options.schedule
|
|
1018
1018
|
const passthroughSchedule = schedule && Schedule.passthrough(schedule)
|
|
1019
1019
|
const times = isOnlySchedule ? undefined : options.times
|
|
1020
1020
|
return transformResponse(
|
|
1021
1021
|
self,
|
|
1022
1022
|
flow(
|
|
1023
|
-
|
|
1023
|
+
retryOn === "errors-only" ? identity : Effect.repeat({
|
|
1024
1024
|
schedule: passthroughSchedule!,
|
|
1025
1025
|
times,
|
|
1026
1026
|
while: isTransientResponse
|
|
1027
1027
|
}),
|
|
1028
|
-
|
|
1028
|
+
retryOn === "response-only" ? identity : Effect.retry({
|
|
1029
1029
|
while: isOnlySchedule || options.while === undefined
|
|
1030
1030
|
? isTransientError
|
|
1031
1031
|
: Predicate.or(isTransientError, options.while),
|
|
@@ -61,12 +61,6 @@ export interface Options {
|
|
|
61
61
|
* @since 4.0.0
|
|
62
62
|
*/
|
|
63
63
|
export declare namespace Options {
|
|
64
|
-
/**
|
|
65
|
-
* @since 4.0.0
|
|
66
|
-
* @category models
|
|
67
|
-
*/
|
|
68
|
-
export interface NoBody extends Omit<Options, "method" | "url" | "body"> {}
|
|
69
|
-
|
|
70
64
|
/**
|
|
71
65
|
* @since 4.0.0
|
|
72
66
|
* @category models
|
|
@@ -133,7 +127,7 @@ export const make = <M extends HttpMethod>(
|
|
|
133
127
|
) =>
|
|
134
128
|
(
|
|
135
129
|
url: string | URL,
|
|
136
|
-
options?:
|
|
130
|
+
options?: Options.NoUrl | undefined
|
|
137
131
|
): HttpClientRequest =>
|
|
138
132
|
modify(empty, {
|
|
139
133
|
method,
|
|
@@ -145,7 +139,7 @@ export const make = <M extends HttpMethod>(
|
|
|
145
139
|
* @since 4.0.0
|
|
146
140
|
* @category constructors
|
|
147
141
|
*/
|
|
148
|
-
export const get: (url: string | URL, options?: Options.
|
|
142
|
+
export const get: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("GET")
|
|
149
143
|
|
|
150
144
|
/**
|
|
151
145
|
* @since 4.0.0
|
|
@@ -165,23 +159,33 @@ export const patch: (url: string | URL, options?: Options.NoUrl) => HttpClientRe
|
|
|
165
159
|
*/
|
|
166
160
|
export const put: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("PUT")
|
|
167
161
|
|
|
162
|
+
const del: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("DELETE")
|
|
163
|
+
|
|
164
|
+
export {
|
|
165
|
+
/**
|
|
166
|
+
* @since 4.0.0
|
|
167
|
+
* @category constructors
|
|
168
|
+
*/
|
|
169
|
+
del as delete
|
|
170
|
+
}
|
|
171
|
+
|
|
168
172
|
/**
|
|
169
173
|
* @since 4.0.0
|
|
170
174
|
* @category constructors
|
|
171
175
|
*/
|
|
172
|
-
export const
|
|
176
|
+
export const head: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("HEAD")
|
|
173
177
|
|
|
174
178
|
/**
|
|
175
179
|
* @since 4.0.0
|
|
176
180
|
* @category constructors
|
|
177
181
|
*/
|
|
178
|
-
export const
|
|
182
|
+
export const options: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("OPTIONS")
|
|
179
183
|
|
|
180
184
|
/**
|
|
181
185
|
* @since 4.0.0
|
|
182
186
|
* @category constructors
|
|
183
187
|
*/
|
|
184
|
-
export const
|
|
188
|
+
export const trace: (url: string | URL, options?: Options.NoUrl) => HttpClientRequest = make("TRACE")
|
|
185
189
|
|
|
186
190
|
/**
|
|
187
191
|
* @since 4.0.0
|
|
@@ -661,7 +665,7 @@ export const setBody: {
|
|
|
661
665
|
(self: HttpClientRequest, body: HttpBody.HttpBody): HttpClientRequest
|
|
662
666
|
} = dual(2, (self: HttpClientRequest, body: HttpBody.HttpBody): HttpClientRequest => {
|
|
663
667
|
let headers = self.headers
|
|
664
|
-
if (body._tag === "Empty") {
|
|
668
|
+
if (body._tag === "Empty" || body._tag === "FormData") {
|
|
665
669
|
headers = Headers.remove(Headers.remove(headers, "Content-Type"), "Content-length")
|
|
666
670
|
} else {
|
|
667
671
|
if (body.contentType) {
|
|
@@ -826,7 +830,28 @@ export const bodyFormData: {
|
|
|
826
830
|
* @category combinators
|
|
827
831
|
*/
|
|
828
832
|
(self: HttpClientRequest, body: FormData): HttpClientRequest
|
|
829
|
-
} = dual(2, (self: HttpClientRequest, body: FormData): HttpClientRequest => setBody(self, HttpBody.
|
|
833
|
+
} = dual(2, (self: HttpClientRequest, body: FormData): HttpClientRequest => setBody(self, HttpBody.formData(body)))
|
|
834
|
+
|
|
835
|
+
/**
|
|
836
|
+
* @since 4.0.0
|
|
837
|
+
* @category combinators
|
|
838
|
+
*/
|
|
839
|
+
export const bodyFormDataRecord: {
|
|
840
|
+
/**
|
|
841
|
+
* @since 4.0.0
|
|
842
|
+
* @category combinators
|
|
843
|
+
*/
|
|
844
|
+
(entries: HttpBody.FormDataInput): (self: HttpClientRequest) => HttpClientRequest
|
|
845
|
+
/**
|
|
846
|
+
* @since 4.0.0
|
|
847
|
+
* @category combinators
|
|
848
|
+
*/
|
|
849
|
+
(self: HttpClientRequest, entries: HttpBody.FormDataInput): HttpClientRequest
|
|
850
|
+
} = dual(
|
|
851
|
+
2,
|
|
852
|
+
(self: HttpClientRequest, entries: HttpBody.FormDataInput): HttpClientRequest =>
|
|
853
|
+
setBody(self, HttpBody.formDataRecord(entries))
|
|
854
|
+
)
|
|
830
855
|
|
|
831
856
|
/**
|
|
832
857
|
* @since 4.0.0
|
|
@@ -6,7 +6,7 @@ import * as Effect from "../../Effect.ts"
|
|
|
6
6
|
import * as Exit from "../../Exit.ts"
|
|
7
7
|
import * as Fiber from "../../Fiber.ts"
|
|
8
8
|
import { dual } from "../../Function.ts"
|
|
9
|
-
import {
|
|
9
|
+
import { reportCauseUnsafe } from "../../internal/effect.ts"
|
|
10
10
|
import * as Layer from "../../Layer.ts"
|
|
11
11
|
import * as Scope from "../../Scope.ts"
|
|
12
12
|
import * as ServiceMap from "../../ServiceMap.ts"
|
|
@@ -32,33 +32,10 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
32
32
|
) => Effect.Effect<unknown, EH, RH>,
|
|
33
33
|
middleware?: HttpMiddleware | undefined
|
|
34
34
|
): Effect.Effect<void, never, Exclude<R | RH | HttpServerRequest, Scope.Scope>> => {
|
|
35
|
-
const responded = Effect.flatMap(self, (response) => {
|
|
36
|
-
const fiber = Fiber.getCurrent()!
|
|
37
|
-
const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
|
|
38
|
-
const handler = fiber.getRef(PreResponseHandlers)
|
|
39
|
-
if (handler === undefined) {
|
|
40
|
-
;(request as any)[handledSymbol] = true
|
|
41
|
-
const eff = handleResponse(request, response)
|
|
42
|
-
if (effectIsExit(eff)) {
|
|
43
|
-
return eff._tag === "Success" ? Effect.succeed(response) : handleCause(eff.cause)
|
|
44
|
-
}
|
|
45
|
-
return Effect.matchCauseEffect(eff, {
|
|
46
|
-
onFailure: handleCause,
|
|
47
|
-
onSuccess: () => Effect.succeed(response)
|
|
48
|
-
})
|
|
49
|
-
}
|
|
50
|
-
return Effect.flatMapEager(handler(request, response), (sentResponse) => {
|
|
51
|
-
;(request as any)[handledSymbol] = true
|
|
52
|
-
return Effect.matchCauseEffectEager(handleResponse(request, sentResponse), {
|
|
53
|
-
onSuccess: () => Effect.succeed(response),
|
|
54
|
-
onFailure: handleCause
|
|
55
|
-
})
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
|
|
59
35
|
const handleCause = (cause: Cause<E | EH | HttpServerError>) =>
|
|
60
36
|
Effect.flatMapEager(causeResponse(cause), ([response, cause]) => {
|
|
61
37
|
const fiber = Fiber.getCurrent()!
|
|
38
|
+
reportCauseUnsafe(fiber, cause)
|
|
62
39
|
const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
|
|
63
40
|
const handler = fiber.getRef(PreResponseHandlers)
|
|
64
41
|
const cont = cause.reasons.length === 0 ? Effect.succeed(response) : Effect.failCause(cause)
|
|
@@ -79,6 +56,23 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
79
56
|
)
|
|
80
57
|
})
|
|
81
58
|
|
|
59
|
+
const responded = Effect.matchCauseEffect(self, {
|
|
60
|
+
onSuccess: (response) => {
|
|
61
|
+
const fiber = Fiber.getCurrent()!
|
|
62
|
+
const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
|
|
63
|
+
const handler = fiber.getRef(PreResponseHandlers)
|
|
64
|
+
if (handler === undefined) {
|
|
65
|
+
;(request as any)[handledSymbol] = true
|
|
66
|
+
return Effect.mapEager(handleResponse(request, response), () => response)
|
|
67
|
+
}
|
|
68
|
+
return Effect.flatMapEager(handler(request, response), (sentResponse) => {
|
|
69
|
+
;(request as any)[handledSymbol] = true
|
|
70
|
+
return Effect.mapEager(handleResponse(request, sentResponse), () => response)
|
|
71
|
+
})
|
|
72
|
+
},
|
|
73
|
+
onFailure: handleCause
|
|
74
|
+
})
|
|
75
|
+
|
|
82
76
|
const withMiddleware: Effect.Effect<
|
|
83
77
|
unknown,
|
|
84
78
|
E | EH | HttpServerError,
|
|
@@ -88,13 +82,16 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
88
82
|
Effect.matchCauseEffect(tracer(middleware(responded)), {
|
|
89
83
|
onFailure(cause): Effect.Effect<void, EH, RH> {
|
|
90
84
|
const fiber = Fiber.getCurrent()!
|
|
85
|
+
reportCauseUnsafe(fiber, cause)
|
|
91
86
|
const request = ServiceMap.getUnsafe(fiber.services, HttpServerRequest)
|
|
92
|
-
if (handledSymbol in request)
|
|
93
|
-
return Effect.void
|
|
94
|
-
}
|
|
87
|
+
if (handledSymbol in request) return Effect.void
|
|
95
88
|
return Effect.matchCauseEffectEager(causeResponse(cause), {
|
|
96
|
-
onFailure
|
|
97
|
-
|
|
89
|
+
onFailure(_) {
|
|
90
|
+
return handleResponse(request, Response.empty({ status: 500 }))
|
|
91
|
+
},
|
|
92
|
+
onSuccess([response]) {
|
|
93
|
+
return handleResponse(request, response)
|
|
94
|
+
}
|
|
98
95
|
})
|
|
99
96
|
},
|
|
100
97
|
onSuccess(response): Effect.Effect<void, EH, RH> {
|