cable_ready 4.4.6 → 4.5.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: be725ae91b18e01ba24fd9b42ca4eb2d824e90a7b25fab3cd3cab36af14740c6
4
- data.tar.gz: 9231b6d225221a866a52d9b19a412bfbcfea29e6f2a01eaa78d609642bb44670
3
+ metadata.gz: b7306ba066c9ee64f5a46290d6f24e29e0dd55ed26869101db08f4556cd9d05d
4
+ data.tar.gz: e072e9feec793f2a64f9c4134ebf5bf31f92ac4d5075d288237f4587895bec1c
5
5
  SHA512:
6
- metadata.gz: 684b2d9fb4d068f41620806b2b649d142acd9b7571b1ac0e5da71a50f90917431ef1d5bdbc6f3cf1d057930fc183da328fa5723cdc0a0231ab56c2fc6c99e802
7
- data.tar.gz: 0d29594d65f3e4ce1cd2044b13863c83297a829da0dca95fef2dc1f461fd39dfe06bd7a299f749fdd762e64d535a6318ad7f7e9b7875ec4a7ec8479a77916bb8
6
+ metadata.gz: e3264fdb6d50c9e1d3309c8a6ff82f283546f41f47df2b5e929ab7b9180d0c4f7d6b0d25e9a88512f0c8851ccabd2a35f2b96bc4bf004fd7122b106aff9c9343
7
+ data.tar.gz: 443016a6d1020a3aae79d161e3b0dcce298ed203e8ddede5692635b49685b2a74b9b843c67593a3200c2da4a3b4cc1e756cbc616e8a6bc71622adf533ae7a995
@@ -1,66 +1,67 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cable_ready (4.4.6)
4
+ cable_ready (4.5.0)
5
5
  rails (>= 5.2)
6
+ thread-local (>= 1.1.0)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
- actioncable (6.1.0)
11
- actionpack (= 6.1.0)
12
- activesupport (= 6.1.0)
11
+ actioncable (6.1.1)
12
+ actionpack (= 6.1.1)
13
+ activesupport (= 6.1.1)
13
14
  nio4r (~> 2.0)
14
15
  websocket-driver (>= 0.6.1)
15
- actionmailbox (6.1.0)
16
- actionpack (= 6.1.0)
17
- activejob (= 6.1.0)
18
- activerecord (= 6.1.0)
19
- activestorage (= 6.1.0)
20
- activesupport (= 6.1.0)
16
+ actionmailbox (6.1.1)
17
+ actionpack (= 6.1.1)
18
+ activejob (= 6.1.1)
19
+ activerecord (= 6.1.1)
20
+ activestorage (= 6.1.1)
21
+ activesupport (= 6.1.1)
21
22
  mail (>= 2.7.1)
22
- actionmailer (6.1.0)
23
- actionpack (= 6.1.0)
24
- actionview (= 6.1.0)
25
- activejob (= 6.1.0)
26
- activesupport (= 6.1.0)
23
+ actionmailer (6.1.1)
24
+ actionpack (= 6.1.1)
25
+ actionview (= 6.1.1)
26
+ activejob (= 6.1.1)
27
+ activesupport (= 6.1.1)
27
28
  mail (~> 2.5, >= 2.5.4)
28
29
  rails-dom-testing (~> 2.0)
29
- actionpack (6.1.0)
30
- actionview (= 6.1.0)
31
- activesupport (= 6.1.0)
30
+ actionpack (6.1.1)
31
+ actionview (= 6.1.1)
32
+ activesupport (= 6.1.1)
32
33
  rack (~> 2.0, >= 2.0.9)
33
34
  rack-test (>= 0.6.3)
34
35
  rails-dom-testing (~> 2.0)
35
36
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
36
- actiontext (6.1.0)
37
- actionpack (= 6.1.0)
38
- activerecord (= 6.1.0)
39
- activestorage (= 6.1.0)
40
- activesupport (= 6.1.0)
37
+ actiontext (6.1.1)
38
+ actionpack (= 6.1.1)
39
+ activerecord (= 6.1.1)
40
+ activestorage (= 6.1.1)
41
+ activesupport (= 6.1.1)
41
42
  nokogiri (>= 1.8.5)
