Class: Dependabot::Package::NpmPackageJson

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/package/npm_package_json.rb

Constant Summary collapse

ObjectHash =
T.type_alias { T::Hash[String, Object] }
DEPENDENCY_TYPES =
%w(dependencies devDependencies optionalDependencies).freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, path) ⇒ NpmPackageJson

Returns a new instance of NpmPackageJson.



24
25
26
27
# File 'lib/dependabot/package/npm_package_json.rb', line 24

def initialize(data, path)
  @path = path
  @data = T.let(object_hash(data, "root"), ObjectHash)
end

Class Method Details

.from_file(file) ⇒ Object



19
20
21
# File 'lib/dependabot/package/npm_package_json.rb', line 19

def self.from_file(file)
  new(T.cast(JSON.parse(T.must(file.content)), Object), file.path)
end

Instance Method Details

#each_dependency(&_block) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/dependabot/package/npm_package_json.rb', line 32

def each_dependency(&_block)
  DEPENDENCY_TYPES.each do |type|
    dependencies = @data[type]
    next unless dependencies

    object_hash(dependencies, type).each do |name, requirement|
      next unless requirement.is_a?(String)

      yield name, requirement, type
    end
  end
end

#flat?Boolean

Returns:



52
53
54
# File 'lib/dependabot/package/npm_package_json.rb', line 52

def flat?
  !!@data["flat"]
end

#nameObject



46
47
48
49
# File 'lib/dependabot/package/npm_package_json.rb', line 46

def name
  value = @data["name"]
  value if value.is_a?(String)
end

#package_manager_configObject



62
63
64
# File 'lib/dependabot/package/npm_package_json.rb', line 62

def package_manager_config
  NpmPackageManagerConfig.from_package_json(@data)
end

#workspaces?Boolean

Returns:



57
58
59
# File 'lib/dependabot/package/npm_package_json.rb', line 57

def workspaces?
  !!@data["workspaces"]
end