convenient_service 0.25.0 → 0.27.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 (133) hide show
  1. checksums.yaml +4 -4
  2. data/lib/convenient_service/aliases.rb +0 -11
  3. data/lib/convenient_service/common/plugins/assigns_attributes_in_constructor/using_active_model_attribute_assignment/concern.rb +1 -1
  4. data/lib/convenient_service/common/plugins/assigns_attributes_in_constructor/using_dry_initializer/concern.rb +1 -1
  5. data/lib/convenient_service/common/plugins/caches_constructor_arguments/concern.rb +1 -1
  6. data/lib/convenient_service/common/plugins/can_be_copied/concern.rb +1 -1
  7. data/lib/convenient_service/common/plugins/can_have_callbacks/concern.rb +1 -1
  8. data/lib/convenient_service/common/plugins/can_have_callbacks/entities/type/concern.rb +1 -1
  9. data/lib/convenient_service/common/plugins/can_have_not_passed_arguments/concern.rb +1 -1
  10. data/lib/convenient_service/common/plugins/can_utilize_finite_loop/concern.rb +1 -1
  11. data/lib/convenient_service/common/plugins/has_attributes/using_active_model_attributes/concern.rb +1 -1
  12. data/lib/convenient_service/common/plugins/has_constructor/concern.rb +1 -1
  13. data/lib/convenient_service/common/plugins/has_constructor_without_initialize/concern.rb +1 -1
  14. data/lib/convenient_service/common/plugins/has_instance_proxy/concern.rb +1 -1
  15. data/lib/convenient_service/common/plugins/has_internals/concern.rb +1 -1
  16. data/lib/convenient_service/common/plugins/has_internals/entities/internals/concern.rb +1 -1
  17. data/lib/convenient_service/common/plugins/has_internals/entities/internals/plugins/has_cache/concern.rb +1 -1
  18. data/lib/convenient_service/common/plugins/has_j_send_result_duck_short_syntax/concern.rb +1 -1
  19. data/lib/convenient_service/common/plugins/has_memoization/using_memo_wise/concern.rb +1 -1
  20. data/lib/convenient_service/common/plugins/tries_to_convert_result_duck_to_result/middleware.rb +54 -0
  21. data/lib/convenient_service/common/plugins/tries_to_convert_result_duck_to_result.rb +8 -0
  22. data/lib/convenient_service/common/plugins.rb +1 -0
  23. data/lib/convenient_service/config/entities/option.rb +11 -9
  24. data/lib/convenient_service/config/entities/option_collection.rb +8 -4
  25. data/lib/convenient_service/core/aliases.rb +50 -0
  26. data/lib/convenient_service/core/entities/config/commands/build_entity_from_config_option.rb +63 -0
  27. data/lib/convenient_service/core/entities/config/commands.rb +1 -0
  28. data/lib/convenient_service/core/entities/config/entities/concerns/usual.rb +50 -0
  29. data/lib/convenient_service/core/entities/config/entities/concerns.rb +2 -0
  30. data/lib/convenient_service/core/entities/config/entities/method_middlewares/entities/middlewares/base/concern/class_methods.rb +9 -0
  31. data/lib/convenient_service/feature/plugins/can_have_entries/concern.rb +1 -1
  32. data/lib/convenient_service/feature/plugins/can_have_rspec_stubbed_entries/concern.rb +1 -1
  33. data/lib/convenient_service/feature/plugins/can_have_stubbed_entries/concern.rb +1 -1
  34. data/lib/convenient_service/feature/plugins/has_amazing_print_inspect/concern.rb +1 -1
  35. data/lib/convenient_service/feature/plugins/has_awesome_print_inspect/concern.rb +1 -1
  36. data/lib/convenient_service/feature/plugins/has_inspect/concern.rb +1 -1
  37. data/lib/convenient_service/service/configs/standard/v1.rb +2 -0
  38. data/lib/convenient_service/service/configs/standard.rb +21 -9
  39. data/lib/convenient_service/service/plugins/can_be_called/concern.rb +1 -1
  40. data/lib/convenient_service/service/plugins/can_have_connected_steps/concern.rb +1 -1
  41. data/lib/convenient_service/service/plugins/can_have_fallbacks/concern.rb +1 -1
  42. data/lib/convenient_service/service/plugins/can_have_handled_exceptions/concern.rb +1 -1
  43. data/lib/convenient_service/service/plugins/can_have_inline_services/concern.rb +1 -1
  44. data/lib/convenient_service/service/plugins/can_have_inline_services/entities/proxy.rb +5 -0
  45. data/lib/convenient_service/service/plugins/can_have_recalculations/concern.rb +1 -1
  46. data/lib/convenient_service/service/plugins/can_have_rspec_stubbed_results/concern.rb +1 -1
  47. data/lib/convenient_service/service/plugins/can_have_sequential_steps/concern.rb +1 -1
  48. data/lib/convenient_service/service/plugins/can_have_service_aware_enumerables/concern.rb +1 -10
  49. data/lib/convenient_service/service/plugins/can_have_steps/concern.rb +1 -1
  50. data/lib/convenient_service/service/plugins/can_have_steps/entities/method/concern.rb +1 -1
  51. data/lib/convenient_service/service/plugins/can_have_steps/entities/service/concern.rb +1 -1
  52. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/commands/cast_params.rb +0 -8
  53. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/commands/extract_params.rb +1 -2
  54. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/concern/instance_methods.rb +0 -11
  55. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/concern.rb +1 -1
  56. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_evaluated/concern.rb +1 -1
  57. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_evaluated/middleware.rb +43 -0
  58. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_evaluated.rb +1 -0
  59. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_method_step/concern.rb +1 -1
  60. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_service_step/concern.rb +1 -1
  61. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_strict/concern.rb +35 -0
  62. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_strict/middleware.rb +40 -0
  63. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_strict.rb +9 -0
  64. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_be_used_in_service_aware_enumerables/concern.rb +1 -1
  65. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/can_have_fallbacks/concern.rb +1 -1
  66. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_amazing_print_inspect/concern.rb +1 -1
  67. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_awesome_print_inspect/concern.rb +1 -1
  68. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_inspect/concern.rb +1 -1
  69. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_result/concern.rb +1 -1
  70. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_result/middleware.rb +0 -2
  71. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/plugins.rb +1 -0
  72. data/lib/convenient_service/service/plugins/can_have_steps/entities/step/structs/params.rb +2 -2
  73. data/lib/convenient_service/service/plugins/can_have_stubbed_results/concern.rb +1 -1
  74. data/lib/convenient_service/service/plugins/can_not_be_inherited/concern.rb +1 -1
  75. data/lib/convenient_service/service/plugins/has_amazing_print_inspect/concern.rb +1 -1
  76. data/lib/convenient_service/service/plugins/has_awesome_print_inspect/concern.rb +1 -1
  77. data/lib/convenient_service/service/plugins/has_inspect/concern.rb +1 -1
  78. data/lib/convenient_service/service/plugins/has_j_send_result/concern.rb +1 -1
  79. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/concern.rb +1 -1
  80. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_called/concern.rb +1 -1
  81. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_from_exception/concern.rb +1 -1
  82. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_from_fallback/concern.rb +1 -1
  83. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_from_handled_exception/concern.rb +6 -1
  84. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_from_unhandled_exception/concern.rb +1 -1
  85. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_own_result/concern.rb +1 -1
  86. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_strict/concern.rb +1 -1
  87. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_stubbed_result/concern.rb +1 -1
  88. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_be_used_in_service_aware_enumerables/concern.rb +1 -1
  89. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_have_checked_status/concern.rb +1 -1
  90. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_have_fallbacks/concern.rb +1 -1
  91. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_have_parent_result/concern.rb +1 -1
  92. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/can_have_step/concern.rb +1 -1
  93. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_amazing_print_inspect/concern.rb +1 -1
  94. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_awesome_print_inspect/concern.rb +1 -1
  95. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_inspect/concern.rb +1 -1
  96. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/concern/instance_methods.rb +7 -0
  97. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/concern.rb +1 -1
  98. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/code/concern.rb +1 -1
  99. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/code/plugins/has_amazing_print_inspect/concern.rb +1 -1
  100. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/code/plugins/has_awesome_print_inspect/concern.rb +1 -1
  101. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/code/plugins/has_inspect/concern.rb +1 -1
  102. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/data/concern.rb +1 -1
  103. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/data/plugins/has_amazing_print_inspect/concern.rb +1 -1
  104. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/data/plugins/has_awesome_print_inspect/concern.rb +1 -1
  105. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/data/plugins/has_inspect/concern.rb +1 -1
  106. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/message/concern.rb +1 -1
  107. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/message/plugins/has_amazing_print_inspect/concern.rb +1 -1
  108. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/message/plugins/has_awesome_print_inspect/concern.rb +1 -1
  109. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/message/plugins/has_inspect/concern.rb +1 -1
  110. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/concern.rb +1 -1
  111. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/can_be_checked/concern.rb +1 -1
  112. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/has_amazing_print_inspect/concern.rb +1 -1
  113. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/has_awesome_print_inspect/concern.rb +1 -1
  114. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/has_inspect/concern.rb +1 -1
  115. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_negated_result/concern.rb +1 -1
  116. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_pattern_matching_support/concern.rb +1 -1
  117. data/lib/convenient_service/service/plugins/has_j_send_result/entities/result/plugins/helps_to_learn_similarities_with_common_objects/concern.rb +1 -1
  118. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_active_model_validations/concern.rb +15 -3
  119. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_active_model_validations/middleware.rb +10 -2
  120. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_active_model_validations/no_op_concern.rb +116 -0
  121. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_active_model_validations.rb +1 -0
  122. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_dry_validation/concern.rb +19 -1
  123. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_dry_validation/middleware.rb +10 -2
  124. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_dry_validation/no_op_concern.rb +43 -0
  125. data/lib/convenient_service/service/plugins/has_j_send_result_params_validations/using_dry_validation.rb +1 -0
  126. data/lib/convenient_service/service/plugins/has_j_send_result_short_syntax/concern.rb +1 -1
  127. data/lib/convenient_service/service/plugins/has_j_send_result_status_check_short_syntax/concern.rb +1 -1
  128. data/lib/convenient_service/service/plugins/has_negated_j_send_result/concern.rb +1 -1
  129. data/lib/convenient_service/service/plugins/has_negated_result/concern.rb +1 -1
  130. data/lib/convenient_service/service/plugins/has_result/concern.rb +1 -1
  131. data/lib/convenient_service/service/plugins/raises_on_not_result_return_value/middleware.rb +7 -3
  132. data/lib/convenient_service/version.rb +1 -1
  133. metadata +12 -2