42
- actionview (6.1.0)
43
- activesupport (= 6.1.0)
43
+ actionview (6.1.1)
44
+ activesupport (= 6.1.1)
44
45
  builder (~> 3.1)
45
46
  erubi (~> 1.4)
46
47
  rails-dom-testing (~> 2.0)
47
48
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
48
- activejob (6.1.0)
49
- activesupport (= 6.1.0)
49
+ activejob (6.1.1)
50
+ activesupport (= 6.1.1)
50
51
  globalid (>= 0.3.6)
51
- activemodel (6.1.0)
52
- activesupport (= 6.1.0)
53
- activerecord (6.1.0)
54
- activemodel (= 6.1.0)
55
- activesupport (= 6.1.0)
56
- activestorage (6.1.0)
57
- actionpack (= 6.1.0)
58
- activejob (= 6.1.0)
59
- activerecord (= 6.1.0)
60
- activesupport (= 6.1.0)
52
+ activemodel (6.1.1)
53
+ activesupport (= 6.1.1)
54
+ activerecord (6.1.1)
55
+ activemodel (= 6.1.1)
56
+ activesupport (= 6.1.1)
57
+ activestorage (6.1.1)
58
+ actionpack (= 6.1.1)
59
+ activejob (= 6.1.1)
60
+ activerecord (= 6.1.1)
61
+ activesupport (= 6.1.1)
61
62
  marcel (~> 0.3.1)
62
63
  mimemagic (~> 0.3.2)
63
- activesupport (6.1.0)
64
+ activesupport (6.1.1)
64
65
  concurrent-ruby (~> 1.0, >= 1.0.2)
65
66
  i18n (>= 1.6, < 2)
66
67
  minitest (>= 5.1)
@@ -68,17 +69,19 @@ GEM
68
69
  zeitwerk (~> 2.3)
69
70
  addressable (2.7.0)
70
71
  public_suffix (>= 2.0.2, < 5.0)
71
- ast (2.4.1)
72
+ ast (2.4.2)
72
73
  builder (3.2.4)
73
74
  coderay (1.1.3)
74
- concurrent-ruby (1.1.7)
75
+ concurrent-ruby (1.1.8)
75
76
  crass (1.0.6)
76
77
  erubi (1.10.0)
77
- faraday (1.1.0)
78
+ faraday (1.3.0)
79
+ faraday-net_http (~> 1.0)
78
80
  multipart-post (>= 1.2, < 3)
79
81
  ruby2_keywords
80
82
  faraday-http-cache (2.2.0)
81
83
  faraday (>= 0.8)
84
+ faraday-net_http (1.0.1)
82
85
  github_changelog_generator (1.15.2)
83
86
  activesupport
84
87
  faraday-http-cache
@@ -89,9 +92,9 @@ GEM
89
92
  retriable (~> 3.0)
90
93
  globalid (0.4.2)
91
94
  activesupport (>= 4.2.0)
92
- i18n (1.8.5)
95
+ i18n (1.8.7)
93
96
  concurrent-ruby (~> 1.0)
94
- loofah (2.8.0)
97
+ loofah (2.9.0)
95
98
  crass (~> 1.0.2)
96
99
  nokogiri (>= 1.5.9)
97
100
  magic_frozen_string_literal (1.2.0)
@@ -102,18 +105,17 @@ GEM
102
105
  method_source (0.9.2)
103
106
  mimemagic (0.3.5)
104
107
  mini_mime (1.0.2)
105
- mini_portile2 (2.4.0)
106
- minitest (5.14.2)
108
+ minitest (5.14.3)
107
109
  multi_json (1.15.0)
108
110
  multipart-post (2.1.1)
109
111
  nio4r (2.5.4)
110
- nokogiri (1.10.10)
111
- mini_portile2 (~> 2.4.0)
112
- octokit (4.19.0)
112
+ nokogiri (1.11.1-x86_64-darwin)
113
+ racc (~> 1.4)
114
+ octokit (4.20.0)
113
115
  faraday (>= 0.9)
114
116
  sawyer (~> 0.8.0, >= 0.5.3)
