dependabot-bun 0.389.0 → 0.390.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22834707df55df4ac0a7ac6780eccb4888052824833bbab428b11e10142871df
4
- data.tar.gz: c557dcb417537da0427682aa54ef50f2a4d096707b2eecf3b0a2e727eae95172
3
+ metadata.gz: a87047ba9bf138915ef7bb28569196efd6e7fc9de03cd41053374dc19228d971
4
+ data.tar.gz: a1210b2303e1073dd02e9befd6151da22d14fbe9b9a4083e567161fde73f9db9
5
5
  SHA512:
6
- metadata.gz: 5d1471eeeeb325f22b47c5fa57d6f02890f84b18525e07ab58b83a0b4e95bca08719696765f3e9d9a9d42c2d578f2db2c6b84c547b055d48961f718fa7735c26
7
- data.tar.gz: 837703736f6acb5a04b29209746ddfb8481d9d2f8264ba0dd25d2b4fd584b5770bab5b6745828d15dcbd284c60179ae61ee1a8efe9130592a5098372bfff2b69
6
+ metadata.gz: 83140f9fb4ad8a2632ad3b78183b13f3c15024de91a3877187642526f4842886ce11c4fb5b7596b5e5fb5e4571ee8338bf8b3ab18521d791b682272a69a0a9a4
7
+ data.tar.gz: 4624cab6e22b238f17daff6528dbb5bb1819d4b9cbe793a9bb587a466a0630040bdfb52427c7e48b475f2b9b518ae97fcc2191e589b00a4102d8ee45df2a485d
@@ -68,7 +68,7 @@ module Dependabot
68
68
  def dependency_manifest_requirements
69
69
  @dependency_manifest_requirements ||= T.let(
70
70
  updated_dependencies.flat_map do |dep|
71
- dep.requirements.map { |requirement| requirement[:file] }
71
+ dep.requirements.filter_map(&:file)
72
72
  end,
73
73
  T.nilable(T::Array[String])
74
74
  )
@@ -67,16 +67,16 @@ module Dependabot
67
67
  reqs = dep.requirements
68
68
 
69
69
  # Ignore dependencies defined in support files, since we don't want PRs for those
70
- support_reqs = reqs.select { |r| support_package_files.any? { |f| f.name == r[:file] } }
70
+ support_reqs = reqs.select { |r| support_package_files.any? { |f| f.name == r.file } }
71
71
  next true if support_reqs.any?
72
72
 
73
73
  # TODO: Currently, Dependabot can't handle dependencies that have both
74
74
  # a git source *and* a non-git source. Fix that!
75
- git_reqs = reqs.select { |r| r.dig(:source, :type) == "git" }
75
+ git_reqs = reqs.select { |r| r.source_string("type") == "git" }
76
76
  next false if git_reqs.none?
77
- next true if git_reqs.map { |r| r.fetch(:source) }.uniq.count > 1
77
+ next true if git_reqs.map(&:source).uniq.count > 1
78
78
 
79
- dep.requirements.any? { |r| r.dig(:source, :type) != "git" }
79
+ dep.requirements.any? { |r| r.source_string("type") != "git" }
80
80
  end
81
81
  end
82
82
 
@@ -86,22 +86,22 @@ module Dependabot
86
86
  sig do
87
87
  params(
88
88
  dependency: Dependabot::Dependency,
89
- new_requirement: T::Hash[Symbol, T.untyped]
89
+ new_requirement: Dependabot::DependencyRequirement
90
90
  )
91
- .returns(T.nilable(T::Hash[Symbol, T.untyped]))
91
+ .returns(T.nilable(Dependabot::DependencyRequirement))
92
92
  end
93
93
  def old_requirement(dependency, new_requirement)
94
94
  T.must(dependency.previous_requirements)
95
- .select { |r| r[:file] == package_json.name }
96
- .find { |r| r[:groups] == new_requirement[:groups] }
95
+ .select { |r| r.file == package_json.name }
96
+ .find { |r| r.groups == new_requirement.groups }
97
97
  end
98
98
 
99
- sig { params(dependency: Dependabot::Dependency).returns(T::Array[T::Hash[Symbol, T.untyped]]) }
99
+ sig { params(dependency: Dependabot::Dependency).returns(T::Array[Dependabot::DependencyRequirement]) }
100
100
  def new_requirements(dependency)
