bcdd-result 0.13.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/CHANGELOG.md +46 -17
  4. data/README.md +381 -220
  5. data/Rakefile +1 -1
  6. data/Steepfile +1 -1
  7. data/examples/multiple_listeners/Rakefile +8 -8
  8. data/examples/multiple_listeners/app/models/account/owner_creation.rb +1 -1
  9. data/examples/multiple_listeners/app/models/user/creation.rb +1 -1
  10. data/examples/multiple_listeners/app/models/user/token/creation.rb +1 -1
  11. data/examples/multiple_listeners/config/initializers/bcdd.rb +0 -2
  12. data/examples/multiple_listeners/config.rb +3 -3
  13. data/examples/multiple_listeners/db/setup.rb +2 -3
  14. data/examples/multiple_listeners/lib/bcdd/result/event_logs_record.rb +27 -0
  15. data/examples/multiple_listeners/lib/event_logs_listener/stdout.rb +60 -0
  16. data/examples/multiple_listeners/lib/runtime_breaker.rb +1 -1
  17. data/examples/service_objects/Rakefile +36 -0
  18. data/examples/service_objects/app/models/account/member.rb +10 -0
  19. data/examples/service_objects/app/models/account.rb +11 -0
  20. data/examples/service_objects/app/models/user/token.rb +7 -0
  21. data/examples/service_objects/app/models/user.rb +15 -0
  22. data/examples/service_objects/app/services/account/owner_creation.rb +47 -0
  23. data/examples/service_objects/app/services/application_service.rb +79 -0
  24. data/examples/service_objects/app/services/user/creation.rb +56 -0
  25. data/examples/service_objects/app/services/user/token/creation.rb +37 -0
  26. data/examples/service_objects/config/boot.rb +17 -0
  27. data/examples/service_objects/config/initializers/bcdd.rb +9 -0
  28. data/examples/service_objects/config.rb +20 -0
  29. data/examples/service_objects/db/setup.rb +49 -0
  30. data/examples/single_listener/Rakefile +5 -5
  31. data/examples/single_listener/app/models/account/owner_creation.rb +1 -1
  32. data/examples/single_listener/app/models/user/creation.rb +1 -1
  33. data/examples/single_listener/app/models/user/token/creation.rb +1 -1
  34. data/examples/single_listener/config/initializers/bcdd.rb +0 -2
  35. data/examples/single_listener/config.rb +1 -1
  36. data/examples/single_listener/lib/{single_transitions_listener.rb → single_event_logs_listener.rb} +32 -23
  37. data/lib/bcdd/{result/context → context}/callable_and_then.rb +5 -4
  38. data/lib/bcdd/{result/context → context}/expectations/mixin.rb +1 -1
  39. data/lib/bcdd/{result/context → context}/expectations.rb +2 -2
  40. data/lib/bcdd/context/failure.rb +9 -0
  41. data/lib/bcdd/{result/context → context}/mixin.rb +2 -2
  42. data/lib/bcdd/{result/context → context}/success.rb +6 -6
  43. data/lib/bcdd/context.rb +91 -0
  44. data/lib/bcdd/failure.rb +23 -0
  45. data/lib/bcdd/result/_self.rb +198 -0
  46. data/lib/bcdd/result/callable_and_then/caller.rb +1 -1
  47. data/lib/bcdd/result/config/switchers/addons.rb +2 -2
  48. data/lib/bcdd/result/config/switchers/constant_aliases.rb +1 -3
  49. data/lib/bcdd/result/config/switchers/features.rb +5 -5
  50. data/lib/bcdd/result/config/switchers/pattern_matching.rb +1 -1
  51. data/lib/bcdd/result/config.rb +7 -5
  52. data/lib/bcdd/result/contract/type_checker.rb +4 -0
  53. data/lib/bcdd/result/{transitions → event_logs}/config.rb +5 -3
  54. data/lib/bcdd/result/{transitions → event_logs}/listener.rb +5 -5
  55. data/lib/bcdd/result/{transitions → event_logs}/listeners.rb +17 -17
  56. data/lib/bcdd/result/{transitions → event_logs}/tracking/disabled.rb +1 -1
  57. data/lib/bcdd/result/{transitions → event_logs}/tracking/enabled.rb +15 -13
  58. data/lib/bcdd/result/{transitions → event_logs}/tracking.rb +4 -3
  59. data/lib/bcdd/result/{transitions → event_logs}/tree.rb +27 -11
  60. data/lib/bcdd/result/event_logs.rb +27 -0
  61. data/lib/bcdd/result/failure.rb +1 -3
  62. data/lib/bcdd/result/success.rb +1 -3
  63. data/lib/bcdd/result/version.rb +1 -1
  64. data/lib/bcdd/result.rb +23 -191
  65. data/lib/bcdd/success.rb +23 -0
  66. data/sig/bcdd/context.rbs +175 -0
  67. data/sig/bcdd/failure.rbs +13 -0
  68. data/sig/bcdd/result/config.rbs +1 -3
  69. data/sig/bcdd/result/context.rbs +2 -174
  70. data/sig/bcdd/result/contract.rbs +1 -0
  71. data/sig/bcdd/result/{transitions.rbs → event_logs.rbs} +19 -19
  72. data/sig/bcdd/result.rbs +13 -31
  73. data/sig/bcdd/success.rbs +13 -0
  74. metadata +41 -24
  75. data/examples/multiple_listeners/lib/bcdd/result/transitions_record.rb +0 -28
  76. data/examples/multiple_listeners/lib/transitions_listener/stdout.rb +0 -54
  77. data/lib/bcdd/result/context/failure.rb +0 -9
  78. data/lib/bcdd/result/context.rb +0 -93
  79. data/lib/bcdd/result/failure/methods.rb +0 -21
  80. data/lib/bcdd/result/success/methods.rb +0 -21
  81. data/lib/bcdd/result/transitions.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3375c9c36b12a792a50e285c32f1526f660360b95d2a3d85103b9147c7c61a68
