@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.
34 lines (33 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.patchProcessGetBuiltinModule = patchProcessGetBuiltinModule;
exports.getBuiltinModuleWithoutPatching = getBuiltinModuleWithoutPatching;
const removeNodePrefix_1 = require("../../../helpers/removeNodePrefix");
const wrapBuiltinExports_1 = require("./wrapBuiltinExports");
let originalProcessGetBuiltinModule;
function patchProcessGetBuiltinModule() {
if (typeof process.getBuiltinModule === "function") {
originalProcessGetBuiltinModule = process.getBuiltinModule;
// @ts-expect-error Types do not match
process.getBuiltinModule = function getBuiltinModule(id) {
return patchedGetBuiltinModule.call(this, id);
};
}
}
function patchedGetBuiltinModule(id) {
// Apply the original function
const originalExports = originalProcessGetBuiltinModule.call(this, id);
const builtinNameWithoutPrefix = (0, removeNodePrefix_1.removeNodePrefix)(id);
return (0, wrapBuiltinExports_1.wrapBuiltinExports)(builtinNameWithoutPrefix, originalExports);
}
/**
* Returns the module without applying any patches
* If the patches are already applied, it will return the patched version!
*/
function getBuiltinModuleWithoutPatching(id) {
if (originalProcessGetBuiltinModule) {
return originalProcessGetBuiltinModule(id);
}
// Fallback
return process.getBuiltinModule(id);
}