dependabot-npm_and_yarn 0.91.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/helpers/build +14 -0
  3. data/helpers/npm/.eslintrc +14 -0
  4. data/helpers/npm/bin/run.js +34 -0
  5. data/helpers/npm/lib/helpers.js +25 -0
  6. data/helpers/npm/lib/peer-dependency-checker.js +102 -0
  7. data/helpers/npm/lib/subdependency-updater.js +48 -0
  8. data/helpers/npm/lib/updater.js +101 -0
  9. data/helpers/npm/package-lock.json +8868 -0
  10. data/helpers/npm/package.json +17 -0
  11. data/helpers/npm/test/fixtures/npm-left-pad.json +1 -0
  12. data/helpers/npm/test/fixtures/updater/original/package-lock.json +16 -0
  13. data/helpers/npm/test/fixtures/updater/original/package.json +9 -0
  14. data/helpers/npm/test/fixtures/updater/updated/package-lock.json +16 -0
  15. data/helpers/npm/test/helpers.js +7 -0
  16. data/helpers/npm/test/updater.test.js +50 -0
  17. data/helpers/npm/yarn.lock +6176 -0
  18. data/helpers/yarn/.eslintrc +14 -0
  19. data/helpers/yarn/bin/run.js +36 -0
  20. data/helpers/yarn/lib/fix-duplicates.js +78 -0
  21. data/helpers/yarn/lib/helpers.js +5 -0
  22. data/helpers/yarn/lib/lockfile-parser.js +21 -0
  23. data/helpers/yarn/lib/peer-dependency-checker.js +130 -0
  24. data/helpers/yarn/lib/replace-lockfile-declaration.js +57 -0
  25. data/helpers/yarn/lib/subdependency-updater.js +69 -0
  26. data/helpers/yarn/lib/updater.js +266 -0
  27. data/helpers/yarn/package.json +17 -0
  28. data/helpers/yarn/test/fixtures/updater/original/package.json +6 -0
  29. data/helpers/yarn/test/fixtures/updater/original/yarn.lock +11 -0
  30. data/helpers/yarn/test/fixtures/updater/updated/yarn.lock +12 -0
  31. data/helpers/yarn/test/fixtures/updater/with-version-comments/package.json +5 -0
  32. data/helpers/yarn/test/fixtures/updater/with-version-comments/yarn.lock +13 -0
  33. data/helpers/yarn/test/fixtures/yarnpkg-is-positive.json +1 -0
  34. data/helpers/yarn/test/fixtures/yarnpkg-left-pad.json +1 -0
  35. data/helpers/yarn/test/helpers.js +7 -0
  36. data/helpers/yarn/test/updater.test.js +93 -0
  37. data/helpers/yarn/yarn.lock +4760 -0
  38. data/lib/dependabot/npm_and_yarn/file_fetcher/path_dependency_builder.rb +146 -0
  39. data/lib/dependabot/npm_and_yarn/file_fetcher.rb +332 -0
  40. data/lib/dependabot/npm_and_yarn/file_parser.rb +397 -0
  41. data/lib/dependabot/npm_and_yarn/file_updater/npm_lockfile_updater.rb +527 -0
  42. data/lib/dependabot/npm_and_yarn/file_updater/npmrc_builder.rb +190 -0
  43. data/lib/dependabot/npm_and_yarn/file_updater/package_json_preparer.rb +87 -0
  44. data/lib/dependabot/npm_and_yarn/file_updater/package_json_updater.rb +218 -0
  45. data/lib/dependabot/npm_and_yarn/file_updater/yarn_lockfile_updater.rb +471 -0
  46. data/lib/dependabot/npm_and_yarn/file_updater.rb +189 -0
  47. data/lib/dependabot/npm_and_yarn/metadata_finder.rb +217 -0
  48. data/lib/dependabot/npm_and_yarn/native_helpers.rb +28 -0
  49. data/lib/dependabot/npm_and_yarn/requirement.rb +145 -0
  50. data/lib/dependabot/npm_and_yarn/update_checker/latest_version_finder.rb +340 -0
  51. data/lib/dependabot/npm_and_yarn/update_checker/library_detector.rb +67 -0
  52. data/lib/dependabot/npm_and_yarn/update_checker/registry_finder.rb +224 -0
  53. data/lib/dependabot/npm_and_yarn/update_checker/requirements_updater.rb +193 -0
  54. data/lib/dependabot/npm_and_yarn/update_checker/subdependency_version_resolver.rb +223 -0
  55. data/lib/dependabot/npm_and_yarn/update_checker/version_resolver.rb +495 -0
  56. data/lib/dependabot/npm_and_yarn/update_checker.rb +282 -0
  57. data/lib/dependabot/npm_and_yarn/version.rb +34 -0
  58. data/lib/dependabot/npm_and_yarn.rb +11 -0
  59. metadata +226 -0