115
117
  parallel (1.20.1)
116
- parser (2.7.2.0)
118
+ parser (3.0.0.0)
117
119
  ast (~> 2.4.1)
118
120
  pry (0.12.2)
119
121
  coderay (~> 1.1.0)
@@ -121,56 +123,57 @@ GEM
121
123
  pry-nav (0.3.0)
122
124
  pry (>= 0.9.10, < 0.13.0)
123
125
  public_suffix (4.0.6)
126
+ racc (1.5.2)
124
127
  rack (2.2.3)
125
128
  rack-test (1.1.0)
126
129
  rack (>= 1.0, < 3)
127
- rails (6.1.0)
128
- actioncable (= 6.1.0)
129
- actionmailbox (= 6.1.0)
130
- actionmailer (= 6.1.0)
131
- actionpack (= 6.1.0)
132
- actiontext (= 6.1.0)
133
- actionview (= 6.1.0)
134
- activejob (= 6.1.0)
135
- activemodel (= 6.1.0)
136
- activerecord (= 6.1.0)
137
- activestorage (= 6.1.0)
138
- activesupport (= 6.1.0)
130
+ rails (6.1.1)
131
+ actioncable (= 6.1.1)
132
+ actionmailbox (= 6.1.1)
133
+ actionmailer (= 6.1.1)
134
+ actionpack (= 6.1.1)
135
+ actiontext (= 6.1.1)
136
+ actionview (= 6.1.1)
137
+ activejob (= 6.1.1)
138
+ activemodel (= 6.1.1)
139
+ activerecord (= 6.1.1)
140
+ activestorage (= 6.1.1)
141
+ activesupport (= 6.1.1)
139
142
  bundler (>= 1.15.0)
140
- railties (= 6.1.0)
143
+ railties (= 6.1.1)
141
144
  sprockets-rails (>= 2.0.0)
142
145
  rails-dom-testing (2.0.3)
143
146
  activesupport (>= 4.2.0)
144
147
  nokogiri (>= 1.6)
145
148
  rails-html-sanitizer (1.3.0)
146
149
  loofah (~> 2.3)
147
- railties (6.1.0)
148
- actionpack (= 6.1.0)
149
- activesupport (= 6.1.0)
150
+ railties (6.1.1)
151
+ actionpack (= 6.1.1)
152
+ activesupport (= 6.1.1)
150
153
  method_source
151
154
  rake (>= 0.8.7)
152
155
  thor (~> 1.0)
153
156
  rainbow (3.0.0)
154
- rake (13.0.1)
155
- regexp_parser (2.0.0)
157
+ rake (13.0.3)
158
+ regexp_parser (2.0.3)
156
159
  retriable (3.1.2)
157
160
  rexml (3.2.4)
158
- rubocop (1.4.2)
161
+ rubocop (1.7.0)
159
162
  parallel (~> 1.10)
160
163
  parser (>= 2.7.1.5)
161
164
  rainbow (>= 2.2.2, < 4.0)
162
- regexp_parser (>= 1.8)
165
+ regexp_parser (>= 1.8, < 3.0)
163
166
  rexml
164
- rubocop-ast (>= 1.1.1)
167
+ rubocop-ast (>= 1.2.0, < 2.0)
165
168
  ruby-progressbar (~> 1.7)
166
169
  unicode-display_width (>= 1.4.0, < 2.0)
167
- rubocop-ast (1.3.0)
170
+ rubocop-ast (1.4.1)
168
171
  parser (>= 2.7.1.5)
169
- rubocop-performance (1.9.1)
172
+ rubocop-performance (1.9.2)
170
173
  rubocop (>= 0.90.0, < 2.0)
171
174
  rubocop-ast (>= 0.4.0)
172
- ruby-progressbar (1.10.1)
173
- ruby2_keywords (0.0.2)
175
+ ruby-progressbar (1.11.0)
176
+ ruby2_keywords (0.0.4)
174
177
  sawyer (0.8.2)
175
178
  addressable (>= 2.3.5)
176
179
  faraday (> 0.8, < 2.0)
@@ -181,12 +184,13 @@ GEM
181
184
  actionpack (>= 4.0)