@@ -24,11 +24,13 @@ module ConvenientService
24
24
  :fallbacks,
25
25
  :rollbacks,
26
26
  :fault_tolerance,
27
+ :strictness,
27
28
  :inspect,
28
29
  :recalculation,
29
30
  :result_parents_trace,
30
31
  :code_review_automation,
31
32
  :short_syntax,
33
+ :duck_typing,
32
34
  :type_safety,
33
35
  :exception_services_trace,
34
36
  :per_instance_caching,
@@ -53,11 +55,13 @@ module ConvenientService
53
55
  :essential,
54
56
  :callbacks,
55
57
  :fallbacks,
58
+ :strictness,
56
59
  :inspect,
57
60
  :recalculation,
58
61
  :result_parents_trace,
59
62
  :code_review_automation,
60
63
  :short_syntax,
64
+ :duck_typing,
61
65
  :type_safety,
62
66
  :exception_services_trace,
63
67
  :per_instance_caching,
@@ -108,8 +112,8 @@ module ConvenientService
108
112
  use ConvenientService::Plugins::Common::AssignsAttributesInConstructor::UsingActiveModelAttributeAssignment::Concern if options.enabled?(:active_model_attribute_assignment)
109
113
  use ConvenientService::Plugins::Common::AssignsAttributesInConstructor::UsingDryInitializer::Concern if options.enabled?(:dry_initializer)
