Method: Bibliothecary::Parsers::NPM.parse_package_lock_deps_recursively

Defined in:
lib/bibliothecary/parsers/npm.rb

.parse_package_lock_deps_recursively(dependencies, depth = 1) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/bibliothecary/parsers/npm.rb', line 76

def self.parse_package_lock_deps_recursively(dependencies, depth=1)
  dependencies.flat_map do |name, requirement|
    type = requirement.fetch("dev", false) ? 'development' : 'runtime'
    version = requirement.key?("from") ? requirement["from"][/#(?:semver:)?v?(.*)/, 1] : nil
    version ||= requirement["version"].split("#").last
    child_dependencies = if depth >= PACKAGE_LOCK_JSON_MAX_DEPTH
      []
    else
      parse_package_lock_deps_recursively(requirement.fetch('dependencies', []), depth + 1)
    end

    [{
      name: name,
      requirement: version,
      type: type
    }] + child_dependencies
  end
end