182
185
  activesupport (>= 4.0)
183
186
  sprockets (>= 3.0.0)
184
- standard (0.10.2)
185
- rubocop (= 1.4.2)
186
- rubocop-performance (= 1.9.1)
187
+ standard (0.11.0)
188
+ rubocop (= 1.7.0)
189
+ rubocop-performance (= 1.9.2)
187
190
  standardrb (1.0.0)
188
191
  standard
189
- thor (1.0.1)
192
+ thor (1.1.0)
193
+ thread-local (1.1.0)
190
194
  tzinfo (2.0.4)
191
195
  concurrent-ruby (~> 1.0)
192
196
  unicode-display_width (1.7.0)
data/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  <img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-brightgreen.svg" target="_blank" />
12
12
  </a>
13
13
  <a href="http://blog.codinghorror.com/the-best-code-is-no-code-at-all/" target="_blank">
14
- <img alt="Lines of Code" src="https://img.shields.io/badge/lines_of_code-483-brightgreen.svg?style=flat" />
14
+ <img alt="Lines of Code" src="https://img.shields.io/badge/lines_of_code-663-brightgreen.svg?style=flat" />
15
15
  </a>
16
16
  <a href="https://cableready.stimulusreflex.com" target="_blank">
17
17
  <img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" />
@@ -15,6 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.test_files = Dir["test/**/*.rb"]
16
16
 
17
17
  gem.add_dependency "rails", ">= 5.2"
18
+ gem.add_dependency "thread-local", ">= 1.1.0"
18
19
 
19
20
  gem.add_development_dependency "github_changelog_generator"
20
21
  gem.add_development_dependency "magic_frozen_string_literal"
@@ -3,9 +3,18 @@
3
3
  require "rails/engine"
4
4
  require "active_support/all"
5
5
  require "cable_ready/version"
6
+ require "cable_ready/config"
6
7
  require "cable_ready/broadcaster"
7
8
 
8
9
  module CableReady
9
10
  class Engine < Rails::Engine
10
11
  end
12
+
13
+ def self.config
14
+ CableReady::Config.instance
15
+ end
16
+
17
+ def self.configure
18
+ yield config
19
+ end
11
20
  end
@@ -2,48 +2,46 @@
2
2
 
3
3
  module CableReady
4
4
  class Channel
5
- attr_reader :identifier, :operations, :available_operations
5
+ attr_reader :identifier, :enqueued_operations
6
6
 
7
- def initialize(identifier, available_operations)
7
+ def initialize(identifier)
8
8
  @identifier = identifier
9
- @available_operations = available_operations
10
9
  reset
11
- available_operations.each do |available_operation, implementation|
12
- define_singleton_method available_operation, &implementation
13
- end
14
- end
10
+ CableReady.config.operation_names.each { |name| add_operation_method name }
15
11
 
16
- def channel_broadcast(clear)
17
- operations.select! { |_, list| list.present? }
18
- operations.deep_transform_keys! { |key| key.to_s.camelize(:lower) }
19
- ActionCable.server.broadcast identifier, {"cableReady" => true, "operations" => operations}
20
- reset if clear
12
+ config_observer = self
13
+ CableReady.config.add_observer config_observer, :add_operation_method
14
+ ObjectSpace.define_finalizer self, -> { CableReady.config.delete_observer config_observer }
21
15
  end
22
16
 
23
- def channel_broadcast_to(model, clear)
24
- operations.select! { |_, list| list.present? }
25
- operations.deep_transform_keys! { |key| key.to_s.camelize(:lower) }
26
- identifier.broadcast_to model, {"cableReady" => true, "operations" => operations}
17
+ def broadcast(clear: true)
18
+ ActionCable.server.broadcast identifier, {"cableReady" => true, "operations" => broadcastable_operations}
27
19
  reset if clear
28
20
  end
29
21
 
30
- def broadcast(clear = true)
31
- CableReady::Channels.instance.broadcast(identifier, clear: clear)
22
+ def broadcast_to(model, clear: true)
23
+ identifier.broadcast_to model, {"cableReady" => true, "operations" => broadcastable_operations}
24
+ reset if clear
32
25
  end
