nxt_schema 0.1.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/Gemfile +0 -1
  4. data/Gemfile.lock +32 -29
  5. data/README.md +186 -116
  6. data/lib/nxt_schema.rb +56 -49
  7. data/lib/nxt_schema/{node.rb → application.rb} +1 -1
  8. data/lib/nxt_schema/application/any_of.rb +40 -0
  9. data/lib/nxt_schema/application/base.rb +116 -0
  10. data/lib/nxt_schema/application/collection.rb +57 -0
  11. data/lib/nxt_schema/application/error_store.rb +57 -0
  12. data/lib/nxt_schema/application/errors/schema_error.rb +15 -0
  13. data/lib/nxt_schema/application/errors/validation_error.rb +15 -0
  14. data/lib/nxt_schema/application/leaf.rb +15 -0
  15. data/lib/nxt_schema/application/schema.rb +114 -0
  16. data/lib/nxt_schema/callable.rb +21 -55
  17. data/lib/nxt_schema/dsl.rb +41 -31
  18. data/lib/nxt_schema/error.rb +4 -0
  19. data/lib/nxt_schema/errors/invalid.rb +16 -0
  20. data/lib/nxt_schema/errors/{error.rb → invalid_options.rb} +1 -2
  21. data/lib/nxt_schema/missing_input.rb +9 -0
  22. data/lib/nxt_schema/node/any_of.rb +51 -0
  23. data/lib/nxt_schema/node/base.rb +135 -233
  24. data/lib/nxt_schema/node/collection.rb +10 -65
  25. data/lib/nxt_schema/node/has_sub_nodes.rb +81 -0
  26. data/lib/nxt_schema/node/leaf.rb +1 -31
  27. data/lib/nxt_schema/node/maybe_evaluator.rb +15 -10
  28. data/lib/nxt_schema/node/on_evaluator.rb +25 -0
  29. data/lib/nxt_schema/node/schema.rb +8 -134
  30. data/lib/nxt_schema/node/sub_nodes.rb +22 -0
  31. data/lib/nxt_schema/node/type_system_resolver.rb +22 -0
  32. data/lib/nxt_schema/types.rb +1 -1
  33. data/lib/nxt_schema/validators/attribute.rb +3 -3
  34. data/lib/nxt_schema/validators/{equality.rb → equal_to.rb} +5 -5
  35. data/lib/nxt_schema/validators/error_messages.rb +42 -0
  36. data/lib/nxt_schema/{error_messages → validators/error_messages}/en.yaml +3 -3
  37. data/lib/nxt_schema/validators/{excluded.rb → excluded_in.rb} +4 -4
  38. data/lib/nxt_schema/validators/excludes.rb +3 -3
  39. data/lib/nxt_schema/validators/greater_than.rb +3 -3
  40. data/lib/nxt_schema/validators/greater_than_or_equal.rb +3 -3
  41. data/lib/nxt_schema/validators/{included.rb → included_in.rb} +4 -4
  42. data/lib/nxt_schema/validators/includes.rb +3 -3
  43. data/lib/nxt_schema/validators/less_than.rb +3 -3
  44. data/lib/nxt_schema/validators/less_than_or_equal.rb +3 -3
  45. data/lib/nxt_schema/validators/optional_node.rb +13 -8
  46. data/lib/nxt_schema/validators/pattern.rb +3 -3
  47. data/lib/nxt_schema/validators/query.rb +4 -4
  48. data/lib/nxt_schema/validators/registry.rb +1 -7
  49. data/lib/nxt_schema/{node → validators}/validate_with_proxy.rb +8 -8
  50. data/lib/nxt_schema/validators/validator.rb +2 -2
  51. data/lib/nxt_schema/version.rb +1 -1
  52. data/nxt_schema.gemspec +1 -0
  53. metadata +42 -22
  54. data/lib/nxt_schema/callable_or_value.rb +0 -72
  55. data/lib/nxt_schema/error_messages.rb +0 -40
  56. data/lib/nxt_schema/errors.rb +0 -4
  57. data/lib/nxt_schema/errors/invalid_options_error.rb +0 -5
  58. data/lib/nxt_schema/errors/schema_not_applied_error.rb +0 -5
  59. data/lib/nxt_schema/node/constructor.rb +0 -9
  60. data/lib/nxt_schema/node/default_value_evaluator.rb +0 -20
  61. data/lib/nxt_schema/node/error.rb +0 -13
  62. data/lib/nxt_schema/node/has_subnodes.rb +0 -97
  63. data/lib/nxt_schema/node/template_store.rb +0 -15
  64. data/lib/nxt_schema/registry.rb +0 -85
  65. data/lib/nxt_schema/undefined.rb +0 -7
