dependabot-cargo 0.311.0 → 0.312.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: f08d202894fce9b04e7de128f5866402562d011918711e693a668babf4daf19b
4
- data.tar.gz: 350bfab13e3d0727d5c7f6f68c405b16b9413e457478366f74857f02b1a21e19
3
+ metadata.gz: dc6005c288fca9a7265b60df2f5378c8da5112dbf921c546f28703545fa4a3a3
4
+ data.tar.gz: d8a0a9b18a4d817e51436b45078187fd1f2e19fa7ccad03af86d45d5484cc35e
5
5
  SHA512:
6
- metadata.gz: 3afff08137063cb43cf15ee5949862949aa029a19eea323d7c774c0b7d5c3762e9057cc4b5a9e2ff6591a70ad08c4264d2fca59ca12804a4d4af9902eceb2457
7
- data.tar.gz: e9126cd2757808192174503f8788287b1383ee461aa8fcb203c6a1ab3e2b718ec3f57e9c9628d321923c2324371edcbd20cc9726b4f3884a12455ab9e2ba4cb6
6
+ metadata.gz: 17e7aa764c53d1af95f4657b1b39a1dbf69a27926bfc0bab2cd8918dc372be6edbd56dd10caad3801503763ffbb41c9ab72a0642e88f509bc2b6711ed0ec72b6
7
+ data.tar.gz: 788d13ab539e7d1baca4c2b6f0f3a10b6d6756cffa9079d04f5539ab10786b9e3667b31b565c7ddddc15023408681c1b39cc03f664e9a884f625b01d7491254f
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "pathname"
@@ -17,17 +17,20 @@ module Dependabot
17
17
  extend T::Sig
18
18
  extend T::Helpers
19
19
 
20
+ sig { override.params(filenames: T::Array[String]).returns(T::Boolean) }
20
21
  def self.required_files_in?(filenames)
21
22
  filenames.include?("Cargo.toml")
22
23
  end
23
24
 
25
+ sig { override.returns(String) }
24
26
  def self.required_files_message
25
27
  "Repo must contain a Cargo.toml."
26
28
  end
27
29
 
30
+ sig { override.returns(T.nilable(T::Hash[Symbol, T.untyped])) }
28
31
  def ecosystem_versions
29
32
  channel = if rust_toolchain
30
- TomlRB.parse(rust_toolchain.content).fetch("toolchain", nil)&.fetch("channel", nil)
33
+ TomlRB.parse(T.must(rust_toolchain).content).fetch("toolchain", nil)&.fetch("channel", nil)
31
34
  else
32
35
  "default"
33
36
  end
@@ -39,7 +42,7 @@ module Dependabot
39
42
  }
40
43
  rescue TomlRB::ParseError
41
44
  raise Dependabot::DependencyFileNotParseable.new(
42
- rust_toolchain.path,
45
+ T.must(rust_toolchain).path,
43
46
  "only rust-toolchain files formatted as TOML are supported, the non-TOML format was deprecated by Rust"
44
47
  )
45
48
  end
@@ -48,15 +51,18 @@ module Dependabot
48
51
  def fetch_files
49
52
  fetched_files = T.let([], T::Array[DependencyFile])
50
53
  fetched_files << cargo_toml
51
- fetched_files << cargo_lock if cargo_lock
52
- fetched_files << cargo_config if cargo_config
53
- fetched_files << rust_toolchain if rust_toolchain
54
+ fetched_files << T.must(cargo_lock) if cargo_lock
55
+ fetched_files << T.must(cargo_config) if cargo_config
56
+ fetched_files << T.must(rust_toolchain) if rust_toolchain
54
57
  fetched_files += fetch_path_dependency_and_workspace_files
55
58
  fetched_files.uniq
56
59
  end
57
60
 
58
61
  private
59
62
 
63
+ sig do
64
+ params(files: T.nilable(T::Array[Dependabot::DependencyFile])).returns(T::Array[Dependabot::DependencyFile])
65
+ end
60
66
  def fetch_path_dependency_and_workspace_files(files = nil)
