dry-types 1.0.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +10 -0
  3. data/.github/ISSUE_TEMPLATE/---bug-report.md +34 -0
  4. data/.github/ISSUE_TEMPLATE/---feature-request.md +18 -0
  5. data/.travis.yml +10 -4
  6. data/CHANGELOG.md +101 -3
  7. data/Gemfile +9 -6
  8. data/README.md +2 -2
  9. data/Rakefile +2 -2
  10. data/benchmarks/hash_schemas.rb +8 -6
  11. data/benchmarks/lax_schema.rb +0 -1
  12. data/benchmarks/profile_invalid_input.rb +1 -1
  13. data/benchmarks/profile_lax_schema_valid.rb +1 -1
  14. data/benchmarks/profile_valid_input.rb +1 -1
  15. data/docsite/source/array-with-member.html.md +13 -0
  16. data/docsite/source/built-in-types.html.md +116 -0
  17. data/docsite/source/constraints.html.md +31 -0
  18. data/docsite/source/custom-types.html.md +93 -0
  19. data/docsite/source/default-values.html.md +91 -0
  20. data/docsite/source/enum.html.md +69 -0
  21. data/docsite/source/getting-started.html.md +57 -0
  22. data/docsite/source/hash-schemas.html.md +169 -0
  23. data/docsite/source/index.html.md +155 -0
  24. data/docsite/source/map.html.md +17 -0
  25. data/docsite/source/optional-values.html.md +96 -0
  26. data/docsite/source/sum.html.md +21 -0
  27. data/dry-types.gemspec +19 -19
  28. data/lib/dry/types.rb +9 -4
  29. data/lib/dry/types/array.rb +6 -0
  30. data/lib/dry/types/array/constructor.rb +32 -0
  31. data/lib/dry/types/array/member.rb +8 -1
  32. data/lib/dry/types/builder.rb +1 -1
  33. data/lib/dry/types/builder_methods.rb +33 -23
  34. data/lib/dry/types/coercions.rb +19 -6
  35. data/lib/dry/types/coercions/params.rb +4 -4
  36. data/lib/dry/types/constrained.rb +5 -0
  37. data/lib/dry/types/constructor.rb +5 -37
  38. data/lib/dry/types/constructor/function.rb +4 -5
  39. data/lib/dry/types/core.rb +27 -8
  40. data/lib/dry/types/decorator.rb +1 -1
  41. data/lib/dry/types/enum.rb +1 -0
  42. data/lib/dry/types/extensions.rb +4 -0
  43. data/lib/dry/types/extensions/maybe.rb +9 -1
  44. data/lib/dry/types/extensions/monads.rb +29 -0
  45. data/lib/dry/types/hash.rb +10 -11
  46. data/lib/dry/types/hash/constructor.rb +5 -5
  47. data/lib/dry/types/json.rb +4 -0
  48. data/lib/dry/types/lax.rb +4 -4
  49. data/lib/dry/types/map.rb +8 -4
  50. data/lib/dry/types/module.rb +3 -3
  51. data/lib/dry/types/nominal.rb +3 -4
  52. data/lib/dry/types/params.rb +9 -0
  53. data/lib/dry/types/predicate_inferrer.rb +197 -0
  54. data/lib/dry/types/predicate_registry.rb +34 -0
  55. data/lib/dry/types/primitive_inferrer.rb +97 -0
  56. data/lib/dry/types/printer.rb +17 -12
  57. data/lib/dry/types/schema.rb +14 -20
  58. data/lib/dry/types/schema/key.rb +19 -1
  59. data/lib/dry/types/spec/types.rb +3 -6
  60. data/lib/dry/types/version.rb +1 -1
  61. metadata +79 -52
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dry/core/cache'
4
+
5
+ module Dry
6
+ module Types
7
+ # PrimitiveInferrer returns the list of classes matching a type.
8
+ #
9
+ # @api public
10
+ class PrimitiveInferrer
11
+ extend Core::Cache
12
+
13
+ # Compiler reduces type AST into a list of primitives
14
+ #
15
+ # @api private
16
+ class Compiler
17
+ # @api private
18
+ def visit(node)
19
+ meth, rest = node
20
+ public_send(:"visit_#{meth}", rest)
21
+ end
22
+
23
+ # @api private
24
+ def visit_nominal(node)
25
+ type, _ = node
26
+ type
27
+ end
28
+
29
+ # @api private
30
+ def visit_hash(_)
31
+ ::Hash
32
+ end
33
+ alias_method :visit_schema, :visit_hash
34
+
35
+ # @api private
36
+ def visit_array(_)
37
+ ::Array
38
+ end
39
+
40
+ # @api private
41
+ def visit_lax(node)
42
+ visit(node)
43
+ end
44
+
45
+ # @api private
46
+ def visit_constructor(node)
47
+ other, * = node
48
+ visit(other)
49
+ end
50
+
51
+ # @api private
52
+ def visit_enum(node)
53
+ other, * = node
54
+ visit(other)
55
+ end
56
+
57
+ # @api private
58
+ def visit_sum(node)
59
+ left, right = node
60
+
61
+ [visit(left), visit(right)].flatten(1)
62
+ end
63
+
64
+ # @api private
65
+ def visit_constrained(node)
66
+ other, * = node
67
+ visit(other)
68
+ end
69
+
70
+ # @api private
71
+ def visit_any(_)
72
+ ::Object
73
+ end
74
+ end
75
+
76
+ # @return [Compiler]
77
+ # @api private
78
+ attr_reader :compiler
79
+
80
+ # @api private
81
+ def initialize
82
+ @compiler = Compiler.new
83
+ end
84
+
85
+ # Infer primitives from the provided type
86
+ #
87
+ # @return [Array[Class]]
88
+ #
89
+ # @api private
90
+ def [](type)
91
+ self.class.fetch_or_store(type) do
92
+ Array(compiler.visit(type.to_ast)).freeze
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -8,6 +8,7 @@ module Dry
8
8
  Nominal => :visit_nominal,
