dependabot-npm_and_yarn 0.185.0 → 0.186.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d42472b33cbd3bc18ffc46a89ec1258b99ee91c06f37df754c34d918c984054
4
- data.tar.gz: 2f7ad25e3389283e30decb7d515d793d6e1ecdef2f5de75ac81b2dce53bcf15a
3
+ metadata.gz: aeff725531d7c22b4ef708a9bc7fa65726f8dd59bd4add961f917adb05d215e6
4
+ data.tar.gz: 18e5d38da3681f275f65dbac387cfa3621b225e1bf411db092367d4513a900b3
5
5
  SHA512:
6
- metadata.gz: 9608c5d0237700098c9488abf00b3d58d8a6c5cd9487fcd38a2a46fed9e737bef85bd3bbb7c11d8db5571701d960b96164507b709319f1ea3f7d9d89ec62227a
7
- data.tar.gz: 4124eadef4cca03dbad1a826e1cc225a213920971aff8c451af0357fa6be94b7af50defb856509c20938dcb7e71c22574e32dc90971fac130cad56d7547ae04c
6
+ metadata.gz: a36832bb9014119197be3a4656719fc1f621f6f375148235127f640b71f75ce92f47edd122e74bd9795a8952508f68eddbf7b897b368c03a74bbfdb27fda82e2
7
+ data.tar.gz: b9e2aab53895c9892a584e425fe9a1f8dd801610f3b8e0b5b65ae011ab0262f565dd01fe8116e92ac410dad446c07c47aaf77f803a44bab581459efa31f6ea59
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "uri"
4
+
3
5
  require "dependabot/npm_and_yarn/file_updater"
4
6
  require "dependabot/npm_and_yarn/file_parser"
5
7
  require "dependabot/npm_and_yarn/update_checker/registry_finder"
@@ -436,7 +438,7 @@ module Dependabot
436
438
  def handle_timeout(error_message, yarn_lock)
437
439
  url = error_message.match(TIMEOUT_FETCHING_PACKAGE).
438
440
  named_captures["url"]
439
- return if url.start_with?("https://registry.npmjs.org")
441
+ raise if URI(url).host == "registry.npmjs.org"
440
442
 
441
443
  package_name = error_message.match(TIMEOUT_FETCHING_PACKAGE).
442
444
  named_captures["package"]
@@ -482,7 +484,7 @@ module Dependabot
482
484
 
483
485
  return false unless yarnrc_global_registry
484
486
 
485
- yarnrc_global_registry.include?("registry.npmjs.org")
487
+ URI(yarnrc_global_registry).host == "registry.npmjs.org"
486
488
  end
487
489
 
488
490
  def yarnrc_content
@@ -37,16 +37,20 @@ module Dependabot
37
37
  end
38
38
  end
39
39
 
40
- def <=>(other)
41
- to_s.casecmp(other.to_s)
40
+ def eql?(other)
41
+ self.class == other.class && to_s == other.to_s
42
42
  end
43
43
 
44
- def eql?(other)
45
- to_s.eql?(other.to_s)
44
+ def hash
45
+ to_s.downcase.hash
46
+ end
47
+
48
+ def <=>(other)
49
+ to_s.casecmp(other.to_s)
46
50
  end
47
51
 
48
52
  def library_name
49
- return self unless types_package?
53
+ return unless types_package?
50
54
 
51
55
  @library_name ||=
52
56
  begin
@@ -60,7 +64,7 @@ module Dependabot
60
64
  end
61
65
 
62
66
  def types_package_name
63
- return self if types_package?
67
+ return if types_package?
64
68
 
65
69
  @types_package_name ||=
66
70
  if scoped?
@@ -9,6 +9,7 @@ require "dependabot/npm_and_yarn/file_updater/npmrc_builder"
9
9
  require "dependabot/npm_and_yarn/file_updater/package_json_preparer"
10
10
  require "dependabot/npm_and_yarn/helpers"
11
11
  require "dependabot/npm_and_yarn/native_helpers"
12
+ require "dependabot/npm_and_yarn/package_name"
12
13
  require "dependabot/npm_and_yarn/requirement"
13
14
  require "dependabot/npm_and_yarn/update_checker"
14
15
  require "dependabot/npm_and_yarn/version"
