stimulus_reflex 3.4.1 → 3.5.0.pre3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of stimulus_reflex might be problematic. Click here for more details.

Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +664 -495
  3. data/Gemfile.lock +99 -95
  4. data/LATEST +1 -0
  5. data/README.md +17 -16
  6. data/app/channels/stimulus_reflex/channel.rb +44 -75
  7. data/lib/generators/USAGE +1 -1
  8. data/lib/generators/stimulus_reflex/{config_generator.rb → initializer_generator.rb} +3 -3
  9. data/lib/generators/stimulus_reflex/stimulus_reflex_generator.rb +5 -4
  10. data/lib/generators/stimulus_reflex/templates/app/reflexes/%file_name%_reflex.rb.tt +3 -2
  11. data/lib/generators/stimulus_reflex/templates/app/reflexes/application_reflex.rb.tt +11 -4
  12. data/lib/generators/stimulus_reflex/templates/config/initializers/stimulus_reflex.rb +21 -1
  13. data/lib/stimulus_reflex/broadcasters/broadcaster.rb +22 -18
  14. data/lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb +6 -1
  15. data/lib/stimulus_reflex/broadcasters/page_broadcaster.rb +3 -5
  16. data/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb +22 -16
  17. data/lib/stimulus_reflex/broadcasters/update.rb +23 -0
  18. data/lib/stimulus_reflex/cable_ready_channels.rb +10 -2
  19. data/lib/stimulus_reflex/callbacks.rb +55 -5
  20. data/lib/stimulus_reflex/concern_enhancer.rb +37 -0
  21. data/lib/stimulus_reflex/configuration.rb +4 -1
  22. data/lib/stimulus_reflex/dataset.rb +34 -0
  23. data/lib/stimulus_reflex/element.rb +20 -13
  24. data/lib/stimulus_reflex/policies/reflex_invocation_policy.rb +28 -0
  25. data/lib/stimulus_reflex/reflex.rb +41 -21
  26. data/lib/stimulus_reflex/reflex_data.rb +79 -0
  27. data/lib/stimulus_reflex/reflex_factory.rb +31 -0
  28. data/lib/stimulus_reflex/request_parameters.rb +19 -0
  29. data/lib/stimulus_reflex/utils/attribute_builder.rb +17 -0
  30. data/lib/stimulus_reflex/{logger.rb → utils/logger.rb} +6 -4
  31. data/lib/stimulus_reflex/utils/sanity_checker.rb +210 -0
  32. data/lib/stimulus_reflex/version.rb +1 -1
  33. data/lib/stimulus_reflex.rb +10 -2
  34. data/lib/tasks/stimulus_reflex/install.rake +54 -15
  35. data/test/broadcasters/broadcaster_test.rb +0 -1
  36. data/test/broadcasters/broadcaster_test_case.rb +25 -1
  37. data/test/broadcasters/nothing_broadcaster_test.rb +14 -20
  38. data/test/broadcasters/page_broadcaster_test.rb +31 -29
  39. data/test/broadcasters/selector_broadcaster_test.rb +165 -55
  40. data/test/callbacks_test.rb +652 -0
  41. data/test/concern_enhancer_test.rb +54 -0
  42. data/test/element_test.rb +254 -0
  43. data/test/generators/stimulus_reflex_generator_test.rb +8 -0
  44. data/test/reflex_test.rb +12 -1
  45. data/test/test_helper.rb +25 -1
  46. data/test/tmp/app/reflexes/application_reflex.rb +10 -3
  47. data/test/tmp/app/reflexes/{user_reflex.rb → demo_reflex.rb} +4 -12
  48. metadata +65 -36
  49. data/lib/stimulus_reflex/sanity_checker.rb +0 -154
  50. data/package.json +0 -57
  51. data/stimulus_reflex.gemspec +0 -42
  52. data/tags +0 -156
  53. data/yarn.lock +0 -4687