9
9
  Constructor => :visit_constructor,
10
10
  Hash::Constructor => :visit_constructor,
11
+ Array::Constructor => :visit_constructor,
11
12
  Constrained => :visit_constrained,
12
13
  Constrained::Coercible => :visit_constrained,
13
14
  Hash => :visit_hash,
@@ -26,7 +27,7 @@ module Dry
26
27
  }
27
28
 
28
29
  def call(type)
29
- output = "".dup
30
+ output = ''.dup
30
31
  visit(type) { |str| output << str }
31
32
  "#<Dry::Types[#{output}]>"
32
33
  end
@@ -43,16 +44,20 @@ module Dry
43
44
  end
44
45
 
45
46
  def visit_any(_)
46
- yield "Any"
47
+ yield 'Any'
47
48
  end
48
49
 
49
- def visit_array(_)
50
- yield "Array"
50
+ def visit_array(type)
51
+ visit_options(EMPTY_HASH, type.meta) do |opts|
52
+ yield "Array#{opts}"
53
+ end
51
54
  end
52
55
 
53
56
  def visit_array_member(array)
54
57
  visit(array.member) do |type|
55
- yield "Array<#{type}>"
58
+ visit_options(EMPTY_HASH, array.meta) do |opts|
59
+ yield "Array<#{type}#{opts}>"
60
+ end
56
61
  end
57
62
  end
58
63
 
@@ -74,7 +79,7 @@ module Dry
74
79
  options = constrained.options.dup
75
80
  rule = options.delete(:rule)
76
81
 
77
- visit_options(options) do |opts|
82
+ visit_options(options) do |_opts|
78
83
  yield "Constrained<#{type} rule=[#{rule}]>"
79
84
  end
80
85
  end
@@ -110,7 +115,7 @@ module Dry
110
115
  header = "Schema<#{schema_parameters}keys={"
111
116
 
112
117
  if size.zero?
113
- yield "#{ header}}>"
118
+ yield "#{header}}>"
114
119
  else
