module OssAudit::Managers::Yarn

Public Class Methods

get_info(package, version=nil) click to toggle source
# File lib/oss_audit/managers/yarn.rb, line 21
def self.get_info(package, version=nil)
  data = get_uri("https://registry.yarnpkg.com/#{package}/#{version||'latest'}")
  
  unless data.is_a?(Hash)
    OssAudit.logger.error{"#{package} | #{data}"}
    return
  end

  name          = data['name']
  licenses      = Array(data['license'])
  homepage      = data['homepage']
  source        = data.dig('repository','url')

  dependencies  = (data['dependencies']||{}).keys


  return {
    "name"          => name,
    "licenses"      => licenses,
    "homepage"      => homepage,
    "source"        => source,
    "dependencies"  => dependencies
  }
end
list_dependencies(directory) click to toggle source
# File lib/oss_audit/managers/yarn.rb, line 14
def self.list_dependencies(directory)
  packages_files(directory).map do |file|
    data = JSON.parse(File.read(file))
    ((data['dependencies']||{}).keys | (data['devDependencies']||{}).keys)
  end.flatten
end
packages_files(directory) click to toggle source
# File lib/oss_audit/managers/yarn.rb, line 6
def self.packages_files(directory)
  Dir.glob(File.join(directory, '**/package.json')).reject{|x| x.include?('node_modules')}
end
used_in?(directory) click to toggle source
# File lib/oss_audit/managers/yarn.rb, line 10
def self.used_in?(directory)
  packages_files(directory).any?
end