@aikidosec/firewall
Version:
Zen by Aikido is an embedded Application Firewall that autonomously protects Node.js apps against common and critical attacks, provides rate limiting, detects malicious traffic (including bots), and more.
50 lines (49 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VersionedPackage = void 0;
class VersionedPackage {
constructor(range) {
this.range = range;
this.requireInterceptors = [];
this.requireFileInterceptors = new Map();
if (!this.range) {
throw new Error("Version range is required");
}
}
getRange() {
return this.range;
}
onRequire(interceptor) {
if (typeof interceptor !== "function") {
throw new Error("Interceptor must be a function");
}
this.requireInterceptors.push(interceptor);
return this;
}
onFileRequire(relativePath, interceptor) {
if (relativePath.length === 0) {
throw new Error("Relative path must not be empty");
}
if (this.requireFileInterceptors.has(relativePath)) {
throw new Error(`Interceptor for ${relativePath} already exists`);
}
if (relativePath.startsWith("/")) {
throw new Error("Absolute paths are not allowed for require file interceptors");
}
if (relativePath.includes("..")) {
throw new Error("Relative paths with '..' are not allowed for require file interceptors");
}
if (relativePath.startsWith("./")) {
relativePath = relativePath.slice(2);
}
this.requireFileInterceptors.set(relativePath, interceptor);
return this;
}
getRequireInterceptors() {
return this.requireInterceptors;
}
getRequireFileInterceptor(relativePath) {
return this.requireFileInterceptors.get(relativePath);
}
}
exports.VersionedPackage = VersionedPackage;