UNPKG

@aikidosec/firewall

Version:

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

50 lines (49 loc) 1.72 kB
"use strict"; 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;