@nodesecure/vulnera
Version:
NodeSecure vulnerabilities strategies
41 lines • 1.6 kB
JavaScript
// Import Internal Dependencies
import { GitHubAdvisoryStrategy } from "./strategies/github-advisory.js";
import { SonatypeStrategy } from "./strategies/sonatype.js";
import { NoneStrategy } from "./strategies/none.js";
import { OSVStrategy } from "./strategies/osv.js";
import { VULN_MODE } from "./constants.js";
import { ApiCredential } from "./credential.js";
import { formatVulnsPayload } from "./formats/index.js";
export * as Database from "./database/index.js";
export { ApiCredential };
// CONSTANTS
const kAvailableStrategy = new Set(Object.values(VULN_MODE));
// VARS
let localVulnerabilityStrategy;
export function setStrategy(name, options) {
if (!kAvailableStrategy.has(name)) {
throw new Error(`Unknown strategy with name '${name}'. Available strategies are: ${[...kAvailableStrategy].join(", ")}`);
}
if (name === VULN_MODE.GITHUB_ADVISORY) {
localVulnerabilityStrategy = Object.seal(GitHubAdvisoryStrategy());
}
else if (name === VULN_MODE.SONATYPE) {
localVulnerabilityStrategy = Object.seal(SonatypeStrategy(options));
}
else if (name === VULN_MODE.OSV) {
localVulnerabilityStrategy = Object.seal(OSVStrategy());
}
else {
localVulnerabilityStrategy = Object.seal(NoneStrategy());
}
return localVulnerabilityStrategy;
}
export function getStrategy() {
if (!localVulnerabilityStrategy) {
return setStrategy(VULN_MODE.NONE);
}
return localVulnerabilityStrategy;
}
export const strategies = VULN_MODE;
export const defaultStrategyName = VULN_MODE.NONE;
//# sourceMappingURL=index.js.map