UNPKG

@aikidosec/firewall

Version:

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

32 lines (31 loc) 1.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPackageVersion = getPackageVersion; const path_1 = require("path"); const wrapRequire_1 = require("../agent/hooks/wrapRequire"); /** * Get the installed version of a package */ function getPackageVersion(pkg) { try { const path = require.resolve(pkg); const parts = path.split(path_1.sep); // e.g. @google-cloud/functions-framework const pkgParts = pkg.split("/"); let lookup = pkgParts[0]; if (pkgParts.length > 1) { lookup = pkgParts[1]; } // Normally we can just require(`${pkg}/package.json`) // but @google-cloud/functions-framework is a special case // the package.json contains "exports" which results in the following error: // Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './package.json' is not defined by "exports" // Thus we manually build the path to the package.json const index = parts.indexOf(lookup); const root = parts.slice(0, index + 1).join(path_1.sep); return (0, wrapRequire_1.getOriginalRequire)()(`${root}/package.json`).version; } catch { return null; } }