committee 5.0.0 → 5.2.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: 284c8c1198255435e959dcee2b92cb25c3d80dd5fe6d4622b8077a69525712ed
4
- data.tar.gz: b306ec0ad5e628d9cc7b6382781c4b710c99bedb127a7000edadf9d0e0b8fa84
3
+ metadata.gz: 95c313e8694c8ad00b4f0ed75ac173f177cb62c3cc18494a946df9b9066abbaa
4
+ data.tar.gz: 7080a9ec40c56d2d47fde358217068ac3dcc907528ac359e2a94089f9b9f068e
5
5
  SHA512:
6
- metadata.gz: 687d9a47d2a17786313bde939339d464a8d775795458b09ad7d7784bfa337f848a9ffabe240e9f39173c4466589c026f64a8eede768e7abfff4b01b2672339f5
7
- data.tar.gz: 4ee7781341de9ebafae28d01d98c0f72d54067c425f3ee10b221c4eb88da85e79b36853bbda4818b20348177f8d975103cc5be694ff7e8252a6634a856853b7c
6
+ metadata.gz: 4530289393371c110c67564e277dbfdaab9f6a83aff9cc3e8c625ee83a6fabb3fb4c1c0abd3e93d83577a8204143672ccab998e50aabccbc866cb619c43f698c
7
+ data.tar.gz: 91feff9fb8ee526fe0715ce12e570fe53782750ad823a44a31f549d738c0ce9d65421a1323568992e43dd16a4e202130fbd3f020ac836eab5a19a0626a59d5d0
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'digest'
4
+
3
5
  module Committee
4
6
  module Drivers
5
7
  # Gets a driver instance from the specified name. Raises ArgumentError for
@@ -36,13 +38,16 @@ module Committee
36
38
  # @param [String] schema_path
37
39
  # @return [Committee::Driver]
38
40
  def self.load_from_file(schema_path, parser_options: {})
39
- case File.extname(schema_path)
40
- when '.json'
41
- load_from_json(schema_path, parser_options: parser_options)
42
- when '.yaml', '.yml'
43
- load_from_yaml(schema_path, parser_options: parser_options)
44
- else
45
- raise "Committee only supports the following file extensions: '.json', '.yaml', '.yml'"
41
+ @__load_from_file_cache ||= {}
42
+ @__load_from_file_cache[cache_key(schema_path, parser_options)] ||= begin
43
+ case File.extname(schema_path)
44
+ when '.json'
45
+ load_from_json(schema_path, parser_options: parser_options)
46
+ when '.yaml', '.yml'
47
+ load_from_yaml(schema_path, parser_options: parser_options)
48
+ else
49
+ raise "Committee only supports the following file extensions: '.json', '.yaml', '.yml'"
50
+ end
46
51
  end
47
52
  end
48
53
 
@@ -65,6 +70,12 @@ module Committee
65
70
  return Committee::Drivers::OpenAPI3::Driver.new.parse(openapi)
66
71
  end
67
72
 
73
+ if (version = hash['openapi'])
74
+ if Gem::Version.new(version) >= Gem::Version.new("3.1")
75
+ raise OpenAPI3Unsupported.new('Committee does not support OpenAPI 3.1+ yet')
76
+ end
77
+ end
78
+
68
79
  driver = if hash['swagger'] == '2.0'
69
80
  Committee::Drivers::OpenAPI2::Driver.new
70
81
  else
@@ -74,6 +85,17 @@ module Committee
74
85
  # TODO: in the future, pass `opts` here and allow optionality in other drivers?
75
86
  driver.parse(hash)
76
87
  end
88
+
89
+ class << self
90
+ private
91
+
92
+ def cache_key(schema_path, parser_options)
93
+ [
94
+ File.exist?(schema_path) ? Digest::MD5.hexdigest(File.read(schema_path)) : nil,
95
+ parser_options.hash,
96
+ ].join('_')
97
+ end
98
+ end
77
99
  end
78
100
  end
79
101
 
@@ -6,7 +6,7 @@ module Committee
6
6
  def initialize(app, options={})
7
7
  super
8
8
 
9
- @strict = options[:strict]
9
+ @strict = options[:strict]
10
10
  end
11
11
 
12
12
  def handle(request)
@@ -87,7 +87,7 @@ module Committee
87
87
 
88
88
  request.env[validator_option.headers_key] = unpacker.unpack_headers(request)
89
89
 
90
- request_param, is_form_params = unpacker.unpack_request_params(request)
90
+ request_param, _is_form_params = unpacker.unpack_request_params(request)
91
91
  request.env[validator_option.request_body_hash_key] = request_param
