dry-types 1.2.1 → 1.5.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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +405 -221
  3. data/LICENSE +1 -1
  4. data/README.md +14 -13
  5. data/dry-types.gemspec +26 -31
  6. data/lib/dry-types.rb +1 -1
  7. data/lib/dry/types.rb +55 -40
  8. data/lib/dry/types/any.rb +2 -2
  9. data/lib/dry/types/array.rb +2 -2
  10. data/lib/dry/types/array/constructor.rb +1 -1
  11. data/lib/dry/types/array/member.rb +1 -1
  12. data/lib/dry/types/builder.rb +70 -18
  13. data/lib/dry/types/builder_methods.rb +6 -3
  14. data/lib/dry/types/coercions.rb +6 -17
  15. data/lib/dry/types/coercions/json.rb +22 -5
  16. data/lib/dry/types/coercions/params.rb +21 -4
  17. data/lib/dry/types/compiler.rb +10 -10
  18. data/lib/dry/types/constrained.rb +6 -10
  19. data/lib/dry/types/constraints.rb +3 -3
  20. data/lib/dry/types/constructor.rb +40 -7
  21. data/lib/dry/types/constructor/function.rb +47 -32
  22. data/lib/dry/types/constructor/wrapper.rb +94 -0
  23. data/lib/dry/types/container.rb +1 -1
  24. data/lib/dry/types/core.rb +15 -13
  25. data/lib/dry/types/decorator.rb +2 -9
  26. data/lib/dry/types/default.rb +15 -3
  27. data/lib/dry/types/enum.rb +4 -4
  28. data/lib/dry/types/errors.rb +6 -6
  29. data/lib/dry/types/extensions.rb +2 -2
  30. data/lib/dry/types/extensions/maybe.rb +17 -17
  31. data/lib/dry/types/extensions/monads.rb +1 -1
  32. data/lib/dry/types/fn_container.rb +1 -1
  33. data/lib/dry/types/hash.rb +9 -15
  34. data/lib/dry/types/hash/constructor.rb +1 -1
  35. data/lib/dry/types/inflector.rb +1 -1
  36. data/lib/dry/types/json.rb +15 -15
  37. data/lib/dry/types/lax.rb +4 -7
  38. data/lib/dry/types/map.rb +2 -2
  39. data/lib/dry/types/meta.rb +3 -3
  40. data/lib/dry/types/module.rb +6 -6
  41. data/lib/dry/types/nominal.rb +11 -12
  42. data/lib/dry/types/params.rb +31 -28
  43. data/lib/dry/types/predicate_inferrer.rb +52 -11
  44. data/lib/dry/types/predicate_registry.rb +1 -1
  45. data/lib/dry/types/primitive_inferrer.rb +1 -1
  46. data/lib/dry/types/printer.rb +25 -25
  47. data/lib/dry/types/result.rb +3 -3
  48. data/lib/dry/types/schema.rb +26 -13
  49. data/lib/dry/types/schema/key.rb +20 -7
  50. data/lib/dry/types/spec/types.rb +65 -42
  51. data/lib/dry/types/sum.rb +6 -6
  52. data/lib/dry/types/type.rb +1 -1
  53. data/lib/dry/types/version.rb +1 -1
  54. metadata +27 -84
  55. data/.codeclimate.yml +0 -12
  56. data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +0 -10
  57. data/.github/ISSUE_TEMPLATE/---bug-report.md +0 -34
  58. data/.github/ISSUE_TEMPLATE/---feature-request.md +0 -18
  59. data/.github/workflows/custom_ci.yml +0 -76
  60. data/.github/workflows/docsite.yml +0 -34
  61. data/.github/workflows/sync_configs.yml +0 -34
  62. data/.gitignore +0 -11
  63. data/.rspec +0 -4
  64. data/.rubocop.yml +0 -89
  65. data/.yardopts +0 -9
  66. data/CODE_OF_CONDUCT.md +0 -13
  67. data/CONTRIBUTING.md +0 -29
  68. data/Gemfile +0 -32
  69. data/Rakefile +0 -22
  70. data/benchmarks/hash_schemas.rb +0 -55
  71. data/benchmarks/lax_schema.rb +0 -15
  72. data/benchmarks/profile_invalid_input.rb +0 -15
  73. data/benchmarks/profile_lax_schema_valid.rb +0 -16
  74. data/benchmarks/profile_valid_input.rb +0 -15
  75. data/benchmarks/schema_valid_vs_invalid.rb +0 -21
  76. data/benchmarks/setup.rb +0 -17
  77. data/docsite/source/array-with-member.html.md +0 -13
  78. data/docsite/source/built-in-types.html.md +0 -116
  79. data/docsite/source/constraints.html.md +0 -31
  80. data/docsite/source/custom-types.html.md +0 -93
  81. data/docsite/source/default-values.html.md +0 -91
  82. data/docsite/source/enum.html.md +0 -69
  83. data/docsite/source/extensions.html.md +0 -15
  84. data/docsite/source/extensions/maybe.html.md +0 -57
  85. data/docsite/source/extensions/monads.html.md +0 -61
  86. data/docsite/source/getting-started.html.md +0 -57
  87. data/docsite/source/hash-schemas.html.md +0 -169
  88. data/docsite/source/index.html.md +0 -156
  89. data/docsite/source/map.html.md +0 -17
  90. data/docsite/source/optional-values.html.md +0 -35
  91. data/docsite/source/sum.html.md +0 -21
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/types/options'
4
- require 'dry/types/meta'
3
+ require "dry/types/options"
4
+ require "dry/types/meta"
5
5
 