61
67
  fetched_files = files || [cargo_toml]
62
68
 
@@ -73,8 +79,9 @@ module Dependabot
73
79
  fetch_path_dependency_and_workspace_files(updated_files)
74
80
  end
75
81
 
82
+ sig { params(cargo_toml: Dependabot::DependencyFile).returns(T::Array[Dependabot::DependencyFile]) }
76
83
  def workspace_files(cargo_toml)
77
- @workspace_files ||= {}
84
+ @workspace_files ||= T.let({}, T.nilable(T::Hash[String, T::Array[Dependabot::DependencyFile]]))
78
85
  @workspace_files[cargo_toml.name] ||=
79
86
  fetch_workspace_files(
80
87
  file: cargo_toml,
@@ -82,8 +89,9 @@ module Dependabot
82
89
  )
83
90
  end
84
91
 
92
+ sig { params(fetched_files: T::Array[Dependabot::DependencyFile]).returns(T::Array[Dependabot::DependencyFile]) }
85
93
  def path_dependency_files(fetched_files)
86
- @path_dependency_files ||= {}
94
+ @path_dependency_files ||= T.let({}, T.nilable(T::Hash[String, T::Array[Dependabot::DependencyFile]]))
87
95
  fetched_path_dependency_files = T.let([], T::Array[Dependabot::DependencyFile])
88
96
  fetched_files.each do |file|
89
97
  @path_dependency_files[file.name] ||=
@@ -93,12 +101,19 @@ module Dependabot
93
101
  fetched_path_dependency_files
94
102
  )
95
103
 
96
- fetched_path_dependency_files += @path_dependency_files[file.name]
104
+ fetched_path_dependency_files += T.must(@path_dependency_files[file.name])
97
105
  end
98
106
 
99
107
  fetched_path_dependency_files
100
108
  end
101
109
 
110
+ sig do
111
+ params(
112
+ file: Dependabot::DependencyFile,
113
+ previously_fetched_files: T::Array[Dependabot::DependencyFile]
114
+ )
115
+ .returns(T::Array[Dependabot::DependencyFile])
116
+ end
102
117
  def fetch_workspace_files(file:, previously_fetched_files:)
103
118
  current_dir = file.name.rpartition("/").first
104
119
  current_dir = nil if current_dir == ""
@@ -125,6 +140,13 @@ module Dependabot
125
140
  end
126
141
 
127
142
  # rubocop:disable Metrics/PerceivedComplexity
143
+ sig do
144
+ params(
145
+ file: Dependabot::DependencyFile,
146
+ previously_fetched_files: T::Array[Dependabot::DependencyFile]
147
+ )
148
+ .returns(T::Array[Dependabot::DependencyFile])
149
+ end
128
150
  def fetch_path_dependency_files(file:, previously_fetched_files:)
129
151
  current_dir = file.name.rpartition("/").first
130
152
  current_dir = nil if current_dir == ""
@@ -165,6 +187,7 @@ module Dependabot
165
187
  unfetchable_required_path_deps
166
188
  end
167
189
 
190
+ sig { params(dependencies: T::Hash[T.untyped, T.untyped]).returns(T::Array[String]) }
168
191
  def collect_path_dependencies_paths(dependencies)
169
192
  paths = []
170
193
  dependencies.each do |_, details|
@@ -176,6 +199,7 @@ module Dependabot
176
199
  end
177
200
 
178
201
  # rubocop:enable Metrics/PerceivedComplexity
202
+ sig { params(file: Dependabot::DependencyFile).returns(T::Array[String]) }
179
203
  def path_dependency_paths_from_file(file)
180
204
  paths = T.let([], T::Array[String])
181
205
 
@@ -198,6 +222,7 @@ module Dependabot
198
222
  paths
199
223
  end
200
224
 
225
+ sig { params(file: Dependabot::DependencyFile).returns(T::Array[String]) }
201
226
  def replacement_path_dependency_paths_from_file(file)
