dry-events 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 983fa384a773f8ee0d4fe85e39498d7835181e3b078db4b6b8468570073af308
4
- data.tar.gz: 0c6eb00bf412b71a82c532bb8cc6676b8653d6c22481865530bcacae98aa1768
3
+ metadata.gz: b060fcc9482241a19cd23e817717d3702d5e075a1df70358a212d9865d79dde8
4
+ data.tar.gz: c3d87474731b5cce582f5d337725a0bcdd56711c2d8571d8038302b813d051fa
5
5
  SHA512:
6
- metadata.gz: 7956480989534c8f40eaa40f7346e9579e85ee9b8ec42b8a1b3e779a5800bbd31ab6634825ac2da4f9dca8820995242376d2bab3bec6208251ee50f9d06d352d
7
- data.tar.gz: aef2606682398f69a76b958c395354f51f5c93a5c03a7dd0b47e4473d7484109c8c9f330be8f9b544634efa606cc56b906d706f8dc08a5e27a63ed2f171b236b
6
+ metadata.gz: 904216a0c90b2a6108c2743a681855d46d64d6b419bda61b84d19d4721081f88f1bd5aa2d5e209383b47178d2682884ce69f72a3b3819782929d52ab5e887166
7
+ data.tar.gz: 53f854b310a1b69acb9562c93e35e06f2a8be370c6a9cfbe49095268ec544638df4397b974d3e5232f2ffcf7fc3fefd7d810b1a361d3d4fe5dae9958b29375da
data/CHANGELOG.md CHANGED
@@ -1,18 +1,27 @@
1
1
  <!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
2
2
 
3
- ## 1.0.0 2022-11-04
3
+ ## 1.1.0 2025-01-04
4
4
 
5
5
 
6
6
  ### Fixed
7
7
 
