dependabot-bun 0.393.0 → 0.394.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/lib/dependabot/bun/package/package_details_fetcher.rb +31 -86
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 58c6e65516abb330782b80eb404d962d2f275f52d283c50849004b0bfd1156e6
|
|
4
|
+
data.tar.gz: a6ccf3ca258033e75af17af705d6df2daa2ac2c61593b1fbb3756a1ec7721ff2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5f7e979b6ea89101fd6257465ae92c00a42a448404ee790fd010cf1be5c60dcaea094933b4a10c77cab94b9560ffaf8528859a6a019a2c5fe4620b5471a590c9
|
|
7
|
+
data.tar.gz: 43d0c921178052889623bc74cf29e13a46f4d4d631f4f6ae2ce55f2536d170494ea2ba9c13a0b2d3c8533d5e6c3cd905adf445690fbb365b2acc4b539f223f7c
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# typed:
|
|
1
|
+
# typed: strong
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
4
|
require "json"
|
|
@@ -6,6 +6,7 @@ require "excon"
|
|
|
6
6
|
require "time"
|
|
7
7
|
require "dependabot/package/package_release"
|
|
8
8
|
require "dependabot/package/package_details"
|
|
9
|
+
require "dependabot/package/npm_registry_package"
|
|
9
10
|
require "dependabot/bun/package/registry_finder"
|
|
10
11
|
|
|
11
12
|
module Dependabot
|
|
@@ -21,17 +22,8 @@ module Dependabot
|
|
|
21
22
|
API_AUTHORIZATION_VALUE_BASIC_PREFIX = "Basic"
|
|
22
23
|
API_RESPONSE_STATUS_SUCCESS_PREFIX = "2"
|
|
23
24
|
|
|
24
|
-
RELEASE_TIME_KEY = "time"
|
|
25
|
-
RELEASE_VERSIONS_KEY = "versions"
|
|
26
|
-
RELEASE_DIST_TAGS_KEY = "dist-tags"
|
|
27
25
|
RELEASE_DIST_TAGS_LATEST_KEY = "latest"
|
|
28
|
-
RELEASE_ENGINES_KEY = "engines"
|
|
29
26
|
RELEASE_LANGUAGE_KEY = "node"
|
|
30
|
-
RELEASE_DEPRECATION_KEY = "deprecated"
|
|
31
|
-
RELEASE_REPOSITORY_KEY = "repository"
|
|
32
|
-
RELEASE_PACKAGE_TYPE_KEY = "type"
|
|
33
|
-
RELEASE_PACKAGE_TYPE_GIT = "git"
|
|
34
|
-
RELEASE_PACKAGE_TYPE_NPM = "npm"
|
|
35
27
|
|
|
36
28
|
REGISTRY_FILE_NPMRC = ".npmrc"
|
|
37
29
|
REGISTRY_FILE_YARNRC = ".yarnrc"
|
|
@@ -53,7 +45,7 @@ module Dependabot
|
|
|
53
45
|
@dependency_files = dependency_files
|
|
54
46
|
@credentials = credentials
|
|
55
47
|
|
|
56
|
-
@npm_details = T.let(nil, T.nilable(
|
|
48
|
+
@npm_details = T.let(nil, T.nilable(Dependabot::Package::NpmRegistryPackage))
|
|
57
49
|
@dist_tags = T.let(nil, T.nilable(T::Hash[String, String]))
|
|
58
50
|
@registry_finder = T.let(nil, T.nilable(Package::RegistryFinder))
|
|
59
51
|
@version_endpoint_working = T.let(nil, T.nilable(T::Boolean))
|
|
@@ -84,7 +76,7 @@ module Dependabot
|
|
|
84
76
|
!dist_tags.nil?
|
|
85
77
|
end
|
|
86
78
|
|
|
87
|
-
sig { returns(T.nilable(
|
|
79
|
+
sig { returns(T.nilable(Dependabot::Package::NpmRegistryPackage)) }
|
|
88
80
|
def npm_details
|
|
89
81
|
@npm_details ||= fetch_npm_details
|
|
90
82
|
end
|
|
@@ -158,32 +150,26 @@ module Dependabot
|
|
|
158
150
|
|
|
159
151
|
sig do
|
|
160
152
|
params(
|
|
161
|
-
npm_data:
|
|
153
|
+
npm_data: Dependabot::Package::NpmRegistryPackage
|
|
162
154
|
).returns(T::Array[Dependabot::Package::PackageRelease])
|
|
163
155
|
end
|
|
164
156
|
def parse_versions(npm_data)
|
|
165
|
-
|
|
166
|
-
versions_data = fetch_value_from_hash(npm_data, RELEASE_VERSIONS_KEY) || {}
|
|
157
|
+
latest_version = npm_data.dist_tags&.[](RELEASE_DIST_TAGS_LATEST_KEY)
|
|
167
158
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
versions_data.filter_map do |version, details|
|
|
172
|
-
next unless Dependabot::Bun::Version.correct?(version)
|
|
173
|
-
|
|
174
|
-
package_type = infer_package_type(details)
|
|
159
|
+
npm_data.releases.values.filter_map do |release|
|
|
160
|
+
next unless Dependabot::Bun::Version.correct?(release.version)
|
|
175
161
|
|
|
176
162
|
Dependabot::Package::PackageRelease.new(
|
|
177
|
-
version: Version.new(version),
|
|
178
|
-
released_at:
|
|
163
|
+
version: Version.new(release.version),
|
|
164
|
+
released_at: release.released_at,
|
|
179
165
|
yanked: false,
|
|
180
166
|
yanked_reason: nil,
|
|
181
167
|
downloads: nil,
|
|
182
|
-
latest: latest_version
|
|
183
|
-
url: package_version_url(version),
|
|
184
|
-
package_type: package_type,
|
|
185
|
-
language: package_language(
|
|
186
|
-
details: details
|
|
168
|
+
latest: latest_version == release.version,
|
|
169
|
+
url: package_version_url(release.version),
|
|
170
|
+
package_type: release.package_type,
|
|
171
|
+
language: package_language(release.node_requirement),
|
|
172
|
+
details: release.details
|
|
187
173
|
)
|
|
188
174
|
end.sort_by(&:version).reverse
|
|
189
175
|
end
|
|
@@ -193,39 +179,31 @@ module Dependabot
|
|
|
193
179
|
"#{dependency_registry}/#{@dependency.name}/v/#{version}"
|
|
194
180
|
end
|
|
195
181
|
|
|
196
|
-
sig
|
|
197
|
-
|
|
198
|
-
.returns(T.nilable(Dependabot::Package::PackageLanguage))
|
|
199
|
-
end
|
|
200
|
-
def package_language(version_details)
|
|
201
|
-
# Fetch the engines hash from the version details
|
|
202
|
-
engines = version_details.is_a?(Hash) ? version_details[RELEASE_ENGINES_KEY] : nil
|
|
203
|
-
# Check if engines is a hash and fetch the node requirement
|
|
204
|
-
node_requirement = engines.is_a?(Hash) ? engines.fetch(RELEASE_LANGUAGE_KEY, nil) : nil
|
|
205
|
-
|
|
182
|
+
sig { params(node_requirement: T.nilable(String)).returns(T.nilable(Dependabot::Package::PackageLanguage)) }
|
|
183
|
+
def package_language(node_requirement)
|
|
206
184
|
return nil unless node_requirement
|
|
207
185
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
)
|
|
214
|
-
end
|
|
186
|
+
Dependabot::Package::PackageLanguage.new(
|
|
187
|
+
name: RELEASE_LANGUAGE_KEY,
|
|
188
|
+
version: nil,
|
|
189
|
+
requirement: Requirement.new(node_requirement)
|
|
190
|
+
)
|
|
215
191
|
rescue Gem::Requirement::BadRequirementError
|
|
216
192
|
nil
|
|
217
193
|
end
|
|
218
194
|
|
|
219
195
|
sig { returns(T.nilable(T::Hash[String, String])) }
|
|
220
196
|
def dist_tags
|
|
221
|
-
@dist_tags ||=
|
|
197
|
+
@dist_tags ||= npm_details&.dist_tags
|
|
222
198
|
end
|
|
223
199
|
|
|
224
|
-
sig { returns(T.nilable(
|
|
200
|
+
sig { returns(T.nilable(Dependabot::Package::NpmRegistryPackage)) }
|
|
225
201
|
def fetch_npm_details
|
|
226
202
|
npm_response = fetch_npm_response
|
|
227
203
|
check_npm_response(npm_response) if npm_response
|
|
228
|
-
|
|
204
|
+
Dependabot::Package::NpmRegistryPackage.from_json(npm_response.body) do |version|
|
|
205
|
+
Dependabot::Bun::Version.correct?(version)
|
|
206
|
+
end
|
|
229
207
|
rescue JSON::ParserError, Excon::Error::Timeout, Excon::Error::Socket, RegistryError => e
|
|
230
208
|
if git_dependency?
|
|
231
209
|
nil
|
|
@@ -250,10 +228,10 @@ module Dependabot
|
|
|
250
228
|
# If a private registry returns a 500 error, check authentication
|
|
251
229
|
return response unless response.status == 500
|
|
252
230
|
|
|
253
|
-
auth =
|
|
231
|
+
auth = registry_auth_headers[API_AUTHORIZATION_KEY]
|
|
254
232
|
return response unless auth
|
|
255
233
|
|
|
256
|
-
return response unless auth
|
|
234
|
+
return response unless auth.start_with?(API_AUTHORIZATION_VALUE_BASIC_PREFIX)
|
|
257
235
|
|
|
258
236
|
decoded_token = Base64.decode64(auth.gsub("#{API_AUTHORIZATION_VALUE_BASIC_PREFIX} ", "")).strip
|
|
259
237
|
|
|
@@ -275,29 +253,6 @@ module Dependabot
|
|
|
275
253
|
raise DependencyFileNotResolvable, e.message
|
|
276
254
|
end
|
|
277
255
|
|
|
278
|
-
sig do
|
|
279
|
-
params(
|
|
280
|
-
details: T::Hash[String, T.untyped],
|
|
281
|
-
git_dependency: T::Boolean
|
|
282
|
-
)
|
|
283
|
-
.returns(String)
|
|
284
|
-
end
|
|
285
|
-
def infer_package_type(details, git_dependency: false)
|
|
286
|
-
return RELEASE_PACKAGE_TYPE_GIT if git_dependency
|
|
287
|
-
|
|
288
|
-
repository = fetch_value_from_hash(details, RELEASE_REPOSITORY_KEY)
|
|
289
|
-
|
|
290
|
-
case repository
|
|
291
|
-
when String
|
|
292
|
-
return repository.start_with?("git+") ? RELEASE_PACKAGE_TYPE_GIT : RELEASE_PACKAGE_TYPE_NPM
|
|
293
|
-
when Hash
|
|
294
|
-
type = fetch_value_from_hash(repository, RELEASE_PACKAGE_TYPE_KEY)
|
|
295
|
-
return RELEASE_PACKAGE_TYPE_GIT if type == RELEASE_PACKAGE_TYPE_GIT
|
|
296
|
-
end
|
|
297
|
-
|
|
298
|
-
RELEASE_PACKAGE_TYPE_NPM
|
|
299
|
-
end
|
|
300
|
-
|
|
301
256
|
sig { params(npm_response: Excon::Response).void }
|
|
302
257
|
def check_npm_response(npm_response)
|
|
303
258
|
return if git_dependency?
|
|
@@ -332,7 +287,7 @@ module Dependabot
|
|
|
332
287
|
raise RegistryError.new(status, msg)
|
|
333
288
|
end
|
|
334
289
|
|
|
335
|
-
sig { params(error: StandardError).
|
|
290
|
+
sig { params(error: StandardError).returns(T.noreturn) }
|
|
336
291
|
def raise_npm_details_error(error)
|
|
337
292
|
raise if dependency_registry == GLOBAL_REGISTRY
|
|
338
293
|
raise unless error.is_a?(Excon::Error::Timeout) || error.is_a?(Excon::Error::Socket)
|
|
@@ -372,8 +327,7 @@ module Dependabot
|
|
|
372
327
|
|
|
373
328
|
sig { params(npm_response: Excon::Response).returns(T::Boolean) }
|
|
374
329
|
def response_invalid_json?(npm_response)
|
|
375
|
-
|
|
376
|
-
result.is_a?(Hash) || result.is_a?(Array)
|
|
330
|
+
T.cast(JSON.parse(npm_response.body), Object)
|
|
377
331
|
false
|
|
378
332
|
rescue JSON::ParserError, TypeError
|
|
379
333
|
true
|
|
@@ -423,15 +377,6 @@ module Dependabot
|
|
|
423
377
|
credentials: credentials
|
|
424
378
|
).git_dependency?
|
|
425
379
|
end
|
|
426
|
-
|
|
427
|
-
# This function safely retrieves a value for a given key from a Hash.
|
|
428
|
-
# If the hash is valid and the key exists, it will return the value, otherwise nil.
|
|
429
|
-
sig { params(hash: T.untyped, key: T.untyped).returns(T.untyped) }
|
|
430
|
-
def fetch_value_from_hash(hash, key)
|
|
431
|
-
return nil unless hash.is_a?(Hash) # Return nil if the hash is not a Hash
|
|
432
|
-
|
|
433
|
-
hash.fetch(key, nil) # Fetch the value for the given key, defaulting to nil if not found
|
|
434
|
-
end
|
|
435
380
|
end
|
|
436
381
|
end
|
|
437
382
|
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.394.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.394.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.394.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: debug
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -169,14 +169,14 @@ dependencies:
|
|
|
169
169
|
requirements:
|
|
170
170
|
- - "~>"
|
|
171
171
|
- !ruby/object:Gem::Version
|
|
172
|
-
version: '
|
|
172
|
+
version: '1.1'
|
|
173
173
|
type: :development
|
|
174
174
|
prerelease: false
|
|
175
175
|
version_requirements: !ruby/object:Gem::Requirement
|
|
176
176
|
requirements:
|
|
177
177
|
- - "~>"
|
|
178
178
|
- !ruby/object:Gem::Version
|
|
179
|
-
version: '
|
|
179
|
+
version: '1.1'
|
|
180
180
|
- !ruby/object:Gem::Dependency
|
|
181
181
|
name: turbo_tests
|
|
182
182
|
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.
|
|
357
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.394.0
|
|
358
358
|
rdoc_options: []
|
|
359
359
|
require_paths:
|
|
360
360
|
- lib
|