dependabot-npm_and_yarn 0.184.0 → 0.186.1

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: 305a9775334f1ab0a6972545568cad95388b24839eed46bb6d88447dd4239696
4
- data.tar.gz: d7c1b6d58eb6eba221c1dad4bb26865da6eb884ae61079fe372de645a869ba91
3
+ metadata.gz: 6ba76f738d1063edb7f67ffd5e91446dc499e4ce3c5669f30cd24549a81de2c7
4
+ data.tar.gz: 66a0dcbf534d029bf52515a562586adf5787a164456c2ebb4569ebf4997fbb1a
5
5
  SHA512:
6
- metadata.gz: d44327179a23bc2d5f6bb9d62680ac3c8ee84d9a6e8017da68d500bbe38e0e01be732e274122c62137d720c45e42eb973af55592e8cefb020a2ee686627b4f6b
7
- data.tar.gz: 615fbb3b0c4c6f1813037a8c520cfaee738c5cdfddd6647ff2ab4f5dae36ac9e45ee8a3040420b45dac034695fecd84b48c13a0b3865a6e81a57e8edfe4dced6
6
+ metadata.gz: dd992188087707f9dbb6a40410e4e73831e8517c51735a627284dce456a50c5bab2624a0b7af29b86526ae6e2d61f03e5a210a383826df25f66f22c4a5e13843
7
+ data.tar.gz: a175aa22539ef2f3ec0e0c0adf6f70e2e883aa4fdcea6ed46a881241268b1c1245478835aaa7142dedef8b9639861500474a8dc767cd71cc622cdbeb65fb0c50
@@ -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
@@ -3,17 +3,17 @@
3
3
  module Dependabot
4
4
  module NpmAndYarn
5
5
  class PackageName
6
- DEFINITELY_TYPED_SCOPE = /types/i.freeze
7
- PACKAGE_NAME_REGEX = %r{
6
+ PACKAGE_NAME_REGEX = %r{
8
7
  \A # beginning of string
9
8
  (?=.{1,214}\z) # enforce length (1 - 214)
10
9
  (@(?<scope>[a-z0-9\-~][a-z0-9\-\._~]*)\/)? # capture 'scope' if present
11
10
  (?<name>[a-z0-9\-~][a-z0-9\-._~]*) # capture package name
12
11
  \z # end of string
13
12
  }xi.freeze # multi-line/case-insensitive
13
+
14
14
  TYPES_PACKAGE_NAME_REGEX = %r{
15
15
  \A # beginning of string
16
- @#{DEFINITELY_TYPED_SCOPE}\/ # starts with @types/
16
+ @types\/ # starts with @types/
17
17
  ((?<scope>.+)__)? # capture scope
18
18
  (?<name>.+) # capture name
19
19
  \z # end of string
@@ -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?
@@ -77,7 +81,7 @@ module Dependabot
77
81
  end
78
82
 
79
83
  def types_package?
80
- DEFINITELY_TYPED_SCOPE.match?(@scope)
84
+ "types".casecmp?(@scope)
81
85
  end
82
86
  end
83
87
  end
@@ -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,60 @@ 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
+ return false unless version_class.correct?(types_package.version)
256
+
257
+ current_types_package_version = version_class.new(types_package.version)
258
+
259
+ return false unless current_types_package_version < latest_types_package_version
260
+
261
+ true
262
+ end
263
+
264
+ def original_package_update_available?
265
+ return false if original_package.nil?
266
+
267
+ return false unless version_class.correct?(original_package.version)
268
+
269
+ original_package_version = version_class.new(original_package.version)
270
+
271
+ latest_version = latest_version_finder(original_package).latest_version_from_registry
272
+
273
+ original_package_version < latest_version
274
+ end
275
+
276
+ def updated_types_dependencies
277
+ [{
278
+ dependency: types_package,
279
+ version: latest_types_package_version,
280
+ previous_version: resolve_latest_previous_version(
281
+ types_package, latest_types_package_version
282
+ )
283
+ }]
284
+ end
285
+
225
286
  def peer_dependency_errors
226
287
  return @peer_dependency_errors if @peer_dependency_errors_checked
227
288
 
@@ -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.184.0
4
+ version: 0.186.1
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-04 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,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.184.0
19
+ version: 0.186.1
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.184.0
26
+ version: 0.186.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: debase
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.3
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.2.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: debase-ruby_core_source
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.10.14
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.10.14
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: debug
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,20 @@ dependencies:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
138
  version: 1.28.2
139
+ - !ruby/object:Gem::Dependency
140
+ name: ruby-debug-ide
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.7.3
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.7.3
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: simplecov
113
155
  requirement: !ruby/object:Gem::Requirement