dry-types 1.2.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
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