dependabot-common 0.399.0 → 0.401.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: 25a94c1e5dc3f55727a0f4ccadd5b4ee8d420f280adb0035bc273d31370843fe
4
- data.tar.gz: 5f54adb05f2d66b098cb2ab8443b30dba9bfeb684c3fad1b01fa4e10a895e97d
3
+ metadata.gz: e7c9b0f34b253c6689d4cdd2d2bb85af222a8d65e336201471f374d51cca42c3
4
+ data.tar.gz: 65ec188d41768539a3bc7b17480dcc2babfaeb0189318aea7ae5a7a3fee6bae3
5
5
  SHA512:
6
- metadata.gz: 6be302598830a25eb71907c3d080aa0d603c054b70dc95a12d17ffe233725e761c5c0ee4304b1086d2ba50099bfa0d7c4fb9c8d68fe8f6e4009eb2c2a5dfa0e1
7
- data.tar.gz: 3a2df82a0f866e8a2ae116d767f43c916d820ebda987f348b5a65964742403dba8882a2761e4e7ebcfe4e5ffb0db08f644f0131c27f602d206dc1b20f2c9fdc2
6
+ metadata.gz: 35db428ec5f1c2f7f4f45c6b8d4c28a6b8a8e44cc08aa1330c283df92837ee08b62bacbb69027ff3ca4a57be1d00eadc5762e0b640849f66f9a5b788a90ae256
7
+ data.tar.gz: 82b376c4f531f0b4a8e03128a6d942ba80b236b58d21d568c8604561281abaca6448e75ac1f4fee8ef55fce77f5f6c26db10138c5fa6c5cdc43395d3ba13ba92
@@ -60,6 +60,7 @@ module Dependabot
60
60
 
