Class: Dependabot::UpdateCheckers::JavaScript::NpmAndYarn::VersionResolver
- Inherits:
-
Object
- Object
- Dependabot::UpdateCheckers::JavaScript::NpmAndYarn::VersionResolver
- Defined in:
- lib/dependabot/update_checkers/java_script/npm_and_yarn/version_resolver.rb
Constant Summary collapse
- TIGHTLY_COUPLED_MONOREPOS =
{ "vue" => %w(vue vue-template-compiler) }.freeze
- YARN_PEER_DEP_ERROR_REGEX =
Error message from yarn add: “ > @reach/[email protected]” has incorrect \ peer dependency “[email protected] || 16.x || 16.4.0-alpha.0911da3” “ > [email protected]” has unmet \ peer dependency “react@>=0.14.0 <16.0.0”.
/ "\s>\s(?<requiring_dep>[^"]+)"\s has\s(incorrect|unmet)\speer\sdependency\s "(?<required_dep>[^"]+)" /x.freeze
- NPM_PEER_DEP_ERROR_REGEX =
Error message from npm install: [email protected] requires a peer of react@^15.2.0 \ but none is installed. You must install peer dependencies yourself.
/ (?<requiring_dep>[^\s]+)\s requires\sa\speer\sof\s (?<required_dep>.+?)\sbut\snone\sis\sinstalled. /x.freeze
Instance Method Summary collapse
- #dependency_updates_from_full_unlock ⇒ Object
-
#initialize(dependency:, credentials:, dependency_files:, latest_allowable_version:, latest_version_finder:) ⇒ VersionResolver
constructor
A new instance of VersionResolver.
- #latest_resolvable_version ⇒ Object
- #latest_version_resolvable_with_full_unlock? ⇒ Boolean
Constructor Details
#initialize(dependency:, credentials:, dependency_files:, latest_allowable_version:, latest_version_finder:) ⇒ VersionResolver
Returns a new instance of VersionResolver.
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/version_resolver.rb', line 49 def initialize(dependency:, credentials:, dependency_files:, latest_allowable_version:, latest_version_finder:) @dependency = dependency @credentials = credentials @dependency_files = dependency_files @latest_allowable_version = latest_allowable_version @latest_version_finder = {} @latest_version_finder[dependency] = latest_version_finder end |
Instance Method Details
#dependency_updates_from_full_unlock ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/version_resolver.rb', line 77 def dependency_updates_from_full_unlock return if git_dependency?(dependency) if part_of_tightly_locked_monorepo? return updated_monorepo_dependencies end return if newly_broken_peer_reqs_from_dep.any? updates = [{ dependency: dependency, version: latest_allowable_version }] newly_broken_peer_reqs_on_dep.each do |peer_req| dep_name = peer_req.fetch(:requiring_dep_name) dep = top_level_dependencies.find { |d| d.name == dep_name } # Can't handle reqs from sub-deps or git source deps (yet) return nil if dep.nil? return nil if git_dependency?(dep) updated_version = latest_version_of_dep_with_satisfied_peer_reqs(dep) return nil unless updated_version updates << { dependency: dep, version: updated_version } end updates end |
#latest_resolvable_version ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/version_resolver.rb', line 60 def latest_resolvable_version return latest_allowable_version if git_dependency?(dependency) return if part_of_tightly_locked_monorepo? unless relevant_unmet_peer_dependencies.any? return latest_allowable_version end .first end |
#latest_version_resolvable_with_full_unlock? ⇒ Boolean
71 72 73 74 75 |
# File 'lib/dependabot/update_checkers/java_script/npm_and_yarn/version_resolver.rb', line 71 def latest_version_resolvable_with_full_unlock? return false if dependency_updates_from_full_unlock.nil? true end |