92
92
  request.env[validator_option.path_hash_key] = coerce_path_params
93
93
 
@@ -29,30 +29,30 @@ module Committee
29
29
 
30
30
  def initialize(options, schema, schema_type)
31
31
  # Non-boolean options
32
- @headers_key = options[:headers_key] || "committee.headers"
33
- @params_key = options[:params_key] || "committee.params"
34
- @query_hash_key = options[:query_hash_key] || "committee.query_hash"
35
- @path_hash_key = options[:path_hash_key] || "committee.path_hash"
32
+ @headers_key = options[:headers_key] || "committee.headers"
33
+ @params_key = options[:params_key] || "committee.params"
34
+ @query_hash_key = options[:query_hash_key] || "committee.query_hash"
35
+ @path_hash_key = options[:path_hash_key] || "committee.path_hash"
36
36
  @request_body_hash_key = options[:request_body_hash_key] || "committee.request_body_hash"
37
37
 
38
- @prefix = options[:prefix]
38
+ @prefix = options[:prefix]
39
39
 
40
40
  # Boolean options and have a common value by default
41
- @allow_form_params = options.fetch(:allow_form_params, true)
42
- @allow_query_params = options.fetch(:allow_query_params, true)
43
- @check_content_type = options.fetch(:check_content_type, true)
44
- @check_header = options.fetch(:check_header, true)
45
- @coerce_recursive = options.fetch(:coerce_recursive, true)
46
- @optimistic_json = options.fetch(:optimistic_json, false)
47
- @parse_response_by_content_type = options.fetch(:parse_response_by_content_type, true)
41
+ @allow_form_params = options.fetch(:allow_form_params, true)
42
+ @allow_query_params = options.fetch(:allow_query_params, true)
43
+ @check_content_type = options.fetch(:check_content_type, true)
44
+ @check_header = options.fetch(:check_header, true)
45
+ @coerce_recursive = options.fetch(:coerce_recursive, true)
46
+ @optimistic_json = options.fetch(:optimistic_json, false)
47
+ @parse_response_by_content_type = options.fetch(:parse_response_by_content_type, true)
48
48
  @parameter_overwite_by_rails_rule = options.fetch(:parameter_overwite_by_rails_rule, true)
49
49
 
50
50
  # Boolean options and have a different value by default
51
- @allow_get_body = options.fetch(:allow_get_body, schema.driver.default_allow_get_body)
52
- @coerce_date_times = options.fetch(:coerce_date_times, schema.driver.default_coerce_date_times)
53
- @coerce_form_params = options.fetch(:coerce_form_params, schema.driver.default_coerce_form_params)
54
- @coerce_path_params = options.fetch(:coerce_path_params, schema.driver.default_path_params)
55
- @coerce_query_params = options.fetch(:coerce_query_params, schema.driver.default_query_params)
51
+ @allow_get_body = options.fetch(:allow_get_body, schema.driver.default_allow_get_body)
52
+ @coerce_date_times = options.fetch(:coerce_date_times, schema.driver.default_coerce_date_times)
53
+ @coerce_form_params = options.fetch(:coerce_form_params, schema.driver.default_coerce_form_params)
54
+ @coerce_path_params = options.fetch(:coerce_path_params, schema.driver.default_path_params)
55
+ @coerce_query_params = options.fetch(:coerce_query_params, schema.driver.default_query_params)
56
56
  @validate_success_only = options.fetch(:validate_success_only, schema.driver.default_validate_success_only)
57
57
  end
58
58
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Committee
4
- VERSION = '5.0.0'.freeze
4
+ VERSION = '5.2.0'.freeze
5
5
  end
data/lib/committee.rb CHANGED
@@ -22,7 +22,7 @@ module Committee
22
22
  end
23
23
 
24
24
  def self.warn_deprecated_until_6(cond, message)
25
- raise "remove deprecated!" unless Committee::VERSION.start_with?("5")
25
+ raise "remove deprecated!" unless Committee::VERSION.start_with?("5")
26
26
  warn("[DEPRECATION] #{message}") if cond
27
27
  end
28
28
  end
@@ -44,8 +44,6 @@ describe Committee::Bin::CommitteeStub, "app" do
44
44
 
45
45
  def app
46
46
  options = {}
47
- # TODO: delete when 5.0.0 released because default value changed
48
- options[:parse_response_by_content_type] = false
49
47
 
50
48
  @bin.get_app(hyper_schema, options)
51
49
  end
@@ -19,13 +19,15 @@ describe Committee do
19
19
  old_stderr = $stderr