61
61
  PACKAGE_MANAGER_LOOKUP = T.let(
62
62
  {
63
+ "apm" => "apm",
63
64
  "bazel" => "bazel",
64
65
  "bun" => "bun",
65
66
  "bundler" => "bundler",
@@ -315,7 +315,7 @@ module Dependabot
315
315
  local_tags_matching_sha(commit_sha).map(&:name)
316
316
  end
317
317
 
318
- sig { params(tags: T::Array[Dependabot::GitRef]).returns(T.nilable(Dependabot::GitTagDetails)) }
318
+ sig { overridable.params(tags: T::Array[Dependabot::GitRef]).returns(T.nilable(Dependabot::GitTagDetails)) }
319
319
  def max_local_tag(tags)
320
320
  max_version_tag = tags.max_by { |t| version_from_tag(t) }
321
321
 
@@ -589,7 +589,7 @@ module Dependabot
589
589
  dependency_source_details&.ref
590
590
  end
591
591
 
592
- sig { params(tag: String).returns(T::Boolean) }
592
+ sig { overridable.params(tag: String).returns(T::Boolean) }
593
593
  def version_tag?(tag)
594
594
  tag.match?(VERSION_REGEX)
595
595
  end
@@ -605,7 +605,7 @@ module Dependabot
605
605
  end
606
606
  end
607
607
 
608
- sig { params(tag: String, other_tag: String).returns(T::Boolean) }
608
+ sig { overridable.params(tag: String, other_tag: String).returns(T::Boolean) }
609
609
  def same_prefix?(tag, other_tag)
610
610
  tag_prefix = tag.gsub(VERSION_REGEX, "")
611
611
  other_tag_prefix = other_tag.gsub(VERSION_REGEX, "")
@@ -796,7 +796,7 @@ module Dependabot
796
796
  version_class.new(scan_version(name))
797
797
  end
798
798
 
799
- sig { params(name: String).returns(String) }
799
+ sig { overridable.params(name: String).returns(String) }
800
800
  def scan_version(name)
801
801
  T.must(T.must(name.match(VERSION_REGEX)).named_captures.fetch("version"))
802
802
  end
@@ -158,15 +158,16 @@ module Dependabot
158
158
 
159
159
  sig { params(mode: String).returns(String) }
160
160
  def self.markdown_mode(mode)
161
+ # GitHub has no INFO alert; it renders NOTE, TIP, IMPORTANT, WARNING and CAUTION
161
162
  case mode
162
163
  when NoticeMode::INFO
163
- "INFO"
164
+ "NOTE"
164
165
  when NoticeMode::WARN
165
166
  "WARNING"
166
167
  when NoticeMode::ERROR
167
168
  "IMPORTANT"
168
169
  else
169
- "INFO"
170
+ "NOTE"
170
171
  end
171
172
  end
172
173
  end
@@ -13,7 +13,9 @@ module Dependabot
13
13
  extend T::Sig
14
14
 
15
15
  ObjectHash = T.type_alias { T::Hash[String, Object] }
16
+ CatalogEntries = T.type_alias { T::Hash[String, String] }
16
17
  DEPENDENCY_TYPES = %w(dependencies devDependencies optionalDependencies).freeze
18
+ CATALOG_FIELDS = %w(catalog catalogs).freeze
17
19
 
18
20
  sig { params(file: DependencyFile).returns(NpmPackageJson) }
19
21
  def self.from_file(file)
@@ -63,8 +65,62 @@ module Dependabot
63
65
  NpmPackageManagerConfig.from_package_json(@data)
64
66
  end
65
67
 
68
+ # The default catalog that `catalog:` requirements resolve against.
69
+ sig { returns(CatalogEntries) }
70
+ def catalog
71
+ prefix, fields = catalog_fields
72
+ value = fields["catalog"]
73
+ return {} unless value
74
+
75
+ catalog_entries(value, "#{prefix}catalog")
76
+ end
77
+
78
+ # Named catalogs that `catalog:<name>` requirements resolve against,
79
+ # keyed by catalog name. `default` extends the default catalog.
80
+ sig { returns(T::Hash[String, CatalogEntries]) }
81
+ def catalogs
82
+ prefix, fields = catalog_fields
83
+ value = fields["catalogs"]
84
+ return {} unless value
85
+
86
+ field = "#{prefix}catalogs"
87
+ result = T.let({}, T::Hash[String, CatalogEntries])
88
+ object_hash(value, field).each do |name, entries|
89
+ result[name] = catalog_entries(entries, "#{field}.#{name}")
90
+ end
91
+ result
92
+ end
93
+
94
+ # The key of the object Bun reads both catalog fields from, or nil for
95
+ # the root. Bun reads them from `workspaces` when it declares either of
96
+ # them, and ignores the root fields in that case.
97
+ sig { returns(T.nilable(String)) }
98
+ def catalog_container
99
+ workspaces = @data["workspaces"]
100
+ return unless workspaces.is_a?(Hash)
101
+
102
+ "workspaces" if CATALOG_FIELDS.any? { |field| object_hash(workspaces, "workspaces").key?(field) }
103
+ end
104
+
66
105
  private
67
106
 
107
+ sig { returns([String, ObjectHash]) }
108
+ def catalog_fields
109
+ container = catalog_container
110
+ return ["", @data] unless container
111
+
112
+ ["#{container}.", object_hash(@data[container], container)]
113
+ end
114
+
115
+ sig { params(value: Object, field: String).returns(CatalogEntries) }
116
+ def catalog_entries(value, field)
117
+ entries = T.let({}, CatalogEntries)
118
+ object_hash(value, field).each do |name, requirement|
119
+ entries[name] = requirement if requirement.is_a?(String)
120
+ end
121
+ entries
122
+ end
123
+
68
124
  sig { params(value: Object, field: String).returns(ObjectHash) }
69
125
  def object_hash(value, field)
70
126
  raise TypeError, "#{@path}: #{field} must be an object" unless value.is_a?(Hash)
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.399.0"
5
+ VERSION = "0.401.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.399.0
4
+ version: 0.401.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -635,7 +635,7 @@ licenses:
635
635
  - MIT
636
636
  metadata:
637
637
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
638
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.399.0
638
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.401.0
639
639
  rdoc_options: []
640
640
  require_paths:
641
641
  - lib