@@ -0,0 +1,22 @@
1
+ module NxtSchema
2
+ module Node
3
+ class TypeSystemResolver
4
+ include NxtInit
5
+ attr_init :node
6
+
7
+ delegate_missing_to :node
8
+
9
+ def call
10
+ type_system = options.fetch(:type_system) { parent_node&.type_system }
11
+
12
+ if type_system.is_a?(Module)
13
+ type_system
14
+ elsif type_system.is_a?(Symbol) || type_system.is_a?(String)
15
+ "NxtSchema::Types::#{type_system.to_s.classify}".constantize
16
+ else
17
+ NxtSchema::Types
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -3,7 +3,7 @@ module NxtSchema
3
3
  include Dry.Types()
4
4
 
5
5
  StrippedString = Strict::String.constructor(->(string) { string&.strip })
6
- StrippedNonBlankString = StrippedString.constrained(min_size: 1)
6
+ LengthyStrippedString = StrippedString.constrained(min_size: 1)
7
7
  Enums = -> (*values) { Strict::String.enum(*values) } # Use as NxtSchema::Types::Enums[*ROLES]
8
8
  SymbolizedEnums = -> (*values) { Coercible::Symbol.enum(*values) } # Use as NxtSchema::Types::SymboleEnums[*ROLES]
9
9
  end
@@ -12,15 +12,15 @@ module NxtSchema
12
12
  # Query any attribute on a value with validator(:attribute, :size, ->(s) { s < 7 })
13
13
 
14
14
  def build
15
- lambda do |node, value|
15
+ lambda do |application, value|
16
16
  raise ArgumentError, "#{value} does not respond to query: #{method}" unless value.respond_to?(method)
17
17
 
18
18
  if expectation.call(value.send(method))
19
19
  true
20
20
  else
21
- node.add_error(
21
+ application.add_error(
22
22
  translate_error(
23
- node.locale,
23
+ application.locale,
24
24
  attribute: value,
25
25
  attribute_name: method,
26
26
  value: value.send(method)
@@ -5,22 +5,22 @@ module NxtSchema
5
5
  @expectation = expectation
6
6
  end
7
7
 
8
- register_as :equality, :eql
8
+ register_as :equal_to, :eql
9
9
  attr_reader :expectation
10
10
 
11
11
  # Query for equality validator(:equality, 3)
12
12
  # Query for equality validator(:eql, -> { 3 * 3 * 60 })
13
13
 
14
14
  def build
15
- lambda do |node, value|
16
- expected_value = expectation.respond_to?(:call) ? Callable.new(expectation).call(node, value) : expectation
15
+ lambda do |application, value|
16
+ expected_value = Callable.new(expectation, nil, value).call
17
17
 
18
18
  if value == expected_value
19
19
  true
20
20
  else
21
- node.add_error(
21
+ application.add_error(
22
22
  translate_error(
23
- node.locale,
23
+ application.locale,
24
24
  actual: value,
25
25
  expected: expected_value
26
26
  )
@@ -0,0 +1,42 @@
1
+ module NxtSchema
2
+ module Validators
3
+ class ErrorMessages
4
+ class << self
5
+ def values
6
+ @values ||= {}
7
+ end
8
+
9
+ def values=(value)
10
+ @values = value
11
+ end
12
+
13
+ def load(paths = files)
14
+ Array(paths).each do |path|
15
+ new_values = YAML.load(ERB.new(File.read(path)).result).with_indifferent_access
16
+ self.values = values.deep_merge!(new_values)
17
+ end
18
+ end
19
+
20
+ def resolve(locale, key, **options)
21
+ message = begin
22
+ values.fetch(locale).fetch(key)
23
+ rescue KeyError
24
+ raise "Could not resolve error message for #{locale}->#{key}"
25
+ end
26
+
27
+ message % options
28
+ end
29
+
30
+ def files
31
+ @files ||= begin
32
+ files = Dir.entries(File.expand_path('../error_messages/', __FILE__)).map do |filename|
33
+ File.expand_path("../error_messages/#{filename}", __FILE__)
34
+ end
35
+
36
+ files.select { |f| !File.directory? f }
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -2,11 +2,11 @@ en:
2
2
  required_key_missing: "Required key :%{key} is missing"
3
3
  additional_keys_detected: "Additional keys %{keys} not allowed"
4
4
  attribute: "%{attribute} has invalid %{attribute_name} attribute of %{value}"
5
- equality: "%{actual} does not equal %{expected}"
5
+ equal_to: "%{actual} does not equal %{expected}"
6
6
  excludes: "%{value} cannot contain %{target}"
7
7
  includes: "%{value} must include %{target}"
8
- excluded: "%{value} must be excluded in %{target}"
9
- included: "%{value} must be included in %{target}"
8
+ excluded_in: "%{value} must be excluded in %{target}"
9
+ included_in: "%{value} must be included in %{target}"
10
10
  greater_than: "%{value} must be greater than %{threshold}"
11
11
  greater_than_or_equal: "%{value} must be greater than or equal to %{threshold}"
12
12
  less_than: "%{value} must be less than %{threshold}"
@@ -5,16 +5,16 @@ module NxtSchema
5
5
  @target = target
6
6
  end
7
7
 
8
- register_as :excluded
8
+ register_as :excluded_in
9
9
  attr_reader :target
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if target.exclude?(value)
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, target: target, value: value)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, target: target, value: value)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -9,12 +9,12 @@ module NxtSchema
9
9
  attr_reader :target
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if value.exclude?(target)
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, target: target, value: value)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, target: target, value: value)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -9,12 +9,12 @@ module NxtSchema
9
9
  attr_reader :threshold
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if value > threshold
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, value: value, threshold: threshold)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, value: value, threshold: threshold)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -9,12 +9,12 @@ module NxtSchema
9
9
  attr_reader :threshold
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if value >= threshold
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, value: value, threshold: threshold)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, value: value, threshold: threshold)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -5,16 +5,16 @@ module NxtSchema
5
5
  @target = target