@@ -0,0 +1,254 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ class StimulusReflex::ElementTest < ActiveSupport::TestCase
6
+ element = StimulusReflex::Element.new({
7
+ "attrs" => {
8
+ "user" => "First User",
9
+ "user-id" => "1"
10
+ },
11
+ "dataset" => {
12
+ "dataset" => {
13
+ "data-post" => "The Post",
14
+ "data-post-id" => "2"
15
+ },
16
+ "datasetAll" => {}
17
+ }
18
+ })
19
+
20
+ test "should be able to access attributes on element itself" do
21
+ assert_equal "First User", element.user
22
+ assert_equal "First User", element["user"]
23
+ assert_equal "First User", element[:user]
24
+
25
+ assert_equal "1", element.user_id
26
+ assert_equal "1", element["user_id"]
27
+ assert_equal "1", element["user-id"]
28
+ assert_equal "1", element[:user_id]
29
+
30
+ assert_equal "The Post", element.data_post
31
+ assert_equal "The Post", element["data_post"]
32
+ assert_equal "The Post", element["data-post"]
33
+ assert_equal "The Post", element[:data_post]
34
+
35
+ assert_equal "2", element.data_post_id
36
+ assert_equal "2", element["data_post_id"]
37
+ assert_equal "2", element["data-post-id"]
38
+ assert_equal "2", element[:data_post_id]
39
+ end
40
+
41
+ test "should be able to access attributes via attributes" do
42
+ assert_equal "First User", element.attributes.user
43
+ assert_equal "First User", element.attributes["user"]
44
+ assert_equal "First User", element.attributes[:user]
45
+
46
+ assert_equal "1", element.attributes.user_id
47
+ assert_equal "1", element.attributes["user_id"]
48
+ assert_equal "1", element.attributes["user-id"]
49
+ assert_equal "1", element.attributes[:user_id]
50
+ end
51
+
52
+ test "should be able to access attributes via dataset" do
53
+ assert_equal "The Post", element.dataset.post
54
+ assert_equal "The Post", element.dataset["post"]
55
+ assert_equal "The Post", element.dataset[:post]
56
+
57
+ assert_equal "2", element.dataset.post_id
58
+ assert_equal "2", element.dataset["post-id"]
59
+ assert_equal "2", element.dataset["post_id"]
60
+ assert_equal "2", element.dataset[:post_id]
61
+ end
62
+
63
+ test "should be able to access attributes via data_attributes" do
64
+ assert_equal "The Post", element.data_attributes.post
65
+ assert_equal "The Post", element.data_attributes["post"]
66
+ assert_equal "The Post", element.data_attributes[:post]
67
+
68
+ assert_equal "2", element.data_attributes.post_id
69
+ assert_equal "2", element.data_attributes["post-id"]
70
+ assert_equal "2", element.data_attributes["post_id"]
71
+ assert_equal "2", element.data_attributes[:post_id]
72
+ end
73
+
74
+ test "should pluralize keys from datasetAll" do
75
+ data = {
76
+ "dataset" => {
77
+ "dataset" => {
78
+ "data-reflex" => "click",
79
+ "data-sex" => "male"
80
+ },
81
+ "datasetAll" => {
82
+ "data-reflex" => ["click"],
83
+ "data-post-id" => ["1", "2", "3", "4"],
84
+ "data-name" => ["steve", "bill", "steve", "mike"]
85
+ }
86
+ }
87
+ }
88
+
89
+ dataset_all_element = StimulusReflex::Element.new(data)
90
+
91
+ assert_equal "click", dataset_all_element.dataset.reflex
92
+ assert_equal "male", dataset_all_element.dataset.sex
93
+
94
+ assert_equal ["steve", "bill", "steve", "mike"], dataset_all_element.dataset.names
95
+ assert_equal ["1", "2", "3", "4"], dataset_all_element.dataset.post_ids
96
+ assert_equal ["click"], dataset_all_element.dataset.reflexes
97
+ end
98
+
99
+ test "should pluralize irregular words from datasetAll" do
100
+ data = {
101
+ "dataset" => {
102
+ "dataset" => {},
103
+ "datasetAll" => {
104
+ "data-cat" => ["cat"],
105
+ "data-child" => ["child"],
106
+ "data-women" => ["woman"],
107
+ "data-man" => ["man"],
108
+ "data-wolf" => ["wolf"],
109
+ "data-library" => ["library"],
110
+ "data-mouse" => ["mouse"]
111
+ }
112
+ }
113
+ }
114
+
115
+ pluralize_element = StimulusReflex::Element.new(data)
116
+
117
+ assert_equal ["cat"], pluralize_element.dataset.cats
118
+ assert_equal ["child"], pluralize_element.dataset.children
119
+ assert_equal ["woman"], pluralize_element.dataset.women
120
+ assert_equal ["man"], pluralize_element.dataset.men
121
+ assert_equal ["wolf"], pluralize_element.dataset.wolves
122
+ assert_equal ["library"], pluralize_element.dataset.libraries
123
+ assert_equal ["mouse"], pluralize_element.dataset.mice
124
+ end
125
+
126
+ test "should not pluralize plural key" do
127
+ data = {
128
+ "dataset" => {
129
+ "datasetAll" => {
130
+ "data-ids" => ["1", "2"]
131
+ }
132
+ }
133
+ }
134
+
135
+ assert_equal ["1", "2"], StimulusReflex::Element.new(data).dataset.ids
136
+ assert_nil StimulusReflex::Element.new(data).dataset.idss
137
+ end
138
+
139
+ test "should not build array with pluralized key" do
140
+ data = {
141
+ "dataset" => {
142
+ "dataset" => {
143
+ "data-ids" => "1"
144
+ }
145
+ }
146
+ }
147
+
148
+ assert_equal "1", StimulusReflex::Element.new(data).dataset.ids
149
+ end
150
+
151
+ test "should handle overlapping singluar and plural key names" do
152
+ data = {
153
+ "dataset" => {
154
+ "dataset" => {
155
+ "data-id" => "1",
156
+ "data-ids" => "2",
157
+ "data-post-id" => "9",
158
+ "data-post-ids" => "10",
159
+ "data-duplicate-value" => "19",
160
+ "data-duplicate-values" => "20"
161
+ },
162
+ "datasetAll" => {
163
+ "data-id" => ["3", "4"],
164
+ "data-post-ids" => ["11", "12"],
165
+ "data-duplicate-value" => ["20", "21", "22"]
166
+ }
167
+ }
168
+ }
169
+
170
+ overlapping_keys_element = StimulusReflex::Element.new(data)
171
+
172
+ assert_equal "1", overlapping_keys_element.dataset.id
173
+ assert_equal ["2", "3", "4"], overlapping_keys_element.dataset.ids
174
+
175
+ assert_equal "9", overlapping_keys_element.dataset.post_id
176
+ assert_equal ["10", "11", "12"], overlapping_keys_element.dataset.post_ids
177
+
178
+ assert_equal "19", overlapping_keys_element.dataset.duplicate_value
179
+ assert_equal ["20", "20", "21", "22"], overlapping_keys_element.dataset.duplicate_values
180
+ end
181
+
182
+ test "should return true for boolean data attributes" do
183
+ data = {
184
+ "dataset" => {
185
+ "dataset" => {
186
+ "data-short" => "t",
187
+ "data-long" => "true",
188
+ "data-num" => "1",
189
+ "data-empty" => ""
190
+ }
191
+ }
192
+ }
193
+
194
+ element_with_boolean_attributes = StimulusReflex::Element.new(data)
195
+
196
+ assert element_with_boolean_attributes.boolean[:short]
197
+ assert element_with_boolean_attributes.boolean[:long]
198
+ assert element_with_boolean_attributes.boolean[:num]
199
+ assert element_with_boolean_attributes.boolean[:empty]
200
+
201
+ assert element_with_boolean_attributes.dataset.boolean[:short]
202
+ assert element_with_boolean_attributes.dataset.boolean[:long]
203
+ assert element_with_boolean_attributes.dataset.boolean[:num]
204
+ assert element_with_boolean_attributes.dataset.boolean[:empty]
205
+ end
206
+
207
+ test "should return false for falsey data attributes" do
208
+ data = {
209
+ "dataset" => {
210
+ "dataset" => {
211
+ "data-short" => "f",
212
+ "data-long" => "false",
213
+ "data-num" => "0"
214
+ }
215
+ }
216
+ }
217
+
218
+ element_with_falsey_attributes = StimulusReflex::Element.new(data)
219
+
220
+ refute element_with_falsey_attributes.boolean[:short]
221
+ refute element_with_falsey_attributes.boolean[:long]
222
+ refute element_with_falsey_attributes.boolean[:num]
223
+
224
+ refute element_with_falsey_attributes.dataset.boolean[:short]
225
+ refute element_with_falsey_attributes.dataset.boolean[:long]
226
+ refute element_with_falsey_attributes.dataset.boolean[:num]
227
+ end
228
+
229
+ test "should return numeric values" do
230
+ data = {
231
+ "dataset" => {
232
+ "dataset" => {
233
+ "data-int" => "123",
234
+ "data-float" => "123.456",
235
+ "data-string" => "asdf"
236
+ }
237
+ }
238
+ }
239
+
240
+ element_with_numeric_attributes = StimulusReflex::Element.new(data)
241
+
242
+ assert_equal 123.0, element_with_numeric_attributes.numeric[:int]
243
+ assert_equal 123.456, element_with_numeric_attributes.numeric[:float]
244
+ assert_raises do
245
+ element_with_numeric_attributes.numeric[:string]
246
+ end
247
+
248
+ assert_equal 123.0, element_with_numeric_attributes.dataset.numeric[:int]
249
+ assert_equal 123.456, element_with_numeric_attributes.dataset.numeric[:float]
250
+ assert_raises do
251
+ element_with_numeric_attributes.dataset.numeric[:string]
252
+ end
253
+ end
254
+ end
@@ -25,6 +25,14 @@ class StimulusReflexGeneratorTest < Rails::Generators::TestCase
25
25
  assert_file "app/reflexes/posts_reflex.rb", /PostsReflex/
