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.js";
|
|
125
158
|
import * as Clock from "../Clock.js";
|
|
@@ -143,7 +176,7 @@ import * as Redis from "./Redis.js";
|
|
|
143
176
|
*
|
|
144
177
|
* @stability experimental
|
|
145
178
|
* @category type IDs
|
|
146
|
-
* @since 4.0.
|
|
179
|
+
* @since 4.0.7
|
|
147
180
|
*/
|
|
148
181
|
export const TypeId = "~effect/persistence/CircuitBreaker";
|
|
149
182
|
/**
|
|
@@ -184,7 +217,7 @@ export const TypeId = "~effect/persistence/CircuitBreaker";
|
|
|
184
217
|
*
|
|
185
218
|
* @stability experimental
|
|
186
219
|
* @category services
|
|
187
|
-
* @since 4.0.
|
|
220
|
+
* @since 4.0.7
|
|
188
221
|
*/
|
|
189
222
|
export const CircuitBreaker = /*#__PURE__*/Context.Service(TypeId);
|
|
190
223
|
/**
|
|
@@ -230,7 +263,7 @@ export const CircuitBreaker = /*#__PURE__*/Context.Service(TypeId);
|
|
|
230
263
|
*
|
|
231
264
|
* @stability experimental
|
|
232
265
|
* @category constructors
|
|
233
|
-
* @since 4.0.
|
|
266
|
+
* @since 4.0.7
|
|
234
267
|
*/
|
|
235
268
|
export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
236
269
|
const store = yield* CircuitBreakerStore;
|
|
@@ -248,21 +281,24 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
248
281
|
const openFor = (outcome, admission) => outcome._tag === "Ignored" || outcome._tag === "Success" && (admission.probe || options.tripPolicy._tag === "Consecutive") ? Effect.succeed(Duration.zero) : Effect.map(openDurationFor(admission.consecutiveOpenings + 1), delay => outcome._tag === "Failure" && outcome.retryAfter !== undefined ? Duration.max(delay, Duration.min(outcome.retryAfter, maxOpenDuration)) : delay);
|
|
249
282
|
const execute = (self, {
|
|
250
283
|
classify,
|
|
251
|
-
key
|
|
284
|
+
key,
|
|
285
|
+
onRejection
|
|
252
286
|
}) => Effect.uninterruptibleMask(restore => Effect.scopedWith(Effect.fnUntraced(function* (admitScope) {
|
|
253
287
|
const admitted = yield* Effect.exit(Scope.provide(store.admit(key), admitScope));
|
|
254
288
|
if (Exit.isFailure(admitted)) {
|
|
255
289
|
const error = Cause.findErrorOption(admitted.cause);
|
|
256
|
-
if (
|
|
257
|
-
|
|
290
|
+
if (error._tag === "None") return yield* Effect.failCause(admitted.cause);
|
|
291
|
+
if (error.value.reason._tag !== "CircuitBreakerStoreError") {
|
|
292
|
+
return onRejection === "allow" && !Cause.hasDies(admitted.cause) ? yield* restore(self) : yield* Effect.failCause(admitted.cause);
|
|
258
293
|
}
|
|
294
|
+
if (onStoreError === "fail") return yield* Effect.failCause(admitted.cause);
|
|
259
295
|
yield* reportUnhandled("CircuitBreaker store unavailable, running the call unrecorded", admitted.cause);
|
|
260
296
|
return yield* restore(self);
|
|
261
297
|
}
|
|
262
298
|
const admission = admitted.value;
|
|
263
299
|
yield* publish(admission.transition);
|
|
264
300
|
const exit = yield* Effect.exit(restore(self));
|
|
265
|
-
const classified = yield* classifyExit(exit, classify, restore);
|
|
301
|
+
const classified = yield* classifyExit(exit, admission.probe, classify, restore);
|
|
266
302
|
const outcome = Exit.isSuccess(classified) ? classified.value : ignored;
|
|
267
303
|
yield* store.record({
|
|
268
304
|
key,
|
|
@@ -290,7 +326,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
290
326
|
*
|
|
291
327
|
* @stability experimental
|
|
292
328
|
* @category layers
|
|
293
|
-
* @since 4.0.
|
|
329
|
+
* @since 4.0.7
|
|
294
330
|
*/
|
|
295
331
|
export const layer = options => Layer.effect(CircuitBreaker, make(options));
|
|
296
332
|
// Reports an error that has no caller to receive it at `UnhandledLogLevel`, as
|
|
@@ -301,7 +337,7 @@ const reportUnhandled = (message, cause) => Effect.withFiber(fiber => {
|
|
|
301
337
|
const level = fiber.getRef(UnhandledLogLevel);
|
|
302
338
|
return level === undefined ? Effect.void : Effect.logWithLevel(level)(message, cause);
|
|
303
339
|
});
|
|
304
|
-
const classifyExit = (exit, classify, restore) => {
|
|
340
|
+
const classifyExit = (exit, probe, classify, restore) => {
|
|
305
341
|
if (Exit.isFailure(exit) && Cause.hasInterruptsOnly(exit.cause)) {
|
|
306
342
|
return Effect.succeed(Exit.succeed(ignored));
|
|
307
343
|
}
|
|
@@ -309,7 +345,9 @@ const classifyExit = (exit, classify, restore) => {
|
|
|
309
345
|
return Effect.succeed(Exit.succeed(Exit.isSuccess(exit) ? success : failure()));
|
|
310
346
|
}
|
|
311
347
|
return Effect.exit(restore(Effect.suspend(() => {
|
|
312
|
-
const outcome = classify(exit
|
|
348
|
+
const outcome = classify(exit, {
|
|
349
|
+
probe
|
|
350
|
+
});
|
|
313
351
|
return Effect.isEffect(outcome) ? outcome : Effect.succeed(outcome);
|
|
314
352
|
})));
|
|
315
353
|
};
|
|
@@ -342,7 +380,7 @@ const makeOpenDuration = openDuration => {
|
|
|
342
380
|
*
|
|
343
381
|
* @stability experimental
|
|
344
382
|
* @category constructors
|
|
345
|
-
* @since 4.0.
|
|
383
|
+
* @since 4.0.7
|
|
346
384
|
*/
|
|
347
385
|
export const consecutive = failures => {
|
|
348
386
|
if (!Number.isInteger(failures) || failures < 1) {
|
|
@@ -371,7 +409,7 @@ export const consecutive = failures => {
|
|
|
371
409
|
*
|
|
372
410
|
* @stability experimental
|
|
373
411
|
* @category constructors
|
|
374
|
-
* @since 4.0.
|
|
412
|
+
* @since 4.0.7
|
|
375
413
|
*/
|
|
376
414
|
export const rate = options => {
|
|
377
415
|
const threshold = options.threshold ?? 0.5;
|
|
@@ -398,7 +436,7 @@ export const rate = options => {
|
|
|
398
436
|
*
|
|
399
437
|
* @stability experimental
|
|
400
438
|
* @category constructors
|
|
401
|
-
* @since 4.0.
|
|
439
|
+
* @since 4.0.7
|
|
402
440
|
*/
|
|
403
441
|
export const success = {
|
|
404
442
|
_tag: "Success"
|
|
@@ -408,7 +446,7 @@ export const success = {
|
|
|
408
446
|
*
|
|
409
447
|
* @stability experimental
|
|
410
448
|
* @category constructors
|
|
411
|
-
* @since 4.0.
|
|
449
|
+
* @since 4.0.7
|
|
412
450
|
*/
|
|
413
451
|
export const ignored = {
|
|
414
452
|
_tag: "Ignored"
|
|
@@ -424,7 +462,7 @@ export const ignored = {
|
|
|
424
462
|
*
|
|
425
463
|
* @stability experimental
|
|
426
464
|
* @category constructors
|
|
427
|
-
* @since 4.0.
|
|
465
|
+
* @since 4.0.7
|
|
428
466
|
*/
|
|
429
467
|
export const failure = options => ({
|
|
430
468
|
_tag: "Failure",
|
|
@@ -435,7 +473,7 @@ export const failure = options => ({
|
|
|
435
473
|
*
|
|
436
474
|
* @stability experimental
|
|
437
475
|
* @category errors
|
|
438
|
-
* @since 4.0.
|
|
476
|
+
* @since 4.0.7
|
|
439
477
|
*/
|
|
440
478
|
export class CircuitOpen extends /*#__PURE__*/Schema.Error("effect/persistence/CircuitBreaker/CircuitOpen")({
|
|
441
479
|
_tag: /*#__PURE__*/Schema.tag("CircuitOpen"),
|
|
@@ -446,7 +484,7 @@ export class CircuitOpen extends /*#__PURE__*/Schema.Error("effect/persistence/C
|
|
|
446
484
|
* Public message used when an Open circuit rejects a call.
|
|
447
485
|
*
|
|
448
486
|
* @stability experimental
|
|
449
|
-
* @since 4.0.
|
|
487
|
+
* @since 4.0.7
|
|
450
488
|
*/
|
|
451
489
|
get message() {
|
|
452
490
|
return `Circuit open`;
|
|
@@ -457,7 +495,7 @@ export class CircuitOpen extends /*#__PURE__*/Schema.Error("effect/persistence/C
|
|
|
457
495
|
*
|
|
458
496
|
* @stability experimental
|
|
459
497
|
* @category errors
|
|
460
|
-
* @since 4.0.
|
|
498
|
+
* @since 4.0.7
|
|
461
499
|
*/
|
|
462
500
|
export class CircuitHalfOpen extends /*#__PURE__*/Schema.Error("effect/persistence/CircuitBreaker/CircuitHalfOpen")({
|
|
463
501
|
_tag: /*#__PURE__*/Schema.tag("CircuitHalfOpen"),
|
|
@@ -467,7 +505,7 @@ export class CircuitHalfOpen extends /*#__PURE__*/Schema.Error("effect/persisten
|
|
|
467
505
|
* Public message used when a HalfOpen circuit rejects a call.
|
|
468
506
|
*
|
|
469
507
|
* @stability experimental
|
|
470
|
-
* @since 4.0.
|
|
508
|
+
* @since 4.0.7
|
|
471
509
|
*/
|
|
472
510
|
get message() {
|
|
473
511
|
return `Circuit half-open`;
|
|
@@ -478,7 +516,7 @@ export class CircuitHalfOpen extends /*#__PURE__*/Schema.Error("effect/persisten
|
|
|
478
516
|
*
|
|
479
517
|
* @stability experimental
|
|
480
518
|
* @category errors
|
|
481
|
-
* @since 4.0.
|
|
519
|
+
* @since 4.0.7
|
|
482
520
|
*/
|
|
483
521
|
export class CircuitBreakerStoreError extends /*#__PURE__*/Schema.Error("effect/persistence/CircuitBreaker/CircuitBreakerStoreError")({
|
|
484
522
|
_tag: /*#__PURE__*/Schema.tag("CircuitBreakerStoreError"),
|
|
@@ -490,7 +528,7 @@ export class CircuitBreakerStoreError extends /*#__PURE__*/Schema.Error("effect/
|
|
|
490
528
|
*
|
|
491
529
|
* @stability experimental
|
|
492
530
|
* @category errors
|
|
493
|
-
* @since 4.0.
|
|
531
|
+
* @since 4.0.7
|
|
494
532
|
*/
|
|
495
533
|
export const CircuitBreakerErrorReason = /*#__PURE__*/Schema.Union([CircuitOpen, CircuitHalfOpen, CircuitBreakerStoreError]);
|
|
496
534
|
/**
|
|
@@ -498,7 +536,7 @@ export const CircuitBreakerErrorReason = /*#__PURE__*/Schema.Union([CircuitOpen,
|
|
|
498
536
|
*
|
|
499
537
|
* @stability experimental
|
|
500
538
|
* @category type IDs
|
|
501
|
-
* @since 4.0.
|
|
539
|
+
* @since 4.0.7
|
|
502
540
|
*/
|
|
503
541
|
export const ErrorTypeId = "~effect/persistence/CircuitBreaker/CircuitBreakerError";
|
|
504
542
|
/**
|
|
@@ -507,7 +545,7 @@ export const ErrorTypeId = "~effect/persistence/CircuitBreaker/CircuitBreakerErr
|
|
|
507
545
|
*
|
|
508
546
|
* @stability experimental
|
|
509
547
|
* @category errors
|
|
510
|
-
* @since 4.0.
|
|
548
|
+
* @since 4.0.7
|
|
511
549
|
*/
|
|
512
550
|
export class CircuitBreakerError extends /*#__PURE__*/Schema.Error(ErrorTypeId)({
|
|
513
551
|
_tag: /*#__PURE__*/Schema.tag("CircuitBreakerError"),
|
|
@@ -528,7 +566,7 @@ export class CircuitBreakerError extends /*#__PURE__*/Schema.Error(ErrorTypeId)(
|
|
|
528
566
|
* Marks this value as a circuit breaker error for runtime guards.
|
|
529
567
|
*
|
|
530
568
|
* @stability experimental
|
|
531
|
-
* @since 4.0.
|
|
569
|
+
* @since 4.0.7
|
|
532
570
|
*/
|
|
533
571
|
[ErrorTypeId] = ErrorTypeId;
|
|
534
572
|
get message() {
|
|
@@ -555,7 +593,7 @@ export class CircuitBreakerError extends /*#__PURE__*/Schema.Error(ErrorTypeId)(
|
|
|
555
593
|
*
|
|
556
594
|
* @stability experimental
|
|
557
595
|
* @category services
|
|
558
|
-
* @since 4.0.
|
|
596
|
+
* @since 4.0.7
|
|
559
597
|
*/
|
|
560
598
|
export class CircuitBreakerStore extends /*#__PURE__*/Context.Service()("effect/persistence/CircuitBreaker/CircuitBreakerStore") {}
|
|
561
599
|
/**
|
|
@@ -570,7 +608,7 @@ export class CircuitBreakerStore extends /*#__PURE__*/Context.Service()("effect/
|
|
|
570
608
|
*
|
|
571
609
|
* @stability experimental
|
|
572
610
|
* @category layers
|
|
573
|
-
* @since 4.0.
|
|
611
|
+
* @since 4.0.7
|
|
574
612
|
*/
|
|
575
613
|
export const layerStoreMemory = options => Layer.sync(CircuitBreakerStore, () => {
|
|
576
614
|
const idleTimeToLive = Duration.toMillis(Duration.fromInputUnsafe(options?.idleTimeToLive ?? "1 hour"));
|
|
@@ -798,7 +836,7 @@ export const layerStoreMemory = options => Layer.sync(CircuitBreakerStore, () =>
|
|
|
798
836
|
*
|
|
799
837
|
* @stability experimental
|
|
800
838
|
* @category layers
|
|
801
|
-
* @since 4.0.
|
|
839
|
+
* @since 4.0.7
|
|
802
840
|
*/
|
|
803
841
|
export const layerStoreRedis = options => Layer.effect(CircuitBreakerStore, makeStoreRedis(options));
|
|
804
842
|
/**
|
|
@@ -811,7 +849,7 @@ export const layerStoreRedis = options => Layer.effect(CircuitBreakerStore, make
|
|
|
811
849
|
*
|
|
812
850
|
* @stability experimental
|
|
813
851
|
* @category layers
|
|
814
|
-
* @since 4.0.
|
|
852
|
+
* @since 4.0.7
|
|
815
853
|
*/
|
|
816
854
|
export const layerStoreRedisConfig = options => Layer.effect(CircuitBreakerStore, Effect.flatMap(Config.unwrap(options), makeStoreRedis));
|
|
817
855
|
const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitBreaker.js","names":[],"sources":["../../src/persistence/CircuitBreaker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CircuitBreaker.js","names":[],"sources":["../../src/persistence/CircuitBreaker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -76,6 +76,9 @@ export declare const RateLimiter: Context.Service<RateLimiter, RateLimiter>;
|
|
|
76
76
|
* The limiter supports fixed-window and token-bucket algorithms and either
|
|
77
77
|
* fails or returns a delay when a limit is exceeded.
|
|
78
78
|
*
|
|
79
|
+
* A nonpositive `limit` admits no positive token requests: fail mode rejects
|
|
80
|
+
* them and delay mode returns an infinite delay without touching the store.
|
|
81
|
+
*
|
|
79
82
|
* @stability unstable
|
|
80
83
|
* @category constructors
|
|
81
84
|
* @since 4.0.0
|
|
@@ -469,6 +472,11 @@ export declare class RateLimiterStore extends RateLimiterStore_base {
|
|
|
469
472
|
/**
|
|
470
473
|
* Provides a process-local in-memory `RateLimiterStore`.
|
|
471
474
|
*
|
|
475
|
+
* **Details**
|
|
476
|
+
*
|
|
477
|
+
* Entries expire once their state is indistinguishable from an unseen key, and
|
|
478
|
+
* a background sweep scoped to the layer removes expired entries periodically.
|
|
479
|
+
*
|
|
472
480
|
* @stability unstable
|
|
473
481
|
* @category layers
|
|
474
482
|
* @since 4.0.0
|
|
@@ -478,6 +486,13 @@ export declare const layerStoreMemory: Layer.Layer<RateLimiterStore>;
|
|
|
478
486
|
* Creates a Redis-backed `RateLimiterStore` using Lua scripts and the
|
|
479
487
|
* configured key prefix.
|
|
480
488
|
*
|
|
489
|
+
* **Details**
|
|
490
|
+
*
|
|
491
|
+
* State for a rate-limit key is stored under `<prefix><key>`, with
|
|
492
|
+
* `<prefix><key>:refill` holding token-bucket refill times and
|
|
493
|
+
* `<prefix><key>:adaptive` holding adaptive state. `%` and `:` in the key are
|
|
494
|
+
* percent-encoded so different keys never share Redis state.
|
|
495
|
+
*
|
|
481
496
|
* @stability unstable
|
|
482
497
|
* @category constructors
|
|
483
498
|
* @since 4.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/persistence/RateLimiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/persistence/RateLimiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAGtC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAA;AAE/D;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,GAAG,iCAAiC,CAAA;AAEtD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAEzB,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;QAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAAA;QAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;QAClD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAA;QAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACrC,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;IAEpD,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;IAErH,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;CACvG;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAwC,CAAA;AAE1G;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAC9B,WAAW,EACX,KAAK,EACL,gBAAgB,CA0HhB,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,WAAW,EACX,KAAK,EACL,gBAAgB,CACiB,CAAA;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAC7C,CAAC,CAAC,OAAO,EAAE;IACT,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAAA;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAC7F,KAAK,EACL,WAAW,CAQZ,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,OAAO,EAAE;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAAA;IAChE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;AACpD;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAAA;IAChE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;AAmClD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,WAAgE,CAAA;AAE1F;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,kDAAkD,CAAA;;;;;;;;AAE5E;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,SAAQ,sBAQrC;IACA;;;;;OAKG;IACH,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;;;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,wBAMvC;CAAG;AAEL;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,mBAAmB,CAAA;AAE5E;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC;IAChD,OAAO,iBAAiB;IACxB,OAAO,mBAAmB;CAC3B,CAA0D,CAAA;;;;;AAE3D;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,qBAGpC;IAEA,YAAY,KAAK,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;KACxC,EASA;IAED;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,WAAW,CAAc;IAEjD,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAA;CACvC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;AAE5E;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAE9B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAA;CAC3C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAA;CACnD;;IAiBG;;;;;;;;;OASG;0BACmB,CAAC,OAAO,EAAE;QAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAA;QACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KACnC,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE5E;;;;;;;;;;;;;OAaG;0BACmB,CAAC,OAAO,EAAE;QAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAA;QACtC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;KAChC,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1F;;;;;OAKG;8BACuB,CACxB,OAAO,EAAE,sBAAsB,KAC5B,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IAE3D;;OAEG;+BACwB,CAAC,OAAO,EAAE,uBAAuB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC;;AAnE1G;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,SAAQ,qBAyDgB;CAAG;AAkRzD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,KAAK,CACxC,gBAAgB,CACuE,CAAA;AAEzF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc;sBAEL,MAAM,GAAG,SAAS;;IAzWpC;;;;;;;;;OASG;0BACmB,CAAC,OAAO,EAAE;QAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAA;QACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KACnC,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE5E;;;;;;;;;;;;;OAaG;0BACmB,CAAC,OAAO,EAAE;QAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAA;QACtC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;KAChC,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1F;;;;;OAKG;8BACuB,CACxB,OAAO,EAAE,sBAAsB,KAC5B,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IAE3D;;OAEG;+BACwB,CAAC,OAAO,EAAE,uBAAuB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC;sBAiaxG,CAAA;AAqVF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,CAC5B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAC/C,KAAK,CAAC,KAAK,CACd,gBAAgB,EAChB,KAAK,EACL,KAAK,CAAC,KAAK,CAC2C,CAAA;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YACvB,MAAM,CAAC,IAAI,CAAC;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,KAC7D,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAI7D,CAAA"}
|
|
@@ -16,7 +16,9 @@ import * as Context from "../Context.js";
|
|
|
16
16
|
import * as Duration from "../Duration.js";
|
|
17
17
|
import * as Effect from "../Effect.js";
|
|
18
18
|
import { flow, identity } from "../Function.js";
|
|
19
|
+
import { escapeKeySegment } from "../internal/persistence.js";
|
|
19
20
|
import * as Layer from "../Layer.js";
|
|
21
|
+
import * as Schedule from "../Schedule.js";
|
|
20
22
|
import * as Schema from "../Schema.js";
|
|
21
23
|
import * as Redis from "./Redis.js";
|
|
22
24
|
/**
|
|
@@ -48,6 +50,9 @@ export const RateLimiter = /*#__PURE__*/Context.Service(TypeId);
|
|
|
48
50
|
* The limiter supports fixed-window and token-bucket algorithms and either
|
|
49
51
|
* fails or returns a delay when a limit is exceeded.
|
|
50
52
|
*
|
|
53
|
+
* A nonpositive `limit` admits no positive token requests: fail mode rejects
|
|
54
|
+
* them and delay mode returns an infinite delay without touching the store.
|
|
55
|
+
*
|
|
51
56
|
* @stability unstable
|
|
52
57
|
* @category constructors
|
|
53
58
|
* @since 4.0.0
|
|
@@ -64,9 +69,8 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
64
69
|
const algorithm = options.algorithm ?? "fixed-window";
|
|
65
70
|
const window = Duration.max(Duration.fromInputUnsafe(options.window), Duration.millis(1));
|
|
66
71
|
const windowMillis = Duration.toMillis(window);
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
if (onExceeded === "fail" && tokens > options.limit) {
|
|
72
|
+
const exceeded = tokens > options.limit;
|
|
73
|
+
if (onExceeded === "fail" && exceeded) {
|
|
70
74
|
return Effect.fail(new RateLimiterError({
|
|
71
75
|
reason: new RateLimitExceeded({
|
|
72
76
|
key: options.key,
|
|
@@ -76,6 +80,17 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
76
80
|
})
|
|
77
81
|
}));
|
|
78
82
|
}
|
|
83
|
+
// A nonpositive limit never refills, so skip the store and its infinite refill rate.
|
|
84
|
+
if (options.limit <= 0) {
|
|
85
|
+
return Effect.succeed({
|
|
86
|
+
delay: exceeded ? Duration.infinity : Duration.zero,
|
|
87
|
+
limit: options.limit,
|
|
88
|
+
remaining: options.limit - tokens,
|
|
89
|
+
resetAfter: exceeded ? Duration.infinity : Duration.zero
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
const refillRate = Duration.divideUnsafe(window, options.limit);
|
|
93
|
+
const refillRateMillis = Duration.toMillis(refillRate);
|
|
79
94
|
if (algorithm === "fixed-window") {
|
|
80
95
|
return Effect.flatMap(store.fixedWindow({
|
|
81
96
|
key: options.key,
|
|
@@ -318,14 +333,15 @@ const clampAdaptiveDurationMillis = millis => {
|
|
|
318
333
|
if (Number.isNaN(millis) || millis <= 0) return 1;
|
|
319
334
|
return Math.min(millis, adaptiveStateMaxWindowMillis);
|
|
320
335
|
};
|
|
336
|
+
const memoryStoreSweepInterval = /*#__PURE__*/Duration.minutes(1);
|
|
321
337
|
/**
|
|
322
|
-
*
|
|
338
|
+
* Creates a process-local `RateLimiterStore`. Every entry expires once its
|
|
339
|
+
* state is indistinguishable from a missing key, and a background sweep tied to
|
|
340
|
+
* the scope removes expired entries, so an idle store drains to empty.
|
|
323
341
|
*
|
|
324
|
-
* @
|
|
325
|
-
* @category layers
|
|
326
|
-
* @since 4.0.0
|
|
342
|
+
* @internal
|
|
327
343
|
*/
|
|
328
|
-
export const
|
|
344
|
+
export const makeMemoryStore = /*#__PURE__*/Effect.gen(function* () {
|
|
329
345
|
const fixedCounters = new Map();
|
|
330
346
|
const tokenBuckets = new Map();
|
|
331
347
|
const adaptiveStates = new Map();
|
|
@@ -341,7 +357,7 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
341
357
|
const cooldownExpiresAt = cooldownUntil => cooldownUntil + adaptiveStateTtlGraceMillis;
|
|
342
358
|
const learningExpiresAt = (now, fallbackWindow) => now + Duration.toMillis(fallbackWindow) + adaptiveStateTtlGraceMillis;
|
|
343
359
|
const learnedExpiresAt = (now, learnedWindowMillis) => now + learnedWindowMillis + adaptiveStateTtlGraceMillis;
|
|
344
|
-
|
|
360
|
+
const store = RateLimiterStore.of({
|
|
345
361
|
fixedWindow: options => Effect.clockWith(clock => Effect.sync(() => {
|
|
346
362
|
const refillRateMillis = Duration.toMillis(options.refillRate);
|
|
347
363
|
const now = clock.currentTimeMillisUnsafe();
|
|
@@ -353,7 +369,7 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
353
369
|
};
|
|
354
370
|
fixedCounters.set(options.key, counter);
|
|
355
371
|
}
|
|
356
|
-
if (options.limit && counter.count + options.tokens > options.limit) {
|
|
372
|
+
if (options.limit !== undefined && counter.count + options.tokens > options.limit) {
|
|
357
373
|
return [counter.count + options.tokens, counter.expiresAt - now];
|
|
358
374
|
}
|
|
359
375
|
counter.count += options.tokens;
|
|
@@ -364,10 +380,11 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
364
380
|
const refillRateMillis = Duration.toMillis(options.refillRate);
|
|
365
381
|
const now = clock.currentTimeMillisUnsafe();
|
|
366
382
|
let bucket = tokenBuckets.get(options.key);
|
|
367
|
-
if (!bucket) {
|
|
383
|
+
if (!bucket || bucket.expiresAt <= now) {
|
|
368
384
|
bucket = {
|
|
369
385
|
tokens: options.limit,
|
|
370
|
-
lastRefill: now
|
|
386
|
+
lastRefill: now,
|
|
387
|
+
expiresAt: now
|
|
371
388
|
};
|
|
372
389
|
tokenBuckets.set(options.key, bucket);
|
|
373
390
|
}
|
|
@@ -383,6 +400,8 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
383
400
|
if (options.allowOverflow || newTokenCount >= 0) {
|
|
384
401
|
bucket.tokens = newTokenCount;
|
|
385
402
|
}
|
|
403
|
+
// The bucket is indistinguishable from a fresh one once fully refilled
|
|
404
|
+
bucket.expiresAt = bucket.lastRefill + Math.ceil(options.limit - bucket.tokens) * refillRateMillis;
|
|
386
405
|
return [newTokenCount, Math.max(0, now - bucket.lastRefill)];
|
|
387
406
|
})),
|
|
388
407
|
adaptiveConsume: options => Effect.clockWith(clock => Effect.sync(() => {
|
|
@@ -506,11 +525,48 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
506
525
|
}
|
|
507
526
|
}))
|
|
508
527
|
});
|
|
528
|
+
const sweep = Effect.clockWith(clock => Effect.sync(() => {
|
|
529
|
+
const now = clock.currentTimeMillisUnsafe();
|
|
530
|
+
for (const map of [fixedCounters, tokenBuckets, adaptiveStates]) {
|
|
531
|
+
for (const [key, entry] of map) {
|
|
532
|
+
if (entry.expiresAt <= now) {
|
|
533
|
+
map.delete(key);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}));
|
|
538
|
+
yield* sweep.pipe(Effect.repeat(Schedule.spaced(memoryStoreSweepInterval)), Effect.forkScoped);
|
|
539
|
+
return {
|
|
540
|
+
store,
|
|
541
|
+
get size() {
|
|
542
|
+
return fixedCounters.size + tokenBuckets.size + adaptiveStates.size;
|
|
543
|
+
}
|
|
544
|
+
};
|
|
509
545
|
});
|
|
546
|
+
/**
|
|
547
|
+
* Provides a process-local in-memory `RateLimiterStore`.
|
|
548
|
+
*
|
|
549
|
+
* **Details**
|
|
550
|
+
*
|
|
551
|
+
* Entries expire once their state is indistinguishable from an unseen key, and
|
|
552
|
+
* a background sweep scoped to the layer removes expired entries periodically.
|
|
553
|
+
*
|
|
554
|
+
* @stability unstable
|
|
555
|
+
* @category layers
|
|
556
|
+
* @since 4.0.0
|
|
557
|
+
*/
|
|
558
|
+
export const layerStoreMemory = /*#__PURE__*/Layer.effect(RateLimiterStore)(/*#__PURE__*/Effect.map(makeMemoryStore, memory => memory.store));
|
|
510
559
|
/**
|
|
511
560
|
* Creates a Redis-backed `RateLimiterStore` using Lua scripts and the
|
|
512
561
|
* configured key prefix.
|
|
513
562
|
*
|
|
563
|
+
* **Details**
|
|
564
|
+
*
|
|
565
|
+
* State for a rate-limit key is stored under `<prefix><key>`, with
|
|
566
|
+
* `<prefix><key>:refill` holding token-bucket refill times and
|
|
567
|
+
* `<prefix><key>:adaptive` holding adaptive state. `%` and `:` in the key are
|
|
568
|
+
* percent-encoded so different keys never share Redis state.
|
|
569
|
+
*
|
|
514
570
|
* @stability unstable
|
|
515
571
|
* @category constructors
|
|
516
572
|
* @since 4.0.0
|
|
@@ -518,13 +574,14 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
518
574
|
export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
519
575
|
const prefix = options?.prefix ?? "ratelimiter:";
|
|
520
576
|
const redis = yield* Redis.Redis;
|
|
577
|
+
const redisKey = key => `${prefix}${escapeKeySegment(key)}`;
|
|
521
578
|
const fixedWindow = redis.eval(fixedWindowScript);
|
|
522
579
|
const tokenBucket = redis.eval(tokenBucketScript);
|
|
523
580
|
const adaptiveConsume = redis.eval(adaptiveConsumeScript);
|
|
524
581
|
const adaptiveFeedback = redis.eval(adaptiveFeedbackScript);
|
|
525
582
|
return RateLimiterStore.of({
|
|
526
583
|
fixedWindow(options) {
|
|
527
|
-
const key =
|
|
584
|
+
const key = redisKey(options.key);
|
|
528
585
|
const refillMillis = Duration.toMillis(options.refillRate);
|
|
529
586
|
return Effect.mapError(Effect.map(fixedWindow(key, options.tokens, refillMillis, options.limit), ([currentTokens, nextPttl]) => [Number(currentTokens), nextPttl]), cause => new RateLimiterError({
|
|
530
587
|
reason: new RateLimitStoreError({
|
|
@@ -534,7 +591,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
|
|
|
534
591
|
}));
|
|
535
592
|
},
|
|
536
593
|
tokenBucket(options) {
|
|
537
|
-
const key =
|
|
594
|
+
const key = redisKey(options.key);
|
|
538
595
|
const lastRefillKey = `${key}:refill`;
|
|
539
596
|
const refillMillis = Duration.toMillis(options.refillRate);
|
|
540
597
|
return Effect.clockWith(clock => Effect.mapError(Effect.map(tokenBucket(key, lastRefillKey, options.tokens, refillMillis, options.limit, clock.currentTimeMillisUnsafe(), options.allowOverflow ? 1 : 0), ([remaining, elapsedMillis]) => [Number(remaining), Number(elapsedMillis)]), cause => new RateLimiterError({
|
|
@@ -545,7 +602,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
|
|
|
545
602
|
})));
|
|
546
603
|
},
|
|
547
604
|
adaptiveConsume(options) {
|
|
548
|
-
const key = `${
|
|
605
|
+
const key = `${redisKey(options.key)}:adaptive`;
|
|
549
606
|
return Effect.map(Effect.mapError(adaptiveConsume(key, options.tokens, Duration.toMillis(options.fallbackWindow), adaptiveStateTtlGraceMillis), cause => new RateLimiterError({
|
|
550
607
|
reason: new RateLimitStoreError({
|
|
551
608
|
message: `Failed to execute adaptiveConsume rate limiting command`,
|
|
@@ -560,7 +617,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
|
|
|
560
617
|
adaptiveFeedback(options) {
|
|
561
618
|
if (options.status !== 429 || options.retryAfter === undefined) return Effect.void;
|
|
562
619
|
const retryAfterMillis = clampAdaptiveDurationMillis(Duration.toMillis(options.retryAfter));
|
|
563
|
-
const key = `${
|
|
620
|
+
const key = `${redisKey(options.key)}:adaptive`;
|
|
564
621
|
return Effect.asVoid(Effect.mapError(adaptiveFeedback(key, options.epoch, options.tokens, retryAfterMillis, adaptiveStateTtlGraceMillis, adaptiveStateMaxWindowMillis), cause => new RateLimiterError({
|
|
565
622
|
reason: new RateLimitStoreError({
|
|
566
623
|
message: `Failed to execute adaptiveFeedback rate limiting command`,
|
|
@@ -580,6 +637,9 @@ local limit = tonumber(ARGV[3])
|
|
|
580
637
|
local current = tonumber(redis.call("GET", key))
|
|
581
638
|
|
|
582
639
|
if not current then
|
|
640
|
+
if limit and tokens > limit then
|
|
641
|
+
return { string.format("%.17g", tokens), 0 }
|
|
642
|
+
end
|
|
583
643
|
local nextpttl = math.max(1, math.ceil(refillms * tokens))
|
|
584
644
|
redis.call("SET", key, tokens, "PX", nextpttl)
|
|
585
645
|
return { string.format("%.17g", tokens), nextpttl }
|