202
227
  paths = []
203
228
 
@@ -226,6 +251,7 @@ module Dependabot
226
251
 
227
252
  # See if this Cargo manifest inherits any property from a workspace
228
253
  # (e.g. edition = { workspace = true }).
254
+ sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T::Boolean) }
229
255
  def workspace_member?(hash)
230
256
  hash.each do |key, value|
231
257
  if key == "workspace" && value == true
@@ -277,6 +303,7 @@ module Dependabot
277
303
  nil
278
304
  end
279
305
 
306
+ sig { params(file: Dependabot::DependencyFile).returns(T::Array[String]) }
280
307
  def workspace_dependency_paths_from_file(file)
281
308
  if parsed_file(file)["workspace"] &&
282
309
  !parsed_file(file)["workspace"].key?("members")
@@ -306,6 +333,7 @@ module Dependabot
306
333
  # rubocop:disable Metrics/CyclomaticComplexity
307
334
  # rubocop:disable Metrics/PerceivedComplexity
308
335
  # rubocop:disable Metrics/AbcSize
336
+ sig { params(file: Dependabot::DependencyFile, path: String).returns(T::Boolean) }
309
337
  def required_path?(file, path)
310
338
  # Paths specified in dependency declaration
311
339
  Cargo::FileParser::DEPENDENCY_TYPES.each do |type|
@@ -356,6 +384,7 @@ module Dependabot
356
384
  # rubocop:enable Metrics/PerceivedComplexity
357
385
  # rubocop:enable Metrics/CyclomaticComplexity
358
386
 
387
+ sig { params(path: String).returns(T::Array[String]) }
359
388
  def expand_workspaces(path)
360
389
  path = Pathname.new(path).cleanpath.to_path
361
390
  dir = directory.gsub(%r{(^/|/$)}, "")
@@ -367,31 +396,39 @@ module Dependabot
367
396
  .select { |filename| File.fnmatch?(path, filename) }
368
397
  end
369
398
 
399
+ sig { params(file: Dependabot::DependencyFile).returns(T::Hash[T.untyped, T.untyped]) }
370
400
  def parsed_file(file)
371
401
  TomlRB.parse(file.content)
372
402
  rescue TomlRB::ParseError, TomlRB::ValueOverwriteError
373
403
  raise Dependabot::DependencyFileNotParseable, file.path
374
404
  end
375
405
 
406
+ sig { returns(Dependabot::DependencyFile) }
376
407
  def cargo_toml
377
- @cargo_toml ||= fetch_file_from_host("Cargo.toml")
408
+ @cargo_toml ||= T.let(fetch_file_from_host("Cargo.toml"), T.nilable(Dependabot::DependencyFile))
378
409
  end
379
410
 
411
+ sig { returns(T.nilable(Dependabot::DependencyFile)) }
380
412
  def cargo_lock
381
- return @cargo_lock if defined?(@cargo_lock)
382
-
383
- @cargo_lock = fetch_file_if_present("Cargo.lock")
413
+ @cargo_lock ||= T.let(
414
+ fetch_file_if_present("Cargo.lock"),
415
+ T.nilable(Dependabot::DependencyFile)
416
+ )
384
417
  end
385
418
 
419
+ sig { returns(T.nilable(Dependabot::DependencyFile)) }
386
420
  def cargo_config
387
421
  return @cargo_config if defined?(@cargo_config)
388
422
 
389
423
  @cargo_config = fetch_support_file(".cargo/config.toml")
390
424
 
391
- @cargo_config ||= fetch_support_file(".cargo/config")
392
- &.tap { |f| f.name = ".cargo/config.toml" }
425
+ @cargo_config ||= T.let(
426
+ fetch_support_file(".cargo/config")&.tap { |f| f.name = ".cargo/config.toml" },
427
+ T.nilable(Dependabot::DependencyFile)
428
+ )
393
429
  end
394
430
 
431
+ sig { returns(T.nilable(Dependabot::DependencyFile)) }
395
432
  def rust_toolchain