4
- data.tar.gz: c1f399841dad795a4fa10bc15a4c0dac774c104dc9b2237dc5b602e5956c54e5
3
+ metadata.gz: 78e33ee42ffa86c0eea3c6dc522ae0bec103bb70d24a1f31103b60cda7bead6e
4
+ data.tar.gz: 8919d24f1b3d903ff164717e5930f8a4e17c66ede1a93f303ffacceacdc31bb1
5
5
  SHA512:
6
- metadata.gz: f00e7da2c78ae1c88998b05af02f4ebea701a22797a0a103072ce7bc2532331ecfa2202f677aa9f107e30b33b866421648a98179ddc5c4239b33ca926e584490
7
- data.tar.gz: 715b1015481ed2bb317dcbbf6834832fe8df5e3542f0824606c4127c23811357459a995585c27cfd4366410b5d9ca79843cf1cee3ef04357e2a416d2e042379d
6
+ metadata.gz: 9c504322d2243a50ee18f1369a110af0c5fa45b07c55628f7dac30bacc2348299e1d2207474dcd15fc0a92ec071016763c4b02a0a9bbc2b402a20cf8a7b77b66
7
+ data.tar.gz: fd5706097d3057addfe8b9eccb3094ef3a3567e90f93bc3218b54ec192879a39d6a68464cac75b8606b1df25f55736a3b69c02682937816c710df5c17d8abcea
data/.rubocop.yml CHANGED
@@ -18,7 +18,7 @@ AllCops:
18
18
 
19
19
  Lint/RescueException:
20
20
  Exclude:
21
- - lib/bcdd/result/transitions/tracking/enabled.rb
21
+ - lib/bcdd/result/event_logs/tracking/enabled.rb
22
22
 
23
23
  Layout/LineLength:
24
24
  Max: 120
@@ -34,7 +34,7 @@ Lint/UnderscorePrefixedVariableName:
34
34
 
35
35
  Lint/UnusedMethodArgument:
36
36
  Exclude:
37
- - lib/bcdd/result/transitions/listener.rb
37
+ - lib/bcdd/result/event_logs/listener.rb
38
38
 
39
39
  Style/AccessModifierDeclarations:
40
40
  Enabled: false
@@ -73,12 +73,12 @@ Metrics/BlockLength:
73
73
 
74
74
  Metrics/ClassLength:
75
75
  Exclude:
76
- - lib/bcdd/result.rb
76
+ - lib/bcdd/result/_self.rb
77
77
  - test/**/*.rb
78
78
 
79
79
  Metrics/AbcSize:
80
80
  Exclude:
81
- - lib/bcdd/result/transitions/tracking/enabled.rb
81
+ - lib/bcdd/result/event_logs/tracking/enabled.rb
82
82
 
83
83
  Minitest/MultipleAssertions:
