effect 4.0.0-beta.103 → 4.0.0-beta.105
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/AGENTS.md +381 -0
- package/CLAUDE.md +381 -0
- package/ai-docs/README.md +44 -0
- package/ai-docs/package.json +36 -0
- package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
- package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
- package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
- package/ai-docs/src/01_effect/01_basics/index.md +5 -0
- package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
- package/ai-docs/src/01_effect/02_schema/index.md +7 -0
- package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
- package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
- package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
- package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
- package/ai-docs/src/01_effect/03_services/index.md +5 -0
- package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
- package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
- package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
- package/ai-docs/src/01_effect/04_errors/index.md +1 -0
- package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
- package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
- package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
- package/ai-docs/src/01_effect/05_resources/index.md +3 -0
- package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
- package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
- package/ai-docs/src/01_effect/06_running/index.md +1 -0
- package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
- package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
- package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
- package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
- package/ai-docs/src/03_stream/30_encoding.ts +165 -0
- package/ai-docs/src/03_stream/index.md +4 -0
- package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
- package/ai-docs/src/04_integration/index.md +5 -0
- package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
- package/ai-docs/src/05_batching/index.md +3 -0
- package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
- package/ai-docs/src/06_schedule/index.md +3 -0
- package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
- package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
- package/ai-docs/src/07_datetime/index.md +5 -0
- package/ai-docs/src/08_observability/10_logging.ts +66 -0
- package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
- package/ai-docs/src/08_observability/index.md +7 -0
- package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
- package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
- package/ai-docs/src/09_testing/index.md +1 -0
- package/ai-docs/src/10_predicate/01_basics.ts +14 -0
- package/ai-docs/src/10_predicate/index.md +9 -0
- package/ai-docs/src/50_http-client/10_basics.ts +102 -0
- package/ai-docs/src/50_http-client/index.md +3 -0
- package/ai-docs/src/51_http-server/10_basics.ts +116 -0
- package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
- package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
- package/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
- package/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
- package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
- package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
- package/ai-docs/src/51_http-server/index.md +3 -0
- package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
- package/ai-docs/src/60_child-process/index.md +3 -0
- package/ai-docs/src/70_cli/10_basics.ts +136 -0
- package/ai-docs/src/70_cli/index.md +5 -0
- package/ai-docs/src/71_ai/10_language-model.ts +156 -0
- package/ai-docs/src/71_ai/20_tools.ts +226 -0
- package/ai-docs/src/71_ai/30_chat.ts +158 -0
- package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
- package/ai-docs/src/71_ai/index.md +5 -0
- package/ai-docs/src/80_cluster/10_entities.ts +97 -0
- package/ai-docs/src/80_cluster/index.md +4 -0
- package/ai-docs/src/index.md +10 -0
- package/ai-docs/tsconfig.json +24 -0
- package/dist/Brand.d.ts +3 -3
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +4 -3
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.js +1 -1
- package/dist/Cache.js.map +1 -1
- package/dist/Channel.d.ts +1 -1
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +30 -8
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +2 -1
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Context.d.ts +2 -3
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +1 -22
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +31 -0
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +58 -2
- package/dist/Cron.js.map +1 -1
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +13 -5
- package/dist/Crypto.js.map +1 -1
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +12 -1
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +132 -14
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +38 -0
- package/dist/Effect.js.map +1 -1
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +10 -2
- package/dist/Equal.js.map +1 -1
- package/dist/ExecutionPlan.d.ts +73 -0
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +1 -1
- package/dist/ExecutionPlan.js.map +1 -1
- package/dist/FiberSet.js +1 -1
- package/dist/FileSystem.d.ts +2 -2
- package/dist/Function.d.ts +4 -3
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +5 -5
- package/dist/Function.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +11 -10
- package/dist/Iterable.js.map +1 -1
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +7 -5
- package/dist/Layer.js.map +1 -1
- package/dist/Optic.d.ts +35 -21
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +33 -34
- package/dist/Optic.js.map +1 -1
- package/dist/Schedule.d.ts +8 -8
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +4 -4
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +105 -57
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +105 -67
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +33 -3
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +87 -63
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaError.d.ts +8 -8
- package/dist/SchemaError.d.ts.map +1 -1
- package/dist/SchemaError.js +7 -6
- package/dist/SchemaError.js.map +1 -1
- package/dist/SchemaGetter.d.ts +8 -5
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +41 -37
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +195 -38
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +243 -68
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +30 -0
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +74 -62
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +2 -2
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +26 -26
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.js +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Sink.d.ts +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Stdio.d.ts +17 -4
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +6 -3
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +27 -4
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +27 -2
- package/dist/Stream.js.map +1 -1
- package/dist/SynchronizedRef.js +1 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Terminal.js +1 -1
- package/dist/Terminal.js.map +1 -1
- package/dist/Tuple.d.ts +6 -4
- package/dist/Tuple.d.ts.map +1 -1
- package/dist/Tuple.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +0 -56
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +8 -8
- package/dist/TxReentrantLock.js.map +1 -1
- package/dist/internal/dateTime.js +1 -1
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/executionPlan.js +51 -3
- package/dist/internal/executionPlan.js.map +1 -1
- package/dist/internal/hashMap.js +12 -8
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/matcher.js +1 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/annotations.js +2 -0
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/schema.js +1 -9
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/toArbitrary.js +1 -1
- package/dist/internal/schema/toArbitrary.js.map +1 -1
- package/dist/internal/trie.js +13 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +11 -1
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +2 -2
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +8 -7
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/unstable/ai/AiError.js +19 -19
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/Chat.js +1 -1
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +4 -2
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +132 -132
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +8 -8
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.js +1 -1
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +15 -3
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +10 -7
- package/dist/unstable/ai/Prompt.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +3 -3
- package/dist/unstable/cli/CliError.js +11 -11
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +9 -9
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +8 -6
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/Param.d.ts +7 -5
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +15 -11
- package/dist/unstable/cli/Param.js.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.js +31 -24
- package/dist/unstable/cli/Primitive.js.map +1 -1
- package/dist/unstable/cli/Prompt.d.ts.map +1 -1
- package/dist/unstable/cli/Prompt.js +31 -17
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/internal/ansi.js +2 -2
- package/dist/unstable/cli/internal/ansi.js.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +2 -2
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +10 -9
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/bash.js +69 -9
- package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
- package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
- package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/unstable/cli/internal/completions/fish.js +5 -5
- package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
- package/dist/unstable/cli/internal/help.d.ts.map +1 -1
- package/dist/unstable/cli/internal/help.js +4 -2
- package/dist/unstable/cli/internal/help.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +3 -3
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cli/internal/wizard.js +2 -2
- package/dist/unstable/cli/internal/wizard.js.map +1 -1
- package/dist/unstable/cluster/ClusterError.js +7 -7
- package/dist/unstable/cluster/ClusterError.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +8 -1
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +8 -0
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +16 -4
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerServer.js +4 -2
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +1 -2
- package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.js +7 -6
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +22 -4
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +1 -1
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceMap.js +2 -2
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +17 -0
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js +7 -2
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/encoding/Ini.d.ts +20 -0
- package/dist/unstable/encoding/Ini.d.ts.map +1 -0
- package/dist/unstable/encoding/Ini.js +153 -0
- package/dist/unstable/encoding/Ini.js.map +1 -0
- package/dist/unstable/encoding/Msgpack.d.ts +2 -1
- package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
- package/dist/unstable/encoding/Msgpack.js +27 -13
- package/dist/unstable/encoding/Msgpack.js.map +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
- package/dist/unstable/encoding/Ndjson.js +7 -1
- package/dist/unstable/encoding/Ndjson.js.map +1 -1
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js +14 -23
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/encoding/Toml.d.ts +19 -0
- package/dist/unstable/encoding/Toml.d.ts.map +1 -0
- package/dist/unstable/encoding/Toml.js +434 -0
- package/dist/unstable/encoding/Toml.js.map +1 -0
- package/dist/unstable/encoding/Yaml.d.ts +19 -0
- package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
- package/dist/unstable/encoding/Yaml.js +461 -0
- package/dist/unstable/encoding/Yaml.js.map +1 -0
- package/dist/unstable/encoding/index.d.ts +12 -0
- package/dist/unstable/encoding/index.d.ts.map +1 -1
- package/dist/unstable/encoding/index.js +12 -0
- package/dist/unstable/encoding/index.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventJournal.js +13 -5
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js +1 -4
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/unstable/http/FindMyWay/internal/queryString.d.ts +11 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
- package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
- package/dist/unstable/http/FindMyWay.d.ts +33 -8
- package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
- package/dist/unstable/http/FindMyWay.js +4 -7
- package/dist/unstable/http/FindMyWay.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +59 -3
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +33 -19
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.js +1 -1
- package/dist/unstable/http/HttpClientError.js.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +2 -14
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.js +1 -16
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
- package/dist/unstable/http/HttpPlatform.js +21 -3
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +7 -6
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +8 -6
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +1 -1
- package/dist/unstable/http/Multipart.d.ts.map +1 -1
- package/dist/unstable/http/Multipart.js +9 -2
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.js +14 -0
- package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js +194 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js +226 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
- package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
- package/dist/unstable/http/MultipartParser.d.ts +98 -0
- package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser.js +23 -0
- package/dist/unstable/http/MultipartParser.js.map +1 -0
- package/dist/unstable/http/Template.d.ts.map +1 -1
- package/dist/unstable/http/Template.js +2 -2
- package/dist/unstable/http/Template.js.map +1 -1
- package/dist/unstable/http/index.d.ts +1 -1
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +1 -1
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/http/internal/httpBody.d.ts +2 -0
- package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
- package/dist/unstable/http/internal/httpBody.js +10 -0
- package/dist/unstable/http/internal/httpBody.js.map +1 -0
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js +5 -5
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +73 -20
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +74 -34
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +6 -4
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +5 -5
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +17 -17
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.d.ts +219 -0
- package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.js +170 -0
- package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts +8 -0
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +45 -18
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +2 -1
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js +2 -2
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +2 -2
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js +28 -15
- package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js +1 -1
- package/dist/unstable/observability/OtlpTracer.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +9 -9
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +17 -7
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +22 -12
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +15 -42
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.js +1 -1
- package/dist/unstable/persistence/Redis.js.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.js +4 -4
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +26 -11
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +9 -22
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +14 -0
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +21 -10
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.js +2 -2
- package/dist/unstable/rpc/RpcClientError.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +3 -1
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +3 -2
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +1 -1
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +5 -5
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +17 -9
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +28 -12
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +7 -3
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlError.js +13 -13
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +8 -6
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/Statement.d.ts.map +1 -1
- package/dist/unstable/sql/Statement.js +8 -6
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/workers/WorkerError.js +5 -5
- package/dist/unstable/workers/WorkerError.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +2 -2
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +3 -3
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +6 -9
- package/src/Brand.ts +4 -4
- package/src/Cache.ts +1 -1
- package/src/Channel.ts +1 -1
- package/src/Config.ts +31 -8
- package/src/ConfigProvider.ts +4 -1
- package/src/Context.ts +6 -28
- package/src/Cron.ts +65 -2
- package/src/Crypto.ts +17 -8
- package/src/Duration.ts +16 -2
- package/src/Effect.ts +141 -17
- package/src/Equal.ts +10 -2
- package/src/ExecutionPlan.ts +78 -1
- package/src/FiberSet.ts +1 -1
- package/src/FileSystem.ts +2 -2
- package/src/Function.ts +6 -6
- package/src/Iterable.ts +11 -10
- package/src/Layer.ts +7 -5
- package/src/Optic.ts +59 -58
- package/src/Schedule.ts +13 -13
- package/src/Schema.ts +195 -112
- package/src/SchemaAST.ts +154 -85
- package/src/SchemaError.ts +9 -9
- package/src/SchemaGetter.ts +89 -30
- package/src/SchemaIssue.ts +285 -80
- package/src/SchemaParser.ts +126 -86
- package/src/SchemaTransformation.ts +66 -18
- package/src/ScopedCache.ts +1 -1
- package/src/Sink.ts +1 -1
- package/src/Stdio.ts +23 -4
- package/src/Stream.ts +77 -10
- package/src/SynchronizedRef.ts +1 -1
- package/src/Terminal.ts +1 -1
- package/src/Tuple.ts +7 -4
- package/src/TxReentrantLock.ts +39 -35
- package/src/internal/dateTime.ts +1 -1
- package/src/internal/executionPlan.ts +105 -10
- package/src/internal/hashMap.ts +20 -14
- package/src/internal/matcher.ts +2 -2
- package/src/internal/schedule.ts +4 -4
- package/src/internal/schema/annotations.ts +3 -0
- package/src/internal/schema/schema.ts +1 -17
- package/src/internal/schema/toArbitrary.ts +3 -1
- package/src/internal/trie.ts +12 -2
- package/src/testing/TestClock.ts +13 -1
- package/src/testing/TestSchema.ts +9 -9
- package/src/unstable/ai/AiError.ts +19 -19
- package/src/unstable/ai/Chat.ts +1 -1
- package/src/unstable/ai/LanguageModel.ts +4 -2
- package/src/unstable/ai/McpSchema.ts +17 -16
- package/src/unstable/ai/McpServer.ts +1 -1
- package/src/unstable/ai/Prompt.ts +35 -10
- package/src/unstable/cli/CliError.ts +12 -12
- package/src/unstable/cli/Command.ts +12 -10
- package/src/unstable/cli/Param.ts +41 -19
- package/src/unstable/cli/Primitive.ts +11 -5
- package/src/unstable/cli/Prompt.ts +36 -20
- package/src/unstable/cli/internal/ansi.ts +2 -2
- package/src/unstable/cli/internal/command.ts +15 -10
- package/src/unstable/cli/internal/completions/bash.ts +59 -9
- package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
- package/src/unstable/cli/internal/completions/fish.ts +5 -7
- package/src/unstable/cli/internal/help.ts +4 -2
- package/src/unstable/cli/internal/parser.ts +3 -3
- package/src/unstable/cli/internal/wizard.ts +2 -2
- package/src/unstable/cluster/ClusterError.ts +7 -7
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +4 -1
- package/src/unstable/cluster/MessageStorage.ts +9 -5
- package/src/unstable/cluster/Reply.ts +25 -4
- package/src/unstable/cluster/RunnerServer.ts +4 -10
- package/src/unstable/cluster/RunnerStorage.ts +9 -7
- package/src/unstable/cluster/Sharding.ts +35 -7
- package/src/unstable/cluster/internal/entityManager.ts +1 -1
- package/src/unstable/cluster/internal/resourceMap.ts +5 -2
- package/src/unstable/cluster/internal/resourceRef.ts +27 -5
- package/src/unstable/devtools/DevToolsClient.ts +3 -2
- package/src/unstable/encoding/Ini.ts +174 -0
- package/src/unstable/encoding/Msgpack.ts +59 -36
- package/src/unstable/encoding/Ndjson.ts +9 -1
- package/src/unstable/encoding/Sse.ts +11 -21
- package/src/unstable/encoding/Toml.ts +504 -0
- package/src/unstable/encoding/Yaml.ts +541 -0
- package/src/unstable/encoding/index.ts +15 -0
- package/src/unstable/eventlog/EventJournal.ts +14 -6
- package/src/unstable/eventlog/EventLogMessage.ts +1 -1
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +1 -1
- package/src/unstable/eventlog/SqlEventJournal.ts +6 -4
- package/src/unstable/http/FindMyWay/internal/queryString.ts +420 -0
- package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
- package/src/unstable/http/FindMyWay.ts +65 -6
- package/src/unstable/http/HttpClient.ts +132 -23
- package/src/unstable/http/HttpClientError.ts +1 -1
- package/src/unstable/http/HttpClientRequest.ts +2 -14
- package/src/unstable/http/HttpClientResponse.ts +1 -17
- package/src/unstable/http/HttpPlatform.ts +34 -6
- package/src/unstable/http/HttpServerRequest.ts +14 -6
- package/src/unstable/http/HttpServerResponse.ts +9 -7
- package/src/unstable/http/Multipart.ts +9 -2
- package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
- package/src/unstable/http/MultipartParser/Search.ts +17 -0
- package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
- package/src/unstable/http/MultipartParser/internal/headers.ts +615 -0
- package/src/unstable/http/MultipartParser/internal/multipart.ts +262 -0
- package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
- package/src/unstable/http/MultipartParser.ts +115 -0
- package/src/unstable/http/Template.ts +6 -5
- package/src/unstable/http/index.ts +1 -1
- package/src/unstable/http/internal/httpBody.ts +15 -0
- package/src/unstable/httpapi/HttpApi.ts +6 -7
- package/src/unstable/httpapi/HttpApiBuilder.ts +142 -25
- package/src/unstable/httpapi/HttpApiClient.ts +130 -49
- package/src/unstable/httpapi/HttpApiEndpoint.ts +117 -29
- package/src/unstable/httpapi/HttpApiError.ts +33 -39
- package/src/unstable/httpapi/HttpApiMiddleware.ts +1 -1
- package/src/unstable/httpapi/HttpApiSchema.ts +353 -0
- package/src/unstable/httpapi/OpenApi.ts +70 -20
- package/src/unstable/observability/OtlpExporter.ts +4 -2
- package/src/unstable/observability/OtlpLogger.ts +3 -1
- package/src/unstable/observability/OtlpMetrics.ts +32 -18
- package/src/unstable/observability/OtlpTracer.ts +1 -1
- package/src/unstable/persistence/PersistedQueue.ts +12 -9
- package/src/unstable/persistence/Persistence.ts +27 -7
- package/src/unstable/persistence/RateLimiter.ts +54 -31
- package/src/unstable/persistence/Redis.ts +1 -1
- package/src/unstable/reactivity/AsyncResult.ts +11 -6
- package/src/unstable/reactivity/Atom.ts +44 -25
- package/src/unstable/rpc/RpcClient.ts +42 -13
- package/src/unstable/rpc/RpcClientError.ts +2 -2
- package/src/unstable/rpc/RpcSerialization.ts +1 -1
- package/src/unstable/rpc/RpcServer.ts +4 -2
- package/src/unstable/schema/VariantSchema.ts +36 -18
- package/src/unstable/socket/Socket.ts +24 -14
- package/src/unstable/sql/SqlClient.ts +65 -56
- package/src/unstable/sql/SqlError.ts +13 -13
- package/src/unstable/sql/SqlResolver.ts +8 -6
- package/src/unstable/sql/Statement.ts +13 -8
- package/src/unstable/workers/WorkerError.ts +5 -5
- package/src/unstable/workflow/Workflow.ts +2 -5
- package/src/unstable/workflow/WorkflowEngine.ts +8 -3
- package/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
- package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Node.js +0 -14
- package/dist/unstable/http/Multipasta/Node.js.map +0 -1
- package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Search.js +0 -14
- package/dist/unstable/http/Multipasta/Search.js.map +0 -1
- package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Web.js +0 -14
- package/dist/unstable/http/Multipasta/Web.js.map +0 -1
- package/dist/unstable/http/Multipasta.d.ts +0 -15
- package/dist/unstable/http/Multipasta.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta.js +0 -15
- package/dist/unstable/http/Multipasta.js.map +0 -1
- package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
- package/src/unstable/http/Multipasta/Node.ts +0 -14
- package/src/unstable/http/Multipasta/Search.ts +0 -14
- package/src/unstable/http/Multipasta/Web.ts +0 -14
- package/src/unstable/http/Multipasta.ts +0 -15
|
@@ -760,6 +760,7 @@ function handlerToHttpEffect(
|
|
|
760
760
|
const decodeHeaders = UndefinedOr.map(endpoint.headers, Schema.decodeUnknownEffect)
|
|
761
761
|
const decodeQuery = UndefinedOr.map(endpoint.query, Schema.decodeUnknownEffect)
|
|
762
762
|
const encodeStream = makeStreamEncoder(endpoint)
|
|
763
|
+
const encodeWithHeaders = makeWithHeadersEncoder(endpoint)
|
|
763
764
|
|
|
764
765
|
const shouldParsePayload = endpoint.payload.size > 0 && !isRaw
|
|
765
766
|
const payloadBy = shouldParsePayload ? buildPayloadDecoders(endpoint.payload) : undefined
|
|
@@ -797,15 +798,26 @@ function handlerToHttpEffect(
|
|
|
797
798
|
request.payload = yield* HttpApiSchemaError.wrap("Payload", result)
|
|
798
799
|
}
|
|
799
800
|
}
|
|
800
|
-
|
|
801
|
+
let response = yield* handler(request)
|
|
801
802
|
if (Response.isHttpServerResponse(response)) {
|
|
802
803
|
return response
|
|
803
804
|
}
|
|
804
|
-
|
|
805
|
-
if (
|
|
806
|
-
|
|
805
|
+
let responseHeaders: unknown | undefined
|
|
806
|
+
if (encodeWithHeaders !== undefined && HttpApiSchema.isWithHeadersValue(response)) {
|
|
807
|
+
responseHeaders = response.headers
|
|
808
|
+
response = response.body
|
|
807
809
|
}
|
|
808
|
-
|
|
810
|
+
const encoded = yield* HttpApiSchemaError.wrap(
|
|
811
|
+
"Body",
|
|
812
|
+
encodeStream?.(response, context) ??
|
|
813
|
+
(responseHeaders !== undefined ? encodeWithHeaders!.encodeBody(response) : encodeSuccess(response))
|
|
814
|
+
)
|
|
815
|
+
if (encodeWithHeaders === undefined || responseHeaders === undefined) return encoded
|
|
816
|
+
const encodedHeaders = yield* HttpApiSchemaError.wrap(
|
|
817
|
+
"ResponseHeaders",
|
|
818
|
+
encodeWithHeaders.encodeHeaders.get(encoded.status)!(responseHeaders)
|
|
819
|
+
)
|
|
820
|
+
return Response.setHeaders(encoded, encodedHeaders as any)
|
|
809
821
|
})
|
|
810
822
|
).pipe(
|
|
811
823
|
Effect.withErrorReporting,
|
|
@@ -918,6 +930,37 @@ type StreamEncoder = (response: unknown, context: Context.Context<never>) =>
|
|
|
918
930
|
| Effect.Effect<HttpServerResponse, Schema.SchemaError, unknown>
|
|
919
931
|
| undefined
|
|
920
932
|
|
|
933
|
+
type WithHeadersEncoder = (headers: unknown) => Effect.Effect<unknown, Schema.SchemaError, unknown>
|
|
934
|
+
|
|
935
|
+
interface WithHeadersEncoders {
|
|
936
|
+
readonly encodeBody: (body: unknown) => Effect.Effect<HttpServerResponse, Schema.SchemaError, unknown>
|
|
937
|
+
readonly encodeHeaders: ReadonlyMap<number, WithHeadersEncoder>
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
function makeWithHeadersEncoder(endpoint: HttpApiEndpoint.Top): WithHeadersEncoders | undefined {
|
|
941
|
+
const encodeHeaders = new Map<number, WithHeadersEncoder>()
|
|
942
|
+
const bodySchemas: Array<Schema.ConstraintEncoder<HttpServerResponse, unknown>> = []
|
|
943
|
+
for (const schema of endpoint.success) {
|
|
944
|
+
if (!HttpApiSchema.isWithHeaders(schema)) continue
|
|
945
|
+
encodeHeaders.set(HttpApiSchema.getStatusSuccessSchema(schema), Schema.encodeUnknownEffect(schema.headers))
|
|
946
|
+
if (!HttpApiSchema.isStreamSchema(schema.schema)) {
|
|
947
|
+
bodySchemas.push(toResponseSuccessSchema(schema))
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
if (encodeHeaders.size === 0) return undefined
|
|
951
|
+
// Branded response bodies encode against the header-carrying members only, so
|
|
952
|
+
// the encoded status always has a matching header schema.
|
|
953
|
+
const bodySchema: Schema.ConstraintEncoder<HttpServerResponse, unknown> = bodySchemas.length === 0
|
|
954
|
+
? Schema.Never
|
|
955
|
+
: bodySchemas.length === 1
|
|
956
|
+
? bodySchemas[0]
|
|
957
|
+
: Schema.Union(bodySchemas)
|
|
958
|
+
return {
|
|
959
|
+
encodeBody: Schema.encodeUnknownEffect(bodySchema),
|
|
960
|
+
encodeHeaders
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
|
|
921
964
|
function makeStreamEncoder(endpoint: HttpApiEndpoint.Top): StreamEncoder | undefined {
|
|
922
965
|
const streamSchema = getStreamSuccessSchema(endpoint)
|
|
923
966
|
if (streamSchema === undefined) {
|
|
@@ -967,15 +1010,17 @@ function makeStreamEncoder(endpoint: HttpApiEndpoint.Top): StreamEncoder | undef
|
|
|
967
1010
|
|
|
968
1011
|
function getStreamSuccessSchema(endpoint: HttpApiEndpoint.Top) {
|
|
969
1012
|
for (const schema of endpoint.success) {
|
|
970
|
-
|
|
971
|
-
|
|
1013
|
+
const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
|
|
1014
|
+
if (HttpApiSchema.isStreamSchema(body)) {
|
|
1015
|
+
return body
|
|
972
1016
|
}
|
|
973
1017
|
}
|
|
974
1018
|
}
|
|
975
1019
|
|
|
976
1020
|
function hasBufferedSuccess(endpoint: HttpApiEndpoint.Top): boolean {
|
|
977
1021
|
for (const schema of endpoint.success) {
|
|
978
|
-
|
|
1022
|
+
const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
|
|
1023
|
+
if (Schema.isSchema(body) && !HttpApiSchema.isStreamSchema(body)) return true
|
|
979
1024
|
}
|
|
980
1025
|
return endpoint.success.size === 0
|
|
981
1026
|
}
|
|
@@ -1040,8 +1085,31 @@ function renderSseEvent(event: Sse.EventEncoded) {
|
|
|
1040
1085
|
})
|
|
1041
1086
|
}
|
|
1042
1087
|
|
|
1043
|
-
const toResponseSuccessSchema = toResponseSchema(HttpApiSchema.
|
|
1044
|
-
const
|
|
1088
|
+
const toResponseSuccessSchema = toResponseSchema(HttpApiSchema.getStatusSuccessSchema)
|
|
1089
|
+
const toResponseErrorSchemaPlain = toResponseSchema(HttpApiSchema.getStatusErrorSchema)
|
|
1090
|
+
|
|
1091
|
+
function toResponseErrorSchema(
|
|
1092
|
+
schema: Schema.Constraint
|
|
1093
|
+
): Schema.ConstraintEncoder<HttpServerResponse, unknown> {
|
|
1094
|
+
if (!HttpApiSchema.isWithHeaders(schema)) return toResponseErrorSchemaPlain(schema)
|
|
1095
|
+
|
|
1096
|
+
const encodeBody = Schema.encodeUnknownEffect(schema.schema)
|
|
1097
|
+
const encodeHeaders = Schema.encodeUnknownEffect(schema.headers)
|
|
1098
|
+
const encodeResponse = getResponseEncode(
|
|
1099
|
+
HttpApiSchema.getStatusErrorSchema(schema),
|
|
1100
|
+
HttpApiSchema.getResponseEncodingSchema(schema),
|
|
1101
|
+
HttpApiSchema.isNoContent(schema.schema.ast)
|
|
1102
|
+
)
|
|
1103
|
+
const transformation = withHeadersTransformation<HttpApiSchema.withHeaders<unknown, Schema.StringTree>>(
|
|
1104
|
+
(body, options) =>
|
|
1105
|
+
encodeBody(body, options).pipe(
|
|
1106
|
+
Effect.mapError((error) => error.issue),
|
|
1107
|
+
Effect.flatMap((body) => encodeResponse(body, options))
|
|
1108
|
+
),
|
|
1109
|
+
encodeHeaders
|
|
1110
|
+
)
|
|
1111
|
+
return $HttpServerResponse.pipe(Schema.decodeTo(schema, transformation))
|
|
1112
|
+
}
|
|
1045
1113
|
|
|
1046
1114
|
function makeSuccessSchema(
|
|
1047
1115
|
endpoint: HttpApiEndpoint.Top
|
|
@@ -1058,47 +1126,92 @@ function makeErrorSchema(
|
|
|
1058
1126
|
return schemas.length === 1 ? schemas[0] : Schema.Union(schemas)
|
|
1059
1127
|
}
|
|
1060
1128
|
|
|
1061
|
-
function toResponseSchema(getStatus: (
|
|
1062
|
-
|
|
1129
|
+
function toResponseSchema(getStatus: (schema: Schema.Constraint) => number) {
|
|
1130
|
+
// WithHeaders wrappers share a single declaration AST, so they are cached by instance
|
|
1131
|
+
const cache = new WeakMap<object, Schema.Top>()
|
|
1063
1132
|
|
|
1064
1133
|
return (schema: Schema.Constraint): Schema.ConstraintEncoder<HttpServerResponse, unknown> => {
|
|
1065
|
-
const
|
|
1134
|
+
const key = HttpApiSchema.isWithHeaders(schema) ? schema : schema.ast
|
|
1135
|
+
const cached = cache.get(key)
|
|
1066
1136
|
if (cached !== undefined) {
|
|
1067
1137
|
return cached as any
|
|
1068
1138
|
}
|
|
1139
|
+
const bodySchema = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
|
|
1069
1140
|
const responseSchema = $HttpServerResponse.pipe(
|
|
1070
|
-
Schema.decodeTo(
|
|
1141
|
+
Schema.decodeTo(bodySchema, getResponseTransformation(getStatus, schema))
|
|
1071
1142
|
)
|
|
1072
|
-
cache.set(
|
|
1143
|
+
cache.set(key, responseSchema)
|
|
1073
1144
|
return responseSchema
|
|
1074
1145
|
}
|
|
1075
1146
|
}
|
|
1076
1147
|
|
|
1077
1148
|
function getResponseTransformation(
|
|
1078
|
-
getStatus: (
|
|
1149
|
+
getStatus: (schema: Schema.Constraint) => number,
|
|
1079
1150
|
schema: Schema.Constraint
|
|
1080
|
-
): SchemaTransformation.Transformation<unknown, Response.HttpServerResponse> {
|
|
1081
|
-
const
|
|
1151
|
+
): SchemaTransformation.Transformation<unknown, Response.HttpServerResponse, never, unknown> {
|
|
1152
|
+
const withHeaders = HttpApiSchema.getWithHeadersAnnotation(schema.ast)
|
|
1153
|
+
if (withHeaders !== undefined) {
|
|
1154
|
+
const encodeBody = getResponseEncode(
|
|
1155
|
+
getStatus(withHeaders.body),
|
|
1156
|
+
HttpApiSchema.getResponseEncoding(withHeaders.body.ast),
|
|
1157
|
+
HttpApiSchema.isNoContent(withHeaders.body.ast)
|
|
1158
|
+
)
|
|
1159
|
+
return withHeadersTransformation(encodeBody, Schema.encodeUnknownEffect(withHeaders.headersCodec))
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
const bodySchema = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
|
|
1082
1163
|
const encode = getResponseEncode(
|
|
1083
|
-
getStatus(
|
|
1084
|
-
HttpApiSchema.
|
|
1085
|
-
HttpApiSchema.isNoContent(ast)
|
|
1164
|
+
getStatus(schema),
|
|
1165
|
+
HttpApiSchema.getResponseEncodingSchema(schema),
|
|
1166
|
+
HttpApiSchema.isNoContent(bodySchema.ast)
|
|
1086
1167
|
)
|
|
1087
1168
|
|
|
1088
1169
|
return SchemaTransformation.transformOrFail({
|
|
1089
|
-
decode: () =>
|
|
1170
|
+
decode: (input, options) =>
|
|
1171
|
+
Effect.fail(
|
|
1172
|
+
new SchemaIssue.Forbidden({ message: "Encode only schema" }, input, options)
|
|
1173
|
+
),
|
|
1090
1174
|
encode
|
|
1091
1175
|
})
|
|
1092
1176
|
}
|
|
1093
1177
|
|
|
1178
|
+
function withHeadersTransformation<T = unknown>(
|
|
1179
|
+
encodeBody: (
|
|
1180
|
+
body: unknown,
|
|
1181
|
+
options?: SchemaAST.ParseOptions
|
|
1182
|
+
) => Effect.Effect<Response.HttpServerResponse, SchemaIssue.Issue, unknown>,
|
|
1183
|
+
encodeHeaders: (
|
|
1184
|
+
headers: unknown,
|
|
1185
|
+
options?: SchemaAST.ParseOptions
|
|
1186
|
+
) => Effect.Effect<unknown, Schema.SchemaError, unknown>
|
|
1187
|
+
): SchemaTransformation.Transformation<T, Response.HttpServerResponse, never, unknown> {
|
|
1188
|
+
return SchemaTransformation.transformOrFail<T, Response.HttpServerResponse, never, unknown>({
|
|
1189
|
+
decode: (input, options) =>
|
|
1190
|
+
Effect.fail(
|
|
1191
|
+
new SchemaIssue.Forbidden({ message: "Encode only schema" }, input, options)
|
|
1192
|
+
),
|
|
1193
|
+
encode: (value, options) => {
|
|
1194
|
+
const pair = value as { readonly body: unknown; readonly headers: unknown }
|
|
1195
|
+
return Effect.flatMap(encodeBody(pair.body, options), (response) =>
|
|
1196
|
+
Effect.map(
|
|
1197
|
+
encodeHeaders(pair.headers, options).pipe(Effect.mapError((error) => error.issue)),
|
|
1198
|
+
(headers) => Response.setHeaders(response, headers as any)
|
|
1199
|
+
))
|
|
1200
|
+
}
|
|
1201
|
+
})
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1094
1204
|
function getResponseEncode<E>(
|
|
1095
1205
|
status: number,
|
|
1096
1206
|
encoding: HttpApiSchema.ResponseEncoding,
|
|
1097
1207
|
isNoContent: boolean
|
|
1098
|
-
): (
|
|
1208
|
+
): (
|
|
1209
|
+
e: E,
|
|
1210
|
+
options?: SchemaAST.ParseOptions
|
|
1211
|
+
) => Effect.Effect<Response.HttpServerResponse, SchemaIssue.InvalidValue, never> {
|
|
1099
1212
|
switch (encoding._tag) {
|
|
1100
1213
|
case "Json": {
|
|
1101
|
-
return ((e) => {
|
|
1214
|
+
return ((e, options) => {
|
|
1102
1215
|
if (e === undefined || isNoContent) {
|
|
1103
1216
|
return Effect.succeed(Response.empty({ status }))
|
|
1104
1217
|
}
|
|
@@ -1107,7 +1220,11 @@ function getResponseEncode<E>(
|
|
|
1107
1220
|
return Effect.succeed(Response.text(s, { status, contentType: encoding.contentType }))
|
|
1108
1221
|
} catch {
|
|
1109
1222
|
return Effect.fail(
|
|
1110
|
-
new SchemaIssue.InvalidValue(
|
|
1223
|
+
new SchemaIssue.InvalidValue(
|
|
1224
|
+
{ expected: "a JSON-serializable response body" },
|
|
1225
|
+
e,
|
|
1226
|
+
options
|
|
1227
|
+
)
|
|
1111
1228
|
)
|
|
1112
1229
|
}
|
|
1113
1230
|
})
|
|
@@ -68,15 +68,19 @@ export type ForApi<Api extends HttpApi.Constraint, E = never, R = never> = Api e
|
|
|
68
68
|
HttpApi.HttpApi<infer _Id, infer Groups> ? Client<Groups, E, R> :
|
|
69
69
|
never
|
|
70
70
|
|
|
71
|
-
type SuccessType<S> = S extends HttpApiSchema.
|
|
72
|
-
infer
|
|
73
|
-
infer
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
_Error
|
|
78
|
-
|
|
79
|
-
>
|
|
71
|
+
type SuccessType<S> = S extends HttpApiSchema.WithHeaders<
|
|
72
|
+
infer _Inner,
|
|
73
|
+
infer _Headers
|
|
74
|
+
> ? HttpApiSchema.withHeaders<SuccessType<_Inner>, _Headers["Type"]>
|
|
75
|
+
: S extends HttpApiSchema.StreamSse<
|
|
76
|
+
infer _Events,
|
|
77
|
+
infer _Error,
|
|
78
|
+
infer _Value
|
|
79
|
+
> ? Stream.Stream<
|
|
80
|
+
_Value,
|
|
81
|
+
_Error["Type"] | HttpClientError.HttpClientError | Schema.SchemaError | Sse.Retry | Sse.SseError,
|
|
82
|
+
never
|
|
83
|
+
>
|
|
80
84
|
: S extends HttpApiSchema.StreamUint8Array ? Stream.Stream<Uint8Array, HttpClientError.HttpClientError, never>
|
|
81
85
|
: S extends Schema.Constraint ? S["Type"]
|
|
82
86
|
: never
|
|
@@ -366,10 +370,11 @@ export const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Con
|
|
|
366
370
|
}
|
|
367
371
|
}
|
|
368
372
|
for (const streamSuccess of getStreamSuccessSchemas(endpoint)) {
|
|
373
|
+
const streamSchema = isWithHeadersStreamSuccess(streamSuccess) ? streamSuccess.schema : streamSuccess
|
|
369
374
|
addResponseAlternative(
|
|
370
375
|
successAlternatives,
|
|
371
|
-
HttpApiSchema.
|
|
372
|
-
|
|
376
|
+
HttpApiSchema.getStatusSuccessSchema(streamSuccess),
|
|
377
|
+
streamSchema.contentType,
|
|
373
378
|
streamToResponse(streamSuccess)
|
|
374
379
|
)
|
|
375
380
|
}
|
|
@@ -722,9 +727,44 @@ const compilePath = (path: string) => {
|
|
|
722
727
|
}
|
|
723
728
|
|
|
724
729
|
function schemasToResponse(schemas: readonly [Schema.Constraint, ...Array<Schema.Constraint>]) {
|
|
725
|
-
const
|
|
730
|
+
const hasWithHeaders = schemas.some((schema) =>
|
|
731
|
+
HttpApiSchema.isWithHeaders(schema) || HttpApiSchema.getWithHeadersAnnotation(schema.ast) !== undefined
|
|
732
|
+
)
|
|
733
|
+
const codec = hasWithHeaders
|
|
734
|
+
? Schema.Union(schemas.map(toCodecArrayBufferWithHeaders))
|
|
735
|
+
: toCodecArrayBuffer(schemas)
|
|
726
736
|
const decode = Schema.decodeEffect(codec)
|
|
727
|
-
return (response: HttpClientResponse.HttpClientResponse) =>
|
|
737
|
+
return (response: HttpClientResponse.HttpClientResponse) =>
|
|
738
|
+
Effect.flatMap(
|
|
739
|
+
response.arrayBuffer,
|
|
740
|
+
hasWithHeaders
|
|
741
|
+
? (body) => decode({ body, headers: response.headers })
|
|
742
|
+
: decode
|
|
743
|
+
)
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
function toCodecArrayBufferWithHeaders(schema: Schema.Constraint): Schema.Top {
|
|
747
|
+
const isWithHeaders = HttpApiSchema.isWithHeaders(schema)
|
|
748
|
+
const annotation = HttpApiSchema.getWithHeadersAnnotation(schema.ast)
|
|
749
|
+
if (annotation !== undefined) {
|
|
750
|
+
return Schema.Struct({
|
|
751
|
+
body: fromArrayBuffer(annotation.body),
|
|
752
|
+
headers: annotation.headersCodec
|
|
753
|
+
}).pipe(Schema.decodeTo(schema))
|
|
754
|
+
}
|
|
755
|
+
const body = isWithHeaders ? schema.schema : schema
|
|
756
|
+
return Schema.Struct({
|
|
757
|
+
body: fromArrayBuffer(body).pipe(Schema.decodeTo(body)),
|
|
758
|
+
headers: isWithHeaders ? schema.headers : Schema.Unknown
|
|
759
|
+
}).pipe(
|
|
760
|
+
Schema.decodeTo(
|
|
761
|
+
isWithHeaders ? schema : Schema.toType(schema),
|
|
762
|
+
SchemaTransformation.transform({
|
|
763
|
+
decode: (value) => isWithHeaders ? HttpApiSchema.withHeaders(value) : value.body,
|
|
764
|
+
encode: (value: any) => isWithHeaders ? value : { body: value, headers: undefined }
|
|
765
|
+
}) as any
|
|
766
|
+
)
|
|
767
|
+
)
|
|
728
768
|
}
|
|
729
769
|
|
|
730
770
|
type ResponseDecoder = (response: HttpClientResponse.HttpClientResponse) => Effect.Effect<unknown, unknown, unknown>
|
|
@@ -768,9 +808,10 @@ function groupSchemasByContentType(
|
|
|
768
808
|
): Map<string, Arr.NonEmptyReadonlyArray<Schema.Top>> {
|
|
769
809
|
const grouped = new Map<string, [Schema.Top, ...Array<Schema.Top>]>()
|
|
770
810
|
for (const schema of schemas) {
|
|
771
|
-
const
|
|
811
|
+
const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
|
|
812
|
+
const contentType = HttpApiSchema.isNoContent(body.ast)
|
|
772
813
|
? ""
|
|
773
|
-
: MediaType.normalize(HttpApiSchema.
|
|
814
|
+
: MediaType.normalize(HttpApiSchema.getResponseEncodingSchema(schema).contentType)
|
|
774
815
|
const existing = grouped.get(contentType)
|
|
775
816
|
if (existing === undefined) {
|
|
776
817
|
grouped.set(contentType, [schema])
|
|
@@ -802,24 +843,35 @@ function failUnsupportedContentType(
|
|
|
802
843
|
|
|
803
844
|
const reservedStreamFailureEvent = "effect/httpapi/stream/failure"
|
|
804
845
|
|
|
805
|
-
|
|
806
|
-
|
|
846
|
+
type StreamSuccessSchema =
|
|
847
|
+
| HttpApiSchema.StreamSchema
|
|
848
|
+
| HttpApiSchema.WithHeaders<HttpApiSchema.StreamSchema, Schema.Top>
|
|
849
|
+
|
|
850
|
+
const isWithHeadersStreamSuccess = (
|
|
851
|
+
schema: StreamSuccessSchema
|
|
852
|
+
): schema is HttpApiSchema.WithHeaders<HttpApiSchema.StreamSchema, Schema.Top> => HttpApiSchema.isWithHeaders(schema)
|
|
853
|
+
|
|
854
|
+
function getStreamSuccessSchemas(endpoint: HttpApiEndpoint.Top): Array<StreamSuccessSchema> {
|
|
855
|
+
const schemas: Array<StreamSuccessSchema> = []
|
|
807
856
|
for (const schema of endpoint.success) {
|
|
808
|
-
|
|
809
|
-
|
|
857
|
+
const body = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
|
|
858
|
+
if (HttpApiSchema.isStreamSchema(body)) {
|
|
859
|
+
schemas.push(schema as StreamSuccessSchema)
|
|
810
860
|
}
|
|
811
861
|
}
|
|
812
862
|
return schemas
|
|
813
863
|
}
|
|
814
864
|
|
|
815
|
-
function streamToResponse(
|
|
865
|
+
function streamToResponse(successSchema: StreamSuccessSchema) {
|
|
866
|
+
const isWithHeaders = isWithHeadersStreamSuccess(successSchema)
|
|
867
|
+
const streamSchema = isWithHeaders ? successSchema.schema : successSchema
|
|
816
868
|
const sse = HttpApiSchema.isStreamUint8Array(streamSchema)
|
|
817
869
|
? undefined
|
|
818
870
|
: {
|
|
819
871
|
declaration: streamSchema,
|
|
820
872
|
decoder: makeSseDecoder(streamSchema)
|
|
821
873
|
}
|
|
822
|
-
|
|
874
|
+
const toStream = (response: HttpClientResponse.HttpClientResponse) =>
|
|
823
875
|
Effect.map(Effect.context<never>(), (context) =>
|
|
824
876
|
Stream.provideContext(
|
|
825
877
|
sse === undefined ?
|
|
@@ -827,6 +879,14 @@ function streamToResponse(streamSchema: HttpApiSchema.StreamSchema) {
|
|
|
827
879
|
decodeSseStream(response.stream, sse.declaration, sse.decoder),
|
|
828
880
|
context as Context.Context<unknown>
|
|
829
881
|
))
|
|
882
|
+
if (!isWithHeaders) return toStream
|
|
883
|
+
|
|
884
|
+
const decodeHeaders = Schema.decodeUnknownEffect(successSchema.headers)
|
|
885
|
+
return (response: HttpClientResponse.HttpClientResponse) =>
|
|
886
|
+
Effect.flatMap(
|
|
887
|
+
decodeHeaders(response.headers),
|
|
888
|
+
(headers) => Effect.map(toStream(response), (body) => HttpApiSchema.withHeaders({ body, headers }))
|
|
889
|
+
)
|
|
830
890
|
}
|
|
831
891
|
|
|
832
892
|
function makeSseDecoder(
|
|
@@ -940,31 +1000,34 @@ function toCodecArrayBuffer(schemas: readonly [Schema.Constraint, ...Array<Schem
|
|
|
940
1000
|
return Schema.Union(schemas.map(onSchema))
|
|
941
1001
|
|
|
942
1002
|
function onSchema(schema: Schema.Constraint) {
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
1003
|
+
return fromArrayBuffer(schema).pipe(Schema.decodeTo(schema))
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
function fromArrayBuffer(schema: Schema.Constraint): Schema.Top {
|
|
1008
|
+
const encoding = HttpApiSchema.getResponseEncoding(schema.ast)
|
|
1009
|
+
switch (encoding._tag) {
|
|
1010
|
+
case "Json": {
|
|
1011
|
+
// handle json codecs that transform void schemas to null
|
|
1012
|
+
const encodedIsNull = SchemaAST.isNull(SchemaAST.toEncoded(schema.ast))
|
|
1013
|
+
return encodedIsNull
|
|
1014
|
+
? UnknownFromArrayBuffer.pipe(
|
|
1015
|
+
Schema.decodeTo(
|
|
1016
|
+
Schema.Unknown,
|
|
951
1017
|
SchemaTransformation.transform({
|
|
952
1018
|
decode: (a) => a === undefined ? null : a,
|
|
953
1019
|
encode: (a) => a === null ? undefined : a
|
|
954
|
-
}) as any
|
|
955
|
-
|
|
956
|
-
))
|
|
957
|
-
}
|
|
958
|
-
case "FormUrlEncoded":
|
|
959
|
-
return StringFromArrayBuffer.pipe(
|
|
960
|
-
Schema.decodeTo(UrlParams.schemaRecord),
|
|
961
|
-
Schema.decodeTo(schema)
|
|
1020
|
+
}) as any
|
|
1021
|
+
)
|
|
962
1022
|
)
|
|
963
|
-
|
|
964
|
-
return Uint8ArrayFromArrayBuffer.pipe(Schema.decodeTo(schema))
|
|
965
|
-
case "Text":
|
|
966
|
-
return StringFromArrayBuffer.pipe(Schema.decodeTo(schema))
|
|
1023
|
+
: UnknownFromArrayBuffer
|
|
967
1024
|
}
|
|
1025
|
+
case "FormUrlEncoded":
|
|
1026
|
+
return StringFromArrayBuffer.pipe(Schema.decodeTo(UrlParams.schemaRecord))
|
|
1027
|
+
case "Uint8Array":
|
|
1028
|
+
return Uint8ArrayFromArrayBuffer
|
|
1029
|
+
case "Text":
|
|
1030
|
+
return StringFromArrayBuffer
|
|
968
1031
|
}
|
|
969
1032
|
}
|
|
970
1033
|
|
|
@@ -1002,41 +1065,59 @@ function getEncodePayloadSchemaFromBody(
|
|
|
1002
1065
|
const out = $HttpBody.pipe(Schema.decodeTo(
|
|
1003
1066
|
schema,
|
|
1004
1067
|
SchemaTransformation.transformOrFail<unknown, HttpBody.HttpBody>({
|
|
1005
|
-
decode() {
|
|
1006
|
-
return Effect.fail(
|
|
1068
|
+
decode(input, options) {
|
|
1069
|
+
return Effect.fail(
|
|
1070
|
+
new SchemaIssue.Forbidden({ message: "Encode only schema" }, input, options)
|
|
1071
|
+
)
|
|
1007
1072
|
},
|
|
1008
|
-
encode(t) {
|
|
1073
|
+
encode(t, options) {
|
|
1009
1074
|
switch (encoding._tag) {
|
|
1010
1075
|
case "Multipart":
|
|
1011
|
-
return Effect.fail(
|
|
1076
|
+
return Effect.fail(
|
|
1077
|
+
new SchemaIssue.Forbidden(
|
|
1078
|
+
{ message: "Payload must be a FormData" },
|
|
1079
|
+
t,
|
|
1080
|
+
options
|
|
1081
|
+
)
|
|
1082
|
+
)
|
|
1012
1083
|
case "Json": {
|
|
1013
1084
|
try {
|
|
1014
1085
|
const body = JSON.stringify(t)
|
|
1015
1086
|
return Effect.succeed(HttpBody.text(body, encoding.contentType))
|
|
1016
1087
|
} catch {
|
|
1017
1088
|
return Effect.fail(
|
|
1018
|
-
new SchemaIssue.InvalidValue(
|
|
1089
|
+
new SchemaIssue.InvalidValue(
|
|
1090
|
+
{ expected: "a JSON-serializable request body" },
|
|
1091
|
+
t,
|
|
1092
|
+
options
|
|
1093
|
+
)
|
|
1019
1094
|
)
|
|
1020
1095
|
}
|
|
1021
1096
|
}
|
|
1022
1097
|
case "Text": {
|
|
1023
1098
|
if (typeof t !== "string") {
|
|
1024
1099
|
return Effect.fail(
|
|
1025
|
-
new SchemaIssue.InvalidValue({ message: "Expected a string" })
|
|
1100
|
+
new SchemaIssue.InvalidValue({ message: "Expected a string" }, t, options)
|
|
1026
1101
|
)
|
|
1027
1102
|
}
|
|
1028
1103
|
return Effect.succeed(HttpBody.text(t, encoding.contentType))
|
|
1029
1104
|
}
|
|
1030
1105
|
case "FormUrlEncoded": {
|
|
1031
1106
|
if (!Predicate.isObject(t)) {
|
|
1032
|
-
return Effect.fail(
|
|
1107
|
+
return Effect.fail(
|
|
1108
|
+
new SchemaIssue.InvalidValue({ message: "Expected a record" }, t, options)
|
|
1109
|
+
)
|
|
1033
1110
|
}
|
|
1034
1111
|
return Effect.succeed(HttpBody.urlParams(UrlParams.fromInput(t as any), encoding.contentType))
|
|
1035
1112
|
}
|
|
1036
1113
|
case "Uint8Array": {
|
|
1037
1114
|
if (!(t instanceof Uint8Array)) {
|
|
1038
1115
|
return Effect.fail(
|
|
1039
|
-
new SchemaIssue.InvalidValue(
|
|
1116
|
+
new SchemaIssue.InvalidValue(
|
|
1117
|
+
{ message: "Expected a Uint8Array" },
|
|
1118
|
+
t,
|
|
1119
|
+
options
|
|
1120
|
+
)
|
|
1040
1121
|
)
|
|
1041
1122
|
}
|
|
1042
1123
|
return Effect.succeed(HttpBody.uint8Array(t, encoding.contentType))
|