effect 4.0.6 → 4.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Arbitrary.d.ts +10 -2
- package/dist/Arbitrary.d.ts.map +1 -1
- package/dist/Arbitrary.js +2 -1
- package/dist/Arbitrary.js.map +1 -1
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +21 -6
- package/dist/Channel.js.map +1 -1
- package/dist/Data.d.ts +54 -235
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js.map +1 -1
- package/dist/Effect.d.ts +1 -1
- package/dist/Effect.js +1 -1
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +8 -1
- package/dist/Equal.js.map +1 -1
- package/dist/Exit.d.ts +3 -3
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js.map +1 -1
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +27 -13
- package/dist/Formatter.js.map +1 -1
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +4 -1
- package/dist/Hash.js.map +1 -1
- package/dist/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +13 -40
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Metric.d.ts +3 -3
- package/dist/MutableList.d.ts +5 -2
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +7 -5
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +7 -0
- package/dist/MutableRef.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts +2 -1
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +22 -12
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +77 -27
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +5 -6
- package/dist/PubSub.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +8 -0
- package/dist/Ref.js.map +1 -1
- package/dist/Schedule.js +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +24 -8
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +37 -28
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +4 -2
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +14 -17
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +48 -22
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +19 -10
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +23 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +4 -1
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +9 -2
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +54 -35
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +7 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +22 -10
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +3 -0
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +3 -0
- package/dist/String.js.map +1 -1
- package/dist/Tracer.d.ts +11 -1
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +6 -1
- package/dist/Tracer.js.map +1 -1
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +9 -0
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +110 -110
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +21 -15
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +52 -0
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +38 -0
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +16 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +4 -0
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +24 -0
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -2
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +8 -1
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/cli/Argument.d.ts +15 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +5 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliError.d.ts +78 -0
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +65 -3
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +155 -6
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +62 -6
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +24 -16
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +59 -29
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +58 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +49 -9
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +15 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +5 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +15 -7
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +9 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +21 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +3 -2
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
- package/dist/cli/TerminalCapabilities.js +3 -1
- package/dist/cli/TerminalCapabilities.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +73 -27
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +45 -10
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +23 -45
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +6 -7
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +61 -21
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +10 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/Snowflake.d.ts.map +1 -1
- package/dist/cluster/Snowflake.js +3 -7
- package/dist/cluster/Snowflake.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +87 -39
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +54 -20
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +2 -0
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64.js +36 -0
- package/dist/encoding/Base64.js.map +1 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +3 -3
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +21 -16
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +47 -27
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +0 -1
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
- package/dist/eventlog/internal/conflicts.js +0 -3
- package/dist/eventlog/internal/conflicts.js.map +1 -1
- package/dist/http/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +10 -9
- package/dist/http/Cookies.js.map +1 -1
- package/dist/http/HttpClient.d.ts +423 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +231 -7
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts +8 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +37 -1
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +1 -1
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +1 -1
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +14 -16
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +2 -1
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.js +2 -2
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +6 -1
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +73 -10
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +48 -21
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +3 -3
- package/dist/http/UrlParams.d.ts +3 -1
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +4 -2
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/internal/compression.js +4 -5
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/decompression.js +3 -0
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/httpBody.js +8 -1
- package/dist/http/internal/httpBody.js.map +1 -1
- package/dist/http/internal/urlParams.js +25 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http-api/HttpApi.d.ts +3 -6
- package/dist/http-api/HttpApi.d.ts.map +1 -1
- package/dist/http-api/HttpApi.js +3 -6
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +27 -11
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +77 -7
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +142 -44
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +109 -27
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +76 -29
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +70 -59
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +3 -2
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +25 -16
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
- package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
- package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
- package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
- package/dist/internal/arbitrary/runner.d.ts.map +1 -1
- package/dist/internal/arbitrary/runner.js +120 -44
- package/dist/internal/arbitrary/runner.js.map +1 -1
- package/dist/internal/core.js +2 -0
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/effect.js +21 -13
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js +14 -0
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/jsonSchema.d.ts +2 -0
- package/dist/internal/jsonSchema.d.ts.map +1 -0
- package/dist/internal/jsonSchema.js +28 -0
- package/dist/internal/jsonSchema.js.map +1 -0
- package/dist/internal/matcher.js +1 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/schema/compilerRegistry.js +4 -1
- package/dist/internal/schema/compilerRegistry.js.map +1 -1
- package/dist/internal/schema/content.d.ts +2 -0
- package/dist/internal/schema/content.d.ts.map +1 -0
- package/dist/internal/schema/content.js +13 -0
- package/dist/internal/schema/content.js.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +2 -1
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +8 -2
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +3 -3
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +21 -24
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +107 -129
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/sql.d.ts +2 -0
- package/dist/internal/sql.d.ts.map +1 -0
- package/dist/internal/sql.js +13 -0
- package/dist/internal/sql.js.map +1 -0
- package/dist/internal/version.js +1 -1
- package/dist/observability/OtlpProxy.d.ts +154 -0
- package/dist/observability/OtlpProxy.d.ts.map +1 -0
- package/dist/observability/OtlpProxy.js +235 -0
- package/dist/observability/OtlpProxy.js.map +1 -0
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +4 -0
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +897 -0
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
- package/dist/persistence/CircuitBreaker.js +1165 -0
- package/dist/persistence/CircuitBreaker.js.map +1 -0
- package/dist/persistence/Redis.d.ts +78 -2
- package/dist/persistence/Redis.d.ts.map +1 -1
- package/dist/persistence/Redis.js +62 -7
- package/dist/persistence/Redis.js.map +1 -1
- package/dist/persistence/index.d.ts +5 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +5 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +30 -4
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/process/ChildProcessSpawner.d.ts +30 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/process/ChildProcessSpawner.js +5 -2
- package/dist/process/ChildProcessSpawner.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +9 -8
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +14 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +20 -8
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +11 -1
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/rpc/RpcTest.d.ts +1 -0
- package/dist/rpc/RpcTest.d.ts.map +1 -1
- package/dist/rpc/RpcTest.js +1 -0
- package/dist/rpc/RpcTest.js.map +1 -1
- package/dist/sql/Migrator.d.ts +2 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +11 -8
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +9 -4
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +8 -1
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +4 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +18 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +7 -0
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +21 -2
- package/dist/sql/Statement.js.map +1 -1
- package/dist/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +21 -2
- package/dist/workflow/DurableDeferred.js.map +1 -1
- package/package.json +1 -1
- package/src/Arbitrary.ts +10 -2
- package/src/Channel.ts +47 -18
- package/src/Data.ts +60 -265
- package/src/Effect.ts +1 -1
- package/src/Equal.ts +8 -1
- package/src/Exit.ts +3 -3
- package/src/Formatter.ts +28 -13
- package/src/Hash.ts +4 -1
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +12 -40
- package/src/Metric.ts +3 -3
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Pool.ts +109 -37
- package/src/PubSub.ts +5 -6
- package/src/Ref.ts +8 -0
- package/src/Schedule.ts +1 -1
- package/src/Schema.ts +48 -25
- package/src/SchemaAST.ts +20 -20
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +31 -34
- package/src/SchemaTransformation.ts +9 -2
- package/src/Semaphore.ts +67 -40
- package/src/Sink.ts +15 -2
- package/src/Stream.ts +33 -16
- package/src/String.ts +3 -0
- package/src/Tracer.ts +15 -1
- package/src/ai/LanguageModel.ts +9 -0
- package/src/ai/McpServer.ts +14 -13
- package/src/ai/Prompt.ts +65 -0
- package/src/ai/Response.ts +34 -9
- package/src/ai/Tool.ts +38 -2
- package/src/ai/Toolkit.ts +4 -1
- package/src/cli/Argument.ts +15 -0
- package/src/cli/CliError.ts +90 -3
- package/src/cli/CliOutput.ts +183 -6
- package/src/cli/Command.ts +53 -41
- package/src/cli/Completions.ts +51 -0
- package/src/cli/Flag.ts +15 -0
- package/src/cli/GlobalFlag.ts +6 -7
- package/src/cli/Param.ts +29 -6
- package/src/cli/TerminalCapabilities.ts +6 -3
- package/src/cli/internal/completions/bash.ts +79 -29
- package/src/cluster/ClusterWorkflowEngine.ts +46 -16
- package/src/cluster/MessageStorage.ts +19 -14
- package/src/cluster/Sharding.ts +83 -21
- package/src/cluster/ShardingConfig.ts +5 -0
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlRunnerStorage.ts +110 -47
- package/src/cluster/internal/entityManager.ts +75 -22
- package/src/devtools/DevToolsClient.ts +2 -0
- package/src/encoding/Base64.ts +38 -0
- package/src/encoding/Sse.ts +4 -3
- package/src/encoding/Toml.ts +33 -16
- package/src/eventlog/SqlEventJournal.ts +68 -45
- package/src/eventlog/internal/conflicts.ts +0 -4
- package/src/http/Cookies.ts +10 -11
- package/src/http/HttpClient.ts +547 -7
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +9 -1
- package/src/http/HttpMiddleware.ts +15 -18
- package/src/http/HttpRouter.ts +2 -1
- package/src/http/HttpServerError.ts +2 -2
- package/src/http/HttpServerRequest.ts +102 -16
- package/src/http/HttpStaticServer.ts +51 -22
- package/src/http/MultipartParser/internal/contentType.ts +3 -3
- package/src/http/UrlParams.ts +6 -1
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +6 -0
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/urlParams.ts +29 -0
- package/src/http-api/HttpApi.ts +3 -6
- package/src/http-api/HttpApiBuilder.ts +45 -15
- package/src/http-api/HttpApiClient.ts +218 -72
- package/src/http-api/HttpApiEndpoint.ts +121 -30
- package/src/http-api/HttpApiSchema.ts +141 -48
- package/src/http-api/HttpApiTest.ts +3 -2
- package/src/http-api/OpenApi.ts +20 -17
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +2 -0
- package/src/internal/effect.ts +24 -16
- package/src/internal/equal.ts +17 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +1 -1
- package/src/internal/schema/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/standardSchema.ts +2 -2
- package/src/internal/schema/toCodeDocument.ts +4 -4
- package/src/internal/schema/toCodec.ts +26 -22
- package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- package/src/internal/version.ts +1 -1
- package/src/observability/OtlpProxy.ts +314 -0
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/persistence/CircuitBreaker.ts +1678 -0
- package/src/persistence/Redis.ts +129 -8
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +30 -4
- package/src/process/ChildProcessSpawner.ts +41 -2
- package/src/reactivity/AsyncResult.ts +1 -1
- package/src/rpc/RpcClient.ts +13 -10
- package/src/rpc/RpcSerialization.ts +32 -9
- package/src/rpc/RpcServer.ts +16 -1
- package/src/rpc/RpcTest.ts +3 -0
- package/src/sql/Migrator.ts +12 -7
- package/src/sql/SqlClient.ts +11 -4
- package/src/sql/SqlResolver.ts +23 -9
- package/src/sql/Statement.ts +30 -2
- package/src/workflow/DurableDeferred.ts +23 -6
package/src/Data.ts
CHANGED
|
@@ -392,13 +392,14 @@ export declare namespace TaggedEnum {
|
|
|
392
392
|
* @category utility types
|
|
393
393
|
* @since 3.1.0
|
|
394
394
|
*/
|
|
395
|
-
export type Constructor<A extends { readonly _tag: string }> =
|
|
396
|
-
{
|
|
395
|
+
export type Constructor<A extends { readonly _tag: string }> =
|
|
396
|
+
& {
|
|
397
397
|
readonly [Tag in A["_tag"]]: ConstructorFrom<
|
|
398
398
|
Extract<A, { readonly _tag: Tag }>,
|
|
399
399
|
"_tag"
|
|
400
400
|
>
|
|
401
|
-
}
|
|
401
|
+
}
|
|
402
|
+
& {
|
|
402
403
|
readonly $is: <Tag extends A["_tag"]>(
|
|
403
404
|
tag: Tag
|
|
404
405
|
) => (u: unknown) => u is Extract<A, { readonly _tag: Tag }>
|
|
@@ -424,7 +425,6 @@ export declare namespace TaggedEnum {
|
|
|
424
425
|
): Unify<ReturnType<Cases[A["_tag"]]>>
|
|
425
426
|
}
|
|
426
427
|
}
|
|
427
|
-
>
|
|
428
428
|
|
|
429
429
|
/**
|
|
430
430
|
* Function type that constructs a tagged-union variant from its fields,
|
|
@@ -446,6 +446,61 @@ export declare namespace TaggedEnum {
|
|
|
446
446
|
args: Types.VoidIfEmpty<{ readonly [P in keyof A as P extends Tag ? never : P]: A[P] }>
|
|
447
447
|
) => A
|
|
448
448
|
|
|
449
|
+
/**
|
|
450
|
+
* The full constructors-and-matchers object type returned by {@link taggedEnum}
|
|
451
|
+
* for a {@link WithGenerics} definition.
|
|
452
|
+
*
|
|
453
|
+
* **When to use**
|
|
454
|
+
*
|
|
455
|
+
* Use when you want to annotate an exported constructor bundle for a generic
|
|
456
|
+
* tagged enum.
|
|
457
|
+
*
|
|
458
|
+
* **Details**
|
|
459
|
+
*
|
|
460
|
+
* Includes one generic constructor per variant (keyed by tag name) plus the
|
|
461
|
+
* `$is` / `$match` helpers from {@link GenericMatchers}.
|
|
462
|
+
*
|
|
463
|
+
* @see {@link Constructor} — the non-generic equivalent
|
|
464
|
+
* @see {@link GenericCaseConstructor} — the constructor for one variant
|
|
465
|
+
*
|
|
466
|
+
* @category utility types
|
|
467
|
+
* @since 4.0.7
|
|
468
|
+
*/
|
|
469
|
+
export type GenericConstructor<Z extends WithGenerics<1 | 2 | 3 | 4>> =
|
|
470
|
+
& {
|
|
471
|
+
readonly [Tag in Z["taggedEnum"]["_tag"]]: GenericCaseConstructor<Z, Tag>[Z["numberOfGenerics"]]
|
|
472
|
+
}
|
|
473
|
+
& GenericMatchers<Z>
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* The generic constructors for one variant of a {@link WithGenerics}
|
|
477
|
+
* definition, keyed by the number of generics.
|
|
478
|
+
*
|
|
479
|
+
* **When to use**
|
|
480
|
+
*
|
|
481
|
+
* Use to type an individual constructor for one variant of a generic tagged
|
|
482
|
+
* enum, by indexing with the definition's `numberOfGenerics`.
|
|
483
|
+
*
|
|
484
|
+
* @see {@link GenericConstructor} — the full constructor object type
|
|
485
|
+
*
|
|
486
|
+
* @category utility types
|
|
487
|
+
* @since 4.0.7
|
|
488
|
+
*/
|
|
489
|
+
export interface GenericCaseConstructor<Z extends WithGenerics<number>, Tag extends Z["taggedEnum"]["_tag"]> {
|
|
490
|
+
readonly 1: <A>(
|
|
491
|
+
args: Args<Kind<Z, A>, Tag, Extract<Kind<Z, A>, { readonly _tag: Tag }>>
|
|
492
|
+
) => Value<Kind<Z, A>, Tag>
|
|
493
|
+
readonly 2: <A, B>(
|
|
494
|
+
args: Args<Kind<Z, A, B>, Tag, Extract<Kind<Z, A, B>, { readonly _tag: Tag }>>
|
|
495
|
+
) => Value<Kind<Z, A, B>, Tag>
|
|
496
|
+
readonly 3: <A, B, C>(
|
|
497
|
+
args: Args<Kind<Z, A, B, C>, Tag, Extract<Kind<Z, A, B, C>, { readonly _tag: Tag }>>
|
|
498
|
+
) => Value<Kind<Z, A, B, C>, Tag>
|
|
499
|
+
readonly 4: <A, B, C, D>(
|
|
500
|
+
args: Args<Kind<Z, A, B, C, D>, Tag, Extract<Kind<Z, A, B, C, D>, { readonly _tag: Tag }>>
|
|
501
|
+
) => Value<Kind<Z, A, B, C, D>, Tag>
|
|
502
|
+
}
|
|
503
|
+
|
|
449
504
|
/**
|
|
450
505
|
* Type-guard and pattern-matching interface for generic tagged enums.
|
|
451
506
|
*
|
|
@@ -655,267 +710,7 @@ export const taggedEnum: {
|
|
|
655
710
|
* @category constructors
|
|
656
711
|
* @since 2.0.0
|
|
657
712
|
*/
|
|
658
|
-
<Z extends TaggedEnum.WithGenerics<1>>():
|
|
659
|
-
{
|
|
660
|
-
readonly [Tag in Z["taggedEnum"]["_tag"]]: <A>(
|
|
661
|
-
args: TaggedEnum.Args<
|
|
662
|
-
TaggedEnum.Kind<Z, A>,
|
|
663
|
-
Tag,
|
|
664
|
-
Extract<TaggedEnum.Kind<Z, A>, { readonly _tag: Tag }>
|
|
665
|
-
>
|
|
666
|
-
) => TaggedEnum.Value<TaggedEnum.Kind<Z, A>, Tag>
|
|
667
|
-
} & TaggedEnum.GenericMatchers<Z>
|
|
668
|
-
>
|
|
669
|
-
|
|
670
|
-
/**
|
|
671
|
-
* Creates constructors and matchers for a `TaggedEnum` type.
|
|
672
|
-
*
|
|
673
|
-
* **When to use**
|
|
674
|
-
*
|
|
675
|
-
* Use when you model a closed union with plain data objects and want
|
|
676
|
-
* construction, tag checks, and exhaustive matching from the same definition.
|
|
677
|
-
*
|
|
678
|
-
* **Details**
|
|
679
|
-
*
|
|
680
|
-
* Returns an object with:
|
|
681
|
-
* - One constructor per variant (keyed by tag name)
|
|
682
|
-
* - `$is(tag)` — returns a type-guard function that checks only the `_tag` field
|
|
683
|
-
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
684
|
-
*
|
|
685
|
-
* **Gotchas**
|
|
686
|
-
*
|
|
687
|
-
* - Constructors produce **plain objects**, not class instances.
|
|
688
|
-
* - `$is(tag)` only checks the `_tag` field, not the full structure. It relies
|
|
689
|
-
* on the tag being globally unique and the value being produced by your
|
|
690
|
-
* constructors. For untrusted input, validate with the `Schema` module first.
|
|
691
|
-
*
|
|
692
|
-
* **Example** (Creating and matching tagged enum values)
|
|
693
|
-
*
|
|
694
|
-
* ```ts import.meta.vitest
|
|
695
|
-
* import { Data } from "effect"
|
|
696
|
-
*
|
|
697
|
-
* type HttpError = Data.TaggedEnum<{
|
|
698
|
-
* BadRequest: { readonly message: string }
|
|
699
|
-
* NotFound: { readonly url: string }
|
|
700
|
-
* }>
|
|
701
|
-
*
|
|
702
|
-
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
703
|
-
*
|
|
704
|
-
* const err = NotFound({ url: "/missing" })
|
|
705
|
-
*
|
|
706
|
-
* $is("NotFound")(err) // => true
|
|
707
|
-
*
|
|
708
|
-
* $match(err, {
|
|
709
|
-
* BadRequest: (e) => e.message,
|
|
710
|
-
* NotFound: (e) => `${e.url} not found`
|
|
711
|
-
* }) // => "/missing not found"
|
|
712
|
-
* ```
|
|
713
|
-
*
|
|
714
|
-
* **Example** (Defining a generic tagged enum)
|
|
715
|
-
*
|
|
716
|
-
* ```ts import.meta.vitest
|
|
717
|
-
* import { Data } from "effect"
|
|
718
|
-
*
|
|
719
|
-
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
720
|
-
* Failure: { readonly error: E }
|
|
721
|
-
* Success: { readonly value: A }
|
|
722
|
-
* }>
|
|
723
|
-
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
724
|
-
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
725
|
-
* }
|
|
726
|
-
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
727
|
-
*
|
|
728
|
-
* const ok = Success({ value: 42 })
|
|
729
|
-
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
730
|
-
* ok // => { value: 42, _tag: "Success" }
|
|
731
|
-
* ```
|
|
732
|
-
*
|
|
733
|
-
* @see {@link TaggedEnum} — the type-level companion
|
|
734
|
-
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
735
|
-
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
736
|
-
*
|
|
737
|
-
* @stability stable
|
|
738
|
-
* @category constructors
|
|
739
|
-
* @since 2.0.0
|
|
740
|
-
*/
|
|
741
|
-
<Z extends TaggedEnum.WithGenerics<2>>(): Types.Simplify<
|
|
742
|
-
{
|
|
743
|
-
readonly [Tag in Z["taggedEnum"]["_tag"]]: <A, B>(
|
|
744
|
-
args: TaggedEnum.Args<
|
|
745
|
-
TaggedEnum.Kind<Z, A, B>,
|
|
746
|
-
Tag,
|
|
747
|
-
Extract<TaggedEnum.Kind<Z, A, B>, { readonly _tag: Tag }>
|
|
748
|
-
>
|
|
749
|
-
) => TaggedEnum.Value<TaggedEnum.Kind<Z, A, B>, Tag>
|
|
750
|
-
} & TaggedEnum.GenericMatchers<Z>
|
|
751
|
-
>
|
|
752
|
-
|
|
753
|
-
/**
|
|
754
|
-
* Creates constructors and matchers for a `TaggedEnum` type.
|
|
755
|
-
*
|
|
756
|
-
* **When to use**
|
|
757
|
-
*
|
|
758
|
-
* Use when you model a closed union with plain data objects and want
|
|
759
|
-
* construction, tag checks, and exhaustive matching from the same definition.
|
|
760
|
-
*
|
|
761
|
-
* **Details**
|
|
762
|
-
*
|
|
763
|
-
* Returns an object with:
|
|
764
|
-
* - One constructor per variant (keyed by tag name)
|
|
765
|
-
* - `$is(tag)` — returns a type-guard function that checks only the `_tag` field
|
|
766
|
-
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
767
|
-
*
|
|
768
|
-
* **Gotchas**
|
|
769
|
-
*
|
|
770
|
-
* - Constructors produce **plain objects**, not class instances.
|
|
771
|
-
* - `$is(tag)` only checks the `_tag` field, not the full structure. It relies
|
|
772
|
-
* on the tag being globally unique and the value being produced by your
|
|
773
|
-
* constructors. For untrusted input, validate with the `Schema` module first.
|
|
774
|
-
*
|
|
775
|
-
* **Example** (Creating and matching tagged enum values)
|
|
776
|
-
*
|
|
777
|
-
* ```ts import.meta.vitest
|
|
778
|
-
* import { Data } from "effect"
|
|
779
|
-
*
|
|
780
|
-
* type HttpError = Data.TaggedEnum<{
|
|
781
|
-
* BadRequest: { readonly message: string }
|
|
782
|
-
* NotFound: { readonly url: string }
|
|
783
|
-
* }>
|
|
784
|
-
*
|
|
785
|
-
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
786
|
-
*
|
|
787
|
-
* const err = NotFound({ url: "/missing" })
|
|
788
|
-
*
|
|
789
|
-
* $is("NotFound")(err) // => true
|
|
790
|
-
*
|
|
791
|
-
* $match(err, {
|
|
792
|
-
* BadRequest: (e) => e.message,
|
|
793
|
-
* NotFound: (e) => `${e.url} not found`
|
|
794
|
-
* }) // => "/missing not found"
|
|
795
|
-
* ```
|
|
796
|
-
*
|
|
797
|
-
* **Example** (Defining a generic tagged enum)
|
|
798
|
-
*
|
|
799
|
-
* ```ts import.meta.vitest
|
|
800
|
-
* import { Data } from "effect"
|
|
801
|
-
*
|
|
802
|
-
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
803
|
-
* Failure: { readonly error: E }
|
|
804
|
-
* Success: { readonly value: A }
|
|
805
|
-
* }>
|
|
806
|
-
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
807
|
-
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
808
|
-
* }
|
|
809
|
-
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
810
|
-
*
|
|
811
|
-
* const ok = Success({ value: 42 })
|
|
812
|
-
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
813
|
-
* ok // => { value: 42, _tag: "Success" }
|
|
814
|
-
* ```
|
|
815
|
-
*
|
|
816
|
-
* @see {@link TaggedEnum} — the type-level companion
|
|
817
|
-
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
818
|
-
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
819
|
-
*
|
|
820
|
-
* @stability stable
|
|
821
|
-
* @category constructors
|
|
822
|
-
* @since 2.0.0
|
|
823
|
-
*/
|
|
824
|
-
<Z extends TaggedEnum.WithGenerics<3>>(): Types.Simplify<
|
|
825
|
-
{
|
|
826
|
-
readonly [Tag in Z["taggedEnum"]["_tag"]]: <A, B, C>(
|
|
827
|
-
args: TaggedEnum.Args<
|
|
828
|
-
TaggedEnum.Kind<Z, A, B, C>,
|
|
829
|
-
Tag,
|
|
830
|
-
Extract<TaggedEnum.Kind<Z, A, B, C>, { readonly _tag: Tag }>
|
|
831
|
-
>
|
|
832
|
-
) => TaggedEnum.Value<TaggedEnum.Kind<Z, A, B, C>, Tag>
|
|
833
|
-
} & TaggedEnum.GenericMatchers<Z>
|
|
834
|
-
>
|
|
835
|
-
|
|
836
|
-
/**
|
|
837
|
-
* Creates constructors and matchers for a `TaggedEnum` type.
|
|
838
|
-
*
|
|
839
|
-
* **When to use**
|
|
840
|
-
*
|
|
841
|
-
* Use when you model a closed union with plain data objects and want
|
|
842
|
-
* construction, tag checks, and exhaustive matching from the same definition.
|
|
843
|
-
*
|
|
844
|
-
* **Details**
|
|
845
|
-
*
|
|
846
|
-
* Returns an object with:
|
|
847
|
-
* - One constructor per variant (keyed by tag name)
|
|
848
|
-
* - `$is(tag)` — returns a type-guard function that checks only the `_tag` field
|
|
849
|
-
* - `$match` — exhaustive pattern matching (data-first or data-last)
|
|
850
|
-
*
|
|
851
|
-
* **Gotchas**
|
|
852
|
-
*
|
|
853
|
-
* - Constructors produce **plain objects**, not class instances.
|
|
854
|
-
* - `$is(tag)` only checks the `_tag` field, not the full structure. It relies
|
|
855
|
-
* on the tag being globally unique and the value being produced by your
|
|
856
|
-
* constructors. For untrusted input, validate with the `Schema` module first.
|
|
857
|
-
*
|
|
858
|
-
* **Example** (Creating and matching tagged enum values)
|
|
859
|
-
*
|
|
860
|
-
* ```ts import.meta.vitest
|
|
861
|
-
* import { Data } from "effect"
|
|
862
|
-
*
|
|
863
|
-
* type HttpError = Data.TaggedEnum<{
|
|
864
|
-
* BadRequest: { readonly message: string }
|
|
865
|
-
* NotFound: { readonly url: string }
|
|
866
|
-
* }>
|
|
867
|
-
*
|
|
868
|
-
* const { BadRequest, NotFound, $is, $match } = Data.taggedEnum<HttpError>()
|
|
869
|
-
*
|
|
870
|
-
* const err = NotFound({ url: "/missing" })
|
|
871
|
-
*
|
|
872
|
-
* $is("NotFound")(err) // => true
|
|
873
|
-
*
|
|
874
|
-
* $match(err, {
|
|
875
|
-
* BadRequest: (e) => e.message,
|
|
876
|
-
* NotFound: (e) => `${e.url} not found`
|
|
877
|
-
* }) // => "/missing not found"
|
|
878
|
-
* ```
|
|
879
|
-
*
|
|
880
|
-
* **Example** (Defining a generic tagged enum)
|
|
881
|
-
*
|
|
882
|
-
* ```ts import.meta.vitest
|
|
883
|
-
* import { Data } from "effect"
|
|
884
|
-
*
|
|
885
|
-
* type MyResult<E, A> = Data.TaggedEnum<{
|
|
886
|
-
* Failure: { readonly error: E }
|
|
887
|
-
* Success: { readonly value: A }
|
|
888
|
-
* }>
|
|
889
|
-
* interface MyResultDef extends Data.TaggedEnum.WithGenerics<2> {
|
|
890
|
-
* readonly taggedEnum: MyResult<this["A"], this["B"]>
|
|
891
|
-
* }
|
|
892
|
-
* const { Failure, Success } = Data.taggedEnum<MyResultDef>()
|
|
893
|
-
*
|
|
894
|
-
* const ok = Success({ value: 42 })
|
|
895
|
-
* // ok: { readonly _tag: "Success"; readonly value: number }
|
|
896
|
-
* ok // => { value: 42, _tag: "Success" }
|
|
897
|
-
* ```
|
|
898
|
-
*
|
|
899
|
-
* @see {@link TaggedEnum} — the type-level companion
|
|
900
|
-
* @see {@link TaggedEnum.Constructor} — the returned object type
|
|
901
|
-
* @see {@link TaggedEnum.WithGenerics} — generic enum support
|
|
902
|
-
*
|
|
903
|
-
* @stability stable
|
|
904
|
-
* @category constructors
|
|
905
|
-
* @since 2.0.0
|
|
906
|
-
*/
|
|
907
|
-
<Z extends TaggedEnum.WithGenerics<4>>(): Types.Simplify<
|
|
908
|
-
{
|
|
909
|
-
readonly [Tag in Z["taggedEnum"]["_tag"]]: <A, B, C, D>(
|
|
910
|
-
args: TaggedEnum.Args<
|
|
911
|
-
TaggedEnum.Kind<Z, A, B, C, D>,
|
|
912
|
-
Tag,
|
|
913
|
-
Extract<TaggedEnum.Kind<Z, A, B, C, D>, { readonly _tag: Tag }>
|
|
914
|
-
>
|
|
915
|
-
) => TaggedEnum.Value<TaggedEnum.Kind<Z, A, B, C, D>, Tag>
|
|
916
|
-
} & TaggedEnum.GenericMatchers<Z>
|
|
917
|
-
>
|
|
918
|
-
|
|
713
|
+
<Z extends TaggedEnum.WithGenerics<1 | 2 | 3 | 4>>(): TaggedEnum.GenericConstructor<Z>
|
|
919
714
|
/**
|
|
920
715
|
* Creates constructors and matchers for a `TaggedEnum` type.
|
|
921
716
|
*
|
package/src/Effect.ts
CHANGED
|
@@ -19017,7 +19017,7 @@ export const runSyncWith: <R>(
|
|
|
19017
19017
|
* import { Cause, Effect, Exit } from "effect"
|
|
19018
19018
|
*
|
|
19019
19019
|
* const exit = Effect.runSyncExit(Effect.promise(() => Promise.resolve(1)))
|
|
19020
|
-
* const isAsyncDie = Exit.hasDies(exit) && exit.cause.reasons.some(
|
|
19020
|
+
* const isAsyncDie = Exit.isFailure(exit) && Exit.hasDies(exit) && exit.cause.reasons.some(
|
|
19021
19021
|
* (reason) => Cause.isDieReason(reason) && Cause.isAsyncFiberError(reason.defect)
|
|
19022
19022
|
* )
|
|
19023
19023
|
*
|
package/src/Equal.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { Equivalence } from "./Equivalence.ts"
|
|
14
14
|
import * as Hash from "./Hash.ts"
|
|
15
|
-
import { byReferenceInstances, getAllObjectKeys, viewBytes } from "./internal/equal.ts"
|
|
15
|
+
import { bufferBytes, byReferenceInstances, getAllObjectKeys, isArrayBufferLike, viewBytes } from "./internal/equal.ts"
|
|
16
16
|
import { hasProperty } from "./Predicate.ts"
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -257,6 +257,13 @@ function compareStructure(self: object, that: object): boolean {
|
|
|
257
257
|
return false
|
|
258
258
|
}
|
|
259
259
|
return compareArrays(self, that)
|
|
260
|
+
} else if (isArrayBufferLike(self)) {
|
|
261
|
+
if (!isArrayBufferLike(that) || (self instanceof ArrayBuffer) !== (that instanceof ArrayBuffer)) {
|
|
262
|
+
return false
|
|
263
|
+
}
|
|
264
|
+
const selfBytes = bufferBytes(self)
|
|
265
|
+
const thatBytes = bufferBytes(that)
|
|
266
|
+
return selfBytes !== undefined && thatBytes !== undefined && compareTypedArrays(selfBytes, thatBytes)
|
|
260
267
|
} else if (ArrayBuffer.isView(self)) {
|
|
261
268
|
const selfIsDataView = self instanceof DataView
|
|
262
269
|
if (
|
package/src/Exit.ts
CHANGED
|
@@ -463,7 +463,7 @@ export const isFailure: <A, E>(self: Exit<A, E>) => self is Failure<A, E> = effe
|
|
|
463
463
|
* @category guards
|
|
464
464
|
* @since 4.0.0
|
|
465
465
|
*/
|
|
466
|
-
export const hasFails: <A, E>(self: Exit<A, E>) =>
|
|
466
|
+
export const hasFails: <A, E>(self: Exit<A, E>) => boolean = effect.exitHasFails
|
|
467
467
|
|
|
468
468
|
/**
|
|
469
469
|
* Checks whether a failed Exit contains defects (Die reasons).
|
|
@@ -494,7 +494,7 @@ export const hasFails: <A, E>(self: Exit<A, E>) => self is Failure<A, E> = effec
|
|
|
494
494
|
* @category guards
|
|
495
495
|
* @since 4.0.0
|
|
496
496
|
*/
|
|
497
|
-
export const hasDies: <A, E>(self: Exit<A, E>) =>
|
|
497
|
+
export const hasDies: <A, E>(self: Exit<A, E>) => boolean = effect.exitHasDies
|
|
498
498
|
|
|
499
499
|
/**
|
|
500
500
|
* Checks whether a failed Exit contains interruptions (Interrupt reasons).
|
|
@@ -525,7 +525,7 @@ export const hasDies: <A, E>(self: Exit<A, E>) => self is Failure<A, E> = effect
|
|
|
525
525
|
* @category guards
|
|
526
526
|
* @since 4.0.0
|
|
527
527
|
*/
|
|
528
|
-
export const hasInterrupts: <A, E>(self: Exit<A, E>) =>
|
|
528
|
+
export const hasInterrupts: <A, E>(self: Exit<A, E>) => boolean = effect.exitHasInterrupts
|
|
529
529
|
|
|
530
530
|
/**
|
|
531
531
|
* Extracts the Success variant from an Exit as a Result.
|
package/src/Formatter.ts
CHANGED
|
@@ -309,10 +309,11 @@ export function formatJson(input: unknown, options?: {
|
|
|
309
309
|
readonly space?: number | string | undefined
|
|
310
310
|
}): string {
|
|
311
311
|
const ancestors: Array<object> = []
|
|
312
|
+
const sources = new WeakMap<object, object>()
|
|
312
313
|
return JSON.stringify(
|
|
313
314
|
input,
|
|
314
315
|
function(this: object, key: string, value: unknown) {
|
|
315
|
-
const original = Object.getOwnPropertyDescriptor(this, key)?.value
|
|
316
|
+
const original = Object.getOwnPropertyDescriptor(sources.get(this) ?? this, key)?.value
|
|
316
317
|
const redacted = Predicate.hasProperty(original, symbolRedactable)
|
|
317
318
|
? redact(original)
|
|
318
319
|
: redact(value)
|
|
@@ -339,18 +340,10 @@ export function formatJson(input: unknown, options?: {
|
|
|
339
340
|
if (!hasGetter(current) || isJsonPrimitiveWrapper(current)) {
|
|
340
341
|
return current
|
|
341
342
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
const serialized = new Proxy(current, {
|
|
347
|
-
get(target, key) {
|
|
348
|
-
const value = Reflect.get(target, key, target)
|
|
349
|
-
return Object.getOwnPropertyDescriptor(target, key)?.get !== undefined ? redact(value) : value
|
|
350
|
-
}
|
|
351
|
-
})
|
|
352
|
-
ancestors.push(serialized)
|
|
353
|
-
return serialized
|
|
343
|
+
const view = redactingView(current)
|
|
344
|
+
sources.set(view, current)
|
|
345
|
+
ancestors.push(view)
|
|
346
|
+
return view
|
|
354
347
|
},
|
|
355
348
|
options?.space
|
|
356
349
|
) ?? "null"
|
|
@@ -365,6 +358,28 @@ function hasGetter(object: object): boolean {
|
|
|
365
358
|
return false
|
|
366
359
|
}
|
|
367
360
|
|
|
361
|
+
// JSON.stringify reads a getter once, then calls toJSON on the result before
|
|
362
|
+
// the replacer sees it, so getter results are redacted at the read. A Proxy
|
|
363
|
+
// would do, but not every engine has one, so each key becomes a getter that
|
|
364
|
+
// reads the source lazily, with the source as receiver.
|
|
365
|
+
function redactingView(object: object): object {
|
|
366
|
+
const view = Array.isArray(object) ? [] : {}
|
|
367
|
+
// JSON.stringify reads every array index, regardless of enumerability
|
|
368
|
+
const keys = Array.isArray(object)
|
|
369
|
+
? Array.from({ length: object.length }, (_, i) => String(i))
|
|
370
|
+
: Object.keys(object)
|
|
371
|
+
for (const key of keys) {
|
|
372
|
+
Object.defineProperty(view, key, {
|
|
373
|
+
enumerable: true,
|
|
374
|
+
get: () => {
|
|
375
|
+
const value = Reflect.get(object, key)
|
|
376
|
+
return Object.getOwnPropertyDescriptor(object, key)?.get !== undefined ? redact(value) : value
|
|
377
|
+
}
|
|
378
|
+
})
|
|
379
|
+
}
|
|
380
|
+
return view
|
|
381
|
+
}
|
|
382
|
+
|
|
368
383
|
function isJsonPrimitiveWrapper(object: object): boolean {
|
|
369
384
|
// Built-in valueOf checks internal slots across realms without calling user code.
|
|
370
385
|
for (const valueOf of [Number.prototype.valueOf, Boolean.prototype.valueOf, String.prototype.valueOf]) {
|
package/src/Hash.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @since 2.0.0
|
|
12
12
|
*/
|
|
13
13
|
import { dual } from "./Function.ts"
|
|
14
|
-
import { byReferenceInstances, getAllObjectKeys, viewBytes } from "./internal/equal.ts"
|
|
14
|
+
import { bufferBytes, byReferenceInstances, getAllObjectKeys, isArrayBufferLike, viewBytes } from "./internal/equal.ts"
|
|
15
15
|
import { addBackEdge, backEdges } from "./internal/hash.ts"
|
|
16
16
|
import { hasProperty } from "./Predicate.ts"
|
|
17
17
|
|
|
@@ -144,6 +144,9 @@ export const hash: <A>(self: A) => number = <A>(self: A) => {
|
|
|
144
144
|
h = (self as Hash)[symbol]()
|
|
145
145
|
} else if (typeof self === "function") {
|
|
146
146
|
h = random(self)
|
|
147
|
+
} else if (isArrayBufferLike(self)) {
|
|
148
|
+
const bytes = bufferBytes(self)
|
|
149
|
+
h = bytes === undefined ? random(self) : array(bytes)
|
|
147
150
|
} else if (self instanceof DataView) {
|
|
148
151
|
h = array(viewBytes(self))
|
|
149
152
|
} else if (Array.isArray(self) || ArrayBuffer.isView(self)) {
|
package/src/JsonPatch.ts
CHANGED
|
@@ -303,12 +303,16 @@ function isJsonObject(value: unknown): value is Schema.JsonObject {
|
|
|
303
303
|
*
|
|
304
304
|
* - `""` (empty pointer) refers to the root and returns `[]`
|
|
305
305
|
* - Non-empty pointers must start with `/`
|
|
306
|
+
* - `~` must be followed by `0` or `1`
|
|
306
307
|
*/
|
|
307
308
|
function tokenize(pointer: string): Array<string> {
|
|
308
309
|
if (pointer === "") return []
|
|
309
310
|
if (pointer.charCodeAt(0) !== 47 /* "/" */) {
|
|
310
311
|
throw new Error(`Invalid JSON Pointer, it must start with "/": ${JSON.stringify(pointer)}`)
|
|
311
312
|
}
|
|
313
|
+
if (/~(?![01])/.test(pointer)) {
|
|
314
|
+
throw new Error(`Invalid JSON Pointer escape: ${JSON.stringify(pointer)}`)
|
|
315
|
+
}
|
|
312
316
|
return pointer.split("/").slice(1).map(unescapeToken)
|
|
313
317
|
}
|
|
314
318
|
|
package/src/JsonSchema.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* @stability stable
|
|
10
10
|
* @since 4.0.0
|
|
11
11
|
*/
|
|
12
|
+
import * as InternalJsonSchema from "./internal/jsonSchema.ts"
|
|
12
13
|
import * as InternalRecord from "./internal/record.ts"
|
|
13
14
|
import { formatUriFragment, parseUriFragment } from "./JsonPointer.ts"
|
|
14
15
|
import * as Predicate from "./Predicate.ts"
|
|
@@ -725,30 +726,14 @@ function transformSchema(
|
|
|
725
726
|
for (const key of Object.keys(node)) {
|
|
726
727
|
const value = node[key]
|
|
727
728
|
let transformed = value
|
|
728
|
-
switch (key) {
|
|
729
|
-
case "
|
|
730
|
-
case "properties":
|
|
731
|
-
case "patternProperties":
|
|
732
|
-
case "dependentSchemas":
|
|
729
|
+
switch (InternalJsonSchema.getSubschemaKind(key)) {
|
|
730
|
+
case "map":
|
|
733
731
|
transformed = mapObject(value, (value) => walk(value, inEmbeddedResource)) ?? value
|
|
734
732
|
break
|
|
735
|
-
case "
|
|
736
|
-
case "anyOf":
|
|
737
|
-
case "oneOf":
|
|
738
|
-
case "prefixItems":
|
|
733
|
+
case "array":
|
|
739
734
|
transformed = Array.isArray(value) ? value.map((value) => walk(value, inEmbeddedResource)) : value
|
|
740
735
|
break
|
|
741
|
-
case "
|
|
742
|
-
case "additionalProperties":
|
|
743
|
-
case "propertyNames":
|
|
744
|
-
case "unevaluatedProperties":
|
|
745
|
-
case "items":
|
|
746
|
-
case "contains":
|
|
747
|
-
case "unevaluatedItems":
|
|
748
|
-
case "if":
|
|
749
|
-
case "then":
|
|
750
|
-
case "else":
|
|
751
|
-
case "contentSchema":
|
|
736
|
+
case "schema":
|
|
752
737
|
transformed = walk(value, inEmbeddedResource)
|
|
753
738
|
}
|
|
754
739
|
InternalRecord.assignProperty(out, key, transformed)
|
|
@@ -1236,6 +1221,7 @@ function draft07Adapter(source: JsonSchema, context: Context): JsonSchema {
|
|
|
1236
1221
|
case "unevaluatedItems":
|
|
1237
1222
|
unsupported(key, "Draft-07", "the target dialect has no equivalent")
|
|
1238
1223
|
case "required":
|
|
1224
|
+
case "enum":
|
|
1239
1225
|
if (Array.isArray(value) && value.length === 0) break
|
|
1240
1226
|
InternalRecord.assignProperty(out, key, value)
|
|
1241
1227
|
break
|
|
@@ -1261,6 +1247,8 @@ function draft07Adapter(source: JsonSchema, context: Context): JsonSchema {
|
|
|
1261
1247
|
convertDependencies(source, out, context, "draft-07")
|
|
1262
1248
|
convertLegacyId(source, out, "$id", "Draft-07")
|
|
1263
1249
|
|
|
1250
|
+
if (Array.isArray(source.enum) && source.enum.length === 0) appendAllOf(out, { not: {} })
|
|
1251
|
+
|
|
1264
1252
|
convertReference(out, reference, context)
|
|
1265
1253
|
|
|
1266
1254
|
return out
|
|
@@ -1559,30 +1547,14 @@ function hasSchemaIdentifier(node: unknown): boolean {
|
|
|
1559
1547
|
if (Object.hasOwn(node, "$id") || Object.hasOwn(node, "$anchor")) return true
|
|
1560
1548
|
for (const key of Object.keys(node)) {
|
|
1561
1549
|
const value = node[key]
|
|
1562
|
-
switch (key) {
|
|
1563
|
-
case "
|
|
1564
|
-
case "properties":
|
|
1565
|
-
case "patternProperties":
|
|
1566
|
-
case "dependentSchemas":
|
|
1550
|
+
switch (InternalJsonSchema.getSubschemaKind(key)) {
|
|
1551
|
+
case "map":
|
|
1567
1552
|
if (Predicate.isObject(value) && Object.values(value).some(hasSchemaIdentifier)) return true
|
|
1568
1553
|
break
|
|
1569
|
-
case "
|
|
1570
|
-
case "anyOf":
|
|
1571
|
-
case "oneOf":
|
|
1572
|
-
case "prefixItems":
|
|
1554
|
+
case "array":
|
|
1573
1555
|
if (Array.isArray(value) && value.some(hasSchemaIdentifier)) return true
|
|
1574
1556
|
break
|
|
1575
|
-
case "
|
|
1576
|
-
case "additionalProperties":
|
|
1577
|
-
case "propertyNames":
|
|
1578
|
-
case "unevaluatedProperties":
|
|
1579
|
-
case "items":
|
|
1580
|
-
case "contains":
|
|
1581
|
-
case "unevaluatedItems":
|
|
1582
|
-
case "if":
|
|
1583
|
-
case "then":
|
|
1584
|
-
case "else":
|
|
1585
|
-
case "contentSchema":
|
|
1557
|
+
case "schema":
|
|
1586
1558
|
if (hasSchemaIdentifier(value)) return true
|
|
1587
1559
|
}
|
|
1588
1560
|
}
|
package/src/Metric.ts
CHANGED
|
@@ -576,7 +576,7 @@ export interface GaugeState<in Input extends number | bigint> {
|
|
|
576
576
|
* start: 1,
|
|
577
577
|
* factor: 2,
|
|
578
578
|
* count: 10
|
|
579
|
-
* }) // 1, 2, 4, 8, ...,
|
|
579
|
+
* }) // 1, 2, 4, 8, ..., 256, Infinity
|
|
580
580
|
* }
|
|
581
581
|
* )
|
|
582
582
|
*
|
|
@@ -696,8 +696,8 @@ export interface Histogram<Input> extends Metric<Input, HistogramState> {}
|
|
|
696
696
|
* totalRequests: state.count, // 5
|
|
697
697
|
* fastestResponse: state.min, // 50
|
|
698
698
|
* slowestResponse: state.max, // 750
|
|
699
|
-
* averageResponse: state.sum / state.count, //
|
|
700
|
-
* totalTime: state.sum, //
|
|
699
|
+
* averageResponse: state.sum / state.count, // 259
|
|
700
|
+
* totalTime: state.sum, // 1295
|
|
701
701
|
* distribution: bucketAnalysis
|
|
702
702
|
* // Example distribution:
|
|
703
703
|
* // [{ range: "0-100ms", count: 2, percentage: 40.0 },
|
package/src/MutableList.ts
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* @stability stable
|
|
10
10
|
* @since 4.0.0
|
|
11
11
|
*/
|
|
12
|
-
import * as Arr from "./Array.ts"
|
|
13
12
|
import * as Count from "./internal/count.ts"
|
|
14
13
|
|
|
15
14
|
/**
|
|
@@ -259,7 +258,8 @@ export const prepend = <A>(self: MutableList<A>, message: A): void => {
|
|
|
259
258
|
/**
|
|
260
259
|
* Prepends all elements from an iterable to the beginning of the MutableList.
|
|
261
260
|
* The elements are added in order, so the first element in the iterable becomes
|
|
262
|
-
* the new head of the list.
|
|
261
|
+
* the new head of the list. The elements are copied, so the input can be reused
|
|
262
|
+
* afterward. Use `prependAllUnsafe` to transfer ownership of an array instead.
|
|
263
263
|
*
|
|
264
264
|
* **Example** (Prepending multiple elements)
|
|
265
265
|
*
|
|
@@ -279,7 +279,7 @@ export const prepend = <A>(self: MutableList<A>, message: A): void => {
|
|
|
279
279
|
* @since 4.0.0
|
|
280
280
|
*/
|
|
281
281
|
export const prependAll = <A>(self: MutableList<A>, messages: Iterable<A>): void =>
|
|
282
|
-
prependAllUnsafe(self,
|
|
282
|
+
prependAllUnsafe(self, Array.from(messages), true)
|
|
283
283
|
|
|
284
284
|
/**
|
|
285
285
|
* Prepends all elements from a ReadonlyArray to the beginning of the MutableList.
|
|
@@ -328,7 +328,9 @@ export const prependAllUnsafe = <A>(self: MutableList<A>, messages: ReadonlyArra
|
|
|
328
328
|
|
|
329
329
|
/**
|
|
330
330
|
* Appends all elements from an iterable to the end of the MutableList.
|
|
331
|
-
* Returns the number of elements added.
|
|
331
|
+
* Returns the number of elements added. The elements are copied, so the input
|
|
332
|
+
* can be reused afterward. Use `appendAllUnsafe` to transfer ownership of an
|
|
333
|
+
* array instead.
|
|
332
334
|
*
|
|
333
335
|
* **Example** (Appending multiple elements)
|
|
334
336
|
*
|
|
@@ -349,7 +351,7 @@ export const prependAllUnsafe = <A>(self: MutableList<A>, messages: ReadonlyArra
|
|
|
349
351
|
* @since 4.0.0
|
|
350
352
|
*/
|
|
351
353
|
export const appendAll = <A>(self: MutableList<A>, messages: Iterable<A>): number =>
|
|
352
|
-
appendAllUnsafe(self,
|
|
354
|
+
appendAllUnsafe(self, Array.from(messages), true)
|
|
353
355
|
|
|
354
356
|
/**
|
|
355
357
|
* Appends all elements from a ReadonlyArray to the end of the MutableList.
|