110
114
  use ConvenientService::Plugins::Common::HasAttributes::UsingActiveModelAttributes::Concern if options.enabled?(:active_model_attributes)
111
- use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingActiveModelValidations::Concern if options.enabled?(:active_model_validations)
112
- use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingDryValidation::Concern if options.enabled?(:dry_validation)
115
+ use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingActiveModelValidations::Concern.from(options[:active_model_validations], :skip_validations) if options.enabled?(:active_model_validations)
116
+ use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingDryValidation::Concern.from(options[:dry_validation], :skip_validations) if options.enabled?(:dry_validation)
113
117
  use ConvenientService::Plugins::Common::HasMemoization::UsingMemoWise::Concern if options.enabled?(:memo_wise)
114
118
  use ConvenientService::Plugins::Common::CanHaveNotPassedArguments::Concern if options.enabled?(:not_passed_arguments)
115
119
  use ConvenientService::Plugins::Common::CanUtilizeFiniteLoop::Concern if options.enabled?(:finite_loop)
@@ -134,8 +138,9 @@ module ConvenientService
134
138
  use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware if options.enabled?(:type_safety)
135
139
  use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance)
136
140
  use ConvenientService::Plugins::Common::CleansExceptionBacktrace::Middleware if options.enabled?(:backtrace_cleaner)
