bcdd-result 0.13.0 → 1.1.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 +61 -21
  4. data/README.md +397 -227
  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 +6 -5
  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 +11 -11
  43. data/lib/bcdd/context.rb +115 -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: 65c4eca57e46f7c344320d812e2bf95d4ca6e1779fe03d3f0903baf747998f4c
4
+ data.tar.gz: ca668bce32035b2dacf6d4b5cde769b3da0302ebb005ae6d920267b79b4e1777
5
5
  SHA512:
6
- metadata.gz: f00e7da2c78ae1c88998b05af02f4ebea701a22797a0a103072ce7bc2532331ecfa2202f677aa9f107e30b33b866421648a98179ddc5c4239b33ca926e584490
7
- data.tar.gz: 715b1015481ed2bb317dcbbf6834832fe8df5e3542f0824606c4127c23811357459a995585c27cfd4366410b5d9ca79843cf1cee3ef04357e2a416d2e042379d
6
+ metadata.gz: 659e109cbf9782ea83b351d775b4d854d40769cefc5193590cc45fcd2b4857e8b321fb92be479ab5ecff0affcc765c2d8ddafabcc8a57fad6f2a7f5c4be5f9c5
7
+ data.tar.gz: 047f861d008d7f4831d3b351c7162e4eda9108febad3ae425a14dbe9e092502010de44d56854f9c04e3c61a470ba6f6fc7ff1931a0ac8952460930b7e650f637
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,87 @@
1
1
  - [\[Unreleased\]](#unreleased)
2
- - [\[0.13.0\] - 2024-02-01](#0130---2024-02-01)
2
+ - [1.1.0 - 2024-03-25](#110---2024-03-25)
3
3
  - [Added](#added)
4
- - [Changed](#changed)
5
- - [\[0.12.0\] - 2024-01-07](#0120---2024-01-07)
4
+ - [1.0.0 - 2024-03-16](#100---2024-03-16)
6
5
  - [Added](#added-1)
7
- - [Changed](#changed-1)
8
- - [\[0.11.0\] - 2024-01-02](#0110---2024-01-02)
6
+ - [Changed](#changed)
7
+ - [\[0.13.0\] - 2024-02-01](#0130---2024-02-01)
9
8
  - [Added](#added-2)
9
+ - [Changed](#changed-1)
10
+ - [\[0.12.0\] - 2024-01-07](#0120---2024-01-07)
11
+ - [Added](#added-3)
10
12
  - [Changed](#changed-2)
13
+ - [\[0.11.0\] - 2024-01-02](#0110---2024-01-02)
14
+ - [Added](#added-4)
15
+ - [Changed](#changed-3)
11
16
  - [\[0.10.0\] - 2023-12-31](#0100---2023-12-31)
12
- - [Added](#added-3)
17
+ - [Added](#added-5)
13
18
  - [\[0.9.1\] - 2023-12-12](#091---2023-12-12)
14
- - [Changed](#changed-3)
19
+ - [Changed](#changed-4)
15
20
  - [Fixed](#fixed)
16
21
  - [\[0.9.0\] - 2023-12-12](#090---2023-12-12)
17
- - [Added](#added-4)
18
- - [Changed](#changed-4)
19
- - [\[0.8.0\] - 2023-12-11](#080---2023-12-11)
20
- - [Added](#added-5)
22
+ - [Added](#added-6)
21
23
  - [Changed](#changed-5)
24
+ - [\[0.8.0\] - 2023-12-11](#080---2023-12-11)
25
+ - [Added](#added-7)
26
+ - [Changed](#changed-6)
22
27
  - [Removed](#removed)
23
28
  - [\[0.7.0\] - 2023-10-27](#070---2023-10-27)
24
- - [Added](#added-6)
25
- - [Changed](#changed-6)
26
- - [\[0.6.0\] - 2023-10-11](#060---2023-10-11)
27
- - [Added](#added-7)
28
- - [Changed](#changed-7)
29
- - [\[0.5.0\] - 2023-10-09](#050---2023-10-09)
30
29
  - [Added](#added-8)
31
- - [\[0.4.0\] - 2023-09-28](#040---2023-09-28)
30
+ - [Changed](#changed-7)
31
+ - [\[0.6.0\] - 2023-10-11](#060---2023-10-11)
32
32
  - [Added](#added-9)
33
33
  - [Changed](#changed-8)
34
+ - [\[0.5.0\] - 2023-10-09](#050---2023-10-09)
35
+ - [Added](#added-10)
36
+ - [\[0.4.0\] - 2023-09-28](#040---2023-09-28)
37
+ - [Added](#added-11)
38
+ - [Changed](#changed-9)
34
39
  - [Removed](#removed-1)
35
40
  - [\[0.3.0\] - 2023-09-26](#030---2023-09-26)
36
- - [Added](#added-10)
41
+ - [Added](#added-12)
37
42
  - [\[0.2.0\] - 2023-09-26](#020---2023-09-26)
38
- - [Added](#added-11)
43
+ - [Added](#added-13)
39
44
  - [Removed](#removed-2)
40
45
  - [\[0.1.0\] - 2023-09-25](#010---2023-09-25)
41
- - [Added](#added-12)
46
+ - [Added](#added-14)
42
47
 
43
48
  ## [Unreleased]
44
49
 
50
+ ## 1.1.0 - 2024-03-25
51
+
52
+ ### Added
53
+
54
+ - Add some Hash's methods to `BCDD::Context`. They are:
55
+ - `#slice` to extract only the desired keys.
56
+ - `#[]`, `#dig`, `#fetch` to access the values.
57
+ - `#values_at` and `#fetch_values` to get the values of the desired keys.
58
+
59
+ ## 1.0.0 - 2024-03-16
60
+
61
+ ### Added
62
+
63
+ - 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`.
64
+ - Add `BCDD::Result#type?` to check if the given type is the result type.
65
+ - Add `BCDD::Result#is?` as an alias for `BCDD::Result#type?`.
66
+ - 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`.
67
+
68
+ > Note: All the methods above are available for the `BCDD::Context` as well.
69
+
70
+ ### Changed
71
+
72
+ - **(BREAKING)** Replace transitions with event_logs concept.
73
+ - The `BCDD::Result::Transitions` module was renamed to `BCDD::Result::EventLogs`
74
+ - The `BCDD::Result.transitions` to `BCDD::Result.event_logs`.
75
+
76
+ - **(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.
77
+
78
+ - **(BREAKING)** Replace trasitions metadata `:ids_tree`, and `:ids_matrix` with `:ids` property. This property is a hash with the following keys:
79
+ - `:tree`, a graph/tree representation of the transitions ids.
80
+ - `:level_parent`, a hash with the level (depth) of each transition and its parent id.
81
+ - `:matrix`, a matrix representation of the transitions ids. It is a simplification of the `:tree` property.
82
+
83
+ - 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.
84
+
45
85
  ## [0.13.0] - 2024-02-01
46
86
 
47
87
  ### Added