26
26
  end
27
27
 
28
+ test "skips stimulus controller and reflex if option provided" do
29
+ run_generator %w[users --skip-stimulus --skip-reflex --skip-app-controller --skip-app-reflex]
30
+ assert_no_file "app/javascript/controllers/application_controller.js"
31
+ assert_no_file "app/javascript/controllers/users_controller.js"
32
+ assert_no_file "app/reflexes/application_reflex.rb"
33
+ assert_no_file "app/reflexes/users_reflex.rb"
34
+ end
35
+
28
36
  test "creates reflex with given reflex actions" do
29
37
  run_generator %w[User update do_stuff DoMoreStuff]
30
38
  assert_file "app/reflexes/user_reflex.rb" do |reflex|
data/test/reflex_test.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "test_helper"
4
+ require "mocha/minitest"
4
5
 
5
6
  class StimulusReflex::ReflexTest < ActionCable::Channel::TestCase
6
7
  tests StimulusReflex::Channel
@@ -10,7 +11,7 @@ class StimulusReflex::ReflexTest < ActionCable::Channel::TestCase
10
11
  def connection.env
11
12
  @env ||= {}
12
13
  end
13
- @reflex = StimulusReflex::Reflex.new(subscribe, url: "https://test.stimulusreflex.com")
14
+ @reflex = StimulusReflex::Reflex.new(subscribe, url: "https://test.stimulusreflex.com", client_attributes: {reflex_id: "666"})
14
15
  @reflex.controller_class.view_paths << Rails.root.join("test/views")
