Class: Gurney::Source::Npm

Inherits:
Base
  • Object
show all
Defined in:
lib/gurney/source/npm.rb

Constant Summary collapse

SUPPORTED_LOCKFILE_VERSIONS =
[2, 3].freeze

Instance Method Summary collapse

Constructor Details

#initialize(package_lock_json:) ⇒ Npm

Returns a new instance of Npm.



10
11
12
# File 'lib/gurney/source/npm.rb', line 10

def initialize(package_lock_json:)
  @package_lock_json = package_lock_json
end

Instance Method Details

#dependenciesObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/gurney/source/npm.rb', line 18

def dependencies
  if present?
    parsed_lock = JSON.parse(@package_lock_json)

    if SUPPORTED_LOCKFILE_VERSIONS.include?(parsed_lock['lockfileVersion'])
      extract_dependencies(parsed_lock)
    else
      puts "package-lock.json: Lockfile version #{parsed_lock['lockfileVersion']} is unsupported. No npm dependencies reported.".yellow
      []
    end
  end
rescue JSON::ParserError => e
  raise Gurney::Error.new("Invalid package-lock.json format: #{e.message}")
end

#present?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/gurney/source/npm.rb', line 14

def present?
  !@package_lock_json&.empty?
end