84
84
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,47 +1,76 @@
1
1
  - [\[Unreleased\]](#unreleased)
2
- - [\[0.13.0\] - 2024-02-01](#0130---2024-02-01)
2
+ - [1.0.0 - 2024-03-16](#100---2024-03-16)
3
3
  - [Added](#added)
4
4
  - [Changed](#changed)
5
- - [\[0.12.0\] - 2024-01-07](#0120---2024-01-07)
5
+ - [\[0.13.0\] - 2024-02-01](#0130---2024-02-01)
6
6
  - [Added](#added-1)
7
7
  - [Changed](#changed-1)
8
- - [\[0.11.0\] - 2024-01-02](#0110---2024-01-02)
8
+ - [\[0.12.0\] - 2024-01-07](#0120---2024-01-07)
9
9
  - [Added](#added-2)
10
10
  - [Changed](#changed-2)
11
- - [\[0.10.0\] - 2023-12-31](#0100---2023-12-31)
11
+ - [\[0.11.0\] - 2024-01-02](#0110---2024-01-02)
12
12
  - [Added](#added-3)
13
- - [\[0.9.1\] - 2023-12-12](#091---2023-12-12)
14
13
  - [Changed](#changed-3)
15
- - [Fixed](#fixed)
16
- - [\[0.9.0\] - 2023-12-12](#090---2023-12-12)
14
+ - [\[0.10.0\] - 2023-12-31](#0100---2023-12-31)
17
15
  - [Added](#added-4)
16
+ - [\[0.9.1\] - 2023-12-12](#091---2023-12-12)
18
17
  - [Changed](#changed-4)
19
- - [\[0.8.0\] - 2023-12-11](#080---2023-12-11)
18
+ - [Fixed](#fixed)
19
+ - [\[0.9.0\] - 2023-12-12](#090---2023-12-12)
20
20
  - [Added](#added-5)
21
21
  - [Changed](#changed-5)
22
- - [Removed](#removed)
23
- - [\[0.7.0\] - 2023-10-27](#070---2023-10-27)
22
+ - [\[0.8.0\] - 2023-12-11](#080---2023-12-11)
24
23
  - [Added](#added-6)
25
24
  - [Changed](#changed-6)
26
- - [\[0.6.0\] - 2023-10-11](#060---2023-10-11)
25
+ - [Removed](#removed)
26
+ - [\[0.7.0\] - 2023-10-27](#070---2023-10-27)
27
27
  - [Added](#added-7)
28
28
  - [Changed](#changed-7)
29
- - [\[0.5.0\] - 2023-10-09](#050---2023-10-09)
29
+ - [\[0.6.0\] - 2023-10-11](#060---2023-10-11)
30
30
  - [Added](#added-8)
31
- - [\[0.4.0\] - 2023-09-28](#040---2023-09-28)
32
- - [Added](#added-9)
33
31
  - [Changed](#changed-8)
32
+ - [\[0.5.0\] - 2023-10-09](#050---2023-10-09)
33
+ - [Added](#added-9)
34
+ - [\[0.4.0\] - 2023-09-28](#040---2023-09-28)
35
+ - [Added](#added-10)
36
+ - [Changed](#changed-9)
34
37
  - [Removed](#removed-1)
35
38
  - [\[0.3.0\] - 2023-09-26](#030---2023-09-26)
36
- - [Added](#added-10)
37
- - [\[0.2.0\] - 2023-09-26](#020---2023-09-26)
38
39
  - [Added](#added-11)
40
+ - [\[0.2.0\] - 2023-09-26](#020---2023-09-26)
41
+ - [Added](#added-12)
39
42
  - [Removed](#removed-2)
40
43
  - [\[0.1.0\] - 2023-09-25](#010---2023-09-25)
41
- - [Added](#added-12)
44
+ - [Added](#added-13)
42
45
 
43
46
  ## [Unreleased]
44
47
 
48
+ ## 1.0.0 - 2024-03-16
49
+
50
+ ### Added
51
+
52
+ - Add the `BCDD::Success` and `BCDD::Failure` modules. They are key to checking whether a result is a success or a failure independently of whether it is a `BCDD::Result` or a `BCDD::Context`.
53
+ - Add `BCDD::Result#type?` to check if the given type is the result type.
54
+ - Add `BCDD::Result#is?` as an alias for `BCDD::Result#type?`.
55
+ - Add `BCDD::Result#method_missing` to allow the type checking through method calls. For example, `result.ok?` will check if the result type is `:ok`.
56
+
57
+ > Note: All the methods above are available for the `BCDD::Context` as well.
58
+
59
+ ### Changed
60
+
61
+ - **(BREAKING)** Replace transitions with event_logs concept.
62
+ - The `BCDD::Result::Transitions` module was renamed to `BCDD::Result::EventLogs`
63
+ - The `BCDD::Result.transitions` to `BCDD::Result.event_logs`.
64
+
65
+ - **(BREAKING)** Change `BCDD::Result#deconstruct_keys` to return a hash with the keys `:type` and `:value` when one of these keys is present. Otherwise, it will return the value itself.
66
+
67
+ - **(BREAKING)** Replace trasitions metadata `:ids_tree`, and `:ids_matrix` with `:ids` property. This property is a hash with the following keys:
68
+ - `:tree`, a graph/tree representation of the transitions ids.
69
+ - `:level_parent`, a hash with the level (depth) of each transition and its parent id.
70
+ - `:matrix`, a matrix representation of the transitions ids. It is a simplification of the `:tree` property.
71
+
72
+ - Transform `BCDD::Result::Context` into `BCDD::Context`. But a constant alias was added to keep the old name. You can use `BCDD::Result::Context` or `BCDD::Context` to access the same class.
73
+
45
74
  ## [0.13.0] - 2024-02-01
46
75
 
47
76
  ### Added