396
433
  return @rust_toolchain if defined?(@rust_toolchain)
397
434
 
@@ -400,8 +437,10 @@ module Dependabot
400
437
  # Per https://rust-lang.github.io/rustup/overrides.html the file can
401
438
  # have a `.toml` extension, but the non-extension version is preferred.
402
439
  # Renaming here to simplify finding it later in the code.
403
- @rust_toolchain ||= fetch_support_file("rust-toolchain.toml")
404
- &.tap { |f| f.name = "rust-toolchain" }
440
+ @rust_toolchain ||= T.let(
441
+ fetch_support_file("rust-toolchain.toml")&.tap { |f| f.name = "rust-toolchain" },
442
+ T.nilable(Dependabot::DependencyFile)
443
+ )
405
444
  end
406
445
  end
407
446
  end
@@ -1,7 +1,9 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
+ require "sorbet-runtime"
4
5
  require "toml-rb"
6
+
5
7
  require "dependabot/git_commit_checker"
6
8
  require "dependabot/file_updaters"
7
9
  require "dependabot/file_updaters/base"
@@ -10,9 +12,12 @@ require "dependabot/shared_helpers"
10
12
  module Dependabot
11
13
  module Cargo
12
14
  class FileUpdater < Dependabot::FileUpdaters::Base
15
+ extend T::Sig
16
+
13
17
  require_relative "file_updater/manifest_updater"
14
18
  require_relative "file_updater/lockfile_updater"
15
19
 
20
+ sig { override.returns(T::Array[Regexp]) }
16
21
  def self.updated_files_regex
17
22
  [
18
23
  /Cargo\.toml$/, # Matches Cargo.toml in the root directory or any subdirectory
@@ -20,6 +25,7 @@ module Dependabot
20
25
  ]
21
26
  end
22
27
 
28
+ sig { override.returns(T::Array[Dependabot::DependencyFile]) }
23
29
  def updated_dependency_files
24
30
  # Returns an array of updated files. Only files that have been updated
25
31
  # should be returned.
@@ -35,9 +41,9 @@ module Dependabot
35
41
  )
36
42
  end
37
43
 
38
- if lockfile && updated_lockfile_content != lockfile.content
44
+ if lockfile && updated_lockfile_content != T.must(lockfile).content
39
45
  updated_files <<
40
- updated_file(file: lockfile, content: updated_lockfile_content)
46
+ updated_file(file: T.must(lockfile), content: updated_lockfile_content)
41
47
  end
42
48
 
43
49
  raise "No files changed!" if updated_files.empty?
@@ -47,10 +53,12 @@ module Dependabot
47
53
 
48
54
  private
49
55
 
56
+ sig { override.void }
50
57
  def check_required_files
51
58
  raise "No Cargo.toml!" unless get_original_file("Cargo.toml")
52
59
  end
53
60
 
61
+ sig { params(file: Dependabot::DependencyFile).returns(String) }
54
62
  def updated_manifest_content(file)
55
63
  ManifestUpdater.new(
56
64
  dependencies: dependencies,
@@ -58,24 +66,31 @@ module Dependabot
58
66
  ).updated_manifest_content
59
67
  end
60
68
 
69
+ sig { returns(String) }
61
70
  def updated_lockfile_content
62
- @updated_lockfile_content ||=
71
+ @updated_lockfile_content ||= T.let(
63
72
  LockfileUpdater.new(
64
73
  dependencies: dependencies,
65
74
  dependency_files: dependency_files,
66
75
  credentials: credentials
67
- ).updated_lockfile_content
76
+ ).updated_lockfile_content,
77
+ T.nilable(String)
78
+ )
68
79
  end
69
80
 
81
+ sig { returns(T::Array[Dependabot::DependencyFile]) }
70
82
  def manifest_files
71
- @manifest_files ||=
83
+ @manifest_files ||= T.let(
72
84
  dependency_files
73
85
  .select { |f| f.name.end_with?("Cargo.toml") }
74
- .reject(&:support_file?)
86
+ .reject(&:support_file?),
87
+ T.nilable(T::Array[Dependabot::DependencyFile])
88
+ )
75
89
  end