15
16
  end
16
17
 
@@ -29,4 +30,14 @@ class StimulusReflex::ReflexTest < ActionCable::Channel::TestCase
29
30
  test "dom_id" do
30
31
  assert @reflex.dom_id(TestModel.new(id: 123)) == "#test_model_123"
31
32
  end
33
+
34
+ test "params behave like ActionController::Parameters" do
35
+ ActionDispatch::Request.any_instance.stubs(:parameters).returns({"a" => "1", "b" => "2", "c" => "3"})
36
+ reflex = StimulusReflex::Reflex.new(subscribe, url: "https://test.stimulusreflex.com")
37
+
38
+ deleted_param = reflex.params.delete("a")
39
+
40
+ assert deleted_param == "1"
41
+ assert reflex.params.to_unsafe_h == {"b" => "2", "c" => "3"}
42
+ end
32
43
  end
data/test/test_helper.rb CHANGED
@@ -2,11 +2,14 @@
2
2
 
3
3
  ENV["RAILS_ENV"] ||= "test"
4
4
 
5
- require "minitest/mock"
5
+ require "mocha"
6
6
  require "rails"
7
7
  require "active_model"
8
+ require "active_record"
8
9
  require "action_controller"
10
+ require "minitest/mock"
9
11
  require "pry"
