UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks

47 lines (46 loc) 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Users = void 0; class Users { constructor(maxEntries = 1000) { this.maxEntries = maxEntries; this.users = new Map(); } addUser(user) { const existing = this.users.get(user.id); if (existing) { existing.name = user.name; existing.lastIpAddress = user.lastIpAddress; existing.lastSeenAt = Date.now(); return; } if (this.users.size >= this.maxEntries) { const firstAdded = this.users.keys().next().value; if (firstAdded) { this.users.delete(firstAdded); } } this.users.set(user.id, { id: user.id, name: user.name, lastIpAddress: user.lastIpAddress, firstSeenAt: Date.now(), lastSeenAt: Date.now(), }); } asArray() { return Array.from(this.users.entries()).map(([_, user]) => { return { id: user.id, name: user.name, lastIpAddress: user.lastIpAddress, firstSeenAt: user.firstSeenAt, lastSeenAt: user.lastSeenAt, }; }); } clear() { this.users.clear(); } } exports.Users = Users;