6
6
  module Dry
7
7
  module Types
@@ -14,7 +14,7 @@ module Dry
14
14
  include Options
15
15
  include Meta
16
16
  include Printable
17
- include Dry::Equalizer(:left, :right, :options, :meta, inspect: false)
17
+ include Dry::Equalizer(:left, :right, :options, :meta, inspect: false, immutable: true)
18
18
 
19
19
  # @return [Type]
20
20
  attr_reader :left
@@ -50,7 +50,7 @@ module Dry
50
50
  #
51
51
  # @api public
52
52
  def name
53
- [left, right].map(&:name).join(' | ')
53
+ [left, right].map(&:name).join(" | ")
54
54
  end
55
55
 
56
56
  # @return [false]
@@ -142,8 +142,8 @@ module Dry
142
142
  # @see [Meta#meta]
143
143
  #
144
144
  # @api public
145
- def meta(data = nil)
146
- if data.nil?
145
+ def meta(data = Undefined)
146
+ if Undefined.equal?(data)
147
147
  optional? ? right.meta : super
148
148
  elsif optional?
149
149
  self.class.new(left, right.meta(data), **options)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/core/deprecations'
3
+ require "dry/core/deprecations"
4
4
 
5
5
  module Dry
6
6
  module Types
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Types
5
- VERSION = '1.2.1'
5
+ VERSION = "1.5.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-types
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-07 00:00:00.000000000 Z
11
+ date: 2021-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -44,40 +44,20 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.4'
47
+ version: '0.5'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 0.4.4
50
+ version: '0.5'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - "~>"
56
56
  - !ruby/object:Gem::Version
57
- version: '0.4'
57
+ version: '0.5'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 0.4.4
61
- - !ruby/object:Gem::Dependency
62
- name: dry-equalizer
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '0.2'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.2.2
71
- type: :runtime
72
- prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - "~>"
76
- - !ruby/object:Gem::Version
77
- version: '0.2'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.2.2
60
+ version: '0.5'
81
61
  - !ruby/object:Gem::Dependency
82
62
  name: dry-inflector
83
63
  requirement: !ruby/object:Gem::Requirement
@@ -138,104 +118,67 @@ dependencies:
138
118
  requirements:
139
119
  - - "~>"
140
120
  - !ruby/object:Gem::Version
141
- version: '0.2'
121
+ version: '1.0'
142
122
  type: :development
143
123
  prerelease: false
144
124
  version_requirements: !ruby/object:Gem::Requirement
145
125
  requirements:
146
126
  - - "~>"
