lite-command 3.1.2 → 3.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6eb09ff348ac355723d82848c69c1673d7ffa2782b3bb0061b16ccbe205b9529
4
- data.tar.gz: 514ffc0ce29de277bd0969c29a51884d2509fd46b69e5cc6f85ded44fba4e827
3
+ metadata.gz: 39377d9ecb58d9d61ae0c99305d9db08672b7f97eb368194fc209b419cec1d0a
4
+ data.tar.gz: 5ec36c8fcb1d68e2a6bd3ae0866f687a9c04469d502dcba0bc7fe092a9b88351
5
5
  SHA512:
6
- metadata.gz: 00d47aa6fc59fa96895311bd78be8dcf3b283da16197f6973eb5db4100b61ef6303ab65673b695dfd51cfbc64ae63eca9b70adc0eba46763a25597fa1c1e6ba0
7
- data.tar.gz: 2e60eaa36e8b86cec861bc67bfa3bee12292c8edf8c92503e4339128f69f467421f94a4b53ee1a8a96a467cb25617cb6918d553419bbb6b1fbd23c817b2227dd
6
+ metadata.gz: 521be42ef9eab72ca99c2cd8dfba53ca3156538daf1e7715aff5123aefc6a70d7c4b439962306b8d1d22b87897bed1f54167353f98bea32d83ebf5eaaceffefe
7
+ data.tar.gz: 6c33d9b29e925c30b2e5abe06088fcfb0bccbd9cedbd241d76f398a89cfb7a679bf2a59b86ae766ccec69d94496640613d39995e9eca35ac3938d165a8e96eed
data/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.1.3] - 2024-10-26
10
+ ### Added
11
+ - Added passing `original_exception` to fault `!` calls
12
+ ### Changed
13
+ - Move monotonic clock to util
14
+ - Changed `metadata` to a keyword arg on fault `!` calls
15
+ ### Removed
16
+ - Removed unnecessary `Lite::Command::` prefixes
17
+ - Removed double if/unless eval for required validations
18
+
9
19
  ## [3.1.2] - 2024-10-26
10
20
  ### Changed
11
21
  - Make state set methods private
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-command (3.1.2)
4
+ lite-command (3.1.3)
5
5
  activemodel
6
6
  ostruct
7
7
 
data/README.md CHANGED
@@ -334,7 +334,7 @@ class DecryptSecretMessage < Lite::Command::Base
334
334
  if context.encrypted_message.empty?
335
335
  noop!("No message to decrypt")
336
336
  elsif context.encrypted_message.start_with?("== womp")
337
- invalid!("Invalid message start value", i18n: "gb.invalid_start_value")
337
+ invalid!("Invalid message start value", metadata: { i18n: "gb.invalid_start_value" })
338
338
  elsif context.encrypted_message.algo?(OldAlgo)
339
339
  failure!("Unsafe encryption algo detected")
340
340
  else
@@ -342,7 +342,7 @@ class DecryptSecretMessage < Lite::Command::Base
342
342
  end
343
343
  rescue CryptoError => e
344
344
  Apm.report_error(e)
345
- error!("Failed decryption due to: #{e}")
345
+ error!("Failed decryption due to: #{e}", original_exception: e)
346
346
  end
347
347
 
348
348
  end
@@ -541,7 +541,7 @@ class DecryptSecretMessage < Lite::Command::Base
541
541
  cmd = ValidateSecretMessage.call(context)
542
542
 
543
543
  if cmd.invalid?("Invalid magic numbers")
544
- error!(cmd) # Manually throw a specific fault
544
+ failure!(cmd) # Manually throw a specific fault
545
545
  elsif command.fault?
546
546
  throw!(cmd) # Automatically throws a matching fault
547
547
  else
@@ -11,11 +11,11 @@ module Lite
11
11
 
12
12
  base.include ActiveModel::Validations
13
13
 
14
- base.include Lite::Command::Internals::Attributes
15
- base.include Lite::Command::Internals::Calls
16
- base.include Lite::Command::Internals::Executions
17
- base.include Lite::Command::Internals::Faults
18
- base.include Lite::Command::Internals::Results
14
+ base.include Internals::Attributes
15
+ base.include Internals::Calls
16
+ base.include Internals::Executions
17
+ base.include Internals::Faults
18
+ base.include Internals::Results
19
19
 
20
20
  if Lite::Command.configuration.raise_dynamic_faults # rubocop:disable Style/GuardClause
21
21
  base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
@@ -32,7 +32,7 @@ module Lite
32
32
  alias ctx context
33
33
 
34
34
  def initialize(context = {})
35
- @context = Lite::Command::Context.build(context)
35
+ @context = Context.build(context)
36
36
  Utils.try(self, :on_pending)
37
37
  end
38
38
 
@@ -29,16 +29,16 @@ module Lite
29
29
  fault
30
30
  end
31
31
 