137
- use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingActiveModelValidations::Middleware if options.enabled?(:active_model_validations)
138
- use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingDryValidation::Middleware if options.enabled?(:dry_validation)
141
+ use ConvenientService::Plugins::Common::TriesToConvertResultDuckToResult::Middleware if options.enabled?(:duck_typing)
142
+ use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingActiveModelValidations::Middleware.from(options[:active_model_validations], :status, :skip_validations) if options.enabled?(:active_model_validations)
143
+ use ConvenientService::Plugins::Service::HasJSendResultParamsValidations::UsingDryValidation::Middleware.from(options[:dry_validation], :status, :skip_validations) if options.enabled?(:dry_validation)
139
144
  use ConvenientService::Plugins::Service::CanHaveConnectedSteps::Middleware if options.enabled?(:essential)
140
145
  end
141
146
 
@@ -146,6 +151,7 @@ module ConvenientService
146
151
  use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware if options.enabled?(:type_safety)
147
152
  use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance)
148
153
  use ConvenientService::Plugins::Common::CleansExceptionBacktrace::Middleware if options.enabled?(:backtrace_cleaner)
154
+ use ConvenientService::Plugins::Common::TriesToConvertResultDuckToResult::Middleware if options.enabled?(:duck_typing)
149
155
  end
150
156
 
151
157
  middlewares :regular_result do
@@ -160,27 +166,30 @@ module ConvenientService
160
166
  use ConvenientService::Plugins::Common::CachesReturnValue::Middleware if options.enabled?(:per_instance_caching)
161
167
  use ConvenientService::Plugins::Service::CollectsServicesInException::Middleware if options.enabled?(:exception_services_trace)
162
168
  use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware if options.enabled?(:type_safety)
163
- # use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance) # TODO: Dedicted `rescue`?
169
+ # use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance) # TODO: Dedicated `rescue`?
164
170
  use ConvenientService::Plugins::Common::CleansExceptionBacktrace::Middleware if options.enabled?(:backtrace_cleaner)
165
171
  use ConvenientService::Plugins::Service::CanHaveFallbacks::Middleware.with(status: :failure) if options.enabled?(:fallbacks)