147
127
  - !ruby/object:Gem::Version
148
- version: '0.2'
128
+ version: '1.0'
149
129
  - !ruby/object:Gem::Dependency
150
130
  name: rake
151
131
  requirement: !ruby/object:Gem::Requirement
152
132
  requirements:
153
- - - "~>"
133
+ - - ">="
154
134
  - !ruby/object:Gem::Version
155
- version: '11.0'
135
+ version: '0'
156
136
  type: :development
157
137
  prerelease: false
158
138
  version_requirements: !ruby/object:Gem::Requirement
159
139
  requirements:
160
- - - "~>"
140
+ - - ">="
161
141
  - !ruby/object:Gem::Version
162
- version: '11.0'
142
+ version: '0'
163
143
  - !ruby/object:Gem::Dependency
164
144
  name: rspec
165
145
  requirement: !ruby/object:Gem::Requirement
166
146
  requirements:
167
- - - "~>"
147
+ - - ">="
168
148
  - !ruby/object:Gem::Version
169
- version: '3.3'
149
+ version: '0'
170
150
  type: :development
171
151
  prerelease: false
172
152
  version_requirements: !ruby/object:Gem::Requirement
173
153
  requirements:
174
- - - "~>"
154
+ - - ">="
175
155
  - !ruby/object:Gem::Version
176
- version: '3.3'
156
+ version: '0'
177
157
  - !ruby/object:Gem::Dependency
178
158
  name: yard
179
159
  requirement: !ruby/object:Gem::Requirement
180
160
  requirements:
181
- - - "~>"
161
+ - - ">="
182
162
  - !ruby/object:Gem::Version
183
- version: 0.9.5
163
+ version: '0'
184
164
  type: :development
185
165
  prerelease: false
186
166
  version_requirements: !ruby/object:Gem::Requirement
187
167
  requirements:
188
- - - "~>"
168
+ - - ">="
189
169
  - !ruby/object:Gem::Version
190
- version: 0.9.5
170
+ version: '0'
191
171
  description: Type system for Ruby supporting coercions, constraints and complex types
192
- like structs, value objects, enums etc.
172
+ like structs, value objects, enums etc
193
173
  email:
194
174
  - piotr.solnica@gmail.com
195
175
  executables: []
196
176
  extensions: []
197
177
  extra_rdoc_files: []
198
178
  files:
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"
203
- - ".github/workflows/custom_ci.yml"
204
- - ".github/workflows/docsite.yml"
205
- - ".github/workflows/sync_configs.yml"
206
- - ".gitignore"
207
- - ".rspec"
208
- - ".rubocop.yml"
209
- - ".yardopts"
210
179
  - CHANGELOG.md
211
- - CODE_OF_CONDUCT.md
212
- - CONTRIBUTING.md
213
- - Gemfile
214
180
  - LICENSE
215
181
  - README.md
216
- - Rakefile
217
- - benchmarks/hash_schemas.rb
218
- - benchmarks/lax_schema.rb
219
- - benchmarks/profile_invalid_input.rb
220
- - benchmarks/profile_lax_schema_valid.rb
221
- - benchmarks/profile_valid_input.rb
222
- - benchmarks/schema_valid_vs_invalid.rb
223
- - benchmarks/setup.rb
224
- - docsite/source/array-with-member.html.md
225
- - docsite/source/built-in-types.html.md
226
- - docsite/source/constraints.html.md
227
- - docsite/source/custom-types.html.md
228
- - docsite/source/default-values.html.md
229
- - docsite/source/enum.html.md
230
- - docsite/source/extensions.html.md
231
- - docsite/source/extensions/maybe.html.md
232
- - docsite/source/extensions/monads.html.md
233
- - docsite/source/getting-started.html.md
234
- - docsite/source/hash-schemas.html.md
235
- - docsite/source/index.html.md
236
- - docsite/source/map.html.md
237
- - docsite/source/optional-values.html.md
238
- - docsite/source/sum.html.md
239
182
  - dry-types.gemspec
240
183
  - lib/dry-types.rb