33
26
 
34
- def broadcast_to(model, clear = true)
35
- CableReady::Channels.instance.broadcast_to(model, identifier, clear: clear)
27
+ def add_operation_method(name)
28
+ return if respond_to?(name)
29
+ singleton_class.public_send :define_method, name, ->(options = {}) {
30
+ enqueued_operations[name.to_s] << options.stringify_keys
31
+ self # supports operation chaining
32
+ }
36
33
  end
37
34
 
38
35
  private
39
36
 
40
- def enqueue_operation(key, options)
41
- operations[key] << options
42
- self
37
+ def reset
38
+ @enqueued_operations = Hash.new { |hash, key| hash[key] = [] }
43
39
  end
44
40
 
45
- def reset
46
- @operations = Hash.new { |hash, operation| hash[operation] = [] }
41
+ def broadcastable_operations
42
+ enqueued_operations
43
+ .select { |_, list| list.present? }
44
+ .deep_transform_keys! { |key| key.to_s.camelize(:lower) }
47
45
  end
48
46
  end
49
47
  end
@@ -1,86 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "thread/local"
3
4
  require_relative "channel"
4
5
 
5
6
  module CableReady
7
+ # This class is a thread local singleton: CableReady::Channels.instance
8
+ # SEE: https://github.com/socketry/thread-local/tree/master/guides/getting-started
6
9
  class Channels
7
- include Singleton
8
- attr_accessor :operations
10
+ extend Thread::Local
9
11
 
10
- def self.configure
11
- yield CableReady::Channels.instance if block_given?
12
- end
12
+ attr_accessor :operations
13
13
 
14
14
  def initialize
15
15
  @channels = {}
16
16
  @operations = {}
17
- %i[
18
- add_css_class
19
- clear_storage
20
- console_log
21
- dispatch_event
22
- inner_html
23
- insert_adjacent_html
24
- insert_adjacent_text
25
- morph
26
- notification
27
- outer_html
28
- push_state
29
- remove
30
- remove_attribute
31
- remove_css_class
32
- remove_storage_item
33
- set_attribute
34
- set_cookie
35
- set_dataset_property
36
- set_focus
37
- set_property
38
- set_storage_item
39
- set_style
40
- set_styles
41
- set_value
42
- text_content
43
- ].each do |operation|
44
- add_operation operation
45
- end
46
- end
47
-
48
- def add_operation(operation, &implementation)
49
- @operations[operation] = implementation || ->(options = {}) { enqueue_operation(operation, options) }
50
17
  end
51
18
 
52
19
  def [](identifier)
53
- @channels[identifier] ||= CableReady::Channel.new(identifier, operations)
20
+ @channels[identifier] ||= CableReady::Channel.new(identifier)
54
21
  end
55
22
 
56
23
  def broadcast(*identifiers, clear: true)
57
- mutex.synchronize do
58
- @channels.values
59
- .reject { |channel| identifiers.any? && identifiers.exclude?(channel.identifier) }
60
- .select { |channel| channel.identifier.is_a?(String) }
61
- .tap do |channels|
62
- channels.each { |channel| @channels[channel.identifier].channel_broadcast(clear) }
63
- channels.each { |channel| @channels.except!(channel.identifier) if clear }
64
- end
65
- end
24
+ @channels.values
25
+ .reject { |channel| identifiers.any? && identifiers.exclude?(channel.identifier) }
26
+ .select { |channel| channel.identifier.is_a?(String) }
27
+ .tap do |channels|
28
+ channels.each { |channel| @channels[channel.identifier].broadcast(clear: clear) }
29
+ channels.each { |channel| @channels.except!(channel.identifier) if clear }
30
+ end
66
31
  end
67
32
 
68
33
  def broadcast_to(model, *identifiers, clear: true)