76
90
 
91
+ sig { returns(T.nilable(Dependabot::DependencyFile)) }
77
92
  def lockfile
78
- @lockfile ||= get_original_file("Cargo.lock")
93
+ @lockfile ||= T.let(get_original_file("Cargo.lock"), T.nilable(Dependabot::DependencyFile))
79
94
  end
80
95
  end
81
96
  end
@@ -1,41 +1,52 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
+ require "sorbet-runtime"
5
+
4
6
  require "dependabot/file_fetchers"
5
7
  require "dependabot/file_fetchers/base"
6
8
 
7
9
  module Dependabot
8
10
  module Cargo
9
11
  class RegistryFetcher < Dependabot::FileFetchers::Base
12
+ extend T::Sig
13
+
14
+ sig { override.params(filenames: T::Array[String]).returns(T::Boolean) }
10
15
  def self.required_files_in?(filenames)
11
16
  filenames.include?("config.json")
12
17
  end
13
18
 
19
+ sig { override.returns(String) }
14
20
  def self.required_files_message
15
21
  "Repo must contain a config.json"
16
22
  end
17
23
 
24
+ sig { returns(String) }
18
25
  def dl
19
- parsed_config_json["dl"].chomp("/")
26
+ T.must(parsed_config_json["dl"]).chomp("/")
20
27
  end
21
28
 
29
+ sig { returns(String) }
22
30
  def api
23
- parsed_config_json["api"].chomp("/")
31
+ T.must(parsed_config_json["api"]).chomp("/")
24
32
  end
25
33
 
26
34
  private
27
35
 
36
+ sig { override.returns(T::Array[Dependabot::DependencyFile]) }
28
37
  def fetch_files
29
38
  fetched_files = []
30
39
  fetched_files << config_json
31
40
  end
32
41
 
42
+ sig { returns(T::Hash[String, String]) }
33
43
  def parsed_config_json
34
- @parsed_config_json ||= JSON.parse(config_json.content)
44
+ @parsed_config_json ||= T.let(JSON.parse(T.must(config_json.content)), T.nilable(T::Hash[String, String]))
35
45
  end
36
46
 
47
+ sig { returns(Dependabot::DependencyFile) }
37
48
  def config_json
38
- @config_json ||= fetch_file_from_host("config.json")
49
+ @config_json ||= T.let(fetch_file_from_host("config.json"), T.nilable(Dependabot::DependencyFile))
39
50
  end
40
51
  end
41
52
  end
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  ################################################################################
@@ -21,11 +21,12 @@ module Dependabot
21
21
  quoted = OPS.keys.map { |k| Regexp.quote(k) }.join("|")
22
22
  version_pattern = Cargo::Version::VERSION_PATTERN
23
23
 
24
- PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{version_pattern})\\s*".freeze
24
+ PATTERN_RAW = T.let("\\s*(#{quoted})?\\s*(#{version_pattern})\\s*".freeze, String)
25
25
  PATTERN = /\A#{PATTERN_RAW}\z/
26
26
 
27
27
  # Use Cargo::Version rather than Gem::Version to ensure that
28
28
  # pre-release versions aren't transformed.
29
+ sig { override.params(obj: T.any(Gem::Version, String)).returns([String, Gem::Version]) }
29
30
  def self.parse(obj)
30
31
  return ["=", Cargo::Version.new(obj.to_s)] if obj.is_a?(Gem::Version)
31
32
 
@@ -47,9 +48,10 @@ module Dependabot
47
48
  [new(requirement_string)]
48
49
  end
49
50
 
51
+ sig { params(requirements: T.nilable(T.any(String, T::Array[String]))).void }
50
52
  def initialize(*requirements)
51
53
  requirements = requirements.flatten.flat_map do |req_string|