6
6
  end
7
7
 
8
- register_as :included
8
+ register_as :included_in
9
9
  attr_reader :target
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if target.include?(value)
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, value: value, target: target)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, value: value, target: target)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -9,12 +9,12 @@ module NxtSchema
9
9
  attr_reader :target
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if value.include?(target)
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, value: value, target: target)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, value: value, target: target)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -9,12 +9,12 @@ module NxtSchema
9
9
  attr_reader :threshold
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if value < threshold
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, value: value, threshold: threshold)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, value: value, threshold: threshold)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -9,12 +9,12 @@ module NxtSchema
9
9
  attr_reader :threshold
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if value <= threshold
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, value: value, threshold: threshold)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, value: value, threshold: threshold)
17
+ application.add_error(message)
18
18
  end
19
19
  end
20
20
  end
@@ -10,15 +10,20 @@ module NxtSchema
10
10
  attr_reader :conditional, :missing_key
11
11
 
12
12
  def build
13
- lambda do |node, value|
14
- args = [node, value]
13
+ lambda do |application, value|
14
+ args = [application, value]
15
15
 
16
- if conditional.call(*args.take(conditional.arity))
17
- true
18
- else
19
- message = ErrorMessages.resolve(node.locale, :required_key_missing, key: missing_key, target: node.value)
20
- node.add_error(message)
21
- end
16
+ return if conditional.call(*args.take(conditional.arity))
17
+ return if application.send(:keys).include?(missing_key.to_sym)
18
+
19
+ message = ErrorMessages.resolve(
20
+ application.locale,
21
+ :required_key_missing,
22
+ key: missing_key,
23
+ target: application.input
24
+ )
25
+
26
+ application.add_error(message)
22
27
  end
23
28
  end
24
29
  end
@@ -9,12 +9,12 @@ module NxtSchema
9
9
  attr_reader :pattern
10
10
 
11
11
  def build
12
- lambda do |node, value|
12
+ lambda do |application, value|
13
13
  if value.match(pattern)
14
14
  true
15
15
  else
16
- message = translate_error(node.locale, value: value, pattern: pattern)
17
- node.add_error(message)
16
+ message = translate_error(application.locale, value: value, pattern: pattern)
17
+ application.add_error(message)
18
18
  false
19
19
  end
20
20
  end
