packages feed

keter-rate-limiting-plugin-0.2.0.2: keter-rate-limiting-plugin.cabal

cabal-version:      3.0
name:               keter-rate-limiting-plugin
version:            0.2.0.2
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: