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
|