20
20
  $stderr = StringIO.new
21
21
  begin
22
- stub(Committee).debug? { false }
23
- Committee.log_debug "blah"
24
- assert_equal "", $stderr.string
22
+ Committee.stub(:debug?, false) do
23
+ Committee.log_debug "blah"
24
+ assert_equal "", $stderr.string
25
+ end
25
26
 
26
- stub(Committee).debug? { true }
27
- Committee.log_debug "blah"
28
- assert_equal "blah\n", $stderr.string
27
+ Committee.stub(:debug?, true) do
28
+ Committee.log_debug "blah"
29
+ assert_equal "blah\n", $stderr.string
30
+ end
29
31
  ensure
30
32
  $stderr = old_stderr
31
33
  end
data/test/drivers_test.rb CHANGED
@@ -48,6 +48,13 @@ describe Committee::Drivers do
48
48
  assert_kind_of Committee::Drivers::OpenAPI3::Schema, s
49
49
  end
50
50
 
51
+ it 'fails to load OpenAPI 3.1+' do
52
+ e = assert_raises(Committee::OpenAPI3Unsupported) do
53
+ Committee::Drivers.load_from_file(open_api_3_1_schema_path, parser_options:{strict_reference_validation: true})
54
+ end
55
+ assert_equal 'Committee does not support OpenAPI 3.1+ yet', e.message
56
+ end
57
+
51
58
  it 'fails to load OpenAPI 3 with invalid reference' do
52
59
  parser_options = { strict_reference_validation: true }
53
60
  assert_raises(OpenAPIParser::MissingReferenceError) do
@@ -67,6 +74,35 @@ describe Committee::Drivers do
67
74
  end
68
75
  assert_equal "Committee only supports the following file extensions: '.json', '.yaml', '.yml'", e.message
69
76
  end
77
+
78
+ describe 'cache behavior' do
79
+ describe 'when loading the same file' do
80
+ it 'returns the same object when the options are identical' do
81
+ assert_equal(
82
+ Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
83
+ Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
84
+ )
85
+ end
86
+
87
+ it 'returns different objects if the options are different' do
88
+ refute_equal(
89
+ Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
90
+ Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: false}).object_id,
91
+ )
92
+ end
93
+
94
+ it 'returns different objects if the file contents have changed' do
95
+ object_id = Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id
96
+ original_file_contents = File.read(open_api_3_schema_path)
97
+ File.write(open_api_3_schema_path, original_file_contents + "\n")
98
+ refute_equal(
99
+ Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
100
+ object_id,
101
+ )
102
+ File.write(open_api_3_schema_path, original_file_contents)
103
+ end
104
+ end
105
+ end
70
106
  end
71
107
 
72
108
  describe 'load_from_json(schema_path)' do
@@ -109,6 +145,13 @@ describe Committee::Drivers do
109
145
  assert_kind_of Committee::Drivers::Schema, s
110
146
  assert_kind_of Committee::Drivers::HyperSchema::Schema, s
111
147
  end
148
+
149
+ it 'fails to load OpenAPI 3.1+' do
150
+ e = assert_raises(Committee::OpenAPI3Unsupported) do
151
+ Committee::Drivers.load_from_data(open_api_3_1_data)
152
+ end
153
+ assert_equal 'Committee does not support OpenAPI 3.1+ yet', e.message
154
+ end
112
155
  end
113
156
  end
114
157
 
@@ -117,9 +117,6 @@ describe Committee::Middleware::Base do
117
117
  private
118
118
 
119
119
  def new_rack_app(options = {})
