Class: Dependabot::UpdateCheckers::JavaScript::NpmAndYarn::LatestVersionFinder
- Inherits:
-
Object
- Object
- Dependabot::UpdateCheckers::JavaScript::NpmAndYarn::LatestVersionFinder
- Defined in:
- lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb
Defined Under Namespace
Classes: RegistryError
Instance Method Summary collapse
-
#initialize(dependency:, credentials:, dependency_files:, ignored_versions:) ⇒ LatestVersionFinder
constructor
A new instance of LatestVersionFinder.
- #latest_resolvable_version_with_no_unlock ⇒ Object
- #latest_version_details_from_registry ⇒ Object
- #possible_versions ⇒ Object
- #possible_versions_with_details ⇒ Object
Constructor Details
#initialize(dependency:, credentials:, dependency_files:, ignored_versions:) ⇒ LatestVersionFinder
Returns a new instance of LatestVersionFinder.
18 19 20 21 22 23 24 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb', line 18 def initialize(dependency:, credentials:, dependency_files:, ignored_versions:) @dependency = dependency @credentials = credentials @dependency_files = dependency_files @ignored_versions = ignored_versions end |
Instance Method Details
#latest_resolvable_version_with_no_unlock ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb', line 40 def latest_resolvable_version_with_no_unlock return unless npm_details if specified_dist_tag_requirement? return (npm_details) end reqs = dependency.requirements.map do |r| Utils::JavaScript::Requirement. requirements_array(r.fetch(:requirement)) end.compact possible_versions. find do |version| reqs.all? { |r| r.any? { |opt| opt.satisfied_by?(version) } } && !yanked?(version) end rescue Excon::Error::Socket, Excon::Error::Timeout raise if dependency_registry == "registry.npmjs.org" # Sometimes custom registries are flaky. We don't want to make that # our problem, so we quietly return `nil` here. end |
#latest_version_details_from_registry ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb', line 26 def latest_version_details_from_registry return nil unless npm_details&.fetch("dist-tags", nil) dist_tag_version = (npm_details) return { version: dist_tag_version } if dist_tag_version return nil if specified_dist_tag_requirement? { version: version_from_versions_array } rescue Excon::Error::Socket, Excon::Error::Timeout raise if dependency_registry == "registry.npmjs.org" # Custom registries can be flaky. We don't want to make that # our problem, so we quietly return `nil` here. end |
#possible_versions ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb', line 63 def possible_versions npm_details.fetch("versions", {}). reject { |_, details| details["deprecated"] }. keys.map { |v| version_class.new(v) }. reject { |v| v.prerelease? && !(v) }. reject { |v| ignore_reqs.any? { |r| r.satisfied_by?(v) } }. sort.reverse end |
#possible_versions_with_details ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb', line 72 def possible_versions_with_details npm_details.fetch("versions", {}). reject { |_, details| details["deprecated"] }. transform_keys { |k| version_class.new(k) }. reject { |k, _| k.prerelease? && !(k) }. reject { |k, _| ignore_reqs.any? { |r| r.satisfied_by?(k) } }. sort_by(&:first).reverse end |