115
120
  yield header.dup << keys.map { |key|
116
121
  visit(key) { |type| type }
@@ -126,7 +131,7 @@ module Dry
126
131
  options.delete(:key_type)
127
132
  options.delete(:value_type)
128
133
 
129
- visit_options(options) do |opts|
134
+ visit_options(options) do |_opts|
130
135
  yield "Map<#{key} => #{value}>"
131
136
  end
132
137
  end
@@ -193,7 +198,7 @@ module Dry
193
198
  yield "Enum<#{type} values={#{values}}#{opts}>"
194
199
  else
195
200
  mapping_str = mapping.map { |key, value|
196
- "#{ key.inspect }=>#{value.inspect}"
201
+ "#{key.inspect}=>#{value.inspect}"
197
202
  }.join(', ')
198
203
  yield "Enum<#{type} mapping={#{mapping_str}}#{opts}>"
199
204
  end
@@ -251,14 +256,14 @@ module Dry
251
256
 
252
257
  case fn
253
258
  when Method
254
- yield "#{ fn.receiver }.#{ fn.name }"
259
+ yield "#{fn.receiver}.#{fn.name}"
255
260
  when Proc
256
261
  path, line = fn.source_location
257
262
 
258
- if line && line.zero?
263
+ if line&.zero?
259
264
  yield ".#{path}"
260
265
  elsif path
261
- yield "#{path.sub(Dir.pwd + '/', EMPTY_STRING) }:#{line}"
266
+ yield "#{path.sub(Dir.pwd + '/', EMPTY_STRING)}:#{line}"
262
267
  elsif fn.lambda?
263
268
  yield '(lambda)'
264
269
  else
@@ -156,8 +156,8 @@ module Dry
156
156
  [
157
157
  :schema,
158
158
  [keys.map { |key| key.to_ast(meta: meta) },
159
- opts,
160
- meta ? self.meta : EMPTY_HASH]
159
+ opts,
160
+ meta ? self.meta : EMPTY_HASH]
161
161
  ]
162
162
  end
163
163
 
@@ -190,9 +190,7 @@ module Dry
190
190
  def with_key_transform(proc = nil, &block)
191
191
  fn = proc || block
192
192
 
193
- if fn.nil?
194
- raise ArgumentError, "a block or callable argument is required"
195
- end
193
+ raise ArgumentError, 'a block or callable argument is required' if fn.nil?
196
194
 
197
195
  handle = Dry::Types::FnContainer.register(fn)
198
196
  with(key_transform_fn: handle)
@@ -203,7 +201,7 @@ module Dry
203
201
  # @return [Boolean]
204
202
  #
205
203
  # @api public
206
- def trasform_keys?
204
+ def transform_keys?
207
205
  !options[:key_transform_fn].nil?
208
206
  end
209
207
 
@@ -294,10 +292,10 @@ module Dry
294
292
  #
295
293
  # @api private
296
294
  def merge_keys(*keys)
297
- keys.
298
- flatten(1).
299
- each_with_object({}) { |key, merged| merged[key.name] = key }.
300
- values
295
+ keys
296
+ .flatten(1)
297
+ .each_with_object({}) { |key, merged| merged[key.name] = key }
298
+ .values
301
299
  end
302
300
 
303
301
  # Validate and coerce a hash. Raise an exception on any error
@@ -315,19 +313,17 @@ module Dry
315
313
  if type
316
314
  begin
317
315
  result[k] = type.call_unsafe(value)
318
- rescue ConstraintError => error
319
- raise SchemaError.new(type.name, value, error.result)
320
- rescue CoercionError => error
321
- raise SchemaError.new(type.name, value, error.message)
316
+ rescue ConstraintError => e
317
+ raise SchemaError.new(type.name, value, e.result)
318
+ rescue CoercionError => e
319
+ raise SchemaError.new(type.name, value, e.message)
322
320
  end
323
321
  elsif strict?
324
322
  raise unexpected_keys(hash.keys)
325
323
  end
326
324
  end
327
325
 
328
- if result.size < keys.size
329
- resolve_missing_keys(result, options)
330
- end
326
+ resolve_missing_keys(result, options) if result.size < keys.size
331
327
 
332
328
  result
333
329
  end
@@ -351,9 +347,7 @@ module Dry
351
347
  end
352
348
  end
353
349
 
354
- if result.size < keys.size
355
- resolve_missing_keys(result, options, &block)
356
- end
350
+ resolve_missing_keys(result, options, &block) if result.size < keys.size
357
351
 
358
352
  result
359
353
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'dry/equalizer'
4
+ require 'dry/core/deprecations'
4
5
 
5
6
  module Dry
6
7
  module Types
@@ -14,6 +15,7 @@ module Dry
14
15
  #
15
16
  # @see Dry::Types::Schema
16
17
  class Key
18
+ extend ::Dry::Core::Deprecations[:'dry-types']
17
19
  include Type