@@ -74,6 +75,8 @@ module Dependabot
74
75
  def latest_resolvable_version
75
76
  return latest_allowable_version if git_dependency?(dependency)
76
77
  return if part_of_tightly_locked_monorepo?
78
+ return if types_update_available?
79
+ return if original_package_update_available?
77
80
 
78
81
  return latest_allowable_version unless relevant_unmet_peer_dependencies.any?
79
82
 
@@ -90,10 +93,12 @@ module Dependabot
90
93
  resolve_latest_previous_version(dependency, updated_version)
91
94
  end
92
95
 
96
+ # rubocop:disable Metrics/PerceivedComplexity
93
97
  def dependency_updates_from_full_unlock
94
98
  return if git_dependency?(dependency)
95
99
  return updated_monorepo_dependencies if part_of_tightly_locked_monorepo?
96
100
  return if newly_broken_peer_reqs_from_dep.any?
101
+ return if original_package_update_available?
97
102
 
98
103
  updates = [{
99
104
  dependency: dependency,
@@ -122,8 +127,10 @@ module Dependabot
122
127
  )
123
128
  }
124
129
  end
130
+ updates += updated_types_dependencies if types_update_available?
125
131
  updates.uniq
126
132
  end
133
+ # rubocop:enable Metrics/PerceivedComplexity
127
134
 
128
135
  private
129
136
 
@@ -222,6 +229,54 @@ module Dependabot
222
229
  updates
223
230
  end
224
231
 
232
+ def types_package
233
+ @types_package ||= begin
234
+ types_package_name = PackageName.new(dependency.name).types_package_name
235
+ top_level_dependencies.find { |d| types_package_name.to_s == d.name } if types_package_name
236
+ end
237
+ end
238
+
239
+ def original_package
240
+ @original_package ||= begin
241
+ original_package_name = PackageName.new(dependency.name).library_name
242
+ top_level_dependencies.find { |d| original_package_name.to_s == d.name } if original_package_name
243
+ end
244
+ end
245
+
246
+ def latest_types_package_version
247
+ @latest_types_package_version ||= latest_version_finder(types_package).latest_version_from_registry
248
+ end
249
+
250
+ def types_update_available?
251
+ return false if types_package.nil?
252
+
253
+ return false unless latest_allowable_version.backwards_compatible_with?(latest_types_package_version)
254
+
255
+ current_types_package_version = version_class.new(types_package.version)
256
+ return false unless current_types_package_version < latest_types_package_version
257
+
258
+ true
259
+ end
260
+
261
+ def original_package_update_available?
262
+ return false if original_package.nil?
263
+
264
+ latest_version = latest_version_finder(original_package).latest_version_from_registry
265
+ original_package_version = version_class.new(original_package.version)
266
+
267
+ original_package_version < latest_version
268
+ end
269
+
270
+ def updated_types_dependencies
271
+ [{
272
+ dependency: types_package,
273
+ version: latest_types_package_version,
274
+ previous_version: resolve_latest_previous_version(
275
+ types_package, latest_types_package_version
276
+ )
277
+ }]
278
+ end
279
+
225
280
  def peer_dependency_errors
226
281
  return @peer_dependency_errors if @peer_dependency_errors_checked
227
282
 
@@ -34,6 +34,27 @@ module Dependabot
34
34
  super
35
35
  end
36
36
 
37
+ def major
38
+ @major ||= segments[0] || 0
39
+ end
40
+
41
+ def minor
42
+ @minor ||= segments[1] || 0
43
+ end
44
+
45
+ def patch
46
+ @patch ||= segments[2] || 0
47
+ end
48
+
49
+ def backwards_compatible_with?(other)
50
+ case major
51
+ when 0
52
+ self == other
53
+ else
54
+ major == other.major && minor >= other.minor
55
+ end
56
+ end
57
+
37
58
  def to_s
38
59
  @version_string
39
60
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-npm_and_yarn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.185.0
4
+ version: 0.186.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-09 00:00:00.000000000 Z
11
+ date: 2022-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dependabot-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.185.0
19
+ version: 0.186.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.185.0
26
+ version: 0.186.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: debase
29
29
  requirement: !ruby/object:Gem::Requirement