cabal-version: 3.0 name: keter-rate-limiting-plugin version: 0.2.0.0 synopsis: Simple Keter rate limiting plugin. description: A modern, high-performance, and highly customisable rate limiting plugin for keter. Provides four window algorithms (Fixed Window, Sliding Window, Token Bucket, Leaky Bucket), as well as TinyLRU cache approach, IP zone support, and convenient and customisable API. See README.md and homepage for usage and details. homepage: https://github.com/Oleksandr-Zhabenko/keter-rate-limiting-plugin license: MIT license-file: LICENSE author: Oleksandr Zhabenko maintainer: oleksandr.zhabenko@yahoo.com copyright: 2025 Oleksandr Zhabenko category: Network build-type: Simple extra-doc-files: CHANGELOG.md, README.md extra-source-files: README.md tested-with: GHC ==9.2.8, GHC ==9.4.8, GHC ==9.6.5, GHC ==9.8.4 common warnings ghc-options: -Wall library import: warnings exposed-modules: Data.TinyLRU Keter.RateLimiter.WAI Keter.RateLimiter.Cache Keter.RateLimiter.CacheWithZone Keter.RateLimiter.IPZones Keter.RateLimiter.SlidingWindow Keter.RateLimiter.TokenBucketWorker Keter.RateLimiter.TokenBucket Keter.RateLimiter.LeakyBucket Keter.RateLimiter.Types Keter.RateLimiter.AutoPurge Keter.RateLimiter.Notifications Keter.RateLimiter.RequestUtils -- other-modules: (add if you have internal modules) default-extensions: DataKinds, DeriveGeneric, FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, FunctionalDependencies, InstanceSigs, KindSignatures, MultiParamTypeClasses, OverloadedStrings, ScopedTypeVariables, TypeApplications, GADTs build-depends: base >= 4.7 && < 5, text >= 1.2, bytestring >= 0.10, wai >=3.2.3 && <3.3, iproute >=1.7.10, network >=3.1.2 && <3.2 || ^>=3.2.0, http-types >=0.12.3 && <0.13, directory >= 1.3.4.0 && <1.4, case-insensitive >=1.2.1.0, aeson >= 1.4, cache >= 0.1, time >= 1.9, focus >=1.0.3, stm >=2.5.0 && <2.6, stm-containers >=1.2 && <2, deepseq, cookie, list-t >=1.0.5 && <2, network >=3.1.2 && <3.2 || ^>=3.2.0, unordered-containers >=0.2.17 && <0.3, hashable >= 1.4.2.0 && < 2, clock >= 0.8.3 && < 1 extra-libraries: z hs-source-dirs: src default-language: Haskell2010 test-suite keter-rate-limiting-plugin-test import: warnings default-language: Haskell2010 type: exitcode-stdio-1.0 hs-source-dirs: test main-is: Main.hs other-modules: Keter.RateLimiter.Cache.PurgeTests Keter.RateLimiter.LeakyBucketTests Keter.RateLimiter.IPZonesTests Keter.RateLimiter.LeakyBucketStateTests Keter.RateLimiter.NotificationTests Keter.RateLimiter.SlidingWindowTests Keter.RateLimiter.TokenBucketStateTests Keter.RateLimiter.TokenBucketTests Keter.RateLimiter.WAITests TinyLRUTests build-depends: base >=4 && <5, async >=2.2.4 && <2.3, wai >=3.2.3 && <3.3, wai-extra >= 3.0.3 && < 3.2, network >=3.1.2 && <3.2 || ^>=3.2.0, http-types >=0.12.3 && <0.13, directory >= 1.3.4.0 && <1.4, HUnit, aeson >= 1.4, bytestring >= 0.10, case-insensitive >=1.2.1.0, keter-rate-limiting-plugin, tasty >= 1.4 && < 1.6, filepath >=1.4.2 && <1.6, tasty-hunit >= 0.10 && < 0.11, QuickCheck, tasty-quickcheck, text >= 1.2.5 && < 3.0, cookie, random >=1.2.1 && <1.4, stm >=2.5.0 && <2.6, stm-containers >=1.2 && <2, cache >= 0.1, containers >= 0.6, unordered-containers >=0.2.17 && <0.3, time >= 1.9, hashable >= 1.4.2.0 && < 2, clock >= 0.8.3 && < 1, temporary >= 1.3 && < 1.4 -- extra-libraries: