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
package/src/SchemaParser.ts
CHANGED
|
@@ -18,41 +18,11 @@ import { effectIsExit } from "./internal/effect.ts"
|
|
|
18
18
|
import * as InternalSchemaCause from "./internal/schema/cause.ts"
|
|
19
19
|
import * as InternalParser from "./internal/schema/parser.ts"
|
|
20
20
|
import * as Option from "./Option.ts"
|
|
21
|
-
import * as Predicate from "./Predicate.ts"
|
|
22
21
|
import * as Result from "./Result.ts"
|
|
23
22
|
import type * as Schema from "./Schema.ts"
|
|
24
23
|
import * as SchemaAST from "./SchemaAST.ts"
|
|
25
24
|
import * as SchemaIssue from "./SchemaIssue.ts"
|
|
26
25
|
|
|
27
|
-
// Converts a type-side AST into its constructor form by recursively restoring
|
|
28
|
-
// constructor encodings for nested classes and fields with constructor defaults.
|
|
29
|
-
const toConstructorAST = memoize((ast: SchemaAST.AST): SchemaAST.AST => {
|
|
30
|
-
switch (ast._tag) {
|
|
31
|
-
case "Declaration": {
|
|
32
|
-
const getLink = ast.annotations?.[SchemaAST.ClassTypeId]
|
|
33
|
-
if (Predicate.isFunction(getLink)) {
|
|
34
|
-
const link = getLink(ast.typeParameters)
|
|
35
|
-
return SchemaAST.replaceEncoding(ast, [SchemaAST.mapLink(link, toConstructorAST)])
|
|
36
|
-
}
|
|
37
|
-
return ast
|
|
38
|
-
}
|
|
39
|
-
case "Objects":
|
|
40
|
-
case "Arrays":
|
|
41
|
-
return ast.recur((ast) => {
|
|
42
|
-
const defaultValue = ast.context?.defaultValue
|
|
43
|
-
if (defaultValue) {
|
|
44
|
-
const out = toConstructorAST(ast)
|
|
45
|
-
return SchemaAST.replaceEncoding(out, out.encoding ? [...out.encoding, ...defaultValue] : defaultValue)
|
|
46
|
-
}
|
|
47
|
-
return toConstructorAST(ast)
|
|
48
|
-
})
|
|
49
|
-
case "Suspend":
|
|
50
|
-
return ast.recur(toConstructorAST)
|
|
51
|
-
default:
|
|
52
|
-
return ast
|
|
53
|
-
}
|
|
54
|
-
})
|
|
55
|
-
|
|
56
26
|
/**
|
|
57
27
|
* Creates an effectful maker for the schema's decoded type side.
|
|
58
28
|
*
|
|
@@ -71,8 +41,7 @@ const toConstructorAST = memoize((ast: SchemaAST.AST): SchemaAST.AST => {
|
|
|
71
41
|
* @since 4.0.0
|
|
72
42
|
*/
|
|
73
43
|
export function makeEffect<S extends Schema.Constraint>(schema: S) {
|
|
74
|
-
const
|
|
75
|
-
const parser = run<S["Type"], never>(ast)
|
|
44
|
+
const parser = runWithCompiler<S["Type"], never>(constructorCompiler, SchemaAST.toType(schema.ast))
|
|
76
45
|
return (input: S["~type.make.in"], options?: Schema.MakeOptions): Effect.Effect<S["Type"], SchemaIssue.Issue> => {
|
|
77
46
|
return parser(
|
|
78
47
|
input,
|
|
@@ -125,6 +94,9 @@ export function makeOption<S extends Schema.Constraint>(schema: S) {
|
|
|
125
94
|
*
|
|
126
95
|
* The returned function constructs a value from constructor input and throws an
|
|
127
96
|
* `Error` with the `SchemaIssue.Issue` in its `cause` when construction fails.
|
|
97
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
98
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
99
|
+
* human-readable details are needed.
|
|
128
100
|
*
|
|
129
101
|
* **Gotchas**
|
|
130
102
|
*
|
|
@@ -146,7 +118,7 @@ export function make<S extends Schema.Constraint>(schema: S) {
|
|
|
146
118
|
exit.cause,
|
|
147
119
|
"Constructor adapter can only throw schema issues"
|
|
148
120
|
)
|
|
149
|
-
throw new Error(
|
|
121
|
+
throw new Error("Schema validation failed", { cause: issue })
|
|
150
122
|
}
|
|
151
123
|
}
|
|
152
124
|
|
|
@@ -215,6 +187,9 @@ export function _issue<T>(ast: SchemaAST.AST) {
|
|
|
215
187
|
* The assertion returns normally when validation succeeds. When the input does
|
|
216
188
|
* not satisfy the schema with a schema-only failure, it throws an `Error` with
|
|
217
189
|
* the `SchemaIssue.Issue` in its `cause`.
|
|
190
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
191
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
192
|
+
* human-readable details are needed.
|
|
218
193
|
*
|
|
219
194
|
* **Gotchas**
|
|
220
195
|
*
|
|
@@ -233,7 +208,7 @@ export function asserts<S extends Schema.Constraint, I>(schema: S, input: I): as
|
|
|
233
208
|
exit.cause,
|
|
234
209
|
"Assertion adapter can only throw schema issues"
|
|
235
210
|
)
|
|
236
|
-
throw new Error(
|
|
211
|
+
throw new Error("Schema validation failed", { cause: issue })
|
|
237
212
|
}
|
|
238
213
|
}
|
|
239
214
|
|
|
@@ -313,6 +288,9 @@ export const decodeEffect: <S extends Schema.Constraint>(
|
|
|
313
288
|
*
|
|
314
289
|
* The returned function resolves with the decoded `Type` on success and rejects
|
|
315
290
|
* with an `Error` whose cause is a `SchemaIssue.Issue` on decoding failure.
|
|
291
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
292
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
293
|
+
* human-readable details are needed.
|
|
316
294
|
*
|
|
317
295
|
* **Gotchas**
|
|
318
296
|
*
|
|
@@ -345,6 +323,9 @@ export function decodeUnknownPromise<S extends Schema.ConstraintDecoder<unknown>
|
|
|
345
323
|
*
|
|
346
324
|
* The returned function resolves with the decoded `Type` on success and rejects
|
|
347
325
|
* with an `Error` whose cause is a `SchemaIssue.Issue` on decoding failure.
|
|
326
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
327
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
328
|
+
* human-readable details are needed.
|
|
348
329
|
*
|
|
349
330
|
* **Gotchas**
|
|
350
331
|
*
|
|
@@ -523,6 +504,9 @@ export const decodeResult: <S extends Schema.ConstraintDecoder<unknown>>(
|
|
|
523
504
|
*
|
|
524
505
|
* The returned function returns the decoded `Type` on success and throws an
|
|
525
506
|
* `Error` with the `SchemaIssue.Issue` in its `cause` on decoding failure.
|
|
507
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
508
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
509
|
+
* human-readable details are needed.
|
|
526
510
|
*
|
|
527
511
|
* **Gotchas**
|
|
528
512
|
*
|
|
@@ -557,6 +541,9 @@ export function decodeUnknownSync<S extends Schema.ConstraintDecoder<unknown>>(
|
|
|
557
541
|
*
|
|
558
542
|
* The returned function returns the decoded `Type` on success and throws an
|
|
559
543
|
* `Error` with the `SchemaIssue.Issue` in its `cause` on decoding failure.
|
|
544
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
545
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
546
|
+
* human-readable details are needed.
|
|
560
547
|
*
|
|
561
548
|
* **Gotchas**
|
|
562
549
|
*
|
|
@@ -651,6 +638,9 @@ export const encodeEffect: <S extends Schema.Constraint>(
|
|
|
651
638
|
*
|
|
652
639
|
* The returned function resolves with the schema's `Encoded` value on success and
|
|
653
640
|
* rejects with an `Error` whose cause is a `SchemaIssue.Issue` on encoding failure.
|
|
641
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
642
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
643
|
+
* human-readable details are needed.
|
|
654
644
|
*
|
|
655
645
|
* **Gotchas**
|
|
656
646
|
*
|
|
@@ -682,6 +672,9 @@ export const encodeUnknownPromise = <S extends Schema.ConstraintEncoder<unknown>
|
|
|
682
672
|
*
|
|
683
673
|
* The returned function resolves with the schema's `Encoded` value on success and
|
|
684
674
|
* rejects with an `Error` whose cause is a `SchemaIssue.Issue` on encoding failure.
|
|
675
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
676
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
677
|
+
* human-readable details are needed.
|
|
685
678
|
*
|
|
686
679
|
* **Gotchas**
|
|
687
680
|
*
|
|
@@ -857,6 +850,9 @@ export const encodeResult: <S extends Schema.ConstraintEncoder<unknown>>(
|
|
|
857
850
|
*
|
|
858
851
|
* The returned function returns the schema's `Encoded` value on success and throws
|
|
859
852
|
* an `Error` with the `SchemaIssue.Issue` in its `cause` on encoding failure.
|
|
853
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
854
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
855
|
+
* human-readable details are needed.
|
|
860
856
|
*
|
|
861
857
|
* **Gotchas**
|
|
862
858
|
*
|
|
@@ -890,6 +886,9 @@ export function encodeUnknownSync<S extends Schema.ConstraintEncoder<unknown>>(
|
|
|
890
886
|
*
|
|
891
887
|
* The returned function returns the schema's `Encoded` value on success and throws
|
|
892
888
|
* an `Error` with the `SchemaIssue.Issue` in its `cause` on encoding failure.
|
|
889
|
+
* Schema validation failures use the generic message `"Schema validation failed"`.
|
|
890
|
+
* Format the `cause` explicitly with `SchemaIssue.makeFormatterDefault()` when
|
|
891
|
+
* human-readable details are needed.
|
|
893
892
|
*
|
|
894
893
|
* **Gotchas**
|
|
895
894
|
*
|
|
@@ -923,9 +922,13 @@ const getValue = (value: unknown): Effect.Effect<any, SchemaIssue.Issue> => {
|
|
|
923
922
|
|
|
924
923
|
/** @internal */
|
|
925
924
|
export function run<T, R>(ast: SchemaAST.AST) {
|
|
925
|
+
return runWithCompiler<T, R>(normalCompiler, ast)
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
function runWithCompiler<T, R>(compiler: Compiler, ast: SchemaAST.AST) {
|
|
926
929
|
let parser: Parser
|
|
927
930
|
return (input: unknown, options?: SchemaAST.ParseOptions): Effect.Effect<T, SchemaIssue.Issue, R> => {
|
|
928
|
-
const result = (parser ??=
|
|
931
|
+
const result = (parser ??= compiler(ast))(
|
|
929
932
|
input,
|
|
930
933
|
options ?? SchemaAST.defaultParseOptions
|
|
931
934
|
)
|
|
@@ -954,7 +957,7 @@ function asPromise<T, E>(
|
|
|
954
957
|
exit.cause,
|
|
955
958
|
"Promise adapter can only reject schema issues"
|
|
956
959
|
)
|
|
957
|
-
throw new Error(
|
|
960
|
+
throw new Error("Schema validation failed", { cause: issue })
|
|
958
961
|
})
|
|
959
962
|
}
|
|
960
963
|
|
|
@@ -1004,7 +1007,7 @@ function asSync<T, E>(
|
|
|
1004
1007
|
return exit.value
|
|
1005
1008
|
}
|
|
1006
1009
|
const issue = InternalSchemaCause.getSchemaIssueOrThrow(exit.cause, "Sync adapter can only throw schema issues")
|
|
1007
|
-
throw new Error(
|
|
1010
|
+
throw new Error("Schema validation failed", { cause: issue })
|
|
1008
1011
|
}
|
|
1009
1012
|
}
|
|
1010
1013
|
|
|
@@ -1016,20 +1019,79 @@ export interface Parser {
|
|
|
1016
1019
|
): Effect.Effect<unknown, SchemaIssue.Issue, any>
|
|
1017
1020
|
}
|
|
1018
1021
|
|
|
1019
|
-
|
|
1022
|
+
/** @internal */
|
|
1023
|
+
export interface Compiler {
|
|
1024
|
+
(ast: SchemaAST.AST): Parser
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
const normalCompiler: Compiler = memoize((ast) => makeParser(ast, normalCompiler))
|
|
1028
|
+
const constructorCompiler: Compiler = memoize((ast) => makeParser(ast, constructorCompiler, compileConstructorDefault))
|
|
1029
|
+
const compileDefaulted = memoize((ast: SchemaAST.AST) =>
|
|
1030
|
+
makeParser(ast, constructorCompiler, compileConstructorDefault, ast.context?.constructorDefault)
|
|
1031
|
+
)
|
|
1032
|
+
|
|
1033
|
+
function compileConstructorDefault(ast: SchemaAST.AST): Parser {
|
|
1034
|
+
return ast.context?.constructorDefault ? compileDefaulted(ast) : constructorCompiler(ast)
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
function applyTransformation(
|
|
1038
|
+
result: Effect.Effect<unknown, SchemaIssue.Issue, unknown>,
|
|
1039
|
+
current: unknown,
|
|
1040
|
+
transformation: SchemaAST.Link["transformation"],
|
|
1041
|
+
options: SchemaAST.ParseOptions
|
|
1042
|
+
): Effect.Effect<unknown, SchemaIssue.Issue, unknown> {
|
|
1043
|
+
let transformed: Effect.Effect<Option.Option<unknown>, SchemaIssue.Issue, unknown>
|
|
1044
|
+
if (effectIsExit(result) && result._tag === "Success") {
|
|
1045
|
+
const optional = InternalParser.toOption(
|
|
1046
|
+
result === InternalParser.sameExit
|
|
1047
|
+
? current
|
|
1048
|
+
: (result as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
|
|
1049
|
+
)
|
|
1050
|
+
transformed = transformation._tag === "Transformation"
|
|
1051
|
+
? transformation.decode.run(optional, options)
|
|
1052
|
+
: transformation.decode(InternalParser.succeed(optional), options)
|
|
1053
|
+
} else if (transformation._tag === "Transformation") {
|
|
1054
|
+
transformed = Effect.flatMapEager(
|
|
1055
|
+
result,
|
|
1056
|
+
(value) => transformation.decode.run(InternalParser.toOption(value), options)
|
|
1057
|
+
)
|
|
1058
|
+
} else {
|
|
1059
|
+
transformed = transformation.decode(
|
|
1060
|
+
Effect.mapEager(result, InternalParser.toOption),
|
|
1061
|
+
options
|
|
1062
|
+
)
|
|
1063
|
+
}
|
|
1064
|
+
return effectIsExit(transformed) && transformed._tag === "Success"
|
|
1065
|
+
? InternalParser.fromOptionExit(
|
|
1066
|
+
(transformed as InternalParser.Success<Option.Option<unknown>, SchemaIssue.Issue>)[InternalParser.args]
|
|
1067
|
+
)
|
|
1068
|
+
: Effect.flatMapEager(transformed, InternalParser.fromOptionExit)
|
|
1069
|
+
}
|
|
1020
1070
|
|
|
1021
|
-
function
|
|
1022
|
-
let
|
|
1023
|
-
|
|
1024
|
-
|
|
1071
|
+
function makeConstructorParser(descriptor: SchemaAST.ConstructorDescriptor, compile: Compiler): Parser {
|
|
1072
|
+
let sourceParser: Parser
|
|
1073
|
+
return (input, options) => {
|
|
1074
|
+
if (input === InternalParser.missing) return InternalParser.missingExit
|
|
1075
|
+
if (descriptor.isConstructed(input)) return InternalParser.sameExit
|
|
1076
|
+
const result = (sourceParser ??= compile(descriptor.link.to))(input, options)
|
|
1077
|
+
return applyTransformation(result, input, descriptor.link.transformation, options)
|
|
1025
1078
|
}
|
|
1026
|
-
return parser
|
|
1027
1079
|
}
|
|
1028
1080
|
|
|
1029
|
-
function makeParser(
|
|
1030
|
-
|
|
1081
|
+
function makeParser(
|
|
1082
|
+
ast: SchemaAST.AST,
|
|
1083
|
+
compile: Compiler,
|
|
1084
|
+
compileConstructorDefault?: Compiler,
|
|
1085
|
+
constructorDefault?: SchemaAST.Link
|
|
1086
|
+
): Parser {
|
|
1087
|
+
const descriptor = compileConstructorDefault ? SchemaAST.getConstructorDescriptor(ast) : undefined
|
|
1088
|
+
const parser = descriptor
|
|
1089
|
+
? makeConstructorParser(descriptor, compile)
|
|
1090
|
+
: ast.getParser(compile, compileConstructorDefault)
|
|
1031
1091
|
const checks = ast.checks
|
|
1032
|
-
const links =
|
|
1092
|
+
const links = constructorDefault
|
|
1093
|
+
? ast.encoding ? [...ast.encoding, constructorDefault] : [constructorDefault]
|
|
1094
|
+
: ast.encoding
|
|
1033
1095
|
const encodingChecks = (ast as any).encodingChecks
|
|
1034
1096
|
const astOptions = (checks ? checks[checks.length - 1].annotations : ast.annotations)
|
|
1035
1097
|
?.["parseOptions"]
|
|
@@ -1054,9 +1116,7 @@ function makeParser(ast: SchemaAST.AST): Parser {
|
|
|
1054
1116
|
if (input !== InternalParser.missing && output !== InternalParser.missing) {
|
|
1055
1117
|
const issues = SchemaAST.collectIssues(encodingChecks, input, undefined, ast, options)
|
|
1056
1118
|
if (issues) {
|
|
1057
|
-
result = Effect.fail(
|
|
1058
|
-
new SchemaIssue.Composite(ast, issues)
|
|
1059
|
-
)
|
|
1119
|
+
result = Effect.fail(new SchemaIssue.Composite(ast, issues, input, options))
|
|
1060
1120
|
}
|
|
1061
1121
|
}
|
|
1062
1122
|
}
|
|
@@ -1065,9 +1125,7 @@ function makeParser(ast: SchemaAST.AST): Parser {
|
|
|
1065
1125
|
if (input !== InternalParser.missing && value !== InternalParser.missing) {
|
|
1066
1126
|
const issues = SchemaAST.collectIssues(encodingChecks, input, undefined, ast, options)
|
|
1067
1127
|
if (issues) {
|
|
1068
|
-
return Effect.fail(
|
|
1069
|
-
new SchemaIssue.Composite(ast, issues)
|
|
1070
|
-
)
|
|
1128
|
+
return Effect.fail(new SchemaIssue.Composite(ast, issues, input, options))
|
|
1071
1129
|
}
|
|
1072
1130
|
}
|
|
1073
1131
|
return Effect.succeed(value)
|
|
@@ -1084,9 +1142,7 @@ function makeParser(ast: SchemaAST.AST): Parser {
|
|
|
1084
1142
|
if (value === InternalParser.missing) return result
|
|
1085
1143
|
const issues = SchemaAST.collectIssues(checks, value, undefined, ast, options)
|
|
1086
1144
|
if (issues) {
|
|
1087
|
-
result = Effect.fail(
|
|
1088
|
-
new SchemaIssue.Composite(ast, issues)
|
|
1089
|
-
)
|
|
1145
|
+
result = Effect.fail(new SchemaIssue.Composite(ast, issues, value, options))
|
|
1090
1146
|
}
|
|
1091
1147
|
}
|
|
1092
1148
|
} else {
|
|
@@ -1094,9 +1150,7 @@ function makeParser(ast: SchemaAST.AST): Parser {
|
|
|
1094
1150
|
if (value !== InternalParser.missing) {
|
|
1095
1151
|
const issues = SchemaAST.collectIssues(checks, value, undefined, ast, options)
|
|
1096
1152
|
if (issues) {
|
|
1097
|
-
return Effect.fail(
|
|
1098
|
-
new SchemaIssue.Composite(ast, issues)
|
|
1099
|
-
)
|
|
1153
|
+
return Effect.fail(new SchemaIssue.Composite(ast, issues, value, options))
|
|
1100
1154
|
}
|
|
1101
1155
|
}
|
|
1102
1156
|
return Effect.succeed(value)
|
|
@@ -1122,33 +1176,7 @@ function makeParser(ast: SchemaAST.AST): Parser {
|
|
|
1122
1176
|
let current = input
|
|
1123
1177
|
let result = parsers[parsers.length - 1](input, options)
|
|
1124
1178
|
for (let i = links.length - 1; i >= 0; i--) {
|
|
1125
|
-
|
|
1126
|
-
let transformed: Effect.Effect<Option.Option<unknown>, SchemaIssue.Issue, unknown>
|
|
1127
|
-
if (effectIsExit(result) && result._tag === "Success") {
|
|
1128
|
-
const optional = InternalParser.toOption(
|
|
1129
|
-
result === InternalParser.sameExit
|
|
1130
|
-
? current
|
|
1131
|
-
: (result as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
|
|
1132
|
-
)
|
|
1133
|
-
transformed = transformation._tag === "Transformation"
|
|
1134
|
-
? transformation.decode.run(optional, options)
|
|
1135
|
-
: transformation.decode(InternalParser.succeed(optional), options)
|
|
1136
|
-
} else if (transformation._tag === "Transformation") {
|
|
1137
|
-
transformed = Effect.flatMapEager(
|
|
1138
|
-
result,
|
|
1139
|
-
(value) => transformation.decode.run(InternalParser.toOption(value), options)
|
|
1140
|
-
)
|
|
1141
|
-
} else {
|
|
1142
|
-
transformed = transformation.decode(
|
|
1143
|
-
Effect.mapEager(result, InternalParser.toOption),
|
|
1144
|
-
options
|
|
1145
|
-
)
|
|
1146
|
-
}
|
|
1147
|
-
result = effectIsExit(transformed) && transformed._tag === "Success"
|
|
1148
|
-
? InternalParser.fromOptionExit(
|
|
1149
|
-
(transformed as InternalParser.Success<Option.Option<unknown>, SchemaIssue.Issue>)[InternalParser.args]
|
|
1150
|
-
)
|
|
1151
|
-
: Effect.flatMapEager(transformed, InternalParser.fromOptionExit)
|
|
1179
|
+
result = applyTransformation(result, current, links[i].transformation, options)
|
|
1152
1180
|
if (i !== 0) {
|
|
1153
1181
|
const next = parsers[i - 1]
|
|
1154
1182
|
if ((result as Exit.Exit<unknown, unknown>)._tag === "Success") {
|
|
@@ -1169,7 +1197,19 @@ function makeParser(ast: SchemaAST.AST): Parser {
|
|
|
1169
1197
|
}
|
|
1170
1198
|
result = Effect.catchCause(
|
|
1171
1199
|
result,
|
|
1172
|
-
(cause) =>
|
|
1200
|
+
(cause) =>
|
|
1201
|
+
Effect.failCauseSync(() =>
|
|
1202
|
+
Cause.map(
|
|
1203
|
+
cause,
|
|
1204
|
+
(issue) =>
|
|
1205
|
+
new SchemaIssue.Encoding(
|
|
1206
|
+
ast,
|
|
1207
|
+
issue,
|
|
1208
|
+
input,
|
|
1209
|
+
options
|
|
1210
|
+
)
|
|
1211
|
+
)
|
|
1212
|
+
)
|
|
1173
1213
|
)
|
|
1174
1214
|
return Effect.flatMapEager(result, (value) => {
|
|
1175
1215
|
const local = parseLocal(value, options)
|
|
@@ -263,10 +263,10 @@ export const make = <T, E, RD = never, RE = never>(options: {
|
|
|
263
263
|
* Schema.decodeTo(
|
|
264
264
|
* Schema.Date,
|
|
265
265
|
* SchemaTransformation.transformOrFail({
|
|
266
|
-
* decode: (s) => {
|
|
266
|
+
* decode: (s, options) => {
|
|
267
267
|
* const d = new Date(s)
|
|
268
268
|
* return isNaN(d.getTime())
|
|
269
|
-
* ? Effect.fail(new SchemaIssue.InvalidValue({ message: "Invalid date" }))
|
|
269
|
+
* ? Effect.fail(new SchemaIssue.InvalidValue({ message: "Invalid date" }, s, options))
|
|
270
270
|
* : Effect.succeed(d)
|
|
271
271
|
* },
|
|
272
272
|
* encode: (d) => Effect.succeed(d.toISOString())
|
|
@@ -974,9 +974,16 @@ export const durationFromString: Transformation<Duration.Duration, string> = tra
|
|
|
974
974
|
Duration.Duration,
|
|
975
975
|
string
|
|
976
976
|
>({
|
|
977
|
-
decode: (s) =>
|
|
977
|
+
decode: (s, options) =>
|
|
978
978
|
Option.match(Duration.fromInput(s as Duration.Input), {
|
|
979
|
-
onNone: () =>
|
|
979
|
+
onNone: () =>
|
|
980
|
+
Effect.fail(
|
|
981
|
+
new SchemaIssue.InvalidValue(
|
|
982
|
+
{ expected: "a valid Duration string" },
|
|
983
|
+
s,
|
|
984
|
+
options
|
|
985
|
+
)
|
|
986
|
+
),
|
|
980
987
|
onSome: Effect.succeed
|
|
981
988
|
}),
|
|
982
989
|
encode: (duration) => Effect.succeed(globalThis.String(duration))
|
|
@@ -1015,11 +1022,15 @@ export const durationFromString: Transformation<Duration.Duration, string> = tra
|
|
|
1015
1022
|
*/
|
|
1016
1023
|
export const durationFromNanos: Transformation<Duration.Duration, bigint> = transformOrFail({
|
|
1017
1024
|
decode: (i) => Effect.succeed(Duration.nanos(i)),
|
|
1018
|
-
encode: (a) =>
|
|
1025
|
+
encode: (a, options) =>
|
|
1019
1026
|
Option.match(Duration.toNanos(a), {
|
|
1020
1027
|
onNone: () =>
|
|
1021
1028
|
Effect.fail(
|
|
1022
|
-
new SchemaIssue.InvalidValue(
|
|
1029
|
+
new SchemaIssue.InvalidValue(
|
|
1030
|
+
{ expected: "a Duration representable as a bigint" },
|
|
1031
|
+
a,
|
|
1032
|
+
options
|
|
1033
|
+
)
|
|
1023
1034
|
),
|
|
1024
1035
|
onSome: (nanos) => Effect.succeed(nanos)
|
|
1025
1036
|
})
|
|
@@ -1395,10 +1406,16 @@ export function optionFromOptional<T>(): Transformation<Option.Option<T>, T | un
|
|
|
1395
1406
|
* @since 4.0.0
|
|
1396
1407
|
*/
|
|
1397
1408
|
export const urlFromString: Transformation<URL, string> = transformOrFail<URL, string>({
|
|
1398
|
-
decode: (s) =>
|
|
1409
|
+
decode: (s, options) =>
|
|
1399
1410
|
URL.canParse(s)
|
|
1400
1411
|
? Effect.succeed(new URL(s))
|
|
1401
|
-
: Effect.fail(
|
|
1412
|
+
: Effect.fail(
|
|
1413
|
+
new SchemaIssue.InvalidValue(
|
|
1414
|
+
{ expected: "a valid URL string" },
|
|
1415
|
+
s,
|
|
1416
|
+
options
|
|
1417
|
+
)
|
|
1418
|
+
),
|
|
1402
1419
|
encode: (url) => Effect.succeed(url.href)
|
|
1403
1420
|
})
|
|
1404
1421
|
|
|
@@ -1424,10 +1441,16 @@ export const bigDecimalFromString: Transformation<BigDecimal.BigDecimal, string>
|
|
|
1424
1441
|
BigDecimal.BigDecimal,
|
|
1425
1442
|
string
|
|
1426
1443
|
>({
|
|
1427
|
-
decode: (s) => {
|
|
1444
|
+
decode: (s, options) => {
|
|
1428
1445
|
const result = BigDecimal.fromString(s)
|
|
1429
1446
|
return Option.isNone(result)
|
|
1430
|
-
? Effect.fail(
|
|
1447
|
+
? Effect.fail(
|
|
1448
|
+
new SchemaIssue.InvalidValue(
|
|
1449
|
+
{ expected: "a valid BigDecimal string" },
|
|
1450
|
+
s,
|
|
1451
|
+
options
|
|
1452
|
+
)
|
|
1453
|
+
)
|
|
1431
1454
|
: Effect.succeed(result.value)
|
|
1432
1455
|
},
|
|
1433
1456
|
encode: (bd) => Effect.succeed(BigDecimal.format(bd))
|
|
@@ -1784,9 +1807,16 @@ export const timeZoneNamedFromString: Transformation<DateTime.TimeZone.Named, st
|
|
|
1784
1807
|
DateTime.TimeZone.Named,
|
|
1785
1808
|
string
|
|
1786
1809
|
>({
|
|
1787
|
-
decode: (s) => {
|
|
1810
|
+
decode: (s, options) => {
|
|
1788
1811
|
return Option.match(DateTime.zoneMakeNamed(s), {
|
|
1789
|
-
onNone: () =>
|
|
1812
|
+
onNone: () =>
|
|
1813
|
+
Effect.fail(
|
|
1814
|
+
new SchemaIssue.InvalidValue(
|
|
1815
|
+
{ expected: "a valid IANA time zone" },
|
|
1816
|
+
s,
|
|
1817
|
+
options
|
|
1818
|
+
)
|
|
1819
|
+
),
|
|
1790
1820
|
onSome: Effect.succeed
|
|
1791
1821
|
})
|
|
1792
1822
|
},
|
|
@@ -1818,9 +1848,16 @@ export const timeZoneFromString: Transformation<DateTime.TimeZone, string> = tra
|
|
|
1818
1848
|
DateTime.TimeZone,
|
|
1819
1849
|
string
|
|
1820
1850
|
>({
|
|
1821
|
-
decode: (s) => {
|
|
1851
|
+
decode: (s, options) => {
|
|
1822
1852
|
return Option.match(DateTime.zoneFromString(s), {
|
|
1823
|
-
onNone: () =>
|
|
1853
|
+
onNone: () =>
|
|
1854
|
+
Effect.fail(
|
|
1855
|
+
new SchemaIssue.InvalidValue(
|
|
1856
|
+
{ expected: "a valid time zone" },
|
|
1857
|
+
s,
|
|
1858
|
+
options
|
|
1859
|
+
)
|
|
1860
|
+
),
|
|
1824
1861
|
onSome: Effect.succeed
|
|
1825
1862
|
})
|
|
1826
1863
|
},
|
|
@@ -1852,9 +1889,16 @@ export const dateTimeUtcFromString: Transformation<DateTime.Utc, string> = trans
|
|
|
1852
1889
|
DateTime.Utc,
|
|
1853
1890
|
string
|
|
1854
1891
|
>({
|
|
1855
|
-
decode: (s) => {
|
|
1892
|
+
decode: (s, options) => {
|
|
1856
1893
|
return Option.match(DateTime.make(s), {
|
|
1857
|
-
onNone: () =>
|
|
1894
|
+
onNone: () =>
|
|
1895
|
+
Effect.fail(
|
|
1896
|
+
new SchemaIssue.InvalidValue(
|
|
1897
|
+
{ expected: "a valid UTC DateTime string" },
|
|
1898
|
+
s,
|
|
1899
|
+
options
|
|
1900
|
+
)
|
|
1901
|
+
),
|
|
1858
1902
|
onSome: (result) => Effect.succeed(DateTime.toUtc(result))
|
|
1859
1903
|
})
|
|
1860
1904
|
},
|
|
@@ -1885,11 +1929,15 @@ export const dateTimeZonedFromString: Transformation<DateTime.Zoned, string> = t
|
|
|
1885
1929
|
DateTime.Zoned,
|
|
1886
1930
|
string
|
|
1887
1931
|
>({
|
|
1888
|
-
decode: (s) => {
|
|
1932
|
+
decode: (s, options) => {
|
|
1889
1933
|
return Option.match(DateTime.makeZonedFromString(s), {
|
|
1890
1934
|
onNone: () =>
|
|
1891
1935
|
Effect.fail(
|
|
1892
|
-
new SchemaIssue.InvalidValue(
|
|
1936
|
+
new SchemaIssue.InvalidValue(
|
|
1937
|
+
{ expected: "a valid Zoned DateTime string" },
|
|
1938
|
+
s,
|
|
1939
|
+
options
|
|
1940
|
+
)
|
|
1893
1941
|
),
|
|
1894
1942
|
onSome: Effect.succeed
|
|
1895
1943
|
})
|
package/src/ScopedCache.ts
CHANGED
|
@@ -211,7 +211,7 @@ export const make = <
|
|
|
211
211
|
> =>
|
|
212
212
|
makeWith<Key, A, E, R, ServiceMode>({
|
|
213
213
|
...options,
|
|
214
|
-
timeToLive: options.timeToLive ? () => options.timeToLive! : defaultTimeToLive
|
|
214
|
+
timeToLive: options.timeToLive !== undefined ? () => options.timeToLive! : defaultTimeToLive
|
|
215
215
|
})
|
|
216
216
|
|
|
217
217
|
const Proto = {
|
package/src/Sink.ts
CHANGED
|
@@ -2529,7 +2529,7 @@ export const catchCause: {
|
|
|
2529
2529
|
const catch_: {
|
|
2530
2530
|
<E, A2, E2, R2>(
|
|
2531
2531
|
f: (error: Types.NoInfer<E>) => Effect.Effect<A2, E2, R2>
|
|
2532
|
-
): <A, In, L, R>(self: Sink<A, In, L, E, R>) => Sink<A2 | A, In, L,
|
|
2532
|
+
): <A, In, L, R>(self: Sink<A, In, L, E, R>) => Sink<A2 | A, In, L, E2, R2 | R>
|
|
2533
2533
|
<A, In, L, E, R, A2, E2, R2>(
|
|
2534
2534
|
self: Sink<A, In, L, E, R>,
|
|
2535
2535
|
f: (error: E) => Effect.Effect<A2, E2, R2>
|
package/src/Stdio.ts
CHANGED
|
@@ -63,6 +63,18 @@ export const TypeId: TypeId = "~effect/Stdio"
|
|
|
63
63
|
export interface Stdio {
|
|
64
64
|
readonly [TypeId]: TypeId
|
|
65
65
|
readonly args: Effect.Effect<ReadonlyArray<string>>
|
|
66
|
+
/**
|
|
67
|
+
* Whether standard input is attached to a terminal.
|
|
68
|
+
*
|
|
69
|
+
* @since 4.0.0
|
|
70
|
+
*/
|
|
71
|
+
readonly stdinIsTerminal: Effect.Effect<boolean>
|
|
72
|
+
/**
|
|
73
|
+
* Whether standard output is attached to a terminal.
|
|
74
|
+
*
|
|
75
|
+
* @since 4.0.0
|
|
76
|
+
*/
|
|
77
|
+
readonly stdoutIsTerminal: Effect.Effect<boolean>
|
|
66
78
|
stdout(options?: {
|
|
67
79
|
readonly endOnDone?: boolean | undefined
|
|
68
80
|
}): Sink.Sink<void, string | Uint8Array, never, PlatformError>
|
|
@@ -98,16 +110,23 @@ export const Stdio: Context.Service<Stdio, Stdio> = Context.Service<Stdio>(TypeI
|
|
|
98
110
|
*
|
|
99
111
|
* **Details**
|
|
100
112
|
*
|
|
101
|
-
* The returned service reuses the supplied fields unchanged and
|
|
102
|
-
* `Stdio` type identifier
|
|
113
|
+
* The returned service reuses the supplied fields unchanged and adds the
|
|
114
|
+
* `Stdio` type identifier. Omitted terminal-detection fields default to
|
|
115
|
+
* effects that succeed with `false`.
|
|
103
116
|
*
|
|
104
117
|
* @see {@link layerTest} for a test layer with default fields that can be overridden
|
|
105
118
|
*
|
|
106
119
|
* @category constructors
|
|
107
120
|
* @since 4.0.0
|
|
108
121
|
*/
|
|
109
|
-
export const make = (
|
|
122
|
+
export const make = (
|
|
123
|
+
options:
|
|
124
|
+
& Omit<Stdio, TypeId | "stdinIsTerminal" | "stdoutIsTerminal">
|
|
125
|
+
& Partial<Pick<Stdio, "stdinIsTerminal" | "stdoutIsTerminal">>
|
|
126
|
+
): Stdio => ({
|
|
110
127
|
[TypeId]: TypeId,
|
|
128
|
+
stdinIsTerminal: Effect.succeed(false),
|
|
129
|
+
stdoutIsTerminal: Effect.succeed(false),
|
|
111
130
|
...options
|
|
112
131
|
})
|
|
113
132
|
|
|
@@ -123,7 +142,7 @@ export const make = (options: Omit<Stdio, TypeId>): Stdio => ({
|
|
|
123
142
|
*
|
|
124
143
|
* Any provided fields override defaults. By default, arguments are empty,
|
|
125
144
|
* standard output and error are draining sinks, and standard input is an empty
|
|
126
|
-
* stream
|
|
145
|
+
* stream, and terminal-detection effects succeed with `false`.
|
|
127
146
|
*
|
|
128
147
|
* @see {@link make} for constructing a `Stdio` service directly without a `Layer` or defaults
|
|
129
148
|
*
|