@@ -0,0 +1,282 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dependabot/git_commit_checker"
4
+ require "dependabot/update_checkers"
5
+ require "dependabot/update_checkers/base"
6
+ require "dependabot/shared_helpers"
7
+
8
+ module Dependabot
9
+ module NpmAndYarn
10
+ class UpdateChecker < Dependabot::UpdateCheckers::Base
11
+ require_relative "update_checker/requirements_updater"
12
+ require_relative "update_checker/library_detector"
13
+ require_relative "update_checker/latest_version_finder"
14
+ require_relative "update_checker/version_resolver"
15
+ require_relative "update_checker/subdependency_version_resolver"
16
+
17
+ def latest_version
18
+ @latest_version ||=
19
+ if git_dependency?
20
+ latest_version_for_git_dependency
21
+ else
22
+ latest_version_details&.fetch(:version)
23
+ end
24
+ end
25
+
26
+ def latest_resolvable_version
27
+ return unless latest_version
28
+
29
+ @latest_resolvable_version ||=
30
+ if dependency.top_level?
31
+ version_resolver.latest_resolvable_version
32
+ else
33
+ # If the dependency is indirect its version is constrained by the
34
+ # requirements placed on it by dependencies lower down the tree
35
+ subdependency_version_resolver.latest_resolvable_version
36
+ end
37
+ end
38
+
39
+ def latest_resolvable_version_with_no_unlock
40
+ return latest_resolvable_version unless dependency.top_level?
41
+
42
+ if git_dependency?
43
+ return latest_resolvable_version_with_no_unlock_for_git_dependency
44
+ end
45
+
46
+ latest_version_finder.latest_resolvable_version_with_no_unlock
47
+ end
48
+
49
+ def updated_requirements
50
+ resolvable_version =
51
+ if latest_resolvable_version.is_a?(version_class)
52
+ latest_resolvable_version.to_s
53
+ elsif latest_resolvable_version.nil?
54
+ nil
55
+ else
56
+ latest_version_details&.fetch(:version, nil)&.to_s
57
+ end
58
+
59
+ @updated_requirements ||=
60
+ RequirementsUpdater.new(
61
+ requirements: dependency.requirements,
62
+ updated_source: updated_source,
63
+ latest_version:
64
+ latest_version_details&.fetch(:version, nil)&.to_s,
65
+ latest_resolvable_version: resolvable_version,
66
+ update_strategy: requirements_update_strategy
67
+ ).updated_requirements
68
+ end
69
+
70
+ def requirements_update_strategy
71
+ # If passed in as an option (in the base class) honour that option
72
+ if @requirements_update_strategy
73
+ return @requirements_update_strategy.to_sym
74
+ end
75
+
76
+ # Otherwise, widen ranges for libraries and bump versions for apps
77
+ library? ? :widen_ranges : :bump_versions
78
+ end
79
+
80
+ private
81
+
82
+ def latest_version_resolvable_with_full_unlock?
83
+ return unless latest_version
84
+
85
+ # No support for full unlocks for subdependencies yet
86
+ return false unless dependency.top_level?
87
+
88
+ version_resolver.latest_version_resolvable_with_full_unlock?
89
+ end
90
+
91
+ def updated_dependencies_after_full_unlock
92
+ version_resolver.dependency_updates_from_full_unlock.
93
+ map { |update_details| build_updated_dependency(update_details) }
94
+ end
95
+
96
+ def build_updated_dependency(update_details)
97
+ original_dep = update_details.fetch(:dependency)
98
+
99
+ Dependency.new(
100
+ name: original_dep.name,
101
+ version: update_details.fetch(:version).to_s,
102
+ requirements: RequirementsUpdater.new(
103
+ requirements: original_dep.requirements,
104
+ updated_source: original_dep == dependency ? updated_source : nil,
105
+ latest_version: update_details[:version].to_s,
106
+ latest_resolvable_version: update_details[:version].to_s,
107
+ update_strategy: requirements_update_strategy
108
+ ).updated_requirements,
109
+ previous_version: original_dep.version,
110
+ previous_requirements: original_dep.requirements,
111
+ package_manager: original_dep.package_manager
112
+ )
113
+ end
114
+
115
+ def latest_resolvable_version_with_no_unlock_for_git_dependency
116
+ reqs = dependency.requirements.map do |r|
117
+ next if r.fetch(:requirement).nil?
118
+
119
+ requirement_class.requirements_array(r.fetch(:requirement))
120
+ end.compact
121
+
122
+ return dependency.version if git_commit_checker.pinned?
123
+
124
+ # TODO: Really we should get a tag that satisfies the semver req
125
+ return dependency.version if reqs.any?
126
+
127
+ git_commit_checker.head_commit_for_current_branch
128
+ end
129
+
130
+ def latest_version_for_git_dependency
131
+ @latest_version_for_git_dependency ||=
132
+ begin
133
+ latest_release = latest_version_finder.
134
+ latest_version_details_from_registry
135
+
136
+ # If there's been a release that includes the current pinned ref
137
+ # or that the current branch is behind, we switch to that release.
138
+ if git_branch_or_ref_in_release?(latest_release&.fetch(:version))
139
+ latest_release.fetch(:version)
140
+ else
141
+ latest_git_version_details[:sha]
142
+ end
143
+ end
144
+ end
145
+
146
+ def should_switch_source_from_git_to_registry?
147
+ return false unless git_dependency?
148
+ return false if latest_version_for_git_dependency.nil?
149
+
150
+ version_class.correct?(latest_version_for_git_dependency)
151
+ end
152
+
153
+ def git_branch_or_ref_in_release?(release)
154
+ return false unless release
155
+
156
+ git_commit_checker.branch_or_ref_in_release?(release)
157
+ end
158
+
159
+ def latest_version_details
160
+ @latest_version_details ||=
161
+ if git_dependency? && !should_switch_source_from_git_to_registry?
162
+ latest_git_version_details
163
+ else
164
+ latest_version_finder.latest_version_details_from_registry
165
+ end
166
+ end
167
+
168
+ def latest_version_finder
169
+ @latest_version_finder ||=
170
+ LatestVersionFinder.new(
171
+ dependency: dependency,
172
+ credentials: credentials,
173
+ dependency_files: dependency_files,
174
+ ignored_versions: ignored_versions
175
+ )
176
+ end
177
+
178
+ def version_resolver
179
+ @version_resolver ||=
180
+ VersionResolver.new(
181
+ dependency: dependency,
182
+ credentials: credentials,
183
+ dependency_files: dependency_files,
184
+ latest_allowable_version: latest_version,
185
+ latest_version_finder: latest_version_finder
186
+ )
187
+ end
188
+
189
+ def subdependency_version_resolver
190
+ @subdependency_version_resolver ||=
191
+ SubdependencyVersionResolver.new(
192
+ dependency: dependency,
193
+ credentials: credentials,
194
+ dependency_files: dependency_files,
195
+ ignored_versions: ignored_versions
196
+ )
197
+ end
198
+
199
+ def git_dependency?
200
+ git_commit_checker.git_dependency?
201
+ end
202
+
203
+ def latest_git_version_details
204
+ semver_req =
205
+ dependency.requirements.
206
+ find { |req| req.dig(:source, :type) == "git" }&.
207
+ fetch(:requirement)
208
+
209
+ # If there was a semver requirement provided or the dependency was
210
+ # pinned to a version, look for the latest tag
211
+ if semver_req || git_commit_checker.pinned_ref_looks_like_version?
212
+ latest_tag = git_commit_checker.local_tag_for_latest_version
213
+ return {
214
+ sha: latest_tag&.fetch(:commit_sha),
215
+ version: latest_tag&.fetch(:tag)&.gsub(/^[^\d]*/, "")
216
+ }
217
+ end
218
+
219
+ # Otherwise, if the gem isn't pinned, the latest version is just the
220
+ # latest commit for the specified branch.
221
+ unless git_commit_checker.pinned?
222
+ return { sha: git_commit_checker.head_commit_for_current_branch }
223
+ end
224
+
225
+ # If the dependency is pinned to a tag that doesn't look like a
226
+ # version then there's nothing we can do.
227
+ { sha: dependency.version }
228
+ end
229
+
230
+ def updated_source
231
+ # Never need to update source, unless a git_dependency
232
+ return dependency_source_details unless git_dependency?
233
+
234
+ # Source becomes `nil` if switching to default rubygems
235
+ return nil if should_switch_source_from_git_to_registry?
236
+
237
+ # Update the git tag if updating a pinned version
238
+ if git_commit_checker.pinned_ref_looks_like_version? &&
239
+ !git_commit_checker.local_tag_for_latest_version.nil?
240
+ new_tag = git_commit_checker.local_tag_for_latest_version
241
+ return dependency_source_details.merge(ref: new_tag.fetch(:tag))
242
+ end
243
+
244
+ # Otherwise return the original source
245
+ dependency_source_details
246
+ end
247
+
248
+ def library?
249
+ return true unless dependency.version
250
+ return true if dependency_files.any? { |f| f.name == "lerna.json" }
251
+
252
+ @library =
253
+ LibraryDetector.new(package_json_file: package_json).library?
254
+ end
255
+
256
+ def dependency_source_details
257
+ sources =
258
+ dependency.requirements.map { |r| r.fetch(:source) }.uniq.compact
259
+
260
+ raise "Multiple sources! #{sources.join(', ')}" if sources.count > 1
261
+
262
+ sources.first
263
+ end
264
+
265
+ def package_json
266
+ @package_json ||=
267
+ dependency_files.find { |f| f.name == "package.json" }
268
+ end
269
+
270
+ def git_commit_checker
271
+ @git_commit_checker ||=
272
+ GitCommitChecker.new(
273
+ dependency: dependency,
274
+ credentials: credentials
275
+ )
276
+ end
277
+ end
278
+ end
279
+ end
280
+
281
+ Dependabot::UpdateCheckers.
282
+ register("npm_and_yarn", Dependabot::NpmAndYarn::UpdateChecker)
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dependabot/utils"
4
+ require "rubygems_version_patch"
5
+
6
+ # JavaScript pre-release versions use 1.0.1-rc1 syntax, which Gem::Version
7
+ # converts into 1.0.1.pre.rc1. We override the `to_s` method to stop that
8
+ # alteration.
9
+ #
10
+ # See https://semver.org/ for details of node's version syntax.
11
+
12
+ module Dependabot
13
+ module NpmAndYarn
14
+ class Version < Gem::Version
15
+ def self.correct?(version)
16
+ version = version.gsub(/^v/, "") if version.is_a?(String)
17
+ super(version)
18
+ end
19
+
20
+ def initialize(version)
21
+ @version_string = version.to_s
22
+ version = version.gsub(/^v/, "") if version.is_a?(String)
23
+ super
24
+ end
25
+
26
+ def to_s
27
+ @version_string
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ Dependabot::Utils.
34
+ register_version_class("npm_and_yarn", Dependabot::NpmAndYarn::Version)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # These all need to be required so the various classes can be registered in a
4
+ # lookup table of package manager names to concrete classes.
5
+ require "dependabot/npm_and_yarn/file_fetcher"
6
+ require "dependabot/npm_and_yarn/file_parser"
7
+ require "dependabot/npm_and_yarn/update_checker"
8
+ require "dependabot/npm_and_yarn/file_updater"
9
+ require "dependabot/npm_and_yarn/metadata_finder"
10
+ require "dependabot/npm_and_yarn/requirement"
11
+ require "dependabot/npm_and_yarn/version"
metadata ADDED
@@ -0,0 +1,226 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dependabot-npm_and_yarn
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.91.0
5
+ platform: ruby
6
+ authors:
7
+ - Dependabot
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-01-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dependabot-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.91.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.91.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '12'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-its
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec_junit_formatter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.4'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.61'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.61'
111
+ - !ruby/object:Gem::Dependency
112
+ name: vcr
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '4.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '4.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.4'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.4'
139
+ description: Automated dependency management for Ruby, JavaScript, Python, PHP, Elixir,
140
+ Rust, Java, .NET, Elm and Go
141
+ email: support@dependabot.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - helpers/build
147
+ - helpers/npm/.eslintrc
148
+ - helpers/npm/bin/run.js
149
+ - helpers/npm/lib/helpers.js
150
+ - helpers/npm/lib/peer-dependency-checker.js
151
+ - helpers/npm/lib/subdependency-updater.js
152
+ - helpers/npm/lib/updater.js
153
+ - helpers/npm/package-lock.json
154
+ - helpers/npm/package.json
155
+ - helpers/npm/test/fixtures/npm-left-pad.json
156
+ - helpers/npm/test/fixtures/updater/original/package-lock.json
157
+ - helpers/npm/test/fixtures/updater/original/package.json
158
+ - helpers/npm/test/fixtures/updater/updated/package-lock.json
159
+ - helpers/npm/test/helpers.js
160
+ - helpers/npm/test/updater.test.js
161
+ - helpers/npm/yarn.lock
162
+ - helpers/yarn/.eslintrc
163
+ - helpers/yarn/bin/run.js
164
+ - helpers/yarn/lib/fix-duplicates.js
165
+ - helpers/yarn/lib/helpers.js
166
+ - helpers/yarn/lib/lockfile-parser.js
167
+ - helpers/yarn/lib/peer-dependency-checker.js
168
+ - helpers/yarn/lib/replace-lockfile-declaration.js
169
+ - helpers/yarn/lib/subdependency-updater.js
170
+ - helpers/yarn/lib/updater.js
171
+ - helpers/yarn/package.json
172
+ - helpers/yarn/test/fixtures/updater/original/package.json
173
+ - helpers/yarn/test/fixtures/updater/original/yarn.lock
174
+ - helpers/yarn/test/fixtures/updater/updated/yarn.lock
175
+ - helpers/yarn/test/fixtures/updater/with-version-comments/package.json
176
+ - helpers/yarn/test/fixtures/updater/with-version-comments/yarn.lock
177
+ - helpers/yarn/test/fixtures/yarnpkg-is-positive.json
178
+ - helpers/yarn/test/fixtures/yarnpkg-left-pad.json
179
+ - helpers/yarn/test/helpers.js
180
+ - helpers/yarn/test/updater.test.js
181
+ - helpers/yarn/yarn.lock
182
+ - lib/dependabot/npm_and_yarn.rb
183
+ - lib/dependabot/npm_and_yarn/file_fetcher.rb
184
+ - lib/dependabot/npm_and_yarn/file_fetcher/path_dependency_builder.rb
185
+ - lib/dependabot/npm_and_yarn/file_parser.rb
186
+ - lib/dependabot/npm_and_yarn/file_updater.rb
187
+ - lib/dependabot/npm_and_yarn/file_updater/npm_lockfile_updater.rb
188
+ - lib/dependabot/npm_and_yarn/file_updater/npmrc_builder.rb
189
+ - lib/dependabot/npm_and_yarn/file_updater/package_json_preparer.rb
190
+ - lib/dependabot/npm_and_yarn/file_updater/package_json_updater.rb
191
+ - lib/dependabot/npm_and_yarn/file_updater/yarn_lockfile_updater.rb
192
+ - lib/dependabot/npm_and_yarn/metadata_finder.rb
193
+ - lib/dependabot/npm_and_yarn/native_helpers.rb
194
+ - lib/dependabot/npm_and_yarn/requirement.rb
195
+ - lib/dependabot/npm_and_yarn/update_checker.rb
196
+ - lib/dependabot/npm_and_yarn/update_checker/latest_version_finder.rb
197
+ - lib/dependabot/npm_and_yarn/update_checker/library_detector.rb
198
+ - lib/dependabot/npm_and_yarn/update_checker/registry_finder.rb
199
+ - lib/dependabot/npm_and_yarn/update_checker/requirements_updater.rb
200
+ - lib/dependabot/npm_and_yarn/update_checker/subdependency_version_resolver.rb
201
+ - lib/dependabot/npm_and_yarn/update_checker/version_resolver.rb
202
+ - lib/dependabot/npm_and_yarn/version.rb
203
+ homepage: https://github.com/dependabot/dependabot-core
204
+ licenses:
205
+ - Nonstandard
206
+ metadata: {}
207
+ post_install_message:
208
+ rdoc_options: []
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: 2.5.0
216
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: 2.5.0
221
+ requirements: []
222
+ rubygems_version: 3.0.1
223
+ signing_key:
224
+ specification_version: 4
225
+ summary: JS support for dependabot-core
226
+ test_files: []