172
+ use ConvenientService::Plugins::Common::TriesToConvertResultDuckToResult::Middleware if options.enabled?(:duck_typing)
166
173
  end
167
174
 
168
175
  middlewares :fallback_error_result do
169
176
  use ConvenientService::Plugins::Common::CachesReturnValue::Middleware if options.enabled?(:per_instance_caching)
170
177
  use ConvenientService::Plugins::Service::CollectsServicesInException::Middleware if options.enabled?(:exception_services_trace)
171
178
  use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware if options.enabled?(:type_safety)
172
- # use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance) # TODO: Dedicted `rescue`?
179
+ # use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance) # TODO: Dedicated `rescue`?
173
180
  use ConvenientService::Plugins::Common::CleansExceptionBacktrace::Middleware if options.enabled?(:backtrace_cleaner)
174
181
  use ConvenientService::Plugins::Service::CanHaveFallbacks::Middleware.with(status: :error) if options.enabled?(:fallbacks)
182
+ use ConvenientService::Plugins::Common::TriesToConvertResultDuckToResult::Middleware if options.enabled?(:duck_typing)
175
183
  end
176
184
 
177
185
  middlewares :fallback_result do
178
186
  use ConvenientService::Plugins::Common::CachesReturnValue::Middleware if options.enabled?(:per_instance_caching)
179
187
  use ConvenientService::Plugins::Service::CollectsServicesInException::Middleware if options.enabled?(:exception_services_trace)
180
188
  use ConvenientService::Plugins::Service::RaisesOnNotResultReturnValue::Middleware if options.enabled?(:type_safety)
181
- # use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance) # TODO: Dedicted `rescue`?
189
+ # use ConvenientService::Plugins::Service::RescuesResultUnhandledExceptions::Middleware if options.enabled?(:fault_tolerance) # TODO: Dedicated `rescue`?
182
190
  use ConvenientService::Plugins::Common::CleansExceptionBacktrace::Middleware if options.enabled?(:backtrace_cleaner)
183
191
  use ConvenientService::Plugins::Service::CanHaveFallbacks::Middleware.with(status: nil) if options.enabled?(:fallbacks)
192
+ use ConvenientService::Plugins::Common::TriesToConvertResultDuckToResult::Middleware if options.enabled?(:duck_typing)
184
193
  end
185
194
 
186
195
  middlewares :success do
@@ -220,7 +229,7 @@ module ConvenientService
220
229
  use ConvenientService::Plugins::Result::HasJSendStatusAndAttributes::Concern if options.enabled?(:essential)
221
230
  use ConvenientService::Plugins::Result::CanHaveStep::Concern if options.enabled?(:essential)
222
231
  use ConvenientService::Plugins::Result::CanBeCalled::Concern if options.enabled?(:essential)
223
- use ConvenientService::Plugins::Result::CanBeStrict::Concern if options.enabled?(:essential)
232
+ use ConvenientService::Plugins::Result::CanBeStrict::Concern if options.enabled?(:strictness)
224
233
  use ConvenientService::Plugins::Result::CanBeUsedInServiceAwareEnumerables::Concern if options.enabled?(:essential)
225
234
  use ConvenientService::Plugins::Result::HasNegatedResult::Concern if options.enabled?(:essential)
226
235
  use ConvenientService::Plugins::Result::HasPatternMatchingSupport::Concern if options.enabled?(:essential)
@@ -339,12 +348,13 @@ module ConvenientService
339
348
  concerns do
340
349
  use ConvenientService::Plugins::Common::HasInternals::Concern if options.enabled?(:essential)
341
350
  use ConvenientService::Plugins::Step::HasResult::Concern if options.enabled?(:essential)
342
- use ConvenientService::Plugins::Step::CanBeEvaluated::Concern if options.enabled?(:essential)
343
351
  use ConvenientService::Plugins::Step::CanBeServiceStep::Concern if options.enabled?(:essential)
