The RateLimiterProvider class can be derived from any IRateLimiterAdapter.

IMPORT_PATH: "@daiso-tech/core/rate-limiter"

Implements

Constructors

  • Parameters

    Returns RateLimiterProvider

    import { KyselyRateLimiterStorageAdapter } from "@daiso-tech/core/rate-limiter/kysely-rate-limiter-storage-adapter";
    import { DatabaseRateLimiterAdapter } from "@daiso-tech/core/rate-limiter/database-rate-limiter-adapter";
    import { Serde } from "@daiso-tech/core/serde";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter"
    import Sqlite from "better-sqlite3";
    import { Kysely, SqliteDialect } from "kysely";

    const serde = new Serde(new SuperJsonSerdeAdapter());
    const rateLimiterStorageAdapter = new KyselyRateLimiterStorageAdapter({
    kysely: new Kysely({
    dialect: new SqliteDialect({
    database: new Sqlite("local.db"),
    }),
    }),
    serde
    });
    // You need initialize the adapter once before using it.
    await rateLimiterStorageAdapter.init();

    const rateLimiterAdapter = new DatabaseRateLimiterAdapter({
    adapter: rateLimiterStorageAdapter
    });

    const rateLimiterProvider = new RateLimiterProvider({
    adapter: rateLimiterAdapter
    })

Methods