69
- mutex.synchronize do
70
- @channels.values
71
- .reject { |channel| identifiers.any? && identifiers.exclude?(channel.identifier) }
72
- .reject { |channel| channel.identifier.is_a?(String) }
73
- .tap do |channels|
74
- channels.each { |channel| @channels[channel.identifier].channel_broadcast_to(model, clear) }
75
- channels.each { |channel| @channels.except!(channel.identifier) if clear }
76
- end
77
- end
78
- end
79
-
80
- private
81
-
82
- def mutex
83
- @mutex ||= Mutex.new
34
+ @channels.values
35
+ .reject { |channel| identifiers.any? && identifiers.exclude?(channel.identifier) }
36
+ .reject { |channel| channel.identifier.is_a?(String) }
37
+ .tap do |channels|
38
+ channels.each { |channel| @channels[channel.identifier].broadcast_to(model, clear: clear) }
39
+ channels.each { |channel| @channels.except!(channel.identifier) if clear }
40
+ end
84
41
  end
85
42
  end
86
43
  end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "monitor"
4
+ require "observer"
5
+ require "singleton"
6
+
7
+ module CableReady
8
+ # This class is a process level singleton shared by all threads: CableReady::Config.instance
9
+ class Config
10
+ include MonitorMixin
11
+ include Observable
12
+ include Singleton
13
+
14
+ def initialize
15
+ super
16
+ @operation_names = Set.new(default_operation_names)
17
+ end
18
+
19
+ def operation_names
20
+ @operation_names.to_a
21
+ end
22
+
23
+ def add_operation_name(name)
24
+ synchronize do
25
+ @operation_names << name.to_sym
26
+ notify_observers name.to_sym
27
+ end
28
+ end
29
+
30
+ def default_operation_names
31
+ Set.new(%i[
32
+ add_css_class
33
+ append
34
+ clear_storage
35
+ console_log
36
+ dispatch_event
37
+ go
38
+ graft
39
+ inner_html
40
+ insert_adjacent_html
41
+ insert_adjacent_text
42
+ morph
43
+ notification
44
+ outer_html
45
+ play_sound
46
+ prepend
47
+ push_state
48
+ remove
49
+ remove_attribute
50
+ remove_css_class
51
+ remove_storage_item
52
+ replace
53
+ replace_state
54
+ scroll_into_view
55
+ set_attribute
56
+ set_cookie
57
+ set_dataset_property
58
+ set_focus
59
+ set_property
60
+ set_storage_item
61
+ set_style
62
+ set_styles
63
+ set_value
64
+ text_content
65
+ ]).freeze
66
+ end
67
+ end
68
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CableReady
4
- VERSION = "4.4.6"
4
+ VERSION = "4.5.0"
5
5
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cable_ready",
3
- "version": "4.4.5",
3
+ "version": "4.4.6",
4
4
  "description": "CableReady helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby.",
