@backstage/backend-defaults
Version:
Backend defaults used by Backstage backend apps
38 lines (34 loc) • 1.02 kB
JavaScript
;
var rateLimitRedis = require('rate-limit-redis');
class RateLimitStoreFactory {
static create(options) {
const { config, prefix } = options;
const store = config.getOptionalConfig("backend.rateLimit.store");
if (!store) {
return void 0;
}
const type = store.getString("type");
switch (type) {
case "redis":
return this.redis({ store, prefix });
case "memory":
default:
return void 0;
}
}
static redis(options) {
const { store, prefix } = options;
const connectionString = store.getString("connection");
const KeyvRedis = require("@keyv/redis").default;
const keyv = new KeyvRedis(connectionString);
return new rateLimitRedis.RedisStore({
prefix,
sendCommand: async (...args) => {
const client = await keyv.getClient();
return client.sendCommand(args);
}
});
}
}
exports.RateLimitStoreFactory = RateLimitStoreFactory;
//# sourceMappingURL=RateLimitStoreFactory.cjs.js.map