18
20
  include Dry::Equalizer(:name, :type, :options, inspect: false)
19
21
  include Decorator
@@ -94,7 +96,7 @@ module Dry
94
96
  #
95
97
  # @api public
96
98
  def lax
97
- super.required(false)
99
+ __new__(type.lax).required(false)
98
100
  end
99
101
 
100
102
  # Dump to internal AST representation
@@ -113,6 +115,22 @@ module Dry
113
115
  ]
114
116
  end
115
117
 
118
+ # @see Dry::Types::Meta#meta
119
+ #
120
+ # @api public
121
+ def meta(data = nil)
122
+ if data.nil? || !data.key?(:omittable)
123
+ super
124
+ else
125
+ self.class.warn(
126
+ 'Using meta for making schema keys is deprecated, ' \
127
+ 'please use .omittable or .required(false) instead' \
128
+ "\n" + Core::Deprecations::STACK.()
129
+ )
130
+ super.required(!data[:omittable])
131
+ end
132
+ end
133
+
116
134
  private
117
135
 
118
136
  # @api private
@@ -2,7 +2,7 @@
2
2
 
3
3
  RSpec.shared_examples_for 'Dry::Types::Nominal without primitive' do
4
4
  def be_boolean
5
- satisfy { |x| x == true || x == false }
5
+ satisfy { |x| x == true || x == false }
6
6
  end
7
7
 
8
8
  describe '#constrained?' do
@@ -43,9 +43,7 @@ RSpec.shared_examples_for 'Dry::Types::Nominal without primitive' do
43
43
 
44
44
  describe '#to_s' do
45
45
  it 'returns a custom string representation' do
46
- if type.class.name.start_with?('Dry::Types')
47
- expect(type.to_s).to start_with('#<Dry::Types')
48
- end
46
+ expect(type.to_s).to start_with('#<Dry::Types') if type.class.name.start_with?('Dry::Types')
49
47
  end
50
48
  end
51
49
 
@@ -81,7 +79,7 @@ RSpec.shared_examples_for 'Dry::Types::Nominal#meta' do
81
79
  expect(type.meta).not_to have_key :immutable_test
82
80
  derived = type.meta(immutable_test: 1)
83
81
  expect(derived.meta).to be_frozen
84
- expect(derived.meta).to eql({immutable_test: 1})
82
+ expect(derived.meta).to eql(immutable_test: 1)
85
83
  expect(type.meta).not_to have_key :immutable_test
86
84
  end
87
85
  end
@@ -139,4 +137,3 @@ RSpec.shared_examples_for 'a nominal type' do |inputs: Object.new|
139
137
  end
140
138
  end
141
139
  end
142
-
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Types
5
- VERSION = '1.0.1'
5
+ VERSION = '1.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,182 +1,188 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-types
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-04 00:00:00.000000000 Z
11
+ date: 2019-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: concurrent-ruby
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
18
  version: '1.0'
20
- type: :runtime
19
+ name: concurrent-ruby
21
20
  prerelease: false
21
+ type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-core
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '0.4'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.4.4
37
- type: :runtime
32
+ version: '0.3'
33
+ name: dry-container
38
34
  prerelease: false
35
+ type: :runtime
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '0.4'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.4.4
40
+ version: '0.3'
47
41
  - !ruby/object:Gem::Dependency
48
- name: dry-inflector
49
42
  requirement: !ruby/object:Gem::Requirement
50
43
  requirements:
51
44
  - - "~>"
52
45
  - !ruby/object:Gem::Version
53
- version: '0.1'
46
+ version: '0.4'
54
47
  - - ">="
55
48
  - !ruby/object:Gem::Version
56
- version: 0.1.2
57
- type: :runtime
49
+ version: 0.4.4
50
+ name: dry-core
58
51
  prerelease: false
52
+ type: :runtime
59
53
  version_requirements: !ruby/object:Gem::Requirement
60
54
  requirements:
61
55
  - - "~>"
62
56
  - !ruby/object:Gem::Version
63
- version: '0.1'
57
+ version: '0.4'
64
58
  - - ">="
65
59
  - !ruby/object:Gem::Version
66
- version: 0.1.2
60
+ version: 0.4.4
67
61
  - !ruby/object:Gem::Dependency