101
- dependency.requirements.select { |r| r[:file] == package_json.name }
101
+ dependency.requirements.select { |r| r.file == package_json.name }
102
102
  end
103
103
 
104
- sig { params(dependency: Dependabot::Dependency).returns(T.nilable(T::Array[T::Hash[Symbol, T.untyped]])) }
104
+ sig { params(dependency: Dependabot::Dependency).returns(T.nilable(T::Array[Dependabot::DependencyRequirement])) }
105
105
  def updated_requirements(dependency)
106
106
  return unless dependency.previous_requirements
107
107
 
@@ -111,22 +111,22 @@ module Dependabot
111
111
  dependency.requirements.zip(T.must(dependency.previous_requirements))
112
112
  .reject do |new_req, old_req|
113
113
  next true if new_req == old_req
114
- next false unless old_req&.fetch(:source).nil?
114
+ next false unless old_req&.source.nil?
115
115
 
116
- new_req[:requirement] == old_req&.fetch(:requirement)
116
+ new_req.requirement == old_req&.requirement
117
117
  end
118
118
 
119
119
  updated_requirement_pairs
120
120
  .map(&:first)
121
- .select { |r| r[:file] == package_json.name }
121
+ .select { |r| r.file == package_json.name }
122
122
  end
123
123
 
124
124
  sig do
125
125
  params(
126
126
  package_json_content: String,
127
- new_req: T::Hash[Symbol, T.untyped],
127
+ new_req: Dependabot::DependencyRequirement,
128
128
  dependency_name: String,
129
- old_req: T.nilable(T::Hash[Symbol, T.untyped])
129
+ old_req: T.nilable(Dependabot::DependencyRequirement)
130
130
  )
131
131
  .returns(String)
132
132
  end
@@ -143,7 +143,7 @@ module Dependabot
143
143
  new_req: new_req
144
144
  )
145
145
 
146
- groups = new_req.fetch(:groups)
146
+ groups = T.must(new_req.groups).map(&:to_s)
147
147
 