52
- req_string.split(",").map(&:strip).map do |r|
54
+ T.must(req_string).split(",").map(&:strip).map do |r|
53
55
  convert_rust_constraint_to_ruby_constraint(r.strip)
54
56
  end
55
57
  end
@@ -59,6 +61,7 @@ module Dependabot
59
61
 
60
62
  private
61
63
 
64
+ sig { params(req_string: String).returns(T.any(String, T::Array[String])) }
62
65
  def convert_rust_constraint_to_ruby_constraint(req_string)
63
66
  if req_string.include?("*")
64
67
  ruby_range(req_string.gsub(/(?:\.|^)[*]/, "").gsub(/^[^\d]/, ""))
@@ -70,6 +73,7 @@ module Dependabot
70
73
  end
71
74
  end
72
75
 
76
+ sig { params(req_string: String).returns(String) }
73
77
  def convert_tilde_req(req_string)
74
78
  version = req_string.gsub(/^~/, "")
75
79
  parts = version.split(".")
@@ -77,6 +81,7 @@ module Dependabot
77
81
  "~> #{parts.join('.')}"
78
82
  end
79
83
 
84
+ sig { params(req_string: String).returns(String) }
80
85
  def ruby_range(req_string)
81
86
  parts = req_string.split(".")
82
87
 
@@ -91,12 +96,13 @@ module Dependabot
91
96
  "~> #{parts.join('.')}"
92
97
  end
93
98
 
99
+ sig { params(req_string: String).returns(T::Array[String]) }
94
100
  def convert_caret_req(req_string)
95
101
  version = req_string.gsub(/^\^/, "")
96
102
  parts = version.split(".")
97
103
  first_non_zero = parts.find { |d| d != "0" }
98
104
  first_non_zero_index =
99
- first_non_zero ? parts.index(first_non_zero) : parts.count - 1
105
+ first_non_zero ? T.must(parts.index(first_non_zero)) : parts.count - 1
100
106
  upper_bound = parts.map.with_index do |part, i|
101
107
  if i < first_non_zero_index then part
102
108
  elsif i == first_non_zero_index then (part.to_i + 1).to_s
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-cargo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.311.0
4
+ version: 0.312.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-01 00:00:00.000000000 Z
10
+ date: 2025-05-09 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: dependabot-common
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.311.0
18
+ version: 0.312.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.311.0
25
+ version: 0.312.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 1.9.2
32
+ version: '1.9'
33
33
  type: :development
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 1.9.2
39
+ version: '1.9'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: gpgme
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '13'
60
+ version: '13.2'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '13'
67
+ version: '13.2'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: rspec
70
70
  requirement: !ruby/object:Gem::Requirement
@@ -99,98 +99,98 @@ dependencies:
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 1.9.2
102
+ version: '1.9'
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 1.9.2
109
+ version: '1.9'
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: rubocop
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: 1.67.0
116
+ version: '1.67'
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.67.0
123
+ version: '1.67'
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.22.1
130
+ version: '1.22'
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.22.1
137
+ version: '1.22'
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: 2.29.1
144
+ version: '2.29'
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: 2.29.1
151
+ version: '2.29'
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.8.7
158
+ version: '0.8'
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.8.7
165
+ version: '0.8'
166
166
  - !ruby/object:Gem::Dependency
167
167
  name: simplecov
168
168
  requirement: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: 0.22.0
172
+ version: '0.22'
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.0
179
+ version: '0.22'
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: turbo_tests
182
182
  requirement: !ruby/object:Gem::Requirement
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: 2.2.0
186
+ version: '2.2'
187
187
  type: :development
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
190
190
  requirements:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
- version: 2.2.0
193
+ version: '2.2'
194
194
  - !ruby/object:Gem::Dependency
195
195
  name: vcr
196
196
  requirement: !ruby/object:Gem::Requirement
@@ -265,7 +265,7 @@ licenses:
265
265
  - MIT
266
266
  metadata:
267
267
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
268
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.311.0
268
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.312.0
269
269
  rdoc_options: []
270
270
  require_paths:
271
271
  - lib