8
- - Make listeners hash thread-safe (via #16) (@mensfeld)
8
+ - Calling `Publisher#unsubscribe` when there's a block subscription now works (via #17) (@Aerdayne)
9
9
 
10
10
  ### Changed
11
11
 
12
- - This version is compatible with recently released dry-rb dependencies (@flash-gordon)
13
- - Bumped version to 1.0.0 (@solnic)
12
+ - Set minimum Ruby version to 3.1.0 (@flash-gordon)
13
+
14
+ [Compare v1.0.1...v1.1.0](https://github.com/dry-rb/dry-events/compare/v1.0.1...v1.1.0)
15
+
16
+ ## 1.0.1 2022-11-20
17
+
18
+
19
+ ### Fixed
20
+
21
+ - Make listeners hash thread-safe (via #16) (@mensfeld)
22
+
14
23
 
15
- [Compare v1.0.0...v1.0.0](https://github.com/dry-rb/dry-events/compare/v1.0.0...v1.0.0)
24
+ [Compare v1.0.0...v1.0.1](https://github.com/dry-rb/dry-events/compare/v1.0.0...v1.0.1)
16
25
 
17
26
  ## 1.0.0 2022-11-04
18
27
 
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015-2022 dry-rb team
3
+ Copyright (c) 2015-2023 dry-rb team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
data/README.md CHANGED
@@ -1,29 +1,21 @@
1
1
  <!--- this file is synced from dry-rb/template-gem project -->
2
2
  [gem]: https://rubygems.org/gems/dry-events
3
3
  [actions]: https://github.com/dry-rb/dry-events/actions
4
- [codacy]: https://www.codacy.com/gh/dry-rb/dry-events
5
- [chat]: https://dry-rb.zulipchat.com
6
- [inchpages]: http://inch-ci.org/github/dry-rb/dry-events
7
4
 
8
- # dry-events [![Join the chat at https://dry-rb.zulipchat.com](https://img.shields.io/badge/dry--rb-join%20chat-%23346b7a.svg)][chat]
9
-
10
- [![Gem Version](https://badge.fury.io/rb/dry-events.svg)][gem]
11
- [![CI Status](https://github.com/dry-rb/dry-events/workflows/ci/badge.svg)][actions]
12
- [![Codacy Badge](https://api.codacy.com/project/badge/Grade/3170162485134ea3b778c7e20e180b26)][codacy]
13
- [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/3170162485134ea3b778c7e20e180b26)][codacy]
14
- [![Inline docs](http://inch-ci.org/github/dry-rb/dry-events.svg?branch=main)][inchpages]
5
+ # dry-events [![Gem Version](https://badge.fury.io/rb/dry-events.svg)][gem] [![CI Status](https://github.com/dry-rb/dry-events/workflows/ci/badge.svg)][actions]
15
6
 
16
7
  ## Links
17
8
 
18
9
  * [User documentation](https://dry-rb.org/gems/dry-events)
19
10
  * [API documentation](http://rubydoc.info/gems/dry-events)
11
+ * [Forum](https://discourse.dry-rb.org)
20
12
 
21
13
  ## Supported Ruby versions
22
14
 
23
15
  This library officially supports the following Ruby versions:
24
16
 
25
- * MRI `>= 2.7.0`
26
- * jruby `>= 9.3` (postponed until 2.7 is supported)
17
+ * MRI `>= 3.0.0`
18
+ * jruby `>= 9.4` (not tested on CI)
27
19
 
28
20
  ## License
29
21
 
data/dry-events.gemspec CHANGED
@@ -21,18 +21,15 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = []
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
25
- spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-events/blob/main/CHANGELOG.md"
26
- spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-events"
27
- spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-events/issues"
24
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
25
+ spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-events/blob/main/CHANGELOG.md"
26
+ spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-events"
27
+ spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-events/issues"
28
+ spec.metadata["rubygems_mfa_required"] = "true"
28
29
 
29
- spec.required_ruby_version = ">= 2.7.0"
30
+ spec.required_ruby_version = ">= 3.1.0"
30
31
 
31
32
  # to update dependencies edit project.yml
32
- spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
33
- spec.add_runtime_dependency "dry-core", "~> 1.0", "< 2"
34
-
35
- spec.add_development_dependency "bundler"
36
- spec.add_development_dependency "rake"
37
- spec.add_development_dependency "rspec"
33
+ spec.add_dependency "concurrent-ruby", "~> 1.0"
34
+ spec.add_dependency "dry-core", "~> 1.1"
38
35
  end
@@ -63,6 +63,8 @@ module Dry
63
63
  listeners.each do |id, memo|
64
64
  memo.each do |tuple|
65
65
  current_listener, _ = tuple
66
+ next unless current_listener.is_a?(Method)
67
+
66
68
  listeners[id].delete(tuple) if current_listener.receiver.equal?(listener)
67
69
  end
68
70
  end
@@ -79,8 +81,8 @@ module Dry
79
81
  listeners.values.any? do |value|
80
82
  value.any? do |block, _|
81
83
  case listener
82
- when Proc then block.equal?(listener)
83
- when Method then listener.owner == block.owner && listener.name == block.name
84
+ when ::Proc then block.equal?(listener)
85
+ when ::Method then listener.owner == block.owner && listener.name == block.name
84
86
  end
85
87
  end
86
88
  end
@@ -89,7 +91,7 @@ module Dry
89
91
  # @api private
90
92
  def can_handle?(object_or_event_id)
91
93
  case object_or_event_id
92
- when String, Symbol
94
+ when ::String, ::Symbol
93
95
  events.key?(object_or_event_id)
94
96
  else
95
97
  events
@@ -4,9 +4,9 @@ require "concurrent/map"
4
4
 
5
5
  module Dry
6
6
  module Events
7
- include Dry::Core::Constants
7
+ include ::Dry::Core::Constants
8
8
 
9
- LISTENERS_HASH = Concurrent::Map.new do |h, k|
9
+ LISTENERS_HASH = ::Concurrent::Map.new do |h, k|
10
10
  h.compute_if_absent(k) { [] }
11
11
  end
12
12
  end
@@ -8,9 +8,9 @@ module Dry
8
8
  #
9
9
  # @api public
10
10
  class Event
11
- include Dry::Equalizer(:id, :payload)
11
+ include ::Dry::Equalizer(:id, :payload)
12
12
 
13
- InvalidEventNameError = Class.new(StandardError) do
13
+ InvalidEventNameError = ::Class.new(::StandardError) do
14
14
  # @api private
15
15
  def initialize
16
16
  super("please provide a valid event name, it could be either String or Symbol")
@@ -26,7 +26,7 @@ module Dry
26
26
 
27
27
  # @api private
28
28
  def self.new(id, payload = EMPTY_HASH)
29
- return super(id, payload) if (id.is_a?(String) || id.is_a?(Symbol)) && !id.empty?
29
+ return super if (id.is_a?(::String) || id.is_a?(::Symbol)) && !id.empty?
30
30
 
31
31
  raise InvalidEventNameError
32
32
  end
@@ -11,7 +11,7 @@ module Dry
11
11
  #
12
12
  # @api private
13
13
  class Filter
14
- NO_MATCH = Object.new.freeze
14
+ NO_MATCH = ::Object.new.freeze
15
15
 
16
16
  # @!attribute [r] events
17
17
  # @return [Array] A list of lambdas checking payloads
@@ -39,7 +39,7 @@ module Dry
39
39
  #
40
40
  # @api private
41
41
  def build_checks(filter, checks = EMPTY_ARRAY, keys = EMPTY_ARRAY)
42
- if filter.is_a?(Hash)
42
+ if filter.is_a?(::Hash)
43
43
  filter.reduce(checks) do |cs, (key, value)|
44
44
  build_checks(value, cs, [*keys, key])
45
45
  end
@@ -51,7 +51,7 @@ module Dry
51
51
  # @api private
52
52
  def compare(path, predicate, payload)
53
53
  value = path.reduce(payload) do |acc, key|
54
- if acc.is_a?(Hash) && acc.key?(key)
54
+ if acc.is_a?(::Hash) && acc.key?(key)
55
55
  acc[key]
56
56
  else
57
57
  break NO_MATCH
@@ -64,8 +64,8 @@ module Dry
64
64
  # @api private
65
65
  def predicate(value)
66
66
  case value
67
- when Proc then value
68
- when Array then value.method(:include?)
67
+ when ::Proc then value
68
+ when ::Array then value.method(:include?)
69
69
  else value.method(:==)
70
70
  end
71
71
  end
@@ -23,7 +23,7 @@ module Dry
23
23
  #
24
24
  # @api public
25
25
  class Listener < ::Module
26
- include Dry::Equalizer(:id)
26
+ include ::Dry::Equalizer(:id)
27
27
 
28
28
  # @!attribute [r] :id
29
29
  # @return [Symbol,String] The publisher identifier
@@ -11,7 +11,7 @@ module Dry
11
11
  # Exception raised when the same publisher is registered more than once
12
12
  #
13
13
  # @api public
14
- PublisherAlreadyRegisteredError = Class.new(StandardError) do
14
+ PublisherAlreadyRegisteredError = ::Class.new(::StandardError) do
15
15
  # @api private
16
16
  def initialize(id)
17
17
  super("publisher with id #{id.inspect} already registered as: #{Publisher.registry[id]}")
@@ -19,13 +19,13 @@ module Dry
19
19
  end
20
20
 
21
21
  # @api public
22
- InvalidSubscriberError = Class.new(StandardError) do
22
+ InvalidSubscriberError = ::Class.new(::StandardError) do
23
23
  # @api private
24
24
  def initialize(object_or_event_id)
25
25
  case object_or_event_id
26
- when String, Symbol
26
+ when ::String, ::Symbol
27
27
  super(
28
- "you are trying to subscribe to an event: `#{object_or_event_id}` "\
28
+ "you are trying to subscribe to an event: `#{object_or_event_id}` " \
29
29
  "that has not been registered"
30
30
  )
31
31
  else
@@ -34,10 +34,10 @@ module Dry
34
34
  end
35
35
  end
36
36
 
37
- UnregisteredEventError = Class.new(StandardError) do
37
+ UnregisteredEventError = ::Class.new(::StandardError) do
38
38
  def initialize(object_or_event_id)
39
39
  case object_or_event_id
40
- when String, Symbol
40
+ when ::String, ::Symbol
41
41
  super("You are trying to publish an unregistered event: `#{object_or_event_id}`")
42
42
  else
43
43
  super("You are trying to publish an unregistered event")
@@ -75,7 +75,7 @@ module Dry
75
75
  #
76
76
  # @api public
77
77
  class Publisher < ::Module
78
- include Dry::Equalizer(:id)
78
+ include ::Dry::Equalizer(:id)
79
79
 
80
80
  # Internal publisher registry, which is used to identify them globally
81
81
  #
@@ -84,7 +84,7 @@ module Dry
84
84
  #
85
85
  # @api private
86
86
  def self.registry
87
- @__registry__ ||= Concurrent::Map.new
87
+ @__registry__ ||= ::Concurrent::Map.new
88
88
  end
89
89
 
90
90
  # @!attribute [r] :id
@@ -168,7 +168,7 @@ module Dry
168
168
  #
169
169
  # @api private
170
170
  def events
171
- @__events__ ||= Concurrent::Map.new
171
+ @__events__ ||= ::Concurrent::Map.new
172
172
  end
173
173
 
174
174
  # Global registry with listeners
@@ -265,8 +265,8 @@ module Dry
265
265
  # param [Hash] payload An optional payload
266
266
  #
267
267
  # @api public
268
- def process(event_id, payload = EMPTY_HASH, &block)
269
- __bus__.process(event_id, payload, &block)
268
+ def process(event_id, payload = EMPTY_HASH, &)
269
+ __bus__.process(event_id, payload, &)
270
270
  end
271
271
 
272
272
  # Internal event bus
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Events
5
- VERSION = "1.0.1"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-events
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-20 00:00:00.000000000 Z
11
+ date: 2025-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -30,62 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '2'
33
+ version: '1.1'
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '1.0'
44
- - - "<"
45
- - !ruby/object:Gem::Version
46
- version: '2'
47
- - !ruby/object:Gem::Dependency
48
- name: bundler
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: rake
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
- - !ruby/object:Gem::Dependency
76
- name: rspec
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
40
+ version: '1.1'
89
41
  description: Pub/sub system
90
42
  email:
91
43
  - piotr.solnica+oss@gmail.com
@@ -114,7 +66,8 @@ metadata:
114
66
  changelog_uri: https://github.com/dry-rb/dry-events/blob/main/CHANGELOG.md
115
67
  source_code_uri: https://github.com/dry-rb/dry-events
116
68
  bug_tracker_uri: https://github.com/dry-rb/dry-events/issues
117
- post_install_message:
69
+ rubygems_mfa_required: 'true'
70
+ post_install_message:
118
71
  rdoc_options: []
119
72
  require_paths:
120
73
  - lib
@@ -122,15 +75,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
75
  requirements:
123
76
  - - ">="
124
77
  - !ruby/object:Gem::Version
125
- version: 2.7.0
78
+ version: 3.1.0
126
79
  required_rubygems_version: !ruby/object:Gem::Requirement
127
80
  requirements:
128
81
  - - ">="
129
82
  - !ruby/object:Gem::Version
130
83
  version: '0'
131
84
  requirements: []
132
- rubygems_version: 3.1.6
133
- signing_key:
85
+ rubygems_version: 3.3.27
86
+ signing_key:
134
87
  specification_version: 4
135
88
  summary: Pub/sub system
136
89
  test_files: []