bcdd-result 0.11.0 → 0.13.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 +4 -4
- data/.rubocop.yml +16 -1
- data/CHANGELOG.md +97 -15
- data/README.md +508 -95
- data/Steepfile +4 -4
- data/examples/multiple_listeners/Rakefile +55 -0
- data/examples/multiple_listeners/app/models/account/member.rb +10 -0
- data/examples/multiple_listeners/app/models/account/owner_creation.rb +62 -0
- data/examples/multiple_listeners/app/models/account.rb +11 -0
- data/examples/multiple_listeners/app/models/user/creation.rb +67 -0
- data/examples/multiple_listeners/app/models/user/token/creation.rb +51 -0
- data/examples/multiple_listeners/app/models/user/token.rb +7 -0
- data/examples/multiple_listeners/app/models/user.rb +15 -0
- data/examples/multiple_listeners/config/boot.rb +16 -0
- data/examples/multiple_listeners/config/initializers/bcdd.rb +11 -0
- data/examples/multiple_listeners/config.rb +27 -0
- data/examples/multiple_listeners/db/setup.rb +61 -0
- data/examples/multiple_listeners/lib/bcdd/result/rollback_on_failure.rb +15 -0
- data/examples/multiple_listeners/lib/bcdd/result/transitions_record.rb +28 -0
- data/examples/multiple_listeners/lib/runtime_breaker.rb +11 -0
- data/examples/multiple_listeners/lib/transitions_listener/stdout.rb +54 -0
- data/examples/single_listener/Rakefile +92 -0
- data/examples/single_listener/app/models/account/member.rb +10 -0
- data/examples/single_listener/app/models/account/owner_creation.rb +62 -0
- data/examples/single_listener/app/models/account.rb +11 -0
- data/examples/single_listener/app/models/user/creation.rb +67 -0
- data/examples/single_listener/app/models/user/token/creation.rb +51 -0
- data/examples/single_listener/app/models/user/token.rb +7 -0
- data/examples/single_listener/app/models/user.rb +15 -0
- data/examples/single_listener/config/boot.rb +16 -0
- data/examples/single_listener/config/initializers/bcdd.rb +11 -0
- data/examples/single_listener/config.rb +23 -0
- data/examples/single_listener/db/setup.rb +49 -0
- data/examples/single_listener/lib/bcdd/result/rollback_on_failure.rb +15 -0
- data/examples/single_listener/lib/runtime_breaker.rb +11 -0
- data/examples/single_listener/lib/single_transitions_listener.rb +108 -0
- data/lib/bcdd/result/callable_and_then/caller.rb +49 -0
- data/lib/bcdd/result/callable_and_then/config.rb +15 -0
- data/lib/bcdd/result/callable_and_then/error.rb +11 -0
- data/lib/bcdd/result/callable_and_then.rb +9 -0
- data/lib/bcdd/result/config/switchers/features.rb +5 -1
- data/lib/bcdd/result/config.rb +15 -4
- data/lib/bcdd/result/context/callable_and_then.rb +39 -0
- data/lib/bcdd/result/context/expectations/mixin.rb +2 -2
- data/lib/bcdd/result/context/mixin.rb +3 -3
- data/lib/bcdd/result/context/success.rb +29 -7
- data/lib/bcdd/result/context.rb +34 -16
- data/lib/bcdd/result/contract/for_types.rb +1 -1
- data/lib/bcdd/result/contract/for_types_and_values.rb +2 -0
- data/lib/bcdd/result/error.rb +20 -11
- data/lib/bcdd/result/expectations/mixin.rb +3 -3
- data/lib/bcdd/result/expectations.rb +6 -6
- data/lib/bcdd/result/ignored_types.rb +14 -0
- data/lib/bcdd/result/mixin.rb +3 -3
- data/lib/bcdd/result/transitions/config.rb +26 -0
- data/lib/bcdd/result/transitions/listener.rb +51 -0
- data/lib/bcdd/result/transitions/listeners.rb +87 -0
- data/lib/bcdd/result/transitions/tracking/disabled.rb +4 -6
- data/lib/bcdd/result/transitions/tracking/enabled.rb +103 -24
- data/lib/bcdd/result/transitions/tracking.rb +8 -3
- data/lib/bcdd/result/transitions/tree.rb +36 -6
- data/lib/bcdd/result/transitions.rb +11 -14
- data/lib/bcdd/result/version.rb +1 -1
- data/lib/bcdd/result.rb +39 -22
- data/sig/bcdd/result/callable_and_then.rbs +60 -0
- data/sig/bcdd/result/config.rbs +3 -0
- data/sig/bcdd/result/context.rbs +65 -4
- data/sig/bcdd/result/error.rbs +9 -6
- data/sig/bcdd/result/expectations.rbs +4 -4
- data/sig/bcdd/result/ignored_types.rbs +9 -0
- data/sig/bcdd/result/transitions.rbs +107 -7
- data/sig/bcdd/result.rbs +10 -6
- metadata +48 -6
@@ -1,5 +1,82 @@
|
|
1
1
|
class BCDD::Result
|
2
2
|
module Transitions
|
3
|
+
module Listener
|
4
|
+
module ClassMethods
|
5
|
+
def around_and_then?: () -> bool
|
6
|
+
def around_transitions?: () -> bool
|
7
|
+
end
|
8
|
+
|
9
|
+
extend ClassMethods
|
10
|
+
|
11
|
+
def around_transitions: (scope: Hash[Symbol, untyped]) { () -> untyped } -> untyped
|
12
|
+
|
13
|
+
def on_start: (scope: Hash[Symbol, untyped]) -> untyped
|
14
|
+
|
15
|
+
def around_and_then: (scope: Hash[Symbol, untyped], and_then: Hash[Symbol, untyped]) { () -> untyped } -> untyped
|
16
|
+
|
17
|
+
def on_record: (record: Hash[Symbol, untyped] ) -> untyped
|
18
|
+
|
19
|
+
def on_finish: (transitions: Hash[Symbol, untyped] ) -> untyped
|
20
|
+
|
21
|
+
def before_interruption: (exception: ::Exception, transitions: Hash[Symbol, untyped]) -> untyped
|
22
|
+
end
|
23
|
+
|
24
|
+
class Listeners
|
25
|
+
class Chain
|
26
|
+
include Listener
|
27
|
+
|
28
|
+
attr_reader listeners: Hash[Symbol, untyped]
|
29
|
+
|
30
|
+
def initialize: (Array[untyped]) -> void
|
31
|
+
|
32
|
+
def new: () -> Listeners
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def listener?: (untyped, untyped) -> bool
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.[]: (*untyped) -> Chain
|
40
|
+
|
41
|
+
private attr_reader listeners: Array[Listener]
|
42
|
+
private attr_reader around_and_then_listener: untyped
|
43
|
+
private attr_reader around_transitions_listener: untyped
|
44
|
+
|
45
|
+
def initialize: (Array[Listener], untyped, untyped) -> void
|
46
|
+
|
47
|
+
def around_transitions: (scope: Hash[Symbol, untyped]) { () -> untyped } -> untyped
|
48
|
+
|
49
|
+
def on_start: (scope: Hash[Symbol, untyped]) -> untyped
|
50
|
+
|
51
|
+
def around_and_then: (scope: Hash[Symbol, untyped], and_then: Hash[Symbol, untyped]) { () -> untyped } -> untyped
|
52
|
+
|
53
|
+
def on_record: (record: Hash[Symbol, untyped] ) -> untyped
|
54
|
+
|
55
|
+
def on_finish: (transitions: Hash[Symbol, untyped] ) -> untyped
|
56
|
+
|
57
|
+
def before_interruption: (exception: ::Exception, transitions: Hash[Symbol, untyped]) -> untyped
|
58
|
+
end
|
59
|
+
|
60
|
+
module Listener::Null
|
61
|
+
extend Listener
|
62
|
+
|
63
|
+
def self.new: () -> untyped
|
64
|
+
end
|
65
|
+
|
66
|
+
class Config
|
67
|
+
include ::Singleton
|
68
|
+
|
69
|
+
attr_reader listener: untyped
|
70
|
+
attr_reader trace_id: ::Proc
|
71
|
+
|
72
|
+
def self.instance: -> Config
|
73
|
+
|
74
|
+
def initialize: -> void
|
75
|
+
|
76
|
+
def listener=: (Listener) -> void
|
77
|
+
def trace_id=: (::Proc) -> void
|
78
|
+
end
|
79
|
+
|
3
80
|
class Tree
|
4
81
|
class Node
|
5
82
|
attr_reader id: Integer
|
@@ -32,7 +109,8 @@ class BCDD::Result
|
|
32
109
|
def parent_value: () -> untyped
|
33
110
|
def current_value: () -> untyped
|
34
111
|
def insert: (untyped) -> Node
|
35
|
-
def insert!: (untyped) ->
|
112
|
+
def insert!: (untyped) -> Tree
|
113
|
+
def move_to!: (Node) -> Tree
|
36
114
|
def move_up!: (?Integer level) -> Tree
|
37
115
|
def move_down!: (?Integer level) -> Tree
|
38
116
|
def move_to_root!: () -> Tree
|
@@ -40,6 +118,10 @@ class BCDD::Result
|
|
40
118
|
NestedIds: ^(Node) -> Array[untyped]
|
41
119
|
|
42
120
|
def nested_ids: () -> Array[untyped]
|
121
|
+
|
122
|
+
IdsMatrix: ::Proc
|
123
|
+
|
124
|
+
def ids_matrix: () -> untyped
|
43
125
|
end
|
44
126
|
|
45
127
|
module Tracking
|
@@ -52,31 +134,47 @@ class BCDD::Result
|
|
52
134
|
class Enabled
|
53
135
|
private attr_accessor tree: Transitions::Tree
|
54
136
|
private attr_accessor records: Array[Hash[Symbol, untyped]]
|
137
|
+
private attr_accessor listener: untyped
|
55
138
|
private attr_accessor root_started_at: Integer
|
56
139
|
|
57
|
-
def
|
58
|
-
def
|
140
|
+
def exec: (untyped, untyped) { () -> untyped } -> untyped
|
141
|
+
def err!: (::Exception, untyped) -> void
|
59
142
|
def reset!: () -> void
|
60
143
|
def record: (BCDD::Result) -> void
|
61
|
-
def record_and_then: ((untyped), untyped
|
144
|
+
def record_and_then: ((untyped), untyped) { () -> untyped } -> untyped
|
145
|
+
def reset_and_then!: () -> void
|
62
146
|
|
63
147
|
private
|
64
148
|
|
149
|
+
def start: (String, String) -> [Transitions::Tree::Node, Hash[Symbol, untyped]]
|
150
|
+
def finish: (untyped) -> untyped
|
151
|
+
|
65
152
|
TreeNodeValueNormalizer: ^(Integer, Array[untyped]) -> untyped
|
66
153
|
|
67
154
|
def root_start: (Array[untyped]) -> void
|
68
155
|
|
69
156
|
def track: (BCDD::Result, time: Time) -> void
|
157
|
+
def track_record: (BCDD::Result, Time) -> Hash[Symbol, untyped]
|
70
158
|
|
71
159
|
def now_in_milliseconds: () -> Integer
|
160
|
+
|
161
|
+
def map_transitions: () -> Hash[Symbol, untyped]
|
162
|
+
|
163
|
+
def build_listener: () -> Listener
|
72
164
|
end
|
73
165
|
|
74
166
|
module Disabled
|
75
|
-
def self.
|
76
|
-
def self.
|
167
|
+
def self.exec: (untyped, untyped) { () -> untyped } -> untyped
|
168
|
+
def self.err!: (::Exception) -> void
|
77
169
|
def self.reset!: () -> void
|
78
170
|
def self.record: (BCDD::Result) -> void
|
79
|
-
def self.record_and_then: ((untyped), untyped
|
171
|
+
def self.record_and_then: ((untyped), untyped) { () -> BCDD::Result } -> BCDD::Result
|
172
|
+
def self.reset_and_then!: () -> void
|
173
|
+
|
174
|
+
private
|
175
|
+
|
176
|
+
def self.start: (String, String) -> void
|
177
|
+
def self.finish: (untyped) -> untyped
|
80
178
|
end
|
81
179
|
|
82
180
|
def self.instance: () -> (Enabled | singleton(Disabled))
|
@@ -84,6 +182,8 @@ class BCDD::Result
|
|
84
182
|
|
85
183
|
THREAD_VAR_NAME: Symbol
|
86
184
|
|
185
|
+
EnsureResult: ^(untyped) -> BCDD::Result
|
186
|
+
|
87
187
|
def self.tracking: () -> (Tracking::Enabled | singleton(Tracking::Disabled))
|
88
188
|
end
|
89
189
|
end
|
data/sig/bcdd/result.rbs
CHANGED
@@ -4,17 +4,18 @@ class BCDD::Result
|
|
4
4
|
private attr_reader type_checker: BCDD::Result::Contract::TypeChecker
|
5
5
|
|
6
6
|
attr_reader data: BCDD::Result::Data
|
7
|
-
attr_reader
|
7
|
+
attr_reader source: untyped
|
8
8
|
attr_reader terminal: bool
|
9
9
|
attr_reader transitions: Hash[Symbol, untyped]
|
10
10
|
|
11
11
|
def self.config: -> BCDD::Result::Config
|
12
|
-
def self.configuration: { (BCDD::Result::Config) -> void } -> BCDD::Result::Config
|
12
|
+
def self.configuration: (freeze: bool) { (BCDD::Result::Config) -> void } -> (bool | BCDD::Result::Config)
|
13
|
+
def self.transitions: (name: untyped, desc: untyped) { () -> untyped } -> BCDD::Result
|
13
14
|
|
14
15
|
def initialize: (
|
15
16
|
type: Symbol,
|
16
17
|
value: untyped,
|
17
|
-
?
|
18
|
+
?source: untyped,
|
18
19
|
?expectations: BCDD::Result::Contract::Evaluator,
|
19
20
|
?terminal: bool
|
20
21
|
) -> void
|
@@ -33,7 +34,9 @@ class BCDD::Result
|
|
33
34
|
def on_failure: (*Symbol) { (untyped, Symbol) -> void } -> BCDD::Result
|
34
35
|
def on_unknown: () { (untyped, Symbol) -> void } -> BCDD::Result
|
35
36
|
|
36
|
-
def and_then: (?Symbol method_name, ?untyped
|
37
|
+
def and_then: (?Symbol method_name, ?untyped injected_value) ?{ (untyped) -> untyped } -> untyped
|
38
|
+
|
39
|
+
def and_then!: (untyped, ?untyped injected_value, _call: (Symbol | nil)) -> untyped
|
37
40
|
|
38
41
|
def handle: () { (BCDD::Result::Handler) -> void } -> untyped
|
39
42
|
|
@@ -51,10 +54,11 @@ class BCDD::Result
|
|
51
54
|
|
52
55
|
def kind: -> Symbol
|
53
56
|
def known: (Proc) -> untyped
|
54
|
-
def
|
55
|
-
def
|
57
|
+
def call_and_then_source_method: (Symbol, untyped) -> BCDD::Result
|
58
|
+
def call_and_then_source_method!: (untyped, untyped) -> BCDD::Result
|
56
59
|
def call_and_then_block: (untyped) -> BCDD::Result
|
57
60
|
def call_and_then_block!: (untyped) -> BCDD::Result
|
61
|
+
def call_and_then_callable!: (untyped, value: untyped, injected_value: untyped, method_name: (Symbol | nil)) -> BCDD::Result
|
58
62
|
def ensure_result_object: (untyped, origin: Symbol) -> BCDD::Result
|
59
63
|
end
|
60
64
|
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bcdd-result
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Serradura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01
|
11
|
+
date: 2024-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
|
13
|
+
description: Unleash a pragmatic and observable use of Result Pattern and Railway-Oriented
|
14
|
+
Programming in Ruby.
|
15
15
|
email:
|
16
16
|
- rodrigo.serradura@gmail.com
|
17
17
|
executables: []
|
@@ -26,8 +26,43 @@ files:
|
|
26
26
|
- README.md
|
27
27
|
- Rakefile
|
28
28
|
- Steepfile
|
29
|
+
- examples/multiple_listeners/Rakefile
|
30
|
+
- examples/multiple_listeners/app/models/account.rb
|
31
|
+
- examples/multiple_listeners/app/models/account/member.rb
|
32
|
+
- examples/multiple_listeners/app/models/account/owner_creation.rb
|
33
|
+
- examples/multiple_listeners/app/models/user.rb
|
34
|
+
- examples/multiple_listeners/app/models/user/creation.rb
|
35
|
+
- examples/multiple_listeners/app/models/user/token.rb
|
36
|
+
- examples/multiple_listeners/app/models/user/token/creation.rb
|
37
|
+
- examples/multiple_listeners/config.rb
|
38
|
+
- examples/multiple_listeners/config/boot.rb
|
39
|
+
- examples/multiple_listeners/config/initializers/bcdd.rb
|
40
|
+
- examples/multiple_listeners/db/setup.rb
|
41
|
+
- examples/multiple_listeners/lib/bcdd/result/rollback_on_failure.rb
|
42
|
+
- examples/multiple_listeners/lib/bcdd/result/transitions_record.rb
|
43
|
+
- examples/multiple_listeners/lib/runtime_breaker.rb
|
44
|
+
- examples/multiple_listeners/lib/transitions_listener/stdout.rb
|
45
|
+
- examples/single_listener/Rakefile
|
46
|
+
- examples/single_listener/app/models/account.rb
|
47
|
+
- examples/single_listener/app/models/account/member.rb
|
48
|
+
- examples/single_listener/app/models/account/owner_creation.rb
|
49
|
+
- examples/single_listener/app/models/user.rb
|
50
|
+
- examples/single_listener/app/models/user/creation.rb
|
51
|
+
- examples/single_listener/app/models/user/token.rb
|
52
|
+
- examples/single_listener/app/models/user/token/creation.rb
|
53
|
+
- examples/single_listener/config.rb
|
54
|
+
- examples/single_listener/config/boot.rb
|
55
|
+
- examples/single_listener/config/initializers/bcdd.rb
|
56
|
+
- examples/single_listener/db/setup.rb
|
57
|
+
- examples/single_listener/lib/bcdd/result/rollback_on_failure.rb
|
58
|
+
- examples/single_listener/lib/runtime_breaker.rb
|
59
|
+
- examples/single_listener/lib/single_transitions_listener.rb
|
29
60
|
- lib/bcdd-result.rb
|
30
61
|
- lib/bcdd/result.rb
|
62
|
+
- lib/bcdd/result/callable_and_then.rb
|
63
|
+
- lib/bcdd/result/callable_and_then/caller.rb
|
64
|
+
- lib/bcdd/result/callable_and_then/config.rb
|
65
|
+
- lib/bcdd/result/callable_and_then/error.rb
|
31
66
|
- lib/bcdd/result/config.rb
|
32
67
|
- lib/bcdd/result/config/options.rb
|
33
68
|
- lib/bcdd/result/config/switcher.rb
|
@@ -36,6 +71,7 @@ files:
|
|
36
71
|
- lib/bcdd/result/config/switchers/features.rb
|
37
72
|
- lib/bcdd/result/config/switchers/pattern_matching.rb
|
38
73
|
- lib/bcdd/result/context.rb
|
74
|
+
- lib/bcdd/result/context/callable_and_then.rb
|
39
75
|
- lib/bcdd/result/context/expectations.rb
|
40
76
|
- lib/bcdd/result/context/expectations/mixin.rb
|
41
77
|
- lib/bcdd/result/context/failure.rb
|
@@ -57,16 +93,21 @@ files:
|
|
57
93
|
- lib/bcdd/result/failure/methods.rb
|
58
94
|
- lib/bcdd/result/handler.rb
|
59
95
|
- lib/bcdd/result/handler/allowed_types.rb
|
96
|
+
- lib/bcdd/result/ignored_types.rb
|
60
97
|
- lib/bcdd/result/mixin.rb
|
61
98
|
- lib/bcdd/result/success.rb
|
62
99
|
- lib/bcdd/result/success/methods.rb
|
63
100
|
- lib/bcdd/result/transitions.rb
|
101
|
+
- lib/bcdd/result/transitions/config.rb
|
102
|
+
- lib/bcdd/result/transitions/listener.rb
|
103
|
+
- lib/bcdd/result/transitions/listeners.rb
|
64
104
|
- lib/bcdd/result/transitions/tracking.rb
|
65
105
|
- lib/bcdd/result/transitions/tracking/disabled.rb
|
66
106
|
- lib/bcdd/result/transitions/tracking/enabled.rb
|
67
107
|
- lib/bcdd/result/transitions/tree.rb
|
68
108
|
- lib/bcdd/result/version.rb
|
69
109
|
- sig/bcdd/result.rbs
|
110
|
+
- sig/bcdd/result/callable_and_then.rbs
|
70
111
|
- sig/bcdd/result/config.rbs
|
71
112
|
- sig/bcdd/result/context.rbs
|
72
113
|
- sig/bcdd/result/contract.rbs
|
@@ -74,6 +115,7 @@ files:
|
|
74
115
|
- sig/bcdd/result/error.rbs
|
75
116
|
- sig/bcdd/result/expectations.rbs
|
76
117
|
- sig/bcdd/result/handler.rbs
|
118
|
+
- sig/bcdd/result/ignored_types.rbs
|
77
119
|
- sig/bcdd/result/mixin.rbs
|
78
120
|
- sig/bcdd/result/transitions.rbs
|
79
121
|
- sig/bcdd/result/version.rbs
|
@@ -104,6 +146,6 @@ requirements: []
|
|
104
146
|
rubygems_version: 3.5.3
|
105
147
|
signing_key:
|
106
148
|
specification_version: 4
|
107
|
-
summary:
|
108
|
-
Programming
|
149
|
+
summary: Unleash a pragmatic and observable use of Result Pattern and Railway-Oriented
|
150
|
+
Programming in Ruby.
|
109
151
|
test_files: []
|