dependabot-bun 0.334.0 → 0.336.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 +4 -4
- data/helpers/package-lock.json +6 -7
- data/lib/dependabot/bun/constraint_helper.rb +30 -21
- data/lib/dependabot/bun/dependency_files_filterer.rb +12 -6
- data/lib/dependabot/bun/file_fetcher/path_dependency_builder.rb +21 -13
- data/lib/dependabot/bun/file_fetcher.rb +10 -5
- data/lib/dependabot/bun/file_parser.rb +38 -21
- data/lib/dependabot/bun/file_updater/package_json_updater.rb +16 -8
- data/lib/dependabot/bun/file_updater.rb +4 -2
- data/lib/dependabot/bun/metadata_finder.rb +4 -2
- data/lib/dependabot/bun/package/registry_finder.rb +10 -2
- data/lib/dependabot/bun/package_name.rb +2 -1
- data/lib/dependabot/bun/pnpm_package_manager.rb +8 -5
- data/lib/dependabot/bun/update_checker/requirements_updater.rb +6 -2
- data/lib/dependabot/bun/update_checker/subdependency_version_resolver.rb +8 -2
- data/lib/dependabot/bun/update_checker/version_resolver.rb +23 -8
- data/lib/dependabot/bun/update_checker/vulnerability_auditor.rb +4 -2
- data/lib/dependabot/bun/update_checker.rb +17 -7
- data/lib/dependabot/bun/version.rb +17 -14
- data/lib/dependabot/bun.rb +166 -163
- metadata +12 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3953e6714135ca7e3d22256533cae81ecc1d98906df0da2c1d56b21c072ccda6
|
|
4
|
+
data.tar.gz: 2c17ff1677bc68e0278cb647cdd33bd0d6b51aad9682154c9e340df4b735d41e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6cf54c28a53c407ddc12ebb2fcfaffc65a8d486956cc0835e85144da5907bc01cdae4a36e4d39d0bbec535af49c0226f466dee41102b5865f47b000e315ccfbb
|
|
7
|
+
data.tar.gz: 3ff413c98a5181fdf82c2c85e1ada5d2ce1db8c879dfe3cd4fd175e39f46e34bfdd1ed4e1aa70d7928b31ed8c93d6232e24ea4481e450b3a98c898ea6dd2f5c9
|
data/helpers/package-lock.json
CHANGED
|
@@ -15636,10 +15636,9 @@
|
|
|
15636
15636
|
}
|
|
15637
15637
|
},
|
|
15638
15638
|
"node_modules/tar-fs": {
|
|
15639
|
-
"version": "1.16.
|
|
15640
|
-
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.
|
|
15641
|
-
"integrity": "sha512-
|
|
15642
|
-
"license": "MIT",
|
|
15639
|
+
"version": "1.16.6",
|
|
15640
|
+
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.6.tgz",
|
|
15641
|
+
"integrity": "sha512-JkOgFt3FxM/2v2CNpAVHqMW2QASjc/Hxo7IGfNd3MHaDYSW/sBFiS7YVmmhmr8x6vwN1VFQDQGdT2MWpmIuVKA==",
|
|
15643
15642
|
"dependencies": {
|
|
15644
15643
|
"chownr": "^1.0.1",
|
|
15645
15644
|
"mkdirp": "^0.5.1",
|
|
@@ -28005,9 +28004,9 @@
|
|
|
28005
28004
|
}
|
|
28006
28005
|
},
|
|
28007
28006
|
"tar-fs": {
|
|
28008
|
-
"version": "1.16.
|
|
28009
|
-
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.
|
|
28010
|
-
"integrity": "sha512-
|
|
28007
|
+
"version": "1.16.6",
|
|
28008
|
+
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.6.tgz",
|
|
28009
|
+
"integrity": "sha512-JkOgFt3FxM/2v2CNpAVHqMW2QASjc/Hxo7IGfNd3MHaDYSW/sBFiS7YVmmhmr8x6vwN1VFQDQGdT2MWpmIuVKA==",
|
|
28011
28010
|
"requires": {
|
|
28012
28011
|
"chownr": "^1.0.1",
|
|
28013
28012
|
"mkdirp": "^0.5.1",
|
|
@@ -20,11 +20,14 @@ module Dependabot
|
|
|
20
20
|
|
|
21
21
|
# Base regex for SemVer (major.minor.patch[-prerelease][+build])
|
|
22
22
|
# This pattern extracts valid semantic versioning strings based on the SemVer 2.0 specification.
|
|
23
|
-
SEMVER_REGEX = T.let(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
SEMVER_REGEX = T.let(
|
|
24
|
+
/
|
|
25
|
+
(?<version>\d+\.\d+\.\d+) # Match major.minor.patch (e.g., 1.2.3)
|
|
26
|
+
(?:-(?<prerelease>[a-zA-Z0-9.-]+))? # Optional prerelease (e.g., -alpha.1, -rc.1, -beta.5)
|
|
27
|
+
(?:\+(?<build>[a-zA-Z0-9.-]+))? # Optional build metadata (e.g., +build.20231101, +exp.sha.5114f85)
|
|
28
|
+
/x,
|
|
29
|
+
Regexp
|
|
30
|
+
)
|
|
28
31
|
|
|
29
32
|
# Full SemVer validation regex (ensures the entire string is a valid SemVer)
|
|
30
33
|
# This ensures the entire input strictly follows SemVer, without extra characters before/after.
|
|
@@ -32,11 +35,14 @@ module Dependabot
|
|
|
32
35
|
|
|
33
36
|
# SemVer constraint regex (supports package.json version constraints)
|
|
34
37
|
# This pattern ensures proper parsing of SemVer versions with optional operators.
|
|
35
|
-
SEMVER_CONSTRAINT_REGEX = T.let(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
SEMVER_CONSTRAINT_REGEX = T.let(
|
|
39
|
+
/
|
|
40
|
+
(?: (>=|<=|>|<|=|~|\^)\s*)? # Make operators optional (e.g., >=, ^, ~)
|
|
41
|
+
(\d+\.\d+\.\d+(?:-[a-zA-Z0-9.-]+)?(?:\+[a-zA-Z0-9.-]+)?) # Match full SemVer versions
|
|
42
|
+
| (\*|latest) # Match wildcard (*) or 'latest'
|
|
43
|
+
/x,
|
|
44
|
+
Regexp
|
|
45
|
+
)
|
|
40
46
|
|
|
41
47
|
# /(>=|<=|>|<|=|~|\^)\s*(\d+\.\d+\.\d+(?:-[a-zA-Z0-9.-]+)?(?:\+[a-zA-Z0-9.-]+)?)|(\*|latest)/
|
|
42
48
|
|
|
@@ -55,17 +61,20 @@ module Dependabot
|
|
|
55
61
|
SEMVER_CONSTANTS = ["*", "latest"].freeze
|
|
56
62
|
|
|
57
63
|
# Unified Regex for Valid Constraints
|
|
58
|
-
VALID_CONSTRAINT_REGEX = T.let(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
VALID_CONSTRAINT_REGEX = T.let(
|
|
65
|
+
Regexp.union(
|
|
66
|
+
CARET_CONSTRAINT_REGEX,
|
|
67
|
+
TILDE_CONSTRAINT_REGEX,
|
|
68
|
+
EXACT_CONSTRAINT_REGEX,
|
|
69
|
+
GREATER_THAN_EQUAL_REGEX,
|
|
70
|
+
LESS_THAN_EQUAL_REGEX,
|
|
71
|
+
GREATER_THAN_REGEX,
|
|
72
|
+
LESS_THAN_REGEX,
|
|
73
|
+
WILDCARD_REGEX,
|
|
74
|
+
LATEST_REGEX
|
|
75
|
+
).freeze,
|
|
76
|
+
Regexp
|
|
77
|
+
)
|
|
69
78
|
|
|
70
79
|
# Extract unique constraints from the given constraint expression.
|
|
71
80
|
# @param constraint_expression [T.nilable(String)] The semver constraint expression.
|
|
@@ -31,7 +31,8 @@ module Dependabot
|
|
|
31
31
|
package_files_requiring_update.include?(file) ||
|
|
32
32
|
package_required_lockfile?(file) ||
|
|
33
33
|
workspaces_lockfile?(file)
|
|
34
|
-
end,
|
|
34
|
+
end,
|
|
35
|
+
T.nilable(T::Array[DependencyFile])
|
|
35
36
|
)
|
|
36
37
|
end
|
|
37
38
|
|
|
@@ -40,7 +41,8 @@ module Dependabot
|
|
|
40
41
|
@package_files_requiring_update ||= T.let(
|
|
41
42
|
dependency_files.select do |file|
|
|
42
43
|
dependency_manifest_requirements.include?(file.name)
|
|
43
|
-
end,
|
|
44
|
+
end,
|
|
45
|
+
T.nilable(T::Array[DependencyFile])
|
|
44
46
|
)
|
|
45
47
|
end
|
|
46
48
|
|
|
@@ -67,7 +69,8 @@ module Dependabot
|
|
|
67
69
|
@dependency_manifest_requirements ||= T.let(
|
|
68
70
|
updated_dependencies.flat_map do |dep|
|
|
69
71
|
dep.requirements.map { |requirement| requirement[:file] }
|
|
70
|
-
end,
|
|
72
|
+
end,
|
|
73
|
+
T.nilable(T::Array[String])
|
|
71
74
|
)
|
|
72
75
|
end
|
|
73
76
|
|
|
@@ -96,7 +99,8 @@ module Dependabot
|
|
|
96
99
|
@root_lockfile ||= T.let(
|
|
97
100
|
lockfiles.find do |file|
|
|
98
101
|
File.dirname(file.name) == "."
|
|
99
|
-
end,
|
|
102
|
+
end,
|
|
103
|
+
T.nilable(DependencyFile)
|
|
100
104
|
)
|
|
101
105
|
end
|
|
102
106
|
|
|
@@ -105,7 +109,8 @@ module Dependabot
|
|
|
105
109
|
@lockfiles ||= T.let(
|
|
106
110
|
dependency_files.select do |file|
|
|
107
111
|
lockfile?(file)
|
|
108
|
-
end,
|
|
112
|
+
end,
|
|
113
|
+
T.nilable(T::Array[DependencyFile])
|
|
109
114
|
)
|
|
110
115
|
end
|
|
111
116
|
|
|
@@ -115,7 +120,8 @@ module Dependabot
|
|
|
115
120
|
begin
|
|
116
121
|
package = T.must(dependency_files.find { |f| f.name == "package.json" })
|
|
117
122
|
JSON.parse(T.must(package.content))
|
|
118
|
-
end,
|
|
123
|
+
end,
|
|
124
|
+
T.nilable(T::Hash[String, T.untyped])
|
|
119
125
|
)
|
|
120
126
|
end
|
|
121
127
|
|
|
@@ -23,8 +23,13 @@ module Dependabot
|
|
|
23
23
|
)
|
|
24
24
|
.void
|
|
25
25
|
end
|
|
26
|
-
def initialize(
|
|
27
|
-
|
|
26
|
+
def initialize(
|
|
27
|
+
dependency_name:,
|
|
28
|
+
path:,
|
|
29
|
+
directory:,
|
|
30
|
+
package_lock:,
|
|
31
|
+
yarn_lock:
|
|
32
|
+
)
|
|
28
33
|
@dependency_name = dependency_name
|
|
29
34
|
@path = path
|
|
30
35
|
@directory = directory
|
|
@@ -154,17 +159,20 @@ module Dependabot
|
|
|
154
159
|
return unless yarn_lock
|
|
155
160
|
return @parsed_yarn_lock if defined?(@parsed_yarn_lock)
|
|
156
161
|
|
|
157
|
-
parsed = T.cast(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
162
|
+
parsed = T.cast(
|
|
163
|
+
SharedHelpers.in_a_temporary_directory do
|
|
164
|
+
File.write("yarn.lock", T.must(yarn_lock).content)
|
|
165
|
+
|
|
166
|
+
SharedHelpers.run_helper_subprocess(
|
|
167
|
+
command: NativeHelpers.helper_path,
|
|
168
|
+
function: "yarn:parseLockfile",
|
|
169
|
+
args: [Dir.pwd]
|
|
170
|
+
)
|
|
171
|
+
rescue SharedHelpers::HelperSubprocessFailed
|
|
172
|
+
raise Dependabot::DependencyFileNotParseable, T.must(yarn_lock).path
|
|
173
|
+
end,
|
|
174
|
+
T::Hash[String, T.untyped]
|
|
175
|
+
)
|
|
168
176
|
@parsed_yarn_lock = T.let(parsed, T.nilable(T::Hash[String, T.untyped]))
|
|
169
177
|
end
|
|
170
178
|
|
|
@@ -28,8 +28,10 @@ module Dependabot
|
|
|
28
28
|
# when it specifies a path. Only include Yarn "link:"'s that start with a
|
|
29
29
|
# path and ignore symlinked package names that have been registered with
|
|
30
30
|
# "yarn link", e.g. "link:react"
|
|
31
|
-
PATH_DEPENDENCY_STARTS = T.let(
|
|
32
|
-
|
|
31
|
+
PATH_DEPENDENCY_STARTS = T.let(
|
|
32
|
+
%w(file: link:. link:/ link:~/ / ./ ../ ~/).freeze,
|
|
33
|
+
[String, String, String, String, String, String, String, String]
|
|
34
|
+
)
|
|
33
35
|
PATH_DEPENDENCY_CLEAN_REGEX = /^file:|^link:/
|
|
34
36
|
DEFAULT_NPM_REGISTRY = "https://registry.npmjs.org"
|
|
35
37
|
|
|
@@ -118,7 +120,8 @@ module Dependabot
|
|
|
118
120
|
lockfiles,
|
|
119
121
|
registry_config_files,
|
|
120
122
|
credentials
|
|
121
|
-
),
|
|
123
|
+
),
|
|
124
|
+
T.nilable(PackageManagerHelper)
|
|
122
125
|
)
|
|
123
126
|
end
|
|
124
127
|
|
|
@@ -250,8 +253,10 @@ module Dependabot
|
|
|
250
253
|
# skip dependencies that contain invalid values such as inline comments, null, etc.
|
|
251
254
|
|
|
252
255
|
unless value.is_a?(String)
|
|
253
|
-
Dependabot.logger.warn(
|
|
254
|
-
|
|
256
|
+
Dependabot.logger.warn(
|
|
257
|
+
"File fetcher: Skipping dependency \"#{path}\" " \
|
|
258
|
+
"with value: \"#{value}\""
|
|
259
|
+
)
|
|
255
260
|
|
|
256
261
|
next
|
|
257
262
|
end
|
|
@@ -101,7 +101,8 @@ module Dependabot
|
|
|
101
101
|
lockfiles,
|
|
102
102
|
registry_config_files,
|
|
103
103
|
credentials
|
|
104
|
-
),
|
|
104
|
+
),
|
|
105
|
+
T.nilable(PackageManagerHelper)
|
|
105
106
|
)
|
|
106
107
|
end
|
|
107
108
|
|
|
@@ -137,16 +138,22 @@ module Dependabot
|
|
|
137
138
|
|
|
138
139
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
|
139
140
|
def bun_lock
|
|
140
|
-
@bun_lock ||= T.let(
|
|
141
|
-
f
|
|
142
|
-
|
|
141
|
+
@bun_lock ||= T.let(
|
|
142
|
+
dependency_files.find do |f|
|
|
143
|
+
f.name.end_with?(BunPackageManager::LOCKFILE_NAME)
|
|
144
|
+
end,
|
|
145
|
+
T.nilable(Dependabot::DependencyFile)
|
|
146
|
+
)
|
|
143
147
|
end
|
|
144
148
|
|
|
145
149
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
|
146
150
|
def npmrc
|
|
147
|
-
@npmrc ||= T.let(
|
|
148
|
-
f
|
|
149
|
-
|
|
151
|
+
@npmrc ||= T.let(
|
|
152
|
+
dependency_files.find do |f|
|
|
153
|
+
f.name.end_with?(BunPackageManager::RC_FILENAME)
|
|
154
|
+
end,
|
|
155
|
+
T.nilable(Dependabot::DependencyFile)
|
|
156
|
+
)
|
|
150
157
|
end
|
|
151
158
|
|
|
152
159
|
sig { returns(Dependabot::FileParsers::Base::DependencySet) }
|
|
@@ -183,7 +190,8 @@ module Dependabot
|
|
|
183
190
|
@lockfile_parser ||= T.let(
|
|
184
191
|
LockfileParser.new(
|
|
185
192
|
dependency_files: dependency_files
|
|
186
|
-
),
|
|
193
|
+
),
|
|
194
|
+
T.nilable(Dependabot::Bun::FileParser::LockfileParser)
|
|
187
195
|
)
|
|
188
196
|
end
|
|
189
197
|
|
|
@@ -203,13 +211,16 @@ module Dependabot
|
|
|
203
211
|
manifest_name: file.name
|
|
204
212
|
)
|
|
205
213
|
version = version_for(requirement, lockfile_details)
|
|
206
|
-
converted_version = T.let(
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
214
|
+
converted_version = T.let(
|
|
215
|
+
if version.nil?
|
|
216
|
+
nil
|
|
217
|
+
elsif version.is_a?(String)
|
|
218
|
+
version
|
|
219
|
+
else
|
|
220
|
+
Dependabot::Version.new(version)
|
|
221
|
+
end,
|
|
222
|
+
T.nilable(T.any(String, Dependabot::Version))
|
|
223
|
+
)
|
|
213
224
|
|
|
214
225
|
return if lockfile_details && !version
|
|
215
226
|
return if ignore_requirement?(requirement)
|
|
@@ -239,8 +250,10 @@ module Dependabot
|
|
|
239
250
|
def check_required_files
|
|
240
251
|
return if get_original_file(MANIFEST_FILENAME)
|
|
241
252
|
|
|
242
|
-
raise DependencyFileNotFound.new(
|
|
243
|
-
|
|
253
|
+
raise DependencyFileNotFound.new(
|
|
254
|
+
nil,
|
|
255
|
+
"#{MANIFEST_FILENAME} not found."
|
|
256
|
+
)
|
|
244
257
|
end
|
|
245
258
|
|
|
246
259
|
sig { params(requirement: String).returns(T::Boolean) }
|
|
@@ -287,9 +300,12 @@ module Dependabot
|
|
|
287
300
|
|
|
288
301
|
sig { returns(T::Array[String]) }
|
|
289
302
|
def workspace_package_names
|
|
290
|
-
@workspace_package_names ||= T.let(
|
|
291
|
-
|
|
292
|
-
|
|
303
|
+
@workspace_package_names ||= T.let(
|
|
304
|
+
package_files.filter_map do |f|
|
|
305
|
+
JSON.parse(T.must(f.content))["name"]
|
|
306
|
+
end,
|
|
307
|
+
T.nilable(T::Array[String])
|
|
308
|
+
)
|
|
293
309
|
end
|
|
294
310
|
|
|
295
311
|
sig do
|
|
@@ -456,7 +472,8 @@ module Dependabot
|
|
|
456
472
|
[
|
|
457
473
|
dependency_files.find { |f| f.name == MANIFEST_FILENAME },
|
|
458
474
|
*sub_package_files
|
|
459
|
-
].compact,
|
|
475
|
+
].compact,
|
|
476
|
+
T.nilable(T::Array[DependencyFile])
|
|
460
477
|
)
|
|
461
478
|
end
|
|
462
479
|
|
|
@@ -69,8 +69,10 @@ module Dependabot
|
|
|
69
69
|
# a transitive dependency which only needs update in lockfile, So we avoid throwing exception and let
|
|
70
70
|
# the update continue.
|
|
71
71
|
|
|
72
|
-
Dependabot.logger.info(
|
|
73
|
-
|
|
72
|
+
Dependabot.logger.info(
|
|
73
|
+
"experiment: avoid_duplicate_updates_package_json.
|
|
74
|
+
Updating package.json for #{dep.name} "
|
|
75
|
+
)
|
|
74
76
|
|
|
75
77
|
raise "Expected content to change!"
|
|
76
78
|
end
|
|
@@ -225,8 +227,10 @@ module Dependabot
|
|
|
225
227
|
|
|
226
228
|
unless git_dependency
|
|
227
229
|
requirement = dependency_req&.fetch(:requirement)
|
|
228
|
-
return content.match(
|
|
229
|
-
|
|
230
|
+
return content.match(
|
|
231
|
+
/"#{Regexp.escape(dependency_name)}"\s*:\s*
|
|
232
|
+
"#{Regexp.escape(requirement)}"/x
|
|
233
|
+
).to_s
|
|
230
234
|
end
|
|
231
235
|
|
|
232
236
|
username, repo =
|
|
@@ -355,8 +359,10 @@ module Dependabot
|
|
|
355
359
|
|
|
356
360
|
# some deps are patched with local patches, we don't need to update them
|
|
357
361
|
if req.fetch(:requirement).match?(Regexp.union(PATCH_PACKAGE))
|
|
358
|
-
Dependabot.logger.info(
|
|
359
|
-
|
|
362
|
+
Dependabot.logger.info(
|
|
363
|
+
"Func: updated_requirements. dependency patched #{dependency.name}," \
|
|
364
|
+
" Requirement: '#{req.fetch(:requirement)}'"
|
|
365
|
+
)
|
|
360
366
|
|
|
361
367
|
raise DependencyFileNotResolvable,
|
|
362
368
|
"Dependency is patched locally, Update not required."
|
|
@@ -365,8 +371,10 @@ module Dependabot
|
|
|
365
371
|
# some deps are added as local packages, we don't need to update them as they are referred to a local path
|
|
366
372
|
next unless req.fetch(:requirement).match?(Regexp.union(LOCAL_PACKAGE))
|
|
367
373
|
|
|
368
|
-
Dependabot.logger.info(
|
|
369
|
-
|
|
374
|
+
Dependabot.logger.info(
|
|
375
|
+
"Func: updated_requirements. local package #{dependency.name}," \
|
|
376
|
+
" Requirement: '#{req.fetch(:requirement)}'"
|
|
377
|
+
)
|
|
370
378
|
|
|
371
379
|
raise DependencyFileNotResolvable,
|
|
372
380
|
"Local package, Update not required."
|
|
@@ -99,7 +99,8 @@ module Dependabot
|
|
|
99
99
|
dependency_files: dependency_files,
|
|
100
100
|
updated_dependencies: dependencies
|
|
101
101
|
).files_requiring_update
|
|
102
|
-
end,
|
|
102
|
+
end,
|
|
103
|
+
T.nilable(T::Array[DependencyFile])
|
|
103
104
|
)
|
|
104
105
|
end
|
|
105
106
|
|
|
@@ -131,7 +132,8 @@ module Dependabot
|
|
|
131
132
|
@package_files ||= T.let(
|
|
132
133
|
filtered_dependency_files.select do |f|
|
|
133
134
|
f.name.end_with?("package.json")
|
|
134
|
-
end,
|
|
135
|
+
end,
|
|
136
|
+
T.nilable(T::Array[DependencyFile])
|
|
135
137
|
)
|
|
136
138
|
end
|
|
137
139
|
|
|
@@ -162,8 +162,10 @@ module Dependabot
|
|
|
162
162
|
def latest_version_listing
|
|
163
163
|
return @latest_version_listing unless @latest_version_listing.nil?
|
|
164
164
|
|
|
165
|
-
response = Dependabot::RegistryClient.get(
|
|
166
|
-
|
|
165
|
+
response = Dependabot::RegistryClient.get(
|
|
166
|
+
url: "#{dependency_url}/latest",
|
|
167
|
+
headers: registry_auth_headers
|
|
168
|
+
)
|
|
167
169
|
return @latest_version_listing = {} if response.status >= 500
|
|
168
170
|
|
|
169
171
|
begin
|
|
@@ -35,8 +35,13 @@ module Dependabot
|
|
|
35
35
|
yarnrc_yml_file: T.nilable(Dependabot::DependencyFile)
|
|
36
36
|
).void
|
|
37
37
|
end
|
|
38
|
-
def initialize(
|
|
39
|
-
|
|
38
|
+
def initialize(
|
|
39
|
+
dependency:,
|
|
40
|
+
credentials:,
|
|
41
|
+
npmrc_file: nil,
|
|
42
|
+
yarnrc_file: nil,
|
|
43
|
+
yarnrc_yml_file: nil
|
|
44
|
+
)
|
|
40
45
|
@dependency = dependency
|
|
41
46
|
@credentials = credentials
|
|
42
47
|
@npmrc_file = npmrc_file
|
|
@@ -103,10 +108,13 @@ module Dependabot
|
|
|
103
108
|
|
|
104
109
|
sig { returns(T::Array[Dependabot::Credential]) }
|
|
105
110
|
attr_reader :credentials
|
|
111
|
+
|
|
106
112
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
|
107
113
|
attr_reader :npmrc_file
|
|
114
|
+
|
|
108
115
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
|
109
116
|
attr_reader :yarnrc_file
|
|
117
|
+
|
|
110
118
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
|
111
119
|
attr_reader :yarnrc_yml_file
|
|
112
120
|
|
|
@@ -16,11 +16,14 @@ module Dependabot
|
|
|
16
16
|
PNPM_V8 = "8"
|
|
17
17
|
PNPM_V9 = "9"
|
|
18
18
|
|
|
19
|
-
SUPPORTED_VERSIONS = T.let(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
SUPPORTED_VERSIONS = T.let(
|
|
20
|
+
[
|
|
21
|
+
Version.new(PNPM_V7),
|
|
22
|
+
Version.new(PNPM_V8),
|
|
23
|
+
Version.new(PNPM_V9)
|
|
24
|
+
].freeze,
|
|
25
|
+
T::Array[Dependabot::Version]
|
|
26
|
+
)
|
|
24
27
|
|
|
25
28
|
DEPRECATED_VERSIONS = T.let([].freeze, T::Array[Dependabot::Version])
|
|
26
29
|
|
|
@@ -40,8 +40,12 @@ module Dependabot
|
|
|
40
40
|
)
|
|
41
41
|
.void
|
|
42
42
|
end
|
|
43
|
-
def initialize(
|
|
44
|
-
|
|
43
|
+
def initialize(
|
|
44
|
+
requirements:,
|
|
45
|
+
updated_source:,
|
|
46
|
+
update_strategy:,
|
|
47
|
+
latest_resolvable_version:
|
|
48
|
+
)
|
|
45
49
|
@requirements = requirements
|
|
46
50
|
@updated_source = updated_source
|
|
47
51
|
@update_strategy = update_strategy
|
|
@@ -49,8 +49,14 @@ module Dependabot
|
|
|
49
49
|
repo_contents_path: T.nilable(String)
|
|
50
50
|
).void
|
|
51
51
|
end
|
|
52
|
-
def initialize(
|
|
53
|
-
|
|
52
|
+
def initialize(
|
|
53
|
+
dependency:,
|
|
54
|
+
credentials:,
|
|
55
|
+
dependency_files:,
|
|
56
|
+
ignored_versions:,
|
|
57
|
+
latest_allowable_version:,
|
|
58
|
+
repo_contents_path:
|
|
59
|
+
)
|
|
54
60
|
@dependency = dependency
|
|
55
61
|
@credentials = credentials
|
|
56
62
|
@dependency_files = dependency_files
|
|
@@ -27,9 +27,12 @@ module Dependabot
|
|
|
27
27
|
|
|
28
28
|
require_relative "latest_version_finder"
|
|
29
29
|
|
|
30
|
-
TIGHTLY_COUPLED_MONOREPOS = T.let(
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
TIGHTLY_COUPLED_MONOREPOS = T.let(
|
|
31
|
+
{
|
|
32
|
+
"vue" => %w(vue vue-template-compiler)
|
|
33
|
+
}.freeze,
|
|
34
|
+
T::Hash[String, T::Array[String]]
|
|
35
|
+
)
|
|
33
36
|
|
|
34
37
|
# Error message returned by `npm install` (for NPM 6):
|
|
35
38
|
# react-dom@15.2.0 requires a peer of react@^15.2.0 \
|
|
@@ -68,10 +71,15 @@ module Dependabot
|
|
|
68
71
|
).void
|
|
69
72
|
end
|
|
70
73
|
def initialize( # rubocop:disable Metrics/AbcSize
|
|
71
|
-
dependency:,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
dependency:,
|
|
75
|
+
dependency_files:,
|
|
76
|
+
credentials:,
|
|
77
|
+
latest_allowable_version:,
|
|
78
|
+
latest_version_finder:,
|
|
79
|
+
repo_contents_path:,
|
|
80
|
+
dependency_group: nil,
|
|
81
|
+
raise_on_ignored: false,
|
|
82
|
+
update_cooldown: nil
|
|
75
83
|
)
|
|
76
84
|
@dependency = dependency
|
|
77
85
|
@dependency_files = dependency_files
|
|
@@ -170,22 +178,29 @@ module Dependabot
|
|
|
170
178
|
|
|
171
179
|
sig { returns(Dependabot::Dependency) }
|
|
172
180
|
attr_reader :dependency
|
|
181
|
+
|
|
173
182
|
sig { returns(T::Array[Dependabot::DependencyFile]) }
|
|
174
183
|
attr_reader :dependency_files
|
|
184
|
+
|
|
175
185
|
sig { returns(T::Array[Dependabot::Credential]) }
|
|
176
186
|
attr_reader :credentials
|
|
187
|
+
|
|
177
188
|
sig { returns(T.nilable(T.any(String, Gem::Version))) }
|
|
178
189
|
attr_reader :latest_allowable_version
|
|
190
|
+
|
|
179
191
|
sig { returns(T.nilable(String)) }
|
|
180
192
|
attr_reader :repo_contents_path
|
|
193
|
+
|
|
181
194
|
sig { returns(T.nilable(Dependabot::DependencyGroup)) }
|
|
182
195
|
attr_reader :dependency_group
|
|
196
|
+
|
|
183
197
|
sig { returns(T.nilable(Dependabot::Package::ReleaseCooldownOptions)) }
|
|
184
198
|
attr_reader :update_cooldown
|
|
199
|
+
|
|
185
200
|
sig { returns(T::Boolean) }
|
|
186
201
|
attr_reader :raise_on_ignored
|
|
187
202
|
|
|
188
|
-
sig { params(dep: Dependabot::Dependency)
|
|
203
|
+
sig { params(dep: Dependabot::Dependency).returns(PackageLatestVersionFinder) }
|
|
189
204
|
def latest_version_finder(dep)
|
|
190
205
|
@latest_version_finder[dep] ||=
|
|
191
206
|
PackageLatestVersionFinder.new(
|
|
@@ -192,8 +192,10 @@ module Dependabot
|
|
|
192
192
|
end
|
|
193
193
|
|
|
194
194
|
sig do
|
|
195
|
-
params(
|
|
196
|
-
|
|
195
|
+
params(
|
|
196
|
+
dependency: Dependabot::Dependency,
|
|
197
|
+
error: Dependabot::SharedHelpers::HelperSubprocessFailed
|
|
198
|
+
).void
|
|
197
199
|
end
|
|
198
200
|
def log_helper_subprocess_failure(dependency, error)
|
|
199
201
|
# See `Dependabot::SharedHelpers.run_helper_subprocess` for details on error context
|
|
@@ -36,11 +36,19 @@ module Dependabot
|
|
|
36
36
|
)
|
|
37
37
|
.void
|
|
38
38
|
end
|
|
39
|
-
def initialize(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
def initialize( # rubocop:disable Metrics/AbcSize
|
|
40
|
+
dependency:,
|
|
41
|
+
dependency_files:,
|
|
42
|
+
credentials:,
|
|
43
|
+
repo_contents_path: nil,
|
|
44
|
+
ignored_versions: [],
|
|
45
|
+
raise_on_ignored: false,
|
|
46
|
+
security_advisories: [],
|
|
47
|
+
requirements_update_strategy: nil,
|
|
48
|
+
dependency_group: nil,
|
|
49
|
+
update_cooldown: nil,
|
|
50
|
+
options: {}
|
|
51
|
+
)
|
|
44
52
|
@latest_version = T.let(nil, T.nilable(T.any(String, Gem::Version)))
|
|
45
53
|
@latest_resolvable_version = T.let(nil, T.nilable(T.any(String, Dependabot::Version)))
|
|
46
54
|
@updated_requirements = T.let(nil, T.nilable(T::Array[T::Hash[Symbol, T.untyped]]))
|
|
@@ -385,8 +393,10 @@ module Dependabot
|
|
|
385
393
|
def latest_version_for_git_dependency
|
|
386
394
|
@latest_version_for_git_dependency ||=
|
|
387
395
|
if version_class.correct?(dependency.version)
|
|
388
|
-
T.unsafe(
|
|
389
|
-
|
|
396
|
+
T.unsafe(
|
|
397
|
+
latest_git_version_details[:version] &&
|
|
398
|
+
version_class.new(latest_git_version_details[:version])
|
|
399
|
+
)
|
|
390
400
|
else
|
|
391
401
|
latest_git_version_details[:sha]
|
|
392
402
|
end
|
|
@@ -21,20 +21,23 @@ module Dependabot
|
|
|
21
21
|
|
|
22
22
|
# These are possible npm versioning tags that can be used in place of a version.
|
|
23
23
|
# See https://docs.npmjs.com/cli/v10/commands/npm-dist-tag#purpose for more details.
|
|
24
|
-
VERSION_TAGS = T.let(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
24
|
+
VERSION_TAGS = T.let(
|
|
25
|
+
[
|
|
26
|
+
"alpha", # Alpha version, early testing phase
|
|
27
|
+
"beta", # Beta version, more stable than alpha
|
|
28
|
+
"canary", # Canary version, often used for cutting-edge builds
|
|
29
|
+
"dev", # Development version, ongoing development
|
|
30
|
+
"experimental", # Experimental version, unstable and new features
|
|
31
|
+
"latest", # Latest stable version, used by npm to identify the current version of a package
|
|
32
|
+
"legacy", # Legacy version, older version maintained for compatibility
|
|
33
|
+
"next", # Next version, used by some projects to identify the upcoming version
|
|
34
|
+
"nightly", # Nightly build, daily builds often including latest changes
|
|
35
|
+
"rc", # Release candidate, potential final version
|
|
36
|
+
"release", # General release version
|
|
37
|
+
"stable" # Stable version, thoroughly tested and stable
|
|
38
|
+
].freeze.map(&:freeze),
|
|
39
|
+
T::Array[String]
|
|
40
|
+
)
|
|
38
41
|
|
|
39
42
|
VERSION_PATTERN = T.let(Gem::Version::VERSION_PATTERN + '(\+[0-9a-zA-Z\-.]+)?', String)
|
|
40
43
|
ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/
|
data/lib/dependabot/bun.rb
CHANGED
|
@@ -166,186 +166,189 @@ module Dependabot
|
|
|
166
166
|
end
|
|
167
167
|
|
|
168
168
|
# Group of patterns to validate error message and raise specific error
|
|
169
|
-
VALIDATION_GROUP_PATTERNS = T.let(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
169
|
+
VALIDATION_GROUP_PATTERNS = T.let(
|
|
170
|
+
[
|
|
171
|
+
{
|
|
172
|
+
patterns: [INVALID_NAME_IN_PACKAGE_JSON],
|
|
173
|
+
handler: lambda { |message, _error, _params|
|
|
174
|
+
Dependabot::DependencyFileNotResolvable.new(message)
|
|
175
|
+
},
|
|
176
|
+
in_usage: false,
|
|
177
|
+
matchfn: nil
|
|
174
178
|
},
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
params[:dependencies],
|
|
186
|
-
params[:yarn_lock]
|
|
179
|
+
{
|
|
180
|
+
# Check if sub dependency is using local path and raise a resolvability error
|
|
181
|
+
patterns: [INVALID_PACKAGE_REGEX, SUB_DEP_LOCAL_PATH_TEXT],
|
|
182
|
+
handler: lambda { |message, _error, params|
|
|
183
|
+
Dependabot::DependencyFileNotResolvable.new(
|
|
184
|
+
Utils.sanitize_resolvability_message(
|
|
185
|
+
message,
|
|
186
|
+
params[:dependencies],
|
|
187
|
+
params[:yarn_lock]
|
|
188
|
+
)
|
|
187
189
|
)
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
matchfn: nil
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
patterns: [NODE_MODULES_STATE_FILE_NOT_FOUND],
|
|
195
|
-
handler: lambda { |message, _error, _params|
|
|
196
|
-
Dependabot::MisconfiguredTooling.new("Yarn", message)
|
|
190
|
+
},
|
|
191
|
+
in_usage: false,
|
|
192
|
+
matchfn: nil
|
|
197
193
|
},
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
194
|
+
{
|
|
195
|
+
patterns: [NODE_MODULES_STATE_FILE_NOT_FOUND],
|
|
196
|
+
handler: lambda { |message, _error, _params|
|
|
197
|
+
Dependabot::MisconfiguredTooling.new("Yarn", message)
|
|
198
|
+
},
|
|
199
|
+
in_usage: true,
|
|
200
|
+
matchfn: nil
|
|
205
201
|
},
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
current_version = versions[:current_version]
|
|
214
|
-
required_version = versions[:required_version]
|
|
215
|
-
|
|
216
|
-
return Dependabot::DependabotError.new(message) unless current_version && required_version
|
|
217
|
-
|
|
218
|
-
Dependabot::ToolVersionNotSupported.new("Yarn", current_version, required_version)
|
|
202
|
+
{
|
|
203
|
+
patterns: [TARBALL_IS_NOT_IN_NETWORK],
|
|
204
|
+
handler: lambda { |message, _error, _params|
|
|
205
|
+
Dependabot::DependencyFileNotResolvable.new(message)
|
|
206
|
+
},
|
|
207
|
+
in_usage: false,
|
|
208
|
+
matchfn: nil
|
|
219
209
|
},
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
210
|
+
{
|
|
211
|
+
patterns: [NODE_VERSION_NOT_SATISFY_REGEX],
|
|
212
|
+
handler: lambda { |message, _error, _params|
|
|
213
|
+
versions = Utils.extract_node_versions(message)
|
|
214
|
+
current_version = versions[:current_version]
|
|
215
|
+
required_version = versions[:required_version]
|
|
216
|
+
|
|
217
|
+
return Dependabot::DependabotError.new(message) unless current_version && required_version
|
|
218
|
+
|
|
219
|
+
Dependabot::ToolVersionNotSupported.new("Yarn", current_version, required_version)
|
|
220
|
+
},
|
|
221
|
+
in_usage: false,
|
|
222
|
+
matchfn: nil
|
|
228
223
|
},
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
224
|
+
{
|
|
225
|
+
patterns: [AUTHENTICATION_TOKEN_NOT_PROVIDED, AUTHENTICATION_IS_NOT_CONFIGURED,
|
|
226
|
+
AUTHENTICATION_HEADER_NOT_PROVIDED],
|
|
227
|
+
handler: lambda { |message, _error, _params|
|
|
228
|
+
Dependabot::PrivateSourceAuthenticationFailure.new(message)
|
|
229
|
+
},
|
|
230
|
+
in_usage: false,
|
|
231
|
+
matchfn: nil
|
|
236
232
|
},
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
Dependabot::MissingEnvironmentVariable.new(var, message)
|
|
233
|
+
{
|
|
234
|
+
patterns: [DEPENDENCY_FILE_NOT_RESOLVABLE],
|
|
235
|
+
handler: lambda { |message, _error, _params|
|
|
236
|
+
DependencyFileNotResolvable.new(message)
|
|
237
|
+
},
|
|
238
|
+
in_usage: false,
|
|
239
|
+
matchfn: nil
|
|
246
240
|
},
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
241
|
+
{
|
|
242
|
+
patterns: [ENV_VAR_NOT_RESOLVABLE],
|
|
243
|
+
handler: lambda { |message, _error, _params|
|
|
244
|
+
var = Utils.extract_var(message)
|
|
245
|
+
|
|
246
|
+
Dependabot::MissingEnvironmentVariable.new(var, message)
|
|
247
|
+
},
|
|
248
|
+
in_usage: false,
|
|
249
|
+
matchfn: nil
|
|
254
250
|
},
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
Dependabot::GitDependenciesNotReachable.new(dependency_url)
|
|
251
|
+
{
|
|
252
|
+
patterns: [ONLY_PRIVATE_WORKSPACE_TEXT],
|
|
253
|
+
handler: lambda { |message, _error, _params|
|
|
254
|
+
Dependabot::DependencyFileNotEvaluatable.new(message)
|
|
255
|
+
},
|
|
256
|
+
in_usage: false,
|
|
257
|
+
matchfn: nil
|
|
264
258
|
},
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
259
|
+
{
|
|
260
|
+
patterns: [UNREACHABLE_GIT_CHECK_REGEX],
|
|
261
|
+
handler: lambda { |message, _error, _params|
|
|
262
|
+
dependency_url = message.match(UNREACHABLE_GIT_CHECK_REGEX).named_captures.fetch(URL_CAPTURE)
|
|
263
|
+
|
|
264
|
+
Dependabot::GitDependenciesNotReachable.new(dependency_url)
|
|
265
|
+
},
|
|
266
|
+
in_usage: false,
|
|
267
|
+
matchfn: nil
|
|
274
268
|
},
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
269
|
+
{
|
|
270
|
+
patterns: [SOCKET_HANG_UP],
|
|
271
|
+
handler: lambda { |message, _error, _params|
|
|
272
|
+
url = message.match(SOCKET_HANG_UP).named_captures.fetch(URL_CAPTURE)
|
|
273
|
+
|
|
274
|
+
Dependabot::PrivateSourceTimedOut.new(url.gsub(HTTP_CHECK_REGEX, ""))
|
|
275
|
+
},
|
|
276
|
+
in_usage: false,
|
|
277
|
+
matchfn: nil
|
|
284
278
|
},
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
279
|
+
{
|
|
280
|
+
patterns: [ESOCKETTIMEDOUT],
|
|
281
|
+
handler: lambda { |message, _error, _params|
|
|
282
|
+
package_req = message.match(ESOCKETTIMEDOUT).named_captures.fetch("package")
|
|
283
|
+
|
|
284
|
+
Dependabot::PrivateSourceTimedOut.new(package_req.gsub(HTTP_CHECK_REGEX, ""))
|
|
285
|
+
},
|
|
286
|
+
in_usage: false,
|
|
287
|
+
matchfn: nil
|
|
292
288
|
},
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
message.match(YARN_PACKAGE_NOT_FOUND_CODE_2)
|
|
301
|
-
|
|
302
|
-
Dependabot::DependencyFileNotResolvable.new(msg)
|
|
289
|
+
{
|
|
290
|
+
patterns: [OUT_OF_DISKSPACE],
|
|
291
|
+
handler: lambda { |message, _error, _params|
|
|
292
|
+
Dependabot::OutOfDisk.new(message)
|
|
293
|
+
},
|
|
294
|
+
in_usage: false,
|
|
295
|
+
matchfn: nil
|
|
303
296
|
},
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
297
|
+
{
|
|
298
|
+
patterns: [YARN_PACKAGE_NOT_FOUND_CODE, YARN_PACKAGE_NOT_FOUND_CODE_1, YARN_PACKAGE_NOT_FOUND_CODE_2],
|
|
299
|
+
handler: lambda { |message, _error, _params|
|
|
300
|
+
msg = message.match(YARN_PACKAGE_NOT_FOUND_CODE) || message.match(YARN_PACKAGE_NOT_FOUND_CODE_1) ||
|
|
301
|
+
message.match(YARN_PACKAGE_NOT_FOUND_CODE_2)
|
|
302
|
+
|
|
303
|
+
Dependabot::DependencyFileNotResolvable.new(msg)
|
|
304
|
+
},
|
|
305
|
+
in_usage: false,
|
|
306
|
+
matchfn: nil
|
|
313
307
|
},
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
308
|
+
{
|
|
309
|
+
patterns: [REQUEST_ERROR_E403, AUTH_REQUIRED_ERROR, PERMISSION_DENIED, BAD_REQUEST],
|
|
310
|
+
handler: lambda { |message, _error, _params|
|
|
311
|
+
dependency_url = T.must(URI.decode_www_form_component(message).split("https://").last).split("/").first
|
|
312
|
+
|
|
313
|
+
Dependabot::PrivateSourceAuthenticationFailure.new(dependency_url)
|
|
314
|
+
},
|
|
315
|
+
in_usage: false,
|
|
316
|
+
matchfn: nil
|
|
322
317
|
},
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
318
|
+
{
|
|
319
|
+
patterns: [MANIFEST_NOT_FOUND],
|
|
320
|
+
handler: lambda { |message, _error, _params|
|
|
321
|
+
msg = message.match(MANIFEST_NOT_FOUND)
|
|
322
|
+
Dependabot::DependencyFileNotResolvable.new(msg)
|
|
323
|
+
},
|
|
324
|
+
in_usage: false,
|
|
325
|
+
matchfn: nil
|
|
331
326
|
},
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
327
|
+
{
|
|
328
|
+
patterns: [INTERNAL_SERVER_ERROR],
|
|
329
|
+
handler: lambda { |message, _error, _params|
|
|
330
|
+
msg = message.match(INTERNAL_SERVER_ERROR)
|
|
331
|
+
Dependabot::DependencyFileNotResolvable.new(msg)
|
|
332
|
+
},
|
|
333
|
+
in_usage: false,
|
|
334
|
+
matchfn: nil
|
|
340
335
|
},
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
336
|
+
{
|
|
337
|
+
patterns: [REGISTRY_NOT_REACHABLE],
|
|
338
|
+
handler: lambda { |message, _error, _params|
|
|
339
|
+
msg = message.match(REGISTRY_NOT_REACHABLE)
|
|
340
|
+
Dependabot::DependencyFileNotResolvable.new(msg)
|
|
341
|
+
},
|
|
342
|
+
in_usage: false,
|
|
343
|
+
matchfn: nil
|
|
344
|
+
}
|
|
345
|
+
].freeze,
|
|
346
|
+
T::Array[{
|
|
347
|
+
patterns: T::Array[T.any(String, Regexp)],
|
|
348
|
+
handler: ErrorHandler,
|
|
349
|
+
in_usage: T.nilable(T::Boolean),
|
|
350
|
+
matchfn: T.nilable(T.proc.params(usage: String, message: String).returns(T::Boolean))
|
|
351
|
+
}]
|
|
352
|
+
)
|
|
350
353
|
end
|
|
351
354
|
end
|
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.
|
|
4
|
+
version: 0.336.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.
|
|
18
|
+
version: 0.336.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.
|
|
25
|
+
version: 0.336.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: debug
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -113,56 +113,56 @@ dependencies:
|
|
|
113
113
|
requirements:
|
|
114
114
|
- - "~>"
|
|
115
115
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '1.
|
|
116
|
+
version: '1.80'
|
|
117
117
|
type: :development
|
|
118
118
|
prerelease: false
|
|
119
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
120
|
requirements:
|
|
121
121
|
- - "~>"
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: '1.
|
|
123
|
+
version: '1.80'
|
|
124
124
|
- !ruby/object:Gem::Dependency
|
|
125
125
|
name: rubocop-performance
|
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|
|
127
127
|
requirements:
|
|
128
128
|
- - "~>"
|
|
129
129
|
- !ruby/object:Gem::Version
|
|
130
|
-
version: '1.
|
|
130
|
+
version: '1.26'
|
|
131
131
|
type: :development
|
|
132
132
|
prerelease: false
|
|
133
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
134
134
|
requirements:
|
|
135
135
|
- - "~>"
|
|
136
136
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: '1.
|
|
137
|
+
version: '1.26'
|
|
138
138
|
- !ruby/object:Gem::Dependency
|
|
139
139
|
name: rubocop-rspec
|
|
140
140
|
requirement: !ruby/object:Gem::Requirement
|
|
141
141
|
requirements:
|
|
142
142
|
- - "~>"
|
|
143
143
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: '
|
|
144
|
+
version: '3.7'
|
|
145
145
|
type: :development
|
|
146
146
|
prerelease: false
|
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
148
148
|
requirements:
|
|
149
149
|
- - "~>"
|
|
150
150
|
- !ruby/object:Gem::Version
|
|
151
|
-
version: '
|
|
151
|
+
version: '3.7'
|
|
152
152
|
- !ruby/object:Gem::Dependency
|
|
153
153
|
name: rubocop-sorbet
|
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
|
155
155
|
requirements:
|
|
156
156
|
- - "~>"
|
|
157
157
|
- !ruby/object:Gem::Version
|
|
158
|
-
version: '0.
|
|
158
|
+
version: '0.10'
|
|
159
159
|
type: :development
|
|
160
160
|
prerelease: false
|
|
161
161
|
version_requirements: !ruby/object:Gem::Requirement
|
|
162
162
|
requirements:
|
|
163
163
|
- - "~>"
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
|
-
version: '0.
|
|
165
|
+
version: '0.10'
|
|
166
166
|
- !ruby/object:Gem::Dependency
|
|
167
167
|
name: simplecov
|
|
168
168
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -347,7 +347,7 @@ licenses:
|
|
|
347
347
|
- MIT
|
|
348
348
|
metadata:
|
|
349
349
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
350
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
350
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.336.0
|
|
351
351
|
rdoc_options: []
|
|
352
352
|
require_paths:
|
|
353
353
|
- lib
|