5
5
  "keywords": [
6
6
  "ruby",
data/tags CHANGED
@@ -9,49 +9,54 @@ CableReady lib/cable_ready.rb /^module CableReady$/;" m
9
9
  CableReady lib/cable_ready/broadcaster.rb /^module CableReady$/;" m
10
10
  CableReady lib/cable_ready/channel.rb /^module CableReady$/;" m
11
11
  CableReady lib/cable_ready/channels.rb /^module CableReady$/;" m
12
+ CableReady lib/cable_ready/config.rb /^module CableReady$/;" m
12
13
  CableReady lib/cable_ready/version.rb /^module CableReady$/;" m
13
14
  Channel lib/cable_ready/channel.rb /^ class Channel$/;" c class:CableReady
14
15
  Channels lib/cable_ready/channels.rb /^ class Channels$/;" c class:CableReady
16
+ Config lib/cable_ready/config.rb /^ class Config$/;" c class:CableReady
15
17
  Engine lib/cable_ready.rb /^ class Engine < Rails::Engine$/;" c class:CableReady
16
18
  [] lib/cable_ready/channels.rb /^ def [](identifier)$/;" f class:CableReady.Channels
17
- add_operation lib/cable_ready/channels.rb /^ def add_operation(operation, &implementation)$/;" f class:CableReady.Channels
18
- broadcast lib/cable_ready/channel.rb /^ def broadcast(clear = true)$/;" f class:CableReady.Channel
19
+ add_operation_definition lib/cable_ready/config.rb /^ def add_operation_definition(name)$/;" f class:CableReady.Config
20
+ add_operation_method lib/cable_ready/channel.rb /^ def add_operation_method(name)$/;" f class:CableReady.Channel
21
+ broadcast lib/cable_ready/channel.rb /^ def broadcast(clear: true)$/;" f class:CableReady.Channel
19
22
  broadcast lib/cable_ready/channels.rb /^ def broadcast(*identifiers, clear: true)$/;" f class:CableReady.Channels
20
- broadcast_to lib/cable_ready/channel.rb /^ def broadcast_to(model, clear = true)$/;" f class:CableReady.Channel
23
+ broadcast_to lib/cable_ready/channel.rb /^ def broadcast_to(model, clear: true)$/;" f class:CableReady.Channel
21
24
  broadcast_to lib/cable_ready/channels.rb /^ def broadcast_to(model, *identifiers, clear: true)$/;" f class:CableReady.Channels
25
+ broadcastable_operations lib/cable_ready/channel.rb /^ def broadcastable_operations$/;" f class:CableReady.Channel
22
26
  cable_ready lib/cable_ready/broadcaster.rb /^ def cable_ready$/;" f class:CableReady.Broadcaster
23
- channel_broadcast lib/cable_ready/channel.rb /^ def channel_broadcast(clear)$/;" f class:CableReady.Channel
24
- channel_broadcast_to lib/cable_ready/channel.rb /^ def channel_broadcast_to(model, clear)$/;" f class:CableReady.Channel
25
- configure lib/cable_ready/channels.rb /^ def self.configure$/;" F class:CableReady.Channels
26
- const.bubbles javascript/cable_ready.js /^ const init = { bubbles: true, cancelable: true, detail: detail }$/;" p
27
- const.cancelable javascript/cable_ready.js /^ const init = { bubbles: true, cancelable: true, detail: detail }$/;" p
28
- const.color javascript/cable_ready.js /^ color: true,$/;" p
29
- const.date javascript/cable_ready.js /^ date: true,$/;" p
30
- const.datetime javascript/cable_ready.js /^ datetime: true,$/;" p
31
- const.datetime-local javascript/cable_ready.js /^ 'datetime-local': true,$/;" p
32
- const.detail javascript/cable_ready.js /^ const init = { bubbles: true, cancelable: true, detail: detail }$/;" p
33
- const.email javascript/cable_ready.js /^ email: true,$/;" p
34
- const.month javascript/cable_ready.js /^ month: true,$/;" p
35
- const.number javascript/cable_ready.js /^ number: true,$/;" p
36
- const.password javascript/cable_ready.js /^ password: true,$/;" p
27
+ config lib/cable_ready.rb /^ def self.config$/;" F class:CableReady
28
+ configure lib/cable_ready.rb /^ def self.configure$/;" F class:CableReady
29
+ const.bubbles javascript/utils.js /^ const init = { bubbles: true, cancelable: true, detail: detail }$/;" p
30
+ const.cancelable javascript/utils.js /^ const init = { bubbles: true, cancelable: true, detail: detail }$/;" p
31
+ const.detail javascript/utils.js /^ const init = { bubbles: true, cancelable: true, detail: detail }$/;" p
37
32
  const.pushState javascript/cable_ready.js /^ pushState: config => {$/;" p
38
- const.range javascript/cable_ready.js /^ range: true,$/;" p
39
- const.search javascript/cable_ready.js /^ search: true,$/;" p
40
- const.select-multiple javascript/cable_ready.js /^ 'select-multiple': true,$/;" p
41
- const.select-one javascript/cable_ready.js /^ 'select-one': true,$/;" p
42
- const.tel javascript/cable_ready.js /^ tel: true,$/;" p
43
- const.text javascript/cable_ready.js /^ text: true,$/;" p
44
- const.textarea javascript/cable_ready.js /^ textarea: true,$/;" p
45
- const.time javascript/cable_ready.js /^ time: true,$/;" p
46
- const.url javascript/cable_ready.js /^ url: true,$/;" p
47
- const.value javascript/cable_ready.js /^ const ignore = { value: true }$/;" p
48
- const.week javascript/cable_ready.js /^ week: true$/;" p
33
+ const.value javascript/callbacks.js /^ const ignore = { value: true }$/;" p
34
+ default_operation_names lib/cable_ready/config.rb /^ def default_operation_names$/;" f class:CableReady.Config
49
35
  dom_id lib/cable_ready/broadcaster.rb /^ def dom_id(record, prefix = nil)$/;" f class:CableReady.Broadcaster
50
- enqueue_operation lib/cable_ready/channel.rb /^ def enqueue_operation(key, options)$/;" f class:CableReady.Channel
51
- import.INPUT javascript/cable_ready.js /^ INPUT: true,$/;" p
52
- import.SELECT javascript/cable_ready.js /^ SELECT: true$/;" p
53
- import.TEXTAREA javascript/cable_ready.js /^ TEXTAREA: true,$/;" p
54
- initialize lib/cable_ready/channel.rb /^ def initialize(identifier, available_operations)$/;" f class:CableReady.Channel
36
+ export.INPUT javascript/enums.js /^ INPUT: true,$/;" p
37
+ export.OPTION javascript/enums.js /^ OPTION: true$/;" p
38
+ export.SELECT javascript/enums.js /^ SELECT: true$/;" p
39
+ export.TEXTAREA javascript/enums.js /^ TEXTAREA: true,$/;" p
40
+ export.color javascript/enums.js /^ color: true,$/;" p
41
+ export.date javascript/enums.js /^ date: true,$/;" p
42
+ export.datetime javascript/enums.js /^ datetime: true,$/;" p
43
+ export.datetime-local javascript/enums.js /^ 'datetime-local': true,$/;" p
44
+ export.email javascript/enums.js /^ email: true,$/;" p
45
+ export.month javascript/enums.js /^ month: true,$/;" p
46
+ export.number javascript/enums.js /^ number: true,$/;" p
47
+ export.password javascript/enums.js /^ password: true,$/;" p
48
+ export.range javascript/enums.js /^ range: true,$/;" p
49
+ export.search javascript/enums.js /^ search: true,$/;" p
50
+ export.select-multiple javascript/enums.js /^ 'select-multiple': true,$/;" p
51
+ export.select-one javascript/enums.js /^ 'select-one': true,$/;" p
52
+ export.tel javascript/enums.js /^ tel: true,$/;" p
53
+ export.text javascript/enums.js /^ text: true,$/;" p
54
+ export.textarea javascript/enums.js /^ textarea: true,$/;" p
55
+ export.time javascript/enums.js /^ time: true,$/;" p
56
+ export.url javascript/enums.js /^ url: true,$/;" p
57
+ export.week javascript/enums.js /^ week: true$/;" p
58
+ initialize lib/cable_ready/channel.rb /^ def initialize(identifier)$/;" f class:CableReady.Channel
55
59
  initialize lib/cable_ready/channels.rb /^ def initialize$/;" f class:CableReady.Channels
56
- mutex lib/cable_ready/channels.rb /^ def mutex$/;" f class:CableReady.Channels
60
+ initialize lib/cable_ready/config.rb /^ def initialize$/;" f class:CableReady.Config
61
+ operation_names lib/cable_ready/config.rb /^ def operation_names$/;" f class:CableReady.Config
57
62
  reset lib/cable_ready/channel.rb /^ def reset$/;" f class:CableReady.Channel
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cable_ready
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.6
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Hopkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-18 00:00:00.000000000 Z
11
+ date: 2021-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thread-local
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: github_changelog_generator
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -131,6 +145,7 @@ files:
131
145
  - lib/cable_ready/broadcaster.rb
132
146
  - lib/cable_ready/channel.rb
133
147
  - lib/cable_ready/channels.rb
148
+ - lib/cable_ready/config.rb
134
149
  - lib/cable_ready/version.rb
135
150
  - package.json
136
151
  - tags
@@ -154,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
169
  - !ruby/object:Gem::Version
155
170
  version: '0'
156
171
  requirements: []
157
- rubygems_version: 3.1.2
172
+ rubygems_version: 3.1.4
158
173
  signing_key:
159
174
  specification_version: 4
160
175
  summary: Out-of-Band Server Triggered DOM Operations