stimulus_reflex 3.4.1 → 3.5.0.pre3

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.

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