120
- # TODO: delete when 5.0.0 released because default value changed
121
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
122
-
123
120
  Rack::Builder.new {
124
121
  use Committee::Middleware::RequestValidation, options
125
122
  run lambda { |_|
@@ -615,9 +615,6 @@ describe Committee::Middleware::RequestValidation do
615
615
  end
616
616
 
617
617
  def new_rack_app_with_lambda(check_lambda, options = {})
618
- # TODO: delete when 5.0.0 released because default value changed
619
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
620
-
621
618
  Rack::Builder.new {
622
619
  use Committee::Middleware::RequestValidation, options
623
620
  run check_lambda
@@ -505,9 +505,6 @@ describe Committee::Middleware::RequestValidation do
505
505
 
506
506
 
507
507
  def new_rack_app_with_lambda(check_lambda, options = {})
508
- # TODO: delete when 5.0.0 released because default value changed
509
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
510
-
511
508
  Rack::Builder.new {
512
509
  use Committee::Middleware::RequestValidation, options
513
510
  run check_lambda
@@ -273,9 +273,6 @@ describe Committee::Middleware::ResponseValidation do
273
273
  private
274
274
 
275
275
  def new_response_rack(response, headers = {}, options = {}, rack_options = {})
276
- # TODO: delete when 5.0.0 released because default value changed
277
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
278
-
279
276
  status = rack_options[:status] || 200
280
277
  content_type = rack_options[:content_type] || "application/json"
281
278
  headers = {
@@ -15,14 +15,6 @@ describe Committee::Middleware::ResponseValidation do
15
15
  assert_equal 200, last_response.status
16
16
  end
17
17
 
18
- # TODO: remove 5.0.0
19
- it "passes through a valid response" do
20
- # will show deprecated message
21
- @app = new_rack_app(JSON.generate([ValidApp]), {}, schema: hyper_schema, strict: true)
22
- get "/apps"
23
- assert_equal 200, last_response.status
24
- end
25
-
26
18
  it "doesn't call error_handler (has a arg) when response is valid" do
27
19
  called = false
28
20
  pr = ->(_e) { called = true }
@@ -173,9 +165,6 @@ describe Committee::Middleware::ResponseValidation do
173
165
  private
174
166
 
175
167
  def new_rack_app(response, headers = {}, options = {})
176
- # TODO: delete when 5.0.0 released because default value changed
177
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
178
-
179
168
  headers = {
180
169
  "Content-Type" => "application/json"
181
170
  }.merge(headers)
@@ -113,9 +113,6 @@ describe Committee::Middleware::Stub do
113
113
  response = options.delete(:response)
114
114
  suppress = options.delete(:suppress)
115
115
 
116
- # TODO: delete when 5.0.0 released because default value changed
117
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
118
-
119
116
  Rack::Builder.new {
120
117
  use Committee::Middleware::Stub, options
121
118
  run lambda { |env|
@@ -69,8 +69,6 @@ describe Committee::SchemaValidator::HyperSchema::Router do
69
69
  end
70
70
 
71
71
  def hyper_schema_router(options = {})
72
- # TODO: delete when 5.0.0 released because default value changed
73
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
74
72
  schema = Committee::Drivers::HyperSchema::Driver.new.parse(hyper_schema_data)
75
73
  validator_option = Committee::SchemaValidator::Option.new(options, schema, :hyper_schema)
76
74
 
@@ -78,8 +76,6 @@ describe Committee::SchemaValidator::HyperSchema::Router do
78
76
  end
79
77
 
80
78
  def open_api_2_router(options = {})
81
- # TODO: delete when 5.0.0 released because default value changed
82
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
83
79
  schema = Committee::Drivers::OpenAPI2::Driver.new.parse(open_api_2_data)
84
80
  validator_option = Committee::SchemaValidator::Option.new(options, schema, :hyper_schema)
85
81
 
@@ -9,12 +9,7 @@ describe Committee::SchemaValidator::OpenAPI3::OperationWrapper do
9
9
  before do
10
10
  @path = '/validate'
11
11
  @method = 'post'
12
-
13
- # TODO: delete when 5.0.0 released because default value changed
14
- options = {}
15
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
16
-
17
- @validator_option = Committee::SchemaValidator::Option.new(options, open_api_3_schema, :open_api_3)
12
+ @validator_option = Committee::SchemaValidator::Option.new({}, open_api_3_schema, :open_api_3)
18
13
  end
19
14
 
20
15
  def operation_object
@@ -96,9 +96,6 @@ describe Committee::SchemaValidator::OpenAPI3::RequestValidator do
96
96
  end
97
97
 
98
98
  def new_rack_app(options = {})
99
- # TODO: delete when 5.0.0 released because default value changed
100
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
101
-
102
99
  Rack::Builder.new {
103
100
  use Committee::Middleware::RequestValidation, options
104
101
  run lambda { |_|
@@ -13,11 +13,7 @@ describe Committee::SchemaValidator::OpenAPI3::ResponseValidator do
13
13
  @path = '/validate'
14
14
  @method = 'post'
15
15
 
16
- # TODO: delete when 5.0.0 released because default value changed
17
- options = {}
18
- options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
19
-
20
- @validator_option = Committee::SchemaValidator::Option.new(options, open_api_3_schema, :open_api_3)
16
+ @validator_option = Committee::SchemaValidator::Option.new({}, open_api_3_schema, :open_api_3)
21
17
  end
22
18
 
23
19
  it "passes through a valid response" do
@@ -30,9 +30,6 @@ describe Committee::Test::Methods do
30
30
  @committee_schema = nil
31
31
 
32
32
  @committee_options = {schema: hyper_schema}
33
-
34
- # TODO: delete when 5.0.0 released because default value changed
35
- @committee_options[:parse_response_by_content_type] = false
36
33
  end
37
34
 
38
35
  describe "#assert_schema_conform" do
@@ -29,9 +29,6 @@ describe Committee::Test::Methods do
29
29
  @committee_router = nil
30
30
  @committee_schema = nil
31
31
  @committee_options = {}
32
-
33
- # TODO: delete when 5.0.0 released because default value changed
34
- @committee_options[:parse_response_by_content_type] = true
35
32
  end
36
33
 
37
34
  describe "Hyper-Schema" do
data/test/test_helper.rb CHANGED
@@ -21,7 +21,6 @@ require "minitest"
21
21
  require "minitest/spec"
22
22
  require "minitest/autorun"
23
23
  require "rack/test"
24
- require "rr"
25
24
  require "pry"
26
25
  require "stringio"
27
26
 
@@ -91,6 +90,14 @@ def open_api_3_data
91
90
  end
92
91
  end
93
92
 
93
+ def open_api_3_1_data
94
+ if YAML.respond_to?(:unsafe_load_file)
95
+ YAML.unsafe_load_file(open_api_3_1_schema_path)
96
+ else
97
+ YAML.load_file(open_api_3_1_schema_path)
98
+ end
99
+ end
100
+
94
101
  def hyper_schema_schema_path
95
102
  "./test/data/hyperschema/paas.json"
96
103
  end
@@ -115,6 +122,10 @@ def open_api_3_0_1_schema_path
115
122
  "./test/data/openapi3/3_0_1.yaml"
116
123
  end
117
124
 
125
+ def open_api_3_1_schema_path
126
+ "./test/data/openapi3/3_1.yaml"
127
+ end
128
+
118
129
  def open_api_3_invalid_reference_path
119
130
  "./test/data/openapi3/invalid_reference.yaml"
120
131
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: committee
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-01-28 00:00:00.000000000 Z
13
+ date: 2024-05-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json_schema
@@ -52,14 +52,14 @@ dependencies:
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '1.0'
55
+ version: '2.0'
56
56
  type: :runtime
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '1.0'
62
+ version: '2.0'
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: minitest
65
65
  requirement: !ruby/object:Gem::Requirement
@@ -94,28 +94,14 @@ dependencies:
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '12.3'
97
+ version: '13.1'
98
98
  type: :development
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '12.3'
105
- - !ruby/object:Gem::Dependency
106
- name: rr
107
- requirement: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.1'
112
- type: :development
113
- prerelease: false
114
- version_requirements: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '1.1'
104
+ version: '13.1'
119
105
  - !ruby/object:Gem::Dependency
120
106
  name: pry
121
107
  requirement: !ruby/object:Gem::Requirement
@@ -146,20 +132,6 @@ dependencies:
146
132
  version: '0'
147
133
  - !ruby/object:Gem::Dependency
148
134
  name: rubocop
149
- requirement: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "<"
152
- - !ruby/object:Gem::Version
153
- version: 1.13.0
154
- type: :development
155
- prerelease: false
156
- version_requirements: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - "<"
159
- - !ruby/object:Gem::Version
160
- version: 1.13.0
161
- - !ruby/object:Gem::Dependency
162
- name: rubocop-performance
163
135
  requirement: !ruby/object:Gem::Requirement
164
136
  requirements:
165
137
  - - ">="
@@ -173,21 +145,7 @@ dependencies:
173
145
  - !ruby/object:Gem::Version
174
146
  version: '0'
175
147
  - !ruby/object:Gem::Dependency
176
- name: rubocop-minitest
177
- requirement: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
182
- type: :development
183
- prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- version: '0'
189
- - !ruby/object:Gem::Dependency
190
- name: rubocop-rake
148
+ name: rubocop-performance
191
149
  requirement: !ruby/object:Gem::Requirement
192
150
  requirements:
193
151
  - - ">="
@@ -314,14 +272,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
314
272
  requirements:
315
273
  - - ">="
316
274
  - !ruby/object:Gem::Version
317
- version: 2.6.0
275
+ version: 2.7.0
318
276
  required_rubygems_version: !ruby/object:Gem::Requirement
319
277
  requirements:
320
278
  - - ">="
321
279
  - !ruby/object:Gem::Version
322
280
  version: '0'
323
281
  requirements: []
324
- rubygems_version: 3.3.3
282
+ rubygems_version: 3.4.20
325
283
  signing_key:
326
284
  specification_version: 4
327
285
  summary: A collection of Rack middleware to support JSON Schema.