@@ -8,18 +8,18 @@ module NxtSchema
8
8
  register_as :query
9
9
  attr_reader :method
10
10
 
11
- # Query a boolean method on you value => node(:test, :String).validate(:query, :good_enough?)
11
+ # Query a boolean method on you value => application(:test, :String).validate(:query, :good_enough?)
12
12
  # => Would be valid if value.good_enough? is truthy
13
13
 
14
14
  def build
15
- lambda do |node, value|
15
+ lambda do |application, value|
16
16
  raise ArgumentError, "#{value} does not respond to query: #{method}" unless value.respond_to?(method)
17
17
 
18
18
  if value.send(method)
19
19
  true
20
20
  else
21
- message = translate_error(node.locale, value: value, actual: value.send(method), query: method)
22
- node.add_error(message)
21
+ message = translate_error(application.locale, value: value, actual: value.send(method), query: method)
22
+ application.add_error(message)
23
23
  end
24
24
  end
25
25
  end
@@ -1,11 +1,5 @@
1
1
  module NxtSchema
2
2
  module Validators
3
- class Registry
4
- extend NxtRegistry
5
-
6
- VALIDATORS = registry :validators, call: false do
7
-
8
- end
9
- end
3
+ REGISTRY = NxtRegistry::Registry.new(call: false)
10
4
  end
11
5
  end
@@ -1,14 +1,14 @@
1
1
  module NxtSchema
2
- module Node
2
+ module Validator
3
3
  class ValidateWithProxy
4
- def initialize(node)
5
- @node = node
4
+ def initialize(application)
5
+ @application = application
6
6
  @aggregated_errors = []
7
7
  end
8
8
 
9
- attr_reader :node
9
+ attr_reader :application
10
10
 
11
- delegate_missing_to :node
11
+ delegate_missing_to :application
12
12
 
13
13
  def validate(&block)
14
14
  result = instance_exec(&block)
@@ -24,7 +24,7 @@ module NxtSchema
24
24
 
25
25
  def copy_aggregated_errors_to_node
26
26
  aggregated_errors.each do |error|
27
- node.add_error(error)
27
+ application.add_error(error)
28
28
  end
29
29
  end
30
30
 
@@ -33,8 +33,8 @@ module NxtSchema
33
33
  attr_reader :aggregated_errors
34
34
 
35
35
  def validator(key, *args)
36
- validator = node.validator(key, *args)
37
- validator.call(self, node.value)
36
+ validator = application.node.send(:validator, key, *args)
37
+ validator.call(self, application.input)
38
38
  end
39
39
  end
40
40
  end
@@ -3,14 +3,14 @@ module NxtSchema
3
3
  class Validator
4
4
  def self.register_as(*keys)
5
5
  keys.each do |key|
6
- NxtSchema::Validators::Registry::VALIDATORS.register(key, self)
6
+ NxtSchema::Validators::REGISTRY.register(key, self)
7
7
  end
8
8
 
9
9
  define_method('key') { @key ||= keys.first }
10
10
  end
11
11
 
12
12
  def translate_error(locale, **options)
13
- NxtSchema::ErrorMessages.resolve(locale, key, **options)
13
+ NxtSchema::Validators::ErrorMessages.resolve(locale, key, **options)
14
14
  end
15
15
  end
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module NxtSchema
2
- VERSION = "0.1.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -38,6 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.add_dependency "activesupport"
39
39
  spec.add_dependency "dry-types"
40
40
  spec.add_dependency "nxt_registry"
41
+ spec.add_dependency "nxt_init"
41
42
  spec.add_development_dependency "bundler", "~> 1.17"
42
43
  spec.add_development_dependency "rake", "~> 12.3.3"
43
44
  spec.add_development_dependency "rspec", "~> 3.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nxt_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Robecke
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-04 00:00:00.000000000 Z
11
+ date: 2020-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nxt_init
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -131,6 +145,7 @@ extra_rdoc_files: []
131
145
  files:
132
146
  - ".gitignore"
133
147
  - ".rspec"
148
+ - ".ruby-version"
134
149
  - ".travis.yml"
135
150
  - Gemfile
136
151
  - Gemfile.lock
@@ -140,38 +155,42 @@ files:
140
155
  - bin/console
141
156
  - bin/setup
142
157
  - lib/nxt_schema.rb