241
184
  - lib/dry/types.rb
@@ -255,6 +198,7 @@ files:
255
198
  - lib/dry/types/constraints.rb
256
199
  - lib/dry/types/constructor.rb
257
200
  - lib/dry/types/constructor/function.rb
201
+ - lib/dry/types/constructor/wrapper.rb
258
202
  - lib/dry/types/container.rb
259
203
  - lib/dry/types/core.rb
260
204
  - lib/dry/types/decorator.rb
@@ -288,8 +232,7 @@ files:
288
232
  - lib/dry/types/sum.rb
289
233
  - lib/dry/types/type.rb
290
234
  - lib/dry/types/version.rb
291
- - log/.gitkeep
292
- homepage: https://github.com/dry-rb/dry-types
235
+ homepage: https://dry-rb.org/gems/dry-types
293
236
  licenses:
294
237
  - MIT
295
238
  metadata:
@@ -305,16 +248,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
305
248
  requirements:
306
249
  - - ">="
307
250
  - !ruby/object:Gem::Version
308
- version: 2.4.0
251
+ version: 2.5.0
309
252
  required_rubygems_version: !ruby/object:Gem::Requirement
310
253
  requirements:
311
254
  - - ">="
312
255
  - !ruby/object:Gem::Version
313
256
  version: '0'
314
257
  requirements: []
315
- rubygems_version: 3.0.6
258
+ rubygems_version: 3.1.4
316
259
  signing_key:
317
260
  specification_version: 4
318
261
  summary: Type system for Ruby supporting coercions, constraints and complex types
319
- like structs, value objects, enums etc.
262
+ like structs, value objects, enums etc
320
263
  test_files: []