12
+
10
13
  require_relative "../lib/stimulus_reflex"
11
14
 
12
15
  class TestApp < Rails::Application
@@ -38,6 +41,27 @@ end
38
41
  class TestModel
39
42
  include ActiveModel::Model
40
43
  attr_accessor :id
44
+ def is_a?(klass)
45
+ klass == ActiveRecord::Base
46
+ end
47
+
48
+ def to_gid_param
49
+ "xxxyyyzzz"
50
+ end
51
+ end
52
+
53
+ module ActionCable
54
+ module Channel
55
+ class ConnectionStub
56
+ def connection_identifier
57
+ connection_gid identifiers.map { |id| send(id.to_sym) if id }.compact
58
+ end
59
+
60
+ def connection_gid(ids)
61
+ ids.map { |o| o.respond_to?(:to_gid_param) ? o.to_gid_param : o.to_s }.sort.join(":")
62
+ end
63
+ end
64
+ end
41
65
  end
42
66
 
43
67
  StimulusReflex.configuration.parent_channel = "ActionCable::Channel::Base"
@@ -3,10 +3,17 @@
3
3
  class ApplicationReflex < StimulusReflex::Reflex
4
4
  # Put application-wide Reflex behavior and callbacks in this file.
5
5
  #
6
- # Example:
6
+ # Learn more at: https://docs.stimulusreflex.com/rtfm/reflex-classes
7
7
  #
8
- # # If your ActionCable connection is: `identified_by :current_user`
8
+ # If your ActionCable connection is: `identified_by :current_user`
9
9
  # delegate :current_user, to: :connection
10
10
  #
11
- # Learn more at: https://docs.stimulusreflex.com/reflexes#reflex-classes
11
+ # If you need to localize your Reflexes, you can set the I18n locale here:
12
+ #
13
+ # before_reflex do
14
+ # I18n.locale = :fr
15
+ # end
16
+ #
17
+ # For code examples, considerations and caveats, see:
18
+ # https://docs.stimulusreflex.com/rtfm/patterns#internationalization
12
19
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UserReflex < ApplicationReflex
3
+ class DemoReflex < ApplicationReflex
4
4
  # Add Reflex methods in this file.
5
5
  #
6
6
  # All Reflex instances include CableReady::Broadcaster and expose the following properties:
@@ -17,12 +17,13 @@ class UserReflex < ApplicationReflex
17
17
  # - unsigned - use an unsigned Global ID to map dataset attribute to a model eg. element.unsigned[:foo]
18
18
  # - cable_ready - a special cable_ready that can broadcast to the current visitor (no brackets needed)
19
19
  # - reflex_id - a UUIDv4 that uniquely identies each Reflex
20
+ # - tab_id - a UUIDv4 that uniquely identifies the browser tab
20
21
  #
21
22
  # Example:
22
23
  #
23
24
  # before_reflex do
24
25
  # # throw :abort # this will prevent the Reflex from continuing