344
352
  use ConvenientService::Plugins::Step::CanBeMethodStep::Concern if options.enabled?(:essential)
345
353
  use ConvenientService::Plugins::Step::CanBeUsedInServiceAwareEnumerables::Concern if options.enabled?(:essential)
346
354
  use ConvenientService::Plugins::Common::CanHaveCallbacks::Concern if options.enabled?(:callbacks)
347
355
  use ConvenientService::Plugins::Step::CanHaveFallbacks::Concern if options.enabled?(:fallbacks)
356
+ use ConvenientService::Plugins::Step::CanBeStrict::Concern if options.enabled?(:strictness)
357
+ use ConvenientService::Plugins::Step::CanBeEvaluated::Concern if options.any_enabled?(:rollbacks, :exception_services_trace)
348
358
  use ConvenientService::Plugins::Step::HasInspect::Concern if options.enabled?(:inspect)
349
359
  use ConvenientService::Plugins::Step::HasAwesomePrintInspect::Concern if options.enabled?(:awesome_print_inspect)
350
360
  use ConvenientService::Plugins::Step::HasAmazingPrintInspect::Concern if options.enabled?(:amazing_print_inspect)
@@ -353,6 +363,8 @@ module ConvenientService
353
363
 
354
364
  middlewares :result do
355
365
  use ConvenientService::Plugins::Common::CachesReturnValue::Middleware if options.enabled?(:per_instance_caching)
366
+ use ConvenientService::Plugins::Step::CanBeStrict::Middleware if options.enabled?(:strictness)
367
+ use ConvenientService::Plugins::Step::CanBeEvaluated::Middleware if options.any_enabled?(:rollbacks, :exception_services_trace)
356
368
  use ConvenientService::Plugins::Step::HasResult::Middleware if options.enabled?(:essential)
357
369
  use ConvenientService::Plugins::Step::CanHaveParentResult::Middleware if options.enabled?(:result_parents_trace)
358
370
  use ConvenientService::Plugins::Step::CanHaveFallbacks::Middleware.with(fallback_true_status: :failure) if options.enabled?(:fallbacks)
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanBeCalled
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  class_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveConnectedSteps
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  class_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveFallbacks
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  instance_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveHandledExceptions
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  instance_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveInlineServices
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  instance_methods do
16
16
  ##
@@ -40,6 +40,11 @@ module ConvenientService
40
40
  ##
41
41
  # @return [Boolean]
42
42
  #
43
+ # @internal
44
+ # TODO: Define `def self.name` to avoid the following `validates` exception.
45
+ # ArgumentError:
46
+ # Class name cannot be blank. You need to supply a name argument when anonymous class given
47
+ #
43
48
  def define
44
49
  return false if self.defined?
45
50
 
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveRecalculations
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  instance_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveRSpecStubbedResults
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  class_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveSequentialSteps
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  class_methods do
16
16
  ##
@@ -10,16 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveServiceAwareEnumerables
12
12
  module Concern
13
- include Support::Concern
14
-
15
- ##
16
- # TODO: Implement in `CanBeUsedInServiceAwareEnumerables`.
17
- #
18
- # class_methods do
19
- # def to_service_aware_iteration_block_value
20
- # end
21
- # end
22
- ##
13
+ include ::ConvenientService::Concern
23
14
 
24
15
  instance_methods do
25
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveSteps
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  class_methods do
16
16
  ##
@@ -15,7 +15,7 @@ module ConvenientService
15
15
  module Entities
16
16
  class Method
17
17
  module Concern
18
- include Support::Concern
18
+ include ::ConvenientService::Concern
19
19
 
20
20
  included do |method_klass|
21
21
  method_klass.include Support::Castable
@@ -15,7 +15,7 @@ module ConvenientService
15
15
  module Entities
16
16
  class Service
17
17
  module Concern
18
- include Support::Concern
18
+ include ::ConvenientService::Concern
19
19
 
