effect 4.1.0 → 4.1.1
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/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/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 +11 -8
- package/dist/Iterable.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/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/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 +215 -34
- 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 +42 -7
- 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/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +15 -5
- package/dist/cluster/ClusterWorkflowEngine.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/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/entityManager.js +15 -7
- package/dist/cluster/internal/entityManager.js.map +1 -1
- 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/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/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/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 +27 -12
- 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 +189 -7
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +75 -2
- 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 +49 -24
- 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/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/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/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 +8 -0
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +63 -12
- 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/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 +38 -3
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +4 -3
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +41 -3
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -20
- 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 +5 -1
- package/src/BigDecimal.ts +170 -16
- package/src/Equal.ts +3 -3
- package/src/Hash.ts +5 -4
- package/src/Iterable.ts +8 -5
- package/src/Path.ts +6 -1
- package/src/Pool.ts +2 -1
- package/src/Schema.ts +3 -2
- package/src/SchemaRepresentation.ts +4 -2
- package/src/SchemaTransformation.ts +2 -2
- package/src/ai/McpClient.ts +488 -91
- package/src/ai/McpSchema.ts +119 -0
- package/src/ai/McpServer.ts +261 -38
- 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 +41 -7
- 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/cluster/ClusterWorkflowEngine.ts +22 -8
- package/src/cluster/Reply.ts +1 -1
- package/src/cluster/Sharding.ts +4 -1
- package/src/cluster/internal/entityManager.ts +24 -10
- 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/Ndjson.ts +6 -5
- package/src/encoding/Sse.ts +5 -3
- package/src/eventlog/EventLog.ts +7 -0
- package/src/eventlog/EventLogServer.ts +31 -12
- 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 +210 -11
- 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 +54 -24
- 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/request.ts +51 -58
- package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
- 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/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 +84 -15
- 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/sql/Migrator.ts +35 -18
- package/src/sql/SqlClient.ts +43 -8
- package/src/sql/Statement.ts +52 -22
- package/src/workflow/Workflow.ts +4 -0
- package/src/workflow/WorkflowEngine.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitBreaker.d.ts","sourceRoot":"","sources":["../../src/persistence/CircuitBreaker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"CircuitBreaker.d.ts","sourceRoot":"","sources":["../../src/persistence/CircuitBreaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
@@ -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;AAEtC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/persistence/RateLimiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ import * as Duration from "../Duration.js";
|
|
|
17
17
|
import * as Effect from "../Effect.js";
|
|
18
18
|
import { flow, identity } from "../Function.js";
|
|
19
19
|
import * as Layer from "../Layer.js";
|
|
20
|
+
import * as Schedule from "../Schedule.js";
|
|
20
21
|
import * as Schema from "../Schema.js";
|
|
21
22
|
import * as Redis from "./Redis.js";
|
|
22
23
|
/**
|
|
@@ -48,6 +49,9 @@ export const RateLimiter = /*#__PURE__*/Context.Service(TypeId);
|
|
|
48
49
|
* The limiter supports fixed-window and token-bucket algorithms and either
|
|
49
50
|
* fails or returns a delay when a limit is exceeded.
|
|
50
51
|
*
|
|
52
|
+
* A nonpositive `limit` admits no positive token requests: fail mode rejects
|
|
53
|
+
* them and delay mode returns an infinite delay without touching the store.
|
|
54
|
+
*
|
|
51
55
|
* @stability unstable
|
|
52
56
|
* @category constructors
|
|
53
57
|
* @since 4.0.0
|
|
@@ -64,9 +68,8 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
64
68
|
const algorithm = options.algorithm ?? "fixed-window";
|
|
65
69
|
const window = Duration.max(Duration.fromInputUnsafe(options.window), Duration.millis(1));
|
|
66
70
|
const windowMillis = Duration.toMillis(window);
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
if (onExceeded === "fail" && tokens > options.limit) {
|
|
71
|
+
const exceeded = tokens > options.limit;
|
|
72
|
+
if (onExceeded === "fail" && exceeded) {
|
|
70
73
|
return Effect.fail(new RateLimiterError({
|
|
71
74
|
reason: new RateLimitExceeded({
|
|
72
75
|
key: options.key,
|
|
@@ -76,6 +79,17 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
76
79
|
})
|
|
77
80
|
}));
|
|
78
81
|
}
|
|
82
|
+
// A nonpositive limit never refills, so skip the store and its infinite refill rate.
|
|
83
|
+
if (options.limit <= 0) {
|
|
84
|
+
return Effect.succeed({
|
|
85
|
+
delay: exceeded ? Duration.infinity : Duration.zero,
|
|
86
|
+
limit: options.limit,
|
|
87
|
+
remaining: options.limit - tokens,
|
|
88
|
+
resetAfter: exceeded ? Duration.infinity : Duration.zero
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
const refillRate = Duration.divideUnsafe(window, options.limit);
|
|
92
|
+
const refillRateMillis = Duration.toMillis(refillRate);
|
|
79
93
|
if (algorithm === "fixed-window") {
|
|
80
94
|
return Effect.flatMap(store.fixedWindow({
|
|
81
95
|
key: options.key,
|
|
@@ -318,14 +332,15 @@ const clampAdaptiveDurationMillis = millis => {
|
|
|
318
332
|
if (Number.isNaN(millis) || millis <= 0) return 1;
|
|
319
333
|
return Math.min(millis, adaptiveStateMaxWindowMillis);
|
|
320
334
|
};
|
|
335
|
+
const memoryStoreSweepInterval = /*#__PURE__*/Duration.minutes(1);
|
|
321
336
|
/**
|
|
322
|
-
*
|
|
337
|
+
* Creates a process-local `RateLimiterStore`. Every entry expires once its
|
|
338
|
+
* state is indistinguishable from a missing key, and a background sweep tied to
|
|
339
|
+
* the scope removes expired entries, so an idle store drains to empty.
|
|
323
340
|
*
|
|
324
|
-
* @
|
|
325
|
-
* @category layers
|
|
326
|
-
* @since 4.0.0
|
|
341
|
+
* @internal
|
|
327
342
|
*/
|
|
328
|
-
export const
|
|
343
|
+
export const makeMemoryStore = /*#__PURE__*/Effect.gen(function* () {
|
|
329
344
|
const fixedCounters = new Map();
|
|
330
345
|
const tokenBuckets = new Map();
|
|
331
346
|
const adaptiveStates = new Map();
|
|
@@ -341,7 +356,7 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
341
356
|
const cooldownExpiresAt = cooldownUntil => cooldownUntil + adaptiveStateTtlGraceMillis;
|
|
342
357
|
const learningExpiresAt = (now, fallbackWindow) => now + Duration.toMillis(fallbackWindow) + adaptiveStateTtlGraceMillis;
|
|
343
358
|
const learnedExpiresAt = (now, learnedWindowMillis) => now + learnedWindowMillis + adaptiveStateTtlGraceMillis;
|
|
344
|
-
|
|
359
|
+
const store = RateLimiterStore.of({
|
|
345
360
|
fixedWindow: options => Effect.clockWith(clock => Effect.sync(() => {
|
|
346
361
|
const refillRateMillis = Duration.toMillis(options.refillRate);
|
|
347
362
|
const now = clock.currentTimeMillisUnsafe();
|
|
@@ -353,7 +368,7 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
353
368
|
};
|
|
354
369
|
fixedCounters.set(options.key, counter);
|
|
355
370
|
}
|
|
356
|
-
if (options.limit && counter.count + options.tokens > options.limit) {
|
|
371
|
+
if (options.limit !== undefined && counter.count + options.tokens > options.limit) {
|
|
357
372
|
return [counter.count + options.tokens, counter.expiresAt - now];
|
|
358
373
|
}
|
|
359
374
|
counter.count += options.tokens;
|
|
@@ -364,10 +379,11 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
364
379
|
const refillRateMillis = Duration.toMillis(options.refillRate);
|
|
365
380
|
const now = clock.currentTimeMillisUnsafe();
|
|
366
381
|
let bucket = tokenBuckets.get(options.key);
|
|
367
|
-
if (!bucket) {
|
|
382
|
+
if (!bucket || bucket.expiresAt <= now) {
|
|
368
383
|
bucket = {
|
|
369
384
|
tokens: options.limit,
|
|
370
|
-
lastRefill: now
|
|
385
|
+
lastRefill: now,
|
|
386
|
+
expiresAt: now
|
|
371
387
|
};
|
|
372
388
|
tokenBuckets.set(options.key, bucket);
|
|
373
389
|
}
|
|
@@ -383,6 +399,8 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
383
399
|
if (options.allowOverflow || newTokenCount >= 0) {
|
|
384
400
|
bucket.tokens = newTokenCount;
|
|
385
401
|
}
|
|
402
|
+
// The bucket is indistinguishable from a fresh one once fully refilled
|
|
403
|
+
bucket.expiresAt = bucket.lastRefill + Math.ceil(options.limit - bucket.tokens) * refillRateMillis;
|
|
386
404
|
return [newTokenCount, Math.max(0, now - bucket.lastRefill)];
|
|
387
405
|
})),
|
|
388
406
|
adaptiveConsume: options => Effect.clockWith(clock => Effect.sync(() => {
|
|
@@ -506,7 +524,37 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
|
|
|
506
524
|
}
|
|
507
525
|
}))
|
|
508
526
|
});
|
|
527
|
+
const sweep = Effect.clockWith(clock => Effect.sync(() => {
|
|
528
|
+
const now = clock.currentTimeMillisUnsafe();
|
|
529
|
+
for (const map of [fixedCounters, tokenBuckets, adaptiveStates]) {
|
|
530
|
+
for (const [key, entry] of map) {
|
|
531
|
+
if (entry.expiresAt <= now) {
|
|
532
|
+
map.delete(key);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}));
|
|
537
|
+
yield* sweep.pipe(Effect.repeat(Schedule.spaced(memoryStoreSweepInterval)), Effect.forkScoped);
|
|
538
|
+
return {
|
|
539
|
+
store,
|
|
540
|
+
get size() {
|
|
541
|
+
return fixedCounters.size + tokenBuckets.size + adaptiveStates.size;
|
|
542
|
+
}
|
|
543
|
+
};
|
|
509
544
|
});
|
|
545
|
+
/**
|
|
546
|
+
* Provides a process-local in-memory `RateLimiterStore`.
|
|
547
|
+
*
|
|
548
|
+
* **Details**
|
|
549
|
+
*
|
|
550
|
+
* Entries expire once their state is indistinguishable from an unseen key, and
|
|
551
|
+
* a background sweep scoped to the layer removes expired entries periodically.
|
|
552
|
+
*
|
|
553
|
+
* @stability unstable
|
|
554
|
+
* @category layers
|
|
555
|
+
* @since 4.0.0
|
|
556
|
+
*/
|
|
557
|
+
export const layerStoreMemory = /*#__PURE__*/Layer.effect(RateLimiterStore)(/*#__PURE__*/Effect.map(makeMemoryStore, memory => memory.store));
|
|
510
558
|
/**
|
|
511
559
|
* Creates a Redis-backed `RateLimiterStore` using Lua scripts and the
|
|
512
560
|
* configured key prefix.
|
|
@@ -580,6 +628,9 @@ local limit = tonumber(ARGV[3])
|
|
|
580
628
|
local current = tonumber(redis.call("GET", key))
|
|
581
629
|
|
|
582
630
|
if not current then
|
|
631
|
+
if limit and tokens > limit then
|
|
632
|
+
return { string.format("%.17g", tokens), 0 }
|
|
633
|
+
end
|
|
583
634
|
local nextpttl = math.max(1, math.ceil(refillms * tokens))
|
|
584
635
|
redis.call("SET", key, tokens, "PX", nextpttl)
|
|
585
636
|
return { string.format("%.17g", tokens), nextpttl }
|