68
- name: dry-container
69
62
  requirement: !ruby/object:Gem::Requirement
70
63
  requirements:
71
64
  - - "~>"
72
65
  - !ruby/object:Gem::Version
73
- version: '0.3'
74
- type: :runtime
66
+ version: '0.2'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.2.2
70
+ name: dry-equalizer
75
71
  prerelease: false
72
+ type: :runtime
76
73
  version_requirements: !ruby/object:Gem::Requirement
77
74
  requirements:
78
75
  - - "~>"
79
76
  - !ruby/object:Gem::Version
80
- version: '0.3'
77
+ version: '0.2'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 0.2.2
81
81
  - !ruby/object:Gem::Dependency
82
- name: dry-equalizer
83
82
  requirement: !ruby/object:Gem::Requirement
84
83
  requirements:
85
84
  - - "~>"
86
85
  - !ruby/object:Gem::Version
87
- version: '0.2'
86
+ version: '0.1'
88
87
  - - ">="
89
88
  - !ruby/object:Gem::Version
90
- version: 0.2.2
91
- type: :runtime
89
+ version: 0.1.2
90
+ name: dry-inflector
92
91
  prerelease: false
92
+ type: :runtime
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0.2'
97
+ version: '0.1'
98
98
  - - ">="
99
99
  - !ruby/object:Gem::Version
100
- version: 0.2.2
100
+ version: 0.1.2
101
101
  - !ruby/object:Gem::Dependency
102
- name: dry-logic
103
102
  requirement: !ruby/object:Gem::Requirement
104
103
  requirements:
105
104
  - - "~>"
106
105
  - !ruby/object:Gem::Version
107
106
  version: '1.0'
108
- type: :runtime
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.2
110
+ name: dry-logic
109
111
  prerelease: false
112
+ type: :runtime
110
113
  version_requirements: !ruby/object:Gem::Requirement
111
114
  requirements:
112
115
  - - "~>"
113
116
  - !ruby/object:Gem::Version
114
117
  version: '1.0'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 1.0.2
115
121
  - !ruby/object:Gem::Dependency
116
- name: bundler
117
122
  requirement: !ruby/object:Gem::Requirement
118
123
  requirements:
119
124
  - - ">="
120
125
  - !ruby/object:Gem::Version
121
126
  version: '0'
122
- type: :development
127
+ name: bundler
123
128
  prerelease: false
129
+ type: :development
124
130
  version_requirements: !ruby/object:Gem::Requirement
125
131
  requirements:
126
132
  - - ">="
127
133
  - !ruby/object:Gem::Version
128
134
  version: '0'
129
135
  - !ruby/object:Gem::Dependency
130
- name: rake
131
136
  requirement: !ruby/object:Gem::Requirement
132
137
  requirements:
133
138
  - - "~>"
134
139
  - !ruby/object:Gem::Version
135
- version: '11.0'
136
- type: :development
140
+ version: '0.2'
141
+ name: dry-monads
137
142
  prerelease: false
143
+ type: :development
138
144
  version_requirements: !ruby/object:Gem::Requirement
139
145
  requirements:
140
146
  - - "~>"
141
147
  - !ruby/object:Gem::Version
142
- version: '11.0'
148
+ version: '0.2'
143
149
  - !ruby/object:Gem::Dependency
144
- name: rspec
145
150
  requirement: !ruby/object:Gem::Requirement
146
151
  requirements:
147
152
  - - "~>"
148
153
  - !ruby/object:Gem::Version
149
- version: '3.3'
150
- type: :development
154
+ version: '11.0'
155
+ name: rake
151
156
  prerelease: false
157
+ type: :development
152
158
  version_requirements: !ruby/object:Gem::Requirement
153
159
  requirements:
154
160
  - - "~>"
155
161
  - !ruby/object:Gem::Version
156
- version: '3.3'
162
+ version: '11.0'
157
163
  - !ruby/object:Gem::Dependency
158
- name: dry-monads
159
164
  requirement: !ruby/object:Gem::Requirement
160
165
  requirements:
161
166
  - - "~>"
162
167
  - !ruby/object:Gem::Version
163
- version: '0.2'
164
- type: :development
168
+ version: '3.3'
169
+ name: rspec
165
170
  prerelease: false
171
+ type: :development
166
172
  version_requirements: !ruby/object:Gem::Requirement