32
- def self.===(item)
33
- Utils.descendant_of?(self, item) || Utils.descendant_of?(item, self)
32
+ def self.===(object)
33
+ Utils.descendant_of?(self, object) || Utils.descendant_of?(object, self)
34
34
  end
35
35
 
36
36
  def type
37
37
  @type ||= self.class.name.split("::").last.downcase
38
38
  end
39
39
 
40
- def ===(item)
41
- Utils.descendant_of?(self, item)
40
+ def ===(object)
41
+ Utils.descendant_of?(self, object)
42
42
  end
43
43
 
44
44
  end
@@ -15,7 +15,6 @@ module Lite
15
15
  delegate(*attributes, from:)
16
16
 
17
17
  validates_each(*attributes, **options) do |command, method_name, _attr_value|
18
- next unless Utils.evaluate(command, options)
19
18
  next if command.errors.added?(from, :undefined) || command.errors.added?(method_name, :required)
20
19
 
21
20
  if !command.respond_to?(from, true)
@@ -55,7 +54,7 @@ module Lite
55
54
  def validate_context_attributes
56
55
  return if errors.empty?
57
56
 
58
- invalid!(errors.full_messages.join(". "), errors.messages)
57
+ invalid!(errors.full_messages.join(". "), metadata: errors.messages)
59
58
  end
60
59
 
61
60
  end
@@ -75,26 +75,29 @@ module Lite
75
75
  str.nil? || str == reason
76
76
  end
77
77
 
78
- def fault(object, s, m) # rubocop:disable Naming/MethodParameterName
78
+ def fault(object, s, m, oe) # rubocop:disable Naming/MethodParameterName
79
79
  return if s == SUCCESS || status != SUCCESS
80
80
 
81
81
  @status = s
82
82
  @metadata = m
83
83
 
84
- fault_streamer = Lite::Command::FaultStreamer.new(self, object)
84
+ fault_streamer = FaultStreamer.new(self, object)
85
85
  @reason ||= fault_streamer.reason
86
86
  @metadata ||= fault_streamer.metadata
87
87
  @caused_by ||= fault_streamer.caused_by
88
88
  @thrown_by ||= fault_streamer.thrown_by
89
- @fault_exception ||= fault_streamer.fault_exception
89
+
90
+ @fault_exception ||= fault_streamer.fault_exception
91
+ @original_exception ||= oe || fault_exception
90
92
  end
91
93
 
92
94
  FAULTS.each do |f|
93
- # eg: invalid!("idk") or failure!(fault) or error!("idk", { error_key: "some.error" })
94
- define_method(:"#{f}!") do |object, metadata = nil|
95
+ # eg: invalid!("idk") or failure!(fault) or error!("idk", metadata: { error_key: "some.error" }, original_exception: err)
96
+ define_method(:"#{f}!") do |object, metadata: nil, original_exception: nil|
95
97
  return unless success?
96
98
 
97
- fault(object, f, metadata)
99
+ fault(object, f, metadata, original_exception)
100
+
98
101
  raise(fault_exception)
99
102
  end
100
103
  end
@@ -75,8 +75,7 @@ module Lite
75
75
  around_execution { call }
76
76
  Utils.try(self, :on_success)
77
77
  rescue StandardError => e
78
- @original_exception = e
79
- fault(e, ERROR, metadata)
78
+ fault(e, ERROR, metadata, e)
80
79
  after_execution
81
80
  Utils.try(self, :"on_#{status}", e)
82
81
  ensure
@@ -87,8 +86,7 @@ module Lite
87
86
  around_execution { call }
88
87
  Utils.try(self, :on_success)
89
88
  rescue StandardError => e
90
- @original_exception = e
91
- fault(e, ERROR, metadata)
89
+ fault(e, ERROR, metadata, e)
92
90
  after_execution
93
91
  Utils.try(self, :"on_#{status}", e)
94
92
  raise(e)
@@ -53,11 +53,11 @@ module Lite
53
53
  end
54
54
 
55
55
  def start_monotonic_time
56
- @start_monotonic_time ||= Process.clock_gettime(Process::CLOCK_MONOTONIC)
56
+ @start_monotonic_time ||= Utils.monotonic_time
57
57
  end
58
58
 
59
59
  def stop_monotonic_time
60
- @stop_monotonic_time ||= Process.clock_gettime(Process::CLOCK_MONOTONIC)
60
+ @stop_monotonic_time ||= Utils.monotonic_time
61
61
  end
62
62
 
63
63
  def runtime
@@ -6,6 +6,10 @@ module Lite
6
6
 
7
7
  module_function
8
8
 
9
+ def monotonic_time
10
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
+ end
12
+
9
13
  def descendant_of?(object, other)
10
14
  object_class = object.respond_to?(:new) ? object : object.class
11
15
  other_class = other.respond_to?(:new) ? other : other.class
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Command
5
5
 
6
- VERSION = "3.1.2"
6
+ VERSION = "3.1.3"
7
7
 
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lite-command
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.2
4
+ version: 3.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez