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
|
@@ -651,6 +651,132 @@ export function fieldId(id) {
|
|
|
651
651
|
return self => self.rebuild(annotateLastLink(SchemaAST.annotateKey(self.ast, annotations)));
|
|
652
652
|
}
|
|
653
653
|
const FIELD_ID_ANNOTATION_KEY = "~effect/encoding/SchemaBinary/fieldId";
|
|
654
|
+
// Marks the check that opts a number or bigint into a fixed-width encoding.
|
|
655
|
+
// It lives on a check, not the AST, so later annotations and checks keep it.
|
|
656
|
+
const FIXED_WIDTH_ANNOTATION_KEY = "~effect/encoding/SchemaBinary/fixedWidth";
|
|
657
|
+
const BIGINT_I64_MIN = /*#__PURE__*/BigInt("-9223372036854775808");
|
|
658
|
+
const BIGINT_I64_MAX = /*#__PURE__*/BigInt("9223372036854775807");
|
|
659
|
+
const BIGINT_U64_MAX = /*#__PURE__*/BigInt("18446744073709551615");
|
|
660
|
+
/**
|
|
661
|
+
* A 32-bit signed integer written as four little-endian bytes.
|
|
662
|
+
*
|
|
663
|
+
* **When to use**
|
|
664
|
+
*
|
|
665
|
+
* Use when values regularly need more than four bytes as a varint, such as
|
|
666
|
+
* hashes or full-range ids. Small values are cheaper as `Schema.Int`.
|
|
667
|
+
*
|
|
668
|
+
* **Details**
|
|
669
|
+
*
|
|
670
|
+
* Rejects non-integers and values outside -2147483648 through 2147483647
|
|
671
|
+
* instead of truncating them. `-0` is written as `0`.
|
|
672
|
+
*
|
|
673
|
+
* **Gotchas**
|
|
674
|
+
*
|
|
675
|
+
* Switching a field between this, {@link uint32}, `Schema.Number` or
|
|
676
|
+
* `Schema.Int` changes its encoding, so it is not a compatible evolution. In
|
|
677
|
+
* default mode the other reader can decode a different value without an error,
|
|
678
|
+
* for example after a signedness swap or inside an array of structs.
|
|
679
|
+
* Fingerprint mode rejects the layout mismatch.
|
|
680
|
+
*
|
|
681
|
+
* **Example** (Declaring fixed-width integer fields)
|
|
682
|
+
*
|
|
683
|
+
* ```ts
|
|
684
|
+
* import { Schema } from "effect"
|
|
685
|
+
* import { SchemaBinary } from "effect/encoding"
|
|
686
|
+
*
|
|
687
|
+
* const Packet = Schema.Struct({
|
|
688
|
+
* version: SchemaBinary.uint32,
|
|
689
|
+
* offset: SchemaBinary.int32,
|
|
690
|
+
* sequence: SchemaBinary.uint64,
|
|
691
|
+
* timestamp: SchemaBinary.int64
|
|
692
|
+
* })
|
|
693
|
+
* ```
|
|
694
|
+
*
|
|
695
|
+
* @stability unstable
|
|
696
|
+
* @category schemas
|
|
697
|
+
* @since 4.0.0
|
|
698
|
+
*/
|
|
699
|
+
export const int32 = /*#__PURE__*/Schema.Number.check(/*#__PURE__*/Schema.isInt32({
|
|
700
|
+
[FIXED_WIDTH_ANNOTATION_KEY]: "i32"
|
|
701
|
+
}));
|
|
702
|
+
/**
|
|
703
|
+
* A 32-bit unsigned integer written as four little-endian bytes.
|
|
704
|
+
*
|
|
705
|
+
* **Details**
|
|
706
|
+
*
|
|
707
|
+
* Rejects non-integers and values outside 0 through 4294967295 instead of
|
|
708
|
+
* wrapping them. See {@link int32} for when a fixed width pays off.
|
|
709
|
+
*
|
|
710
|
+
* @stability unstable
|
|
711
|
+
* @category schemas
|
|
712
|
+
* @since 4.0.0
|
|
713
|
+
*/
|
|
714
|
+
export const uint32 = /*#__PURE__*/Schema.Number.check(/*#__PURE__*/Schema.isUint32({
|
|
715
|
+
[FIXED_WIDTH_ANNOTATION_KEY]: "u32"
|
|
716
|
+
}));
|
|
717
|
+
/**
|
|
718
|
+
* A 64-bit signed integer, as a `bigint`, written as eight little-endian bytes.
|
|
719
|
+
*
|
|
720
|
+
* **Details**
|
|
721
|
+
*
|
|
722
|
+
* Rejects values outside -2^63 through 2^63 - 1 instead of wrapping them. As a
|
|
723
|
+
* struct field it costs one length byte more than the payload, because the
|
|
724
|
+
* eight-byte field kind belongs to floating-point numbers.
|
|
725
|
+
*
|
|
726
|
+
* **Gotchas**
|
|
727
|
+
*
|
|
728
|
+
* Switching a field between this, {@link uint64} or `Schema.BigInt` is not a
|
|
729
|
+
* compatible evolution. All three are length-prefixed struct fields, and eight
|
|
730
|
+
* bytes can be valid for each, so a default-mode reader may decode the other
|
|
731
|
+
* form as a different value without an error. Fingerprint mode rejects the
|
|
732
|
+
* layout mismatch.
|
|
733
|
+
*
|
|
734
|
+
* @stability unstable
|
|
735
|
+
* @category schemas
|
|
736
|
+
* @since 4.0.0
|
|
737
|
+
*/
|
|
738
|
+
export const int64 = /*#__PURE__*/Schema.BigInt.check(/*#__PURE__*/Schema.isBetweenBigInt({
|
|
739
|
+
minimum: BIGINT_I64_MIN,
|
|
740
|
+
maximum: BIGINT_I64_MAX
|
|
741
|
+
}, {
|
|
742
|
+
expected: "a 64-bit integer",
|
|
743
|
+
[FIXED_WIDTH_ANNOTATION_KEY]: "i64"
|
|
744
|
+
}));
|
|
745
|
+
/**
|
|
746
|
+
* A 64-bit unsigned integer, as a `bigint`, written as eight little-endian
|
|
747
|
+
* bytes.
|
|
748
|
+
*
|
|
749
|
+
* **Details**
|
|
750
|
+
*
|
|
751
|
+
* Rejects values outside 0 through 2^64 - 1 instead of wrapping them. See
|
|
752
|
+
* {@link int64} for the struct field cost.
|
|
753
|
+
*
|
|
754
|
+
* **Gotchas**
|
|
755
|
+
*
|
|
756
|
+
* Switching a field between this, {@link int64} or `Schema.BigInt` can decode
|
|
757
|
+
* as a different value without an error in default mode; see {@link int64}.
|
|
758
|
+
*
|
|
759
|
+
* @stability unstable
|
|
760
|
+
* @category schemas
|
|
761
|
+
* @since 4.0.0
|
|
762
|
+
*/
|
|
763
|
+
export const uint64 = /*#__PURE__*/Schema.BigInt.check(/*#__PURE__*/Schema.isBetweenBigInt({
|
|
764
|
+
minimum: /*#__PURE__*/BigInt(0),
|
|
765
|
+
maximum: BIGINT_U64_MAX
|
|
766
|
+
}, {
|
|
767
|
+
expected: "a 64-bit unsigned integer",
|
|
768
|
+
[FIXED_WIDTH_ANNOTATION_KEY]: "u64"
|
|
769
|
+
}));
|
|
770
|
+
// The fixed width the schema opted into, from any of its checks.
|
|
771
|
+
function fixedWidthKind(ast) {
|
|
772
|
+
const checks = ast.checks;
|
|
773
|
+
if (checks === undefined) return undefined;
|
|
774
|
+
for (const check of checks) {
|
|
775
|
+
const kind = check.annotations?.[FIXED_WIDTH_ANNOTATION_KEY];
|
|
776
|
+
if (kind !== undefined) return kind;
|
|
777
|
+
}
|
|
778
|
+
return undefined;
|
|
779
|
+
}
|
|
654
780
|
// Bit 0 selects fingerprint mode; all other flag bits are reserved.
|
|
655
781
|
const ENVELOPE = 0x20; // version nibble 2, flags 0
|
|
656
782
|
const ENVELOPE_FINGERPRINT = 0x21; // version nibble 2, flag bit 0
|
|
@@ -1051,6 +1177,11 @@ class Writer {
|
|
|
1051
1177
|
this.view.setBigInt64(this.start + this.len, n, true);
|
|
1052
1178
|
this.len += 8;
|
|
1053
1179
|
}
|
|
1180
|
+
u64(n) {
|
|
1181
|
+
this.ensure(8);
|
|
1182
|
+
this.view.setBigUint64(this.start + this.len, n, true);
|
|
1183
|
+
this.len += 8;
|
|
1184
|
+
}
|
|
1054
1185
|
u32le(n) {
|
|
1055
1186
|
this.ensure(4);
|
|
1056
1187
|
this.view.setUint32(this.start + this.len, n >>> 0, true);
|
|
@@ -1461,6 +1592,12 @@ class Reader {
|
|
|
1461
1592
|
this.pos += 8;
|
|
1462
1593
|
return value;
|
|
1463
1594
|
}
|
|
1595
|
+
u64() {
|
|
1596
|
+
if (this.pos + 8 > this.end) invalid("complete value", undefined, this.options);
|
|
1597
|
+
const value = (this.view ?? this.dataView()).getBigUint64(this.pos, true);
|
|
1598
|
+
this.pos += 8;
|
|
1599
|
+
return value;
|
|
1600
|
+
}
|
|
1464
1601
|
u32le() {
|
|
1465
1602
|
if (this.pos + 4 > this.end) invalid("complete value", undefined, this.options);
|
|
1466
1603
|
const value = (this.view ?? this.dataView()).getUint32(this.pos, true);
|
|
@@ -1505,7 +1642,12 @@ function packedSize(layout) {
|
|
|
1505
1642
|
return packedSize(layout.leaf);
|
|
1506
1643
|
case "bool":
|
|
1507
1644
|
return 1;
|
|
1645
|
+
case "i32":
|
|
1646
|
+
case "u32":
|
|
1647
|
+
return 4;
|
|
1508
1648
|
case "int64":
|
|
1649
|
+
case "i64":
|
|
1650
|
+
case "u64":
|
|
1509
1651
|
return 8;
|
|
1510
1652
|
default:
|
|
1511
1653
|
return undefined;
|
|
@@ -1816,9 +1958,16 @@ function compileLayout(root) {
|
|
|
1816
1958
|
case "Void":
|
|
1817
1959
|
return leaf("undefined");
|
|
1818
1960
|
case "Number":
|
|
1819
|
-
|
|
1961
|
+
{
|
|
1962
|
+
const fixed = fixedWidthKind(ast);
|
|
1963
|
+
if (fixed === "i32" || fixed === "u32") return leaf(fixed);
|
|
1964
|
+
return leaf(provesInteger(ast) ? "int" : "number");
|
|
1965
|
+
}
|
|
1820
1966
|
case "BigInt":
|
|
1821
|
-
|
|
1967
|
+
{
|
|
1968
|
+
const fixed = fixedWidthKind(ast);
|
|
1969
|
+
return leaf(fixed === "i64" || fixed === "u64" ? fixed : "bigint");
|
|
1970
|
+
}
|
|
1822
1971
|
case "Literal":
|
|
1823
1972
|
return literalLayout(leaf(literalKind(ast.literal)), [ast.literal]);
|
|
1824
1973
|
case "Unknown":
|
|
@@ -2243,7 +2392,7 @@ function isExact(root) {
|
|
|
2243
2392
|
// the cycle disqualifies it, the whole cycle is exact.
|
|
2244
2393
|
const walked = new Map();
|
|
2245
2394
|
const exact = ast => {
|
|
2246
|
-
if (ast.encoding !== undefined || ast.checks !== undefined || ast.encodingChecks !== undefined) {
|
|
2395
|
+
if (ast.encoding !== undefined || ast.checks !== undefined && !isFixedWidthOnly(ast) || ast.encodingChecks !== undefined) {
|
|
2247
2396
|
return false;
|
|
2248
2397
|
}
|
|
2249
2398
|
switch (ast._tag) {
|
|
@@ -2300,6 +2449,11 @@ function isExact(root) {
|
|
|
2300
2449
|
};
|
|
2301
2450
|
return exact(root);
|
|
2302
2451
|
}
|
|
2452
|
+
// The binary layer enforces a fixed-width check on its own, so it is exact
|
|
2453
|
+
// when no other check rides along.
|
|
2454
|
+
function isFixedWidthOnly(ast) {
|
|
2455
|
+
return (ast._tag === "Number" || ast._tag === "BigInt") && ast.checks?.length === 1 && fixedWidthKind(ast) !== undefined;
|
|
2456
|
+
}
|
|
2303
2457
|
// A clean Exit whose success schema is exact: the binary layer fully produces
|
|
2304
2458
|
// and validates success exits, so only failure exits need the schema pass for
|
|
2305
2459
|
// their cause's error and defect encodings.
|
|
@@ -2333,7 +2487,11 @@ const F = {
|
|
|
2333
2487
|
exit: 22,
|
|
2334
2488
|
cause: 23,
|
|
2335
2489
|
causeReason: 24,
|
|
2336
|
-
literal: 25
|
|
2490
|
+
literal: 25,
|
|
2491
|
+
i32: 26,
|
|
2492
|
+
u32: 27,
|
|
2493
|
+
i64: 28,
|
|
2494
|
+
u64: 29
|
|
2337
2495
|
};
|
|
2338
2496
|
// Hash the compiled layout graph, including cycle back-edge distances.
|
|
2339
2497
|
function layoutFingerprint(root) {
|
|
@@ -2374,6 +2532,10 @@ function layoutFingerprint(root) {
|
|
|
2374
2532
|
case "symbol":
|
|
2375
2533
|
case "bytes":
|
|
2376
2534
|
case "bigint":
|
|
2535
|
+
case "i32":
|
|
2536
|
+
case "u32":
|
|
2537
|
+
case "i64":
|
|
2538
|
+
case "u64":
|
|
2377
2539
|
case "json":
|
|
2378
2540
|
case "duration":
|
|
2379
2541
|
case "bigDecimal":
|
|
@@ -2518,12 +2680,16 @@ function matchesLayout(layout, value) {
|
|
|
2518
2680
|
return value === undefined;
|
|
2519
2681
|
case "number":
|
|
2520
2682
|
case "int":
|
|
2683
|
+
case "i32":
|
|
2684
|
+
case "u32":
|
|
2521
2685
|
return typeof value === "number";
|
|
2522
2686
|
case "string":
|
|
2523
2687
|
return typeof value === "string";
|
|
2524
2688
|
case "symbol":
|
|
2525
2689
|
return typeof value === "symbol";
|
|
2526
2690
|
case "bigint":
|
|
2691
|
+
case "i64":
|
|
2692
|
+
case "u64":
|
|
2527
2693
|
return typeof value === "bigint";
|
|
2528
2694
|
case "bytes":
|
|
2529
2695
|
return value instanceof Uint8Array;
|
|
@@ -2775,6 +2941,10 @@ function valueWireCode(layout, value, options) {
|
|
|
2775
2941
|
case "int":
|
|
2776
2942
|
if (!Number.isSafeInteger(value)) encodeFail("an integer", value, options);
|
|
2777
2943
|
return FIELD_WIRE_VARINT;
|
|
2944
|
+
// The payload write validates the value.
|
|
2945
|
+
case "i32":
|
|
2946
|
+
case "u32":
|
|
2947
|
+
return FIELD_WIRE_FIXED32;
|
|
2778
2948
|
default:
|
|
2779
2949
|
return FIELD_WIRE_SIZED;
|
|
2780
2950
|
}
|
|
@@ -2782,8 +2952,8 @@ function valueWireCode(layout, value, options) {
|
|
|
2782
2952
|
function encodeWirePayload(ctx, layout, value, wire, w) {
|
|
2783
2953
|
const kind = wire % FIELD_WIRE_FACTOR;
|
|
2784
2954
|
switch (kind) {
|
|
2785
|
-
// EMPTY
|
|
2786
|
-
//
|
|
2955
|
+
// EMPTY is decoder-side skip support only; `valueWireCode` never produces
|
|
2956
|
+
// it.
|
|
2787
2957
|
case FIELD_WIRE_FALSE:
|
|
2788
2958
|
case FIELD_WIRE_TRUE:
|
|
2789
2959
|
return;
|
|
@@ -2793,6 +2963,9 @@ function encodeWirePayload(ctx, layout, value, wire, w) {
|
|
|
2793
2963
|
case FIELD_WIRE_FIXED64:
|
|
2794
2964
|
w.f64(value);
|
|
2795
2965
|
return;
|
|
2966
|
+
case FIELD_WIRE_FIXED32:
|
|
2967
|
+
encodeValue(ctx, layout, value, w);
|
|
2968
|
+
return;
|
|
2796
2969
|
case FIELD_WIRE_DECIMAL:
|
|
2797
2970
|
{
|
|
2798
2971
|
const scale = Math.floor(wire / FIELD_WIRE_FACTOR);
|
|
@@ -3437,6 +3610,29 @@ function encodeValue(ctx, layout, value, w) {
|
|
|
3437
3610
|
if (typeof value !== "bigint") encodeFail("a bigint", value, ctx.options);
|
|
3438
3611
|
w.zigzag(value);
|
|
3439
3612
|
return;
|
|
3613
|
+
// `disableChecks` can bypass the range check used to select these layouts.
|
|
3614
|
+
case "i32":
|
|
3615
|
+
if (typeof value !== "number" || (value | 0) !== value) encodeFail("a 32-bit integer", value, ctx.options);
|
|
3616
|
+
w.i32le(value);
|
|
3617
|
+
return;
|
|
3618
|
+
case "u32":
|
|
3619
|
+
if (typeof value !== "number" || value >>> 0 !== value) {
|
|
3620
|
+
encodeFail("a 32-bit unsigned integer", value, ctx.options);
|
|
3621
|
+
}
|
|
3622
|
+
w.u32le(value);
|
|
3623
|
+
return;
|
|
3624
|
+
case "i64":
|
|
3625
|
+
if (typeof value !== "bigint" || value < BIGINT_I64_MIN || value > BIGINT_I64_MAX) {
|
|
3626
|
+
encodeFail("a 64-bit integer", value, ctx.options);
|
|
3627
|
+
}
|
|
3628
|
+
w.i64(value);
|
|
3629
|
+
return;
|
|
3630
|
+
case "u64":
|
|
3631
|
+
if (typeof value !== "bigint" || value < BIGINT_ZERO || value > BIGINT_U64_MAX) {
|
|
3632
|
+
encodeFail("a 64-bit unsigned integer", value, ctx.options);
|
|
3633
|
+
}
|
|
3634
|
+
w.u64(value);
|
|
3635
|
+
return;
|
|
3440
3636
|
case "int64":
|
|
3441
3637
|
{
|
|
3442
3638
|
if (!matchesLayout(layout, value)) {
|
|
@@ -3756,6 +3952,9 @@ function fieldWireMask(layout) {
|
|
|
3756
3952
|
return 1 << FIELD_WIRE_VARINT | 1 << FIELD_WIRE_FIXED64 | 1 << FIELD_WIRE_DECIMAL;
|
|
3757
3953
|
case "int":
|
|
3758
3954
|
return 1 << FIELD_WIRE_VARINT;
|
|
3955
|
+
case "i32":
|
|
3956
|
+
case "u32":
|
|
3957
|
+
return 1 << FIELD_WIRE_FIXED32;
|
|
3759
3958
|
default:
|
|
3760
3959
|
return 1 << FIELD_WIRE_SIZED;
|
|
3761
3960
|
}
|
|
@@ -3786,6 +3985,8 @@ function decodeFieldPayload(layout, wireMask, kind, r) {
|
|
|
3786
3985
|
skipFieldPayload(kind, r);
|
|
3787
3986
|
return ABSENT;
|
|
3788
3987
|
}
|
|
3988
|
+
// Only the two 32-bit layouts accept this kind, so the payload needs no window.
|
|
3989
|
+
if (kind === FIELD_WIRE_FIXED32) return layout._ === "u32" ? r.u32le() : r.i32le();
|
|
3789
3990
|
if (kind !== FIELD_WIRE_SIZED) {
|
|
3790
3991
|
const value = decodeScalarField(kind, r);
|
|
3791
3992
|
if (layout._ === "literal" && !hasLiteral(layout, value)) {
|
|
@@ -4333,6 +4534,18 @@ function decodeValueUnchecked(layout, r) {
|
|
|
4333
4534
|
return r.takeCopy(r.end - r.pos);
|
|
4334
4535
|
case "bigint":
|
|
4335
4536
|
return r.zigzag();
|
|
4537
|
+
case "i32":
|
|
4538
|
+
if (r.remaining !== 4) invalid("a 32-bit integer", undefined, r.options);
|
|
4539
|
+
return r.i32le();
|
|
4540
|
+
case "u32":
|
|
4541
|
+
if (r.remaining !== 4) invalid("a 32-bit unsigned integer", undefined, r.options);
|
|
4542
|
+
return r.u32le();
|
|
4543
|
+
case "i64":
|
|
4544
|
+
if (r.remaining !== 8) invalid("a 64-bit integer", undefined, r.options);
|
|
4545
|
+
return r.i64();
|
|
4546
|
+
case "u64":
|
|
4547
|
+
if (r.remaining !== 8) invalid("a 64-bit unsigned integer", undefined, r.options);
|
|
4548
|
+
return r.u64();
|
|
4336
4549
|
case "int64":
|
|
4337
4550
|
{
|
|
4338
4551
|
if (r.remaining !== 8) invalid("int64", undefined, r.options);
|