stimulus_reflex 3.4.0.pre8 → 3.4.0.pre9
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -7
- data/Gemfile.lock +66 -63
- data/README.md +1 -1
- data/app/channels/stimulus_reflex/channel.rb +22 -0
- data/lib/generators/stimulus_reflex/templates/config/initializers/stimulus_reflex.rb +9 -0
- data/lib/stimulus_reflex.rb +1 -1
- data/lib/stimulus_reflex/cable_ready_channels.rb +13 -4
- data/lib/stimulus_reflex/configuration.rb +2 -1
- data/lib/stimulus_reflex/reflex.rb +9 -0
- data/lib/stimulus_reflex/sanity_checker.rb +7 -0
- data/lib/stimulus_reflex/version.rb +1 -1
- data/lib/tasks/stimulus_reflex/install.rake +8 -3
- data/package.json +2 -2
- data/stimulus_reflex.gemspec +2 -0
- data/tags +24 -7
- data/test/broadcasters/broadcaster_test.rb +2 -0
- data/test/broadcasters/broadcaster_test_case.rb +2 -0
- data/test/broadcasters/nothing_broadcaster_test.rb +2 -0
- data/test/broadcasters/page_broadcaster_test.rb +2 -0
- data/test/broadcasters/selector_broadcaster_test.rb +2 -0
- data/test/reflex_test.rb +6 -0
- data/test/test_helper.rb +6 -0
- data/test/tmp/app/reflexes/application_reflex.rb +1 -1
- data/test/tmp/app/reflexes/demo_reflex.rb +1 -0
- data/yarn.lock +157 -184
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2848aafa546f97670d86dd381bc4b05ffcd56962fea931ba537004a1bf2593c8
|
4
|
+
data.tar.gz: 7dc8dfb4ff3760ca3701b5a34f2622e3d43b449e02d7ff3fb193fd6a124186d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e9bf858782e9a3a18ae76ccbc4e8808db4bd6c6c1ffd185f62101974ddcf708f3eef80439cae12ce6405ef632fd2ee1933866dc17eded4accd66422f7ff2231
|
7
|
+
data.tar.gz: 6535eb6146e20306e5b2bd9ef04cc793b61f7dea64232c73d344dbe8ae410c23f3ecba8961f895cbd1df708f10f6341c9b292ef22714615a5be8fcc150bd1d88
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,30 @@
|
|
2
2
|
|
3
3
|
## [Unreleased](https://github.com/hopsoft/stimulus_reflex/tree/HEAD)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.4.0.
|
5
|
+
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.4.0.pre8...HEAD)
|
6
|
+
|
7
|
+
**Implemented enhancements:**
|
8
|
+
|
9
|
+
- Support for Stimulus 2 [\#398](https://github.com/hopsoft/stimulus_reflex/pull/398) ([marcoroth](https://github.com/marcoroth))
|
10
|
+
|
11
|
+
**Fixed bugs:**
|
12
|
+
|
13
|
+
- fix up install task [\#401](https://github.com/hopsoft/stimulus_reflex/pull/401) ([leastbad](https://github.com/leastbad))
|
14
|
+
- Fix multiple broadcasts from within the same reflex [\#400](https://github.com/hopsoft/stimulus_reflex/pull/400) ([hopsoft](https://github.com/hopsoft))
|
15
|
+
|
16
|
+
**Closed issues:**
|
17
|
+
|
18
|
+
- Sanity checker will fail if node\_modules folder isn't present [\#402](https://github.com/hopsoft/stimulus_reflex/issues/402)
|
19
|
+
- stimulus\_reflex.js:388 Uncaught TypeError: Cannot read property 'completedOperations' of undefined [\#394](https://github.com/hopsoft/stimulus_reflex/issues/394)
|
20
|
+
|
21
|
+
**Merged pull requests:**
|
22
|
+
|
23
|
+
- Add dom\_id to the reflex [\#405](https://github.com/hopsoft/stimulus_reflex/pull/405) ([hopsoft](https://github.com/hopsoft))
|
24
|
+
- Check package version from yarn.lock if node\_modules folder is not av… [\#403](https://github.com/hopsoft/stimulus_reflex/pull/403) ([RolandStuder](https://github.com/RolandStuder))
|
25
|
+
|
26
|
+
## [v3.4.0.pre8](https://github.com/hopsoft/stimulus_reflex/tree/v3.4.0.pre8) (2020-12-02)
|
27
|
+
|
28
|
+
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.4.0.pre7...v3.4.0.pre8)
|
6
29
|
|
7
30
|
**Closed issues:**
|
8
31
|
|
@@ -98,7 +121,6 @@
|
|
98
121
|
- Add guard clause to return valid empty form data [\#354](https://github.com/hopsoft/stimulus_reflex/pull/354) ([julianrubisch](https://github.com/julianrubisch))
|
99
122
|
- simplify xpath functions [\#353](https://github.com/hopsoft/stimulus_reflex/pull/353) ([leastbad](https://github.com/leastbad))
|
100
123
|
- pass reflex id to reflex [\#352](https://github.com/hopsoft/stimulus_reflex/pull/352) ([joshleblanc](https://github.com/joshleblanc))
|
101
|
-
- Fix page morphs inside Rails engines [\#344](https://github.com/hopsoft/stimulus_reflex/pull/344) ([leastbad](https://github.com/leastbad))
|
102
124
|
|
103
125
|
## [v3.4.0.pre2](https://github.com/hopsoft/stimulus_reflex/tree/v3.4.0.pre2) (2020-11-06)
|
104
126
|
|
@@ -140,12 +162,12 @@
|
|
140
162
|
- ActionController::RoutingError with Rails 6 Engines [\#342](https://github.com/hopsoft/stimulus_reflex/issues/342)
|
141
163
|
- Wrong input name parsing [\#321](https://github.com/hopsoft/stimulus_reflex/issues/321)
|
142
164
|
- Stimulus' controllers are not reconnecting after reflex, why? [\#314](https://github.com/hopsoft/stimulus_reflex/issues/314)
|
143
|
-
- Rendering issue [\#289](https://github.com/hopsoft/stimulus_reflex/issues/289)
|
144
165
|
- Documentation Request for a Rails 6.x app with 5.2 defaults [\#265](https://github.com/hopsoft/stimulus_reflex/issues/265)
|
145
166
|
|
146
167
|
**Merged pull requests:**
|
147
168
|
|
148
169
|
- \[docs\] StimulusReflex.debug= on left hand side [\#348](https://github.com/hopsoft/stimulus_reflex/pull/348) ([drnic](https://github.com/drnic))
|
170
|
+
- Fix page morphs inside Rails engines [\#344](https://github.com/hopsoft/stimulus_reflex/pull/344) ([leastbad](https://github.com/leastbad))
|
149
171
|
- Use Webpacker folder if available [\#343](https://github.com/hopsoft/stimulus_reflex/pull/343) ([coorasse](https://github.com/coorasse))
|
150
172
|
- feat: create a more robust package.json [\#340](https://github.com/hopsoft/stimulus_reflex/pull/340) ([ParamagicDev](https://github.com/ParamagicDev))
|
151
173
|
- Make StimulusReflex configurable and add an initializer [\#339](https://github.com/hopsoft/stimulus_reflex/pull/339) ([RolandStuder](https://github.com/RolandStuder))
|
@@ -261,6 +283,7 @@
|
|
261
283
|
- Fix argument of type object always being assigned to options [\#279](https://github.com/hopsoft/stimulus_reflex/pull/279) ([shawnleong](https://github.com/shawnleong))
|
262
284
|
- Simplify devise authentication logic \(in docs\) [\#276](https://github.com/hopsoft/stimulus_reflex/pull/276) ([inner-whisper](https://github.com/inner-whisper))
|
263
285
|
- Bump lodash from 4.17.15 to 4.17.19 in /javascript [\#275](https://github.com/hopsoft/stimulus_reflex/pull/275) ([dependabot[bot]](https://github.com/apps/dependabot))
|
286
|
+
- Fix selector morphs for updating partials and ViewComponents [\#262](https://github.com/hopsoft/stimulus_reflex/pull/262) ([leastbad](https://github.com/leastbad))
|
264
287
|
|
265
288
|
## [v3.3.0.pre2](https://github.com/hopsoft/stimulus_reflex/tree/v3.3.0.pre2) (2020-07-17)
|
266
289
|
|
@@ -285,10 +308,6 @@
|
|
285
308
|
|
286
309
|
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.3.0.pre0...v3.3.0.pre1)
|
287
310
|
|
288
|
-
**Merged pull requests:**
|
289
|
-
|
290
|
-
- Fix selector morphs for updating partials and ViewComponents [\#262](https://github.com/hopsoft/stimulus_reflex/pull/262) ([leastbad](https://github.com/leastbad))
|
291
|
-
|
292
311
|
## [v3.3.0.pre0](https://github.com/hopsoft/stimulus_reflex/tree/v3.3.0.pre0) (2020-07-04)
|
293
312
|
|
294
313
|
[Full Changelog](https://github.com/hopsoft/stimulus_reflex/compare/v3.2.3...v3.3.0.pre0)
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
stimulus_reflex (3.4.0.
|
4
|
+
stimulus_reflex (3.4.0.pre9)
|
5
5
|
cable_ready (>= 4.4)
|
6
6
|
nokogiri
|
7
7
|
rack
|
@@ -11,64 +11,68 @@ PATH
|
|
11
11
|
GEM
|
12
12
|
remote: https://rubygems.org/
|
13
13
|
specs:
|
14
|
-
actioncable (6.0
|
15
|
-
actionpack (= 6.0
|
14
|
+
actioncable (6.1.0)
|
15
|
+
actionpack (= 6.1.0)
|
16
|
+
activesupport (= 6.1.0)
|
16
17
|
nio4r (~> 2.0)
|
17
18
|
websocket-driver (>= 0.6.1)
|
18
|
-
actionmailbox (6.0
|
19
|
-
actionpack (= 6.0
|
20
|
-
activejob (= 6.0
|
21
|
-
activerecord (= 6.0
|
22
|
-
activestorage (= 6.0
|
23
|
-
activesupport (= 6.0
|
19
|
+
actionmailbox (6.1.0)
|
20
|
+
actionpack (= 6.1.0)
|
21
|
+
activejob (= 6.1.0)
|
22
|
+
activerecord (= 6.1.0)
|
23
|
+
activestorage (= 6.1.0)
|
24
|
+
activesupport (= 6.1.0)
|
24
25
|
mail (>= 2.7.1)
|
25
|
-
actionmailer (6.0
|
26
|
-
actionpack (= 6.0
|
27
|
-
actionview (= 6.0
|
28
|
-
activejob (= 6.0
|
26
|
+
actionmailer (6.1.0)
|
27
|
+
actionpack (= 6.1.0)
|
28
|
+
actionview (= 6.1.0)
|
29
|
+
activejob (= 6.1.0)
|
30
|
+
activesupport (= 6.1.0)
|
29
31
|
mail (~> 2.5, >= 2.5.4)
|
30
32
|
rails-dom-testing (~> 2.0)
|
31
|
-
actionpack (6.0
|
32
|
-
actionview (= 6.0
|
33
|
-
activesupport (= 6.0
|
34
|
-
rack (~> 2.0, >= 2.0.
|
33
|
+
actionpack (6.1.0)
|
34
|
+
actionview (= 6.1.0)
|
35
|
+
activesupport (= 6.1.0)
|
36
|
+
rack (~> 2.0, >= 2.0.9)
|
35
37
|
rack-test (>= 0.6.3)
|
36
38
|
rails-dom-testing (~> 2.0)
|
37
39
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
38
|
-
actiontext (6.0
|
39
|
-
actionpack (= 6.0
|
40
|
-
activerecord (= 6.0
|
41
|
-
activestorage (= 6.0
|
42
|
-
activesupport (= 6.0
|
40
|
+
actiontext (6.1.0)
|
41
|
+
actionpack (= 6.1.0)
|
42
|
+
activerecord (= 6.1.0)
|
43
|
+
activestorage (= 6.1.0)
|
44
|
+
activesupport (= 6.1.0)
|
43
45
|
nokogiri (>= 1.8.5)
|
44
|
-
actionview (6.0
|
45
|
-
activesupport (= 6.0
|
46
|
+
actionview (6.1.0)
|
47
|
+
activesupport (= 6.1.0)
|
46
48
|
builder (~> 3.1)
|
47
49
|
erubi (~> 1.4)
|
48
50
|
rails-dom-testing (~> 2.0)
|
49
51
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
50
|
-
activejob (6.0
|
51
|
-
activesupport (= 6.0
|
52
|
+
activejob (6.1.0)
|
53
|
+
activesupport (= 6.1.0)
|
52
54
|
globalid (>= 0.3.6)
|
53
|
-
activemodel (6.0
|
54
|
-
activesupport (= 6.0
|
55
|
-
activerecord (6.0
|
56
|
-
activemodel (= 6.0
|
57
|
-
activesupport (= 6.0
|
58
|
-
activestorage (6.0
|
59
|
-
actionpack (= 6.0
|
60
|
-
activejob (= 6.0
|
61
|
-
activerecord (= 6.0
|
55
|
+
activemodel (6.1.0)
|
56
|
+
activesupport (= 6.1.0)
|
57
|
+
activerecord (6.1.0)
|
58
|
+
activemodel (= 6.1.0)
|
59
|
+
activesupport (= 6.1.0)
|
60
|
+
activestorage (6.1.0)
|
61
|
+
actionpack (= 6.1.0)
|
62
|
+
activejob (= 6.1.0)
|
63
|
+
activerecord (= 6.1.0)
|
64
|
+
activesupport (= 6.1.0)
|
62
65
|
marcel (~> 0.3.1)
|
63
|
-
|
66
|
+
mimemagic (~> 0.3.2)
|
67
|
+
activesupport (6.1.0)
|
64
68
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
65
|
-
i18n (>=
|
66
|
-
minitest (
|
67
|
-
tzinfo (~>
|
68
|
-
zeitwerk (~> 2.
|
69
|
+
i18n (>= 1.6, < 2)
|
70
|
+
minitest (>= 5.1)
|
71
|
+
tzinfo (~> 2.0)
|
72
|
+
zeitwerk (~> 2.3)
|
69
73
|
ast (2.4.1)
|
70
74
|
builder (3.2.4)
|
71
|
-
cable_ready (4.4.
|
75
|
+
cable_ready (4.4.5)
|
72
76
|
rails (>= 5.2)
|
73
77
|
coderay (1.1.3)
|
74
78
|
concurrent-ruby (1.1.7)
|
@@ -104,32 +108,32 @@ GEM
|
|
104
108
|
rack (2.2.3)
|
105
109
|
rack-test (1.1.0)
|
106
110
|
rack (>= 1.0, < 3)
|
107
|
-
rails (6.0
|
108
|
-
actioncable (= 6.0
|
109
|
-
actionmailbox (= 6.0
|
110
|
-
actionmailer (= 6.0
|
111
|
-
actionpack (= 6.0
|
112
|
-
actiontext (= 6.0
|
113
|
-
actionview (= 6.0
|
114
|
-
activejob (= 6.0
|
115
|
-
activemodel (= 6.0
|
116
|
-
activerecord (= 6.0
|
117
|
-
activestorage (= 6.0
|
118
|
-
activesupport (= 6.0
|
119
|
-
bundler (>= 1.
|
120
|
-
railties (= 6.0
|
111
|
+
rails (6.1.0)
|
112
|
+
actioncable (= 6.1.0)
|
113
|
+
actionmailbox (= 6.1.0)
|
114
|
+
actionmailer (= 6.1.0)
|
115
|
+
actionpack (= 6.1.0)
|
116
|
+
actiontext (= 6.1.0)
|
117
|
+
actionview (= 6.1.0)
|
118
|
+
activejob (= 6.1.0)
|
119
|
+
activemodel (= 6.1.0)
|
120
|
+
activerecord (= 6.1.0)
|
121
|
+
activestorage (= 6.1.0)
|
122
|
+
activesupport (= 6.1.0)
|
123
|
+
bundler (>= 1.15.0)
|
124
|
+
railties (= 6.1.0)
|
121
125
|
sprockets-rails (>= 2.0.0)
|
122
126
|
rails-dom-testing (2.0.3)
|
123
127
|
activesupport (>= 4.2.0)
|
124
128
|
nokogiri (>= 1.6)
|
125
129
|
rails-html-sanitizer (1.3.0)
|
126
130
|
loofah (~> 2.3)
|
127
|
-
railties (6.0
|
128
|
-
actionpack (= 6.0
|
129
|
-
activesupport (= 6.0
|
131
|
+
railties (6.1.0)
|
132
|
+
actionpack (= 6.1.0)
|
133
|
+
activesupport (= 6.1.0)
|
130
134
|
method_source
|
131
135
|
rake (>= 0.8.7)
|
132
|
-
thor (
|
136
|
+
thor (~> 1.0)
|
133
137
|
rainbow (3.0.0)
|
134
138
|
rake (13.0.1)
|
135
139
|
redis (4.2.5)
|
@@ -157,15 +161,14 @@ GEM
|
|
157
161
|
actionpack (>= 4.0)
|
158
162
|
activesupport (>= 4.0)
|
159
163
|
sprockets (>= 3.0.0)
|
160
|
-
standard (0.10.
|
164
|
+
standard (0.10.2)
|
161
165
|
rubocop (= 1.4.2)
|
162
166
|
rubocop-performance (= 1.9.1)
|
163
167
|
standardrb (1.0.0)
|
164
168
|
standard
|
165
169
|
thor (1.0.1)
|
166
|
-
|
167
|
-
|
168
|
-
thread_safe (~> 0.1)
|
170
|
+
tzinfo (2.0.3)
|
171
|
+
concurrent-ruby (~> 1.0)
|
169
172
|
unicode-display_width (1.7.0)
|
170
173
|
websocket-driver (0.7.3)
|
171
174
|
websocket-extensions (>= 0.1.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-
|
14
|
+
<img alt="Lines of Code" src="https://img.shields.io/badge/lines_of_code-1632-brightgreen.svg?style=flat" />
|
15
15
|
</a>
|
16
16
|
<a href="https://docs.stimulusreflex.com/" target="_blank">
|
17
17
|
<img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" />
|
@@ -49,11 +49,33 @@ class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.cons
|
|
49
49
|
rescue => invoke_error
|
50
50
|
message = exception_message_with_backtrace(invoke_error)
|
51
51
|
body = "Reflex #{target} failed: #{message} [#{url}]"
|
52
|
+
|
52
53
|
if reflex
|
53
54
|
reflex.rescue_with_handler(invoke_error)
|
54
55
|
reflex.broadcast_message subject: "error", body: body, data: data, error: invoke_error
|
55
56
|
else
|
56
57
|
puts "\e[31m#{body}\e[0m"
|
58
|
+
|
59
|
+
if body.to_s.include? "No route matches"
|
60
|
+
initializer_path = Rails.root.join("config", "initializers", "stimulus_reflex.rb")
|
61
|
+
|
62
|
+
puts <<~NOTE
|
63
|
+
\e[33mNOTE: StimulusReflex failed to locate a matching route and could not re-render the page.
|
64
|
+
|
65
|
+
If your app uses Rack middleware to rewrite part of the request path, you must enable those middleware modules in StimulusReflex.
|
66
|
+
The StimulusReflex initializer should be located at #{initializer_path}, or you can generate it with:
|
67
|
+
|
68
|
+
$ bundle exec rails generate stimulus_reflex:config
|
69
|
+
|
70
|
+
Configure any required middleware:
|
71
|
+
|
72
|
+
StimulusReflex.configure do |config|
|
73
|
+
config.middleware.use FirstRackMiddleware
|
74
|
+
config.middleware.use SecondRackMiddleware
|
75
|
+
end\e[0m
|
76
|
+
|
77
|
+
NOTE
|
78
|
+
end
|
57
79
|
end
|
58
80
|
return
|
59
81
|
end
|
@@ -15,6 +15,15 @@ StimulusReflex.configure do |config|
|
|
15
15
|
# Available colors: red, green, yellow, blue, magenta, cyan, white
|
16
16
|
# You can also use attributes from your ActionCable Connection's identifiers that resolve to valid ActiveRecord models
|
17
17
|
# eg. if your connection is `identified_by :current_user` and your User model has an email attribute, you can access r.email (it will display `-` if the user isn't logged in)
|
18
|
+
# Learn more at: https://docs.stimulusreflex.com/troubleshooting#stimulusreflex-logging
|
18
19
|
|
19
20
|
# config.logging = proc { "[#{session_id}] #{operation_counter.magenta} #{reflex_info.green} -> #{selector.cyan} via #{mode} Morph (#{operation.yellow})" }
|
21
|
+
|
22
|
+
# Optimized for speed, StimulusReflex doesn't enable Rack middleware by default.
|
23
|
+
# If you are using Page Morphs and your app uses Rack middleware to rewrite part of the request path, you must enable those middleware modules in StimulusReflex.
|
24
|
+
#
|
25
|
+
# Learn more about registering Rack middleware in Rails here: https://guides.rubyonrails.org/rails_on_rack.html#configuring-middleware-stack
|
26
|
+
|
27
|
+
# config.middleware.use FirstRackMiddleware
|
28
|
+
# config.middleware.use SecondRackMiddleware
|
20
29
|
end
|
data/lib/stimulus_reflex.rb
CHANGED
@@ -1,12 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module StimulusReflex
|
2
4
|
class CableReadyChannels
|
3
5
|
stimulus_reflex_channel_methods = CableReady::Channels.instance.operations.keys + [:broadcast, :broadcast_to]
|
4
|
-
delegate(*stimulus_reflex_channel_methods, to: "
|
5
|
-
delegate :[], to: "
|
6
|
+
delegate(*stimulus_reflex_channel_methods, to: "stimulus_reflex_channel")
|
7
|
+
delegate :[], to: "cable_ready_channels"
|
6
8
|
|
7
9
|
def initialize(stream_name)
|
8
|
-
@
|
9
|
-
|
10
|
+
@stream_name = stream_name
|
11
|
+
end
|
12
|
+
|
13
|
+
def cable_ready_channels
|
14
|
+
CableReady::Channels.instance
|
15
|
+
end
|
16
|
+
|
17
|
+
def stimulus_reflex_channel
|
18
|
+
CableReady::Channels.instance[@stream_name]
|
10
19
|
end
|
11
20
|
end
|
12
21
|
end
|
@@ -14,7 +14,7 @@ module StimulusReflex
|
|
14
14
|
end
|
15
15
|
|
16
16
|
class Configuration
|
17
|
-
attr_accessor :on_failed_sanity_checks, :parent_channel, :logging
|
17
|
+
attr_accessor :on_failed_sanity_checks, :parent_channel, :logging, :middleware
|
18
18
|
|
19
19
|
DEFAULT_LOGGING = proc { "[#{session_id}] #{operation_counter.magenta} #{reflex_info.green} -> #{selector.cyan} via #{mode} Morph (#{operation.yellow})" }
|
20
20
|
|
@@ -22,6 +22,7 @@ module StimulusReflex
|
|
22
22
|
@on_failed_sanity_checks = :exit
|
23
23
|
@parent_channel = "ApplicationCable::Channel"
|
24
24
|
@logging = DEFAULT_LOGGING
|
25
|
+
@middleware = ActionDispatch::MiddlewareStack.new
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -53,6 +53,7 @@ class StimulusReflex::Reflex
|
|
53
53
|
delegate :broadcast, :broadcast_message, to: :broadcaster
|
54
54
|
delegate :reflex_id, :reflex_controller, :xpath, :c_xpath, :permanent_attribute_name, to: :client_attributes
|
55
55
|
delegate :render, to: :controller_class
|
56
|
+
delegate :dom_id, to: "ActionView::RecordIdentifier"
|
56
57
|
|
57
58
|
def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {})
|
58
59
|
@channel = channel
|
@@ -87,6 +88,14 @@ class StimulusReflex::Reflex
|
|
87
88
|
)
|
88
89
|
|
89
90
|
env = connection.env.merge(mock_env)
|
91
|
+
|
92
|
+
middleware = StimulusReflex.config.middleware
|
93
|
+
|
94
|
+
if middleware.any?
|
95
|
+
stack = middleware.build(Rails.application.routes)
|
96
|
+
stack.call(env)
|
97
|
+
end
|
98
|
+
|
90
99
|
req = ActionDispatch::Request.new(env)
|
91
100
|
|
92
101
|
path_params = Rails.application.routes.recognize_path_with_request(req, url, req.env[:extras] || {})
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class StimulusReflex::SanityChecker
|
4
|
+
NODE_VERSION_FORMAT = /(\d+\.\d+\.\d+.*):/
|
4
5
|
JSON_VERSION_FORMAT = /(\d+\.\d+\.\d+.*)"/
|
5
6
|
|
6
7
|
class << self
|
@@ -86,6 +87,8 @@ class StimulusReflex::SanityChecker
|
|
86
87
|
def find_javascript_package_version
|
87
88
|
if (match = search_file(package_json_path, regex: /version/))
|
88
89
|
match[JSON_VERSION_FORMAT, 1]
|
90
|
+
elsif (match = search_file(yarn_lock_path, regex: /^stimulus_reflex/))
|
91
|
+
match[NODE_VERSION_FORMAT, 1]
|
89
92
|
end
|
90
93
|
end
|
91
94
|
|
@@ -98,6 +101,10 @@ class StimulusReflex::SanityChecker
|
|
98
101
|
Rails.root.join("node_modules", "stimulus_reflex", "package.json")
|
99
102
|
end
|
100
103
|
|
104
|
+
def yarn_lock_path
|
105
|
+
Rails.root.join("yarn.lock")
|
106
|
+
end
|
107
|
+
|
101
108
|
def initializer_path
|
102
109
|
@_initializer_path ||= Rails.root.join("config", "initializers", "stimulus_reflex.rb")
|
103
110
|
end
|
@@ -6,9 +6,10 @@ require "stimulus_reflex/version"
|
|
6
6
|
namespace :stimulus_reflex do
|
7
7
|
desc "Install StimulusReflex in this application"
|
8
8
|
task install: :environment do
|
9
|
-
system "
|
9
|
+
system "rails dev:cache" unless Rails.root.join("tmp", "caching-dev.txt").exist?
|
10
10
|
gem_version = StimulusReflex::VERSION.gsub(".pre", "-pre")
|
11
11
|
system "yarn add stimulus_reflex@#{gem_version}"
|
12
|
+
system "bundle exec rails webpacker:install:stimulus"
|
12
13
|
main_folder = defined?(Webpacker) ? Webpacker.config.source_path.to_s.gsub("#{Rails.root}/", "") : "app/javascript"
|
13
14
|
|
14
15
|
FileUtils.mkdir_p Rails.root.join("#{main_folder}/controllers"), verbose: true
|
@@ -39,7 +40,7 @@ namespace :stimulus_reflex do
|
|
39
40
|
|
40
41
|
unless lines.find { |line| line.start_with?("import controller") }
|
41
42
|
matches = lines.select { |line| line =~ /\A(require|import)/ }
|
42
|
-
lines.insert lines.index(matches.last).to_i + 1, "import controller from '
|
43
|
+
lines.insert lines.index(matches.last).to_i + 1, "import controller from '../controllers/application_controller'\n"
|
43
44
|
end
|
44
45
|
|
45
46
|
initialize_line = lines.find { |line| line.start_with?("StimulusReflex.initialize") }
|
@@ -67,6 +68,10 @@ namespace :stimulus_reflex do
|
|
67
68
|
system "bundle exec rails generate stimulus_reflex example"
|
68
69
|
puts "Generating default StimulusReflex configuration file into your application config/initializers directory"
|
69
70
|
system "bundle exec rails generate stimulus_reflex:config"
|
70
|
-
|
71
|
+
|
72
|
+
puts
|
73
|
+
puts "StimulusReflex and CableReady have been successfully installed!"
|
74
|
+
puts "Go to https://docs.stimulusreflex.com/quickstart if you need help getting started."
|
75
|
+
puts
|
71
76
|
end
|
72
77
|
end
|