25
- # # learn more about callbacks at https://docs.stimulusreflex.com/lifecycle
26
+ # # learn more about callbacks at https://docs.stimulusreflex.com/rtfm/lifecycle
26
27
  # end
27
28
  #
28
29
  # def example(argument=true)
@@ -30,14 +31,5 @@ class UserReflex < ApplicationReflex
30
31
  # # Any declared instance variables will be made available to the Rails controller and view.
31
32
  # end
32
33
  #
33
- # Learn more at: https://docs.stimulusreflex.com/reflexes#reflex-classes
34
-
35
- def update
36
- end
37
-
38
- def do_stuff
39
- end
40
-
41
- def do_more_stuff
42
- end
34
+ # Learn more at: https://docs.stimulusreflex.com/rtfm/reflex-classes
43
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stimulus_reflex
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.1
4
+ version: 3.5.0.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Hopkins
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-26 00:00:00.000000000 Z
11
+ date: 2021-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: cable_ready
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: '4.5'
75
+ version: 5.0.0.pre4
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: '4.5'
82
+ version: 5.0.0.pre4
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: standardrb
140
+ name: mocha
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -150,7 +150,21 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
- description:
153
+ - !ruby/object:Gem::Dependency
154
+ name: standardrb
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.0'
167
+ description:
154
168
  email:
155
169
  - natehop@gmail.com
156
170
  executables: []
@@ -161,6 +175,7 @@ files:
161
175
  - CODE_OF_CONDUCT.md
162
176
  - Gemfile
163
177
  - Gemfile.lock
178
+ - LATEST
164
179
  - LICENSE.txt
165
180
  - README.md
166
181
  - Rakefile
@@ -171,7 +186,7 @@ files:
171
186
  - bin/setup
172
187
  - bin/standardize
173
188
  - lib/generators/USAGE
174
- - lib/generators/stimulus_reflex/config_generator.rb
189
+ - lib/generators/stimulus_reflex/initializer_generator.rb
175
190
  - lib/generators/stimulus_reflex/stimulus_reflex_generator.rb
176
191
  - lib/generators/stimulus_reflex/templates/app/javascript/controllers/%file_name%_controller.js.tt
177
192
  - lib/generators/stimulus_reflex/templates/app/javascript/controllers/application_controller.js.tt
@@ -183,44 +198,55 @@ files:
183
198
  - lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb
184
199
  - lib/stimulus_reflex/broadcasters/page_broadcaster.rb
185
200
  - lib/stimulus_reflex/broadcasters/selector_broadcaster.rb
201
+ - lib/stimulus_reflex/broadcasters/update.rb
186
202
  - lib/stimulus_reflex/cable_ready_channels.rb
187
203
  - lib/stimulus_reflex/callbacks.rb
204
+ - lib/stimulus_reflex/concern_enhancer.rb
188
205
  - lib/stimulus_reflex/configuration.rb
206
+ - lib/stimulus_reflex/dataset.rb
189
207
  - lib/stimulus_reflex/element.rb
190
- - lib/stimulus_reflex/logger.rb
208
+ - lib/stimulus_reflex/policies/reflex_invocation_policy.rb
191
209
  - lib/stimulus_reflex/reflex.rb
192
- - lib/stimulus_reflex/sanity_checker.rb
210
+ - lib/stimulus_reflex/reflex_data.rb
211
+ - lib/stimulus_reflex/reflex_factory.rb
212
+ - lib/stimulus_reflex/request_parameters.rb
213
+ - lib/stimulus_reflex/utils/attribute_builder.rb
193
214
  - lib/stimulus_reflex/utils/colorize.rb
215
+ - lib/stimulus_reflex/utils/logger.rb
216
+ - lib/stimulus_reflex/utils/sanity_checker.rb
194
217
  - lib/stimulus_reflex/version.rb
195
218
  - lib/tasks/stimulus_reflex/install.rake
196
- - package.json
197
- - stimulus_reflex.gemspec
198
- - tags
199
219
  - test/broadcasters/broadcaster_test.rb
200
220
  - test/broadcasters/broadcaster_test_case.rb
