effect 4.1.0 → 4.1.2
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/README.md +30 -0
- package/THIRD_PARTY_NOTICES.md +62 -0
- package/ai-docs/package.json +2 -2
- package/dist/BigDecimal.d.ts +139 -7
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +83 -14
- package/dist/BigDecimal.js.map +1 -1
- package/dist/ByteSize.d.ts.map +1 -1
- package/dist/ByteSize.js +27 -14
- package/dist/ByteSize.js.map +1 -1
- package/dist/Equal.d.ts +2 -2
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +3 -3
- package/dist/Equal.js.map +1 -1
- package/dist/Hash.d.ts +3 -2
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +5 -4
- package/dist/Hash.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +38 -32
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +27 -6
- package/dist/JsonSchema.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +0 -7
- package/dist/MutableRef.js.map +1 -1
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +5 -1
- package/dist/Path.js.map +1 -1
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +2 -1
- package/dist/Pool.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +0 -8
- package/dist/Ref.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +8 -3
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +2 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +2 -1
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +4 -2
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +4 -2
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +2 -2
- package/dist/SchemaTransformation.js +2 -2
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +6 -5
- package/dist/Stream.js.map +1 -1
- package/dist/ai/McpClient.d.ts +171 -19
- package/dist/ai/McpClient.d.ts.map +1 -1
- package/dist/ai/McpClient.js +277 -66
- package/dist/ai/McpClient.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +108 -0
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +99 -0
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts +120 -6
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +258 -49
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +20 -11
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -7
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/internal/mcpCore.js +72 -3
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +44 -8
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +12 -0
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -3
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSkills.d.ts +2 -0
- package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
- package/dist/ai/internal/mcpSkills.js +428 -0
- package/dist/ai/internal/mcpSkills.js.map +1 -0
- package/dist/ai/internal/structured-output.js +11 -2
- package/dist/ai/internal/structured-output.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +30 -11
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +26 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +6 -6
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +1 -3
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Reply.d.ts +1 -1
- package/dist/cluster/Reply.d.ts.map +1 -1
- package/dist/cluster/Reply.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +13 -2
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +13 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +4 -1
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/internal/clusterAbandon.d.ts.map +1 -1
- package/dist/cluster/internal/clusterAbandon.js +6 -4
- package/dist/cluster/internal/clusterAbandon.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +63 -11
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/cluster/internal/transactionNotifications.d.ts +5 -0
- package/dist/cluster/internal/transactionNotifications.d.ts.map +1 -0
- package/dist/cluster/internal/transactionNotifications.js +5 -0
- package/dist/cluster/internal/transactionNotifications.js.map +1 -0
- package/dist/crypto/Aead.d.ts +2 -1
- package/dist/crypto/Aead.d.ts.map +1 -1
- package/dist/crypto/Aead.js +2 -2
- package/dist/crypto/Aead.js.map +1 -1
- package/dist/crypto/Cipher.d.ts +2 -1
- package/dist/crypto/Cipher.d.ts.map +1 -1
- package/dist/crypto/Cipher.js +2 -2
- package/dist/crypto/Cipher.js.map +1 -1
- package/dist/crypto/KeyAgreement.d.ts +3 -2
- package/dist/crypto/KeyAgreement.d.ts.map +1 -1
- package/dist/crypto/KeyAgreement.js +2 -2
- package/dist/crypto/KeyAgreement.js.map +1 -1
- package/dist/crypto/KeyFormat.d.ts +33 -1
- package/dist/crypto/KeyFormat.d.ts.map +1 -1
- package/dist/crypto/KeyFormat.js.map +1 -1
- package/dist/crypto/KeyWrap.d.ts +4 -3
- package/dist/crypto/KeyWrap.d.ts.map +1 -1
- package/dist/crypto/KeyWrap.js +2 -2
- package/dist/crypto/KeyWrap.js.map +1 -1
- package/dist/crypto/Mac.d.ts +2 -1
- package/dist/crypto/Mac.d.ts.map +1 -1
- package/dist/crypto/Mac.js +2 -2
- package/dist/crypto/Mac.js.map +1 -1
- package/dist/crypto/Signature.d.ts +3 -2
- package/dist/crypto/Signature.d.ts.map +1 -1
- package/dist/crypto/Signature.js +2 -2
- package/dist/crypto/Signature.js.map +1 -1
- package/dist/crypto/WebCrypto.d.ts +19 -0
- package/dist/crypto/WebCrypto.d.ts.map +1 -1
- package/dist/crypto/WebCrypto.js.map +1 -1
- package/dist/crypto/internal/asymmetric.js.map +1 -1
- package/dist/crypto/internal/key.js +3 -2
- package/dist/crypto/internal/key.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +26 -3
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Json5.d.ts +44 -0
- package/dist/encoding/Json5.d.ts.map +1 -0
- package/dist/encoding/Json5.js +56 -0
- package/dist/encoding/Json5.js.map +1 -0
- package/dist/encoding/Jsonc.d.ts +47 -0
- package/dist/encoding/Jsonc.d.ts.map +1 -0
- package/dist/encoding/Jsonc.js +120 -0
- package/dist/encoding/Jsonc.js.map +1 -0
- package/dist/encoding/Ndjson.d.ts +5 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +6 -5
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts +94 -0
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +219 -6
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Sse.d.ts +3 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +5 -3
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/index.d.ts +10 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +10 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +7 -0
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +7 -0
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +7 -1
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +55 -24
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +10 -0
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.d.ts +17 -0
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.d.ts +21 -0
- package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.js +22 -0
- package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/graphql/GraphQLClient.d.ts +3 -1
- package/dist/graphql/GraphQLClient.d.ts.map +1 -1
- package/dist/graphql/GraphQLClient.js.map +1 -1
- package/dist/graphql/GraphQLClientError.d.ts +14 -9
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +14 -21
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -3
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -1
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/http/HttpClient.d.ts +204 -16
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +93 -13
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +38 -22
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/internal/mimeTypes.d.ts +4 -1
- package/dist/http/internal/mimeTypes.d.ts.map +1 -1
- package/dist/http/internal/mimeTypes.js +4 -1
- package/dist/http/internal/mimeTypes.js.map +1 -1
- package/dist/http-api/HttpApiSchema.js +1 -1
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/internal/dateTime.js +66 -27
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +10 -0
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/glob.js +234 -56
- package/dist/internal/glob.js.map +1 -1
- package/dist/internal/graphql.js +21 -7
- package/dist/internal/graphql.js.map +1 -1
- package/dist/internal/graphqlHeaders.d.ts +7 -0
- package/dist/internal/graphqlHeaders.d.ts.map +1 -1
- package/dist/internal/graphqlHeaders.js +11 -0
- package/dist/internal/graphqlHeaders.js.map +1 -1
- package/dist/internal/jsonParser.d.ts +5 -0
- package/dist/internal/jsonParser.d.ts.map +1 -0
- package/dist/internal/jsonParser.js +280 -0
- package/dist/internal/jsonParser.js.map +1 -0
- package/dist/internal/persistence.js +8 -1
- package/dist/internal/persistence.js.map +1 -1
- package/dist/internal/request.js +29 -42
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/sql.js +16 -0
- package/dist/internal/sql.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/jose/JoseError.d.ts +285 -0
- package/dist/jose/JoseError.d.ts.map +1 -0
- package/dist/jose/JoseError.js +269 -0
- package/dist/jose/JoseError.js.map +1 -0
- package/dist/jose/Jwe.d.ts +128 -0
- package/dist/jose/Jwe.d.ts.map +1 -0
- package/dist/jose/Jwe.js +134 -0
- package/dist/jose/Jwe.js.map +1 -0
- package/dist/jose/Jwk.d.ts +597 -0
- package/dist/jose/Jwk.d.ts.map +1 -0
- package/dist/jose/Jwk.js +503 -0
- package/dist/jose/Jwk.js.map +1 -0
- package/dist/jose/Jwks.d.ts +236 -0
- package/dist/jose/Jwks.d.ts.map +1 -0
- package/dist/jose/Jwks.js +306 -0
- package/dist/jose/Jwks.js.map +1 -0
- package/dist/jose/Jws.d.ts +177 -0
- package/dist/jose/Jws.d.ts.map +1 -0
- package/dist/jose/Jws.js +183 -0
- package/dist/jose/Jws.js.map +1 -0
- package/dist/jose/Jwt.d.ts +270 -0
- package/dist/jose/Jwt.d.ts.map +1 -0
- package/dist/jose/Jwt.js +293 -0
- package/dist/jose/Jwt.js.map +1 -0
- package/dist/jose/index.d.ts +51 -0
- package/dist/jose/index.d.ts.map +1 -0
- package/dist/jose/index.js +52 -0
- package/dist/jose/index.js.map +1 -0
- package/dist/jose/internal/compact.d.ts +2 -0
- package/dist/jose/internal/compact.d.ts.map +1 -0
- package/dist/jose/internal/compact.js +179 -0
- package/dist/jose/internal/compact.js.map +1 -0
- package/dist/net/Host.d.ts.map +1 -1
- package/dist/net/Host.js +5 -10
- package/dist/net/Host.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts +4 -0
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +40 -12
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpSerialization.d.ts +1 -1
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +10 -4
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/internal/otlpProtobuf.js +3 -3
- package/dist/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/observability/internal/protobuf.js +6 -0
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +98 -38
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
- package/dist/persistence/CircuitBreaker.js +67 -29
- package/dist/persistence/CircuitBreaker.js.map +1 -1
- package/dist/persistence/RateLimiter.d.ts +15 -0
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +76 -16
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/index.d.ts +1 -1
- package/dist/persistence/index.js +1 -1
- package/dist/reactivity/AtomRegistry.js +17 -7
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +1 -1
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +14 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +38 -21
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcMessage.d.ts +3 -2
- package/dist/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/rpc/RpcMessage.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +10 -1
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/sql/Migrator.d.ts +9 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +18 -6
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +46 -3
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +40 -15
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +46 -3
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +32 -26
- package/dist/sql/Statement.js.map +1 -1
- package/dist/workflow/Workflow.d.ts +4 -0
- package/dist/workflow/Workflow.d.ts.map +1 -1
- package/dist/workflow/Workflow.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +5 -0
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +7 -3
- package/src/BigDecimal.ts +170 -16
- package/src/ByteSize.ts +29 -14
- package/src/Equal.ts +3 -3
- package/src/Hash.ts +5 -4
- package/src/Iterable.ts +28 -19
- package/src/JsonSchema.ts +45 -7
- package/src/MutableRef.ts +1 -8
- package/src/Path.ts +6 -1
- package/src/Pool.ts +2 -1
- package/src/Ref.ts +0 -8
- package/src/Schedule.ts +8 -6
- package/src/Schema.ts +3 -2
- package/src/SchemaRepresentation.ts +4 -2
- package/src/SchemaTransformation.ts +2 -2
- package/src/Stream.ts +6 -5
- package/src/ai/McpClient.ts +488 -91
- package/src/ai/McpSchema.ts +119 -0
- package/src/ai/McpServer.ts +302 -56
- package/src/ai/Prompt.ts +16 -11
- package/src/ai/Tool.ts +5 -10
- package/src/ai/internal/mcpCore.ts +165 -12
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +42 -9
- package/src/ai/internal/mcpProtocol.ts +15 -0
- package/src/ai/internal/mcpRuntime.ts +6 -3
- package/src/ai/internal/mcpSkills.ts +480 -0
- package/src/ai/internal/structured-output.ts +10 -4
- package/src/cluster/ClusterWorkflowEngine.ts +48 -33
- package/src/cluster/Entity.ts +52 -0
- package/src/cluster/MessageStorage.ts +3 -6
- package/src/cluster/Reply.ts +1 -1
- package/src/cluster/Runners.ts +16 -2
- package/src/cluster/Sharding.ts +17 -1
- package/src/cluster/internal/clusterAbandon.ts +7 -7
- package/src/cluster/internal/entityManager.ts +89 -15
- package/src/cluster/internal/transactionNotifications.ts +7 -0
- package/src/crypto/Aead.ts +3 -3
- package/src/crypto/Cipher.ts +3 -3
- package/src/crypto/KeyAgreement.ts +4 -4
- package/src/crypto/KeyFormat.ts +30 -1
- package/src/crypto/KeyWrap.ts +6 -6
- package/src/crypto/Mac.ts +3 -3
- package/src/crypto/Signature.ts +4 -4
- package/src/crypto/WebCrypto.ts +20 -0
- package/src/crypto/internal/asymmetric.ts +2 -1
- package/src/crypto/internal/key.ts +12 -5
- package/src/encoding/Base64Url.ts +27 -3
- package/src/encoding/Json5.ts +59 -0
- package/src/encoding/Jsonc.ts +126 -0
- package/src/encoding/Ndjson.ts +6 -5
- package/src/encoding/SchemaBinary.ts +228 -7
- package/src/encoding/Sse.ts +5 -3
- package/src/encoding/index.ts +12 -0
- package/src/eventlog/EventLog.ts +7 -0
- package/src/eventlog/EventLogServer.ts +67 -24
- package/src/eventlog/EventLogServerEncrypted.ts +5 -0
- package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
- package/src/eventlog/EventLogSessionAuth.ts +26 -0
- package/src/graphql/GraphQLClient.ts +3 -1
- package/src/graphql/GraphQLClientError.ts +15 -22
- package/src/graphql/GraphQLProtocol.ts +12 -3
- package/src/http/HttpClient.ts +244 -33
- package/src/http/HttpServerRequest.ts +61 -23
- package/src/http/internal/mimeTypes.ts +4 -1
- package/src/http-api/HttpApiSchema.ts +1 -1
- package/src/internal/dateTime.ts +80 -27
- package/src/internal/effect.ts +6 -0
- package/src/internal/glob.ts +279 -63
- package/src/internal/graphql.ts +27 -9
- package/src/internal/graphqlHeaders.ts +13 -0
- package/src/internal/jsonParser.ts +307 -0
- package/src/internal/persistence.ts +9 -1
- package/src/internal/request.ts +51 -58
- package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
- package/src/internal/sql.ts +25 -0
- package/src/internal/version.ts +1 -1
- package/src/jose/JoseError.ts +329 -0
- package/src/jose/Jwe.ts +196 -0
- package/src/jose/Jwk.ts +777 -0
- package/src/jose/Jwks.ts +418 -0
- package/src/jose/Jws.ts +312 -0
- package/src/jose/Jwt.ts +493 -0
- package/src/jose/index.ts +58 -0
- package/src/jose/internal/compact.ts +195 -0
- package/src/net/Host.ts +5 -10
- package/src/observability/OtlpExporter.ts +42 -18
- package/src/observability/OtlpSerialization.ts +13 -5
- package/src/observability/internal/otlpProtobuf.ts +6 -6
- package/src/observability/internal/protobuf.ts +10 -0
- package/src/persistence/CircuitBreaker.ts +113 -48
- package/src/persistence/RateLimiter.ts +97 -19
- package/src/persistence/index.ts +1 -1
- package/src/reactivity/AtomRegistry.ts +19 -8
- package/src/rpc/Rpc.ts +3 -1
- package/src/rpc/RpcClient.ts +44 -24
- package/src/rpc/RpcMessage.ts +3 -2
- package/src/rpc/RpcServer.ts +12 -1
- package/src/sql/Migrator.ts +35 -18
- package/src/sql/SqlClient.ts +91 -22
- package/src/sql/Statement.ts +60 -35
- package/src/workflow/Workflow.ts +4 -0
- package/src/workflow/WorkflowEngine.ts +5 -0
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
* a failed one reopens it. An interrupted or `Ignored` probe frees the slot.
|
|
15
15
|
* - The backoff count survives a close. It resets once the circuit has stayed
|
|
16
16
|
* closed as long as it was last open.
|
|
17
|
+
* - Calls that must always run pass `onRejection: "allow"`. The circuit
|
|
18
|
+
* records them when it would admit them, and runs them unrecorded when it
|
|
19
|
+
* would refuse them, as in "Recording calls that must always run" below.
|
|
17
20
|
*
|
|
18
21
|
* The breaker never waits. Retry rejections outside it, as in "Retrying
|
|
19
22
|
* rejections" below. Put `Effect.retry` and `Effect.timeout` inside it, so it
|
|
@@ -118,8 +121,38 @@
|
|
|
118
121
|
* await Effect.runPromise(program) // => 42
|
|
119
122
|
* ```
|
|
120
123
|
*
|
|
124
|
+
* **Example** (Recording calls that must always run)
|
|
125
|
+
*
|
|
126
|
+
* The write runs even while the circuit is open, and its failures still open
|
|
127
|
+
* the circuit for the reads that share the key.
|
|
128
|
+
*
|
|
129
|
+
* ```ts import.meta.vitest
|
|
130
|
+
* import { Data, Effect } from "effect"
|
|
131
|
+
* import { CircuitBreaker } from "effect/persistence"
|
|
132
|
+
*
|
|
133
|
+
* class LedgerError extends Data.TaggedError("LedgerError") {}
|
|
134
|
+
*
|
|
135
|
+
* const program = Effect.gen(function*() {
|
|
136
|
+
* const breaker = yield* CircuitBreaker.make({
|
|
137
|
+
* tripPolicy: CircuitBreaker.consecutive(1),
|
|
138
|
+
* openDuration: "30 seconds"
|
|
139
|
+
* })
|
|
140
|
+
* const write = Effect.fail(new LedgerError()).pipe(
|
|
141
|
+
* breaker.execute({ key: "ledger", onRejection: "allow" })
|
|
142
|
+
* )
|
|
143
|
+
*
|
|
144
|
+
* // The first failed write opens the circuit, and the second still runs.
|
|
145
|
+
* yield* Effect.flip(write)
|
|
146
|
+
* const error = yield* Effect.flip(write)
|
|
147
|
+
* const state = yield* breaker.state("ledger")
|
|
148
|
+
* return [error._tag, state._tag]
|
|
149
|
+
* }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
|
|
150
|
+
*
|
|
151
|
+
* await Effect.runPromise(program) // => ["LedgerError", "Open"]
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
121
154
|
* @stability experimental
|
|
122
|
-
* @since 4.0.
|
|
155
|
+
* @since 4.0.7
|
|
123
156
|
*/
|
|
124
157
|
import * as Cause from "../Cause.ts"
|
|
125
158
|
import * as Clock from "../Clock.ts"
|
|
@@ -145,7 +178,7 @@ import * as Redis from "./Redis.ts"
|
|
|
145
178
|
*
|
|
146
179
|
* @stability experimental
|
|
147
180
|
* @category type IDs
|
|
148
|
-
* @since 4.0.
|
|
181
|
+
* @since 4.0.7
|
|
149
182
|
*/
|
|
150
183
|
export const TypeId: TypeId = "~effect/persistence/CircuitBreaker"
|
|
151
184
|
|
|
@@ -154,7 +187,7 @@ export const TypeId: TypeId = "~effect/persistence/CircuitBreaker"
|
|
|
154
187
|
*
|
|
155
188
|
* @stability experimental
|
|
156
189
|
* @category type IDs
|
|
157
|
-
* @since 4.0.
|
|
190
|
+
* @since 4.0.7
|
|
158
191
|
*/
|
|
159
192
|
export type TypeId = "~effect/persistence/CircuitBreaker"
|
|
160
193
|
|
|
@@ -168,6 +201,13 @@ export type TypeId = "~effect/persistence/CircuitBreaker"
|
|
|
168
201
|
* an effect. By default a success is a `Success` and any failure, defects
|
|
169
202
|
* included, is a `Failure`, since a rejected `Effect.promise` only surfaces
|
|
170
203
|
* as a defect. An exit that is only interruption is always `Ignored`.
|
|
204
|
+
* `classify` also receives `{ probe }`, which is `true` when the call is the
|
|
205
|
+
* HalfOpen probe, so an outcome it would otherwise ignore can reopen the
|
|
206
|
+
* circuit.
|
|
207
|
+
* `onRejection` decides what a call does when the circuit refuses it:
|
|
208
|
+
* `"fail"` (the default) fails it with `CircuitOpen` or `CircuitHalfOpen`,
|
|
209
|
+
* `"allow"` runs it unrecorded. An admitted call, probe included, is
|
|
210
|
+
* recorded as usual.
|
|
171
211
|
* - `state` reads the shared state of a circuit.
|
|
172
212
|
* - `transitions` emits this breaker's transitions and ends when its scope
|
|
173
213
|
* closes.
|
|
@@ -336,7 +376,7 @@ export type TypeId = "~effect/persistence/CircuitBreaker"
|
|
|
336
376
|
*
|
|
337
377
|
* @stability experimental
|
|
338
378
|
* @category models
|
|
339
|
-
* @since 4.0.
|
|
379
|
+
* @since 4.0.7
|
|
340
380
|
*/
|
|
341
381
|
export interface CircuitBreaker {
|
|
342
382
|
readonly [TypeId]: TypeId
|
|
@@ -344,13 +384,15 @@ export interface CircuitBreaker {
|
|
|
344
384
|
readonly execute: {
|
|
345
385
|
<A, E, R2 = never>(options: {
|
|
346
386
|
readonly key: string
|
|
347
|
-
readonly classify?:
|
|
387
|
+
readonly classify?: Classifier<A, E, R2> | undefined
|
|
388
|
+
readonly onRejection?: "fail" | "allow" | undefined
|
|
348
389
|
}): <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | CircuitBreakerError, R | R2>
|
|
349
390
|
<A, E, R, R2 = never>(
|
|
350
391
|
self: Effect.Effect<A, E, R>,
|
|
351
392
|
options: {
|
|
352
393
|
readonly key: string
|
|
353
|
-
readonly classify?:
|
|
394
|
+
readonly classify?: Classifier<A, E, R2> | undefined
|
|
395
|
+
readonly onRejection?: "fail" | "allow" | undefined
|
|
354
396
|
}
|
|
355
397
|
): Effect.Effect<A, E | CircuitBreakerError, R | R2>
|
|
356
398
|
}
|
|
@@ -398,7 +440,7 @@ export interface CircuitBreaker {
|
|
|
398
440
|
*
|
|
399
441
|
* @stability experimental
|
|
400
442
|
* @category services
|
|
401
|
-
* @since 4.0.
|
|
443
|
+
* @since 4.0.7
|
|
402
444
|
*/
|
|
403
445
|
export const CircuitBreaker: Context.Service<CircuitBreaker, CircuitBreaker> = Context.Service<CircuitBreaker>(
|
|
404
446
|
TypeId
|
|
@@ -447,7 +489,7 @@ export const CircuitBreaker: Context.Service<CircuitBreaker, CircuitBreaker> = C
|
|
|
447
489
|
*
|
|
448
490
|
* @stability experimental
|
|
449
491
|
* @category constructors
|
|
450
|
-
* @since 4.0.
|
|
492
|
+
* @since 4.0.7
|
|
451
493
|
*/
|
|
452
494
|
export const make: (options: {
|
|
453
495
|
readonly tripPolicy: TripPolicy
|
|
@@ -486,9 +528,10 @@ export const make: (options: {
|
|
|
486
528
|
|
|
487
529
|
const execute = <A, E, R, R2>(
|
|
488
530
|
self: Effect.Effect<A, E, R>,
|
|
489
|
-
{ classify, key }: {
|
|
531
|
+
{ classify, key, onRejection }: {
|
|
490
532
|
readonly key: string
|
|
491
|
-
readonly classify?:
|
|
533
|
+
readonly classify?: Classifier<A, E, R2> | undefined
|
|
534
|
+
readonly onRejection?: "fail" | "allow" | undefined
|
|
492
535
|
}
|
|
493
536
|
): Effect.Effect<A, E | CircuitBreakerError, R | R2> =>
|
|
494
537
|
Effect.uninterruptibleMask((restore) =>
|
|
@@ -496,19 +539,20 @@ export const make: (options: {
|
|
|
496
539
|
const admitted = yield* Effect.exit(Scope.provide(store.admit(key), admitScope))
|
|
497
540
|
if (Exit.isFailure(admitted)) {
|
|
498
541
|
const error = Cause.findErrorOption(admitted.cause)
|
|
499
|
-
if (
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
542
|
+
if (error._tag === "None") return yield* Effect.failCause(admitted.cause)
|
|
543
|
+
if (error.value.reason._tag !== "CircuitBreakerStoreError") {
|
|
544
|
+
return onRejection === "allow" && !Cause.hasDies(admitted.cause)
|
|
545
|
+
? yield* restore(self)
|
|
546
|
+
: yield* Effect.failCause(admitted.cause)
|
|
504
547
|
}
|
|
548
|
+
if (onStoreError === "fail") return yield* Effect.failCause(admitted.cause)
|
|
505
549
|
yield* reportUnhandled("CircuitBreaker store unavailable, running the call unrecorded", admitted.cause)
|
|
506
550
|
return yield* restore(self)
|
|
507
551
|
}
|
|
508
552
|
const admission = admitted.value
|
|
509
553
|
yield* publish(admission.transition)
|
|
510
554
|
const exit = yield* Effect.exit(restore(self))
|
|
511
|
-
const classified = yield* classifyExit(exit, classify, restore)
|
|
555
|
+
const classified = yield* classifyExit(exit, admission.probe, classify, restore)
|
|
512
556
|
const outcome = Exit.isSuccess(classified) ? classified.value : ignored
|
|
513
557
|
yield* store.record({
|
|
514
558
|
key,
|
|
@@ -548,7 +592,7 @@ export const make: (options: {
|
|
|
548
592
|
*
|
|
549
593
|
* @stability experimental
|
|
550
594
|
* @category layers
|
|
551
|
-
* @since 4.0.
|
|
595
|
+
* @since 4.0.7
|
|
552
596
|
*/
|
|
553
597
|
export const layer = (options: {
|
|
554
598
|
readonly tripPolicy: TripPolicy
|
|
@@ -569,7 +613,8 @@ const reportUnhandled = (message: string, cause: Cause.Cause<unknown>): Effect.E
|
|
|
569
613
|
|
|
570
614
|
const classifyExit = <A, E, R2>(
|
|
571
615
|
exit: Exit.Exit<A, E>,
|
|
572
|
-
|
|
616
|
+
probe: boolean,
|
|
617
|
+
classify: Classifier<A, E, R2> | undefined,
|
|
573
618
|
restore: <AX, EX, RX>(effect: Effect.Effect<AX, EX, RX>) => Effect.Effect<AX, EX, RX>
|
|
574
619
|
): Effect.Effect<Exit.Exit<Outcome>, never, R2> => {
|
|
575
620
|
if (Exit.isFailure(exit) && Cause.hasInterruptsOnly(exit.cause)) {
|
|
@@ -579,7 +624,7 @@ const classifyExit = <A, E, R2>(
|
|
|
579
624
|
return Effect.succeed(Exit.succeed(Exit.isSuccess(exit) ? success : failure()))
|
|
580
625
|
}
|
|
581
626
|
return Effect.exit(restore(Effect.suspend(() => {
|
|
582
|
-
const outcome = classify(exit)
|
|
627
|
+
const outcome = classify(exit, { probe })
|
|
583
628
|
return Effect.isEffect(outcome) ? outcome : Effect.succeed(outcome)
|
|
584
629
|
})))
|
|
585
630
|
}
|
|
@@ -623,7 +668,7 @@ const makeOpenDuration = (
|
|
|
623
668
|
*
|
|
624
669
|
* @stability experimental
|
|
625
670
|
* @category models
|
|
626
|
-
* @since 4.0.
|
|
671
|
+
* @since 4.0.7
|
|
627
672
|
*/
|
|
628
673
|
export type TripPolicy =
|
|
629
674
|
| { readonly _tag: "Consecutive"; readonly failures: number }
|
|
@@ -638,7 +683,7 @@ export type TripPolicy =
|
|
|
638
683
|
*
|
|
639
684
|
* @stability experimental
|
|
640
685
|
* @category constructors
|
|
641
|
-
* @since 4.0.
|
|
686
|
+
* @since 4.0.7
|
|
642
687
|
*/
|
|
643
688
|
export const consecutive = (failures: number): TripPolicy => {
|
|
644
689
|
if (!Number.isInteger(failures) || failures < 1) {
|
|
@@ -665,7 +710,7 @@ export const consecutive = (failures: number): TripPolicy => {
|
|
|
665
710
|
*
|
|
666
711
|
* @stability experimental
|
|
667
712
|
* @category constructors
|
|
668
|
-
* @since 4.0.
|
|
713
|
+
* @since 4.0.7
|
|
669
714
|
*/
|
|
670
715
|
export const rate = (options: {
|
|
671
716
|
readonly threshold?: number | undefined
|
|
@@ -687,12 +732,32 @@ export const rate = (options: {
|
|
|
687
732
|
return { _tag: "Rate", threshold, minimumCalls, size }
|
|
688
733
|
}
|
|
689
734
|
|
|
735
|
+
/**
|
|
736
|
+
* Function that classifies the `Exit` of an admitted call, passed as the
|
|
737
|
+
* `classify` option of `execute`.
|
|
738
|
+
*
|
|
739
|
+
* **Details**
|
|
740
|
+
*
|
|
741
|
+
* - `context.probe` is `true` when the call is the HalfOpen probe, so an
|
|
742
|
+
* outcome the classifier ignores when the circuit is closed, such as a
|
|
743
|
+
* rate-limited response, can count as a failure that reopens the circuit.
|
|
744
|
+
* - The result may be an `Outcome` or an effect producing one.
|
|
745
|
+
*
|
|
746
|
+
* @stability experimental
|
|
747
|
+
* @category models
|
|
748
|
+
* @since 4.1.1
|
|
749
|
+
*/
|
|
750
|
+
export type Classifier<A, E, R2 = never> = (
|
|
751
|
+
exit: Exit.Exit<A, E>,
|
|
752
|
+
context: { readonly probe: boolean }
|
|
753
|
+
) => Outcome | Effect.Effect<Outcome, never, R2>
|
|
754
|
+
|
|
690
755
|
/**
|
|
691
756
|
* Classification of a call's exit, as returned by a `classify` function.
|
|
692
757
|
*
|
|
693
758
|
* @stability experimental
|
|
694
759
|
* @category models
|
|
695
|
-
* @since 4.0.
|
|
760
|
+
* @since 4.0.7
|
|
696
761
|
*/
|
|
697
762
|
export type Outcome = Outcome.Success | Outcome.Ignored | Outcome.Failure
|
|
698
763
|
|
|
@@ -701,7 +766,7 @@ export type Outcome = Outcome.Success | Outcome.Ignored | Outcome.Failure
|
|
|
701
766
|
*
|
|
702
767
|
* @stability experimental
|
|
703
768
|
* @category models
|
|
704
|
-
* @since 4.0.
|
|
769
|
+
* @since 4.0.7
|
|
705
770
|
*/
|
|
706
771
|
export declare namespace Outcome {
|
|
707
772
|
/**
|
|
@@ -709,7 +774,7 @@ export declare namespace Outcome {
|
|
|
709
774
|
*
|
|
710
775
|
* @stability experimental
|
|
711
776
|
* @category models
|
|
712
|
-
* @since 4.0.
|
|
777
|
+
* @since 4.0.7
|
|
713
778
|
*/
|
|
714
779
|
export interface Success {
|
|
715
780
|
readonly _tag: "Success"
|
|
@@ -720,7 +785,7 @@ export declare namespace Outcome {
|
|
|
720
785
|
*
|
|
721
786
|
* @stability experimental
|
|
722
787
|
* @category models
|
|
723
|
-
* @since 4.0.
|
|
788
|
+
* @since 4.0.7
|
|
724
789
|
*/
|
|
725
790
|
export interface Ignored {
|
|
726
791
|
readonly _tag: "Ignored"
|
|
@@ -732,7 +797,7 @@ export declare namespace Outcome {
|
|
|
732
797
|
*
|
|
733
798
|
* @stability experimental
|
|
734
799
|
* @category models
|
|
735
|
-
* @since 4.0.
|
|
800
|
+
* @since 4.0.7
|
|
736
801
|
*/
|
|
737
802
|
export interface Failure {
|
|
738
803
|
readonly _tag: "Failure"
|
|
@@ -745,7 +810,7 @@ export declare namespace Outcome {
|
|
|
745
810
|
*
|
|
746
811
|
* @stability experimental
|
|
747
812
|
* @category constructors
|
|
748
|
-
* @since 4.0.
|
|
813
|
+
* @since 4.0.7
|
|
749
814
|
*/
|
|
750
815
|
export const success: Outcome = { _tag: "Success" }
|
|
751
816
|
|
|
@@ -754,7 +819,7 @@ export const success: Outcome = { _tag: "Success" }
|
|
|
754
819
|
*
|
|
755
820
|
* @stability experimental
|
|
756
821
|
* @category constructors
|
|
757
|
-
* @since 4.0.
|
|
822
|
+
* @since 4.0.7
|
|
758
823
|
*/
|
|
759
824
|
export const ignored: Outcome = { _tag: "Ignored" }
|
|
760
825
|
|
|
@@ -769,7 +834,7 @@ export const ignored: Outcome = { _tag: "Ignored" }
|
|
|
769
834
|
*
|
|
770
835
|
* @stability experimental
|
|
771
836
|
* @category constructors
|
|
772
|
-
* @since 4.0.
|
|
837
|
+
* @since 4.0.7
|
|
773
838
|
*/
|
|
774
839
|
export const failure = (options?: { readonly retryAfter?: Duration.Input | undefined }): Outcome => ({
|
|
775
840
|
_tag: "Failure",
|
|
@@ -790,7 +855,7 @@ export const failure = (options?: { readonly retryAfter?: Duration.Input | undef
|
|
|
790
855
|
*
|
|
791
856
|
* @stability experimental
|
|
792
857
|
* @category models
|
|
793
|
-
* @since 4.0.
|
|
858
|
+
* @since 4.0.7
|
|
794
859
|
*/
|
|
795
860
|
export type State =
|
|
796
861
|
| { readonly _tag: "Closed"; readonly key: string }
|
|
@@ -813,7 +878,7 @@ export type State =
|
|
|
813
878
|
*
|
|
814
879
|
* @stability experimental
|
|
815
880
|
* @category models
|
|
816
|
-
* @since 4.0.
|
|
881
|
+
* @since 4.0.7
|
|
817
882
|
*/
|
|
818
883
|
export type Transition =
|
|
819
884
|
| {
|
|
@@ -831,7 +896,7 @@ export type Transition =
|
|
|
831
896
|
*
|
|
832
897
|
* @stability experimental
|
|
833
898
|
* @category errors
|
|
834
|
-
* @since 4.0.
|
|
899
|
+
* @since 4.0.7
|
|
835
900
|
*/
|
|
836
901
|
export class CircuitOpen extends Schema.Error<CircuitOpen>("effect/persistence/CircuitBreaker/CircuitOpen")({
|
|
837
902
|
_tag: Schema.tag("CircuitOpen"),
|
|
@@ -842,7 +907,7 @@ export class CircuitOpen extends Schema.Error<CircuitOpen>("effect/persistence/C
|
|
|
842
907
|
* Public message used when an Open circuit rejects a call.
|
|
843
908
|
*
|
|
844
909
|
* @stability experimental
|
|
845
|
-
* @since 4.0.
|
|
910
|
+
* @since 4.0.7
|
|
846
911
|
*/
|
|
847
912
|
override get message(): string {
|
|
848
913
|
return `Circuit open`
|
|
@@ -854,7 +919,7 @@ export class CircuitOpen extends Schema.Error<CircuitOpen>("effect/persistence/C
|
|
|
854
919
|
*
|
|
855
920
|
* @stability experimental
|
|
856
921
|
* @category errors
|
|
857
|
-
* @since 4.0.
|
|
922
|
+
* @since 4.0.7
|
|
858
923
|
*/
|
|
859
924
|
export class CircuitHalfOpen extends Schema.Error<CircuitHalfOpen>(
|
|
860
925
|
"effect/persistence/CircuitBreaker/CircuitHalfOpen"
|
|
@@ -866,7 +931,7 @@ export class CircuitHalfOpen extends Schema.Error<CircuitHalfOpen>(
|
|
|
866
931
|
* Public message used when a HalfOpen circuit rejects a call.
|
|
867
932
|
*
|
|
868
933
|
* @stability experimental
|
|
869
|
-
* @since 4.0.
|
|
934
|
+
* @since 4.0.7
|
|
870
935
|
*/
|
|
871
936
|
override get message(): string {
|
|
872
937
|
return `Circuit half-open`
|
|
@@ -878,7 +943,7 @@ export class CircuitHalfOpen extends Schema.Error<CircuitHalfOpen>(
|
|
|
878
943
|
*
|
|
879
944
|
* @stability experimental
|
|
880
945
|
* @category errors
|
|
881
|
-
* @since 4.0.
|
|
946
|
+
* @since 4.0.7
|
|
882
947
|
*/
|
|
883
948
|
export class CircuitBreakerStoreError extends Schema.Error<CircuitBreakerStoreError>(
|
|
884
949
|
"effect/persistence/CircuitBreaker/CircuitBreakerStoreError"
|
|
@@ -893,7 +958,7 @@ export class CircuitBreakerStoreError extends Schema.Error<CircuitBreakerStoreEr
|
|
|
893
958
|
*
|
|
894
959
|
* @stability experimental
|
|
895
960
|
* @category errors
|
|
896
|
-
* @since 4.0.
|
|
961
|
+
* @since 4.0.7
|
|
897
962
|
*/
|
|
898
963
|
export type CircuitBreakerErrorReason = CircuitOpen | CircuitHalfOpen | CircuitBreakerStoreError
|
|
899
964
|
|
|
@@ -902,7 +967,7 @@ export type CircuitBreakerErrorReason = CircuitOpen | CircuitHalfOpen | CircuitB
|
|
|
902
967
|
*
|
|
903
968
|
* @stability experimental
|
|
904
969
|
* @category errors
|
|
905
|
-
* @since 4.0.
|
|
970
|
+
* @since 4.0.7
|
|
906
971
|
*/
|
|
907
972
|
export const CircuitBreakerErrorReason: Schema.Union<[
|
|
908
973
|
typeof CircuitOpen,
|
|
@@ -915,7 +980,7 @@ export const CircuitBreakerErrorReason: Schema.Union<[
|
|
|
915
980
|
*
|
|
916
981
|
* @stability experimental
|
|
917
982
|
* @category type IDs
|
|
918
|
-
* @since 4.0.
|
|
983
|
+
* @since 4.0.7
|
|
919
984
|
*/
|
|
920
985
|
export const ErrorTypeId: ErrorTypeId = "~effect/persistence/CircuitBreaker/CircuitBreakerError"
|
|
921
986
|
|
|
@@ -924,7 +989,7 @@ export const ErrorTypeId: ErrorTypeId = "~effect/persistence/CircuitBreaker/Circ
|
|
|
924
989
|
*
|
|
925
990
|
* @stability experimental
|
|
926
991
|
* @category type IDs
|
|
927
|
-
* @since 4.0.
|
|
992
|
+
* @since 4.0.7
|
|
928
993
|
*/
|
|
929
994
|
export type ErrorTypeId = "~effect/persistence/CircuitBreaker/CircuitBreakerError"
|
|
930
995
|
|
|
@@ -934,7 +999,7 @@ export type ErrorTypeId = "~effect/persistence/CircuitBreaker/CircuitBreakerErro
|
|
|
934
999
|
*
|
|
935
1000
|
* @stability experimental
|
|
936
1001
|
* @category errors
|
|
937
|
-
* @since 4.0.
|
|
1002
|
+
* @since 4.0.7
|
|
938
1003
|
*/
|
|
939
1004
|
export class CircuitBreakerError extends Schema.Error<CircuitBreakerError>(ErrorTypeId)({
|
|
940
1005
|
_tag: Schema.tag("CircuitBreakerError"),
|
|
@@ -958,7 +1023,7 @@ export class CircuitBreakerError extends Schema.Error<CircuitBreakerError>(Error
|
|
|
958
1023
|
* Marks this value as a circuit breaker error for runtime guards.
|
|
959
1024
|
*
|
|
960
1025
|
* @stability experimental
|
|
961
|
-
* @since 4.0.
|
|
1026
|
+
* @since 4.0.7
|
|
962
1027
|
*/
|
|
963
1028
|
readonly [ErrorTypeId]: ErrorTypeId = ErrorTypeId
|
|
964
1029
|
|
|
@@ -987,7 +1052,7 @@ export class CircuitBreakerError extends Schema.Error<CircuitBreakerError>(Error
|
|
|
987
1052
|
*
|
|
988
1053
|
* @stability experimental
|
|
989
1054
|
* @category services
|
|
990
|
-
* @since 4.0.
|
|
1055
|
+
* @since 4.0.7
|
|
991
1056
|
*/
|
|
992
1057
|
export class CircuitBreakerStore extends Context.Service<CircuitBreakerStore, {
|
|
993
1058
|
readonly admit: (key: string) => Effect.Effect<Admission, CircuitBreakerError, Scope.Scope>
|
|
@@ -1014,7 +1079,7 @@ export class CircuitBreakerStore extends Context.Service<CircuitBreakerStore, {
|
|
|
1014
1079
|
*
|
|
1015
1080
|
* @stability experimental
|
|
1016
1081
|
* @category models
|
|
1017
|
-
* @since 4.0.
|
|
1082
|
+
* @since 4.0.7
|
|
1018
1083
|
*/
|
|
1019
1084
|
export interface Admission {
|
|
1020
1085
|
readonly generation: number
|
|
@@ -1049,7 +1114,7 @@ interface MemoryEntry {
|
|
|
1049
1114
|
*
|
|
1050
1115
|
* @stability experimental
|
|
1051
1116
|
* @category layers
|
|
1052
|
-
* @since 4.0.
|
|
1117
|
+
* @since 4.0.7
|
|
1053
1118
|
*/
|
|
1054
1119
|
export const layerStoreMemory = (options?: {
|
|
1055
1120
|
readonly idleTimeToLive?: Duration.Input | undefined
|
|
@@ -1257,7 +1322,7 @@ export const layerStoreMemory = (options?: {
|
|
|
1257
1322
|
*
|
|
1258
1323
|
* @stability experimental
|
|
1259
1324
|
* @category layers
|
|
1260
|
-
* @since 4.0.
|
|
1325
|
+
* @since 4.0.7
|
|
1261
1326
|
*/
|
|
1262
1327
|
export const layerStoreRedis = (options?: {
|
|
1263
1328
|
readonly prefix?: string | undefined
|
|
@@ -1275,7 +1340,7 @@ export const layerStoreRedis = (options?: {
|
|
|
1275
1340
|
*
|
|
1276
1341
|
* @stability experimental
|
|
1277
1342
|
* @category layers
|
|
1278
|
-
* @since 4.0.
|
|
1343
|
+
* @since 4.0.7
|
|
1279
1344
|
*/
|
|
1280
1345
|
export const layerStoreRedisConfig = (
|
|
1281
1346
|
options: Config.Wrap<{
|