Releases: nestjs/throttler
v6.2.1
v6.2.0
v6.1.1
v6.1.0
v6.0.0
Major Changes
- 93b62d2: A time will be provided to block the request separately from the ttl. There is a breaking change at the library level. Storage library owners will be affected by this breaking change
- 9b3f9cd: - e17a5dc: The storage has been updated to utilize Map instead of a simple object for key-value storage. This enhancement offers improved performance, especially for scenarios involving frequent additions and deletions of keys. There is a breaking change at the library level. Storage library owners will be affected by this breaking change
v5.2.0
v5.1.2
v5.1.1
v5.1.0
v5.0.1
Patch Changes
- bc9e6b2: Correctly assign metadata for multiple throttlers passed to
@SkipThrottle()
Major Changes
-
2f4f2a7: # FEATURES
- allow for multiple Throttler Contexts
- allow for conditionally skipping based on
ThrottleGuard#shouldSkip
method - allow for easily overriding throttler message based on guard method
- extra context passed to throw method for better customization of message
ThrottlerStorage
no longer needs astorage
property`getTracker
can now be async
BREAKING CHANGES
- ttl is now in milliseconds, not seconds, but there are time helper exposed to
ease the migration to that - the module options is now either an array or an object with a
throttlers
array property @Throttle()
now takes in an object instead of two parameters, to allow for
setting multiple throttle contexts at once in a more readable manner@ThrottleSkip()
now takes in an object with string boolean to say which
throttler should be skippedttl
andlimit
are no longer optional in the module's options. If an option
object is passed, it must define the defaults for that throttler
HOW TO MIGRATE
For most people, wrapping your options in an array will be enough.
If you are using a custom storage, you should wrap you
ttl
andlimit
in an
array and assign it to thethrottlers
property of the options object.Any
@ThrottleSkip()
should now take in an object withstring: boolean
props.
The strings are the names of the throttlers. If you do not have a name, pass the
string'default'
, as this is what will be used under the hood otherwise.Any
@Throttle()
decorators should also now take in an object with string keys,
relating to the names of the throttler contexts (again,'default'
if no name)
and values of objects that havelimit
andttl
keys.IMPORTANT: The
ttl
is now in miliseconds. If you want to keep your ttl
in seconds for readability, usetheseconds
helper from this package. It just
multiplies the ttl by 1000 to make it in milliseconds.