Class: Package::Audit::Npm::VulnerabilityFinder
- Inherits:
-
Object
- Object
- Package::Audit::Npm::VulnerabilityFinder
- Defined in:
- lib/package/audit/npm/vulnerability_finder.rb
Overview
rubocop:disable Metrics/ClassLength
Constant Summary collapse
- BULK_ADVISORY_URL =
'https://registry.npmjs.org/-/npm/v1/security/advisories/bulk'- BATCH_SIZE =
100- TIMEOUT =
30- VERSION_LINE =
/^\s+"?version"?\s+"([^"]+)"/
Instance Method Summary collapse
-
#initialize(dir, pkgs) ⇒ VulnerabilityFinder
constructor
A new instance of VulnerabilityFinder.
- #run ⇒ Object
Constructor Details
#initialize(dir, pkgs) ⇒ VulnerabilityFinder
Returns a new instance of VulnerabilityFinder.
17 18 19 20 21 |
# File 'lib/package/audit/npm/vulnerability_finder.rb', line 17 def initialize(dir, pkgs) @dir = dir @pkg_hash = pkgs.to_h { |pkg| [pkg.name, pkg] } @vuln_hash = {} end |
Instance Method Details
#run ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/package/audit/npm/vulnerability_finder.rb', line 23 def run versions_by_name = collect_versions_by_name return [] if versions_by_name.empty? versions_by_name.each_slice(BATCH_SIZE) do |batch| batch_versions = batch.to_h fetch_advisories(batch_versions).each do |name, advisories| package_name = name.to_s apply_advisories(package_name, Array(advisories), batch_versions[package_name] || []) end end @vuln_hash.values end |