dry-effects 0.3.0 → 0.3.1
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/CHANGELOG.md +9 -0
- data/lib/dry/effects/all.rb +1 -5
- data/lib/dry/effects/constructors.rb +29 -3
- data/lib/dry/effects/container.rb +1 -3
- data/lib/dry/effects/effect.rb +0 -2
- data/lib/dry/effects/effects/async.rb +0 -2
- data/lib/dry/effects/effects/cache.rb +0 -2
- data/lib/dry/effects/effects/cmp.rb +0 -2
- data/lib/dry/effects/effects/current_time.rb +0 -11
- data/lib/dry/effects/effects/defer.rb +0 -2
- data/lib/dry/effects/effects/env.rb +0 -2
- data/lib/dry/effects/effects/fork.rb +0 -2
- data/lib/dry/effects/effects/implicit.rb +0 -2
- data/lib/dry/effects/effects/interrupt.rb +0 -2
- data/lib/dry/effects/effects/lock.rb +0 -2
- data/lib/dry/effects/effects/parallel.rb +0 -2
- data/lib/dry/effects/effects/random.rb +0 -2
- data/lib/dry/effects/effects/reader.rb +0 -2
- data/lib/dry/effects/effects/resolve.rb +1 -6
- data/lib/dry/effects/effects/retry.rb +0 -7
- data/lib/dry/effects/effects/state.rb +0 -11
- data/lib/dry/effects/effects/timeout.rb +0 -2
- data/lib/dry/effects/effects/timestamp.rb +0 -2
- data/lib/dry/effects/extensions/auto_inject.rb +1 -2
- data/lib/dry/effects/frame.rb +0 -5
- data/lib/dry/effects/halt.rb +0 -1
- data/lib/dry/effects/inflector.rb +0 -2
- data/lib/dry/effects/initializer.rb +0 -2
- data/lib/dry/effects/instructions/execute.rb +0 -6
- data/lib/dry/effects/instructions/raise.rb +0 -6
- data/lib/dry/effects/instructions.rb +15 -0
- data/lib/dry/effects/provider/class_interface.rb +1 -3
- data/lib/dry/effects/provider.rb +0 -3
- data/lib/dry/effects/providers/async.rb +0 -3
- data/lib/dry/effects/providers/cache.rb +0 -3
- data/lib/dry/effects/providers/cmp.rb +0 -2
- data/lib/dry/effects/providers/current_time/time_generators.rb +1 -3
- data/lib/dry/effects/providers/current_time.rb +1 -3
- data/lib/dry/effects/providers/defer.rb +0 -2
- data/lib/dry/effects/providers/env.rb +0 -3
- data/lib/dry/effects/providers/fork.rb +0 -3
- data/lib/dry/effects/providers/implicit.rb +0 -2
- data/lib/dry/effects/providers/interrupt.rb +0 -4
- data/lib/dry/effects/providers/lock.rb +0 -3
- data/lib/dry/effects/providers/parallel.rb +0 -2
- data/lib/dry/effects/providers/random.rb +0 -2
- data/lib/dry/effects/providers/reader.rb +0 -2
- data/lib/dry/effects/providers/resolve.rb +0 -3
- data/lib/dry/effects/providers/retry.rb +0 -3
- data/lib/dry/effects/providers/state.rb +0 -3
- data/lib/dry/effects/providers/timeout.rb +0 -2
- data/lib/dry/effects/providers/timestamp.rb +2 -5
- data/lib/dry/effects/stack.rb +2 -6
- data/lib/dry/effects/version.rb +1 -1
- data/lib/dry/effects.rb +29 -4
- data/lib/dry-effects.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abc06cbff85f6545a5b05ebeb778737a316fadf9222c9e98c015e05a91e16cdf
|
4
|
+
data.tar.gz: 7023b7bc8b4807c957f561706f9cd8215cc181cf37de06ae218ec48fac48f9da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f240e7f7cf989b27dc384bf2ec84f6a2b021c8f9b76694167a493140d4beb0dfed96fcad700681154362b2cb8569051baf07e849993d8744b91ec24443ba32af
|
7
|
+
data.tar.gz: 60185bafd1a5f68a771c9bcd971412ca09e4cf5b81da8ea659706b713b1a55a67989ae4f59d8ae1c57adbf006731416a3f9e4c78254637a73e7a24ccd03c7203
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
+
## 0.3.1 2022-10-17
|
4
|
+
|
5
|
+
|
6
|
+
### Changed
|
7
|
+
|
8
|
+
- Add missing zeitwerk loader (@flash-gordon)
|
9
|
+
|
10
|
+
[Compare v0.3.0...v0.3.1](https://github.com/dry-rb/dry-effects/compare/v0.3.0...v0.3.1)
|
11
|
+
|
3
12
|
## 0.3.0 2022-10-15
|
4
13
|
|
5
14
|
|
data/lib/dry/effects/all.rb
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "concurrent/map"
|
4
|
-
require "dry/effects/inflector"
|
5
|
-
require "dry/effects/handler"
|
6
|
-
|
7
3
|
module Dry
|
8
4
|
module Effects
|
9
5
|
default = %i[
|
@@ -40,7 +36,7 @@ module Dry
|
|
40
36
|
Providers.const_get(Inflector.camelize(key))
|
41
37
|
end
|
42
38
|
|
43
|
-
Handler.singleton_class.
|
39
|
+
Handler.singleton_class.define_method(class_name) do |*args, **kwargs|
|
44
40
|
::Dry::Effects.providers[key].mixin(*args, **kwargs)
|
45
41
|
end
|
46
42
|
end
|
@@ -3,9 +3,35 @@
|
|
3
3
|
module Dry
|
4
4
|
module Effects
|
5
5
|
module Constructors
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
extend self
|
7
|
+
|
8
|
+
# @api public
|
9
|
+
def CurrentTime(**kwargs)
|
10
|
+
if kwargs.empty?
|
11
|
+
Effects::CurrentTime::CurrentTime
|
12
|
+
else
|
13
|
+
Effects::CurrentTime::CurrentTime.(**kwargs)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# @api public
|
18
|
+
def Resolve(identifier)
|
19
|
+
Effects::Resolve::Resolve.(identifier)
|
20
|
+
end
|
21
|
+
|
22
|
+
# @api public
|
23
|
+
def Retry(scope)
|
24
|
+
Effects::Retry::Retry.new(type: :retry, scope: scope)
|
25
|
+
end
|
26
|
+
|
27
|
+
# @api public
|
28
|
+
def Read(scope)
|
29
|
+
Effects::State::State.new(type: :state, name: :read, scope: scope)
|
30
|
+
end
|
31
|
+
|
32
|
+
# @api public
|
33
|
+
def Write(scope, value)
|
34
|
+
Effects::State::State.new(type: :state, name: :write, scope: scope, payload: [value])
|
9
35
|
end
|
10
36
|
end
|
11
37
|
end
|
data/lib/dry/effects/effect.rb
CHANGED
@@ -1,22 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/effect"
|
4
|
-
require "dry/effects/constructors"
|
5
|
-
|
6
3
|
module Dry
|
7
4
|
module Effects
|
8
5
|
module Effects
|
9
6
|
class CurrentTime < ::Module
|
10
7
|
CurrentTime = Effect.new(type: :current_time)
|
11
8
|
|
12
|
-
Constructors.register(:CurrentTime) do |**kwargs|
|
13
|
-
if kwargs.empty?
|
14
|
-
CurrentTime
|
15
|
-
else
|
16
|
-
CurrentTime.(**kwargs)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
9
|
def initialize(**options)
|
21
10
|
super()
|
22
11
|
|
@@ -1,20 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/effect"
|
4
|
-
require "dry/effects/constructors"
|
5
|
-
|
6
3
|
module Dry
|
7
4
|
module Effects
|
8
5
|
module Effects
|
9
6
|
class Resolve < ::Module
|
10
|
-
DependencyNameInvalid = Class.new(StandardError)
|
7
|
+
DependencyNameInvalid = ::Class.new(StandardError)
|
11
8
|
|
12
9
|
VALID_NAME = /([a-z_][a-zA-Z_0-9]*)$/.freeze
|
13
10
|
|
14
11
|
Resolve = Effect.new(type: :resolve)
|
15
12
|
|
16
|
-
Constructors.register(:Resolve) { Resolve.(_1) }
|
17
|
-
|
18
13
|
def initialize(*keys, **aliases)
|
19
14
|
super()
|
20
15
|
|
@@ -1,8 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/effect"
|
4
|
-
require "dry/effects/constructors"
|
5
|
-
|
6
3
|
module Dry
|
7
4
|
module Effects
|
8
5
|
module Effects
|
@@ -13,10 +10,6 @@ module Dry
|
|
13
10
|
option :scope
|
14
11
|
end
|
15
12
|
|
16
|
-
Constructors.register(:Retry) do |scope|
|
17
|
-
Retry.new(type: :retry, scope: scope)
|
18
|
-
end
|
19
|
-
|
20
13
|
def initialize
|
21
14
|
super
|
22
15
|
|
@@ -1,8 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/effect"
|
4
|
-
require "dry/effects/constructors"
|
5
|
-
|
6
3
|
module Dry
|
7
4
|
module Effects
|
8
5
|
module Effects
|
@@ -13,14 +10,6 @@ module Dry
|
|
13
10
|
option :scope
|
14
11
|
end
|
15
12
|
|
16
|
-
Constructors.register(:Read) do |scope|
|
17
|
-
State.new(type: :state, name: :read, scope: scope)
|
18
|
-
end
|
19
|
-
|
20
|
-
Constructors.register(:Write) do |scope, value|
|
21
|
-
State.new(type: :state, name: :write, scope: scope, payload: [value])
|
22
|
-
end
|
23
|
-
|
24
13
|
def initialize(scope, default: Undefined, writer: true, as: scope)
|
25
14
|
super()
|
26
15
|
|
@@ -2,12 +2,11 @@
|
|
2
2
|
|
3
3
|
require "concurrent/map"
|
4
4
|
require "dry/auto_inject/strategies/constructor"
|
5
|
-
require "dry/effects/effects/resolve"
|
6
5
|
|
7
6
|
module Dry
|
8
7
|
module Effects
|
9
8
|
class DryAutoEffectsStrategies
|
10
|
-
extend Dry::Container::Mixin
|
9
|
+
extend ::Dry::Container::Mixin
|
11
10
|
|
12
11
|
class Base < AutoInject::Strategies::Constructor
|
13
12
|
private
|
data/lib/dry/effects/frame.rb
CHANGED
data/lib/dry/effects/halt.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/instruction"
|
4
|
-
|
5
3
|
module Dry
|
6
4
|
module Effects
|
7
5
|
module Instructions
|
@@ -17,10 +15,6 @@ module Dry
|
|
17
15
|
block.call
|
18
16
|
end
|
19
17
|
end
|
20
|
-
|
21
|
-
def self.Execute(&block)
|
22
|
-
Execute.new(block)
|
23
|
-
end
|
24
18
|
end
|
25
19
|
end
|
26
20
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/instruction"
|
4
|
-
|
5
3
|
module Dry
|
6
4
|
module Effects
|
7
5
|
module Instructions
|
@@ -17,10 +15,6 @@ module Dry
|
|
17
15
|
raise error
|
18
16
|
end
|
19
17
|
end
|
20
|
-
|
21
|
-
def self.Raise(error)
|
22
|
-
Raise.new(error)
|
23
|
-
end
|
24
18
|
end
|
25
19
|
end
|
26
20
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/frame"
|
4
|
-
|
5
3
|
module Dry
|
6
4
|
module Effects
|
7
5
|
class Provider
|
@@ -14,7 +12,7 @@ module Dry
|
|
14
12
|
@effects = ::Hash.new do |es, type|
|
15
13
|
@mutex.synchronize do
|
16
14
|
es.fetch(type) do
|
17
|
-
es[type] = Class.new(Provider).tap do |provider|
|
15
|
+
es[type] = ::Class.new(Provider).tap do |provider|
|
18
16
|
provider.type type
|
19
17
|
end
|
20
18
|
end
|
data/lib/dry/effects/provider.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/provider"
|
4
|
-
|
5
3
|
module Dry
|
6
4
|
module Effects
|
7
5
|
module Providers
|
8
6
|
class CurrentTime < Provider[:current_time]
|
9
|
-
module
|
7
|
+
module TimeGenerators
|
10
8
|
FixedTimeGenerator = lambda do
|
11
9
|
time = ::Time.now
|
12
10
|
lambda do |refresh: false, **|
|
@@ -1,15 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "time"
|
4
|
-
require "dry/effects/provider"
|
5
|
-
require "dry/effects/providers/current_time/time_generators"
|
6
4
|
|
7
5
|
module Dry
|
8
6
|
module Effects
|
9
7
|
module Providers
|
10
8
|
class CurrentTime < Provider[:current_time]
|
11
9
|
include ::Dry::Equalizer(:fixed, :round, inspect: false)
|
12
|
-
include
|
10
|
+
include TimeGenerators
|
13
11
|
|
14
12
|
Locate = Effect.new(type: :current_time, name: :locate)
|
15
13
|
|
@@ -1,14 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/provider"
|
4
|
-
require "dry/effects/providers/current_time"
|
5
|
-
|
6
3
|
module Dry
|
7
4
|
module Effects
|
8
5
|
module Providers
|
9
6
|
class Timestamp < Provider[:timestamp]
|
10
|
-
include Dry::Equalizer(:round)
|
11
|
-
include CurrentTime::
|
7
|
+
include ::Dry::Equalizer(:round)
|
8
|
+
include CurrentTime::TimeGenerators
|
12
9
|
|
13
10
|
Locate = Effect.new(type: :timestamp, name: :locate)
|
14
11
|
|
data/lib/dry/effects/stack.rb
CHANGED
@@ -1,15 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/effects/initializer"
|
4
|
-
require "dry/effects/effect"
|
5
|
-
require "dry/effects/instructions/raise"
|
6
|
-
|
7
3
|
module Dry
|
8
4
|
module Effects
|
9
5
|
class Stack
|
10
6
|
extend Initializer
|
11
|
-
include Enumerable
|
12
|
-
include Dry::Equalizer(:providers)
|
7
|
+
include ::Enumerable
|
8
|
+
include ::Dry::Equalizer(:providers)
|
13
9
|
|
14
10
|
param :providers, default: -> { [] }
|
15
11
|
|
data/lib/dry/effects/version.rb
CHANGED
data/lib/dry/effects.rb
CHANGED
@@ -1,21 +1,45 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "zeitwerk"
|
4
|
+
require "concurrent/map"
|
5
|
+
|
3
6
|
require "dry/core"
|
4
|
-
require "dry/
|
7
|
+
require "dry/container"
|
8
|
+
require "dry/inflector"
|
9
|
+
require "dry/initializer"
|
10
|
+
|
5
11
|
require "dry/effects/container"
|
12
|
+
require "dry/effects/inflector"
|
13
|
+
require "dry/effects/initializer"
|
14
|
+
require "dry/effects/extensions"
|
6
15
|
require "dry/effects/errors"
|
7
|
-
require "dry/effects/
|
16
|
+
require "dry/effects/version"
|
8
17
|
|
9
18
|
module Dry
|
10
19
|
module Effects
|
11
20
|
include Core::Constants
|
12
21
|
|
13
|
-
class Error < StandardError; end
|
22
|
+
class Error < ::StandardError; end
|
14
23
|
|
15
24
|
@effects = Container.new
|
16
25
|
@providers = Container.new
|
17
26
|
|
18
27
|
class << self
|
28
|
+
# @api private
|
29
|
+
def loader
|
30
|
+
@loader ||= ::Zeitwerk::Loader.new.tap do |loader|
|
31
|
+
root = ::File.expand_path("..", __dir__)
|
32
|
+
loader.tag = "dry-effects"
|
33
|
+
loader.inflector = ::Zeitwerk::GemInflector.new("#{root}/dry-effects.rb")
|
34
|
+
loader.push_dir(root)
|
35
|
+
loader.ignore(
|
36
|
+
"#{root}/dry-effects.rb",
|
37
|
+
"#{root}/dry/effects/{all,error,extensions,inflector,initializer,version}.rb",
|
38
|
+
"#{root}/dry/effects/extensions/**/*.rb",
|
39
|
+
)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
19
43
|
attr_reader :effects, :providers
|
20
44
|
|
21
45
|
# Handle an effect.
|
@@ -66,8 +90,9 @@ module Dry
|
|
66
90
|
Handler.new(...)
|
67
91
|
end
|
68
92
|
end
|
93
|
+
|
94
|
+
loader.setup
|
69
95
|
end
|
70
96
|
end
|
71
97
|
|
72
98
|
require "dry/effects/all"
|
73
|
-
require "dry/effects/extensions"
|
data/lib/dry-effects.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "dry/effects"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-effects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Shilnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -151,6 +151,7 @@ files:
|
|
151
151
|
- LICENSE
|
152
152
|
- README.md
|
153
153
|
- dry-effects.gemspec
|
154
|
+
- lib/dry-effects.rb
|
154
155
|
- lib/dry/effects.rb
|
155
156
|
- lib/dry/effects/all.rb
|
156
157
|
- lib/dry/effects/constructors.rb
|
@@ -186,6 +187,7 @@ files:
|
|
186
187
|
- lib/dry/effects/inflector.rb
|
187
188
|
- lib/dry/effects/initializer.rb
|
188
189
|
- lib/dry/effects/instruction.rb
|
190
|
+
- lib/dry/effects/instructions.rb
|
189
191
|
- lib/dry/effects/instructions/execute.rb
|
190
192
|
- lib/dry/effects/instructions/raise.rb
|
191
193
|
- lib/dry/effects/provider.rb
|