@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
JavaScript
;
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;