158
+ - lib/nxt_schema/application.rb
159
+ - lib/nxt_schema/application/any_of.rb
160
+ - lib/nxt_schema/application/base.rb
161
+ - lib/nxt_schema/application/collection.rb
162
+ - lib/nxt_schema/application/error_store.rb
163
+ - lib/nxt_schema/application/errors/schema_error.rb
164
+ - lib/nxt_schema/application/errors/validation_error.rb
165
+ - lib/nxt_schema/application/leaf.rb
166
+ - lib/nxt_schema/application/schema.rb
143
167
  - lib/nxt_schema/callable.rb
144
- - lib/nxt_schema/callable_or_value.rb
145
168
  - lib/nxt_schema/dsl.rb
146
- - lib/nxt_schema/error_messages.rb
147
- - lib/nxt_schema/error_messages/en.yaml
148
- - lib/nxt_schema/errors.rb
149
- - lib/nxt_schema/errors/error.rb
150
- - lib/nxt_schema/errors/invalid_options_error.rb
151
- - lib/nxt_schema/errors/schema_not_applied_error.rb
152
- - lib/nxt_schema/node.rb
169
+ - lib/nxt_schema/error.rb
170
+ - lib/nxt_schema/errors/invalid.rb
171
+ - lib/nxt_schema/errors/invalid_options.rb
172
+ - lib/nxt_schema/missing_input.rb
173
+ - lib/nxt_schema/node/any_of.rb
153
174
  - lib/nxt_schema/node/base.rb
154
175
  - lib/nxt_schema/node/collection.rb
155
- - lib/nxt_schema/node/constructor.rb
156
- - lib/nxt_schema/node/default_value_evaluator.rb
157
- - lib/nxt_schema/node/error.rb
158
- - lib/nxt_schema/node/has_subnodes.rb
176
+ - lib/nxt_schema/node/has_sub_nodes.rb
159
177
  - lib/nxt_schema/node/leaf.rb
160
178
  - lib/nxt_schema/node/maybe_evaluator.rb
179
+ - lib/nxt_schema/node/on_evaluator.rb
161
180
  - lib/nxt_schema/node/schema.rb
162
- - lib/nxt_schema/node/template_store.rb
181
+ - lib/nxt_schema/node/sub_nodes.rb
163
182
  - lib/nxt_schema/node/type_resolver.rb
164
- - lib/nxt_schema/node/validate_with_proxy.rb
165
- - lib/nxt_schema/registry.rb
183
+ - lib/nxt_schema/node/type_system_resolver.rb
166
184
  - lib/nxt_schema/types.rb
167
- - lib/nxt_schema/undefined.rb
168
185
  - lib/nxt_schema/validators/attribute.rb
169
- - lib/nxt_schema/validators/equality.rb
170
- - lib/nxt_schema/validators/excluded.rb
186
+ - lib/nxt_schema/validators/equal_to.rb
187
+ - lib/nxt_schema/validators/error_messages.rb
188
+ - lib/nxt_schema/validators/error_messages/en.yaml
189
+ - lib/nxt_schema/validators/excluded_in.rb
171
190
  - lib/nxt_schema/validators/excludes.rb
172
191
  - lib/nxt_schema/validators/greater_than.rb
173
192
  - lib/nxt_schema/validators/greater_than_or_equal.rb
174
- - lib/nxt_schema/validators/included.rb
193
+ - lib/nxt_schema/validators/included_in.rb
175
194
  - lib/nxt_schema/validators/includes.rb
176
195
  - lib/nxt_schema/validators/less_than.rb
177
196
  - lib/nxt_schema/validators/less_than_or_equal.rb
@@ -179,6 +198,7 @@ files:
179
198
  - lib/nxt_schema/validators/pattern.rb
180
199
  - lib/nxt_schema/validators/query.rb
181
200
  - lib/nxt_schema/validators/registry.rb
201
+ - lib/nxt_schema/validators/validate_with_proxy.rb
182
202
  - lib/nxt_schema/validators/validator.rb
183
203
  - lib/nxt_schema/version.rb
184
204
  - nxt_schema.gemspec
@@ -204,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
224
  - !ruby/object:Gem::Version
205
225
  version: '0'
206
226
  requirements: []
207
- rubygems_version: 3.0.3
227
+ rubygems_version: 3.1.2
208
228
  signing_key:
209
229
  specification_version: 4
210
230
  summary: Write a short summary, because RubyGems requires one.