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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 923b839c39e732c6fb6811cf6c9d1d7ec632278e3ea3e53a869091ebbf4ebf3f
4
- data.tar.gz: 39e1cf8df33890c3eb795c37ca76d05a13407a0147cbd30c61cd89d192983aed
3
+ metadata.gz: 58c6e65516abb330782b80eb404d962d2f275f52d283c50849004b0bfd1156e6
4
+ data.tar.gz: a6ccf3ca258033e75af17af705d6df2daa2ac2c61593b1fbb3756a1ec7721ff2
5
5
  SHA512:
6
- metadata.gz: 4954f66e622be9eee7f56ab6ce81d65a8874b3308140b63d2c98bf2a0316eead317e296cb71e173b810170047995f9fc9fe9230b543fdbcf1939c2990399a207
7
- data.tar.gz: 8f4ed98c474f44bd4f385ea10f54506294776b9b4a6ba2f72150d07c544b9eef60cdd3bddbe5a2ec93ebcf76eaa58281244bb5cebe4c5356d8d213e13225452a
6
+ metadata.gz: 5f7e979b6ea89101fd6257465ae92c00a42a448404ee790fd010cf1be5c60dcaea094933b4a10c77cab94b9560ffaf8528859a6a019a2c5fe4620b5471a590c9
7
+ data.tar.gz: 43d0c921178052889623bc74cf29e13a46f4d4d631f4f6ae2ce55f2536d170494ea2ba9c13a0b2d3c8533d5e6c3cd905adf445690fbb365b2acc4b539f223f7c
@@ -1,4 +1,4 @@
1
- # typed: strict
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(T::Hash[String, T.untyped]))
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(T::Hash[String, T.untyped])) }
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: T::Hash[String, T.untyped]
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
- time_data = fetch_value_from_hash(npm_data, RELEASE_TIME_KEY) || {}
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
- dist_tags = fetch_value_from_hash(npm_data, RELEASE_DIST_TAGS_KEY)
169
- latest_version = fetch_value_from_hash(dist_tags, RELEASE_DIST_TAGS_LATEST_KEY)
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: time_data[version] ? Time.parse(time_data[version]) : nil,
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.to_s == version,
183
- url: package_version_url(version),
184
- package_type: package_type,
185
- language: package_language(details),
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 do
197
- params(version_details: T::Hash[String, T.untyped])
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
- if node_requirement
209
- Dependabot::Package::PackageLanguage.new(
210
- name: RELEASE_LANGUAGE_KEY,
211
- version: nil,
212
- requirement: Requirement.new(node_requirement)
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 ||= fetch_value_from_hash(npm_details, RELEASE_DIST_TAGS_KEY)
197
+ @dist_tags ||= npm_details&.dist_tags
222
198
  end
223
199
 
224
- sig { returns(T.nilable(T::Hash[String, T.untyped])) }
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
- JSON.parse(npm_response.body)
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 = fetch_value_from_hash(registry_auth_headers, API_AUTHORIZATION_KEY)
231
+ auth = registry_auth_headers[API_AUTHORIZATION_KEY]
254
232
  return response unless auth
255
233
 
256
- return response unless auth&.start_with?(API_AUTHORIZATION_VALUE_BASIC_PREFIX)
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).void }
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
- result = JSON.parse(npm_response.body)
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.393.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.393.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.393.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: '0.22'
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: '0.22'
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.393.0
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