201
221
  - test/broadcasters/nothing_broadcaster_test.rb
202
222
  - test/broadcasters/page_broadcaster_test.rb
203
223
  - test/broadcasters/selector_broadcaster_test.rb
224
+ - test/callbacks_test.rb
225
+ - test/concern_enhancer_test.rb
226
+ - test/element_test.rb
204
227
  - test/generators/stimulus_reflex_generator_test.rb
205
228
  - test/reflex_test.rb
206
229
  - test/test_helper.rb
207
230
  - test/tmp/app/reflexes/application_reflex.rb
208
- - test/tmp/app/reflexes/user_reflex.rb
209
- - yarn.lock
210
- homepage: https://github.com/hopsoft/stimulus_reflex
231
+ - test/tmp/app/reflexes/demo_reflex.rb
232
+ homepage: https://github.com/stimulusreflex/stimulus_reflex
211
233
  licenses:
212
234
  - MIT
213
235
  metadata:
214
- bug_tracker_uri: https://github.com/hopsoft/stimulus_reflex/issues
215
- changelog_uri: https://github.com/hopsoft/stimulus_reflex/CHANGELOG.md
236
+ bug_tracker_uri: https://github.com/stimulusreflex/stimulus_reflex/issues
237
+ changelog_uri: https://github.com/stimulusreflex/stimulus_reflex/CHANGELOG.md
216
238
  documentation_uri: https://docs.stimulusreflex.com
217
- homepage_uri: https://github.com/hopsoft/stimulus_reflex
218
- source_code_uri: https://github.com/hopsoft/stimulus_reflex
219
- post_install_message: |
220
- Friendly reminder: When updating the stimulus_reflex gem,
221
- don't forget to update your npm package as well.
239
+ homepage_uri: https://github.com/stimulusreflex/stimulus_reflex
240
+ source_code_uri: https://github.com/stimulusreflex/stimulus_reflex
241
+ post_install_message: |+
242
+ Finish installation by running:
243
+
244
+ rake stimulus_reflex:install
245
+
246
+ Get support for StimulusReflex and CableReady on Discord:
247
+
248
+ https://discord.gg/stimulus-reflex
222
249
 
223
- See https://www.npmjs.com/package/stimulus_reflex
224
250
  rdoc_options: []
225
251
  require_paths:
226
252
  - lib
@@ -231,22 +257,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
231
257
  version: '0'
232
258
  required_rubygems_version: !ruby/object:Gem::Requirement
233
259
  requirements:
234
- - - ">="
260
+ - - ">"
235
261
  - !ruby/object:Gem::Version
236
- version: '0'
262
+ version: 1.3.1
237
263
  requirements: []
238
- rubygems_version: 3.1.4
239
- signing_key:
264
+ rubygems_version: 3.1.6
265
+ signing_key:
240
266
  specification_version: 4
241
267
  summary: Build reactive applications with the Rails tooling you already know and love.
242
268
  test_files:
243
- - test/reflex_test.rb
244
- - test/test_helper.rb
245
269
  - test/generators/stimulus_reflex_generator_test.rb
246
- - test/tmp/app/reflexes/application_reflex.rb
247
- - test/tmp/app/reflexes/user_reflex.rb
248
- - test/broadcasters/broadcaster_test.rb
249
- - test/broadcasters/selector_broadcaster_test.rb
270
+ - test/element_test.rb
250
271
  - test/broadcasters/page_broadcaster_test.rb
251
272
  - test/broadcasters/broadcaster_test_case.rb
273
+ - test/broadcasters/broadcaster_test.rb
274
+ - test/broadcasters/selector_broadcaster_test.rb
252
275
  - test/broadcasters/nothing_broadcaster_test.rb
276
+ - test/reflex_test.rb
277
+ - test/test_helper.rb
278
+ - test/callbacks_test.rb
279
+ - test/tmp/app/reflexes/demo_reflex.rb
280
+ - test/tmp/app/reflexes/application_reflex.rb
281
+ - test/concern_enhancer_test.rb