1"@effect/experimental/RateLimiter#layer":
2 replacement: effect/persistence/RateLimiter#layer
3 note: Import layer from the v4 unstable RateLimiter module.
4"@effect/experimental/RateLimiter#make":
5 replacement: effect/persistence/RateLimiter#make
6 note: Import make from the v4 unstable RateLimiter module.
7"@effect/experimental/RateLimiter#makeSleep":
8 replacement: effect/persistence/RateLimiter#sleep
9 note: The accessor Effect was replaced by sleep; obtain the RateLimiter service and pass it to sleep directly or with its curried overload.
10"@effect/experimental/RateLimiter#RateLimiterError":
11 replacement: effect/persistence/RateLimiter#RateLimiterError
12 note: The retained name is now a wrapper error class whose reason is RateLimitExceeded or RateLimitStoreError.
13"@effect/experimental/RateLimiter#ErrorTypeId":
14 replacement: effect/persistence/RateLimiter#ErrorTypeId
15 note: Retained as a string brand; the runtime marker now uses the persistence module path.
16"@effect/experimental/RateLimiter#TypeId":
17 replacement: effect/persistence/RateLimiter#TypeId
18 note: Import TypeId from the v4 unstable RateLimiter module; it is now a string brand.
19"@effect/experimental/RateLimiter#RateLimiterStore":
20 include: true
21 replacement: RateLimiter.RateLimiterStore
22 note: "Use the Context.Service class from effect/persistence/RateLimiter. Custom tokenBucket implementations must return [remaining, elapsedMillis] instead of a number, preserving fractional counts and elapsed refill time."