167
173
  requirements:
168
174
  - - "~>"
169
175
  - !ruby/object:Gem::Version
170
- version: '0.2'
176
+ version: '3.3'
171
177
  - !ruby/object:Gem::Dependency
172
- name: yard
173
178
  requirement: !ruby/object:Gem::Requirement
174
179
  requirements:
175
180
  - - "~>"
176
181
  - !ruby/object:Gem::Version
177
182
  version: 0.9.5
178
- type: :development
183
+ name: yard
179
184
  prerelease: false
185
+ type: :development
180
186
  version_requirements: !ruby/object:Gem::Requirement
181
187
  requirements:
182
188
  - - "~>"
@@ -191,6 +197,9 @@ extensions: []
191
197
  extra_rdoc_files: []
192
198
  files:
193
199
  - ".codeclimate.yml"
200
+ - ".github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md"
201
+ - ".github/ISSUE_TEMPLATE/---bug-report.md"
202
+ - ".github/ISSUE_TEMPLATE/---feature-request.md"
194
203
  - ".gitignore"
195
204
  - ".rspec"
196
205
  - ".rubocop.yml"
@@ -209,11 +218,24 @@ files:
209
218
  - benchmarks/profile_valid_input.rb
210
219
  - benchmarks/schema_valid_vs_invalid.rb
211
220
  - benchmarks/setup.rb
221
+ - docsite/source/array-with-member.html.md
222
+ - docsite/source/built-in-types.html.md
223
+ - docsite/source/constraints.html.md
224
+ - docsite/source/custom-types.html.md
225
+ - docsite/source/default-values.html.md
226
+ - docsite/source/enum.html.md
227
+ - docsite/source/getting-started.html.md
228
+ - docsite/source/hash-schemas.html.md
229
+ - docsite/source/index.html.md
230
+ - docsite/source/map.html.md
231
+ - docsite/source/optional-values.html.md
232
+ - docsite/source/sum.html.md
212
233
  - dry-types.gemspec
213
234
  - lib/dry-types.rb
214
235
  - lib/dry/types.rb
215
236
  - lib/dry/types/any.rb
216
237
  - lib/dry/types/array.rb
238
+ - lib/dry/types/array/constructor.rb
217
239
  - lib/dry/types/array/member.rb
218
240
  - lib/dry/types/builder.rb
219
241
  - lib/dry/types/builder_methods.rb
@@ -235,6 +257,7 @@ files:
235
257
  - lib/dry/types/errors.rb
236
258
  - lib/dry/types/extensions.rb
237
259
  - lib/dry/types/extensions/maybe.rb
260
+ - lib/dry/types/extensions/monads.rb
238
261
  - lib/dry/types/fn_container.rb
239
262
  - lib/dry/types/hash.rb
240
263
  - lib/dry/types/hash/constructor.rb
@@ -247,6 +270,9 @@ files:
247
270
  - lib/dry/types/nominal.rb
248
271
  - lib/dry/types/options.rb
249
272
  - lib/dry/types/params.rb
273
+ - lib/dry/types/predicate_inferrer.rb
274
+ - lib/dry/types/predicate_registry.rb
275
+ - lib/dry/types/primitive_inferrer.rb
250
276
  - lib/dry/types/printable.rb
251
277
  - lib/dry/types/printer.rb
252
278
  - lib/dry/types/result.rb
@@ -265,7 +291,7 @@ metadata:
265
291
  changelog_uri: https://github.com/dry-rb/dry-types/blob/master/CHANGELOG.md
266
292
  source_code_uri: https://github.com/dry-rb/dry-types
267
293
  bug_tracker_uri: https://github.com/dry-rb/dry-types/issues
268
- post_install_message:
294
+ post_install_message:
269
295
  rdoc_options: []
270
296
  require_paths:
271
297
  - lib
@@ -280,8 +306,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
306
  - !ruby/object:Gem::Version
281
307
  version: '0'
282
308
  requirements: []
283
- rubygems_version: 3.0.3
284
- signing_key:
309
+ rubyforge_project:
310
+ rubygems_version: 2.7.9
311
+ signing_key:
285
312
  specification_version: 4
286
313
  summary: Type system for Ruby supporting coercions, constraints and complex types
287
314
  like structs, value objects, enums etc.