148
148
  update_package_json_sections(
149
149
  groups,
@@ -159,9 +159,9 @@ module Dependabot
159
159
  sig do
160
160
  params(
161
161
  package_json_content: String,
162
- new_req: T::Hash[Symbol, T.untyped],
162
+ new_req: Dependabot::DependencyRequirement,
163
163
  dependency: Dependabot::Dependency,
164
- old_req: T.nilable(T::Hash[Symbol, T.untyped])
164
+ old_req: T.nilable(Dependabot::DependencyRequirement)
165
165
  )
166
166
  .returns(String)
167
167
  end
@@ -179,7 +179,7 @@ module Dependabot
179
179
  resolutions.each do |_, resolution|
180
180
  original_line = declaration_line(
181
181
  dependency_name: dep.name,
182
- dependency_req: { requirement: resolution },
182
+ dependency_req: Dependabot::DependencyRequirement.create(requirement: resolution),
183
183
  content: content
184
184
  )
185
185
 
@@ -187,8 +187,8 @@ module Dependabot
187
187
 
188
188
  replacement_line = replacement_declaration_line(
189
189
  original_line: original_line,
190
- old_req: { requirement: resolution },
191
- new_req: { requirement: new_resolution }
190
+ old_req: Dependabot::DependencyRequirement.create(requirement: resolution),
191
+ new_req: Dependabot::DependencyRequirement.create(requirement: new_resolution)
192
192
  )
193
193
 
194
194
  content = update_package_json_sections(
@@ -201,16 +201,16 @@ module Dependabot
201
201
  sig do
202
202
  params(
203
203
  dependency_name: String,
204
- dependency_req: T.nilable(T::Hash[Symbol, T.untyped]),
204
+ dependency_req: T.nilable(Dependabot::DependencyRequirement),
205
205
  content: String
206
206
  )
207
207
  .returns(String)
208
208
  end
209
209
  def declaration_line(dependency_name:, dependency_req:, content:)
210
- git_dependency = dependency_req&.dig(:source, :type) == "git"
210
+ git_dependency = dependency_req&.source_string("type") == "git"
211
211
 
212
212
  unless git_dependency
213
- requirement = dependency_req&.fetch(:requirement)
213
+ requirement = T.must(dependency_req&.requirement)
214
214
  return content.match(
215
215
  /"#{Regexp.escape(dependency_name)}"\s*:\s*
216
216
  "#{Regexp.escape(requirement)}"/x
@@ -218,37 +218,37 @@ module Dependabot
218
218
  end
219
219
 
220
220
  username, repo =
221
- dependency_req&.dig(:source, :url)&.split("/")&.last(2)
221
+ T.must(dependency_req&.source_string("url")).split("/").last(2)
222
222
 
223
223
  content.match(
224
224
  %r{"#{Regexp.escape(dependency_name)}"\s*:\s*
225
- ".*?#{Regexp.escape(username)}/#{Regexp.escape(repo)}.*"}x
225
+ ".*?#{Regexp.escape(T.must(username))}/#{Regexp.escape(T.must(repo))}.*"}x
226
226
  ).to_s
227
227
  end
228
228
 
229
229
  sig do
230
230
  params(
231
231
  original_line: String,
232
- old_req: T.nilable(T::Hash[Symbol, T.untyped]),
233
- new_req: T::Hash[Symbol, T.untyped]
232
+ old_req: T.nilable(Dependabot::DependencyRequirement),
233
+ new_req: Dependabot::DependencyRequirement
234
234
  )
235
235
  .returns(String)
236
236
  end
237
237
  def replacement_declaration_line(original_line:, old_req:, new_req:)
238
- was_git_dependency = old_req&.dig(:source, :type) == "git"
239
- now_git_dependency = new_req.dig(:source, :type) == "git"
238
+ was_git_dependency = old_req&.source_string("type") == "git"
239
+ now_git_dependency = new_req.source_string("type") == "git"
240
240
 
241
241
  unless was_git_dependency
242
242
  return original_line.gsub(
243
- %("#{old_req&.fetch(:requirement)}"),
244
- %("#{new_req.fetch(:requirement)}")
243
+ %("#{old_req&.requirement}"),
244
+ %("#{new_req.requirement}")
245
245
  )
246
246
  end
247
247
 
248
248
  unless now_git_dependency
249
249
  return original_line.gsub(
250
250
  /(?<=\s").*[^\\](?=")/,
251
- new_req.fetch(:requirement)
251
+ T.must(new_req.requirement_string)
252
252
  )
253
253
  end
254
254
 
@@ -261,32 +261,32 @@ module Dependabot
261
261
  end
262
262
 
263
263
  original_line.gsub(
264
- %(##{old_req&.dig(:source, :ref)}"),
265
- %(##{new_req.dig(:source, :ref)}")
264
+ %(##{old_req&.source_string('ref')}"),
265
+ %(##{new_req.source_string('ref')}")
266
266
  )
267
267
  end
268
268
 
269
269
  sig do
270
270
  params(
271
271
  original_line: String,
272
- old_req: T.nilable(T::Hash[Symbol, String]),
273
- new_req: T::Hash[Symbol, String]
272
+ old_req: T.nilable(Dependabot::DependencyRequirement),
273
+ new_req: Dependabot::DependencyRequirement
274
274
  )
275
275
  .returns(String)
276
276
  end
277
277
  def update_git_semver_requirement(original_line:, old_req:, new_req:)
278
278
  if original_line.include?("semver:")
279
279
  return original_line.gsub(
280
- %(semver:#{old_req&.fetch(:requirement)}"),
281
- %(semver:#{new_req.fetch(:requirement)}")
280
+ %(semver:#{old_req&.requirement}"),
281
+ %(semver:#{new_req.requirement}")
282
282
  )
283
283
  end
284
284
 
285
285
  raise "Not a semver req!" unless original_line.match?(/#[\^~=<>]/)
286
286
 
287
287
  original_line.gsub(
288
- %(##{old_req&.fetch(:requirement)}"),
289
- %(##{new_req.fetch(:requirement)}")
288
+ %(##{old_req&.requirement}"),
289
+ %(##{new_req.requirement}")
290
290
  )
291
291
  end
292
292
 
@@ -339,13 +339,14 @@ module Dependabot
339
339
  sig { params(dependency: Dependabot::Dependency).void }
340
340
  def preliminary_check_for_update(dependency)
341
341
  T.must(dependency.previous_requirements).each do |req, _dep|
342
- next if req.fetch(:requirement).nil?
342
+ requirement = req.requirement
343
+ next if requirement.nil?
343
344
 
344
345
  # some deps are patched with local patches, we don't need to update them
345
- if req.fetch(:requirement).match?(Regexp.union(PATCH_PACKAGE))
346
+ if requirement.match?(Regexp.union(PATCH_PACKAGE))
346
347
  Dependabot.logger.info(
347
348
  "Func: updated_requirements. dependency patched #{dependency.name}," \
348
- " Requirement: '#{req.fetch(:requirement)}'"
349
+ " Requirement: '#{requirement}'"
349
350
  )
350
351
 
351
352
  raise DependencyFileNotResolvable,
@@ -353,11 +354,11 @@ module Dependabot
353
354
  end
354
355
 
355
356
  # some deps are added as local packages, we don't need to update them as they are referred to a local path
356
- next unless req.fetch(:requirement).match?(Regexp.union(LOCAL_PACKAGE))
357
+ next unless requirement.match?(Regexp.union(LOCAL_PACKAGE))
357
358
 
358
359
  Dependabot.logger.info(
359
360
  "Func: updated_requirements. local package #{dependency.name}," \
360
- " Requirement: '#{req.fetch(:requirement)}'"
361
+ " Requirement: '#{requirement}'"
361
362
  )
362
363
 
363
364
  raise DependencyFileNotResolvable,
@@ -117,11 +117,11 @@ module Dependabot
117
117
  potential_sources.first
118
118
  end
119
119
 
120
- sig { returns(T.nilable(T::Hash[T.any(String, Symbol), String])) }
120
+ sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
121
121
  def new_source
122
122
  sources = dependency.requirements
123
- .map { |r| r.fetch(:source) }.uniq.compact
124
- .sort_by { |source| Package::RegistryFinder.central_registry?(source[:url]) ? 1 : 0 }
123
+ .map(&:source_hash).uniq.compact
124
+ .sort_by { |source| Package::RegistryFinder.central_registry?(T.cast(source[:url], String)) ? 1 : 0 }
125
125
 
126
126
  sources.first
127
127
  end
@@ -171,7 +171,7 @@ module Dependabot
171
171
  sig { returns(T.nilable(Source)) }
172
172
  def find_source_from_git_url
173
173
  url = new_source&.[](:url) || new_source&.fetch("url")
174
- Source.from_url(url)
174
+ Source.from_url(T.cast(url, T.nilable(String)))
175
175
  end
176
176
 
177
177
  sig { returns(T::Hash[String, T.untyped]) }
@@ -266,10 +266,10 @@ module Dependabot
266
266
 
267
267
  sig { returns(String) }
268
268
  def dependency_registry
269
- if new_source.nil? then "registry.npmjs.org"
270
- else
271
- T.must(new_source).fetch(:url).gsub("https://", "").gsub("http://", "")
272
- end
269
+ source = new_source
270
+ return "registry.npmjs.org" if source.nil?
271
+
272
+ T.cast(source.fetch(:url), String).gsub("https://", "").gsub("http://", "")
273
273
  end
274
274
 
275
275
  sig { returns(T.nilable(String)) }
@@ -393,10 +393,10 @@ module Dependabot
393
393
  sig { returns(T.nilable(String)) }
394
394
  def registry_source_url # rubocop:disable Metrics/PerceivedComplexity
395
395
  sources = dependency&.requirements
396
- &.map { |r| r.fetch(:source) }&.uniq&.compact
397
- &.sort_by { |source| self.class.central_registry?(source[:url]) ? 1 : 0 }
396
+ &.map(&:source_hash)&.uniq&.compact
397
+ &.sort_by { |source| self.class.central_registry?(T.cast(source[:url], String)) ? 1 : 0 }
398
398
 
399
- sources&.find { |s| s[:type] == "registry" }&.fetch(:url)
399
+ T.cast(sources&.find { |s| s[:type] == "registry" }&.fetch(:url), T.nilable(String))
400
400
  end
401
401
 
402
402
  sig { returns(T.nilable(T::Hash[String, T.untyped])) }
@@ -281,8 +281,8 @@ module Dependabot
281
281
  return nil unless dist_tags
282
282
 
283
283
  dist_tag_req = dependency.requirements
284
- .find { |r| dist_tags.include?(r[:requirement]) }
285
- &.fetch(:requirement)
284
+ .filter_map(&:requirement_string)
285
+ .find { |req| dist_tags.include?(req) }
286
286
 
287
287
  # For cooldown filtering, use filtered releases
288
288
  releases = available_versions
@@ -331,10 +331,11 @@ module Dependabot
331
331
  sig { returns(T::Boolean) }
332
332
  def specified_dist_tag_requirement?
333
333
  dependency.requirements.any? do |req|
334
- next false if req[:requirement].nil?
335
- next false unless req[:requirement].match?(/^[A-Za-z]/)
334
+ requirement = req.requirement_string
335
+ next false if requirement.nil?
336
+ next false unless requirement.match?(/^[A-Za-z]/)
336
337
 
337
- !req[:requirement].match?(/^v\d/i)
338
+ !requirement.match?(/^v\d/i)
338
339
  end
339
340
  end
340
341
 
@@ -355,9 +356,10 @@ module Dependabot
355
356
  sig { params(version: Dependabot::Version).returns(T::Boolean) }
356
357
  def current_requirement_greater_than?(version)
357
358
  dependency.requirements.any? do |req|
358
- next false unless req[:requirement]
359
+ requirement = req.requirement_string
360
+ next false unless requirement
359
361
 
360
- req_version = req[:requirement].sub(/^\^|~|>=?/, "")
362
+ req_version = requirement.sub(/^\^|~|>=?/, "")
361
363
  next false unless version_class.correct?(req_version)
362
364
 
363
365
  version_class.new(req_version) > version
@@ -373,10 +375,11 @@ module Dependabot
373
375
  end
374
376
 
375
377
  dependency.requirements.any? do |req|
376
- next unless req[:requirement]&.match?(/\d-[A-Za-z]/)
378
+ requirement = req.requirement_string
379
+ next unless requirement&.match?(/\d-[A-Za-z]/)
377
380
 
378
381
  Bun::Requirement
379
- .requirements_array(req.fetch(:requirement))
382
+ .requirements_array(requirement)
380
383
  .any? do |r|
381
384
  r.requirements.any? { |a| a.last.release == version.release }
382
385
  end
@@ -403,7 +406,7 @@ module Dependabot
403
406
  end
404
407
  def filter_out_of_range_versions(releases)
405
408
  reqs = dependency.requirements.filter_map do |r|
406
- Bun::Requirement.requirements_array(r.fetch(:requirement))
409
+ Bun::Requirement.requirements_array(r.requirement_string)
407
410
  end
408
411
 
409
412
  releases.select do |release|
@@ -35,7 +35,7 @@ module Dependabot
35
35
  sig do
36
36
  params(
37
37
  requirements: T::Array[Dependabot::DependencyRequirement],
38
- updated_source: T.nilable(T::Hash[Symbol, T.untyped]),
38
+ updated_source: T.nilable(Dependabot::DependencyRequirement::ObjectHash),
39
39
  update_strategy: Dependabot::RequirementsUpdateStrategy,
40
40
  latest_resolvable_version: T.nilable(T.any(String, Gem::Version))
41
41
  )
@@ -71,8 +71,8 @@ module Dependabot
71
71
  requirements.map do |req|
72
72
  req = Dependabot::DependencyRequirement.create(req.merge(source: updated_source))
73
73
  next req unless latest_resolvable_version
74
- next initial_req_after_source_change(req) unless req[:requirement]
75
- next req if req[:requirement].match?(/^([A-Za-uw-z]|v[^\d])/)
74
+ next initial_req_after_source_change(req) unless req.requirement_string
75
+ next req if T.must(req.requirement_string).match?(/^([A-Za-uw-z]|v[^\d])/)
76
76
 
77
77
  case update_strategy
78
78
  when RequirementsUpdateStrategy::WidenRanges then widen_requirement(req)
@@ -89,7 +89,7 @@ module Dependabot
89
89
  sig { returns(T::Array[Dependabot::DependencyRequirement]) }
90
90
  attr_reader :requirements
91
91
 
92
- sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
92
+ sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
93
93
  attr_reader :updated_source
94
94
 
95
95
  sig { returns(Dependabot::RequirementsUpdateStrategy) }
@@ -109,21 +109,21 @@ module Dependabot
109
109
  def updating_from_git_to_npm?
110
110
  return false unless updated_source.nil?
111
111
 
112
- original_source = requirements.filter_map { |r| r[:source] }.first
113
- original_source&.fetch(:type) == "git"
112
+ original_source = requirements.find(&:source)
113
+ original_source&.source_string("type") == "git"
114
114
  end
115
115
 
116
116
  sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
117
117
  def initial_req_after_source_change(req)
118
118
  return req unless updating_from_git_to_npm?
119
- return req unless req[:requirement].nil?
119
+ return req unless req.requirement_string.nil?
120
120
 
121
121
  Dependabot::DependencyRequirement.create(req.merge(requirement: "^#{latest_resolvable_version}"))
122
122
  end
123
123
 
124
124
  sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
125
125
  def update_version_requirement(req)
126
- current_requirement = req[:requirement]
126
+ current_requirement = T.must(req.requirement_string)
127
127
 
128
128
  if current_requirement.match?(/(<|-\s)/i)
129
129
  ruby_req = ruby_requirements(current_requirement).first
@@ -134,12 +134,12 @@ module Dependabot
134
134
  end
135
135
 
136
136
  reqs = current_requirement.strip.split(SEPARATOR).map(&:strip)
137
- Dependabot::DependencyRequirement.create(req.merge(requirement: update_version_string(reqs.first)))
137
+ Dependabot::DependencyRequirement.create(req.merge(requirement: update_version_string(T.must(reqs.first))))
138
138
  end
139
139
 
140
140
  sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
141
141
  def update_version_requirement_if_needed(req)
142
- current_requirement = req[:requirement]
142
+ current_requirement = T.must(req.requirement_string)
143
143
  version = latest_resolvable_version
144
144
  return req if current_requirement.strip == ""
145
145
 
@@ -151,7 +151,7 @@ module Dependabot
151
151
 
152
152
  sig { params(req: Dependabot::DependencyRequirement).returns(Dependabot::DependencyRequirement) }
153
153
  def widen_requirement(req)
154
- current_requirement = req[:requirement]
154
+ current_requirement = T.must(req.requirement_string)
155
155
  version = latest_resolvable_version
156
156
  return req if current_requirement.strip == ""
157
157
 
@@ -228,8 +228,8 @@ module Dependabot
228
228
  relevant_versions = latest_version_finder(dependency)
229
229
  .possible_previous_versions_with_details
230
230
  .map(&:first)
231
- reqs = dep.requirements.filter_map { |r| r[:requirement] }
232
- .map { |r| requirement_class.requirements_array(r) }
231
+ reqs = dep.requirements.filter_map(&:requirement_string)
232
+ .map { |r| requirement_class.requirements_array(r) }
233
233
 
234
234
  # Pick the lowest version from the max possible version from all
235
235
  # requirements. This matches the logic when combining the same
@@ -650,10 +650,10 @@ module Dependabot
650
650
  ).returns(String)
651
651
  end
652
652
  def version_install_arg(version:)
653
- git_source = dependency.requirements.find { |req| req[:source] && req[:source][:type] == "git" }
653
+ git_source = dependency.requirements.find { |req| req.source_string("type") == "git" }
654
654
 
655
655
  if git_source
656
- "#{dependency.name}@#{git_source[:source][:url]}##{version}"
656
+ "#{dependency.name}@#{git_source.source_string('url')}##{version}"
657
657
  else
658
658
  "#{dependency.name}@#{version}"
659
659
  end
@@ -661,17 +661,18 @@ module Dependabot
661
661
 
662
662
  sig do
663
663
  params(
664
- requirements: T::Array[T::Hash[Symbol, T.untyped]],
664
+ requirements: T::Array[Dependabot::DependencyRequirement],
665
665
  path: String
666
- ).returns(T::Array[T::Hash[Symbol, T.untyped]])
666
+ ).returns(T::Array[Dependabot::DependencyRequirement])
667
667
  end
668
668
  def requirements_for_path(requirements, path)
669
669
  return requirements if path.to_s == "."
670
670
 
671
671
  requirements.filter_map do |r|
672
- next unless r[:file].start_with?("#{path}/")
672
+ file = r.file
673
+ next unless file&.start_with?("#{path}/")
673
674
 
674
- r.merge(file: r[:file].gsub(/^#{Regexp.quote("#{path}/")}/, ""))
675
+ Dependabot::DependencyRequirement.create(r.merge(file: file.gsub(/^#{Regexp.quote("#{path}/")}/, "")))
675
676
  end
676
677
  end
677
678
 
@@ -719,13 +720,13 @@ module Dependabot
719
720
  def version_for_dependency(dep)
720
721
  return version_class.new(dep.version) if dep.version && version_class.correct?(dep.version)
721
722
 
722
- dep.requirements.filter_map { |r| r[:requirement] }
723
- .reject { |req_string| req_string.start_with?("<") }
724
- .select { |req_string| req_string.match?(version_regex) }
725
- .map { |req_string| req_string.match(version_regex) }
726
- .select { |version| version_class.correct?(version.to_s) }
727
- .map { |version| version_class.new(version.to_s) }
728
- .max
723
+ dep.requirements.filter_map(&:requirement_string)
724
+ .reject { |req_string| req_string.start_with?("<") }
725
+ .select { |req_string| req_string.match?(version_regex) }
726
+ .map { |req_string| req_string.match(version_regex) }
727
+ .select { |version| version_class.correct?(version.to_s) }
728
+ .map { |version| version_class.new(version.to_s) }
729
+ .max
729
730
  end
730
731
 
731
732
  sig { returns(T.class_of(Dependabot::Version)) }
@@ -368,9 +368,10 @@ module Dependabot
368
368
  sig { returns(T.nilable(T.any(String, Dependabot::Version))) }
369
369
  def latest_resolvable_version_with_no_unlock_for_git_dependency
370
370
  reqs = dependency.requirements.filter_map do |r|
371
- next if r.fetch(:requirement).nil?
371
+ requirement = r.requirement_string
372
+ next if requirement.nil?
372
373
 
373
- requirement_class.requirements_array(r.fetch(:requirement))
374
+ requirement_class.requirements_array(requirement)
374
375
  end
375
376
 
376
377
  current_version =
@@ -469,8 +470,8 @@ module Dependabot
469
470
  def latest_git_version_details
470
471
  semver_req =
471
472
  dependency.requirements
472
- .find { |req| req.dig(:source, :type) == "git" }
473
- &.fetch(:requirement)
473
+ .find { |req| req.source_string("type") == "git" }
474
+ &.requirement_string
474
475
 
475
476
  # If there was a semver requirement provided or the dependency was
476
477
  # pinned to a version, look for the latest tag
@@ -491,7 +492,7 @@ module Dependabot
491
492
  { sha: dependency.version }
492
493
  end
493
494
 
494
- sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
495
+ sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
495
496
  def updated_source
496
497
  # Never need to update source, unless a git_dependency
497
498
  return dependency_source_details unless git_dependency?
@@ -525,22 +526,22 @@ module Dependabot
525
526
  security_advisories.any?
526
527
  end
527
528
 
528
- sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
529
+ sig { returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash)) }
529
530
  def dependency_source_details
530
531
  original_source(dependency)
531
532
  end
532
533
 
533
534
  sig do
534
535
  params(updated_dependency: Dependabot::Dependency)
535
- .returns(T.nilable(T::Hash[Symbol, T.untyped]))
536
+ .returns(T.nilable(Dependabot::DependencyRequirement::ObjectHash))
536
537
  end
537
538
  def original_source(updated_dependency)
538
539
  sources =
539
540
  updated_dependency
540
- .requirements.map { |r| r.fetch(:source) }
541
- .uniq.compact
541
+ .requirements.map(&:source_hash)
542
+ .uniq.compact
542
543
  .sort_by do |source|
543
- Package::RegistryFinder.central_registry?(source[:url]) ? 1 : 0
544
+ Package::RegistryFinder.central_registry?(T.cast(source[:url], String)) ? 1 : 0
544
545
  end
545
546
 
546
547
  sources.first
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-bun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.389.0
4
+ version: 0.390.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.389.0
18
+ version: 0.390.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.389.0
25
+ version: 0.390.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -354,7 +354,7 @@ licenses:
354
354
  - MIT
355
355
  metadata:
356
356
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
357
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.389.0
357
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.390.0
358
358
  rdoc_options: []
359
359
  require_paths:
360
360
  - lib