Class: Dependabot::Bun::FileParser::LockfileParser

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/bun/file_parser/lockfile_parser.rb

Constant Summary collapse

DEFAULT_LOCKFILES =
%w(package-lock.json yarn.lock pnpm-lock.yaml bun.lock npm-shrinkwrap.json).freeze
LockFile =
T.type_alias { BunLock }

Instance Method Summary collapse

Constructor Details

#initialize(dependency_files:) ⇒ LockfileParser

Returns a new instance of LockfileParser.



22
23
24
# File 'lib/dependabot/bun/file_parser/lockfile_parser.rb', line 22

def initialize(dependency_files:)
  @dependency_files = dependency_files
end

Instance Method Details

#lockfile_details(dependency_name:, requirement:, manifest_name:) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/dependabot/bun/file_parser/lockfile_parser.rb', line 50

def lockfile_details(dependency_name:, requirement:, manifest_name:)
  details = T.let(nil, T.nilable(T::Hash[String, T.untyped]))
  potential_lockfiles_for_manifest(manifest_name).each do |lockfile|
    details = lockfile_for(lockfile).details(dependency_name, requirement, manifest_name)

    break if details
  end

  details
end

#parseObject



42
43
44
# File 'lib/dependabot/bun/file_parser/lockfile_parser.rb', line 42

def parse
  Helpers.(parse_set)
end

#parse_setObject



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dependabot/bun/file_parser/lockfile_parser.rb', line 27

def parse_set
  dependency_set = Dependabot::FileParsers::Base::DependencySet.new

  # NOTE: The DependencySet will de-dupe our dependencies, so they
  # end up unique by name. That's not a perfect representation of
  # the nested nature of JS resolution, but it makes everything work
  # comparably to other flat-resolution strategies
  bun_locks.each do |file|
    dependency_set += lockfile_for(file).dependencies
  end

  dependency_set
end