20
20
  included do |service_klass|
21
21
  service_klass.include Support::Castable
@@ -35,7 +35,6 @@ module ConvenientService
35
35
  action: action,
36
36
  inputs: inputs,
37
37
  outputs: outputs,
38
- strict: strict,
39
38
  index: index,
40
39
  container: container,
41
40
  organizer: organizer,
@@ -64,13 +63,6 @@ module ConvenientService
64
63
  @outputs ||= cast_outputs
65
64
  end
66
65
 
67
- ##
68
- # @return [Boolean]
69
- #
70
- def strict
71
- Utils.memoize_including_falsy_values(self, :@strict) { Utils.to_bool(original_params.strict) }
72
- end
73
-
74
66
  ##
75
67
  # @return [Integer]
76
68
  #
@@ -43,11 +43,10 @@ module ConvenientService
43
43
  action: args.first,
44
44
  inputs: Utils::Array.wrap(kwargs[:in]),
45
45
  outputs: Utils::Array.wrap(kwargs[:out]),
46
- strict: kwargs[:strict],
47
46
  index: kwargs[:index],
48
47
  container: kwargs[:container],
49
48
  organizer: kwargs[:organizer],
50
- extra_kwargs: Utils::Hash.except(kwargs, [:in, :out, :strict, :index, :container, :organizer])
49
+ extra_kwargs: Utils::Hash.except(kwargs, [:in, :out, :index, :container, :organizer])
51
50
  )
52
51
  end
53
52
  end
@@ -182,8 +182,6 @@ module ConvenientService
182
182
 
183
183
  save_outputs_in_organizer!
184
184
 
185
- mark_as_evaluated!
186
-
187
185
  original_result
188
186
  end
189
187
 
@@ -234,15 +232,6 @@ module ConvenientService
234
232
  Utils.to_bool(organizer(raise_when_missing: false))
235
233
  end
236
234
 
237
- ##
238
- # @api public
239
- #
240
- # @return [Boolean]
241
- #
242
- def strict?
243
- params.strict
244
- end
245
-
246
235
  ##
247
236
  # @api private
248
237
  #
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Entities
15
15
  class Step
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  included do |step_class|
20
20
  step_class.include InstanceMethods
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module CanBeEvaluated
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # @author Marian Kostyk <mariankostyk13895@gmail.com>
5
+ # @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
6
+ ##
7
+
8
+ module ConvenientService
9
+ module Service
10
+ module Plugins
11
+ module CanHaveSteps
12
+ module Entities
13
+ class Step
14
+ module Plugins
15
+ module CanBeEvaluated
16
+ class Middleware < MethodChainMiddleware
17
+ intended_for :result, entity: :step
18
+
19
+ ##
20
+ # @return [ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step]
21
+ #
22
+ alias_method :step, :entity
23
+
24
+ ##
25
+ # @return [ConvenientService::Service::Plugins::HasJSendResult::Entities::Result]
26
+ # @raise [ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step::Plugins::CanBeMethodStep::Exceptions::StepIsNotMethodStep, ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step::Plugins::CanBeMethodStep::Exceptions::MethodForStepIsNotDefined]
27
+ #
28
+ def next(...)
29
+ result = chain.next(...)
30
+
31
+ step.mark_as_evaluated!
32
+
33
+ result
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -6,3 +6,4 @@
6
6
  ##
7
7
 
8
8
  require_relative "can_be_evaluated/concern"