@@ -1,12 +0,0 @@
1
- # this file is managed by dry-rb/devtools project
2
-
3
- version: "2"
4
-
5
- exclude_patterns:
6
- - "benchmarks/"
7
- - "examples/"
8
- - "spec/"
9
-
10
- plugins:
11
- rubocop:
12
- enabled: true
@@ -1,10 +0,0 @@
1
- ---
2
- name: "⚠️ Please don't ask for support via issues"
3
- about: See CONTRIBUTING.md for more information
4
- title: ''
5
- labels: ''
6
- assignees: ''
7
-
8
- ---
9
-
10
-
@@ -1,34 +0,0 @@
1
- ---
2
- name: "\U0001F41B Bug report"
3
- about: See CONTRIBUTING.md for more information
4
- title: ''
5
- labels: bug
6
- assignees: ''
7
-
8
- ---
9
-
10
- **Before you submit this: WE ONLY ACCEPT BUG REPORTS AND FEATURE REQUESTS**
11
-
12
- For more information see [our contribution guidelines](https://github.com/rom-rb/rom/blob/master/CONTRIBUTING.md)
13
-
14
- **Before you report**
15
-
16
- :warning: If you have a problem related to a schema, please **report it under [dry-schema issues](https://github.com/dry-rb/dry-schema/issues/new?assignees=&labels=bug&template=---bug-report.md&title=)** instead.
17
-
18
- **Describe the bug**
19
-
20
- A clear and concise description of what the bug is.
21
-
22
- **To Reproduce**
23
-
24
- Provide detailed steps to reproduce, an executable script would be best.
25
-
26
- **Expected behavior**
27
-
28
- A clear and concise description of what you expected to happen.
29
-
30
- **Your environment**
31
-
32
- - Affects my production application: **YES/NO**
33
- - Ruby version: ...
34
- - OS: ...
@@ -1,18 +0,0 @@
1
- ---
2
- name: "\U0001F6E0 Feature request"
3
- about: See CONTRIBUTING.md for more information
4
- title: ''
5
- labels: feature
6
- assignees: ''
7
-
8
- ---
9
-
10
- Summary of what the feature is supposed to do.
11
-
12
- ## Examples
13
-
14
- Code examples showing how the feature could be used.
15
-
16
- ## Resources
17
-
18
- Additional information, like a link to the discussion forum thread where the feature was discussed etc.
@@ -1,76 +0,0 @@
1
- name: ci
2
-
3
- on:
4
- push:
5
- paths:
6
- - .github/workflows/ci.yml
7
- - lib/**
8
- - spec/**
9
-
10
- jobs:
11
- tests-mri:
12
- runs-on: ubuntu-latest
13
- strategy:
14
- fail-fast: false
15
- matrix:
16
- ruby: ["2.6.x", "2.5.x", "2.4.x"]
17
- dry_logic_from_master: ["true", "false"]
18
- include:
19
- - ruby: "2.6.x"
20
- dry_logic_from_master: "false"
21
- coverage: "true"
22
- steps:
23
- - uses: actions/checkout@v1
24
- - name: Set up Ruby
25
- uses: actions/setup-ruby@v1
26
- with:
27
- ruby-version: ${{matrix.ruby}}
28
- - name: Download test reporter
29
- if: "matrix.coverage == 'true'"
30
- run: |
31
- mkdir -p tmp/
32
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
33
- chmod +x ./tmp/cc-test-reporter
34
- ./tmp/cc-test-reporter before-build
35
- - name: Run all tests
36
- env:
37
- COVERAGE: ${{matrix.coverage}}
38
- DRY_LOGIC_FROM_MASTER: ${{matrix.dry_logic_from_master}}
39
- run: |
40
- gem install bundler
41
- bundle install --jobs 4 --retry 3 --without tools docs
42
- bundle exec rake
43
- - name: Send coverage results
44
- if: "matrix.coverage == 'true'"
45
- env:
46
- CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
47
- GIT_COMMIT_SHA: ${{github.sha}}
48
- GIT_BRANCH: ${{github.ref}}
49
- GIT_COMMITTED_AT: ${{github.event.head_commit.timestamp}}
50
- run: |
51
- GIT_BRANCH=`ruby -e "puts ENV['GITHUB_REF'].split('/', 3).last"` \
52
- GIT_COMMITTED_AT=`ruby -r time -e "puts Time.iso8601(ENV['GIT_COMMITTED_AT']).to_i"` \
53
- ./tmp/cc-test-reporter after-build
54
-
55
- tests-others:
56
- runs-on: ubuntu-latest
57
- strategy:
58
- fail-fast: false
59
- matrix:
60
- image: ["jruby:9.2.8", "ruby:rc"]
61
- dry_logic_from_master: ["true", "false"]
62
- container:
63
- image: ${{matrix.image}}
64
- steps:
65
- - uses: actions/checkout@v1
66
- - name: Install git
67
- run: |
68
- apt-get update
69
- apt-get install -y --no-install-recommends git
70
- - name: Run all tests
71
- env:
72
- DRY_LOGIC_FROM_MASTER: ${{matrix.dry_logic_from_master}}
73
- run: |
74
- gem install bundler
75
- bundle install --jobs 4 --retry 3 --without tools docs
76
- bundle exec rspec
@@ -1,34 +0,0 @@
1
- # this file is managed by dry-rb/devtools project
2
-
3
- name: docsite
4
-
5
- on:
6
- push:
7
- paths:
8
- - docsite/**
9
- - .github/workflows/docsite.yml
10
- branches:
11
- - master
12
- - release-**
13
- tags:
14
-
15
- jobs:
16
- update-docs:
17
- runs-on: ubuntu-latest
18
- steps:
19
- - uses: actions/checkout@v1
20
- - name: Set up Ruby
21
- uses: actions/setup-ruby@v1
22
- with:
23
- ruby-version: "2.6.x"
24
- - name: Install dependencies
25
- run: |
26
- gem install bundler
27
- bundle install --jobs 4 --retry 3 --without benchmarks sql
28
- - name: Symlink ossy
29
- run: mkdir -p bin && ln -sf "$(bundle show ossy)/bin/ossy" bin/ossy
30
- - name: Trigger dry-rb.org deploy
31
- env:
32
- GITHUB_LOGIN: dry-bot
33
- GITHUB_TOKEN: ${{ secrets.GH_PAT }}
34
- run: bin/ossy github workflow dry-rb/dry-rb.org ci