9
+ require_relative "can_be_evaluated/middleware"
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module CanBeMethodStep
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module CanBeServiceStep
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # @author Marian Kostyk <mariankostyk13895@gmail.com>
5
+ # @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
6
+ ##
7
+
8
+ module ConvenientService
9
+ module Service
10
+ module Plugins
11
+ module CanHaveSteps
12
+ module Entities
13
+ class Step
14
+ module Plugins
15
+ module CanBeStrict
16
+ module Concern
17
+ include ::ConvenientService::Concern
18
+
19
+ instance_methods do
20
+ ##
21
+ # @return [Bool]
22
+ #
23
+ def strict?
24
+ params.extra_kwargs[:strict] == true
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # @author Marian Kostyk <mariankostyk13895@gmail.com>
5
+ # @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
6
+ ##
7
+
8
+ module ConvenientService
9
+ module Service
10
+ module Plugins
11
+ module CanHaveSteps
12
+ module Entities
13
+ class Step
14
+ module Plugins
15
+ module CanBeStrict
16
+ class Middleware < MethodChainMiddleware
17
+ intended_for :result, entity: :step
18
+
19
+ ##
20
+ # @return [ConvenientService::Service::Plugins::CanHaveSteps::Entities::Step]
21
+ #
22
+ alias_method :step, :entity
23
+
24
+ ##
25
+ # @return [ConvenientService::Service::Plugins::HasJSendResult::Entities::Result]
26
+ #
27
+ def next(...)
28
+ result = chain.next(...)
29
+
30
+ step.strict? ? result.strict : result
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # @author Marian Kostyk <mariankostyk13895@gmail.com>
5
+ # @license LGPLv3 <https://www.gnu.org/licenses/lgpl-3.0.html>
6
+ ##
7
+
8
+ require_relative "can_be_strict/concern"
9
+ require_relative "can_be_strict/middleware"
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module CanBeUsedInServiceAwareEnumerables
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module CanHaveFallbacks
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module HasAmazingPrintInspect
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module HasAwesomePrintInspect
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module HasInspect
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -14,7 +14,7 @@ module ConvenientService
14
14
  module Plugins
15
15
  module HasResult
16
16
  module Concern
17
- include Support::Concern
17
+ include ::ConvenientService::Concern
18
18
 
19
19
  instance_methods do
20
20
  ##
@@ -35,8 +35,6 @@ module ConvenientService
35
35
  def next(...)
36
36
  result = chain.next(...)
37
37
 
38
- result = result.strict if step.strict?
39
-
40
38
  result.copy(
41
39
  overrides: {
42
40
  kwargs: {
@@ -12,6 +12,7 @@ require_relative "plugins/can_be_service_step"
12
12
  require_relative "plugins/can_be_method_step"
13
13
  require_relative "plugins/can_be_used_in_service_aware_enumerables"
14
14
  require_relative "plugins/can_have_fallbacks"
15
+ require_relative "plugins/can_be_strict"
15
16
  require_relative "plugins/can_have_parent_result"
16
17
  require_relative "plugins/has_inspect"
17
18
  require_relative "plugins/raises_on_not_result_return_value"
@@ -12,9 +12,9 @@ module ConvenientService
12
12
  module Entities
13
13
  class Step
14
14
  module Structs
15
- Params = ::Struct.new(:action, :inputs, :outputs, :strict, :index, :container, :organizer, :extra_kwargs, keyword_init: true) do
15
+ Params = ::Struct.new(:action, :inputs, :outputs, :index, :container, :organizer, :extra_kwargs, keyword_init: true) do
16
16
  def to_callback_arguments
17
- Support::Arguments.new(action, in: inputs, out: outputs, strict: strict, index: index, **extra_kwargs)
17
+ Support::Arguments.new(action, in: inputs, out: outputs, index: index, **extra_kwargs)
18
18
  end
19
19
  end
20
20
  end
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanHaveStubbedResults
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  included do |service_class|
16
16
  service_class.extend ClassMethods
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module CanNotBeInherited
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  class_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module HasAmazingPrintInspect
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  instance_methods do
16
16
  ##
@@ -10,7 +10,7 @@ module ConvenientService
10
10
  module Plugins
11
11
  module HasAwesomePrintInspect
12
12
  module Concern
13
- include Support::Concern
13
+ include ::ConvenientService::Concern
14
14
 
15
15
  instance_methods do
16
16
  ##